On 11 May 2016 at 12:56, Dalthorp, Daniel wrote: | I have an R/tcltk application that is designed for use primarily by people | who don't know R and don't care to learn much about it. I'd like users to | be able to use the software with a bare minimum interaction with R. | | Although the application has some 15000 lines of code in a couple dozen .R | files, in essence I don't think it's much more than an elaborate version of | the following: | | library(tcltk) | tt <- tktoplevel() # a required container for tk objects (textboxes, | radiobuttons, data tables, etc.) | tk.x <- tclVar() # a tcl version of user variable x | x.edit <- tkentry(tt, textvariable = tk.x, width = 5) # box for user to | enter x value | x.lbl <- tklabel(tt, text = "Enter x value: ") # a fixed label | xcalc <- tkbutton(tt, text = "Calculate", command = function() | tkmessageBox(message = tclvalue(tk.x))) # button that prints x to R console | tkgrid(x.lbl, x.edit, xcalc) # a function that puts the textbox, label, and | button onto the tk window | | The following doesn't work: | # tt, x.edit, x.lbl, xcalc all seem to me like an R objects that will not | be modified, so I tried | devtools::use_data(tt, x.edit, x.lbl, xcalc, internal = F, overwrite=T) # | (after defining them) | # tk.x is a variable that I want to assign a value to at the beginning, but | user can later change the value: | devtools::use_data(tt, x.edit, x.lbl, xcalc, internal = F, overwrite=T) | | The following does work, but it is not a good solution: | (1) define working directory as package/data | (2) create new tk windows via tkbutton commands = function() | source(filename) | This forces the user to use a pre-defined working directory. My application | fills that wd with several hundred functions and variables. If user changes | wd or changes values of variables that my app needs, the program crashes. | | Any help would be greatly appreciated!
I haven't seen the obvious stated: Have you looked into creating a package? It can contain as much tcl/tk support code as you like, etc pp. And as you state you have '15000 lines of code in a couple dozen .R files' you are well passed the point where a package really is the best choice. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel