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 |
GtkPopoverMenu is a subclass of Popover
that treats its
children like menus and allows switching between them. It is
meant to be used primarily together with ModelButton
, but
any widget can be used, such as SpinButton
or Scale
.
In this respect, GtkPopoverMenu is more flexible than popovers
that are created from a MenuModel
with popoverNewFromModel
.
To add a child as a submenu, set the PopoverMenu
:submenu
child property to the name of the submenu. To let the user open
this submenu, add a ModelButton
whose ModelButton
:menu-name
property is set to the name you've given to the submenu.
By convention, the first child of a submenu should be a ModelButton
to switch back to the parent menu. Such a button should use the
ModelButton
:inverted
and ModelButton
:centered
properties
to achieve a title-like appearance and place the submenu indicator
at the opposite side. To switch back to the main menu, use "main"
as the menu name.
Example
<object class="GtkPopoverMenu"> <child> <object class="GtkBox"> <property name="visible">True</property> <property name="margin">10</property> <child> <object class="GtkModelButton"> <property name="visible">True</property> <property name="action-name">win.frob</property> <property name="text" translatable="yes">Frob</property> </object> </child> <child> <object class="GtkModelButton"> <property name="visible">True</property> <property name="menu-name">more</property> <property name="text" translatable="yes">More</property> </object> </child> </object> </child> <child> <object class="GtkBox"> <property name="visible">True</property> <property name="margin">10</property> <child> <object class="GtkModelButton"> <property name="visible">True</property> <property name="action-name">win.foo</property> <property name="text" translatable="yes">Foo</property> </object> </child> <child> <object class="GtkModelButton"> <property name="visible">True</property> <property name="action-name">win.bar</property> <property name="text" translatable="yes">Bar</property> </object> </child> </object> <packing> <property name="submenu">more</property> </packing> </child> </object>
Just like normal popovers created using gtk_popover_new_from_model,
PopoverMenu
instances have a single css node called "popover"
and get the .menu style class.
Synopsis
- newtype PopoverMenu = PopoverMenu (ManagedPtr PopoverMenu)
- class (GObject o, IsDescendantOf PopoverMenu o) => IsPopoverMenu o
- toPopoverMenu :: (MonadIO m, IsPopoverMenu o) => o -> m PopoverMenu
- noPopoverMenu :: Maybe PopoverMenu
- popoverMenuNew :: (HasCallStack, MonadIO m) => m PopoverMenu
- popoverMenuOpenSubmenu :: (HasCallStack, MonadIO m, IsPopoverMenu a) => a -> Text -> m ()
- clearPopoverMenuVisibleSubmenu :: (MonadIO m, IsPopoverMenu o) => o -> m ()
- constructPopoverMenuVisibleSubmenu :: IsPopoverMenu o => Text -> IO (GValueConstruct o)
- getPopoverMenuVisibleSubmenu :: (MonadIO m, IsPopoverMenu o) => o -> m (Maybe Text)
- setPopoverMenuVisibleSubmenu :: (MonadIO m, IsPopoverMenu o) => o -> Text -> m ()
Exported types
newtype PopoverMenu Source #
Memory-managed wrapper type.
Instances
GObject PopoverMenu Source # | |
Defined in GI.Gtk.Objects.PopoverMenu gobjectType :: IO GType # | |
HasParentTypes PopoverMenu Source # | |
Defined in GI.Gtk.Objects.PopoverMenu | |
type ParentTypes PopoverMenu Source # | |
Defined in GI.Gtk.Objects.PopoverMenu type ParentTypes PopoverMenu = Popover ': (Bin ': (Container ': (Widget ': (Object ': (ImplementorIface ': (Buildable ': ([] :: [Type]))))))) |
class (GObject o, IsDescendantOf PopoverMenu o) => IsPopoverMenu o Source #
Type class for types which can be safely cast to PopoverMenu
, for instance with toPopoverMenu
.
Instances
(GObject o, IsDescendantOf PopoverMenu o) => IsPopoverMenu o Source # | |
Defined in GI.Gtk.Objects.PopoverMenu |
toPopoverMenu :: (MonadIO m, IsPopoverMenu o) => o -> m PopoverMenu Source #
Cast to PopoverMenu
, for types for which this is known to be safe. For general casts, use castTo
.
noPopoverMenu :: Maybe PopoverMenu Source #
A convenience alias for Nothing
:: Maybe
PopoverMenu
.
Methods
new
:: (HasCallStack, MonadIO m) | |
=> m PopoverMenu | Returns: a new |
Creates a new popover menu.
Since: 3.16
openSubmenu
popoverMenuOpenSubmenu Source #
:: (HasCallStack, MonadIO m, IsPopoverMenu a) | |
=> a |
|
-> Text |
|
-> m () |
Opens a submenu of the popover
. The name
must be one of the names given to the submenus
of popover
with PopoverMenu
:submenu
, or
"main" to switch back to the main menu.
ModelButton
will open submenus automatically
when the ModelButton
:menu-name
property is set,
so this function is only needed when you are using
other kinds of widgets to initiate menu changes.
Since: 3.16
Properties
visibleSubmenu
No description available in the introspection data.
clearPopoverMenuVisibleSubmenu :: (MonadIO m, IsPopoverMenu o) => o -> m () Source #
Set the value of the “visible-submenu
” property to Nothing
.
When overloading is enabled, this is equivalent to
clear
#visibleSubmenu
constructPopoverMenuVisibleSubmenu :: IsPopoverMenu o => Text -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “visible-submenu
” property. This is rarely needed directly, but it is used by new
.
getPopoverMenuVisibleSubmenu :: (MonadIO m, IsPopoverMenu o) => o -> m (Maybe Text) Source #
Get the value of the “visible-submenu
” property.
When overloading is enabled, this is equivalent to
get
popoverMenu #visibleSubmenu
setPopoverMenuVisibleSubmenu :: (MonadIO m, IsPopoverMenu o) => o -> Text -> m () Source #
Set the value of the “visible-submenu
” property.
When overloading is enabled, this is equivalent to
set
popoverMenu [ #visibleSubmenu:=
value ]