From 035b77020a8308b6a3c33149257c1b9e7f436ec6 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Mon, 9 Nov 2015 16:31:17 +0100 Subject: Load the model gallery when the tab is selected the first time This accelerates the startup of gmkin considerably, although still not really satisfactory --- inst/GUI/gmkin.R | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/inst/GUI/gmkin.R b/inst/GUI/gmkin.R index f986bbf..e133c99 100644 --- a/inst/GUI/gmkin.R +++ b/inst/GUI/gmkin.R @@ -38,8 +38,7 @@ if (exists("win.metafile", "package:grDevices", inherits = FALSE)) { plot_formats = c("wmf", plot_formats) } plot_format <- plot_formats[[1]] -# Options (will be reset in the end) {{{2 -old_options <<- options() +# Options {{{2 options(width = 80) # For summary # Set the GUI title and create the basic widget layout {{{1 # Three panel layout {{{2 @@ -60,6 +59,12 @@ bl$set_panel_size("east", right_width) center <- gnotebook(cont = bl, where = "center") left <- gvbox(cont = bl, use.scrollwindow = TRUE, where = "west", spacing = 0) right <- gnotebook(cont = bl, use.scrollwindow = TRUE, where = "east") +right$add_handler("tabchange", + function(h, ...) { + if (svalue(h$obj) == 3 && ! model_gallery_created) { + create_model_gallery() + } + }) # }) # Helper functions {{{1 @@ -251,7 +256,7 @@ addHandlerClicked(m.gtable, m.switcher) # Fit explorer {{{2 f.switcher <- function(h, ...) { if (h$row_index > 1) { - f.i <<- h$row_index - 1 + f.i <- h$row_index - 1 ftmp <<- ws$f[[f.i]] if (is.null(ftmp$optimised)) ftmp$optimised <<- TRUE f.delete$call_Ext("enable") @@ -1205,23 +1210,29 @@ add_gallery_model_handler <- function(h, ...) { } svalue(center) <- 3 } -for (i in 1:9) { - m.g.rows[[i]] <- ggroup(cont = m.g.gg, horizontal = TRUE) - m.g.buttonrows[[i]] <- ggroup(cont = m.g.gg, horizontal = TRUE) - m.g.fields[[i]] <- list() - m.g.buttons[[i]] <- list() - for (j in 1:4) { - model <- UBA_model_gallery[[i]][[j]] - m.url = paste0("/custom/gmkin_png/", gsub(" ", "_", model$name), ".png") - m.g.fields[[i]][[j]] <- gimage(m.url, width = 110, - height = if (i == 1) 135 else 220, - cont = m.g.rows[[i]]) - m.g.buttons[[i]][[j]] <- gbutton(model$name, width = 110, - cont = m.g.buttonrows[[i]], - handler = add_gallery_model_handler, - action = c(i, j)) - tooltip(m.g.buttons[[i]][[j]]) <- model$name +model_gallery_created <- FALSE +m.g.loading <- glabel("Loading the model gallery, please wait...", cont = m.g.gg) +create_model_gallery <- function() { + delete(m.g.gg, m.g.loading) + for (i in 1:9) { + m.g.rows[[i]] <<- ggroup(cont = m.g.gg, horizontal = TRUE) + m.g.buttonrows[[i]] <<- ggroup(cont = m.g.gg, horizontal = TRUE) + m.g.fields[[i]] <<- list() + m.g.buttons[[i]] <<- list() + for (j in 1:4) { + model <- UBA_model_gallery[[i]][[j]] + m.url = paste0("/custom/gmkin_png/", gsub(" ", "_", model$name), ".png") + m.g.fields[[i]][[j]] <<- gimage(m.url, width = 110, + height = if (i == 1) 135 else 220, + cont = m.g.rows[[i]]) + m.g.buttons[[i]][[j]] <<- gbutton(model$name, width = 110, + cont = m.g.buttonrows[[i]], + handler = add_gallery_model_handler, + action = c(i, j)) + tooltip(m.g.buttons[[i]][[j]]) <<- model$name + } } + model_gallery_created <<- TRUE } # Plots {{{2 plot.gg <- ggroup(cont = right, label = "Plot", width = 460, @@ -1348,5 +1359,4 @@ changes.gh <- ghtml(label = "Changes", paste0("