tmelliott
@tomelliottnz
iNZightVIT
@iNZightUoA
(Briefly, for those who missed Chris’ talk …)
library(iNZight)
iNZight()
Data
GUI
Explore
Save script
Chris Wild
UoA statistics students
gWidgets2
+ gWidgets2RGtk2
† RGtk2
‡ GTK
† John Verzani ‡ Michael Lawrence
Started off small …
… et voilà: a rewrite was needed!
LoadDataWindow <- setRefClass("LoadDataWindow",
fields = list(
filename = "character"
),
methods = list(
initialize = function(...) {
w <- gwindow("Load data")
g <- ggroup(horizontal = FALSE, container = w)
# Get filename from user
fileedit <- gedit(container = g)
# Load data
loadbtn <- gbutton("Load", container = g)
addHandlerKeystroke(fileedit,
handler = function(h, ...) {
filename <<- svalue(h$obj)
}
)
addHandlerClicked(loadbtn, function(h, ...) loadData())
},
loadData = function() {
data <- read.csv(filename)
}
)
)
LoadDataWindow <- setRefClass("LoadDataWindow",
fields = list(
filename = "character"
),
methods = list(
initialize = function() { ... },
loadData = function() {
data <- read.csv(filename)
}
)
)
LoadDataWindow <- setRefClass("LoadDataWindow",
fields = list(
filename = "character",
filetype = "character",
delimiter = "character", # csv can use , or ;
...
),
methods = list(
initialize = function(...),
loadData = function() {
if (filetype == "csv") {
data <- read.csv(filename, delimiter = delimiter, ...)
} else if (filetype == "excel") {
data <- readxl::read_xls(filename, ...)
} else ...
}
)
)
LoadDataWindow <- setRefClass("LoadDataWindow",
fields = list(
filename = "character",
filetype = "character",
delimiter = "character", # csv can use , or ;
...
),
methods = list(
initialize = function(...),
loadData = function() {
data <- iNZightTools::smart_read(filename,
filetype = filetype,
delim = delimiter,
...
)
}
)
)
LoadDataWindow <- setRefClass("LoadDataWindow",
fields = list(
filename = "character",
filetype = "character",
delimiter = "character", # csv can use , or ;
...
),
methods = list(
initialize(...),
loadData = function() {
data <- iNZightTools::smart_read(filename,
filetype = filetype,
delim = delimiter,
...
)
cat(iNZightTools::code(data), file = "script.R")
}
)
)
# script.R
data <- readr::read_csv("data.csv", delim = ";", comment = "#")
LoadDataWindow <- setRefClass("LoadDataWindow",
fields = list(
filename = "character",
filetype = "character",
delimiter = "character", # csv can use , or ;
...
),
methods = list(
initialize(...),
loadData = function() {
data <- iNZightTools::smart_read(filename,
filetype = filetype,
delim = delimiter,
...
)
cat(iNZightTools::code(data), file = "script.R")
}
)
)
# script.R
data <- readxl::read_excel("data.xlsx")
Demo <- setRefClass("Demo",
field = list(
data = "data.frame",
colour = "character"
),
methods = list(
initialize = function() {
w <- gwindow("Demo")
g <- ggroup(horizontal = FALSE, container = w)
col <- gcombobox(
c("Orangered", "Goldenrod", "Steelblue"),
container = g,
handler = function(h, ...) {
colour <<- svalue(h$obj)
draw()
}
)
data <<- data.frame(x = rnorm(100), y = rnorm(100))
colour <<- "Orangered"
draw()
},
draw = function() {
plot(y ~ x,
data = data,
col = colour
)
}
)
)
# DemoModule.R
DemoModule <- setRefClass(
"Demo Module",
contains = "CustomModule",
fields = list(
GUI = "ANY",
...
),
methods = list(
initialize = function(gui, name) {
callSuper(gui,
name = name,
embedded = TRUE
)
...
},
...
)
)
path/to/iNZightVIT/modules
DemoModule.R
path/to/iNZightVIT/modules
DemoModule.R
tmelliott
@tomelliottnz
iNZightVIT
@iNZightUoA