ModelButtonRef
public struct ModelButtonRef : ModelButtonProtocol, GWeakCapturing
GtkModelButton is a button class that can use a GAction
as its model.
In contrast to GtkToggleButton
or GtkRadioButton
, which can also
be backed by a GAction
via the GtkActionable:action-name
property,
GtkModelButton will adapt its appearance according to the kind of
action it is backed by, and appear either as a plain, check or
radio button.
Model buttons are used when popovers from a menu model with
gtk_popover_new_from_model()
; they can also be used manually in
a GtkPopoverMenu
.
When the action is specified via the GtkActionable:action-name
and GtkActionable:action-target
properties, the role of the button
(i.e. whether it is a plain, check or radio button) is determined by
the type of the action and doesn’t have to be explicitly specified
with the GtkModelButton:role
property.
The content of the button is specified by the GtkModelButton:text
and GtkModelButton:icon
properties.
The appearance of model buttons can be influenced with the
GtkModelButton:centered
and GtkModelButton:iconic
properties.
Model buttons have built-in support for submenus in GtkPopoverMenu
.
To make a GtkModelButton that opens a submenu when activated, set
the GtkModelButton:menu-name
property. To make a button that goes
back to the parent menu, you should set the GtkModelButton:inverted
property to place the submenu indicator at the opposite side.
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">view.cut</property>
<property name="text" translatable="yes">Cut</property>
</object>
</child>
<child>
<object class="GtkModelButton">
<property name="visible">True</property>
<property name="action-name">view.copy</property>
<property name="text" translatable="yes">Copy</property>
</object>
</child>
<child>
<object class="GtkModelButton">
<property name="visible">True</property>
<property name="action-name">view.paste</property>
<property name="text" translatable="yes">Paste</property>
</object>
</child>
</object>
</child>
</object>
CSS nodes
(plain Language Example):
modelbutton
├── <child>
╰── check
(plain Language Example):
modelbutton
├── <child>
╰── radio
(plain Language Example):
modelbutton
├── <child>
╰── arrow
GtkModelButton has a main CSS node with name modelbutton, and a subnode, which will have the name check, radio or arrow, depending on the role of the button and whether it has a menu name set.
The subnode is positioned before or after the content nodes and gets the .left or .right style class, depending on where it is located.
(plain Language Example):
button.model
├── <child>
╰── check
Iconic model buttons (see GtkModelButton:iconic
) change the name of
their main node to button and add a .model style class to it. The indicator
subnode is invisible in this case.
The ModelButtonRef
type acts as a lightweight Swift reference to an underlying GtkModelButton
instance.
It exposes methods that can operate on this data type through ModelButtonProtocol
conformance.
Use ModelButtonRef
only as an unowned
reference to an existing GtkModelButton
instance.
-
Untyped pointer to the underlying `GtkModelButton` instance.
For type-safe access, use the generated, typed pointer
model_button_ptr
property instead.Declaration
Swift
public let ptr: UnsafeMutableRawPointer!
-
Designated initialiser from the underlying
C
data typeDeclaration
Swift
@inlinable init(_ p: UnsafeMutablePointer<GtkModelButton>)
-
Designated initialiser from a constant pointer to the underlying
C
data typeDeclaration
Swift
@inlinable init(_ p: UnsafePointer<GtkModelButton>)
-
Conditional initialiser from an optional pointer to the underlying
C
data typeDeclaration
Swift
@inlinable init!(_ maybePointer: UnsafeMutablePointer<GtkModelButton>?)
-
Conditional initialiser from an optional, non-mutable pointer to the underlying
C
data typeDeclaration
Swift
@inlinable init!(_ maybePointer: UnsafePointer<GtkModelButton>?)
-
Conditional initialiser from an optional
gpointer
Declaration
Swift
@inlinable init!(gpointer g: gpointer?)
-
Conditional initialiser from an optional, non-mutable
gconstpointer
Declaration
Swift
@inlinable init!(gconstpointer g: gconstpointer?)
-
Reference intialiser for a related type that implements
ModelButtonProtocol
Declaration
Swift
@inlinable init<T>(_ other: T) where T : ModelButtonProtocol
-
This factory is syntactic sugar for setting weak pointers wrapped in
GWeak<T>
Declaration
Swift
@inlinable static func unowned<T>(_ other: T) -> ModelButtonRef where T : ModelButtonProtocol
-
Unsafe typed initialiser. Do not use unless you know the underlying data type the pointer points to conforms to
ModelButtonProtocol
.Declaration
Swift
@inlinable init<T>(cPointer: UnsafeMutablePointer<T>)
-
Unsafe typed initialiser. Do not use unless you know the underlying data type the pointer points to conforms to
ModelButtonProtocol
.Declaration
Swift
@inlinable init<T>(constPointer: UnsafePointer<T>)
-
Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to
ModelButtonProtocol
.Declaration
Swift
@inlinable init(mutating raw: UnsafeRawPointer)
-
Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to
ModelButtonProtocol
.Declaration
Swift
@inlinable init(raw: UnsafeMutableRawPointer)
-
Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to
ModelButtonProtocol
.Declaration
Swift
@inlinable init(opaquePointer: OpaquePointer)
-
Creates a new
GtkModelButton
.Declaration
Swift
@inlinable init()