Class: Gtk::Stack
- Defined in:
- lib/gtk3/stack.rb
Overview
GtkStack is a container which only shows one of its children
at a time.
In contrast to GtkNotebook, GtkStack does not provide a means
for users to change the visible child. Instead, a separate widget
such as [classGtk.StackSwitcher] or [classGtk.StackSidebar] can
be used with GtkStack to provide this functionality.
Transitions between pages can be animated as slides or fades. This can be controlled with [methodGtk.Stack.set_transition_type]. These animations respect the [propertyGtk.Settings:gtk-enable-animations] setting.
GtkStack maintains a [classGtk.StackPage] object for each added
child, which holds additional per-child properties. You
obtain the GtkStackPage for a child with [methodGtk.Stack.get_page]
and you can obtain a GtkSelectionModel containing all the pages
with [methodGtk.Stack.get_pages].
GtkStack as GtkBuildable
To set child-specific properties in a .ui file, create GtkStackPage
objects explicitly, and set the child widget as a property on it:
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">page1</property>
<property name="title">In the beginning…</property>
<property name="child">
<object class="GtkLabel">
<property name="label">It was dark</property>
</object>
</property>
</object>
</child>
CSS nodes
GtkStack has a single CSS node named stack.
Accessibility
GtkStack uses the %GTK_ACCESSIBLE_ROLE_TAB_PANEL for the stack
pages, which are the accessible parent objects of the child widgets.
Instance Method Summary collapse
- #add(widget, name = nil, title = nil) ⇒ Object
-
#add_child(child) ⇒ Gtk::StackPage
Adds a child to stack.
-
#add_named(child, name) ⇒ Gtk::StackPage
Adds a child to stack.
-
#add_titled(child, name, title) ⇒ Gtk::StackPage
Adds a child to stack.
-
#get_child_by_name(name) ⇒ Gtk::Widget
Finds the child with the name given as the argument.
-
#get_page(child) ⇒ Gtk::StackPage
Returns the
GtkStackPageobject for child. -
#hhomogeneous ⇒ Boolean
Gets whether stack is horizontally homogeneous.
-
#hhomogeneous=(hhomogeneous) ⇒ Boolean
true if the stack allocates the same width for all children.
-
#hhomogeneous? ⇒ Boolean
true if the stack allocates the same width for all children.
-
#initialize ⇒ Gtk::Widget
constructor
Creates a new
GtkStack. -
#interpolate_size ⇒ Boolean
Returns whether the
GtkStackis set up to interpolate between the sizes of children on page switch. -
#interpolate_size=(interpolate_size) ⇒ Boolean
Whether or not the size should smoothly change during the transition.
-
#interpolate_size? ⇒ Boolean
Whether or not the size should smoothly change during the transition.
-
#pages ⇒ Gtk::SelectionModel
A selection model with the stack pages.
-
#pages=(pages) ⇒ Gtk::SelectionModel
A selection model with the stack pages.
-
#remove(child) ⇒ nil
Removes a child widget from stack.
- #set_visible_child(widget_or_name, transition_type = nil) ⇒ Object
-
#set_visible_child_full(name, transition) ⇒ nil
Makes the child with the given name visible.
- #set_visible_child_raw ⇒ Object
-
#transition_duration ⇒ Integer
The animation duration, in milliseconds.
-
#transition_duration=(transition_duration) ⇒ Integer
The animation duration, in milliseconds.
-
#transition_running ⇒ Boolean
Returns whether the stack is currently in a transition from one page to another.
-
#transition_running=(transition_running) ⇒ Boolean
Whether or not the transition is currently running.
-
#transition_running? ⇒ Boolean
Whether or not the transition is currently running.
-
#transition_type ⇒ Gtk::StackTransitionType
The type of animation used to transition.
-
#transition_type=(transition_type) ⇒ Gtk::StackTransitionType
The type of animation used to transition.
-
#vhomogeneous ⇒ Boolean
Gets whether stack is vertically homogeneous.
-
#vhomogeneous=(vhomogeneous) ⇒ Boolean
true if the stack allocates the same height for all children.
-
#vhomogeneous? ⇒ Boolean
true if the stack allocates the same height for all children.
-
#visible_child ⇒ Gtk::Widget
The widget currently visible in the stack.
-
#visible_child=(visible_child) ⇒ Gtk::Widget
The widget currently visible in the stack.
-
#visible_child_name ⇒ String
The name of the widget currently visible in the stack.
-
#visible_child_name=(visible_child_name) ⇒ String
The name of the widget currently visible in the stack.
Methods inherited from Widget
#accessible_role, #accessible_role=, #action_set_enabled, #activate, #activate_action, #activate_action_variant, #activate_default, #activate_signal, #activate_signal=, #activate_signal_from_name=, #add_binding, #add_binding_action, #add_binding_signal, #add_controller, #add_css_class, #add_events, #add_events_raw, #add_mnemonic_label, #add_shortcut, #add_tick_callback, #allocate, #allocated_baseline, #allocated_height, #allocated_width, #baseline, #bind_template_callback_full, #bind_template_child, #bind_template_child_full, #can_focus, #can_focus=, #can_focus?, #can_target, #can_target=, #can_target?, #child_focus, #child_visible, #child_visible=, #clipboard, #compute_bounds, #compute_expand, #compute_point, #compute_transform, #contains, #create_pango_context, #create_pango_layout, #css_classes, #css_classes=, #css_name, #css_name=, #cursor, #cursor=, #cursor_from_name=, default_direction, default_direction=, #direction, #direction=, #display, #dispose_template, #drag_check_threshold, #drag_dest_set, #drag_dest_set_raw, #drag_source_set, #drag_source_set_raw, #error_bell, #events, #events_raw, #first_child, #focus_child, #focus_child=, #focus_on_click, #focus_on_click=, #focus_on_click?, #focusable, #focusable=, #focusable?, #font_map, #font_map=, #font_options, #font_options=, #frame_clock, #get_allocation, #get_ancestor, #get_color, #get_preferred_size, #get_size, #get_size_request, #get_template_child, #grab_focus, #halign, #halign=, #has_css_class, #has_default, #has_default=, #has_default?, #has_focus, #has_focus=, #has_focus?, #has_tooltip, #has_tooltip=, #has_tooltip?, #has_visible_focus, have_template?, #height, #height_request, #height_request=, #hexpand, #hexpand=, #hexpand?, #hexpand_set, #hexpand_set=, #hexpand_set?, #hide, #in_destruction, #init_template, #insert_action_group, #insert_action_group_raw, #insert_after, #insert_before, #install_action, #install_property_action, #is_ancestor, #is_drawable, #is_focus, #is_sensitive, #is_visible, #keynav_failed, #last_child, #layout_manager, #layout_manager=, #layout_manager_type, #layout_manager_type=, #list_mnemonic_labels, #map, #mapped, #margin_bottom, #margin_bottom=, #margin_end, #margin_end=, #margin_start, #margin_start=, #margin_top, #margin_top=, #measure, #mnemonic_activate, #name, #name=, #native, #next_sibling, #observe_children, #observe_controllers, #opacity, #opacity=, #overflow, #overflow=, #pango_context, #parent, #parent=, #pick, #prev_sibling, #primary_clipboard, #query_action, #queue_allocate, #queue_draw, #queue_resize, #realize, #realized, #receives_default, #receives_default=, #receives_default?, #remove_controller, #remove_css_class, #remove_mnemonic_label, #remove_tick_callback, #render_icon_pixbuf, #render_icon_pixbuf_raw, #request_mode, #root, #root=, #scale_factor, #scale_factor=, #sensitive, #sensitive=, #sensitive?, #set_allocation, set_connect_func, set_connect_func_raw, #set_events, #set_events_raw, #set_size_request, #set_size_request_raw, #set_state_flags, #set_template, #set_template_raw, #settings, #should_layout, #show, #size_allocate, #snapshot_child, #state_flags, #style_context, #style_context_raw, #style_get_property, #style_get_property_raw, #template=, template_children, #template_from_resource=, #template_scope=, #tooltip_markup, #tooltip_markup=, #tooltip_text, #tooltip_text=, #translate_coordinates, #translate_coordinates_raw, #trigger_tooltip_query, #unmap, #unparent, #unrealize, #unset_state_flags, #valign, #valign=, #vexpand, #vexpand=, #vexpand?, #vexpand_set, #vexpand_set=, #vexpand_set?, #visible, #visible=, #visible?, #width, #width_request, #width_request=
Constructor Details
#initialize ⇒ Gtk::Widget
Creates a new GtkStack.
Instance Method Details
#add(widget, name = nil, title = nil) ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/gtk3/stack.rb', line 42 def add(, name=nil, title=nil) if title add_titled(, name, title) elsif name add_named(, name) else super() end self end |
#add_child(child) ⇒ Gtk::StackPage
Adds a child to stack.
#add_named(child, name) ⇒ Gtk::StackPage
Adds a child to stack.
The child is identified by the name.
#add_titled(child, name, title) ⇒ Gtk::StackPage
Adds a child to stack.
The child is identified by the name. The title
will be used by GtkStackSwitcher to represent
child in a tab bar, so it should be short.
#get_child_by_name(name) ⇒ Gtk::Widget
Finds the child with the name given as the argument.
Returns nil if there is no child with this name.
#get_page(child) ⇒ Gtk::StackPage
Returns the GtkStackPage object for child.
#hhomogeneous ⇒ Boolean
Gets whether stack is horizontally homogeneous.
#hhomogeneous=(hhomogeneous) ⇒ Boolean
true if the stack allocates the same width for all children.
#hhomogeneous? ⇒ Boolean
true if the stack allocates the same width for all children.
#interpolate_size ⇒ Boolean
Returns whether the GtkStack is set up to interpolate between
the sizes of children on page switch.
#interpolate_size=(interpolate_size) ⇒ Boolean
Whether or not the size should smoothly change during the transition.
#interpolate_size? ⇒ Boolean
Whether or not the size should smoothly change during the transition.
#pages ⇒ Gtk::SelectionModel
A selection model with the stack pages.
#pages=(pages) ⇒ Gtk::SelectionModel
A selection model with the stack pages.
#remove(child) ⇒ nil
Removes a child widget from stack.
#set_visible_child(widget_or_name, transition_type = nil) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/gtk3/stack.rb', line 21 def set_visible_child(, transition_type=nil) case when String name = else = end if set_visible_child_raw() else if transition_type set_visible_child_full(name, transition_type) else set_visible_child_name(name) end end end |
#set_visible_child_full(name, transition) ⇒ nil
Makes the child with the given name visible.
Note that the child widget has to be visible itself (see [methodGtk.Widget.show]) in order to become the visible child of stack.
#set_visible_child_raw ⇒ Object
20 |
# File 'lib/gtk3/stack.rb', line 20 alias_method :set_visible_child_raw, :set_visible_child |
#transition_duration ⇒ Integer
The animation duration, in milliseconds.
#transition_duration=(transition_duration) ⇒ Integer
The animation duration, in milliseconds.
#transition_running ⇒ Boolean
Returns whether the stack is currently in a transition from one page to another.
#transition_running=(transition_running) ⇒ Boolean
Whether or not the transition is currently running.
#transition_running? ⇒ Boolean
Whether or not the transition is currently running.
#transition_type ⇒ Gtk::StackTransitionType
The type of animation used to transition.
#transition_type=(transition_type) ⇒ Gtk::StackTransitionType
The type of animation used to transition.
#vhomogeneous ⇒ Boolean
Gets whether stack is vertically homogeneous.
#vhomogeneous=(vhomogeneous) ⇒ Boolean
true if the stack allocates the same height for all children.
#vhomogeneous? ⇒ Boolean
true if the stack allocates the same height for all children.
#visible_child ⇒ Gtk::Widget
The widget currently visible in the stack.
#visible_child=(visible_child) ⇒ Gtk::Widget
The widget currently visible in the stack.
#visible_child_name ⇒ String
The name of the widget currently visible in the stack.
#visible_child_name=(visible_child_name) ⇒ String
The name of the widget currently visible in the stack.