Add another constraints demo

This one attempts to use constraints in a ui file.
It doesn't work.
This commit is contained in:
Matthias Clasen 2020-10-30 00:22:47 -04:00
parent a0ee25a21e
commit 49bdc4f0c2
4 changed files with 175 additions and 0 deletions

View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkWindow" id="window1">
<property name="title" translatable="yes">Constraints</property>
<child>
<object class="ConstraintsGrid">
<property name="layout-manager">
<object class="GtkConstraintLayout">
<constraints>
<guide name="space"
min-width="10" min-height="10"
nat-width="100" nat-height="10"
max-width="200" max-height="20"
strength="strong"/>
<constraint target="button1" target-attribute="start"
relation="ge"
constant="0"
strength="required"/>
<constraint target="button1" target-attribute="top"
relation="ge"
constant="0"
strength="required"/>
<constraint target="button1" target-attribute="width"
relation="le"
constant="200"
strength="required"/>
<constraint target="super" target-attribute="start"
relation="eq"
source="button1" source-attribute="start"
constant="-8"
strength="required"/>
<constraint target="button1" target-attribute="width"
relation="eq"
source="button2" source-attribute="width"
strength="required"/>
<constraint target="button1" target-attribute="end"
relation="eq"
source="space" source-attribute="start"
strength="required"/>
<constraint target="space" target-attribute="end"
relation="eq"
source="button2" source-attribute="start"
strength="required"/>
<constraint target="button2" target-attribute="end"
relation="eq"
source="super" source-attribute="end"
constant="-8"
strength="required"/>
<constraint target="super" target-attribute="start"
relation="eq"
source="button3" source-attribute="start"
constant="-8"
strength="required"/>
<constraint target="button3" target-attribute="end"
relation="eq"
source="super" source-attribute="end"
constant="-8"
strength="required"/>
<constraint target="super" target-attribute="top"
relation="eq"
source="button1" source-attribute="top"
constant="-8"
strength="required"/>
<constraint target="super" target-attribute="top"
relation="eq"
source="button2" source-attribute="top"
constant="-8"
strength="required"/>
<constraint target="button1" target-attribute="bottom"
relation="eq"
source="button3" source-attribute="top"
constant="-12"
strength="required"/>
<constraint target="button2" target-attribute="bottom"
relation="eq"
source="button3" source-attribute="top"
constant="-12"
strength="required"/>
<constraint target="button3" target-attribute="height"
relation="eq"
source="button1" source-attribute="height"
strength="required"/>
<constraint target="button3" target-attribute="height"
relation="eq"
source="button2" source-attribute="height"
strength="required"/>
<constraint target="button3" target-attribute="bottom"
relation="eq"
source="super" source-attribute="bottom"
constant="-8"
strength="required"/>
</constraints>
</object>
</property>
<child>
<object class="GtkButton" id="button1">
<property name="label">Child 1</property>
</object>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="label">Child 2</property>
</object>
</child>
<child>
<object class="GtkButton" id="button3">
<property name="label">Child 3</property>
</object>
</child>
</object>
</child>
</object>
</interface>

View File

@ -0,0 +1,57 @@
/* Constraints/Builder
*
* GtkConstraintLayouts can be created in .ui files, and
* constraints can be set up at that time as well, as this
* example demonstrates.
*/
#include <glib/gi18n.h>
#include <gtk/gtk.h>
G_DECLARE_FINAL_TYPE (ConstraintsGrid, constraints_grid, CONSTRAINTS, GRID, GtkWidget)
struct _ConstraintsGrid
{
GtkWidget parent_instance;
};
G_DEFINE_TYPE (ConstraintsGrid, constraints_grid, GTK_TYPE_WIDGET)
static void
constraints_grid_init (ConstraintsGrid *grid)
{
}
static void
constraints_grid_class_init (ConstraintsGridClass *klass)
{
}
GtkWidget *
do_constraints4 (GtkWidget *do_widget)
{
static GtkWidget *window;
if (!window)
{
GtkBuilder *builder;
g_type_ensure (constraints_grid_get_type ());
builder = gtk_builder_new_from_resource ("/constraints4/constraints.ui");
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
g_object_unref (builder);
}
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

View File

@ -18,6 +18,9 @@
<file>demoimage.c</file>
<file>demoimage.h</file>
</gresource>
<gresource prefix="/constraints4">
<file>constraints.ui</file>
</gresource>
<gresource prefix="/css_accordion">
<file>css_accordion.css</file>
<file>reset.css</file>
@ -242,6 +245,7 @@
<file>constraints.c</file>
<file>constraints2.c</file>
<file>constraints3.c</file>
<file>constraints4.c</file>
<file>css_accordion.c</file>
<file>css_basics.c</file>
<file>css_blendmodes.c</file>

View File

@ -9,6 +9,7 @@ demos = files([
'constraints.c',
'constraints2.c',
'constraints3.c',
'constraints4.c',
'css_accordion.c',
'css_basics.c',
'css_blendmodes.c',