GtkActivatable
An interface for activatable widgets
gtkActivatableDoSetRelatedAction(object, action)gtkActivatableGetRelatedAction(object)gtkActivatableGetUseActionAppearance(object)gtkActivatableSyncActionProperties(object, action = NULL)gtkActivatableSetRelatedAction(object, action)gtkActivatableSetUseActionAppearance(object, use.appearance)
GInterface +----GtkActivatable
GtkActivatable is implemented by
GtkButton, GtkCheckButton, GtkCheckMenuItem, GtkColorButton, GtkFontButton, GtkImageMenuItem, GtkLinkButton, GtkMenuItem, GtkMenuToolButton, GtkOptionMenu, GtkRadioButton, GtkRadioMenuItem, GtkRadioToolButton, GtkRecentChooserMenu, GtkScaleButton, GtkSeparatorMenuItem, GtkSeparatorToolItem, GtkTearoffMenuItem, GtkToggleButton, GtkToggleToolButton, GtkToolButton, GtkToolItem and GtkVolumeButton.
Activatable widgets can be connected to a GtkAction and reflects
the state of its action. A GtkActivatable can also provide feedback
through its action, as they are responsible for activating their
related actions.
Implementing GtkActivatable
When extending a class that is already GtkActivatable; it is only
necessary to implement the GtkActivatable->syncActionProperties()
and GtkActivatable->update() methods and chain up to the parent
implementation, however when introducing
a new GtkActivatable class; the "related-action" and
"use-action-appearance" properties need to be handled by
the implementor. Handling these properties is mostly a matter of installing
the action pointer and boolean flag on your instance, and calling
gtkActivatableDoSetRelatedAction and
gtkActivatableSyncActionProperties at the appropriate times.
A class fragment implementing GtkActivatable
gClass("FooBar", "GtkButton",
.prop_overrides=c("related-action", "use-action-appearance"),
GObject=list(
dispose=function(object) {
object$doSetRelatedAction(NULL)
},
set_property=function(object, id, value, pspec) {
if (pspec$name == "related-action") {
assignProp(object, pspec, value)
object$doSetRelatedAction(value)
} else if (pspec$name == "use-action-appearance") {
if (value != getProp(pspec)) {
assignProp(object, pspec, value)
object$syncActionProperties(object$"related-action")
}
} else {
warning("invalid property: ", pspec$name)
}
}
),
GtkActivatable=list(
sync_action_properties=function(activatable, action) {
if (is.null(action)) {
return()
}
activatable$visible <- action$visible
activatable$sensitive <- action$sensitive
## ...
if (activatable$use_action_appearance) {
if (!is.null(action$stock_id)) {
activatable$label <- action$stock_id
} else {
activatable$label <- action$label
}
activatable$use_stock <- !is.null(action$stock_id)
}
## ...
},
update=function(activatable, action, property_name) {
if (property_name == "visible") {
activatable$visible <- action$visible
} else if (property_name == "sensitive") {
activatable$sensitive <- action$sensitive
}
## ...
if (activatable$use_action_appearance) {
if (property_name == "stock-id") {
activatable$label <- action$stock_id
activatable$use_stock <- !is.null(action$stock_id)
} else if (property_name == "label") {
activatable$label <- action$label
}
}
## ...
}
))GtkActivatableundocumented
related-action [GtkAction : * : Read / Write]The action that this activatable will activate and receive
updates from for various states and possibly appearance.
PLEASE NOTE: GtkActivatable implementors need to handle the this property and
call gtkActivatableDoSetRelatedAction when it changes. Since 2.16
use-action-appearance [logical : Read / Write]Whether this activatable should reset its layout and appearance when setting the related action or when the action changes appearance.
See the GtkAction documentation directly to find which properties
should be ignored by the GtkActivatable when this property is FALSE.
PLEASE NOTE: GtkActivatable implementors need to handle this property
and call gtkActivatableSyncActionProperties on the activatable
widget when it changes. Default value: TRUE Since 2.16
Derived by RGtkGen from GTK+ documentation
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.