class Adw::Breakpoint

Overview

Describes a breakpoint for #Window or #Dialog.

Breakpoints are used to create adaptive UI, allowing to change the layout depending on available size.

Breakpoint is a size threshold, specified by its condition, as well as one or more setters.

Each setter has a target object, a property and a value. When a breakpoint is applied, each setter sets the target property on their target object to the specified value, and reset it back to the original value when it's unapplied.

For more complicated scenarios, Breakpoint::#apply and Breakpoint::#unapply can be used instead.

Breakpoints can be used within #Window, #ApplicationWindow, #Dialog or #BreakpointBin.

Adw::Breakpoint as Gtk::Buildable:

Adw::Breakpoint supports specifying its condition via the <condition> element. The contents of the element must be a string in a format accepted by BreakpointCondition::parse.

It also supports adding setters via the <setter> element. Each <setter> element must have the object attribute specifying the target object, and the property attribute specifying the property name. The contents of the element are used as the setter value.

For G_TYPE_OBJECT and G_TYPE_BOXED derived properties, empty contents are treated as NULL.

Setter values can be translated with the usual translatable, context and comments attributes.

Example of an Adw::Breakpoint UI definition:

WARNING ⚠️ The following code is in xml ⚠️

<object class="Adw::Breakpoint">
  <condition>max-width: 400px</condition>
  <setter object="button" property="visible">True</setter>
  <setter object="box" property="orientation">vertical</setter>
  <setter object="page" property="title" translatable="yes">Example</setter>
</object>

Included Modules

Defined in:

lib/gi-crystal/src/auto/adw-1/breakpoint.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from module Gtk::Buildable

buildable_id : String | Nil buildable_id, to_unsafe to_unsafe

Constructor methods inherited from module Gtk::Buildable

cast(obj : GObject::Object) : self cast

Class methods inherited from module Gtk::Buildable

cast?(obj : GObject::Object) : self | Nil cast?, g_type : UInt64 g_type

Instance methods inherited from class GObject::Object

==(other : self) ==, bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding bind_property, bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding bind_property_full, data(key : String) : Pointer(Void) | Nil data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, hash(hasher) hash, notify(property_name : String) : Nil notify, notify_by_pspec(pspec : GObject::ParamSpec) : Nil notify_by_pspec, notify_signal notify_signal, property(property_name : String, value : _) : Nil property, qdata(quark : UInt32) : Pointer(Void) | Nil qdata, ref_count : UInt32 ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void) | Nil) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void) | Nil steal_data, steal_qdata(quark : UInt32) : Pointer(Void) | Nil steal_qdata, thaw_notify : Nil thaw_notify, to_unsafe : Pointer(Void) to_unsafe, watch_closure(closure : GObject::Closure) : Nil watch_closure

Constructor methods inherited from class GObject::Object

cast(obj : GObject::Object) : self cast, new(pointer : Pointer(Void), transfer : GICrystal::Transfer)
new
new
, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv

Class methods inherited from class GObject::Object

cast?(obj : GObject::Object) : self | Nil cast?, compat_control(what : UInt64, data : Pointer(Void) | Nil) : UInt64 compat_control, g_type : UInt64 g_type, interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec interface_find_property, interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec) interface_list_properties

Macros inherited from class GObject::Object

previous_vfunc(*args) previous_vfunc, previous_vfunc!(*args) previous_vfunc!, signal(signature) signal

Constructor Detail

def self.new(condition : Adw::BreakpointCondition) : self #

Creates a new Adw::Breakpoint with condition.


def self.new #

Initialize a new Breakpoint.


def self.new(*, condition : Adw::BreakpointCondition | Nil = nil) #

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.


Instance Method Detail

def ==(other : self) #
Description copied from class Reference

Returns true if this reference is the same as other. Invokes same?.


def add_setter(object : GObject::Object, property : String, value : _ | Nil) : Nil #

Adds a setter to self.

The setter will automatically set property on object to value when applying the breakpoint, and set it back to its original value upon unapplying it.

::: note Setting properties to their original values does not work for properties that have irreversible side effects. For example, changing Gtk::Button#label while [property@Gtk.Button:icon-name] is set will reset the icon. However, resetting the label will not set icon-name to its original value.

Use the Breakpoint::#apply and Breakpoint::#unapply signals for those properties instead, as follows:

WARNING ⚠️ The following code is in c ⚠️

static void
breakpoint_apply_cb (MyWidget *self)
{
  gtk_button_set_icon_name (self->button, "go-previous-symbolic");
}

static void
breakpoint_apply_cb (MyWidget *self)
{
  gtk_button_set_label (self->button, _("_Back"));
}

// ...

g_signal_connect_swapped (breakpoint, "apply",
                          G_CALLBACK (breakpoint_apply_cb), self);
g_signal_connect_swapped (breakpoint, "unapply",
                          G_CALLBACK (breakpoint_unapply_cb), self);

def add_setters(objects : Enumerable(GObject::Object), names : Enumerable(String), values : Enumerable(_)) : Nil #

Adds multiple setters to self.

See Breakpoint::add_setter.

Example:

WARNING ⚠️ The following code is in c ⚠️

adw_breakpoint_add_setters (breakpoint,
                            G_OBJECT (box), "orientation", GTK_ORIENTATION_VERTICAL,
                            G_OBJECT (button), "halign", GTK_ALIGN_FILL,
                            G_OBJECT (button), "valign", GTK_ALIGN_END,
                            NULL);

def apply_signal #

def condition : Adw::BreakpointCondition | Nil #

Gets the condition for self.


def condition=(condition : Adw::BreakpointCondition | Nil) : Nil #

Sets the condition for self.


def hash(hasher) #
Description copied from class Reference

See Object#hash(hasher)


def unapply_signal #