Class: Gtk::Stack

Inherits:
Widget
  • Object
show all
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

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

#initializeGtk::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(widget, name=nil, title=nil)
  if title
    add_titled(widget, name, title)
  elsif name
    add_named(widget, name)
  else
    super(widget)
  end
  self
end

#add_child(child) ⇒ Gtk::StackPage

Adds a child to stack.

Parameters:

Returns:

#add_named(child, name) ⇒ Gtk::StackPage

Adds a child to stack.

The child is identified by the name.

Parameters:

  • child (Gtk::Widget)

    the widget to add

  • name (String)

    the name for child

Returns:

#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.

Parameters:

  • child (Gtk::Widget)

    the widget to add

  • name (String)

    the name for child

  • title (String)

    a human-readable title for child

Returns:

#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.

Parameters:

  • name (String)

    the name of the child to find

Returns:

  • (Gtk::Widget)

    the requested child of the GtkStack

#get_page(child) ⇒ Gtk::StackPage

Returns the GtkStackPage object for child.

Parameters:

Returns:

#hhomogeneousBoolean

Gets whether stack is horizontally homogeneous.

Returns:

  • (Boolean)

    whether stack is horizontally homogeneous.

#hhomogeneous=(hhomogeneous) ⇒ Boolean

true if the stack allocates the same width for all children.

Parameters:

  • hhomogeneous (Boolean)

Returns:

  • (Boolean)

    hhomogeneous

  • (Boolean)

    hhomogeneous

#hhomogeneous?Boolean

true if the stack allocates the same width for all children.

Returns:

  • (Boolean)

    hhomogeneous

#interpolate_sizeBoolean

Returns whether the GtkStack is set up to interpolate between the sizes of children on page switch.

Returns:

  • (Boolean)

    true if child sizes are interpolated

#interpolate_size=(interpolate_size) ⇒ Boolean

Whether or not the size should smoothly change during the transition.

Parameters:

  • interpolate_size (Boolean)

Returns:

  • (Boolean)

    interpolate-size

  • (Boolean)

    interpolate-size

#interpolate_size?Boolean

Whether or not the size should smoothly change during the transition.

Returns:

  • (Boolean)

    interpolate-size

#pagesGtk::SelectionModel

A selection model with the stack pages.

Returns:

#pages=(pages) ⇒ Gtk::SelectionModel

A selection model with the stack pages.

Parameters:

Returns:

#remove(child) ⇒ nil

Removes a child widget from stack.

Parameters:

Returns:

  • (nil)

#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(widget_or_name, transition_type=nil)
  case widget_or_name
  when String
    name = widget_or_name
  else
    widget = widget_or_name
  end

  if widget
    set_visible_child_raw(widget)
  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.

Parameters:

  • name (String)

    the name of the child to make visible

  • transition (Gtk::StackTransitionType)

    the transition type to use

Returns:

  • (nil)

#set_visible_child_rawObject



20
# File 'lib/gtk3/stack.rb', line 20

alias_method :set_visible_child_raw, :set_visible_child

#transition_durationInteger

The animation duration, in milliseconds.

Returns:

  • (Integer)

    transition-duration

#transition_duration=(transition_duration) ⇒ Integer

The animation duration, in milliseconds.

Parameters:

  • transition_duration (Integer)

Returns:

  • (Integer)

    transition-duration

  • (Integer)

    transition-duration

#transition_runningBoolean

Returns whether the stack is currently in a transition from one page to another.

Returns:

  • (Boolean)

    true if the transition is currently running, false otherwise.

#transition_running=(transition_running) ⇒ Boolean

Whether or not the transition is currently running.

Parameters:

  • transition_running (Boolean)

Returns:

  • (Boolean)

    transition-running

  • (Boolean)

    transition-running

#transition_running?Boolean

Whether or not the transition is currently running.

Returns:

  • (Boolean)

    transition-running

#transition_typeGtk::StackTransitionType

The type of animation used to transition.

Returns:

#transition_type=(transition_type) ⇒ Gtk::StackTransitionType

The type of animation used to transition.

Parameters:

Returns:

#vhomogeneousBoolean

Gets whether stack is vertically homogeneous.

Returns:

  • (Boolean)

    whether stack is vertically homogeneous.

#vhomogeneous=(vhomogeneous) ⇒ Boolean

true if the stack allocates the same height for all children.

Parameters:

  • vhomogeneous (Boolean)

Returns:

  • (Boolean)

    vhomogeneous

  • (Boolean)

    vhomogeneous

#vhomogeneous?Boolean

true if the stack allocates the same height for all children.

Returns:

  • (Boolean)

    vhomogeneous

#visible_childGtk::Widget

The widget currently visible in the stack.

Returns:

#visible_child=(visible_child) ⇒ Gtk::Widget

The widget currently visible in the stack.

Parameters:

Returns:

#visible_child_nameString

The name of the widget currently visible in the stack.

Returns:

  • (String)

    visible-child-name

#visible_child_name=(visible_child_name) ⇒ String

The name of the widget currently visible in the stack.

Parameters:

  • visible_child_name (String)

Returns:

  • (String)

    visible-child-name

  • (String)

    visible-child-name