Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (inaki@blueleaf.cc) |
Safe Haskell | None |
Language | Haskell2010 |
A Expander
allows the user to hide or show its child by clicking
on an expander triangle similar to the triangles used in a TreeView
.
Normally you use an expander as you would use any other descendant
of Bin
; you create the child widget and use containerAdd
to add it to the expander. When the expander is toggled, it will take
care of showing and hiding the child automatically.
Special Usage
There are situations in which you may prefer to show and hide the
expanded widget yourself, such as when you want to actually create
the widget at expansion time. In this case, create a Expander
but do not add a child to it. The expander widget has an
Expander
:expanded
property which can be used to monitor
its expansion state. You should watch this property with a signal
connection as follows:
C code
static void expander_callback (GObject *object, GParamSpec *param_spec, gpointer user_data) { GtkExpander *expander; expander = GTK_EXPANDER (object); if (gtk_expander_get_expanded (expander)) { // Show or create widgets } else { // Hide or destroy widgets } } static void create_expander (void) { GtkWidget *expander = gtk_expander_new_with_mnemonic ("_More Options"); g_signal_connect (expander, "notify::expanded", G_CALLBACK (expander_callback), NULL); // ... }
GtkExpander as GtkBuildable
The GtkExpander implementation of the GtkBuildable interface supports placing a child in the label position by specifying “label” as the “type” attribute of a <child> element. A normal content child can be specified without specifying a <child> type attribute.
An example of a UI definition fragment with GtkExpander: > >class="GtkExpander" > type="label" > class="GtkLabel" id="expander-label"/ > /child > child > class="GtkEntry" id="expander-content"/ > /child >/object
CSS nodes
plain code
expander ├── title │ ├── arrow │ ╰── <label widget> ╰── <child>
GtkExpander has three CSS nodes, the main node with the name expander, a subnode with name title and node below it with name arrow. The arrow of an expander that is showing its child gets the :checked pseudoclass added to it.
Synopsis
- newtype Expander = Expander (ManagedPtr Expander)
- class (GObject o, IsDescendantOf Expander o) => IsExpander o
- toExpander :: (MonadIO m, IsExpander o) => o -> m Expander
- noExpander :: Maybe Expander
- expanderGetExpanded :: (HasCallStack, MonadIO m, IsExpander a) => a -> m Bool
- expanderGetLabel :: (HasCallStack, MonadIO m, IsExpander a) => a -> m (Maybe Text)
- expanderGetLabelFill :: (HasCallStack, MonadIO m, IsExpander a) => a -> m Bool
- expanderGetLabelWidget :: (HasCallStack, MonadIO m, IsExpander a) => a -> m (Maybe Widget)
- expanderGetResizeToplevel :: (HasCallStack, MonadIO m, IsExpander a) => a -> m Bool
- expanderGetSpacing :: (HasCallStack, MonadIO m, IsExpander a) => a -> m Int32
- expanderGetUseMarkup :: (HasCallStack, MonadIO m, IsExpander a) => a -> m Bool
- expanderGetUseUnderline :: (HasCallStack, MonadIO m, IsExpander a) => a -> m Bool
- expanderNew :: (HasCallStack, MonadIO m) => Maybe Text -> m Expander
- expanderNewWithMnemonic :: (HasCallStack, MonadIO m) => Maybe Text -> m Expander
- expanderSetExpanded :: (HasCallStack, MonadIO m, IsExpander a) => a -> Bool -> m ()
- expanderSetLabel :: (HasCallStack, MonadIO m, IsExpander a) => a -> Maybe Text -> m ()
- expanderSetLabelFill :: (HasCallStack, MonadIO m, IsExpander a) => a -> Bool -> m ()
- expanderSetLabelWidget :: (HasCallStack, MonadIO m, IsExpander a, IsWidget b) => a -> Maybe b -> m ()
- expanderSetResizeToplevel :: (HasCallStack, MonadIO m, IsExpander a) => a -> Bool -> m ()
- expanderSetSpacing :: (HasCallStack, MonadIO m, IsExpander a) => a -> Int32 -> m ()
- expanderSetUseMarkup :: (HasCallStack, MonadIO m, IsExpander a) => a -> Bool -> m ()
- expanderSetUseUnderline :: (HasCallStack, MonadIO m, IsExpander a) => a -> Bool -> m ()
- constructExpanderExpanded :: IsExpander o => Bool -> IO (GValueConstruct o)
- getExpanderExpanded :: (MonadIO m, IsExpander o) => o -> m Bool
- setExpanderExpanded :: (MonadIO m, IsExpander o) => o -> Bool -> m ()
- clearExpanderLabel :: (MonadIO m, IsExpander o) => o -> m ()
- constructExpanderLabel :: IsExpander o => Text -> IO (GValueConstruct o)
- getExpanderLabel :: (MonadIO m, IsExpander o) => o -> m (Maybe Text)
- setExpanderLabel :: (MonadIO m, IsExpander o) => o -> Text -> m ()
- constructExpanderLabelFill :: IsExpander o => Bool -> IO (GValueConstruct o)
- getExpanderLabelFill :: (MonadIO m, IsExpander o) => o -> m Bool
- setExpanderLabelFill :: (MonadIO m, IsExpander o) => o -> Bool -> m ()
- clearExpanderLabelWidget :: (MonadIO m, IsExpander o) => o -> m ()
- constructExpanderLabelWidget :: (IsExpander o, IsWidget a) => a -> IO (GValueConstruct o)
- getExpanderLabelWidget :: (MonadIO m, IsExpander o) => o -> m (Maybe Widget)
- setExpanderLabelWidget :: (MonadIO m, IsExpander o, IsWidget a) => o -> a -> m ()
- constructExpanderResizeToplevel :: IsExpander o => Bool -> IO (GValueConstruct o)
- getExpanderResizeToplevel :: (MonadIO m, IsExpander o) => o -> m Bool
- setExpanderResizeToplevel :: (MonadIO m, IsExpander o) => o -> Bool -> m ()
- constructExpanderSpacing :: IsExpander o => Int32 -> IO (GValueConstruct o)
- getExpanderSpacing :: (MonadIO m, IsExpander o) => o -> m Int32
- setExpanderSpacing :: (MonadIO m, IsExpander o) => o -> Int32 -> m ()
- constructExpanderUseMarkup :: IsExpander o => Bool -> IO (GValueConstruct o)
- getExpanderUseMarkup :: (MonadIO m, IsExpander o) => o -> m Bool
- setExpanderUseMarkup :: (MonadIO m, IsExpander o) => o -> Bool -> m ()
- constructExpanderUseUnderline :: IsExpander o => Bool -> IO (GValueConstruct o)
- getExpanderUseUnderline :: (MonadIO m, IsExpander o) => o -> m Bool
- setExpanderUseUnderline :: (MonadIO m, IsExpander o) => o -> Bool -> m ()
- type C_ExpanderActivateCallback = Ptr () -> Ptr () -> IO ()
- type ExpanderActivateCallback = IO ()
- afterExpanderActivate :: (IsExpander a, MonadIO m) => a -> ExpanderActivateCallback -> m SignalHandlerId
- genClosure_ExpanderActivate :: MonadIO m => ExpanderActivateCallback -> m (GClosure C_ExpanderActivateCallback)
- mk_ExpanderActivateCallback :: C_ExpanderActivateCallback -> IO (FunPtr C_ExpanderActivateCallback)
- noExpanderActivateCallback :: Maybe ExpanderActivateCallback
- onExpanderActivate :: (IsExpander a, MonadIO m) => a -> ExpanderActivateCallback -> m SignalHandlerId
- wrap_ExpanderActivateCallback :: ExpanderActivateCallback -> C_ExpanderActivateCallback
Exported types
Memory-managed wrapper type.
Instances
GObject Expander Source # | |
Defined in GI.Gtk.Objects.Expander gobjectType :: IO GType # | |
HasParentTypes Expander Source # | |
Defined in GI.Gtk.Objects.Expander | |
type ParentTypes Expander Source # | |
Defined in GI.Gtk.Objects.Expander type ParentTypes Expander = Bin ': (Container ': (Widget ': (Object ': (ImplementorIface ': (Buildable ': ([] :: [Type])))))) |
class (GObject o, IsDescendantOf Expander o) => IsExpander o Source #
Type class for types which can be safely cast to Expander
, for instance with toExpander
.
Instances
(GObject o, IsDescendantOf Expander o) => IsExpander o Source # | |
Defined in GI.Gtk.Objects.Expander |
toExpander :: (MonadIO m, IsExpander o) => o -> m Expander Source #
Methods
getExpanded
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m Bool | Returns: the current state of the expander |
Queries a Expander
and returns its current state. Returns True
if the child widget is revealed.
See expanderSetExpanded
.
Since: 2.4
getLabel
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m (Maybe Text) | Returns: The text of the label widget. This string is owned by the widget and must not be modified or freed. |
Fetches the text from a label widget including any embedded
underlines indicating mnemonics and Pango markup, as set by
expanderSetLabel
. If the label text has not been set the
return value will be Nothing
. This will be the case if you create an
empty button with buttonNew
to use as a container.
Note that this function behaved differently in versions prior to 2.14 and used to return the label text stripped of embedded underlines indicating mnemonics and Pango markup. This problem can be avoided by fetching the label text directly from the label widget.
Since: 2.4
getLabelFill
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m Bool | Returns: |
Returns whether the label widget will fill all available
horizontal space allocated to expander
.
Since: 2.22
getLabelWidget
expanderGetLabelWidget Source #
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m (Maybe Widget) | Returns: the label widget,
or |
Retrieves the label widget for the frame. See
expanderSetLabelWidget
.
Since: 2.4
getResizeToplevel
expanderGetResizeToplevel Source #
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m Bool | Returns: the “resize toplevel” setting. |
Returns whether the expander will resize the toplevel widget containing the expander upon resizing and collpasing.
Since: 3.2
getSpacing
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m Int32 | Returns: spacing between the expander and child |
Deprecated: (Since version 3.20)Use margins on the child instead.
Gets the value set by expanderSetSpacing
.
Since: 2.4
getUseMarkup
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m Bool | Returns: |
Returns whether the label’s text is interpreted as marked up with
the [Pango text markup language][PangoMarkupFormat].
See expanderSetUseMarkup
.
Since: 2.4
getUseUnderline
expanderGetUseUnderline Source #
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> m Bool | Returns: |
Returns whether an embedded underline in the expander label
indicates a mnemonic. See expanderSetUseUnderline
.
Since: 2.4
new
:: (HasCallStack, MonadIO m) | |
=> Maybe Text |
|
-> m Expander | Returns: a new |
Creates a new expander using label
as the text of the label.
Since: 2.4
newWithMnemonic
expanderNewWithMnemonic Source #
:: (HasCallStack, MonadIO m) | |
=> Maybe Text |
|
-> m Expander | Returns: a new |
Creates a new expander using label
as the text of the label.
If characters in label
are preceded by an underscore, they are underlined.
If you need a literal underscore character in a label, use “__” (two
underscores). The first underlined character represents a keyboard
accelerator called a mnemonic.
Pressing Alt and that key activates the button.
Since: 2.4
setExpanded
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> Bool |
|
-> m () |
setLabel
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> Maybe Text |
|
-> m () |
Sets the text of the label of the expander to label
.
This will also clear any previously set labels.
Since: 2.4
setLabelFill
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> Bool |
|
-> m () |
Sets whether the label widget should fill all available
horizontal space allocated to expander
.
Since: 2.22
setLabelWidget
expanderSetLabelWidget Source #
:: (HasCallStack, MonadIO m, IsExpander a, IsWidget b) | |
=> a |
|
-> Maybe b |
|
-> m () |
Set the label widget for the expander. This is the widget that will appear embedded alongside the expander arrow.
Since: 2.4
setResizeToplevel
expanderSetResizeToplevel Source #
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> Bool |
|
-> m () |
Sets whether the expander will resize the toplevel widget containing the expander upon resizing and collpasing.
Since: 3.2
setSpacing
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> Int32 |
|
-> m () |
Deprecated: (Since version 3.20)Use margins on the child instead.
Sets the spacing field of expander
, which is the number of
pixels to place between expander and the child.
Since: 2.4
setUseMarkup
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> Bool |
|
-> m () |
Sets whether the text of the label contains markup in
[Pango’s text markup language][PangoMarkupFormat].
See labelSetMarkup
.
Since: 2.4
setUseUnderline
expanderSetUseUnderline Source #
:: (HasCallStack, MonadIO m, IsExpander a) | |
=> a |
|
-> Bool |
|
-> m () |
If true, an underline in the text of the expander label indicates the next character should be used for the mnemonic accelerator key.
Since: 2.4
Properties
expanded
No description available in the introspection data.
constructExpanderExpanded :: IsExpander o => Bool -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “expanded
” property. This is rarely needed directly, but it is used by new
.
getExpanderExpanded :: (MonadIO m, IsExpander o) => o -> m Bool Source #
Get the value of the “expanded
” property.
When overloading is enabled, this is equivalent to
get
expander #expanded
setExpanderExpanded :: (MonadIO m, IsExpander o) => o -> Bool -> m () Source #
Set the value of the “expanded
” property.
When overloading is enabled, this is equivalent to
set
expander [ #expanded:=
value ]
label
No description available in the introspection data.
clearExpanderLabel :: (MonadIO m, IsExpander o) => o -> m () Source #
Set the value of the “label
” property to Nothing
.
When overloading is enabled, this is equivalent to
clear
#label
constructExpanderLabel :: IsExpander o => Text -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “label
” property. This is rarely needed directly, but it is used by new
.
getExpanderLabel :: (MonadIO m, IsExpander o) => o -> m (Maybe Text) Source #
Get the value of the “label
” property.
When overloading is enabled, this is equivalent to
get
expander #label
setExpanderLabel :: (MonadIO m, IsExpander o) => o -> Text -> m () Source #
Set the value of the “label
” property.
When overloading is enabled, this is equivalent to
set
expander [ #label:=
value ]
labelFill
No description available in the introspection data.
constructExpanderLabelFill :: IsExpander o => Bool -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “label-fill
” property. This is rarely needed directly, but it is used by new
.
getExpanderLabelFill :: (MonadIO m, IsExpander o) => o -> m Bool Source #
Get the value of the “label-fill
” property.
When overloading is enabled, this is equivalent to
get
expander #labelFill
setExpanderLabelFill :: (MonadIO m, IsExpander o) => o -> Bool -> m () Source #
Set the value of the “label-fill
” property.
When overloading is enabled, this is equivalent to
set
expander [ #labelFill:=
value ]
labelWidget
No description available in the introspection data.
clearExpanderLabelWidget :: (MonadIO m, IsExpander o) => o -> m () Source #
Set the value of the “label-widget
” property to Nothing
.
When overloading is enabled, this is equivalent to
clear
#labelWidget
constructExpanderLabelWidget :: (IsExpander o, IsWidget a) => a -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “label-widget
” property. This is rarely needed directly, but it is used by new
.
getExpanderLabelWidget :: (MonadIO m, IsExpander o) => o -> m (Maybe Widget) Source #
Get the value of the “label-widget
” property.
When overloading is enabled, this is equivalent to
get
expander #labelWidget
setExpanderLabelWidget :: (MonadIO m, IsExpander o, IsWidget a) => o -> a -> m () Source #
Set the value of the “label-widget
” property.
When overloading is enabled, this is equivalent to
set
expander [ #labelWidget:=
value ]
resizeToplevel
When this property is True
, the expander will resize the toplevel
widget containing the expander upon expanding and collapsing.
Since: 3.2
constructExpanderResizeToplevel :: IsExpander o => Bool -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “resize-toplevel
” property. This is rarely needed directly, but it is used by new
.
getExpanderResizeToplevel :: (MonadIO m, IsExpander o) => o -> m Bool Source #
Get the value of the “resize-toplevel
” property.
When overloading is enabled, this is equivalent to
get
expander #resizeToplevel
setExpanderResizeToplevel :: (MonadIO m, IsExpander o) => o -> Bool -> m () Source #
Set the value of the “resize-toplevel
” property.
When overloading is enabled, this is equivalent to
set
expander [ #resizeToplevel:=
value ]
spacing
Space to put between the label and the child when the expander is expanded.
constructExpanderSpacing :: IsExpander o => Int32 -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “spacing
” property. This is rarely needed directly, but it is used by new
.
getExpanderSpacing :: (MonadIO m, IsExpander o) => o -> m Int32 Source #
Get the value of the “spacing
” property.
When overloading is enabled, this is equivalent to
get
expander #spacing
setExpanderSpacing :: (MonadIO m, IsExpander o) => o -> Int32 -> m () Source #
Set the value of the “spacing
” property.
When overloading is enabled, this is equivalent to
set
expander [ #spacing:=
value ]
useMarkup
No description available in the introspection data.
constructExpanderUseMarkup :: IsExpander o => Bool -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “use-markup
” property. This is rarely needed directly, but it is used by new
.
getExpanderUseMarkup :: (MonadIO m, IsExpander o) => o -> m Bool Source #
Get the value of the “use-markup
” property.
When overloading is enabled, this is equivalent to
get
expander #useMarkup
setExpanderUseMarkup :: (MonadIO m, IsExpander o) => o -> Bool -> m () Source #
Set the value of the “use-markup
” property.
When overloading is enabled, this is equivalent to
set
expander [ #useMarkup:=
value ]
useUnderline
No description available in the introspection data.
constructExpanderUseUnderline :: IsExpander o => Bool -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “use-underline
” property. This is rarely needed directly, but it is used by new
.
getExpanderUseUnderline :: (MonadIO m, IsExpander o) => o -> m Bool Source #
Get the value of the “use-underline
” property.
When overloading is enabled, this is equivalent to
get
expander #useUnderline
setExpanderUseUnderline :: (MonadIO m, IsExpander o) => o -> Bool -> m () Source #
Set the value of the “use-underline
” property.
When overloading is enabled, this is equivalent to
set
expander [ #useUnderline:=
value ]
Signals
activate
type C_ExpanderActivateCallback = Ptr () -> Ptr () -> IO () Source #
Type for the callback on the (unwrapped) C side.
type ExpanderActivateCallback = IO () Source #
No description available in the introspection data.
afterExpanderActivate :: (IsExpander a, MonadIO m) => a -> ExpanderActivateCallback -> m SignalHandlerId Source #
Connect a signal handler for the “activate
” signal, to be run after the default handler.
When overloading is enabled, this is equivalent to
after
expander #activate callback
genClosure_ExpanderActivate :: MonadIO m => ExpanderActivateCallback -> m (GClosure C_ExpanderActivateCallback) Source #
Wrap the callback into a GClosure
.
mk_ExpanderActivateCallback :: C_ExpanderActivateCallback -> IO (FunPtr C_ExpanderActivateCallback) Source #
Generate a function pointer callable from C code, from a C_ExpanderActivateCallback
.
noExpanderActivateCallback :: Maybe ExpanderActivateCallback Source #
A convenience synonym for
.Nothing
:: Maybe
ExpanderActivateCallback
onExpanderActivate :: (IsExpander a, MonadIO m) => a -> ExpanderActivateCallback -> m SignalHandlerId Source #
Connect a signal handler for the “activate
” signal, to be run before the default handler.
When overloading is enabled, this is equivalent to
on
expander #activate callback