gmenu {gWidgets} | R Documentation |
A menubar or toolbar are created using these constructors. These are specified using a lists, and these may be seen as simply mapping these lists into the corresponding widget.
gmenu(menulist, popup = FALSE, action=NULL, container = NULL, ..., toolkit = guiToolkit()) gtoolbar (toolbarlist, style = c("both", "icons", "text", "both-horiz"), action=NULL, container = NULL, ..., toolkit = guiToolkit()) gaction(label, tooltip = NULL, icon = NULL, key.accel = NULL, handler = NULL, action = NULL, ..., toolkit = guiToolkit())
menulist |
A list defining a menu bar |
popup |
Logical indicating if this should return a popup menu |
toolbarlist |
A list defining a toolbar |
style |
What style to use |
action |
Passed to menubar handlers |
container |
Container to attach widget to. Should be a gwindow instance. |
label |
Label for action item |
tooltip |
tooltip |
icon |
icon to decorate instance of action |
key.accel |
keyboard accelerator |
handler |
Handler called when object attached to action is activated |
... |
Passed to the add method of the container |
toolkit |
Which GUI toolkit to use |
The gaction constructor creates reusable objects for use with
buttons, menubars and toolbars. Once constructed, the main
methods are svalue
, and svalue<-
for getting and
setting the label text and enabled<-
which can changes
whether the widgets depending on the action are sensitive to
user input. An action object contains a label, an optional
icon, an optional keyboard accelerator, and a handler. The
handler does not have the widget from which it is called
passed in to the obj
component of the first argument,
but one can parametrize the argument with the action
argument. The icon, tooltip, and keyboard accelerator are very
much toolkit and OS dependent, and so may not always be
available by the widget using the gaction object. The keyboard
accelerator is not yet implemented in any toolkit.
The lists defining a menubar or toolbar are very similar.
Each is a list with named components. A component is a
terminal node if it a) is a gaction
instance or b) has a
handler
component, which is a function to be called
(without arguments) when the menu item or toolbar item is
selected. Optionally, an icon
component can be given
specifying a stock icon to accompany the text. A non-null
component named separator
will also indicate a terminal
node. In this case, a visible separator will be displayed.
A menubar list can use the hierarchical nature of a list to generate submenus. For toolbars this is not the case.
These constructors map the list into the widget. The methods for the constructors refer to these list defining the widget.
The svalue
method returns the list.
The svalue<-
method can be used to change the list, and
hence redo the menubar.
The "["
method refers to the components of the list.
The "[<-"
method can be used to change pieces of the
menubar or toolbar.
The add
method with signature (obj,lst)
or
(obj,gmenu.instance)
can be used to apped to the
current menubar/toolbar. The second argument is a list or an
gmenu or gtoolbar instance.
The delete
method
can be used to delete part of the menubar/toolbar. The
value
argument can be either a character vector with
the top-level names to delete, or a named list, or an instance
of either gmenu or gtoolbar.
Popular usage reserves toolbars and menubars for top-level windows – not dialog sub windows, or sub groups within a GUI – as such, the container, specified at construction, should be a top-level gwindow instance
## Not run: mbl <- list() mbl$File$Open$handler = function(h,...) print("open") mbl$File$Quit$handler = function(h,...) print("quit") mbl$File$Quit$icon = "quit" mbl$Edit$Find$handler = function(h,...) print("Find") mbl$Edit$Replace$handler = function(h,...) print("Replace") w <- gwindow("gmenu test") mb <- gmenu(mbl, container=w) tbl <- list() tbl$New <- list(icon="new",handler = function(...) print("new")) tbl$Print <- list(icon="print",handler = function(...) print("print")) tb <- gtoolbar(tbl, container=w) ## example of using gaction ## works in gWidgetstcltk, but much better in gWidgetsRGtk2 ## stub for handler f <- function(h,...) print("stub") ## some actions. The icon is optional, as is tooltip aOpen <- gaction(label="Open", icon="open", handler=f) aClose <- gaction(label="Close", icon="close", handler=f) aQuit <- gaction(label="Quit", icon="quit", handler=function(h,...) dispose(w)) aCut <- gaction(label="Cut", icon="cut", handler=f) aCopy <- gaction(label="Copy", icon="copy", handler=f) aPaste <- gaction(label="Paste", icon="paste", handler=f) ## set up groups of actions so that they can be disabled/enabled ## all at once allActionsGroup <- list(aOpen, aClose, aQuit, aCut, aCopy, aPaste) editActionsGroup <- list(aCut, aCopy, aPaste) ## define menubar list ml <- list(File = list( open = aOpen, close = aClose, sep = list(separator = TRUE), # must be named component quit = aQuit), Edit = list( copy = aCopy, paste = aPaste)) ## toolbar list has only one level tl <- list( Open=aOpen, sep = list(separator = TRUE), # must be named component Quit = aQuit) ## set up main window w <- gwindow() gmenu(ml, cont = w) gtoolbar(tl, cont = w) ## Now add a widget gbutton(action = aQuit, cont = w) ## disable a group of action sapply(editActionsGroup, function(i) enabled(i) <- FALSE) ## End(Not run)