[R] help with GUI interface

Leah Mathibela leahmathibela at nova.org.za
Tue Apr 24 13:42:41 CEST 2012


If I have GUI as follows
how can I add a checkbox that when you click on it,it gives you 
different files,
then when you click on that file it gives you the information you are 
looking for,
instead of me browsing for a file how do i turn it to be a csv or xls 
file check box.
dlg <- aDialog(items=list(
   file=fileItem("", attr=list(
     filter=list("CSV or txt"=list(
       patterns=c("*.csv","*.txt")
       ),
                 "All files" = list(patterns=c("*"))
                 ))),
   header=trueFalseItem(TRUE, tooltip=paste("Variable onfirst line?")),
   fill=trueFalseItem(TRUE, tooltip="Fill unequal length rows if TRUE"),
   sep=stringItem("", tooltip="Field separator character"),

   ## our things
   assign.to=stringItem("shapefile", label="Assign to:"),
   output=tableItem(attr=list(size=c(500,500)), show_label=TRUE),
   file.type=stringItem("")
   ),
                title="Nova Shape It csv or txt file",
                help_string="click browse button to search for a file."
                )
view <- aGroup(aNotebook(
   aNotebookPage("file",
                 separatorItem(),
                 "ShapeHeader","sep",
                 label="shapeit"),
   aNotebookPage("file",
                 separatorItem(),
                 "fill","sep",
                 label="file",
                 )
   ),
                aContainer("assign.to",
                           aFrame("output", label="Preview")
                           ),
                horizontal=TRUE))
dlg$read_file <- function(., file.type, output, assign.to, ...) {
   if(file.type != "") {
     out <- try(do.call(sprintf("read.%s",file.type), list(...)), 
silent=TRUE)
     if(inherits(out, "try-error")) {
       cat("Error reading file of type,", file.type, "\n")
       out <- data.frame(nova="")
     }
   } else {
     out <- data.frame(nova="")
   }
   return(out)
}
dlg$model_value_changed <- function(.) {
   fname <- .$get_file()
   if(file.exists(fname)) {
     for(i in c("txt","csv")) {
       if(grepl(paste("\\.",i,sep=""), fname))
         .$set_file.type(c(txt="table",csv="csv")[i])
     }
   }
   switch(.$get_file.type(),
          "csv"={.$set_sep(","); .$set_quote('\"')},
          "table"={},
{}
          )
   .$set_output(.$do_call("read_file",.$to_R()))
}
dlg$OK_handler <- function(.) {
   out <- .$do_call("read_file",.$to_R())
   assign.to <- .$get_assign.to()
   if(exists(assign.to, envir=.GlobalEnv)) {
     if(!gconfirm(sprintf("Overwrite variable %s?", assign.to)))
       return()
   }
   assign(assign.to, out, envir=.GlobalEnv)
}

dlg$make_gui(gui_layout=view)


-- 
Leah Mathibela
mobile:078-3311-491
work:087-7545-997
www.nova.org.za



More information about the R-help mailing list