summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-05-13 02:02:48 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-05-13 02:02:48 +0000
commit72c37d566ca2c873b7c179491a7c65a8fe25176d (patch)
tree7ca198759d5756c61e2100e1b0061284d2cef230
parent01c0d5e04b14bc3935833b43d05e6c49a1853c4a (diff)
parent57dd88ee53ec5bcb708997b07d555003b8b6666f (diff)
downloadgtk+-72c37d566ca2c873b7c179491a7c65a8fe25176d.tar.gz
Merge branch 'matthiasc/for-main' into 'main'
css: Fix transition of font features See merge request GNOME/gtk!5957
-rw-r--r--gtk/gtkcsscornervalue.c53
-rw-r--r--gtk/gtkcssfontfeaturesvalue.c11
-rw-r--r--gtk/gtkcssinitialvalue.c2
-rw-r--r--gtk/gtkcssnumbervalue.c17
-rw-r--r--gtk/gtkcssshadowvalue.c8
-rw-r--r--gtk/gtkcssstylepropertyimpl.c13
-rw-r--r--gtk/gtkcsstransformvalue.c2
-rw-r--r--testsuite/css/parser/font-family.css4
-rw-r--r--testsuite/css/parser/font-family.ref.css4
-rw-r--r--testsuite/css/parser/font-features-invalid1.css3
-rw-r--r--testsuite/css/parser/font-features-invalid1.errors1
-rw-r--r--testsuite/css/parser/font-features-invalid1.ref.css0
-rw-r--r--testsuite/css/parser/font-features-invalid2.css3
-rw-r--r--testsuite/css/parser/font-features-invalid2.errors1
-rw-r--r--testsuite/css/parser/font-features-invalid2.ref.css0
-rw-r--r--testsuite/css/parser/font-features-invalid3.css3
-rw-r--r--testsuite/css/parser/font-features-invalid3.errors1
-rw-r--r--testsuite/css/parser/font-features-invalid3.ref.css0
-rw-r--r--testsuite/css/parser/font-features.css19
-rw-r--r--testsuite/css/parser/font-features.ref.css19
-rw-r--r--testsuite/css/parser/font-variant.css6
-rw-r--r--testsuite/css/parser/font-variant.ref.css6
-rw-r--r--testsuite/css/parser/font-weight-invalid.css3
-rw-r--r--testsuite/css/parser/font-weight-invalid.errors1
-rw-r--r--testsuite/css/parser/font-weight-invalid.ref.css0
-rw-r--r--testsuite/css/parser/font-weight-invalid1.css3
-rw-r--r--testsuite/css/parser/font-weight-invalid2.css3
-rw-r--r--testsuite/css/parser/font-weight-invalid2.errors1
-rw-r--r--testsuite/css/parser/font-weight-invalid2.ref.css0
-rw-r--r--testsuite/css/parser/meson.build76
-rw-r--r--testsuite/css/parser/transform-invalid1.css3
-rw-r--r--testsuite/css/parser/transform-invalid1.errors1
-rw-r--r--testsuite/css/parser/transform-invalid1.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid10.css3
-rw-r--r--testsuite/css/parser/transform-invalid10.errors1
-rw-r--r--testsuite/css/parser/transform-invalid10.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid11.css3
-rw-r--r--testsuite/css/parser/transform-invalid11.errors1
-rw-r--r--testsuite/css/parser/transform-invalid11.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid12.css3
-rw-r--r--testsuite/css/parser/transform-invalid12.errors1
-rw-r--r--testsuite/css/parser/transform-invalid12.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid13.css3
-rw-r--r--testsuite/css/parser/transform-invalid13.errors1
-rw-r--r--testsuite/css/parser/transform-invalid13.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid14.css3
-rw-r--r--testsuite/css/parser/transform-invalid14.errors1
-rw-r--r--testsuite/css/parser/transform-invalid14.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid15.css3
-rw-r--r--testsuite/css/parser/transform-invalid15.errors1
-rw-r--r--testsuite/css/parser/transform-invalid15.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid16.css3
-rw-r--r--testsuite/css/parser/transform-invalid16.errors1
-rw-r--r--testsuite/css/parser/transform-invalid16.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid17.css3
-rw-r--r--testsuite/css/parser/transform-invalid17.errors1
-rw-r--r--testsuite/css/parser/transform-invalid17.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid18.css3
-rw-r--r--testsuite/css/parser/transform-invalid18.errors1
-rw-r--r--testsuite/css/parser/transform-invalid18.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid19.css3
-rw-r--r--testsuite/css/parser/transform-invalid19.errors1
-rw-r--r--testsuite/css/parser/transform-invalid19.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid2.css3
-rw-r--r--testsuite/css/parser/transform-invalid2.errors1
-rw-r--r--testsuite/css/parser/transform-invalid2.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid3.css3
-rw-r--r--testsuite/css/parser/transform-invalid3.errors1
-rw-r--r--testsuite/css/parser/transform-invalid3.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid4.css3
-rw-r--r--testsuite/css/parser/transform-invalid4.errors1
-rw-r--r--testsuite/css/parser/transform-invalid4.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid5.css3
-rw-r--r--testsuite/css/parser/transform-invalid5.errors1
-rw-r--r--testsuite/css/parser/transform-invalid5.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid6.css3
-rw-r--r--testsuite/css/parser/transform-invalid6.errors1
-rw-r--r--testsuite/css/parser/transform-invalid6.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid7.css3
-rw-r--r--testsuite/css/parser/transform-invalid7.errors1
-rw-r--r--testsuite/css/parser/transform-invalid7.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid8.css3
-rw-r--r--testsuite/css/parser/transform-invalid8.errors1
-rw-r--r--testsuite/css/parser/transform-invalid8.ref.css0
-rw-r--r--testsuite/css/parser/transform-invalid9.css3
-rw-r--r--testsuite/css/parser/transform-invalid9.errors1
-rw-r--r--testsuite/css/parser/transform-invalid9.ref.css0
-rw-r--r--testsuite/css/parser/transform.css3
-rw-r--r--testsuite/css/parser/transform.ref.css3
-rw-r--r--testsuite/css/transition.c110
-rw-r--r--testsuite/gdk/encoding.c2
-rw-r--r--testsuite/gdk/glcontext.c3
-rw-r--r--testsuite/gtk/colorutils.c62
-rw-r--r--testsuite/gtk/meson.build1
-rw-r--r--testsuite/gtk/multiselection.c12
-rw-r--r--testsuite/gtk/singleselection.c11
-rw-r--r--testsuite/gtk/slicelistmodel.c4
-rwxr-xr-xtestsuite/tools/enumerate37
-rw-r--r--testsuite/tools/enumerate-data/widget-factory.expected255
-rw-r--r--testsuite/tools/enumerate-data/widget-factory.ui3782
-rw-r--r--testsuite/tools/enumerate-data/widget-factory2.expected255
-rw-r--r--testsuite/tools/enumerate-data/widget-factory2.ui3783
-rw-r--r--testsuite/tools/enumerate-data/widget-factory3.expected256
-rw-r--r--testsuite/tools/enumerate-data/widget-factory3.ui3783
-rw-r--r--testsuite/tools/meson.build2
-rwxr-xr-xtestsuite/tools/validate2
106 files changed, 12635 insertions, 70 deletions
diff --git a/gtk/gtkcsscornervalue.c b/gtk/gtkcsscornervalue.c
index 498f2505a8..0986d77eeb 100644
--- a/gtk/gtkcsscornervalue.c
+++ b/gtk/gtkcsscornervalue.c
@@ -88,7 +88,7 @@ gtk_css_value_corner_transition (GtkCssValue *start,
static void
gtk_css_value_corner_print (const GtkCssValue *corner,
- GString *string)
+ GString *string)
{
_gtk_css_value_print (corner->x, string);
if (!_gtk_css_value_equal (corner->x, corner->y))
@@ -109,16 +109,55 @@ static const GtkCssValueClass GTK_CSS_VALUE_CORNER = {
gtk_css_value_corner_print
};
+static GtkCssValue corner_singletons[] = {
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+ { &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
+};
+
+static inline void
+initialize_corner_singletons (void)
+{
+ static gboolean initialized = FALSE;
+
+ if (initialized)
+ return;
+
+ for (unsigned int i = 0; i < G_N_ELEMENTS (corner_singletons); i++)
+ {
+ corner_singletons[i].x = gtk_css_dimension_value_new (i, GTK_CSS_PX);
+ corner_singletons[i].y = gtk_css_value_ref (corner_singletons[i].x);
+ }
+
+ initialized = TRUE;
+}
+
GtkCssValue *
_gtk_css_corner_value_new (GtkCssValue *x,
GtkCssValue *y)
{
GtkCssValue *result;
- if (_gtk_css_value_equal (x, y))
+ if (x == y &&
+ gtk_css_number_value_get_dimension (x) == GTK_CSS_DIMENSION_LENGTH)
{
- _gtk_css_value_unref (y);
- return x;
+ initialize_corner_singletons ();
+
+ for (unsigned int i = 0; i < G_N_ELEMENTS (corner_singletons); i++)
+ {
+ if (corner_singletons[i].x == x)
+ {
+ gtk_css_value_unref (x);
+ gtk_css_value_unref (y);
+
+ return gtk_css_value_ref (&corner_singletons[i]);
+ }
+ }
}
result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_CORNER);
@@ -162,9 +201,6 @@ double
_gtk_css_corner_value_get_x (const GtkCssValue *corner,
double one_hundred_percent)
{
- if (corner->class != &GTK_CSS_VALUE_CORNER)
- return _gtk_css_number_value_get (corner, one_hundred_percent);
-
g_return_val_if_fail (corner != NULL, 0.0);
g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0);
@@ -175,9 +211,6 @@ double
_gtk_css_corner_value_get_y (const GtkCssValue *corner,
double one_hundred_percent)
{
- if (corner->class != &GTK_CSS_VALUE_CORNER)
- return _gtk_css_number_value_get (corner, one_hundred_percent);
-
g_return_val_if_fail (corner != NULL, 0.0);
g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0);
diff --git a/gtk/gtkcssfontfeaturesvalue.c b/gtk/gtkcssfontfeaturesvalue.c
index 323af6992d..9b761f4348 100644
--- a/gtk/gtkcssfontfeaturesvalue.c
+++ b/gtk/gtkcssfontfeaturesvalue.c
@@ -75,7 +75,8 @@ gtk_css_value_font_features_equal (const GtkCssValue *value1,
g_hash_table_iter_init (&iter, value1->features);
while (g_hash_table_iter_next (&iter, &name, &val1))
{
- val2 = g_hash_table_lookup (value2->features, name);
+ if (!g_hash_table_lookup_extended (value2->features, name, NULL, &val2))
+ return FALSE;
if (val1 != val2)
return FALSE;
@@ -106,11 +107,10 @@ gtk_css_value_font_features_transition (GtkCssValue *start,
g_hash_table_iter_init (&iter, start->features);
while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&start_val))
{
- end_val = g_hash_table_lookup (end->features, name);
- if (end_val == NULL)
+ if (!g_hash_table_lookup_extended (end->features, name, NULL, &end_val))
transition = start_val;
else
- transition = progress > 0.5 ? start_val : end_val;
+ transition = progress < 0.5 ? start_val : end_val;
gtk_css_font_features_value_add_feature (result, name, GPOINTER_TO_INT (transition));
}
@@ -118,8 +118,7 @@ gtk_css_value_font_features_transition (GtkCssValue *start,
g_hash_table_iter_init (&iter, end->features);
while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&end_val))
{
- start_val = g_hash_table_lookup (start->features, name);
- if (start_val != NULL)
+ if (g_hash_table_lookup_extended (end->features, name, NULL, &start_val))
continue;
gtk_css_font_features_value_add_feature (result, name, GPOINTER_TO_INT (end_val));
diff --git a/gtk/gtkcssinitialvalue.c b/gtk/gtkcssinitialvalue.c
index 381ec21e61..2ca5efe8b4 100644
--- a/gtk/gtkcssinitialvalue.c
+++ b/gtk/gtkcssinitialvalue.c
@@ -64,7 +64,7 @@ gtk_css_value_initial_compute (GtkCssValue *value,
case GTK_CSS_PROPERTY_FONT_FAMILY:
settings = gtk_style_provider_get_settings (provider);
if (settings && gtk_settings_get_font_family (settings) != NULL)
- return _gtk_css_string_value_new (gtk_settings_get_font_family (settings));
+ return _gtk_css_array_value_new (_gtk_css_string_value_new (gtk_settings_get_font_family (settings)));
break;
default:
diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c
index 3ab0e3e1cb..60b25fb90e 100644
--- a/gtk/gtkcssnumbervalue.c
+++ b/gtk/gtkcssnumbervalue.c
@@ -376,6 +376,9 @@ gtk_css_dimension_value_new (double value,
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 2 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 3 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 4 }} },
+ { &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 5 }} },
+ { &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 6 }} },
+ { &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 7 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 8 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 16 }} }, /* Icon size default */
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 32 }} },
@@ -414,16 +417,18 @@ gtk_css_dimension_value_new (double value,
value == 1 ||
value == 2 ||
value == 3 ||
- value == 4)
+ value == 4 ||
+ value == 5 ||
+ value == 6 ||
+ value == 7 ||
+ value == 8)
return _gtk_css_value_ref (&px_singletons[(int) value]);
- if (value == 8)
- return _gtk_css_value_ref (&px_singletons[5]);
if (value == 16)
- return _gtk_css_value_ref (&px_singletons[6]);
+ return _gtk_css_value_ref (&px_singletons[9]);
if (value == 32)
- return _gtk_css_value_ref (&px_singletons[7]);
+ return _gtk_css_value_ref (&px_singletons[10]);
if (value == 64)
- return _gtk_css_value_ref (&px_singletons[8]);
+ return _gtk_css_value_ref (&px_singletons[11]);
break;
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index 6cc52c6bc1..c906bda460 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -336,10 +336,10 @@ gtk_css_shadow_value_new_filter (const GtkCssValue *other)
ShadowValue value;
value.inset = FALSE;
- value.hoffset = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
- value.voffset = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
- value.radius = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
- value.spread = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ value.hoffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
+ value.voffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
+ value.radius = _gtk_css_number_value_new (0, GTK_CSS_PX);
+ value.spread = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.color = gtk_css_value_ref (other->shadows[0].color);
return gtk_css_shadow_value_new (&value, 1, TRUE);
diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c
index c06b31ddfb..f3176a203b 100644
--- a/gtk/gtkcssstylepropertyimpl.c
+++ b/gtk/gtkcssstylepropertyimpl.c
@@ -1095,25 +1095,29 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
- _gtk_css_number_value_new (0, GTK_CSS_PX));
+ _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+ _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-top-right-radius",
GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
- _gtk_css_number_value_new (0, GTK_CSS_PX));
+ _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+ _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-right-radius",
GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
- _gtk_css_number_value_new (0, GTK_CSS_PX));
+ _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+ _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-left-radius",
GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
- _gtk_css_number_value_new (0, GTK_CSS_PX));
+ _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+ _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("outline-style",
GTK_CSS_PROPERTY_OUTLINE_STYLE,
@@ -1133,7 +1137,6 @@ _gtk_css_style_property_init_properties (void)
GTK_CSS_AFFECTS_OUTLINE,
outline_parse,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
-
gtk_css_style_property_register ("background-clip",
GTK_CSS_PROPERTY_BACKGROUND_CLIP,
0,
diff --git a/gtk/gtkcsstransformvalue.c b/gtk/gtkcsstransformvalue.c
index 80ad89f278..baccd65800 100644
--- a/gtk/gtkcsstransformvalue.c
+++ b/gtk/gtkcsstransformvalue.c
@@ -142,7 +142,7 @@ gtk_css_transform_init_identity (GtkCssTransform *transform,
case GTK_CSS_TRANSFORM_ROTATE:
transform->rotate.x = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform->rotate.y = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
- transform->rotate.z = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
+ transform->rotate.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform->rotate.angle = _gtk_css_number_value_new (0, GTK_CSS_DEG);
break;
case GTK_CSS_TRANSFORM_SCALE:
diff --git a/testsuite/css/parser/font-family.css b/testsuite/css/parser/font-family.css
index 8b9b6c3b96..fbbc82b7c6 100644
--- a/testsuite/css/parser/font-family.css
+++ b/testsuite/css/parser/font-family.css
@@ -21,3 +21,7 @@ e {
f {
font-family: Macaroni, Spaghetti, Sans;
}
+
+g {
+ font-family: Macaroni al dente, Tomato sauce;
+}
diff --git a/testsuite/css/parser/font-family.ref.css b/testsuite/css/parser/font-family.ref.css
index 8ae4644460..92f559c67d 100644
--- a/testsuite/css/parser/font-family.ref.css
+++ b/testsuite/css/parser/font-family.ref.css
@@ -21,3 +21,7 @@ e {
f {
font-family: "Macaroni", "Spaghetti", "Sans";
}
+
+g {
+ font-family: "Macaroni al dente", "Tomato sauce";
+}
diff --git a/testsuite/css/parser/font-features-invalid1.css b/testsuite/css/parser/font-features-invalid1.css
new file mode 100644
index 0000000000..0d4e5d1f14
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid1.css
@@ -0,0 +1,3 @@
+* {
+ font-feature-settings: "";
+}
diff --git a/testsuite/css/parser/font-features-invalid1.errors b/testsuite/css/parser/font-features-invalid1.errors
new file mode 100644
index 0000000000..e4964c17e8
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid1.errors
@@ -0,0 +1 @@
+font-features-invalid1.css:2:26-28: error: GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE
diff --git a/testsuite/css/parser/font-features-invalid1.ref.css b/testsuite/css/parser/font-features-invalid1.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid1.ref.css
diff --git a/testsuite/css/parser/font-features-invalid2.css b/testsuite/css/parser/font-features-invalid2.css
new file mode 100644
index 0000000000..6c30e64022
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid2.css
@@ -0,0 +1,3 @@
+* {
+ font-feature-settings: "abc\A" 1;
+}
diff --git a/testsuite/css/parser/font-features-invalid2.errors b/testsuite/css/parser/font-features-invalid2.errors
new file mode 100644
index 0000000000..a9fb5b957b
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid2.errors
@@ -0,0 +1 @@
+font-features-invalid2.css:2:26-33: error: GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE
diff --git a/testsuite/css/parser/font-features-invalid2.ref.css b/testsuite/css/parser/font-features-invalid2.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid2.ref.css
diff --git a/testsuite/css/parser/font-features-invalid3.css b/testsuite/css/parser/font-features-invalid3.css
new file mode 100644
index 0000000000..c351521a67
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid3.css
@@ -0,0 +1,3 @@
+* {
+ font-feature-settings: dlig;
+}
diff --git a/testsuite/css/parser/font-features-invalid3.errors b/testsuite/css/parser/font-features-invalid3.errors
new file mode 100644
index 0000000000..9cbdb7a50c
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid3.errors
@@ -0,0 +1 @@
+font-features-invalid3.css:2:26-30: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/font-features-invalid3.ref.css b/testsuite/css/parser/font-features-invalid3.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/font-features-invalid3.ref.css
diff --git a/testsuite/css/parser/font-features.css b/testsuite/css/parser/font-features.css
new file mode 100644
index 0000000000..6391153ba2
--- /dev/null
+++ b/testsuite/css/parser/font-features.css
@@ -0,0 +1,19 @@
+a {
+ font-feature-settings: initial;
+}
+
+b {
+ font-feature-settings: inherit;
+}
+
+c {
+ font-feature-settings: unset;
+}
+
+e {
+ font-feature-settings: normal;
+}
+
+f {
+ font-feature-settings: "dlig", "c2sc" off, "swsh" 2;
+}
diff --git a/testsuite/css/parser/font-features.ref.css b/testsuite/css/parser/font-features.ref.css
new file mode 100644
index 0000000000..dc08453f2c
--- /dev/null
+++ b/testsuite/css/parser/font-features.ref.css
@@ -0,0 +1,19 @@
+a {
+ font-feature-settings: initial;
+}
+
+b {
+ font-feature-settings: inherit;
+}
+
+c {
+ font-feature-settings: unset;
+}
+
+e {
+ font-feature-settings: normal;
+}
+
+f {
+ font-feature-settings: "dlig" 1, "c2sc" 0, "swsh" 2;
+}
diff --git a/testsuite/css/parser/font-variant.css b/testsuite/css/parser/font-variant.css
index d37946b8a0..6cf3ad5bdd 100644
--- a/testsuite/css/parser/font-variant.css
+++ b/testsuite/css/parser/font-variant.css
@@ -17,3 +17,9 @@ d {
e {
font-variant: small-caps;
}
+
+f {
+ font-variant-ligatures: common-ligatures discretionary-ligatures;
+ font-variant-numeric: lining-nums tabular-nums diagonal-fractions;
+ font-variant-east-asian: simplified;
+}
diff --git a/testsuite/css/parser/font-variant.ref.css b/testsuite/css/parser/font-variant.ref.css
index de54b3a446..fa99911a68 100644
--- a/testsuite/css/parser/font-variant.ref.css
+++ b/testsuite/css/parser/font-variant.ref.css
@@ -42,3 +42,9 @@ e {
font-variant-numeric: initial;
font-variant-position: initial;
}
+
+f {
+ font-variant-east-asian: simplified;
+ font-variant-ligatures: common-ligatures discretionary-ligatures;
+ font-variant-numeric: lining-nums tabular-nums diagonal-fractions;
+}
diff --git a/testsuite/css/parser/font-weight-invalid.css b/testsuite/css/parser/font-weight-invalid.css
new file mode 100644
index 0000000000..3196fc1c3d
--- /dev/null
+++ b/testsuite/css/parser/font-weight-invalid.css
@@ -0,0 +1,3 @@
+a {
+ font-weight: 0;
+}
diff --git a/testsuite/css/parser/font-weight-invalid.errors b/testsuite/css/parser/font-weight-invalid.errors
new file mode 100644
index 0000000000..890ceeb398
--- /dev/null
+++ b/testsuite/css/parser/font-weight-invalid.errors
@@ -0,0 +1 @@
+font-weight-invalid.css:2:16-17: error: GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE
diff --git a/testsuite/css/parser/font-weight-invalid.ref.css b/testsuite/css/parser/font-weight-invalid.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/font-weight-invalid.ref.css
diff --git a/testsuite/css/parser/font-weight-invalid1.css b/testsuite/css/parser/font-weight-invalid1.css
new file mode 100644
index 0000000000..3196fc1c3d
--- /dev/null
+++ b/testsuite/css/parser/font-weight-invalid1.css
@@ -0,0 +1,3 @@
+a {
+ font-weight: 0;
+}
diff --git a/testsuite/css/parser/font-weight-invalid2.css b/testsuite/css/parser/font-weight-invalid2.css
new file mode 100644
index 0000000000..bead07afcd
--- /dev/null
+++ b/testsuite/css/parser/font-weight-invalid2.css
@@ -0,0 +1,3 @@
+a {
+ font-weight: 1001;
+}
diff --git a/testsuite/css/parser/font-weight-invalid2.errors b/testsuite/css/parser/font-weight-invalid2.errors
new file mode 100644
index 0000000000..b352ddd358
--- /dev/null
+++ b/testsuite/css/parser/font-weight-invalid2.errors
@@ -0,0 +1 @@
+font-weight-invalid2.css:2:16-20: error: GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE
diff --git a/testsuite/css/parser/font-weight-invalid2.ref.css b/testsuite/css/parser/font-weight-invalid2.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/font-weight-invalid2.ref.css
diff --git a/testsuite/css/parser/meson.build b/testsuite/css/parser/meson.build
index b419c29865..dab82dc00e 100644
--- a/testsuite/css/parser/meson.build
+++ b/testsuite/css/parser/meson.build
@@ -342,6 +342,17 @@ test_data = [
'filter-invalid9.ref.css',
'font-family.css',
'font-family.ref.css',
+ 'font-features.css',
+ 'font-features.ref.css',
+ 'font-features-invalid1.css',
+ 'font-features-invalid1.errors',
+ 'font-features-invalid1.ref.css',
+ 'font-features-invalid2.css',
+ 'font-features-invalid2.errors',
+ 'font-features-invalid2.ref.css',
+ 'font-features-invalid3.css',
+ 'font-features-invalid3.errors',
+ 'font-features-invalid3.ref.css',
'font-size.css',
'font-size.ref.css',
'font-stretch.css',
@@ -352,6 +363,12 @@ test_data = [
'font-variant.ref.css',
'font-weight.css',
'font-weight.ref.css',
+ 'font-weight-invalid.css',
+ 'font-weight-invalid.errors',
+ 'font-weight-invalid.ref.css',
+ 'font-weight-invalid2.css',
+ 'font-weight-invalid2.errors',
+ 'font-weight-invalid2.ref.css',
'freed-string-in-error-messages.css',
'freed-string-in-error-messages.errors',
'freed-string-in-error-messages.ref.css',
@@ -482,6 +499,65 @@ test_data = [
'text-shadow-invalid-but-worked-in-3.12.errors',
'text-shadow-invalid-but-worked-in-3.12.ref.css',
'text-shadow.ref.css',
+ 'transform.css',
+ 'transform.ref.css',
+ 'transform-invalid1.css',
+ 'transform-invalid1.errors',
+ 'transform-invalid1.ref.css',
+ 'transform-invalid2.css',
+ 'transform-invalid2.errors',
+ 'transform-invalid2.ref.css',
+ 'transform-invalid3.css',
+ 'transform-invalid3.errors',
+ 'transform-invalid3.ref.css',
+ 'transform-invalid4.css',
+ 'transform-invalid4.errors',
+ 'transform-invalid4.ref.css',
+ 'transform-invalid5.css',
+ 'transform-invalid5.errors',
+ 'transform-invalid5.ref.css',
+ 'transform-invalid6.css',
+ 'transform-invalid6.errors',
+ 'transform-invalid6.ref.css',
+ 'transform-invalid7.css',
+ 'transform-invalid7.errors',
+ 'transform-invalid7.ref.css',
+ 'transform-invalid8.css',
+ 'transform-invalid8.errors',
+ 'transform-invalid8.ref.css',
+ 'transform-invalid9.css',
+ 'transform-invalid9.errors',
+ 'transform-invalid9.ref.css',
+ 'transform-invalid10.css',
+ 'transform-invalid10.errors',
+ 'transform-invalid10.ref.css',
+ 'transform-invalid11.css',
+ 'transform-invalid11.errors',
+ 'transform-invalid11.ref.css',
+ 'transform-invalid12.css',
+ 'transform-invalid12.errors',
+ 'transform-invalid12.ref.css',
+ 'transform-invalid13.css',
+ 'transform-invalid13.errors',
+ 'transform-invalid13.ref.css',
+ 'transform-invalid14.css',
+ 'transform-invalid14.errors',
+ 'transform-invalid14.ref.css',
+ 'transform-invalid15.css',
+ 'transform-invalid15.errors',
+ 'transform-invalid15.ref.css',
+ 'transform-invalid16.css',
+ 'transform-invalid16.errors',
+ 'transform-invalid16.ref.css',
+ 'transform-invalid17.css',
+ 'transform-invalid17.errors',
+ 'transform-invalid17.ref.css',
+ 'transform-invalid18.css',
+ 'transform-invalid18.errors',
+ 'transform-invalid18.ref.css',
+ 'transform-invalid19.css',
+ 'transform-invalid19.errors',
+ 'transform-invalid19.ref.css',
'transition.css',
'transition-delay.css',
'transition-delay.ref.css',
diff --git a/testsuite/css/parser/transform-invalid1.css b/testsuite/css/parser/transform-invalid1.css
new file mode 100644
index 0000000000..b6932716dd
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid1.css
@@ -0,0 +1,3 @@
+* {
+ transform: matrix(1,2,3,4,5);
+}
diff --git a/testsuite/css/parser/transform-invalid1.errors b/testsuite/css/parser/transform-invalid1.errors
new file mode 100644
index 0000000000..526c38e26c
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid1.errors
@@ -0,0 +1 @@
+transform-invalid1.css:2:30-31: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid1.ref.css b/testsuite/css/parser/transform-invalid1.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid1.ref.css
diff --git a/testsuite/css/parser/transform-invalid10.css b/testsuite/css/parser/transform-invalid10.css
new file mode 100644
index 0000000000..fb83d2e4ca
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid10.css
@@ -0,0 +1,3 @@
+* {
+ transform: scaleY(45deg);
+}
diff --git a/testsuite/css/parser/transform-invalid10.errors b/testsuite/css/parser/transform-invalid10.errors
new file mode 100644
index 0000000000..d25c8b23ad
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid10.errors
@@ -0,0 +1 @@
+transform-invalid10.css:2:21-26: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid10.ref.css b/testsuite/css/parser/transform-invalid10.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid10.ref.css
diff --git a/testsuite/css/parser/transform-invalid11.css b/testsuite/css/parser/transform-invalid11.css
new file mode 100644
index 0000000000..a7d2b1d175
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid11.css
@@ -0,0 +1,3 @@
+* {
+ transform: scaleZ(45deg);
+}
diff --git a/testsuite/css/parser/transform-invalid11.errors b/testsuite/css/parser/transform-invalid11.errors
new file mode 100644
index 0000000000..28e7ade271
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid11.errors
@@ -0,0 +1 @@
+transform-invalid11.css:2:21-26: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid11.ref.css b/testsuite/css/parser/transform-invalid11.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid11.ref.css
diff --git a/testsuite/css/parser/transform-invalid12.css b/testsuite/css/parser/transform-invalid12.css
new file mode 100644
index 0000000000..5b9ed332b0
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid12.css
@@ -0,0 +1,3 @@
+* {
+ transform: skew(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid12.errors b/testsuite/css/parser/transform-invalid12.errors
new file mode 100644
index 0000000000..b31b6ae990
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid12.errors
@@ -0,0 +1 @@
+transform-invalid12.css:2:19-20: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid12.ref.css b/testsuite/css/parser/transform-invalid12.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid12.ref.css
diff --git a/testsuite/css/parser/transform-invalid13.css b/testsuite/css/parser/transform-invalid13.css
new file mode 100644
index 0000000000..17bffd9bfc
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid13.css
@@ -0,0 +1,3 @@
+* {
+ transform: skewX(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid13.errors b/testsuite/css/parser/transform-invalid13.errors
new file mode 100644
index 0000000000..1a20ea7e3d
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid13.errors
@@ -0,0 +1 @@
+transform-invalid13.css:2:20-21: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid13.ref.css b/testsuite/css/parser/transform-invalid13.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid13.ref.css
diff --git a/testsuite/css/parser/transform-invalid14.css b/testsuite/css/parser/transform-invalid14.css
new file mode 100644
index 0000000000..8b81554cfa
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid14.css
@@ -0,0 +1,3 @@
+* {
+ transform: skewY(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid14.errors b/testsuite/css/parser/transform-invalid14.errors
new file mode 100644
index 0000000000..5bb087184e
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid14.errors
@@ -0,0 +1 @@
+transform-invalid14.css:2:20-21: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid14.ref.css b/testsuite/css/parser/transform-invalid14.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid14.ref.css
diff --git a/testsuite/css/parser/transform-invalid15.css b/testsuite/css/parser/transform-invalid15.css
new file mode 100644
index 0000000000..ed24f436e9
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid15.css
@@ -0,0 +1,3 @@
+* {
+ transform: translate(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid15.errors b/testsuite/css/parser/transform-invalid15.errors
new file mode 100644
index 0000000000..7e35db1915
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid15.errors
@@ -0,0 +1 @@
+transform-invalid15.css:2:24-25: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid15.ref.css b/testsuite/css/parser/transform-invalid15.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid15.ref.css
diff --git a/testsuite/css/parser/transform-invalid16.css b/testsuite/css/parser/transform-invalid16.css
new file mode 100644
index 0000000000..cb34a969b0
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid16.css
@@ -0,0 +1,3 @@
+* {
+ transform: translate3d(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid16.errors b/testsuite/css/parser/transform-invalid16.errors
new file mode 100644
index 0000000000..c0a8c4d6a7
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid16.errors
@@ -0,0 +1 @@
+transform-invalid16.css:2:26-27: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid16.ref.css b/testsuite/css/parser/transform-invalid16.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid16.ref.css
diff --git a/testsuite/css/parser/transform-invalid17.css b/testsuite/css/parser/transform-invalid17.css
new file mode 100644
index 0000000000..1b1197ebe5
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid17.css
@@ -0,0 +1,3 @@
+* {
+ transform: translateX(1);
+}
diff --git a/testsuite/css/parser/transform-invalid17.errors b/testsuite/css/parser/transform-invalid17.errors
new file mode 100644
index 0000000000..2d1199aae4
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid17.errors
@@ -0,0 +1 @@
+transform-invalid17.css:2:25-26: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid17.ref.css b/testsuite/css/parser/transform-invalid17.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid17.ref.css
diff --git a/testsuite/css/parser/transform-invalid18.css b/testsuite/css/parser/transform-invalid18.css
new file mode 100644
index 0000000000..e1e544d1c4
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid18.css
@@ -0,0 +1,3 @@
+* {
+ transform: translateY(1);
+}
diff --git a/testsuite/css/parser/transform-invalid18.errors b/testsuite/css/parser/transform-invalid18.errors
new file mode 100644
index 0000000000..47ef1a8bff
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid18.errors
@@ -0,0 +1 @@
+transform-invalid18.css:2:25-26: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid18.ref.css b/testsuite/css/parser/transform-invalid18.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid18.ref.css
diff --git a/testsuite/css/parser/transform-invalid19.css b/testsuite/css/parser/transform-invalid19.css
new file mode 100644
index 0000000000..7fc50bd761
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid19.css
@@ -0,0 +1,3 @@
+* {
+ transform: translateZ(1);
+}
diff --git a/testsuite/css/parser/transform-invalid19.errors b/testsuite/css/parser/transform-invalid19.errors
new file mode 100644
index 0000000000..7bb3af8c29
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid19.errors
@@ -0,0 +1 @@
+transform-invalid19.css:2:25-26: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid19.ref.css b/testsuite/css/parser/transform-invalid19.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid19.ref.css
diff --git a/testsuite/css/parser/transform-invalid2.css b/testsuite/css/parser/transform-invalid2.css
new file mode 100644
index 0000000000..ebd1b3fc4a
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid2.css
@@ -0,0 +1,3 @@
+* {
+ transform: matrix3d(1,2,3,4,5,6,7,8,9);
+}
diff --git a/testsuite/css/parser/transform-invalid2.errors b/testsuite/css/parser/transform-invalid2.errors
new file mode 100644
index 0000000000..862c5a8f12
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid2.errors
@@ -0,0 +1 @@
+transform-invalid2.css:2:40-41: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid2.ref.css b/testsuite/css/parser/transform-invalid2.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid2.ref.css
diff --git a/testsuite/css/parser/transform-invalid3.css b/testsuite/css/parser/transform-invalid3.css
new file mode 100644
index 0000000000..2634ea05a6
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid3.css
@@ -0,0 +1,3 @@
+* {
+ transform: perspective(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid3.errors b/testsuite/css/parser/transform-invalid3.errors
new file mode 100644
index 0000000000..3fa087220b
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid3.errors
@@ -0,0 +1 @@
+transform-invalid3.css:2:26-27: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid3.ref.css b/testsuite/css/parser/transform-invalid3.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid3.ref.css
diff --git a/testsuite/css/parser/transform-invalid4.css b/testsuite/css/parser/transform-invalid4.css
new file mode 100644
index 0000000000..83fdb752f0
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid4.css
@@ -0,0 +1,3 @@
+* {
+ transform: rotateZ(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid4.errors b/testsuite/css/parser/transform-invalid4.errors
new file mode 100644
index 0000000000..7405f1d5f5
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid4.errors
@@ -0,0 +1 @@
+transform-invalid4.css:2:22-23: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid4.ref.css b/testsuite/css/parser/transform-invalid4.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid4.ref.css
diff --git a/testsuite/css/parser/transform-invalid5.css b/testsuite/css/parser/transform-invalid5.css
new file mode 100644
index 0000000000..9b1fd7a938
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid5.css
@@ -0,0 +1,3 @@
+* {
+ transform: rotateX(2);
+}
diff --git a/testsuite/css/parser/transform-invalid5.errors b/testsuite/css/parser/transform-invalid5.errors
new file mode 100644
index 0000000000..ba141cba4b
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid5.errors
@@ -0,0 +1 @@
+transform-invalid5.css:2:22-23: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid5.ref.css b/testsuite/css/parser/transform-invalid5.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid5.ref.css
diff --git a/testsuite/css/parser/transform-invalid6.css b/testsuite/css/parser/transform-invalid6.css
new file mode 100644
index 0000000000..843df4441f
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid6.css
@@ -0,0 +1,3 @@
+* {
+ transform: rotateY(2);
+}
diff --git a/testsuite/css/parser/transform-invalid6.errors b/testsuite/css/parser/transform-invalid6.errors
new file mode 100644
index 0000000000..bd27ab1885
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid6.errors
@@ -0,0 +1 @@
+transform-invalid6.css:2:22-23: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid6.ref.css b/testsuite/css/parser/transform-invalid6.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid6.ref.css
diff --git a/testsuite/css/parser/transform-invalid7.css b/testsuite/css/parser/transform-invalid7.css
new file mode 100644
index 0000000000..fd9a5199e1
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid7.css
@@ -0,0 +1,3 @@
+* {
+ transform: scale(1,2,3);
+}
diff --git a/testsuite/css/parser/transform-invalid7.errors b/testsuite/css/parser/transform-invalid7.errors
new file mode 100644
index 0000000000..456f23592a
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid7.errors
@@ -0,0 +1 @@
+transform-invalid7.css:2:23-24: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid7.ref.css b/testsuite/css/parser/transform-invalid7.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid7.ref.css
diff --git a/testsuite/css/parser/transform-invalid8.css b/testsuite/css/parser/transform-invalid8.css
new file mode 100644
index 0000000000..02bba2c490
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid8.css
@@ -0,0 +1,3 @@
+* {
+ transform: scale3d(1,2,3,4,5,6);
+}
diff --git a/testsuite/css/parser/transform-invalid8.errors b/testsuite/css/parser/transform-invalid8.errors
new file mode 100644
index 0000000000..457030ac5d
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid8.errors
@@ -0,0 +1 @@
+transform-invalid8.css:2:27-28: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid8.ref.css b/testsuite/css/parser/transform-invalid8.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid8.ref.css
diff --git a/testsuite/css/parser/transform-invalid9.css b/testsuite/css/parser/transform-invalid9.css
new file mode 100644
index 0000000000..dde4ad01c5
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid9.css
@@ -0,0 +1,3 @@
+* {
+ transform: scaleX(45deg);
+}
diff --git a/testsuite/css/parser/transform-invalid9.errors b/testsuite/css/parser/transform-invalid9.errors
new file mode 100644
index 0000000000..dd8e0ccf17
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid9.errors
@@ -0,0 +1 @@
+transform-invalid9.css:2:21-26: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/transform-invalid9.ref.css b/testsuite/css/parser/transform-invalid9.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/transform-invalid9.ref.css
diff --git a/testsuite/css/parser/transform.css b/testsuite/css/parser/transform.css
new file mode 100644
index 0000000000..8d3c3fef50
--- /dev/null
+++ b/testsuite/css/parser/transform.css
@@ -0,0 +1,3 @@
+* {
+ transform: rotateX(45deg) rotateY(50deg) scale(3,4) translate(1px,2px);
+}
diff --git a/testsuite/css/parser/transform.ref.css b/testsuite/css/parser/transform.ref.css
new file mode 100644
index 0000000000..d71323d5e3
--- /dev/null
+++ b/testsuite/css/parser/transform.ref.css
@@ -0,0 +1,3 @@
+* {
+ transform: rotate3d(1, 0, 0, 45deg) rotate3d(0, 1, 0, 50deg) scale(3, 4) translate3d(1px, 2px, 0);
+}
diff --git a/testsuite/css/transition.c b/testsuite/css/transition.c
index 991e1581a6..7f9249e537 100644
--- a/testsuite/css/transition.c
+++ b/testsuite/css/transition.c
@@ -26,20 +26,16 @@
#include "gtk/gtkcssnumbervalueprivate.h"
#include "gtk/gtkcssstylepropertyprivate.h"
#include "gtk/gtkcssstaticstyleprivate.h"
+#include "gtk/gtkcsspalettevalueprivate.h"
static gboolean
color_is_near (const GdkRGBA *color1,
const GdkRGBA *color2)
{
- if (fabs (color1->red - color2->red) > FLT_EPSILON)
- return FALSE;
- if (fabs (color1->green - color2->green) > FLT_EPSILON)
- return FALSE;
- if (fabs (color1->blue- color2->blue) > FLT_EPSILON)
- return FALSE;
- if (fabs (color1->alpha- color2->alpha) > FLT_EPSILON)
- return FALSE;
- return TRUE;
+ return (fabs (color1->red - color2->red) <= FLT_EPSILON &&
+ fabs (color1->green - color2->green) <= FLT_EPSILON &&
+ fabs (color1->blue - color2->blue) <= FLT_EPSILON &&
+ fabs (color1->alpha - color2->alpha) <= FLT_EPSILON);
}
static gboolean
@@ -53,28 +49,22 @@ value_is_near (int prop,
switch (prop)
{
case GTK_CSS_PROPERTY_COLOR:
- {
- const GdkRGBA *c1, *c2;
- gboolean res;
-
- c1 = gtk_css_color_value_get_rgba (value1);
- c2 = gtk_css_color_value_get_rgba (value2);
-
- res = color_is_near (c1, c2);
+ return color_is_near (gtk_css_color_value_get_rgba (value1),
+ gtk_css_color_value_get_rgba (value2));
+ break;
- return res;
- }
+ case GTK_CSS_PROPERTY_ICON_PALETTE:
+ return color_is_near (gtk_css_palette_value_get_color (value1, "error"),
+ gtk_css_palette_value_get_color (value2, "error")) &&
+ color_is_near (gtk_css_palette_value_get_color (value1, "warning"),
+ gtk_css_palette_value_get_color (value2, "warning")) &&
+ color_is_near (gtk_css_palette_value_get_color (value1, "test"),
+ gtk_css_palette_value_get_color (value2, "test"));
break;
case GTK_CSS_PROPERTY_FONT_SIZE:
- {
- double n1, n2;
-
- n1 = _gtk_css_number_value_get (value1, 100);
- n2 = _gtk_css_number_value_get (value2, 100);
-
- return fabs (n1 - n2) < FLT_EPSILON;
- }
+ return fabs (_gtk_css_number_value_get (value1, 100) -
+ _gtk_css_number_value_get (value2, 100)) < FLT_EPSILON;
break;
default:
@@ -97,7 +87,7 @@ assert_css_value (int prop,
{
char *r = result ? _gtk_css_value_to_string (result) : g_strdup ("(nil)");
char *e = expected ? _gtk_css_value_to_string (expected) : g_strdup ("(nil)");
- g_print ("Expected %s got %s\n", e, r);
+ g_print ("Expected %s\nGot %s\n", e, r);
g_free (r);
g_free (e);
@@ -126,13 +116,71 @@ static ValueTransitionTest tests[] = {
{ GTK_CSS_PROPERTY_FONT_FAMILY, "cantarell", "sans", 1, "sans" },
{ GTK_CSS_PROPERTY_FONT_FAMILY, "cantarell", "sans", 0.5, NULL },
{ GTK_CSS_PROPERTY_BACKGROUND_POSITION, "20px 10px", "40px", 0.5, "30px calc(5px + 25%)" },
+ { GTK_CSS_PROPERTY_BACKGROUND_POSITION, "left, right, 50% 80%",
+ "right, right, 100%",
+ 0.5,
+ "50%, 100%, 75% 65%" },
//TODO We don't currently transition border-image-width
//{ GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH, "10px 20px", "0px", 0.5, "5px 10px 0.5px 0.5px" },
{ GTK_CSS_PROPERTY_FILTER, "none", "blur(6px)", 0.5, "blur(3px)" },
{ GTK_CSS_PROPERTY_FILTER, "none", "blur(6px),contrast(0.6)", 0.5, "blur(3px),contrast(0.3)" },
{ GTK_CSS_PROPERTY_FILTER, "contrast(0.6)", "blur(6px)", 0.5, NULL},
+ { GTK_CSS_PROPERTY_FILTER, "blur(3px) brightness(60) contrast(0.6) grayscale(60) hue-rotate(calc(5deg + 5deg)) invert(10) opacity(60) saturate(60) sepia(10) drop-shadow(3em 10px 10px red)",
+ "blur(5px) brightness(80) contrast(0.8) grayscale(80) hue-rotate(30deg) invert(30) opacity(80) saturate(80) sepia(30) drop-shadow(5em 30px 30px red)",
+ 0.5,
+ "blur(4px) brightness(70) contrast(0.7) grayscale(70) hue-rotate(20deg) invert(20) opacity(70) saturate(70) sepia(20) drop-shadow(4em 20px 20px red)" },
+ { GTK_CSS_PROPERTY_FILTER, "brightness(100)",
+ "brightness(100) contrast(0.5) grayscale(20) hue-rotate(100deg) invert(100) opacity(0.5) saturate(0.5) sepia(0.5) blur(10px) drop-shadow(2px 2px 2px red)",
+ 0.5,
+ "brightness(100) contrast(0.75) grayscale(10) hue-rotate(50deg) invert(50) opacity(0.75) saturate(0.75) sepia(0.25) blur(5px) drop-shadow(1px 1px 1px red)" },
+ { GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS, "\"dlig\" 0, \"clig\" off, \"c2sc\" 1",
+ "\"dlig\" 1, \"clig\" 0",
+ 0.3,
+ "\"dlig\" 0, \"clig\" 0, \"c2sc\" 1" },
+ { GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS, "\"dlig\" 0, \"clig\" off, \"c2sc\" 1",
+ "\"dlig\" 1, \"clig\" 0",
+ 0.6,
+ "\"dlig\" 1, \"clig\" 0, \"c2sc\" 1" },
+ { GTK_CSS_PROPERTY_FONT_VARIATION_SETTINGS, "\"wght\" 100, \"wdth\" 75",
+ "\"wght\" 400, \"slnt\" 10",
+ 0.5,
+ "\"wght\" 250, \"wdth\" 75, \"slnt\" 10" },
+ { GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, "0", "10px", 0.5, "5px" },
+ { GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, "2px", "10px", 0.5, "6px" },
+ { GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, "2px 10px", "10px", 0.5, "6px 10px" },
+ { GTK_CSS_PROPERTY_TRANSFORM, "translate(1px,2px) rotate(10deg) scale(1,1) skew(10deg,10deg) skewX(10deg) skewY(10deg)",
+ "translate(3px,4px) rotate(50deg) scale(5,7) skew(20deg,30deg) skewX(20deg) skewY(30deg)",
+ 0.5,
+ "translate(2px,3px) rotate(30deg) scale(3,4) skew(15deg,20deg) skewX(15deg) skewY(20deg)" },
+ { GTK_CSS_PROPERTY_TRANSFORM, "translate(1px,2px)",
+ "translate(3px,4px) rotate(50deg) scale(5,7) skew(20deg,30deg) skewX(20deg) skewY(30deg)",
+ 0.5,
+ "translate(2px,3px) rotate(25deg) scale(3,4) skew(10deg,15deg) skewX(10deg) skewY(15deg)" },
+ { GTK_CSS_PROPERTY_TRANSFORM, "translate(2px,3px)", "none", 0.5, "translate(1px,1.5px)" },
+ { GTK_CSS_PROPERTY_LINE_HEIGHT, "1.0", "2.0", 0.5, "1.5" },
+ { GTK_CSS_PROPERTY_LINE_HEIGHT, "10px", "20px", 0.5, "15px" },
+ { GTK_CSS_PROPERTY_LINE_HEIGHT, "100%", "200%", 0.5, "150%" },
+ { GTK_CSS_PROPERTY_BACKGROUND_SIZE, "25% 100px", "75% 200px", 0.5, "50% 150px" },
+ { GTK_CSS_PROPERTY_BACKGROUND_SIZE, "cover", "cover", 0.3, "cover" },
+ { GTK_CSS_PROPERTY_BACKGROUND_SIZE, "contain", "contain", 0.6, "contain" },
+ { GTK_CSS_PROPERTY_BACKGROUND_SIZE, "cover", "contain", 0, "cover" },
+ { GTK_CSS_PROPERTY_BACKGROUND_SIZE, "cover", "contain", 1, "contain" },
+ { GTK_CSS_PROPERTY_ICON_PALETTE, "error rgb(200,0,0), warning rgb(100,100,0), test rgb(20,30,40)",
+ "warning rgb(200,0,0), error rgb(100,100,0), test rgb(30,40,50)",
+ 0.5,
+ "error rgb(150,50,0), test rgb(25,35,45), warning rgb(150,50,0)" },
};
+static void
+error_cb (GtkCssParser *parser,
+ const GtkCssLocation *start,
+ const GtkCssLocation *end,
+ const GError *error,
+ gpointer user_data)
+{
+ *(GError **)user_data = g_error_copy (error);
+}
+
static GtkCssValue *
value_from_string (GtkStyleProperty *prop,
const char *str)
@@ -140,10 +188,12 @@ value_from_string (GtkStyleProperty *prop,
GBytes *bytes;
GtkCssParser *parser;
GtkCssValue *value;
+ GError *error = NULL;
bytes = g_bytes_new_static (str, strlen (str));
- parser = gtk_css_parser_new_for_bytes (bytes, NULL, NULL, NULL, NULL);
+ parser = gtk_css_parser_new_for_bytes (bytes, NULL, error_cb, &error, NULL);
value = _gtk_style_property_parse_value (prop, parser);
+ g_assert_no_error (error);
gtk_css_parser_unref (parser);
g_bytes_unref (bytes);
@@ -175,7 +225,7 @@ test_transition (gconstpointer data)
computed1 = _gtk_css_value_compute (value1, test->prop, provider, style, NULL);
value2 = value_from_string (prop, test->value2);
- g_assert_nonnull (value1);
+ g_assert_nonnull (value2);
computed2 = _gtk_css_value_compute (value2, test->prop, provider, style, NULL);
if (test->value3)
diff --git a/testsuite/gdk/encoding.c b/testsuite/gdk/encoding.c
index 90edba19fd..6d830e0efc 100644
--- a/testsuite/gdk/encoding.c
+++ b/testsuite/gdk/encoding.c
@@ -31,7 +31,9 @@ test_to_text_list (void)
gdk_x11_free_text_list (list);
}
+ else
#endif
+ g_test_skip ("No X11 display");
}
int
diff --git a/testsuite/gdk/glcontext.c b/testsuite/gdk/glcontext.c
index a17113d288..2f825ac121 100644
--- a/testsuite/gdk/glcontext.c
+++ b/testsuite/gdk/glcontext.c
@@ -21,8 +21,7 @@ test_allowed_backends (gconstpointer data)
display = gdk_display_get_default ();
if (!gdk_display_prepare_gl (display, &error))
{
- g_test_message ("no GL support: %s", error->message);
- g_test_skip ("no GL support");
+ g_test_skip_printf ("no GL support: %s", error->message);
g_clear_error (&error);
return;
}
diff --git a/testsuite/gtk/colorutils.c b/testsuite/gtk/colorutils.c
new file mode 100644
index 0000000000..b4d42e2bb2
--- /dev/null
+++ b/testsuite/gtk/colorutils.c
@@ -0,0 +1,62 @@
+/* Copyright (C) 2023 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <gtk/gtk.h>
+#include <gtk/gtkcolorutils.h>
+
+struct {
+ float r, g, b;
+ float h, s, v;
+} tests[] = {
+ { 0, 0, 0, 0, 0, 0 },
+ { 1, 1, 1, 0, 0, 1 },
+ { 1, 0, 0, 0, 1, 1 },
+ { 1, 1, 0, 1.0 / 6.0, 1, 1 },
+ { 0, 1, 0, 2.0 / 6.0, 1, 1 },
+ { 0, 1, 1, 3.0 / 6.0, 1, 1 },
+ { 0, 0, 1, 4.0 / 6.0, 1, 1 },
+ { 1, 0, 1, 5.0 / 6.0, 1, 1 },
+};
+
+static void
+test_roundtrips (void)
+{
+ for (unsigned int i = 0; i < G_N_ELEMENTS (tests); i++)
+ {
+ float r, g, b;
+ float h, s, v;
+
+ g_print ("color %u\n", i);
+ gtk_hsv_to_rgb (tests[i].h, tests[i].s, tests[i].v, &r, &g, &b);
+ g_assert_cmpfloat_with_epsilon (r, tests[i].r, FLT_EPSILON);
+ g_assert_cmpfloat_with_epsilon (g, tests[i].g, FLT_EPSILON);
+ g_assert_cmpfloat_with_epsilon (b, tests[i].b, FLT_EPSILON);
+ gtk_rgb_to_hsv (tests[i].r, tests[i].g, tests[i].b, &h, &s, &v);
+ g_assert_cmpfloat_with_epsilon (h, tests[i].h, FLT_EPSILON);
+ g_assert_cmpfloat_with_epsilon (s, tests[i].s, FLT_EPSILON);
+ g_assert_cmpfloat_with_epsilon (v, tests[i].v, FLT_EPSILON);
+ }
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ gtk_test_init (&argc, &argv);
+
+ g_test_add_func ("/color/roundtrips", test_roundtrips);
+
+ return g_test_run();
+}
diff --git a/testsuite/gtk/meson.build b/testsuite/gtk/meson.build
index 7f28f213ec..0ee1403828 100644
--- a/testsuite/gtk/meson.build
+++ b/testsuite/gtk/meson.build
@@ -127,6 +127,7 @@ internal_tests = [
{ 'name': 'fnmatch' },
{ 'name': 'a11y' },
{ 'name': 'listitemmanager' },
+ { 'name': 'colorutils' },
]
is_debug = get_option('buildtype').startswith('debug')
diff --git a/testsuite/gtk/multiselection.c b/testsuite/gtk/multiselection.c
index 270cddd63e..f6fffcb814 100644
--- a/testsuite/gtk/multiselection.c
+++ b/testsuite/gtk/multiselection.c
@@ -296,7 +296,8 @@ test_create (void)
{
GtkSelectionModel *selection;
GListStore *store;
-
+ guint start, end;
+
store = new_store (1, 5, 2);
selection = new_model (store);
@@ -311,6 +312,12 @@ test_create (void)
assert_selection (selection, "");
assert_selection_changes (selection, "");
+ g_assert_true (g_list_model_get_item_type (G_LIST_MODEL (selection)) == G_TYPE_OBJECT);
+ g_assert_true (gtk_multi_selection_get_model (GTK_MULTI_SELECTION (selection)) == G_LIST_MODEL (store));
+ gtk_section_model_get_section (GTK_SECTION_MODEL (selection), 0, &start, &end);
+ g_assert_cmpint (start, ==, 0);
+ g_assert_cmpint (end, ==, G_MAXUINT);
+
g_object_unref (selection);
}
@@ -634,6 +641,9 @@ test_selection_filter (void)
assert_model (filter, "2 3 4");
assert_changes (filter, "");
+ g_assert_true (g_list_model_get_item_type (G_LIST_MODEL (filter)) == G_TYPE_OBJECT);
+ g_assert_true (gtk_selection_filter_model_get_model (filter) == selection);
+
g_object_unref (store);
g_object_unref (selection);
g_object_unref (filter);
diff --git a/testsuite/gtk/singleselection.c b/testsuite/gtk/singleselection.c
index 4465879d82..faad2d681d 100644
--- a/testsuite/gtk/singleselection.c
+++ b/testsuite/gtk/singleselection.c
@@ -287,7 +287,8 @@ test_create (void)
{
GtkSelectionModel *selection;
GListStore *store;
-
+ guint start, end;
+
if (glib_check_version (2, 59, 0) != NULL)
{
g_test_skip ("g_list_store_get_item() has overflow issues before GLIB 2.59.0");
@@ -310,6 +311,12 @@ test_create (void)
assert_selection (selection, "");
assert_selection_changes (selection, "");
+ g_assert_true (g_list_model_get_item_type (G_LIST_MODEL (selection)) == G_TYPE_OBJECT);
+ g_assert_true (gtk_single_selection_get_model (GTK_SINGLE_SELECTION (selection)) == G_LIST_MODEL (store));
+ gtk_section_model_get_section (GTK_SECTION_MODEL (selection), 0, &start, &end);
+ g_assert_cmpint (start, ==, 0);
+ g_assert_cmpint (end, ==, G_MAXUINT);
+
g_object_unref (selection);
}
@@ -701,7 +708,7 @@ test_set_model (void)
assert_selection (selection, "");
assert_selection_changes (selection, "");
- gtk_single_selection_set_selected (GTK_SINGLE_SELECTION (selection), 4);
+ g_object_set (selection, "selected", 4, NULL);
assert_selection (selection, "5");
assert_selection_changes (selection, "4:1");
diff --git a/testsuite/gtk/slicelistmodel.c b/testsuite/gtk/slicelistmodel.c
index 0c4cd7e78d..e86abd69e7 100644
--- a/testsuite/gtk/slicelistmodel.c
+++ b/testsuite/gtk/slicelistmodel.c
@@ -238,6 +238,8 @@ test_create (void)
assert_model (slice, "1 3 5");
assert_changes (slice, "");
+ g_assert_true (g_list_model_get_item_type (G_LIST_MODEL (slice)) == G_TYPE_OBJECT);
+
g_object_unref (slice);
}
@@ -287,6 +289,8 @@ test_set_slice (void)
assert_model (slice, "3 5 7");
assert_changes (slice, "+2*");
+ g_assert_cmpuint (gtk_slice_list_model_get_offset (slice), ==, 1);
+
g_object_unref (store);
g_object_unref (slice);
}
diff --git a/testsuite/tools/enumerate b/testsuite/tools/enumerate
new file mode 100755
index 0000000000..8abd9d67f1
--- /dev/null
+++ b/testsuite/tools/enumerate
@@ -0,0 +1,37 @@
+#! /bin/bash
+
+GTK_BUILDER_TOOL=${GTK_BUILDER_TOOL:-gtk4-builder-tool}
+TEST_DATA_DIR=${G_TEST_SRCDIR:-.}/enumerate-data
+TEST_RESULT_DIR=${TEST_RESULT_DIR:-/tmp}/enumerate
+
+mkdir -p "$TEST_RESULT_DIR"
+
+shopt -s nullglob
+TESTS=( "$TEST_DATA_DIR"/*.ui )
+
+echo "1..${#TESTS[*]}"
+
+I=1
+for t in ${TESTS[*]}; do
+ name=$(basename $t .ui)
+ expected="$TEST_DATA_DIR/$name.expected"
+ result="$TEST_RESULT_DIR/$name.out"
+ diff="$TEST_RESULT_DIR/$name.diff"
+ ref="$TEST_RESULT_DIR/$name.ref"
+
+ cd $TEST_DATA_DIR
+
+ $GTK_BUILDER_TOOL enumerate --callbacks $(basename $t) >$result
+
+ cd $OLDPWD
+
+ if diff -u "$expected" "$result" > "$diff"; then
+ echo "ok $I $name"
+ rm "$diff"
+ else
+ echo "not ok $I $name"
+ cp "$expected" "$ref"
+ fi
+
+ I=$((I+1))
+done
diff --git a/testsuite/tools/enumerate-data/widget-factory.expected b/testsuite/tools/enumerate-data/widget-factory.expected
new file mode 100644
index 0000000000..afe2ca16e4
--- /dev/null
+++ b/testsuite/tools/enumerate-data/widget-factory.expected
@@ -0,0 +1,255 @@
+Objects:
+info_dialog (GtkMessageDialog)
+separator4 (GtkSeparator)
+action_dialog_button (GtkButton)
+separator5 (GtkSeparator)
+label10 (GtkLabel)
+label11 (GtkLabel)
+label12 (GtkLabel)
+open_popover_button (GtkButton)
+label13 (GtkLabel)
+select_selection_dialog (GtkButton)
+label14 (GtkLabel)
+charlemodel (GtkTreeStore)
+cancel_info_dialog (GtkButton)
+label15 (GtkLabel)
+button224 (GtkButton)
+grid1 (GtkGrid)
+label16 (GtkLabel)
+closable_page_1 (GtkBox)
+headerbar1 (GtkHeaderBar)
+label17 (GtkLabel)
+closable_page_2 (GtkBox)
+label18 (GtkLabel)
+toolbar (GtkBox)
+notebook_info_popover2 (GtkPopover)
+iconview1 (GtkIconView)
+label19 (GtkLabel)
+lockbox (GtkBox)
+toolbutton1 (GtkButton)
+text3 (GtkTextView)
+notebook_info_popover3 (GtkPopover)
+levelbar1 (GtkLevelBar)
+toolbutton2 (GtkButton)
+record_button (GtkToggleButton)
+levelbar2 (GtkLevelBar)
+lockbutton (GtkLockButton)
+toolbutton3 (GtkButton)
+page2revealer (GtkRevealer)
+toolbutton4 (GtkButton)
+statusbar (GtkStatusbar)
+open_popover_textview (GtkTextView)
+progressbar1 (GtkProgressBar)
+extra_info_entry (GtkEntry)
+progressbar2 (GtkProgressBar)
+panedframe1 (GtkFrame)
+page2box (GtkBox)
+progressbar3 (GtkProgressBar)
+panedframe2 (GtkFrame)
+totem_like_osd (GtkBox)
+range_from_spin (GtkSpinButton)
+checkbutton1 (GtkCheckButton)
+progressbar5 (GtkProgressBar)
+checkbutton2 (GtkCheckButton)
+progressbar6 (GtkProgressBar)
+checkbutton3 (GtkCheckButton)
+cancel_action_dialog (GtkButton)
+osd_frame (GtkFrame)
+checkbutton4 (GtkCheckButton)
+cancel_selection_dialog (GtkButton)
+new_style_menu_model (GMenu)
+checkbutton5 (GtkCheckButton)
+checkbutton6 (GtkCheckButton)
+treeview1 (GtkTreeView)
+doit_info_dialog (GtkButton)
+increase_button (GtkButton)
+scale1 (GtkScale)
+box10 (GtkBox)
+page2note (GtkLabel)
+scale2 (GtkScale)
+box11 (GtkBox)
+action_dialog (GtkDialog)
+linkbutton1 (GtkLinkButton)
+scale3 (GtkScale)
+mode_switch (GtkSwitch)
+box12 (GtkBox)
+page1 (GtkBox)
+textview1 (GtkTextView)
+decrease_button (GtkButton)
+scale4 (GtkScale)
+box13 (GtkBox)
+page2 (GtkOverlay)
+scale5 (GtkScale)
+notebook1 (GtkNotebook)
+box14 (GtkBox)
+selection_dialog (GtkDialog)
+notebook2 (GtkNotebook)
+box15 (GtkBox)
+selection_dialog_button (GtkButton)
+notebook3 (GtkNotebook)
+mic-button (GtkScaleButton)
+box16 (GtkBox)
+details_entry (GtkEntry)
+notebook4 (GtkNotebook)
+box17 (GtkBox)
+range_to_spin (GtkSpinButton)
+box18 (GtkBox)
+label1 (GtkLabel)
+tags (GtkTextTagTable)
+fontbutton1 (GtkFontButton)
+grid_button (GtkToggleButton)
+spinner1 (GtkSpinner)
+open_popover (GtkPopover)
+box19 (GtkBox)
+label2 (GtkLabel)
+swo (GtkScrolledWindow)
+spinner2 (GtkSpinner)
+label3 (GtkLabel)
+spinner3 (GtkSpinner)
+label4 (GtkLabel)
+spinner4 (GtkSpinner)
+label5 (GtkLabel)
+radiobutton1 (GtkCheckButton)
+comboboxtext1 (GtkComboBoxText)
+label6 (GtkLabel)
+listboxrow1switch (GtkSwitch)
+radiobutton2 (GtkCheckButton)
+comboboxtext2 (GtkComboBoxText)
+label7 (GtkLabel)
+list_button (GtkToggleButton)
+radiobutton3 (GtkCheckButton)
+infobar (GtkInfoBar)
+listboxrow5button (GtkButton)
+label8 (GtkLabel)
+radiobutton4 (GtkCheckButton)
+more_details_entry (GtkEntry)
+label9 (GtkLabel)
+page2dismiss (GtkButton)
+pg_adjustment2 (GtkAdjustment)
+comboboxtext-entry2 (GtkEntry)
+radiobutton5 (GtkCheckButton)
+switcher (GtkStackSwitcher)
+radiobutton6 (GtkCheckButton)
+listboxrow1 (GtkListBoxRow)
+cut_copy_paste_filler (GtkLabel)
+listboxrow2 (GtkListBoxRow)
+reset_button (GtkButton)
+preference_dialog (GtkDialog)
+listboxrow3 (GtkListBoxRow)
+listboxrow4 (GtkListBoxRow)
+entry1 (GtkEntry)
+dinner_menu (GMenu)
+liststore1 (GtkListStore)
+listboxrow5 (GtkListBoxRow)
+entry2 (GtkEntry)
+selection_flowbox (GtkFlowBox)
+act_action_dialog (GtkButton)
+listboxrow6 (GtkListBoxRow)
+box_for_context (GtkBox)
+pastebutton (GtkButton)
+circular_button (GtkButton)
+textbuffer1 (GtkTextBuffer)
+textbuffer2 (GtkTextBuffer)
+level_scale (GtkScale)
+verticalspin1 (GtkSpinButton)
+treeviewcolumn1 (GtkTreeViewColumn)
+verticalspin2 (GtkSpinButton)
+treeviewcolumn2 (GtkTreeViewColumn)
+deletebutton (GtkButton)
+basement-indicators (GtkSizeGroup)
+cellrenderertext1 (GtkCellRendererText)
+cellrenderertext2 (GtkCellRendererText)
+treeviewcolumn3 (GtkTreeViewColumn)
+pg_adjustment (GtkAdjustment)
+lrmodel (GtkListStore)
+charletree (GtkTreeView)
+title_label (GtkLabel)
+cellrenderertext3 (GtkCellRendererText)
+munsell (GtkListBox)
+treeviewcolumn4 (GtkTreeViewColumn)
+notebook_info_popover (GtkPopover)
+cellrenderertext4 (GtkCellRendererText)
+stack (GtkStack)
+box20 (GtkBox)
+frame1 (GtkFrame)
+toplevel_stack (GtkStack)
+scrolledwindow1 (GtkScrolledWindow)
+filler2 (GtkBox)
+frame2 (GtkFrame)
+scrolledwindow2 (GtkScrolledWindow)
+box21 (GtkBox)
+frame3 (GtkFrame)
+scrolledwindow3 (GtkScrolledWindow)
+box23 (GtkBox)
+description_label (GtkLabel)
+frame4 (GtkFrame)
+box24 (GtkBox)
+imageo (GtkImage)
+tooltextview (GtkTextView)
+box25 (GtkBox)
+listboxrow3image (GtkImage)
+box26 (GtkBox)
+box27 (GtkBox)
+switch1 (GtkSwitch)
+cutbutton (GtkButton)
+box28 (GtkBox)
+stack_switcher (GtkStackSwitcher)
+switch2 (GtkSwitch)
+sidebar_stack (GtkStack)
+comboboxtext-entry (GtkEntry)
+new_style_context_menu_model (GMenu)
+combobox1 (GtkComboBox)
+treeview-selection (GtkTreeSelection)
+cellrendererpixbuf1 (GtkCellRendererPixbuf)
+searchbar (GtkSearchBar)
+adjustment1 (GtkAdjustment)
+combobox2 (GtkComboBox)
+new_style_menu (GtkPopover)
+tvo (GtkTextView)
+expander1 (GtkExpander)
+adjustment2 (GtkAdjustment)
+adjustment3 (GtkAdjustment)
+cellrenderertoggle1 (GtkCellRendererToggle)
+box1 (GtkBox)
+gear_menu_button (GtkMenuButton)
+iconviewcell (GtkCellRendererPixbuf)
+box2 (GtkBox)
+info_dialog_button (GtkButton)
+box3 (GtkBox)
+entry24 (GtkEntry)
+box4 (GtkBox)
+box5 (GtkBox)
+listbox (GtkListBox)
+page2frame1 (GtkFrame)
+box6 (GtkBox)
+page2frame2 (GtkFrame)
+box7 (GtkBox)
+iconsmodel (GtkListStore)
+colorbutton1 (GtkColorButton)
+box8 (GtkBox)
+box9 (GtkBox)
+window (GtkApplicationWindow)
+togglebutton1 (GtkToggleButton)
+gear_menu (GMenu)
+cchooser (GtkColorChooserWidget)
+page2frame (GtkFrame)
+togglebutton2 (GtkToggleButton)
+menu_bar_model (GMenu)
+main-indicators (GtkSizeGroup)
+togglebutton3 (GtkToggleButton)
+spinbutton1 (GtkSpinButton)
+togglebutton4 (GtkToggleButton)
+spinbutton2 (GtkSpinButton)
+page2reset (GtkButton)
+copybutton (GtkButton)
+open_popover_entry (GtkEntry)
+preference_dialog_button (GtkButton)
+print_button (GtkButton)
+separator1 (GtkSeparator)
+page_combo (GtkComboBoxText)
+open_menubutton (GtkMenuButton)
+separator2 (GtkSeparator)
+box223 (GtkBox)
+separator3 (GtkSeparator)
+name_completion (GtkEntryCompletion)
+actionbar1 (GtkActionBar)
diff --git a/testsuite/tools/enumerate-data/widget-factory.ui b/testsuite/tools/enumerate-data/widget-factory.ui
new file mode 100644
index 0000000000..cfa86b68fe
--- /dev/null
+++ b/testsuite/tools/enumerate-data/widget-factory.ui
@@ -0,0 +1,3782 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- this is a copy of widget-factory.ui with all custom widget classes
+ and callbacks removed, so it can be loaded by GtkBuilder
+ -->
+<interface>
+ <menu id="gear_menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Get Busy</attribute>
+ <attribute name="action">win.busy</attribute>
+ </item>
+ <submenu>
+ <attribute name="label" translatable="yes">Style</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Current</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">current</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Adwaita</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">adwaita</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Adwaita dark</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">adwaita-dark</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">High contrast</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">highcontrast</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">High contrast inverse</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">highcontrast-inverse</attribute>
+ </item>
+ </section>
+ </submenu>
+ <item>
+ <attribute name="label" translatable="yes">Slide Pages</attribute>
+ <attribute name="action">win.transition</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Inspector</attribute>
+ <attribute name="action">app.inspector</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
+ <attribute name="action">win.show-help-overlay</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_About Widget Factory</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="dinner_menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Steak</attribute>
+ <attribute name="action">app.main</attribute>
+ <attribute name="target">steak</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Pizza</attribute>
+ <attribute name="action">app.main</attribute>
+ <attribute name="target">pizza</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Wine</attribute>
+ <attribute name="action">app.wine</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Beer</attribute>
+ <attribute name="action">app.beer</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Water</attribute>
+ <attribute name="action">app.water</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Dessert</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Brownies</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">brownies</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Banana Sundae</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">sundae</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Lemon Bars</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">bars</attribute>
+ </item>
+ </section>
+ </submenu>
+ <section>
+ <attribute name="display-hint">horizontal-buttons</attribute>
+ <item>
+ <attribute name="label" translatable="yes">Cash</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">cash</attribute>
+ <attribute name="verb-icon">document-save-symbolic</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Credit Card</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">card</attribute>
+ <attribute name="verb-icon">document-send-symbolic</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Cheque</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">cheque</attribute>
+ <attribute name="verb-icon">document-save-as-symbolic</attribute>
+ </item>
+ </section>
+ </section>
+ </menu>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="lower">1</property>
+ <property name="value">50</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">1000</property>
+ <property name="lower">1</property>
+ <property name="value">50</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">4</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="pg_adjustment">
+ <property name="upper">99</property>
+ <property name="lower">1</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="pg_adjustment2">
+ <property name="upper">99</property>
+ <property name="lower">1</property>
+ <property name="value">4</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <column type="gboolean"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gboolean"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">True</col>
+ <col id="1">emblem-default-symbolic</col>
+ <col id="2" translatable="yes">Andrea</col>
+ <col id="3" translatable="yes">Cimi</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">False</col>
+ <col id="1">emblem-important-symbolic</col>
+ <col id="2" translatable="yes">Otto</col>
+ <col id="3" translatable="yes">chaotic</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">True</col>
+ <col id="1">weather-clear-night-symbolic</col>
+ <col id="2" translatable="yes">Orville</col>
+ <col id="3" translatable="yes">Redenbacher</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">True</col>
+ <col id="1">face-monkey-symbolic</col>
+ <col id="2" translatable="yes">Benjamin</col>
+ <col id="3" translatable="yes">Company</col>
+ <col id="4">True</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkEntryCompletion" id="name_completion">
+ <property name="model">liststore1</property>
+ <property name="text-column">2</property>
+ <property name="inline-completion">1</property>
+ <property name="popup-single-match">0</property>
+ <property name="inline-selection">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ <object class="GtkListStore" id="lrmodel">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">Left</col>
+ </row>
+ <row>
+ <col id="0">Middle</col>
+ </row>
+ <row>
+ <col id="0">Right</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkTextTagTable" id="tags">
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">bold</property>
+ <property name="weight">800</property>
+ </object>
+ </child>
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">italic</property>
+ <property name="style">italic</property>
+ </object>
+ </child>
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">underline</property>
+ <property name="underline">single</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkTextBuffer" id="textbuffer1">
+ <property name="tag-table">tags</property>
+ <property name="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+Nullam fringilla, est ut feugiat ultrices, elit lacus ultricies nibh, id commodo tortor nisi id elit.
+Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
+Morbi vel elit erat. Maecenas dignissim, dui et pharetra rutrum, tellus lectus rutrum mi, a convallis libero nisi quis tellus.
+Nulla facilisi. Nullam eleifend lobortis nisl, in porttitor tellus malesuada vitae.
+Aenean lacus tellus, pellentesque quis molestie quis, fringilla in arcu.
+Duis elementum, tellus sed tristique semper, metus metus accumsan augue, et porttitor augue orci a libero.
+Ut sed justo ac felis placerat laoreet sed id sem. Proin mattis tincidunt odio vitae tristique.
+Morbi massa libero, congue vitae scelerisque vel, ultricies vel nisl.
+Vestibulum in tortor diam, quis aliquet quam. Praesent ut justo neque, tempus rutrum est.
+Duis eu lectus quam. Vivamus eget metus a mauris molestie venenatis pulvinar eleifend nisi.
+Nulla facilisi. Pellentesque at dolor sit amet purus dapibus pulvinar molestie quis neque.
+Suspendisse feugiat quam quis dolor accumsan cursus.</property>
+ </object>
+ <object class="GtkTextBuffer" id="textbuffer2">
+ <property name="text">* Translation updates:
+ Aragonese
+ Assamese
+ Basque
+ Brazilian Portuguese
+ Dutch
+ German
+ Hebrew
+ Hungarian
+ Polish
+ Portuguese
+ Serbian
+ Slovenian
+ Spanish
+ Uyghur</property>
+ </object>
+ <object class="GtkListStore" id="iconsmodel">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">audio-headphones-symbolic</col>
+ </row>
+ <row>
+ <col id="0">audio-speakers-symbolic</col>
+ </row>
+ <row>
+ <col id="0">audio-input-microphone-symbolic</col>
+ </row>
+ <row>
+ <col id="0">bookmark-new-symbolic</col>
+ </row>
+ <row>
+ <col id="0">call-start-symbolic</col>
+ </row>
+ <row>
+ <col id="0">call-stop-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-photo-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-video-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-web-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-new-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-open-recent-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-open-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-harddisk-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-multidisk-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-optical-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-clear-all-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-copy-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-cut-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-delete-symbolic</col>
+ </row>
+ <row>
+ <col id="0">find-location-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-indent-less-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-indent-more-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-left-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-center-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-right-symbolic</col>
+ </row>
+ <row>
+ <col id="0">network-wired-symbolic</col>
+ </row>
+ <row>
+ <col id="0">network-wireless-symbolic</col>
+ </row>
+ <row>
+ <col id="0">phone-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-image-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-link-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-object-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-continuous-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-dual-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-fullscreen-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-grid-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-list-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-paged-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-clear-night-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-few-clouds-night-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-fog-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-overcast-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-severe-alert-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-showers-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-snow-symbolic</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkTreeStore" id="charlemodel">
+ <columns>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gboolean"/>
+ </columns>
+ </object>
+ <object class="GtkApplicationWindow" id="window">
+ <property name="title">GTK Widget Factory</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="headerbar1">
+ <child type="title">
+ <object class="GtkStackSwitcher" id="stack_switcher">
+ <property name="stack">toplevel_stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gear_menu_button">
+ <property name="valign">center</property>
+ <property name="menu-model">gear_menu</property>
+ <property name="icon-name">open-menu-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <child>
+ <object class="GtkStack" id="toplevel_stack">
+ <property name="transition-duration">1000</property>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page1</property>
+ <property name="title" translatable="yes">Page 1</property>
+ <property name="child">
+ <object class="GtkBox" id="page1">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox" id="box2">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox" id="box3">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkComboBoxText" id="comboboxtext1">
+ <property name="has-entry">1</property>
+ <child internal-child="entry">
+ <object class="GtkEntry" id="comboboxtext-entry">
+ <property name="text" translatable="yes">comboboxentry</property>
+ </object>
+ </child>
+ <items>
+ <item>Donald Duck</item>
+ <item>Mickey Mouse</item>
+ <item>Jet McQuack</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="comboboxtext2">
+ <property name="sensitive">0</property>
+ <property name="has-entry">1</property>
+ <child internal-child="entry">
+ <object class="GtkEntry" id="comboboxtext-entry2">
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">comboboxentry</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry1">
+ <property name="enable-emoji-completion">1</property>
+ <property name="invisible_char">•</property>
+ <property name="placeholder-text" translatable="yes">Click icon to change mode</property>
+ <property name="secondary-icon-name">view-refresh-symbolic</property>
+ <property name="secondary-icon-tooltip-text">Change mode</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry2">
+ <property name="sensitive">0</property>
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">entry</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box223">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkEntry" id="entry24">
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">entry</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button224">
+ <property name="icon-name">window-close-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="hexpand">0</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">0</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">1</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">2</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box18">
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="label" translatable="yes">label</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="sensitive">0</property>
+ <property name="label" translatable="yes">label</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton1">
+ <property name="width-chars">2</property>
+ <property name="max-width-chars">2</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton2">
+ <property name="sensitive">0</property>
+ <property name="width-chars">2</property>
+ <property name="max-width-chars">2</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="row-homogeneous">1</property>
+ <property name="column-spacing">18</property>
+ <property name="row-spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton1">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton2">
+ <property name="label" translatable="yes">checkbutton</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton3">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="inconsistent">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton4">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <property name="active">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton5">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton6">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <property name="inconsistent">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton1">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="active">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton2">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="group">radiobutton1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton3">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="inconsistent">1</property>
+ <property name="group">radiobutton1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton4">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton5">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <property name="group">radiobutton3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton6">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <property name="inconsistent">1</property>
+ <property name="group">radiobutton3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">5</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner1">
+ <property name="spinning">1</property>
+ <layout>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner2">
+ <layout>
+ <property name="column">2</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner3">
+ <property name="spinning">1</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner4">
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator1">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box19">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton1">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="receives-default">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton2">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="sensitive">0</property>
+ <property name="receives-default">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton3">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="receives-default">1</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton4">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="sensitive">0</property>
+ <property name="receives-default">1</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox1">
+ <property name="model">liststore1</property>
+ <property name="active">0</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox2">
+ <property name="sensitive">0</property>
+ <property name="model">liststore1</property>
+ <property name="active">1</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext2"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="fontbutton1">
+ <property name="receives-default">1</property>
+ <property name="level">family|size|features|variations</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="colorbutton1">
+ <property name="receives-default">1</property>
+ <property name="rgba">#31316867a09f</property>
+ <property name="use-alpha">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="linkbutton1">
+ <property name="label" translatable="yes">link button</property>
+ <property name="receives-default">1</property>
+ <property name="has-tooltip">1</property>
+ <property name="has-frame">0</property>
+ <property name="uri">http://www.gtk.org</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="switch1">
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="switch2">
+ <property name="sensitive">0</property>
+ <property name="halign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator2">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box20">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkBox" id="box21">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar1">
+ <property name="fraction">0.5</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar2">
+ <property name="fraction">0.5</property>
+ <property name="inverted">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar3">
+ <property name="fraction">0.5</property>
+ <property name="show-text">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLevelBar" id="levelbar1">
+ <property name="value">0.6</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLevelBar" id="levelbar2">
+ <property name="max-value">5</property>
+ <property name="value">2</property>
+ <property name="mode">1</property>
+ <offsets>
+ <offset name="low" value="1"/>
+ <offset name="high" value="4"/>
+ <offset name="full" value="5"/>
+ </offsets>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box27">
+ <child>
+ <object class="GtkBox" id="box24">
+ <property name="hexpand">1</property>
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkScale" id="scale1">
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="draw-value">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale2">
+ <property name="sensitive">0</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="draw-value">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale5">
+ <property name="draw-value">0</property>
+ <property name="has-origin">0</property>
+ <property name="round-digits">0</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="restrict-to-fill-level">0</property>
+ <marks>
+ <mark value="0" position="bottom"></mark>
+ <mark value="1" position="bottom"></mark>
+ <mark value="2" position="bottom"></mark>
+ <mark value="3" position="bottom"></mark>
+ <mark value="4" position="bottom"></mark>
+ </marks>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box25">
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkBox" id="box28">
+ <property name="vexpand">1</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar5">
+ <property name="orientation">vertical</property>
+ <property name="fraction">0.5</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar6">
+ <property name="orientation">vertical</property>
+ <property name="fraction">0.5</property>
+ <property name="inverted">1</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box23">
+ <property name="vexpand">1</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkScale" id="scale3">
+ <property name="height-request">100</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="digits">1</property>
+ <property name="draw-value">1</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale4">
+ <property name="height-request">100</property>
+ <property name="sensitive">0</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="digits">1</property>
+ <property name="draw-value">1</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator3">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box26">
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">1</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <style>
+ <class name="border-inset"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="label" translatable="yes">&lt;b&gt;Inset&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <style>
+ <class name="border-outset"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="label" translatable="yes">&lt;b&gt;Outset&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <style>
+ <class name="border-groove"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label17">
+ <property name="label" translatable="yes">&lt;b&gt;Groove, Groove, Groove&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <style>
+ <class name="border-ridge"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label18">
+ <property name="label" translatable="yes">&lt;b&gt;Ridge&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator4">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box4">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="width-request">150</property>
+ <property name="vscrollbar-policy">always</property>
+ <property name="has-frame">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTreeView" id="treeview1">
+ <property name="model">liststore1</property>
+ <property name="headers-clickable">0</property>
+ <property name="search-column">0</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn3">
+ <property name="title" translatable="yes">Cool</property>
+ <child>
+ <object class="GtkCellRendererToggle" id="cellrenderertoggle1"/>
+ <attributes>
+ <attribute name="active">0</attribute>
+ <attribute name="radio">4</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn4">
+ <property name="title" translatable="yes">Icon</property>
+ <property name="reorderable">1</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
+ <attributes>
+ <attribute name="icon_name">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <property name="title" translatable="yes">Name</property>
+ <property name="resizable">1</property>
+ <property name="reorderable">1</property>
+ <property name="sort-indicator">1</property>
+ <property name="sort-column-id">2</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext3">
+ <property name="ellipsize">end</property>
+ </object>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+ <property name="title" translatable="yes">Nick</property>
+ <property name="resizable">1</property>
+ <property name="reorderable">1</property>
+ <property name="sort-indicator">1</property>
+ <property name="sort-column-id">3</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext4">
+ <property name="ellipsize">end</property>
+ </object>
+ <attributes>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="has-frame">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="textview1">
+ <property name="buffer">textbuffer1</property>
+ <property name="wrap-mode">2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator5"/>
+ </child>
+ <child>
+ <object class="GtkBox" id="box5">
+ <property name="spacing">10</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box6">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label5">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box7">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label6">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box8">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label7">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook2">
+ <property name="tab-pos">right</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box9">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label8">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box10">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label9">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box11">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label10">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook3">
+ <property name="tab-pos">bottom</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box12">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label11">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box13">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label12">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box14">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label13">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook4">
+ <property name="tab-pos">left</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box15">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label14">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box16">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label15">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box17">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label16">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page2</property>
+ <property name="title" translatable="yes">Page 2</property>
+ <property name="child">
+ <object class="GtkOverlay" id="page2">
+ <child type="overlay">
+ <object class="GtkRevealer" id="page2revealer">
+ <property name="transition-type">swing-down</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkFrame" id="page2frame">
+ <style>
+ <class name="app-notification"/>
+ </style>
+ <child>
+ <object class="GtkBox" id="page2box">
+ <property name="spacing">20</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <child>
+ <object class="GtkLabel" id="page2note">
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label">NEWS!</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="page2reset">
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Reset</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="page2dismiss">
+ <property name="focus-on-click">0</property>
+ <property name="has-frame">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkSpinButton" id="verticalspin1">
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="verticalspin2">
+ <property name="sensitive">0</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid">
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">6</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkVolumeButton">
+ <property name="orientation">vertical</property>
+ <property name="valign">center</property>
+ <property name="value">.5</property>
+ <property name="halign">center</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScaleButton" id="mic-button">
+ <property name="has-tooltip">1</property>
+ <property name="icons">microphone-sensitivity-muted-symbolic
+microphone-sensitivity-high-symbolic
+microphone-sensitivity-low-symbolic
+microphone-sensitivity-medium-symbolic</property>
+ <property name="valign">center</property>
+ <property name="value">.5</property>
+ <property name="halign">center</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkFrame" id="page2frame1">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">1000</property>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page1</property>
+ <property name="icon-name">preferences-desktop-locale-symbolic</property>
+ <property name="title">News</property>
+ <property name="child">
+ <object class="GtkScrolledWindow" id="swo">
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="GtkTextView" id="tvo">
+ <property name="buffer">textbuffer2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page2</property>
+ <property name="icon-name">folder-pictures-symbolic</property>
+ <property name="title">Logo</property>
+ <property name="child">
+ <object class="GtkImage" id="imageo">
+ <property name="icon-name">org.gtk.WidgetFactory4</property>
+ <property name="pixel-size">256</property>
+ <style>
+ <class name="icon-dropshadow"/>
+ </style>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkActionBar" id="actionbar1">
+ <child type="center">
+ <object class="GtkStackSwitcher" id="switcher">
+ <property name="stack">stack</property>
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton">
+ <property name="menu-model">dinner_menu</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="has-frame">1</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="min-content-height">200</property>
+ <property name="hexpand">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox">
+ <property name="selection-mode">none</property>
+ <property name="show-separators">1</property>
+ <child type="placeholder">
+ <object class="GtkLabel">
+ <property name="label">No rows found</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow1">
+ <property name="activatable">0</property>
+ <property name="selectable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 1</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="listboxrow1switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow2">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 2</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="draw-value">0</property>
+ <property name="width-request">150</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow3">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 3</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="listboxrow3image">
+ <property name="icon-name">object-select-symbolic</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="opacity">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow4">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 4</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="adjustment">adjustment1</property>
+ <property name="hexpand">1</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow5">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 5</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="listboxrow5button">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="icon-name">appointment-soon-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow6">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 6</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkFrame" id="page2frame2">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkPopoverMenuBar">
+ <property name="menu-model">menu_bar_model</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="toolbar">
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">New</property>
+ <property name="icon-name">document-new</property>
+ <property name="tooltip-text" translatable="yes">Create a new document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Save</property>
+ <property name="icon-name">document-save</property>
+ <property name="tooltip-text" translatable="yes">Save the current document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Search</property>
+ <property name="icon-name">edit-find</property>
+ <property name="action-name">win.search</property>
+ <property name="tooltip-text" translatable="yes">Search for it</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="sensitive">0</property>
+ <property name="label" translatable="yes">Insert</property>
+ <property name="icon-name">insert-image</property>
+ <property name="tooltip-text" translatable="yes">Insert something</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSearchBar" id="searchbar">
+ <child>
+ <object class="GtkSearchEntry"/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkInfoBar" id="infobar">
+ <property name="visible">0</property>
+ <property name="show-close-button">1</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label">You wanted to delete something.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="text3">
+ <property name="visible">True</property>
+ <property name="buffer">textbuffer1</property>
+ <property name="wrap-mode">2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="statusbar"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="panedframe1">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkPaned">
+ <style>
+ <class name="view"/>
+ </style>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Left</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Right</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="panedframe2">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkPaned">
+ <property name="orientation">vertical</property>
+ <style>
+ <class name="view"/>
+ </style>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Top</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Bottom</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="filler2">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkCalendar">
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkExpander" id="expander1">
+ <property name="expanded">1</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="has-frame">1</property>
+ <property name="margin-top">6</property>
+ <property name="height-request">226</property>
+ <child>
+ <object class="GtkIconView" id="iconview1">
+ <property name="selection-mode">multiple</property>
+ <property name="model">iconsmodel</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="iconviewcell"/>
+ <attributes>
+ <attribute name="icon-name">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="decrease_button">
+ <property name="icon-name">zoom-out-symbolic</property>
+ <property name="tooltip-text">Normal icons</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="increase_button">
+ <property name="icon-name">zoom-in-symbolic</property>
+ <property name="tooltip-text">Large icons</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="reset_button">
+ <property name="icon-name">zoom-original-symbolic</property>
+ <property name="tooltip-text">Inherited icon size</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label19">
+ <property name="label" translatable="yes">Expander</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="info_dialog_button">
+ <property name="label" translatable="yes">_Inform</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="action_dialog_button">
+ <property name="label" translatable="yes">_Act</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="preference_dialog_button">
+ <property name="label" translatable="yes">_Configure</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="selection_dialog_button">
+ <property name="label" translatable="yes">_Select</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page3</property>
+ <property name="title" translatable="yes">Page 3</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar-policy">never</property>
+ <property name="vscrollbar-policy">always</property>
+ <property name="height-request">300</property>
+ <property name="has-frame">1</property>
+ <child>
+ <object class="GtkTreeView" id="charletree">
+ <property name="enable-grid-lines">vertical</property>
+ <property name="enable-tree-lines">1</property>
+ <property name="rubber-banding">1</property>
+ <property name="model">charlemodel</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection">
+ <property name="mode">multiple</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Name</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Birth</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Death</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="selectable">1</property>
+ <property name="halign">start</property>
+ <property name="use-markup">1</property>
+ <property name="label" translatable="yes">&lt;small&gt;Data source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Charlemagne#Ancestry&quot;&gt;Wikipedia&lt;/a&gt;&lt;/small&gt;</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar-policy">never</property>
+ <property name="vexpand">1</property>
+ <property name="has-frame">1</property>
+ <child>
+ <object class="GtkListBox" id="munsell">
+ <property name="selection-mode">multiple</property>
+ <property name="activate-on-single-click">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox" id="lockbox">
+ <property name="hexpand">1</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkMenuButton" id="open_menubutton">
+ <property name="halign">center</property>
+ <property name="popover">open_popover</property>
+ <property name="label">Open</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="record_button">
+ <property name="halign">center</property>
+ <style>
+ <class name="text-button"/>
+ <class name="image-button"/>
+ <class name="destructive-action"/>
+ </style>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkImage">
+ <property name="valign">baseline</property>
+ <property name="icon-name">media-record-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="valign">baseline</property>
+ <property name="label">Record</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkToggleButton" id="grid_button">
+ <property name="active">1</property>
+ <property name="icon-name">view-grid-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="list_button">
+ <property name="active">1</property>
+ <property name="group">grid_button</property>
+ <property name="icon-name">view-list-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="circular_button">
+ <property name="icon-name">emblem-system-symbolic</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLockButton" id="lockbutton"/>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="icon-name">view-more-symbolic</property>
+ <property name="popover">new_style_menu</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkStackSidebar">
+ <property name="stack">sidebar_stack</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStack" id="sidebar_stack">
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">id</property>
+ <property name="title">Identity</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="spacing">10</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">First Name</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Last Name</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">bd</property>
+ <property name="title">Birthdate</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="spacing">10</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkComboBoxText">
+ <property name="active">9</property>
+ <items>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9</item>
+ <item>10</item>
+ <item>11</item>
+ <item>12</item>
+ <item>13</item>
+ <item>14</item>
+ <item>15</item>
+ <item>16</item>
+ <item>17</item>
+ <item>18</item>
+ <item>19</item>
+ <item>20</item>
+ <item>21</item>
+ <item>22</item>
+ <item>23</item>
+ <item>24</item>
+ <item>25</item>
+ <item>26</item>
+ <item>27</item>
+ <item>28</item>
+ <item>29</item>
+ <item>30</item>
+ <item>31</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText">
+ <property name="active">9</property>
+ <items>
+ <item>January</item>
+ <item>February</item>
+ <item>March</item>
+ <item>April</item>
+ <item>May</item>
+ <item>June</item>
+ <item>July</item>
+ <item>August</item>
+ <item>September</item>
+ <item>October</item>
+ <item>November</item>
+ <item>December</item>
+ </items>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Year</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">ad</property>
+ <property name="title">Address</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Street</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">City</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Province</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">pg</property>
+ <property name="title">Pages</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkComboBoxText" id="page_combo">
+ <property name="active">0</property>
+ <items>
+ <item>Range</item>
+ <item>All</item>
+ <item>Current</item>
+ <item>-</item>
+ <item>None</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="range_from_spin">
+ <property name="adjustment">pg_adjustment</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="range_to_spin">
+ <property name="adjustment">pg_adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="print_button">
+ <property name="label">Print</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButton" id="toolbutton1">
+ <property name="icon-name">document-open-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton2">
+ <property name="icon-name">send-to-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton3">
+ <property name="icon-name">view-fullscreen-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton4">
+ <property name="icon-name">star-new-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="tooltextview"/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="cutbutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-cut-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="copybutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-copy-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="pastebutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-paste-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="deletebutton">
+ <property name="sensitive">0</property>
+ <property name="valign">end</property>
+ <property name="icon-name">edit-delete-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkOverlay">
+ <child type="overlay">
+ <object class="GtkBox" id="totem_like_osd">
+ <property name="visible">0</property>
+ <property name="opacity">0.9</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="valign">end</property>
+ <style>
+ <class name="osd"/>
+ </style>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">pan-start-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">pan-end-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="hexpand">1</property>
+ <property name="draw-value">0</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkVolumeButton">
+ <property name="orientation">vertical</property>
+ <property name="value">.5</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="osd_frame">
+ <child>
+ <object class="GtkPaned">
+ <property name="wide-handle">1</property>
+ <child>
+ <object class="GtkNotebook">
+ <property name="show-border">0</property>
+ <child type="action-end">
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover2</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="closable_page_1">
+ <property name="height-request">120</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 1</property>
+ <property name="halign">center</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="has-frame">0</property>
+ <property name="focus-on-click">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="closable_page_2">
+ <property name="vexpand">1</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 2</property>
+ <property name="halign">center</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="has-frame">0</property>
+ <property name="focus-on-click">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook">
+ <property name="show-border">0</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox">
+ <property name="vexpand">1</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGestureClick">
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text" translatable="yes">Name…</property>
+ <property name="completion">name_completion</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="show-emoji-icon">1</property>
+ <property name="placeholder-text" translatable="yes">Age…</property>
+ </object>
+ </child>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkNotebook">
+ <property name="scrollable">1</property>
+ <child type="action-end">
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box_for_context">
+ <property name="height-request">120</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="height-request">40</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 4</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 5</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorChooserWidget" id="cchooser">
+ <property name="show-editor">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkMessageDialog" id="info_dialog">
+ <property name="transient-for">window</property>
+ <property name="resizable">0</property>
+ <property name="modal">1</property>
+ <property name="text" translatable="yes">Do something?</property>
+ <property name="secondary-text" translatable="yes">If you do something,
+bad things might happen.</property>
+ <property name="hide-on-close">1</property>
+ <child type="action">
+ <object class="GtkButton" id="cancel_info_dialog">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="doit_info_dialog">
+ <property name="label" translatable="yes">_Do It</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_info_dialog</action-widget>
+ <action-widget response="ok">doit_info_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="action_dialog">
+ <property name="transient-for">window</property>
+ <property name="resizable">0</property>
+ <property name="modal">1</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Zelda</property>
+ <property name="hide-on-close">1</property>
+ <property name="default-widget">act_action_dialog</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="label" translatable="yes">To free the princess, you have to slay the dragon.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="cancel_action_dialog">
+ <property name="label" translatable="yes">_Run</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="act_action_dialog">
+ <property name="label" translatable="yes">_Act</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_action_dialog</action-widget>
+ <action-widget response="ok" default="true">act_action_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="preference_dialog">
+ <property name="transient-for">window</property>
+ <property name="modal">1</property>
+ <property name="resizable">0</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Settings</property>
+ <property name="hide-on-close">1</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkGrid">
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Details</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">details_entry</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="details_entry">
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">More D_etails</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">more_details_entry</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="more_details_entry">
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Level</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">level_scale</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="level_scale">
+ <property name="valign">baseline</property>
+ <property name="draw-value">0</property>
+ <property name="adjustment">adjustment1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Mode</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">mode_switch</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="mode_switch">
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkDialog" id="selection_dialog">
+ <property name="transient-for">window</property>
+ <property name="modal">1</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Choose one</property>
+ <property name="hide-on-close">1</property>
+ <property name="default-widget">select_selection_dialog</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkFlowBox" id="selection_flowbox">
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="min-children-per-line">3</property>
+ <property name="max-children-per-line">9</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="cancel_selection_dialog">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="select_selection_dialog">
+ <property name="label" translatable="yes">_Select</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_selection_dialog</action-widget>
+ <action-widget response="ok" default="true">select_selection_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkPopover" id="open_popover">
+ <child>
+ <object class="GtkGrid">
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="title_label">
+ <property name="label">Title:</property>
+ <property name="xalign">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="description_label">
+ <property name="valign">start</property>
+ <property name="label">Description:</property>
+ <property name="xalign">1</property>
+ <layout>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="valign">start</property>
+ <property name="has-frame">1</property>
+ <property name="min-content-height">70</property>
+ <property name="max-content-height">120</property>
+ <property name="min-content-width">100</property>
+ <property name="max-content-width">100</property>
+ <child>
+ <object class="GtkTextView" id="open_popover_textview">
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="open_popover_entry">
+ <property name="activates-default">1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkExpander">
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="label">Extra Info</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="extra_info_entry">
+ <property name="placeholder-text">Tell me anything…</property>
+ <property name="progress-fraction">0.2</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="halign">end</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ <property name="menu-model">gear_menu</property>
+ <property name="tooltip-text">This is a menu button</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="open_popover_button">
+ <property name="label">_Open</property>
+ <property name="use-underline">1</property>
+ <property name="sensitive">0</property>
+ <style>
+ <class name="suggested-action"/>
+ </style>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">vertical</property>
+ <widgets>
+ <widget name="listboxrow1"/>
+ <widget name="listboxrow2"/>
+ <widget name="listboxrow3"/>
+ <widget name="listboxrow4"/>
+ <widget name="listboxrow5"/>
+ <widget name="listboxrow6"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">both</property>
+ <widgets>
+ <widget name="panedframe1"/>
+ <widget name="panedframe2"/>
+ </widgets>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">No updates at this time</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover3">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">You&apos;re in too deep!</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover2">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Hidden gems:</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover3</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="new_style_menu">
+ <child>
+ <object class="GtkStack">
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">main</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="circular-buttons"/>
+ </style>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">printer-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ <property name="action-name">app.print</property>
+ <property name="hexpand">1</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">emblem-shared-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ <property name="action-name">app.share</property>
+ <property name="hexpand">1</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Open in New Window</property>
+ <property name="action-name">app.open-in</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="inline-buttons"/>
+ </style>
+ <child>
+ <object class="GtkLabel" id="cut_copy_paste_filler"/>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Edit</property>
+ <property name="xalign">0</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-cut-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-copy-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-paste-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Pin</property>
+ <property name="action-name">app.pin</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Select Labels…</property>
+ <property name="action-name">app.labels</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Share…</property>
+ <property name="action-name">app.share</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Basement</property>
+ <property name="menu-name">basement</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Large</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;large&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Medium</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;medium&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Small</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;small&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Move to Trash</property>
+ <property name="action-name">win.delete</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">basement</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Basement</property>
+ <property name="role">title</property>
+ <property name="menu-name">main</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Berk</property>
+ <property name="action-name">app.berk</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Broni</property>
+ <property name="action-name">app.broni</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Drutt</property>
+ <property name="action-name">app.drutt</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">The Thing Upstairs</property>
+ <property name="action-name">app.upstairs</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup" id="main-indicators">
+ <widgets>
+ <widget name="cut_copy_paste_filler"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup" id="basement-indicators"/>
+ <menu id="new_style_menu_model">
+ <section>
+ <attribute name="display-hint">circular-buttons</attribute>
+ <item>
+ <attribute name="verb-icon">printer-symbolic</attribute>
+ <attribute name="action">app.print</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">emblem-shared-symbolic</attribute>
+ <attribute name="action">app.share</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Window</attribute>
+ <attribute name="action">app.open-in</attribute>
+ </item>
+ </section>
+ <section>
+ <attribute name="display-hint">inline-buttons</attribute>
+ <attribute name="label" translatable="yes">Edit</attribute>
+ <item>
+ <attribute name="verb-icon">edit-cut-symbolic</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">edit-copy-symbolic</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">edit-paste-symbolic</attribute>
+ <attribute name="action">app.paste</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Pin</attribute>
+ <attribute name="action">app.pin</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Select Labels…</attribute>
+ <attribute name="action">app.labels</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Share…</attribute>
+ <attribute name="action">app.share</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Basement</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Berk</attribute>
+ <attribute name="action">app.berk</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Broni</attribute>
+ <attribute name="action">app.broni</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Drutt</attribute>
+ <attribute name="action">app.drutt</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">The Thing Upstairs</attribute>
+ <attribute name="action">app.upstairs</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Large</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">large</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Medium</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">medium</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Small</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">small</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Move to Trash</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="new_style_context_menu_model">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open</attribute>
+ <attribute name="action">win.open</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Tab</attribute>
+ <attribute name="action">app.open-tab</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Window</attribute>
+ <attribute name="action">app.open-window</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Cut</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Copy</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Options</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Option A</attribute>
+ <attribute name="action">app.option-a</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option B</attribute>
+ <attribute name="action">app.option-b</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option C</attribute>
+ <attribute name="action">app.option-c</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option D</attribute>
+ <attribute name="action">app.option-d</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Move to Trash</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="menu_bar_model">
+ <submenu>
+ <attribute name="label" translatable="yes">_File</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_New</attribute>
+ <attribute name="action">app.new</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Open</attribute>
+ <attribute name="action">app.open</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Save</attribute>
+ <attribute name="action">app.save</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Save _As</attribute>
+ <attribute name="action">app.save-as</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Quit</attribute>
+ <attribute name="action">app.quit</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Edit</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Cu_t</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Copy</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Paste</attribute>
+ <attribute name="action">app.paste</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Delete</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Search</attribute>
+ <attribute name="action">win.search</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">C_hecks</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-on</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-off</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-on-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-off-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-no-action</attribute>
+ <attribute name="hidden-when">action-missing</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Radios</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x</attribute>
+ <attribute name="target">x</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x</attribute>
+ <attribute name="target">y</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x-disabled</attribute>
+ <attribute name="target">x</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x-disabled</attribute>
+ <attribute name="target">y</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-no-action</attribute>
+ <attribute name="hidden-when">action-missing</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_View</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Dark Theme</attribute>
+ <attribute name="action">win.dark</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Toolbar</attribute>
+ <attribute name="action">win.toolbar</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Statusbar</attribute>
+ <attribute name="action">win.statusbar</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Select Background</attribute>
+ <attribute name="action">win.background</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <item>
+ <attribute name="label" translatable="yes">About</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </submenu>
+ </menu>
+</interface>
diff --git a/testsuite/tools/enumerate-data/widget-factory2.expected b/testsuite/tools/enumerate-data/widget-factory2.expected
new file mode 100644
index 0000000000..afe2ca16e4
--- /dev/null
+++ b/testsuite/tools/enumerate-data/widget-factory2.expected
@@ -0,0 +1,255 @@
+Objects:
+info_dialog (GtkMessageDialog)
+separator4 (GtkSeparator)
+action_dialog_button (GtkButton)
+separator5 (GtkSeparator)
+label10 (GtkLabel)
+label11 (GtkLabel)
+label12 (GtkLabel)
+open_popover_button (GtkButton)
+label13 (GtkLabel)
+select_selection_dialog (GtkButton)
+label14 (GtkLabel)
+charlemodel (GtkTreeStore)
+cancel_info_dialog (GtkButton)
+label15 (GtkLabel)
+button224 (GtkButton)
+grid1 (GtkGrid)
+label16 (GtkLabel)
+closable_page_1 (GtkBox)
+headerbar1 (GtkHeaderBar)
+label17 (GtkLabel)
+closable_page_2 (GtkBox)
+label18 (GtkLabel)
+toolbar (GtkBox)
+notebook_info_popover2 (GtkPopover)
+iconview1 (GtkIconView)
+label19 (GtkLabel)
+lockbox (GtkBox)
+toolbutton1 (GtkButton)
+text3 (GtkTextView)
+notebook_info_popover3 (GtkPopover)
+levelbar1 (GtkLevelBar)
+toolbutton2 (GtkButton)
+record_button (GtkToggleButton)
+levelbar2 (GtkLevelBar)
+lockbutton (GtkLockButton)
+toolbutton3 (GtkButton)
+page2revealer (GtkRevealer)
+toolbutton4 (GtkButton)
+statusbar (GtkStatusbar)
+open_popover_textview (GtkTextView)
+progressbar1 (GtkProgressBar)
+extra_info_entry (GtkEntry)
+progressbar2 (GtkProgressBar)
+panedframe1 (GtkFrame)
+page2box (GtkBox)
+progressbar3 (GtkProgressBar)
+panedframe2 (GtkFrame)
+totem_like_osd (GtkBox)
+range_from_spin (GtkSpinButton)
+checkbutton1 (GtkCheckButton)
+progressbar5 (GtkProgressBar)
+checkbutton2 (GtkCheckButton)
+progressbar6 (GtkProgressBar)
+checkbutton3 (GtkCheckButton)
+cancel_action_dialog (GtkButton)
+osd_frame (GtkFrame)
+checkbutton4 (GtkCheckButton)
+cancel_selection_dialog (GtkButton)
+new_style_menu_model (GMenu)
+checkbutton5 (GtkCheckButton)
+checkbutton6 (GtkCheckButton)
+treeview1 (GtkTreeView)
+doit_info_dialog (GtkButton)
+increase_button (GtkButton)
+scale1 (GtkScale)
+box10 (GtkBox)
+page2note (GtkLabel)
+scale2 (GtkScale)
+box11 (GtkBox)
+action_dialog (GtkDialog)
+linkbutton1 (GtkLinkButton)
+scale3 (GtkScale)
+mode_switch (GtkSwitch)
+box12 (GtkBox)
+page1 (GtkBox)
+textview1 (GtkTextView)
+decrease_button (GtkButton)
+scale4 (GtkScale)
+box13 (GtkBox)
+page2 (GtkOverlay)
+scale5 (GtkScale)
+notebook1 (GtkNotebook)
+box14 (GtkBox)
+selection_dialog (GtkDialog)
+notebook2 (GtkNotebook)
+box15 (GtkBox)
+selection_dialog_button (GtkButton)
+notebook3 (GtkNotebook)
+mic-button (GtkScaleButton)
+box16 (GtkBox)
+details_entry (GtkEntry)
+notebook4 (GtkNotebook)
+box17 (GtkBox)
+range_to_spin (GtkSpinButton)
+box18 (GtkBox)
+label1 (GtkLabel)
+tags (GtkTextTagTable)
+fontbutton1 (GtkFontButton)
+grid_button (GtkToggleButton)
+spinner1 (GtkSpinner)
+open_popover (GtkPopover)
+box19 (GtkBox)
+label2 (GtkLabel)
+swo (GtkScrolledWindow)
+spinner2 (GtkSpinner)
+label3 (GtkLabel)
+spinner3 (GtkSpinner)
+label4 (GtkLabel)
+spinner4 (GtkSpinner)
+label5 (GtkLabel)
+radiobutton1 (GtkCheckButton)
+comboboxtext1 (GtkComboBoxText)
+label6 (GtkLabel)
+listboxrow1switch (GtkSwitch)
+radiobutton2 (GtkCheckButton)
+comboboxtext2 (GtkComboBoxText)
+label7 (GtkLabel)
+list_button (GtkToggleButton)
+radiobutton3 (GtkCheckButton)
+infobar (GtkInfoBar)
+listboxrow5button (GtkButton)
+label8 (GtkLabel)
+radiobutton4 (GtkCheckButton)
+more_details_entry (GtkEntry)
+label9 (GtkLabel)
+page2dismiss (GtkButton)
+pg_adjustment2 (GtkAdjustment)
+comboboxtext-entry2 (GtkEntry)
+radiobutton5 (GtkCheckButton)
+switcher (GtkStackSwitcher)
+radiobutton6 (GtkCheckButton)
+listboxrow1 (GtkListBoxRow)
+cut_copy_paste_filler (GtkLabel)
+listboxrow2 (GtkListBoxRow)
+reset_button (GtkButton)
+preference_dialog (GtkDialog)
+listboxrow3 (GtkListBoxRow)
+listboxrow4 (GtkListBoxRow)
+entry1 (GtkEntry)
+dinner_menu (GMenu)
+liststore1 (GtkListStore)
+listboxrow5 (GtkListBoxRow)
+entry2 (GtkEntry)
+selection_flowbox (GtkFlowBox)
+act_action_dialog (GtkButton)
+listboxrow6 (GtkListBoxRow)
+box_for_context (GtkBox)
+pastebutton (GtkButton)
+circular_button (GtkButton)
+textbuffer1 (GtkTextBuffer)
+textbuffer2 (GtkTextBuffer)
+level_scale (GtkScale)
+verticalspin1 (GtkSpinButton)
+treeviewcolumn1 (GtkTreeViewColumn)
+verticalspin2 (GtkSpinButton)
+treeviewcolumn2 (GtkTreeViewColumn)
+deletebutton (GtkButton)
+basement-indicators (GtkSizeGroup)
+cellrenderertext1 (GtkCellRendererText)
+cellrenderertext2 (GtkCellRendererText)
+treeviewcolumn3 (GtkTreeViewColumn)
+pg_adjustment (GtkAdjustment)
+lrmodel (GtkListStore)
+charletree (GtkTreeView)
+title_label (GtkLabel)
+cellrenderertext3 (GtkCellRendererText)
+munsell (GtkListBox)
+treeviewcolumn4 (GtkTreeViewColumn)
+notebook_info_popover (GtkPopover)
+cellrenderertext4 (GtkCellRendererText)
+stack (GtkStack)
+box20 (GtkBox)
+frame1 (GtkFrame)
+toplevel_stack (GtkStack)
+scrolledwindow1 (GtkScrolledWindow)
+filler2 (GtkBox)
+frame2 (GtkFrame)
+scrolledwindow2 (GtkScrolledWindow)
+box21 (GtkBox)
+frame3 (GtkFrame)
+scrolledwindow3 (GtkScrolledWindow)
+box23 (GtkBox)
+description_label (GtkLabel)
+frame4 (GtkFrame)
+box24 (GtkBox)
+imageo (GtkImage)
+tooltextview (GtkTextView)
+box25 (GtkBox)
+listboxrow3image (GtkImage)
+box26 (GtkBox)
+box27 (GtkBox)
+switch1 (GtkSwitch)
+cutbutton (GtkButton)
+box28 (GtkBox)
+stack_switcher (GtkStackSwitcher)
+switch2 (GtkSwitch)
+sidebar_stack (GtkStack)
+comboboxtext-entry (GtkEntry)
+new_style_context_menu_model (GMenu)
+combobox1 (GtkComboBox)
+treeview-selection (GtkTreeSelection)
+cellrendererpixbuf1 (GtkCellRendererPixbuf)
+searchbar (GtkSearchBar)
+adjustment1 (GtkAdjustment)
+combobox2 (GtkComboBox)
+new_style_menu (GtkPopover)
+tvo (GtkTextView)
+expander1 (GtkExpander)
+adjustment2 (GtkAdjustment)
+adjustment3 (GtkAdjustment)
+cellrenderertoggle1 (GtkCellRendererToggle)
+box1 (GtkBox)
+gear_menu_button (GtkMenuButton)
+iconviewcell (GtkCellRendererPixbuf)
+box2 (GtkBox)
+info_dialog_button (GtkButton)
+box3 (GtkBox)
+entry24 (GtkEntry)
+box4 (GtkBox)
+box5 (GtkBox)
+listbox (GtkListBox)
+page2frame1 (GtkFrame)
+box6 (GtkBox)
+page2frame2 (GtkFrame)
+box7 (GtkBox)
+iconsmodel (GtkListStore)
+colorbutton1 (GtkColorButton)
+box8 (GtkBox)
+box9 (GtkBox)
+window (GtkApplicationWindow)
+togglebutton1 (GtkToggleButton)
+gear_menu (GMenu)
+cchooser (GtkColorChooserWidget)
+page2frame (GtkFrame)
+togglebutton2 (GtkToggleButton)
+menu_bar_model (GMenu)
+main-indicators (GtkSizeGroup)
+togglebutton3 (GtkToggleButton)
+spinbutton1 (GtkSpinButton)
+togglebutton4 (GtkToggleButton)
+spinbutton2 (GtkSpinButton)
+page2reset (GtkButton)
+copybutton (GtkButton)
+open_popover_entry (GtkEntry)
+preference_dialog_button (GtkButton)
+print_button (GtkButton)
+separator1 (GtkSeparator)
+page_combo (GtkComboBoxText)
+open_menubutton (GtkMenuButton)
+separator2 (GtkSeparator)
+box223 (GtkBox)
+separator3 (GtkSeparator)
+name_completion (GtkEntryCompletion)
+actionbar1 (GtkActionBar)
diff --git a/testsuite/tools/enumerate-data/widget-factory2.ui b/testsuite/tools/enumerate-data/widget-factory2.ui
new file mode 100644
index 0000000000..748c98ffde
--- /dev/null
+++ b/testsuite/tools/enumerate-data/widget-factory2.ui
@@ -0,0 +1,3783 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- this is a copy of widget-factory.ui with all custom widget classes
+ and callbacks removed, so it can be loaded by GtkBuilder
+ -->
+<interface>
+ <menu id="gear_menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Get Busy</attribute>
+ <attribute name="action">win.busy</attribute>
+ </item>
+ <submenu>
+ <attribute name="label" translatable="yes">Style</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Current</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">current</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Adwaita</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">adwaita</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Adwaita dark</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">adwaita-dark</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">High contrast</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">highcontrast</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">High contrast inverse</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">highcontrast-inverse</attribute>
+ </item>
+ </section>
+ </submenu>
+ <item>
+ <attribute name="label" translatable="yes">Slide Pages</attribute>
+ <attribute name="action">win.transition</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Inspector</attribute>
+ <attribute name="action">app.inspector</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
+ <attribute name="action">win.show-help-overlay</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_About Widget Factory</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="dinner_menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Steak</attribute>
+ <attribute name="action">app.main</attribute>
+ <attribute name="target">steak</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Pizza</attribute>
+ <attribute name="action">app.main</attribute>
+ <attribute name="target">pizza</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Wine</attribute>
+ <attribute name="action">app.wine</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Beer</attribute>
+ <attribute name="action">app.beer</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Water</attribute>
+ <attribute name="action">app.water</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Dessert</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Brownies</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">brownies</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Banana Sundae</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">sundae</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Lemon Bars</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">bars</attribute>
+ </item>
+ </section>
+ </submenu>
+ <section>
+ <attribute name="display-hint">horizontal-buttons</attribute>
+ <item>
+ <attribute name="label" translatable="yes">Cash</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">cash</attribute>
+ <attribute name="verb-icon">document-save-symbolic</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Credit Card</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">card</attribute>
+ <attribute name="verb-icon">document-send-symbolic</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Cheque</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">cheque</attribute>
+ <attribute name="verb-icon">document-save-as-symbolic</attribute>
+ </item>
+ </section>
+ </section>
+ </menu>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="lower">1</property>
+ <property name="value">50</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">1000</property>
+ <property name="lower">1</property>
+ <property name="value">50</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">4</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="pg_adjustment">
+ <property name="upper">99</property>
+ <property name="lower">1</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="pg_adjustment2">
+ <property name="upper">99</property>
+ <property name="lower">1</property>
+ <property name="value">4</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <column type="gboolean"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gboolean"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">True</col>
+ <col id="1">emblem-default-symbolic</col>
+ <col id="2" translatable="yes">Andrea</col>
+ <col id="3" translatable="yes">Cimi</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">False</col>
+ <col id="1">emblem-important-symbolic</col>
+ <col id="2" translatable="yes">Otto</col>
+ <col id="3" translatable="yes">chaotic</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">True</col>
+ <col id="1">weather-clear-night-symbolic</col>
+ <col id="2" translatable="yes">Orville</col>
+ <col id="3" translatable="yes">Redenbacher</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">True</col>
+ <col id="1">face-monkey-symbolic</col>
+ <col id="2" translatable="yes">Benjamin</col>
+ <col id="3" translatable="yes">Company</col>
+ <col id="4">True</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkEntryCompletion" id="name_completion">
+ <property name="model">liststore1</property>
+ <property name="text-column">2</property>
+ <property name="inline-completion">1</property>
+ <property name="popup-single-match">0</property>
+ <property name="inline-selection">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ <object class="GtkListStore" id="lrmodel">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">Left</col>
+ </row>
+ <row>
+ <col id="0">Middle</col>
+ </row>
+ <row>
+ <col id="0">Right</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkTextTagTable" id="tags">
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">bold</property>
+ <property name="weight">800</property>
+ </object>
+ </child>
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">italic</property>
+ <property name="style">italic</property>
+ </object>
+ </child>
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">underline</property>
+ <property name="underline">single</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkTextBuffer" id="textbuffer1">
+ <property name="tag-table">tags</property>
+ <property name="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+Nullam fringilla, est ut feugiat ultrices, elit lacus ultricies nibh, id commodo tortor nisi id elit.
+Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
+Morbi vel elit erat. Maecenas dignissim, dui et pharetra rutrum, tellus lectus rutrum mi, a convallis libero nisi quis tellus.
+Nulla facilisi. Nullam eleifend lobortis nisl, in porttitor tellus malesuada vitae.
+Aenean lacus tellus, pellentesque quis molestie quis, fringilla in arcu.
+Duis elementum, tellus sed tristique semper, metus metus accumsan augue, et porttitor augue orci a libero.
+Ut sed justo ac felis placerat laoreet sed id sem. Proin mattis tincidunt odio vitae tristique.
+Morbi massa libero, congue vitae scelerisque vel, ultricies vel nisl.
+Vestibulum in tortor diam, quis aliquet quam. Praesent ut justo neque, tempus rutrum est.
+Duis eu lectus quam. Vivamus eget metus a mauris molestie venenatis pulvinar eleifend nisi.
+Nulla facilisi. Pellentesque at dolor sit amet purus dapibus pulvinar molestie quis neque.
+Suspendisse feugiat quam quis dolor accumsan cursus.</property>
+ </object>
+ <object class="GtkTextBuffer" id="textbuffer2">
+ <property name="text">* Translation updates:
+ Aragonese
+ Assamese
+ Basque
+ Brazilian Portuguese
+ Dutch
+ German
+ Hebrew
+ Hungarian
+ Polish
+ Portuguese
+ Serbian
+ Slovenian
+ Spanish
+ Uyghur</property>
+ </object>
+ <object class="GtkListStore" id="iconsmodel">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">audio-headphones-symbolic</col>
+ </row>
+ <row>
+ <col id="0">audio-speakers-symbolic</col>
+ </row>
+ <row>
+ <col id="0">audio-input-microphone-symbolic</col>
+ </row>
+ <row>
+ <col id="0">bookmark-new-symbolic</col>
+ </row>
+ <row>
+ <col id="0">call-start-symbolic</col>
+ </row>
+ <row>
+ <col id="0">call-stop-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-photo-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-video-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-web-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-new-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-open-recent-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-open-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-harddisk-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-multidisk-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-optical-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-clear-all-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-copy-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-cut-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-delete-symbolic</col>
+ </row>
+ <row>
+ <col id="0">find-location-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-indent-less-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-indent-more-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-left-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-center-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-right-symbolic</col>
+ </row>
+ <row>
+ <col id="0">network-wired-symbolic</col>
+ </row>
+ <row>
+ <col id="0">network-wireless-symbolic</col>
+ </row>
+ <row>
+ <col id="0">phone-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-image-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-link-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-object-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-continuous-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-dual-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-fullscreen-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-grid-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-list-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-paged-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-clear-night-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-few-clouds-night-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-fog-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-overcast-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-severe-alert-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-showers-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-snow-symbolic</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkTreeStore" id="charlemodel">
+ <columns>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gboolean"/>
+ </columns>
+ </object>
+ <object class="GtkApplicationWindow" id="window">
+ <property name="title">GTK Widget Factory</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="headerbar1">
+ <child type="title">
+ <object class="GtkStackSwitcher" id="stack_switcher">
+ <property name="stack">toplevel_stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gear_menu_button">
+ <property name="valign">center</property>
+ <property name="menu-model">gear_menu</property>
+ <property name="icon-name">open-menu-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <child>
+ <object class="GtkStack" id="toplevel_stack">
+ <property name="transition-duration">1000</property>
+ <property name="visible-child">page2</property>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page1</property>
+ <property name="title" translatable="yes">Page 1</property>
+ <property name="child">
+ <object class="GtkBox" id="page1">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox" id="box2">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox" id="box3">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkComboBoxText" id="comboboxtext1">
+ <property name="has-entry">1</property>
+ <child internal-child="entry">
+ <object class="GtkEntry" id="comboboxtext-entry">
+ <property name="text" translatable="yes">comboboxentry</property>
+ </object>
+ </child>
+ <items>
+ <item>Donald Duck</item>
+ <item>Mickey Mouse</item>
+ <item>Jet McQuack</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="comboboxtext2">
+ <property name="sensitive">0</property>
+ <property name="has-entry">1</property>
+ <child internal-child="entry">
+ <object class="GtkEntry" id="comboboxtext-entry2">
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">comboboxentry</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry1">
+ <property name="enable-emoji-completion">1</property>
+ <property name="invisible_char">•</property>
+ <property name="placeholder-text" translatable="yes">Click icon to change mode</property>
+ <property name="secondary-icon-name">view-refresh-symbolic</property>
+ <property name="secondary-icon-tooltip-text">Change mode</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry2">
+ <property name="sensitive">0</property>
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">entry</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box223">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkEntry" id="entry24">
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">entry</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button224">
+ <property name="icon-name">window-close-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="hexpand">0</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">0</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">1</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">2</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box18">
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="label" translatable="yes">label</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="sensitive">0</property>
+ <property name="label" translatable="yes">label</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton1">
+ <property name="width-chars">2</property>
+ <property name="max-width-chars">2</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton2">
+ <property name="sensitive">0</property>
+ <property name="width-chars">2</property>
+ <property name="max-width-chars">2</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="row-homogeneous">1</property>
+ <property name="column-spacing">18</property>
+ <property name="row-spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton1">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton2">
+ <property name="label" translatable="yes">checkbutton</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton3">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="inconsistent">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton4">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <property name="active">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton5">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton6">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <property name="inconsistent">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton1">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="active">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton2">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="group">radiobutton1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton3">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="inconsistent">1</property>
+ <property name="group">radiobutton1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton4">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton5">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <property name="group">radiobutton3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton6">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <property name="inconsistent">1</property>
+ <property name="group">radiobutton3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">5</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner1">
+ <property name="spinning">1</property>
+ <layout>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner2">
+ <layout>
+ <property name="column">2</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner3">
+ <property name="spinning">1</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner4">
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator1">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box19">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton1">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="receives-default">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton2">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="sensitive">0</property>
+ <property name="receives-default">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton3">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="receives-default">1</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton4">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="sensitive">0</property>
+ <property name="receives-default">1</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox1">
+ <property name="model">liststore1</property>
+ <property name="active">0</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox2">
+ <property name="sensitive">0</property>
+ <property name="model">liststore1</property>
+ <property name="active">1</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext2"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="fontbutton1">
+ <property name="receives-default">1</property>
+ <property name="level">family|style|size|features|variations</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="colorbutton1">
+ <property name="receives-default">1</property>
+ <property name="rgba">#31316867a09f</property>
+ <property name="use-alpha">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="linkbutton1">
+ <property name="label" translatable="yes">link button</property>
+ <property name="receives-default">1</property>
+ <property name="has-tooltip">1</property>
+ <property name="has-frame">0</property>
+ <property name="uri">http://www.gtk.org</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="switch1">
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="switch2">
+ <property name="sensitive">0</property>
+ <property name="halign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator2">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box20">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkBox" id="box21">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar1">
+ <property name="fraction">0.5</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar2">
+ <property name="fraction">0.5</property>
+ <property name="inverted">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar3">
+ <property name="fraction">0.5</property>
+ <property name="show-text">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLevelBar" id="levelbar1">
+ <property name="value">0.6</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLevelBar" id="levelbar2">
+ <property name="max-value">5</property>
+ <property name="value">2</property>
+ <property name="mode">1</property>
+ <offsets>
+ <offset name="low" value="1"/>
+ <offset name="high" value="4"/>
+ <offset name="full" value="5"/>
+ </offsets>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box27">
+ <child>
+ <object class="GtkBox" id="box24">
+ <property name="hexpand">1</property>
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkScale" id="scale1">
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="draw-value">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale2">
+ <property name="sensitive">0</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="draw-value">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale5">
+ <property name="draw-value">0</property>
+ <property name="has-origin">0</property>
+ <property name="round-digits">0</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="restrict-to-fill-level">0</property>
+ <marks>
+ <mark value="0" position="bottom"></mark>
+ <mark value="1" position="bottom"></mark>
+ <mark value="2" position="bottom"></mark>
+ <mark value="3" position="bottom"></mark>
+ <mark value="4" position="bottom"></mark>
+ </marks>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box25">
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkBox" id="box28">
+ <property name="vexpand">1</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar5">
+ <property name="orientation">vertical</property>
+ <property name="fraction">0.5</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar6">
+ <property name="orientation">vertical</property>
+ <property name="fraction">0.5</property>
+ <property name="inverted">1</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box23">
+ <property name="vexpand">1</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkScale" id="scale3">
+ <property name="height-request">100</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="digits">1</property>
+ <property name="draw-value">1</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale4">
+ <property name="height-request">100</property>
+ <property name="sensitive">0</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="digits">1</property>
+ <property name="draw-value">1</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator3">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box26">
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">1</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <style>
+ <class name="border-inset"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="label" translatable="yes">&lt;b&gt;Inset&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <style>
+ <class name="border-outset"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="label" translatable="yes">&lt;b&gt;Outset&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <style>
+ <class name="border-groove"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label17">
+ <property name="label" translatable="yes">&lt;b&gt;Groove&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <style>
+ <class name="border-ridge"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label18">
+ <property name="label" translatable="yes">&lt;b&gt;Ridge&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator4">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box4">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="width-request">150</property>
+ <property name="vscrollbar-policy">always</property>
+ <property name="has-frame">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTreeView" id="treeview1">
+ <property name="model">liststore1</property>
+ <property name="headers-clickable">0</property>
+ <property name="search-column">0</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn3">
+ <property name="title" translatable="yes">Cool</property>
+ <child>
+ <object class="GtkCellRendererToggle" id="cellrenderertoggle1"/>
+ <attributes>
+ <attribute name="active">0</attribute>
+ <attribute name="radio">4</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn4">
+ <property name="title" translatable="yes">Icon</property>
+ <property name="reorderable">1</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
+ <attributes>
+ <attribute name="icon_name">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <property name="title" translatable="yes">Name</property>
+ <property name="resizable">1</property>
+ <property name="reorderable">1</property>
+ <property name="sort-indicator">1</property>
+ <property name="sort-column-id">2</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext3">
+ <property name="ellipsize">end</property>
+ </object>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+ <property name="title" translatable="yes">Nick</property>
+ <property name="resizable">1</property>
+ <property name="reorderable">1</property>
+ <property name="sort-indicator">1</property>
+ <property name="sort-column-id">3</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext4">
+ <property name="ellipsize">end</property>
+ </object>
+ <attributes>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="has-frame">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="textview1">
+ <property name="buffer">textbuffer1</property>
+ <property name="wrap-mode">2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator5"/>
+ </child>
+ <child>
+ <object class="GtkBox" id="box5">
+ <property name="spacing">10</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box6">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label5">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box7">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label6">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box8">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label7">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook2">
+ <property name="tab-pos">right</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box9">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label8">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box10">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label9">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box11">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label10">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook3">
+ <property name="tab-pos">bottom</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box12">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label11">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box13">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label12">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box14">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label13">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook4">
+ <property name="tab-pos">left</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box15">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label14">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box16">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label15">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box17">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label16">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page2</property>
+ <property name="title" translatable="yes">Page 2</property>
+ <property name="child">
+ <object class="GtkOverlay" id="page2">
+ <child type="overlay">
+ <object class="GtkRevealer" id="page2revealer">
+ <property name="transition-type">swing-down</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkFrame" id="page2frame">
+ <style>
+ <class name="app-notification"/>
+ </style>
+ <child>
+ <object class="GtkBox" id="page2box">
+ <property name="spacing">20</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <child>
+ <object class="GtkLabel" id="page2note">
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label">NEWS!</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="page2reset">
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Reset</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="page2dismiss">
+ <property name="focus-on-click">0</property>
+ <property name="has-frame">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkSpinButton" id="verticalspin1">
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="verticalspin2">
+ <property name="sensitive">0</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid">
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">6</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkVolumeButton">
+ <property name="orientation">vertical</property>
+ <property name="valign">center</property>
+ <property name="value">.5</property>
+ <property name="halign">center</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScaleButton" id="mic-button">
+ <property name="has-tooltip">1</property>
+ <property name="icons">microphone-sensitivity-muted-symbolic
+microphone-sensitivity-high-symbolic
+microphone-sensitivity-low-symbolic
+microphone-sensitivity-medium-symbolic</property>
+ <property name="valign">center</property>
+ <property name="value">.5</property>
+ <property name="halign">center</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkFrame" id="page2frame1">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">1000</property>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page1</property>
+ <property name="icon-name">preferences-desktop-locale-symbolic</property>
+ <property name="title">News</property>
+ <property name="child">
+ <object class="GtkScrolledWindow" id="swo">
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="GtkTextView" id="tvo">
+ <property name="buffer">textbuffer2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page2</property>
+ <property name="icon-name">folder-pictures-symbolic</property>
+ <property name="title">Logo</property>
+ <property name="child">
+ <object class="GtkImage" id="imageo">
+ <property name="icon-name">org.gtk.WidgetFactory4</property>
+ <property name="pixel-size">256</property>
+ <style>
+ <class name="icon-dropshadow"/>
+ </style>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkActionBar" id="actionbar1">
+ <child type="center">
+ <object class="GtkStackSwitcher" id="switcher">
+ <property name="stack">stack</property>
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton">
+ <property name="menu-model">dinner_menu</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="has-frame">1</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="min-content-height">200</property>
+ <property name="hexpand">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox">
+ <property name="selection-mode">none</property>
+ <property name="show-separators">1</property>
+ <child type="placeholder">
+ <object class="GtkLabel">
+ <property name="label">No rows found</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow1">
+ <property name="activatable">0</property>
+ <property name="selectable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 1</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="listboxrow1switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow2">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 2</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="draw-value">0</property>
+ <property name="width-request">150</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow3">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 3</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="listboxrow3image">
+ <property name="icon-name">object-select-symbolic</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="opacity">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow4">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 4</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="adjustment">adjustment1</property>
+ <property name="hexpand">1</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow5">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 5</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="listboxrow5button">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="icon-name">appointment-soon-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow6">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 6</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkFrame" id="page2frame2">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkPopoverMenuBar">
+ <property name="menu-model">menu_bar_model</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="toolbar">
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">New</property>
+ <property name="icon-name">document-new</property>
+ <property name="tooltip-text" translatable="yes">Create a new document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Save</property>
+ <property name="icon-name">document-save</property>
+ <property name="tooltip-text" translatable="yes">Save the current document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Search</property>
+ <property name="icon-name">edit-find</property>
+ <property name="action-name">win.search</property>
+ <property name="tooltip-text" translatable="yes">Search for it</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="sensitive">0</property>
+ <property name="label" translatable="yes">Insert</property>
+ <property name="icon-name">insert-image</property>
+ <property name="tooltip-text" translatable="yes">Insert something</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSearchBar" id="searchbar">
+ <child>
+ <object class="GtkSearchEntry"/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkInfoBar" id="infobar">
+ <property name="visible">0</property>
+ <property name="show-close-button">1</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label">You wanted to delete something.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="text3">
+ <property name="visible">True</property>
+ <property name="buffer">textbuffer1</property>
+ <property name="wrap-mode">2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="statusbar"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="panedframe1">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkPaned">
+ <style>
+ <class name="view"/>
+ </style>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Left</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Right</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="panedframe2">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkPaned">
+ <property name="orientation">vertical</property>
+ <style>
+ <class name="view"/>
+ </style>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Top</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Bottom</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="filler2">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkCalendar">
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkExpander" id="expander1">
+ <property name="expanded">1</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="has-frame">1</property>
+ <property name="margin-top">6</property>
+ <property name="height-request">226</property>
+ <child>
+ <object class="GtkIconView" id="iconview1">
+ <property name="selection-mode">multiple</property>
+ <property name="model">iconsmodel</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="iconviewcell"/>
+ <attributes>
+ <attribute name="icon-name">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="decrease_button">
+ <property name="icon-name">zoom-out-symbolic</property>
+ <property name="tooltip-text">Normal icons</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="increase_button">
+ <property name="icon-name">zoom-in-symbolic</property>
+ <property name="tooltip-text">Large icons</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="reset_button">
+ <property name="icon-name">zoom-original-symbolic</property>
+ <property name="tooltip-text">Inherited icon size</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label19">
+ <property name="label" translatable="yes">Expander</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="info_dialog_button">
+ <property name="label" translatable="yes">_Inform</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="action_dialog_button">
+ <property name="label" translatable="yes">_Act</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="preference_dialog_button">
+ <property name="label" translatable="yes">_Configure</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="selection_dialog_button">
+ <property name="label" translatable="yes">_Select</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page3</property>
+ <property name="title" translatable="yes">Page 3</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar-policy">never</property>
+ <property name="vscrollbar-policy">always</property>
+ <property name="height-request">300</property>
+ <property name="has-frame">1</property>
+ <child>
+ <object class="GtkTreeView" id="charletree">
+ <property name="enable-grid-lines">vertical</property>
+ <property name="enable-tree-lines">1</property>
+ <property name="rubber-banding">1</property>
+ <property name="model">charlemodel</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection">
+ <property name="mode">multiple</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Name</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Birth</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Death</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="selectable">1</property>
+ <property name="halign">start</property>
+ <property name="use-markup">1</property>
+ <property name="label" translatable="yes">&lt;small&gt;Data source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Charlemagne#Ancestry&quot;&gt;Wikipedia&lt;/a&gt;&lt;/small&gt;</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar-policy">never</property>
+ <property name="vexpand">1</property>
+ <property name="has-frame">1</property>
+ <child>
+ <object class="GtkListBox" id="munsell">
+ <property name="selection-mode">multiple</property>
+ <property name="activate-on-single-click">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox" id="lockbox">
+ <property name="hexpand">1</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkMenuButton" id="open_menubutton">
+ <property name="halign">center</property>
+ <property name="popover">open_popover</property>
+ <property name="label">Open</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="record_button">
+ <property name="halign">center</property>
+ <style>
+ <class name="text-button"/>
+ <class name="image-button"/>
+ <class name="destructive-action"/>
+ </style>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkImage">
+ <property name="valign">baseline</property>
+ <property name="icon-name">media-record-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="valign">baseline</property>
+ <property name="label">Record</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkToggleButton" id="grid_button">
+ <property name="active">1</property>
+ <property name="icon-name">view-grid-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="list_button">
+ <property name="active">1</property>
+ <property name="group">grid_button</property>
+ <property name="icon-name">view-list-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="circular_button">
+ <property name="icon-name">emblem-system-symbolic</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLockButton" id="lockbutton"/>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="icon-name">view-more-symbolic</property>
+ <property name="popover">new_style_menu</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkStackSidebar">
+ <property name="stack">sidebar_stack</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStack" id="sidebar_stack">
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">id</property>
+ <property name="title">Identity</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="spacing">10</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">First Name</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Last Name</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">bd</property>
+ <property name="title">Birthdate</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="spacing">10</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkComboBoxText">
+ <property name="active">9</property>
+ <items>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9</item>
+ <item>10</item>
+ <item>11</item>
+ <item>12</item>
+ <item>13</item>
+ <item>14</item>
+ <item>15</item>
+ <item>16</item>
+ <item>17</item>
+ <item>18</item>
+ <item>19</item>
+ <item>20</item>
+ <item>21</item>
+ <item>22</item>
+ <item>23</item>
+ <item>24</item>
+ <item>25</item>
+ <item>26</item>
+ <item>27</item>
+ <item>28</item>
+ <item>29</item>
+ <item>30</item>
+ <item>31</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText">
+ <property name="active">9</property>
+ <items>
+ <item>January</item>
+ <item>February</item>
+ <item>March</item>
+ <item>April</item>
+ <item>May</item>
+ <item>June</item>
+ <item>July</item>
+ <item>August</item>
+ <item>September</item>
+ <item>October</item>
+ <item>November</item>
+ <item>December</item>
+ </items>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Year</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">ad</property>
+ <property name="title">Address</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Street</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">City</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Province</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">pg</property>
+ <property name="title">Pages</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkComboBoxText" id="page_combo">
+ <property name="active">0</property>
+ <items>
+ <item>Range</item>
+ <item>All</item>
+ <item>Current</item>
+ <item>-</item>
+ <item>None</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="range_from_spin">
+ <property name="adjustment">pg_adjustment</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="range_to_spin">
+ <property name="adjustment">pg_adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="print_button">
+ <property name="label">Print</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButton" id="toolbutton1">
+ <property name="icon-name">document-open-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton2">
+ <property name="icon-name">send-to-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton3">
+ <property name="icon-name">view-fullscreen-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton4">
+ <property name="icon-name">star-new-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="tooltextview"/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="cutbutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-cut-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="copybutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-copy-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="pastebutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-paste-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="deletebutton">
+ <property name="sensitive">0</property>
+ <property name="valign">end</property>
+ <property name="icon-name">edit-delete-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkOverlay">
+ <child type="overlay">
+ <object class="GtkBox" id="totem_like_osd">
+ <property name="visible">0</property>
+ <property name="opacity">0.9</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="valign">end</property>
+ <style>
+ <class name="osd"/>
+ </style>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">pan-start-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">pan-end-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="hexpand">1</property>
+ <property name="draw-value">0</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkVolumeButton">
+ <property name="orientation">vertical</property>
+ <property name="value">.5</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="osd_frame">
+ <child>
+ <object class="GtkPaned">
+ <property name="wide-handle">1</property>
+ <child>
+ <object class="GtkNotebook">
+ <property name="show-border">0</property>
+ <child type="action-end">
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover2</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="closable_page_1">
+ <property name="height-request">120</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 1</property>
+ <property name="halign">center</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="has-frame">0</property>
+ <property name="focus-on-click">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="closable_page_2">
+ <property name="vexpand">1</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 2</property>
+ <property name="halign">center</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="has-frame">0</property>
+ <property name="focus-on-click">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook">
+ <property name="show-border">0</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox">
+ <property name="vexpand">1</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGestureClick">
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text" translatable="yes">Name…</property>
+ <property name="completion">name_completion</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="show-emoji-icon">1</property>
+ <property name="placeholder-text" translatable="yes">Age…</property>
+ </object>
+ </child>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkNotebook">
+ <property name="scrollable">1</property>
+ <child type="action-end">
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box_for_context">
+ <property name="height-request">120</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="height-request">40</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 4</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 5</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorChooserWidget" id="cchooser">
+ <property name="show-editor">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkMessageDialog" id="info_dialog">
+ <property name="transient-for">window</property>
+ <property name="resizable">0</property>
+ <property name="modal">1</property>
+ <property name="text" translatable="yes">Do something?</property>
+ <property name="secondary-text" translatable="yes">If you do something,
+bad things might happen.</property>
+ <property name="hide-on-close">1</property>
+ <child type="action">
+ <object class="GtkButton" id="cancel_info_dialog">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="doit_info_dialog">
+ <property name="label" translatable="yes">_Do It</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_info_dialog</action-widget>
+ <action-widget response="ok">doit_info_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="action_dialog">
+ <property name="transient-for">window</property>
+ <property name="resizable">0</property>
+ <property name="modal">1</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Zelda</property>
+ <property name="hide-on-close">1</property>
+ <property name="default-widget">act_action_dialog</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="label" translatable="yes">To free the princess, you have to slay the dragon.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="cancel_action_dialog">
+ <property name="label" translatable="yes">_Run</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="act_action_dialog">
+ <property name="label" translatable="yes">_Act</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_action_dialog</action-widget>
+ <action-widget response="ok" default="true">act_action_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="preference_dialog">
+ <property name="transient-for">window</property>
+ <property name="modal">1</property>
+ <property name="resizable">0</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Settings</property>
+ <property name="hide-on-close">1</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkGrid">
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Details</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">details_entry</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="details_entry">
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">More D_etails</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">more_details_entry</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="more_details_entry">
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Level</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">level_scale</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="level_scale">
+ <property name="valign">baseline</property>
+ <property name="draw-value">0</property>
+ <property name="adjustment">adjustment1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Mode</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">mode_switch</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="mode_switch">
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkDialog" id="selection_dialog">
+ <property name="transient-for">window</property>
+ <property name="modal">1</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Choose one</property>
+ <property name="hide-on-close">1</property>
+ <property name="default-widget">select_selection_dialog</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkFlowBox" id="selection_flowbox">
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="min-children-per-line">3</property>
+ <property name="max-children-per-line">9</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="cancel_selection_dialog">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="select_selection_dialog">
+ <property name="label" translatable="yes">_Select</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_selection_dialog</action-widget>
+ <action-widget response="ok" default="true">select_selection_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkPopover" id="open_popover">
+ <child>
+ <object class="GtkGrid">
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="title_label">
+ <property name="label">Title:</property>
+ <property name="xalign">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="description_label">
+ <property name="valign">start</property>
+ <property name="label">Description:</property>
+ <property name="xalign">1</property>
+ <layout>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="valign">start</property>
+ <property name="has-frame">1</property>
+ <property name="min-content-height">70</property>
+ <property name="max-content-height">120</property>
+ <property name="min-content-width">100</property>
+ <property name="max-content-width">100</property>
+ <child>
+ <object class="GtkTextView" id="open_popover_textview">
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="open_popover_entry">
+ <property name="activates-default">1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkExpander">
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="label">Extra Info</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="extra_info_entry">
+ <property name="placeholder-text">Tell me anything…</property>
+ <property name="progress-fraction">0.2</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="halign">end</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ <property name="menu-model">gear_menu</property>
+ <property name="tooltip-text">This is a menu button</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="open_popover_button">
+ <property name="label">_Open</property>
+ <property name="use-underline">1</property>
+ <property name="sensitive">0</property>
+ <style>
+ <class name="suggested-action"/>
+ </style>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">vertical</property>
+ <widgets>
+ <widget name="listboxrow1"/>
+ <widget name="listboxrow2"/>
+ <widget name="listboxrow3"/>
+ <widget name="listboxrow4"/>
+ <widget name="listboxrow5"/>
+ <widget name="listboxrow6"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">both</property>
+ <widgets>
+ <widget name="panedframe1"/>
+ <widget name="panedframe2"/>
+ </widgets>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">No updates at this time</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover3">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">You&apos;re in too deep!</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover2">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Hidden gems:</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover3</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="new_style_menu">
+ <child>
+ <object class="GtkStack">
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">main</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="circular-buttons"/>
+ </style>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">printer-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ <property name="action-name">app.print</property>
+ <property name="hexpand">1</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">emblem-shared-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ <property name="action-name">app.share</property>
+ <property name="hexpand">1</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Open in New Window</property>
+ <property name="action-name">app.open-in</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="inline-buttons"/>
+ </style>
+ <child>
+ <object class="GtkLabel" id="cut_copy_paste_filler"/>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Edit</property>
+ <property name="xalign">0</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-cut-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-copy-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-paste-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Pin</property>
+ <property name="action-name">app.pin</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Select Labels…</property>
+ <property name="action-name">app.labels</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Share…</property>
+ <property name="action-name">app.share</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Basement</property>
+ <property name="menu-name">basement</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Large</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;large&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Medium</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;medium&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Small</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;small&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Move to Trash</property>
+ <property name="action-name">win.delete</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">basement</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Basement</property>
+ <property name="role">title</property>
+ <property name="menu-name">main</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Berk</property>
+ <property name="action-name">app.berk</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Broni</property>
+ <property name="action-name">app.broni</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Drutt</property>
+ <property name="action-name">app.drutt</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">The Thing Upstairs</property>
+ <property name="action-name">app.upstairs</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup" id="main-indicators">
+ <widgets>
+ <widget name="cut_copy_paste_filler"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup" id="basement-indicators"/>
+ <menu id="new_style_menu_model">
+ <section>
+ <attribute name="display-hint">circular-buttons</attribute>
+ <item>
+ <attribute name="verb-icon">printer-symbolic</attribute>
+ <attribute name="action">app.print</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">emblem-shared-symbolic</attribute>
+ <attribute name="action">app.share</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Window</attribute>
+ <attribute name="action">app.open-in</attribute>
+ </item>
+ </section>
+ <section>
+ <attribute name="display-hint">inline-buttons</attribute>
+ <attribute name="label" translatable="yes">Edit</attribute>
+ <item>
+ <attribute name="verb-icon">edit-cut-symbolic</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">edit-copy-symbolic</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">edit-paste-symbolic</attribute>
+ <attribute name="action">app.paste</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Pin</attribute>
+ <attribute name="action">app.pin</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Select Labels…</attribute>
+ <attribute name="action">app.labels</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Share…</attribute>
+ <attribute name="action">app.share</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Basement</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Berk</attribute>
+ <attribute name="action">app.berk</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Broni</attribute>
+ <attribute name="action">app.broni</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Drutt</attribute>
+ <attribute name="action">app.drutt</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">The Thing Upstairs</attribute>
+ <attribute name="action">app.upstairs</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Large</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">large</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Medium</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">medium</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Small</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">small</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Move to Trash</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="new_style_context_menu_model">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open</attribute>
+ <attribute name="action">win.open</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Tab</attribute>
+ <attribute name="action">app.open-tab</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Window</attribute>
+ <attribute name="action">app.open-window</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Cut</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Copy</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Options</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Option A</attribute>
+ <attribute name="action">app.option-a</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option B</attribute>
+ <attribute name="action">app.option-b</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option C</attribute>
+ <attribute name="action">app.option-c</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option D</attribute>
+ <attribute name="action">app.option-d</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Move to Trash</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="menu_bar_model">
+ <submenu>
+ <attribute name="label" translatable="yes">_File</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_New</attribute>
+ <attribute name="action">app.new</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Open</attribute>
+ <attribute name="action">app.open</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Save</attribute>
+ <attribute name="action">app.save</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Save _As</attribute>
+ <attribute name="action">app.save-as</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Quit</attribute>
+ <attribute name="action">app.quit</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Edit</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Cu_t</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Copy</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Paste</attribute>
+ <attribute name="action">app.paste</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Delete</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Search</attribute>
+ <attribute name="action">win.search</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">C_hecks</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-on</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-off</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-on-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-off-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-no-action</attribute>
+ <attribute name="hidden-when">action-missing</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Radios</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x</attribute>
+ <attribute name="target">x</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x</attribute>
+ <attribute name="target">y</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x-disabled</attribute>
+ <attribute name="target">x</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x-disabled</attribute>
+ <attribute name="target">y</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-no-action</attribute>
+ <attribute name="hidden-when">action-missing</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_View</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Dark Theme</attribute>
+ <attribute name="action">win.dark</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Toolbar</attribute>
+ <attribute name="action">win.toolbar</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Statusbar</attribute>
+ <attribute name="action">win.statusbar</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Select Background</attribute>
+ <attribute name="action">win.background</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <item>
+ <attribute name="label" translatable="yes">About</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </submenu>
+ </menu>
+</interface>
diff --git a/testsuite/tools/enumerate-data/widget-factory3.expected b/testsuite/tools/enumerate-data/widget-factory3.expected
new file mode 100644
index 0000000000..4e374aa375
--- /dev/null
+++ b/testsuite/tools/enumerate-data/widget-factory3.expected
@@ -0,0 +1,256 @@
+Objects:
+info_dialog (GtkMessageDialog)
+separator4 (GtkSeparator)
+action_dialog_button (GtkButton)
+separator5 (GtkSeparator)
+label10 (GtkLabel)
+label11 (GtkLabel)
+label12 (GtkLabel)
+open_popover_button (GtkButton)
+label13 (GtkLabel)
+select_selection_dialog (GtkButton)
+label14 (GtkLabel)
+charlemodel (GtkTreeStore)
+cancel_info_dialog (GtkButton)
+label15 (GtkLabel)
+button224 (GtkButton)
+grid1 (GtkGrid)
+label16 (GtkLabel)
+closable_page_1 (GtkBox)
+headerbar1 (GtkHeaderBar)
+label17 (GtkLabel)
+closable_page_2 (GtkBox)
+label18 (GtkLabel)
+toolbar (GtkBox)
+notebook_info_popover2 (GtkPopover)
+iconview1 (GtkIconView)
+label19 (GtkLabel)
+lockbox (GtkBox)
+toolbutton1 (GtkButton)
+text3 (GtkTextView)
+notebook_info_popover3 (GtkPopover)
+levelbar1 (GtkLevelBar)
+toolbutton2 (GtkButton)
+record_button (GtkToggleButton)
+levelbar2 (GtkLevelBar)
+lockbutton (GtkLockButton)
+toolbutton3 (GtkButton)
+page2revealer (GtkRevealer)
+toolbutton4 (GtkButton)
+statusbar (GtkStatusbar)
+open_popover_textview (GtkTextView)
+progressbar1 (GtkProgressBar)
+extra_info_entry (GtkEntry)
+progressbar2 (GtkProgressBar)
+panedframe1 (GtkFrame)
+page2box (GtkBox)
+progressbar3 (GtkProgressBar)
+panedframe2 (GtkFrame)
+totem_like_osd (GtkBox)
+range_from_spin (GtkSpinButton)
+checkbutton1 (GtkCheckButton)
+progressbar5 (GtkProgressBar)
+checkbutton2 (GtkCheckButton)
+progressbar6 (GtkProgressBar)
+checkbutton3 (GtkCheckButton)
+cancel_action_dialog (GtkButton)
+osd_frame (GtkFrame)
+checkbutton4 (GtkCheckButton)
+cancel_selection_dialog (GtkButton)
+new_style_menu_model (GMenu)
+checkbutton5 (GtkCheckButton)
+checkbutton6 (GtkCheckButton)
+treeview1 (GtkTreeView)
+doit_info_dialog (GtkButton)
+increase_button (GtkButton)
+scale1 (GtkScale)
+box10 (GtkBox)
+page2note (GtkLabel)
+scale2 (GtkScale)
+box11 (GtkBox)
+action_dialog (GtkDialog)
+linkbutton1 (GtkLinkButton)
+scale3 (GtkScale)
+mode_switch (GtkSwitch)
+box12 (GtkBox)
+page1 (GtkBox)
+textview1 (GtkTextView)
+decrease_button (GtkButton)
+scale4 (GtkScale)
+box13 (GtkBox)
+page2 (GtkOverlay)
+scale5 (GtkScale)
+notebook1 (GtkNotebook)
+box14 (GtkBox)
+page3 (GtkBox)
+selection_dialog (GtkDialog)
+notebook2 (GtkNotebook)
+box15 (GtkBox)
+selection_dialog_button (GtkButton)
+notebook3 (GtkNotebook)
+mic-button (GtkScaleButton)
+box16 (GtkBox)
+details_entry (GtkEntry)
+notebook4 (GtkNotebook)
+box17 (GtkBox)
+range_to_spin (GtkSpinButton)
+box18 (GtkBox)
+label1 (GtkLabel)
+tags (GtkTextTagTable)
+fontbutton1 (GtkFontButton)
+grid_button (GtkToggleButton)
+spinner1 (GtkSpinner)
+open_popover (GtkPopover)
+box19 (GtkBox)
+label2 (GtkLabel)
+swo (GtkScrolledWindow)
+spinner2 (GtkSpinner)
+label3 (GtkLabel)
+spinner3 (GtkSpinner)
+label4 (GtkLabel)
+spinner4 (GtkSpinner)
+label5 (GtkLabel)
+radiobutton1 (GtkCheckButton)
+comboboxtext1 (GtkComboBoxText)
+label6 (GtkLabel)
+listboxrow1switch (GtkSwitch)
+radiobutton2 (GtkCheckButton)
+comboboxtext2 (GtkComboBoxText)
+label7 (GtkLabel)
+list_button (GtkToggleButton)
+radiobutton3 (GtkCheckButton)
+infobar (GtkInfoBar)
+listboxrow5button (GtkButton)
+label8 (GtkLabel)
+radiobutton4 (GtkCheckButton)
+more_details_entry (GtkEntry)
+label9 (GtkLabel)
+page2dismiss (GtkButton)
+pg_adjustment2 (GtkAdjustment)
+comboboxtext-entry2 (GtkEntry)
+radiobutton5 (GtkCheckButton)
+switcher (GtkStackSwitcher)
+radiobutton6 (GtkCheckButton)
+listboxrow1 (GtkListBoxRow)
+cut_copy_paste_filler (GtkLabel)
+listboxrow2 (GtkListBoxRow)
+reset_button (GtkButton)
+preference_dialog (GtkDialog)
+listboxrow3 (GtkListBoxRow)
+listboxrow4 (GtkListBoxRow)
+entry1 (GtkEntry)
+dinner_menu (GMenu)
+liststore1 (GtkListStore)
+listboxrow5 (GtkListBoxRow)
+entry2 (GtkEntry)
+selection_flowbox (GtkFlowBox)
+act_action_dialog (GtkButton)
+listboxrow6 (GtkListBoxRow)
+box_for_context (GtkBox)
+pastebutton (GtkButton)
+circular_button (GtkButton)
+textbuffer1 (GtkTextBuffer)
+textbuffer2 (GtkTextBuffer)
+level_scale (GtkScale)
+verticalspin1 (GtkSpinButton)
+treeviewcolumn1 (GtkTreeViewColumn)
+verticalspin2 (GtkSpinButton)
+treeviewcolumn2 (GtkTreeViewColumn)
+deletebutton (GtkButton)
+basement-indicators (GtkSizeGroup)
+cellrenderertext1 (GtkCellRendererText)
+cellrenderertext2 (GtkCellRendererText)
+treeviewcolumn3 (GtkTreeViewColumn)
+pg_adjustment (GtkAdjustment)
+lrmodel (GtkListStore)
+charletree (GtkTreeView)
+title_label (GtkLabel)
+cellrenderertext3 (GtkCellRendererText)
+munsell (GtkListBox)
+treeviewcolumn4 (GtkTreeViewColumn)
+notebook_info_popover (GtkPopover)
+cellrenderertext4 (GtkCellRendererText)
+stack (GtkStack)
+box20 (GtkBox)
+frame1 (GtkFrame)
+toplevel_stack (GtkStack)
+scrolledwindow1 (GtkScrolledWindow)
+filler2 (GtkBox)
+frame2 (GtkFrame)
+scrolledwindow2 (GtkScrolledWindow)
+box21 (GtkBox)
+frame3 (GtkFrame)
+scrolledwindow3 (GtkScrolledWindow)
+box23 (GtkBox)
+description_label (GtkLabel)
+frame4 (GtkFrame)
+box24 (GtkBox)
+imageo (GtkImage)
+tooltextview (GtkTextView)
+box25 (GtkBox)
+listboxrow3image (GtkImage)
+box26 (GtkBox)
+box27 (GtkBox)
+switch1 (GtkSwitch)
+cutbutton (GtkButton)
+box28 (GtkBox)
+stack_switcher (GtkStackSwitcher)
+switch2 (GtkSwitch)
+sidebar_stack (GtkStack)
+comboboxtext-entry (GtkEntry)
+new_style_context_menu_model (GMenu)
+combobox1 (GtkComboBox)
+treeview-selection (GtkTreeSelection)
+cellrendererpixbuf1 (GtkCellRendererPixbuf)
+searchbar (GtkSearchBar)
+adjustment1 (GtkAdjustment)
+combobox2 (GtkComboBox)
+new_style_menu (GtkPopover)
+tvo (GtkTextView)
+expander1 (GtkExpander)
+adjustment2 (GtkAdjustment)
+adjustment3 (GtkAdjustment)
+cellrenderertoggle1 (GtkCellRendererToggle)
+box1 (GtkBox)
+gear_menu_button (GtkMenuButton)
+iconviewcell (GtkCellRendererPixbuf)
+box2 (GtkBox)
+info_dialog_button (GtkButton)
+box3 (GtkBox)
+entry24 (GtkEntry)
+box4 (GtkBox)
+box5 (GtkBox)
+listbox (GtkListBox)
+page2frame1 (GtkFrame)
+box6 (GtkBox)
+page2frame2 (GtkFrame)
+box7 (GtkBox)
+iconsmodel (GtkListStore)
+colorbutton1 (GtkColorButton)
+box8 (GtkBox)
+box9 (GtkBox)
+window (GtkApplicationWindow)
+togglebutton1 (GtkToggleButton)
+gear_menu (GMenu)
+cchooser (GtkColorChooserWidget)
+page2frame (GtkFrame)
+togglebutton2 (GtkToggleButton)
+menu_bar_model (GMenu)
+main-indicators (GtkSizeGroup)
+togglebutton3 (GtkToggleButton)
+spinbutton1 (GtkSpinButton)
+togglebutton4 (GtkToggleButton)
+spinbutton2 (GtkSpinButton)
+page2reset (GtkButton)
+copybutton (GtkButton)
+open_popover_entry (GtkEntry)
+preference_dialog_button (GtkButton)
+print_button (GtkButton)
+separator1 (GtkSeparator)
+page_combo (GtkComboBoxText)
+open_menubutton (GtkMenuButton)
+separator2 (GtkSeparator)
+box223 (GtkBox)
+separator3 (GtkSeparator)
+name_completion (GtkEntryCompletion)
+actionbar1 (GtkActionBar)
diff --git a/testsuite/tools/enumerate-data/widget-factory3.ui b/testsuite/tools/enumerate-data/widget-factory3.ui
new file mode 100644
index 0000000000..d7a2643843
--- /dev/null
+++ b/testsuite/tools/enumerate-data/widget-factory3.ui
@@ -0,0 +1,3783 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- this is a copy of widget-factory.ui with all custom widget classes
+ and callbacks removed, so it can be loaded by GtkBuilder
+ -->
+<interface>
+ <menu id="gear_menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Get Busy</attribute>
+ <attribute name="action">win.busy</attribute>
+ </item>
+ <submenu>
+ <attribute name="label" translatable="yes">Style</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Current</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">current</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Adwaita</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">adwaita</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Adwaita dark</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">adwaita-dark</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">High contrast</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">highcontrast</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">High contrast inverse</attribute>
+ <attribute name="action">win.theme</attribute>
+ <attribute name="target">highcontrast-inverse</attribute>
+ </item>
+ </section>
+ </submenu>
+ <item>
+ <attribute name="label" translatable="yes">Slide Pages</attribute>
+ <attribute name="action">win.transition</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Inspector</attribute>
+ <attribute name="action">app.inspector</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
+ <attribute name="action">win.show-help-overlay</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_About Widget Factory</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="dinner_menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Steak</attribute>
+ <attribute name="action">app.main</attribute>
+ <attribute name="target">steak</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Pizza</attribute>
+ <attribute name="action">app.main</attribute>
+ <attribute name="target">pizza</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Wine</attribute>
+ <attribute name="action">app.wine</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Beer</attribute>
+ <attribute name="action">app.beer</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Water</attribute>
+ <attribute name="action">app.water</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Dessert</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Brownies</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">brownies</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Banana Sundae</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">sundae</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Lemon Bars</attribute>
+ <attribute name="action">app.dessert</attribute>
+ <attribute name="target">bars</attribute>
+ </item>
+ </section>
+ </submenu>
+ <section>
+ <attribute name="display-hint">horizontal-buttons</attribute>
+ <item>
+ <attribute name="label" translatable="yes">Cash</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">cash</attribute>
+ <attribute name="verb-icon">document-save-symbolic</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Credit Card</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">card</attribute>
+ <attribute name="verb-icon">document-send-symbolic</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Cheque</attribute>
+ <attribute name="action">app.pay</attribute>
+ <attribute name="target">cheque</attribute>
+ <attribute name="verb-icon">document-save-as-symbolic</attribute>
+ </item>
+ </section>
+ </section>
+ </menu>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="lower">1</property>
+ <property name="value">50</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">1000</property>
+ <property name="lower">1</property>
+ <property name="value">50</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">4</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="pg_adjustment">
+ <property name="upper">99</property>
+ <property name="lower">1</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="pg_adjustment2">
+ <property name="upper">99</property>
+ <property name="lower">1</property>
+ <property name="value">4</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <column type="gboolean"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gboolean"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">True</col>
+ <col id="1">emblem-default-symbolic</col>
+ <col id="2" translatable="yes">Andrea</col>
+ <col id="3" translatable="yes">Cimi</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">False</col>
+ <col id="1">emblem-important-symbolic</col>
+ <col id="2" translatable="yes">Otto</col>
+ <col id="3" translatable="yes">chaotic</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">True</col>
+ <col id="1">weather-clear-night-symbolic</col>
+ <col id="2" translatable="yes">Orville</col>
+ <col id="3" translatable="yes">Redenbacher</col>
+ <col id="4">False</col>
+ </row>
+ <row>
+ <col id="0">True</col>
+ <col id="1">face-monkey-symbolic</col>
+ <col id="2" translatable="yes">Benjamin</col>
+ <col id="3" translatable="yes">Company</col>
+ <col id="4">True</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkEntryCompletion" id="name_completion">
+ <property name="model">liststore1</property>
+ <property name="text-column">2</property>
+ <property name="inline-completion">1</property>
+ <property name="popup-single-match">0</property>
+ <property name="inline-selection">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ <object class="GtkListStore" id="lrmodel">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">Left</col>
+ </row>
+ <row>
+ <col id="0">Middle</col>
+ </row>
+ <row>
+ <col id="0">Right</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkTextTagTable" id="tags">
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">bold</property>
+ <property name="weight">800</property>
+ </object>
+ </child>
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">italic</property>
+ <property name="style">italic</property>
+ </object>
+ </child>
+ <child type="tag">
+ <object class="GtkTextTag">
+ <property name="name">underline</property>
+ <property name="underline">single</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkTextBuffer" id="textbuffer1">
+ <property name="tag-table">tags</property>
+ <property name="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+Nullam fringilla, est ut feugiat ultrices, elit lacus ultricies nibh, id commodo tortor nisi id elit.
+Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
+Morbi vel elit erat. Maecenas dignissim, dui et pharetra rutrum, tellus lectus rutrum mi, a convallis libero nisi quis tellus.
+Nulla facilisi. Nullam eleifend lobortis nisl, in porttitor tellus malesuada vitae.
+Aenean lacus tellus, pellentesque quis molestie quis, fringilla in arcu.
+Duis elementum, tellus sed tristique semper, metus metus accumsan augue, et porttitor augue orci a libero.
+Ut sed justo ac felis placerat laoreet sed id sem. Proin mattis tincidunt odio vitae tristique.
+Morbi massa libero, congue vitae scelerisque vel, ultricies vel nisl.
+Vestibulum in tortor diam, quis aliquet quam. Praesent ut justo neque, tempus rutrum est.
+Duis eu lectus quam. Vivamus eget metus a mauris molestie venenatis pulvinar eleifend nisi.
+Nulla facilisi. Pellentesque at dolor sit amet purus dapibus pulvinar molestie quis neque.
+Suspendisse feugiat quam quis dolor accumsan cursus.</property>
+ </object>
+ <object class="GtkTextBuffer" id="textbuffer2">
+ <property name="text">* Translation updates:
+ Aragonese
+ Assamese
+ Basque
+ Brazilian Portuguese
+ Dutch
+ German
+ Hebrew
+ Hungarian
+ Polish
+ Portuguese
+ Serbian
+ Slovenian
+ Spanish
+ Uyghur</property>
+ </object>
+ <object class="GtkListStore" id="iconsmodel">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">audio-headphones-symbolic</col>
+ </row>
+ <row>
+ <col id="0">audio-speakers-symbolic</col>
+ </row>
+ <row>
+ <col id="0">audio-input-microphone-symbolic</col>
+ </row>
+ <row>
+ <col id="0">bookmark-new-symbolic</col>
+ </row>
+ <row>
+ <col id="0">call-start-symbolic</col>
+ </row>
+ <row>
+ <col id="0">call-stop-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-photo-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-video-symbolic</col>
+ </row>
+ <row>
+ <col id="0">camera-web-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-new-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-open-recent-symbolic</col>
+ </row>
+ <row>
+ <col id="0">document-open-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-harddisk-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-multidisk-symbolic</col>
+ </row>
+ <row>
+ <col id="0">drive-optical-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-clear-all-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-copy-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-cut-symbolic</col>
+ </row>
+ <row>
+ <col id="0">edit-delete-symbolic</col>
+ </row>
+ <row>
+ <col id="0">find-location-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-indent-less-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-indent-more-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-left-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-center-symbolic</col>
+ </row>
+ <row>
+ <col id="0">format-justify-right-symbolic</col>
+ </row>
+ <row>
+ <col id="0">network-wired-symbolic</col>
+ </row>
+ <row>
+ <col id="0">network-wireless-symbolic</col>
+ </row>
+ <row>
+ <col id="0">phone-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-image-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-link-symbolic</col>
+ </row>
+ <row>
+ <col id="0">insert-object-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-continuous-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-dual-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-fullscreen-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-grid-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-list-symbolic</col>
+ </row>
+ <row>
+ <col id="0">view-paged-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-clear-night-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-few-clouds-night-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-fog-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-overcast-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-severe-alert-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-showers-symbolic</col>
+ </row>
+ <row>
+ <col id="0">weather-snow-symbolic</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkTreeStore" id="charlemodel">
+ <columns>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gchararray"/>
+ <column type="gboolean"/>
+ </columns>
+ </object>
+ <object class="GtkApplicationWindow" id="window">
+ <property name="title">GTK Widget Factory</property>
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="headerbar1">
+ <child type="title">
+ <object class="GtkStackSwitcher" id="stack_switcher">
+ <property name="stack">toplevel_stack</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton" id="gear_menu_button">
+ <property name="valign">center</property>
+ <property name="menu-model">gear_menu</property>
+ <property name="icon-name">open-menu-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <child>
+ <object class="GtkStack" id="toplevel_stack">
+ <property name="transition-duration">1000</property>
+ <property name="visible-child">page3</property>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page1</property>
+ <property name="title" translatable="yes">Page 1</property>
+ <property name="child">
+ <object class="GtkBox" id="page1">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox" id="box2">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox" id="box3">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkComboBoxText" id="comboboxtext1">
+ <property name="has-entry">1</property>
+ <child internal-child="entry">
+ <object class="GtkEntry" id="comboboxtext-entry">
+ <property name="text" translatable="yes">comboboxentry</property>
+ </object>
+ </child>
+ <items>
+ <item>Donald Duck</item>
+ <item>Mickey Mouse</item>
+ <item>Jet McQuack</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="comboboxtext2">
+ <property name="sensitive">0</property>
+ <property name="has-entry">1</property>
+ <child internal-child="entry">
+ <object class="GtkEntry" id="comboboxtext-entry2">
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">comboboxentry</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry1">
+ <property name="enable-emoji-completion">1</property>
+ <property name="invisible_char">•</property>
+ <property name="placeholder-text" translatable="yes">Click icon to change mode</property>
+ <property name="secondary-icon-name">view-refresh-symbolic</property>
+ <property name="secondary-icon-tooltip-text">Change mode</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry2">
+ <property name="sensitive">0</property>
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">entry</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box223">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkEntry" id="entry24">
+ <property name="invisible-char">•</property>
+ <property name="text" translatable="yes">entry</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button224">
+ <property name="icon-name">window-close-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="hexpand">0</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">0</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">1</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox">
+ <property name="model">lrmodel</property>
+ <property name="active">2</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box18">
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="label" translatable="yes">label</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="sensitive">0</property>
+ <property name="label" translatable="yes">label</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton1">
+ <property name="width-chars">2</property>
+ <property name="max-width-chars">2</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton2">
+ <property name="sensitive">0</property>
+ <property name="width-chars">2</property>
+ <property name="max-width-chars">2</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="row-homogeneous">1</property>
+ <property name="column-spacing">18</property>
+ <property name="row-spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton1">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton2">
+ <property name="label" translatable="yes">checkbutton</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton3">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="inconsistent">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton4">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <property name="active">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton5">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton6">
+ <property name="label" translatable="yes">checkbutton</property>
+ <property name="sensitive">0</property>
+ <property name="inconsistent">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton1">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="active">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton2">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="group">radiobutton1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton3">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="inconsistent">1</property>
+ <property name="group">radiobutton1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton4">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton5">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <property name="group">radiobutton3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="radiobutton6">
+ <property name="label" translatable="yes">radiobutton</property>
+ <property name="sensitive">0</property>
+ <property name="inconsistent">1</property>
+ <property name="group">radiobutton3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">5</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner1">
+ <property name="spinning">1</property>
+ <layout>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner2">
+ <layout>
+ <property name="column">2</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner3">
+ <property name="spinning">1</property>
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner4">
+ <property name="sensitive">0</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">4</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator1">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box19">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton1">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="receives-default">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton2">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="sensitive">0</property>
+ <property name="receives-default">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton3">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="receives-default">1</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="togglebutton4">
+ <property name="label" translatable="yes">togglebutton</property>
+ <property name="sensitive">0</property>
+ <property name="receives-default">1</property>
+ <property name="active">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox1">
+ <property name="model">liststore1</property>
+ <property name="active">0</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox2">
+ <property name="sensitive">0</property>
+ <property name="model">liststore1</property>
+ <property name="active">1</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext2"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="fontbutton1">
+ <property name="receives-default">1</property>
+ <property name="level">family|style|size|features|variations</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="colorbutton1">
+ <property name="receives-default">1</property>
+ <property name="rgba">#31316867a09f</property>
+ <property name="use-alpha">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="linkbutton1">
+ <property name="label" translatable="yes">link button</property>
+ <property name="receives-default">1</property>
+ <property name="has-tooltip">1</property>
+ <property name="has-frame">0</property>
+ <property name="uri">http://www.gtk.org</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="switch1">
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="switch2">
+ <property name="sensitive">0</property>
+ <property name="halign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator2">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box20">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkBox" id="box21">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar1">
+ <property name="fraction">0.5</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar2">
+ <property name="fraction">0.5</property>
+ <property name="inverted">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar3">
+ <property name="fraction">0.5</property>
+ <property name="show-text">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLevelBar" id="levelbar1">
+ <property name="value">0.6</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLevelBar" id="levelbar2">
+ <property name="max-value">5</property>
+ <property name="value">2</property>
+ <property name="mode">1</property>
+ <offsets>
+ <offset name="low" value="1"/>
+ <offset name="high" value="4"/>
+ <offset name="full" value="5"/>
+ </offsets>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box27">
+ <child>
+ <object class="GtkBox" id="box24">
+ <property name="hexpand">1</property>
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkScale" id="scale1">
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="draw-value">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale2">
+ <property name="sensitive">0</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="draw-value">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale5">
+ <property name="draw-value">0</property>
+ <property name="has-origin">0</property>
+ <property name="round-digits">0</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="restrict-to-fill-level">0</property>
+ <marks>
+ <mark value="0" position="bottom"></mark>
+ <mark value="1" position="bottom"></mark>
+ <mark value="2" position="bottom"></mark>
+ <mark value="3" position="bottom"></mark>
+ <mark value="4" position="bottom"></mark>
+ </marks>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box25">
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkBox" id="box28">
+ <property name="vexpand">1</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkProgressBar" id="progressbar5">
+ <property name="orientation">vertical</property>
+ <property name="fraction">0.5</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar6">
+ <property name="orientation">vertical</property>
+ <property name="fraction">0.5</property>
+ <property name="inverted">1</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box23">
+ <property name="vexpand">1</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkScale" id="scale3">
+ <property name="height-request">100</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="digits">1</property>
+ <property name="draw-value">1</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="scale4">
+ <property name="height-request">100</property>
+ <property name="sensitive">0</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="restrict-to-fill-level">0</property>
+ <property name="fill-level">75</property>
+ <property name="digits">1</property>
+ <property name="draw-value">1</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator3">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box26">
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">1</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <style>
+ <class name="border-inset"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="label" translatable="yes">&lt;b&gt;Inset&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <style>
+ <class name="border-outset"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="label" translatable="yes">&lt;b&gt;Outset&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <style>
+ <class name="border-groove"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label17">
+ <property name="label" translatable="yes">&lt;b&gt;Groove&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <style>
+ <class name="border-ridge"/>
+ </style>
+ <child type="label">
+ <object class="GtkLabel" id="label18">
+ <property name="label" translatable="yes">&lt;b&gt;Ridge&lt;/b&gt;</property>
+ <property name="use-markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator4">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box4">
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="width-request">150</property>
+ <property name="vscrollbar-policy">always</property>
+ <property name="has-frame">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTreeView" id="treeview1">
+ <property name="model">liststore1</property>
+ <property name="headers-clickable">0</property>
+ <property name="search-column">0</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn3">
+ <property name="title" translatable="yes">Cool</property>
+ <child>
+ <object class="GtkCellRendererToggle" id="cellrenderertoggle1"/>
+ <attributes>
+ <attribute name="active">0</attribute>
+ <attribute name="radio">4</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn4">
+ <property name="title" translatable="yes">Icon</property>
+ <property name="reorderable">1</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
+ <attributes>
+ <attribute name="icon_name">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <property name="title" translatable="yes">Name</property>
+ <property name="resizable">1</property>
+ <property name="reorderable">1</property>
+ <property name="sort-indicator">1</property>
+ <property name="sort-column-id">2</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext3">
+ <property name="ellipsize">end</property>
+ </object>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+ <property name="title" translatable="yes">Nick</property>
+ <property name="resizable">1</property>
+ <property name="reorderable">1</property>
+ <property name="sort-indicator">1</property>
+ <property name="sort-column-id">3</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext4">
+ <property name="ellipsize">end</property>
+ </object>
+ <attributes>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="has-frame">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="textview1">
+ <property name="buffer">textbuffer1</property>
+ <property name="wrap-mode">2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="separator5"/>
+ </child>
+ <child>
+ <object class="GtkBox" id="box5">
+ <property name="spacing">10</property>
+ <property name="homogeneous">1</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box6">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label5">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box7">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label6">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box8">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label7">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook2">
+ <property name="tab-pos">right</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box9">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label8">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box10">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label9">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box11">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label10">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook3">
+ <property name="tab-pos">bottom</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box12">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label11">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box13">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label12">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box14">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label13">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook4">
+ <property name="tab-pos">left</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="box15">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label14">
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box16">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label15">
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="box17">
+ <property name="orientation">vertical</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="label16">
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page2</property>
+ <property name="title" translatable="yes">Page 2</property>
+ <property name="child">
+ <object class="GtkOverlay" id="page2">
+ <child type="overlay">
+ <object class="GtkRevealer" id="page2revealer">
+ <property name="transition-type">swing-down</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkFrame" id="page2frame">
+ <style>
+ <class name="app-notification"/>
+ </style>
+ <child>
+ <object class="GtkBox" id="page2box">
+ <property name="spacing">20</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <child>
+ <object class="GtkLabel" id="page2note">
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label">NEWS!</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="page2reset">
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Reset</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="page2dismiss">
+ <property name="focus-on-click">0</property>
+ <property name="has-frame">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkSpinButton" id="verticalspin1">
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="verticalspin2">
+ <property name="sensitive">0</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid">
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">6</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkVolumeButton">
+ <property name="orientation">vertical</property>
+ <property name="valign">center</property>
+ <property name="value">.5</property>
+ <property name="halign">center</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScaleButton" id="mic-button">
+ <property name="has-tooltip">1</property>
+ <property name="icons">microphone-sensitivity-muted-symbolic
+microphone-sensitivity-high-symbolic
+microphone-sensitivity-low-symbolic
+microphone-sensitivity-medium-symbolic</property>
+ <property name="valign">center</property>
+ <property name="value">.5</property>
+ <property name="halign">center</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkFrame" id="page2frame1">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">1000</property>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page1</property>
+ <property name="icon-name">preferences-desktop-locale-symbolic</property>
+ <property name="title">News</property>
+ <property name="child">
+ <object class="GtkScrolledWindow" id="swo">
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="GtkTextView" id="tvo">
+ <property name="buffer">textbuffer2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page2</property>
+ <property name="icon-name">folder-pictures-symbolic</property>
+ <property name="title">Logo</property>
+ <property name="child">
+ <object class="GtkImage" id="imageo">
+ <property name="icon-name">org.gtk.WidgetFactory4</property>
+ <property name="pixel-size">256</property>
+ <style>
+ <class name="icon-dropshadow"/>
+ </style>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkActionBar" id="actionbar1">
+ <child type="center">
+ <object class="GtkStackSwitcher" id="switcher">
+ <property name="stack">stack</property>
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkMenuButton">
+ <property name="menu-model">dinner_menu</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="has-frame">1</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="min-content-height">200</property>
+ <property name="hexpand">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox">
+ <property name="selection-mode">none</property>
+ <property name="show-separators">1</property>
+ <child type="placeholder">
+ <object class="GtkLabel">
+ <property name="label">No rows found</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow1">
+ <property name="activatable">0</property>
+ <property name="selectable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 1</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="listboxrow1switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow2">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 2</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="draw-value">0</property>
+ <property name="width-request">150</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow3">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 3</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="listboxrow3image">
+ <property name="icon-name">object-select-symbolic</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="opacity">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow4">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 4</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="adjustment">adjustment1</property>
+ <property name="hexpand">1</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow5">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 5</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="listboxrow5button">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="icon-name">appointment-soon-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow6">
+ <property name="activatable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Row 6</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkFrame" id="page2frame2">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkPopoverMenuBar">
+ <property name="menu-model">menu_bar_model</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="toolbar">
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">New</property>
+ <property name="icon-name">document-new</property>
+ <property name="tooltip-text" translatable="yes">Create a new document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Save</property>
+ <property name="icon-name">document-save</property>
+ <property name="tooltip-text" translatable="yes">Save the current document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Search</property>
+ <property name="icon-name">edit-find</property>
+ <property name="action-name">win.search</property>
+ <property name="tooltip-text" translatable="yes">Search for it</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="sensitive">0</property>
+ <property name="label" translatable="yes">Insert</property>
+ <property name="icon-name">insert-image</property>
+ <property name="tooltip-text" translatable="yes">Insert something</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSearchBar" id="searchbar">
+ <child>
+ <object class="GtkSearchEntry"/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkInfoBar" id="infobar">
+ <property name="visible">0</property>
+ <property name="show-close-button">1</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label">You wanted to delete something.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="text3">
+ <property name="visible">True</property>
+ <property name="buffer">textbuffer1</property>
+ <property name="wrap-mode">2</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="statusbar"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="panedframe1">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkPaned">
+ <style>
+ <class name="view"/>
+ </style>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Left</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Right</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="panedframe2">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkPaned">
+ <property name="orientation">vertical</property>
+ <style>
+ <class name="view"/>
+ </style>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Top</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Bottom</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="filler2">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkCalendar">
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkExpander" id="expander1">
+ <property name="expanded">1</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="has-frame">1</property>
+ <property name="margin-top">6</property>
+ <property name="height-request">226</property>
+ <child>
+ <object class="GtkIconView" id="iconview1">
+ <property name="selection-mode">multiple</property>
+ <property name="model">iconsmodel</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="iconviewcell"/>
+ <attributes>
+ <attribute name="icon-name">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="decrease_button">
+ <property name="icon-name">zoom-out-symbolic</property>
+ <property name="tooltip-text">Normal icons</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="increase_button">
+ <property name="icon-name">zoom-in-symbolic</property>
+ <property name="tooltip-text">Large icons</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="reset_button">
+ <property name="icon-name">zoom-original-symbolic</property>
+ <property name="tooltip-text">Inherited icon size</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label19">
+ <property name="label" translatable="yes">Expander</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="info_dialog_button">
+ <property name="label" translatable="yes">_Inform</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="action_dialog_button">
+ <property name="label" translatable="yes">_Act</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="preference_dialog_button">
+ <property name="label" translatable="yes">_Configure</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="selection_dialog_button">
+ <property name="label" translatable="yes">_Select</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">page3</property>
+ <property name="title" translatable="yes">Page 3</property>
+ <property name="child">
+ <object class="GtkBox" id="page3">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar-policy">never</property>
+ <property name="vscrollbar-policy">always</property>
+ <property name="height-request">300</property>
+ <property name="has-frame">1</property>
+ <child>
+ <object class="GtkTreeView" id="charletree">
+ <property name="enable-grid-lines">vertical</property>
+ <property name="enable-tree-lines">1</property>
+ <property name="rubber-banding">1</property>
+ <property name="model">charlemodel</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection">
+ <property name="mode">multiple</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Name</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Birth</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn">
+ <property name="title" translatable="yes">Death</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="selectable">1</property>
+ <property name="halign">start</property>
+ <property name="use-markup">1</property>
+ <property name="label" translatable="yes">&lt;small&gt;Data source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Charlemagne#Ancestry&quot;&gt;Wikipedia&lt;/a&gt;&lt;/small&gt;</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar-policy">never</property>
+ <property name="vexpand">1</property>
+ <property name="has-frame">1</property>
+ <child>
+ <object class="GtkListBox" id="munsell">
+ <property name="selection-mode">multiple</property>
+ <property name="activate-on-single-click">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox" id="lockbox">
+ <property name="hexpand">1</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkMenuButton" id="open_menubutton">
+ <property name="halign">center</property>
+ <property name="popover">open_popover</property>
+ <property name="label">Open</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="record_button">
+ <property name="halign">center</property>
+ <style>
+ <class name="text-button"/>
+ <class name="image-button"/>
+ <class name="destructive-action"/>
+ </style>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkImage">
+ <property name="valign">baseline</property>
+ <property name="icon-name">media-record-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="valign">baseline</property>
+ <property name="label">Record</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkToggleButton" id="grid_button">
+ <property name="active">1</property>
+ <property name="icon-name">view-grid-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="list_button">
+ <property name="active">1</property>
+ <property name="group">grid_button</property>
+ <property name="icon-name">view-list-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="circular_button">
+ <property name="icon-name">emblem-system-symbolic</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLockButton" id="lockbutton"/>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="icon-name">view-more-symbolic</property>
+ <property name="popover">new_style_menu</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkStackSidebar">
+ <property name="stack">sidebar_stack</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStack" id="sidebar_stack">
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">id</property>
+ <property name="title">Identity</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="spacing">10</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">First Name</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Last Name</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">bd</property>
+ <property name="title">Birthdate</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="spacing">10</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkComboBoxText">
+ <property name="active">9</property>
+ <items>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9</item>
+ <item>10</item>
+ <item>11</item>
+ <item>12</item>
+ <item>13</item>
+ <item>14</item>
+ <item>15</item>
+ <item>16</item>
+ <item>17</item>
+ <item>18</item>
+ <item>19</item>
+ <item>20</item>
+ <item>21</item>
+ <item>22</item>
+ <item>23</item>
+ <item>24</item>
+ <item>25</item>
+ <item>26</item>
+ <item>27</item>
+ <item>28</item>
+ <item>29</item>
+ <item>30</item>
+ <item>31</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText">
+ <property name="active">9</property>
+ <items>
+ <item>January</item>
+ <item>February</item>
+ <item>March</item>
+ <item>April</item>
+ <item>May</item>
+ <item>June</item>
+ <item>July</item>
+ <item>August</item>
+ <item>September</item>
+ <item>October</item>
+ <item>November</item>
+ <item>December</item>
+ </items>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Year</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">ad</property>
+ <property name="title">Address</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Street</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">City</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text">Province</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">pg</property>
+ <property name="title">Pages</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkComboBoxText" id="page_combo">
+ <property name="active">0</property>
+ <items>
+ <item>Range</item>
+ <item>All</item>
+ <item>Current</item>
+ <item>-</item>
+ <item>None</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="range_from_spin">
+ <property name="adjustment">pg_adjustment</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="range_to_spin">
+ <property name="adjustment">pg_adjustment2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="print_button">
+ <property name="label">Print</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButton" id="toolbutton1">
+ <property name="icon-name">document-open-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton2">
+ <property name="icon-name">send-to-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton3">
+ <property name="icon-name">view-fullscreen-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="toolbutton4">
+ <property name="icon-name">star-new-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="hexpand">1</property>
+ <child>
+ <object class="GtkTextView" id="tooltextview"/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="cutbutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-cut-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="copybutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-copy-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="pastebutton">
+ <property name="sensitive">0</property>
+ <property name="icon-name">edit-paste-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="deletebutton">
+ <property name="sensitive">0</property>
+ <property name="valign">end</property>
+ <property name="icon-name">edit-delete-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkOverlay">
+ <child type="overlay">
+ <object class="GtkBox" id="totem_like_osd">
+ <property name="visible">0</property>
+ <property name="opacity">0.9</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="valign">end</property>
+ <style>
+ <class name="osd"/>
+ </style>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">pan-start-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">pan-end-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="hexpand">1</property>
+ <property name="draw-value">0</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkVolumeButton">
+ <property name="orientation">vertical</property>
+ <property name="value">.5</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="osd_frame">
+ <child>
+ <object class="GtkPaned">
+ <property name="wide-handle">1</property>
+ <child>
+ <object class="GtkNotebook">
+ <property name="show-border">0</property>
+ <child type="action-end">
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover2</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="closable_page_1">
+ <property name="height-request">120</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 1</property>
+ <property name="halign">center</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="has-frame">0</property>
+ <property name="focus-on-click">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="closable_page_2">
+ <property name="vexpand">1</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 2</property>
+ <property name="halign">center</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="has-frame">0</property>
+ <property name="focus-on-click">0</property>
+ <property name="icon-name">window-close-symbolic</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebook">
+ <property name="show-border">0</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox">
+ <property name="vexpand">1</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGestureClick">
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkEntry">
+ <property name="placeholder-text" translatable="yes">Name…</property>
+ <property name="completion">name_completion</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry">
+ <property name="show-emoji-icon">1</property>
+ <property name="placeholder-text" translatable="yes">Age…</property>
+ </object>
+ </child>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkNotebook">
+ <property name="scrollable">1</property>
+ <child type="action-end">
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox" id="box_for_context">
+ <property name="height-request">120</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 1</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="height-request">40</property>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 2</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 3</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 4</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="tab-expand">1</property>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Page 5</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorChooserWidget" id="cchooser">
+ <property name="show-editor">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkMessageDialog" id="info_dialog">
+ <property name="transient-for">window</property>
+ <property name="resizable">0</property>
+ <property name="modal">1</property>
+ <property name="text" translatable="yes">Do something?</property>
+ <property name="secondary-text" translatable="yes">If you do something,
+bad things might happen.</property>
+ <property name="hide-on-close">1</property>
+ <child type="action">
+ <object class="GtkButton" id="cancel_info_dialog">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="doit_info_dialog">
+ <property name="label" translatable="yes">_Do It</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_info_dialog</action-widget>
+ <action-widget response="ok">doit_info_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="action_dialog">
+ <property name="transient-for">window</property>
+ <property name="resizable">0</property>
+ <property name="modal">1</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Zelda</property>
+ <property name="hide-on-close">1</property>
+ <property name="default-widget">act_action_dialog</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="label" translatable="yes">To free the princess, you have to slay the dragon.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="cancel_action_dialog">
+ <property name="label" translatable="yes">_Run</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="act_action_dialog">
+ <property name="label" translatable="yes">_Act</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_action_dialog</action-widget>
+ <action-widget response="ok" default="true">act_action_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="preference_dialog">
+ <property name="transient-for">window</property>
+ <property name="modal">1</property>
+ <property name="resizable">0</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Settings</property>
+ <property name="hide-on-close">1</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkGrid">
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Details</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">details_entry</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="details_entry">
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">More D_etails</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">more_details_entry</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="more_details_entry">
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Level</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">level_scale</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="level_scale">
+ <property name="valign">baseline</property>
+ <property name="draw-value">0</property>
+ <property name="adjustment">adjustment1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label">_Mode</property>
+ <property name="use-underline">1</property>
+ <property name="mnemonic-widget">mode_switch</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="mode_switch">
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkDialog" id="selection_dialog">
+ <property name="transient-for">window</property>
+ <property name="modal">1</property>
+ <property name="use-header-bar">1</property>
+ <property name="title" translatable="yes">Choose one</property>
+ <property name="hide-on-close">1</property>
+ <property name="default-widget">select_selection_dialog</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <child>
+ <object class="GtkFlowBox" id="selection_flowbox">
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="min-children-per-line">3</property>
+ <property name="max-children-per-line">9</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="cancel_selection_dialog">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="select_selection_dialog">
+ <property name="label" translatable="yes">_Select</property>
+ <property name="use-underline">1</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_selection_dialog</action-widget>
+ <action-widget response="ok" default="true">select_selection_dialog</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkPopover" id="open_popover">
+ <child>
+ <object class="GtkGrid">
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="title_label">
+ <property name="label">Title:</property>
+ <property name="xalign">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="description_label">
+ <property name="valign">start</property>
+ <property name="label">Description:</property>
+ <property name="xalign">1</property>
+ <layout>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="valign">start</property>
+ <property name="has-frame">1</property>
+ <property name="min-content-height">70</property>
+ <property name="max-content-height">120</property>
+ <property name="min-content-width">100</property>
+ <property name="max-content-width">100</property>
+ <child>
+ <object class="GtkTextView" id="open_popover_textview">
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="open_popover_entry">
+ <property name="activates-default">1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkExpander">
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="label">Extra Info</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="extra_info_entry">
+ <property name="placeholder-text">Tell me anything…</property>
+ <property name="progress-fraction">0.2</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="halign">end</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ <property name="menu-model">gear_menu</property>
+ <property name="tooltip-text">This is a menu button</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="open_popover_button">
+ <property name="label">_Open</property>
+ <property name="use-underline">1</property>
+ <property name="sensitive">0</property>
+ <style>
+ <class name="suggested-action"/>
+ </style>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">vertical</property>
+ <widgets>
+ <widget name="listboxrow1"/>
+ <widget name="listboxrow2"/>
+ <widget name="listboxrow3"/>
+ <widget name="listboxrow4"/>
+ <widget name="listboxrow5"/>
+ <widget name="listboxrow6"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">both</property>
+ <widgets>
+ <widget name="panedframe1"/>
+ <widget name="panedframe2"/>
+ </widgets>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">No updates at this time</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover3">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">You&apos;re in too deep!</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="notebook_info_popover2">
+ <property name="autohide">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Hidden gems:</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="valign">center</property>
+ <property name="popover">notebook_info_popover3</property>
+ <property name="icon-name">emblem-important-symbolic</property>
+ <property name="has-frame">0</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="new_style_menu">
+ <child>
+ <object class="GtkStack">
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">main</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="circular-buttons"/>
+ </style>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">printer-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ <property name="action-name">app.print</property>
+ <property name="hexpand">1</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">emblem-shared-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ <property name="action-name">app.share</property>
+ <property name="hexpand">1</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Open in New Window</property>
+ <property name="action-name">app.open-in</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <style>
+ <class name="inline-buttons"/>
+ </style>
+ <child>
+ <object class="GtkLabel" id="cut_copy_paste_filler"/>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Edit</property>
+ <property name="xalign">0</property>
+ <property name="hexpand">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-cut-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-copy-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="icon">
+ <object class="GThemedIcon">
+ <property name="name">edit-paste-symbolic</property>
+ </object>
+ </property>
+ <property name="iconic">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Pin</property>
+ <property name="action-name">app.pin</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Select Labels…</property>
+ <property name="action-name">app.labels</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Share…</property>
+ <property name="action-name">app.share</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Basement</property>
+ <property name="menu-name">basement</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Large</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;large&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Medium</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;medium&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Small</property>
+ <property name="action-name">app.size</property>
+ <property name="action-target">&apos;small&apos;</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Move to Trash</property>
+ <property name="action-name">win.delete</property>
+ <property name="indicator-size-group">main-indicators</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">basement</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Basement</property>
+ <property name="role">title</property>
+ <property name="menu-name">main</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator"/>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Berk</property>
+ <property name="action-name">app.berk</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Broni</property>
+ <property name="action-name">app.broni</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">Drutt</property>
+ <property name="action-name">app.drutt</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton">
+ <property name="text">The Thing Upstairs</property>
+ <property name="action-name">app.upstairs</property>
+ <property name="indicator-size-group">basement-indicators</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup" id="main-indicators">
+ <widgets>
+ <widget name="cut_copy_paste_filler"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup" id="basement-indicators"/>
+ <menu id="new_style_menu_model">
+ <section>
+ <attribute name="display-hint">circular-buttons</attribute>
+ <item>
+ <attribute name="verb-icon">printer-symbolic</attribute>
+ <attribute name="action">app.print</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">emblem-shared-symbolic</attribute>
+ <attribute name="action">app.share</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Window</attribute>
+ <attribute name="action">app.open-in</attribute>
+ </item>
+ </section>
+ <section>
+ <attribute name="display-hint">inline-buttons</attribute>
+ <attribute name="label" translatable="yes">Edit</attribute>
+ <item>
+ <attribute name="verb-icon">edit-cut-symbolic</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">edit-copy-symbolic</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ <item>
+ <attribute name="verb-icon">edit-paste-symbolic</attribute>
+ <attribute name="action">app.paste</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Pin</attribute>
+ <attribute name="action">app.pin</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Select Labels…</attribute>
+ <attribute name="action">app.labels</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Share…</attribute>
+ <attribute name="action">app.share</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Basement</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Berk</attribute>
+ <attribute name="action">app.berk</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Broni</attribute>
+ <attribute name="action">app.broni</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Drutt</attribute>
+ <attribute name="action">app.drutt</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">The Thing Upstairs</attribute>
+ <attribute name="action">app.upstairs</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Large</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">large</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Medium</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">medium</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Small</attribute>
+ <attribute name="action">app.size</attribute>
+ <attribute name="target">small</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Move to Trash</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="new_style_context_menu_model">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open</attribute>
+ <attribute name="action">win.open</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Tab</attribute>
+ <attribute name="action">app.open-tab</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Open in New Window</attribute>
+ <attribute name="action">app.open-window</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Cut</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Copy</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">Options</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Option A</attribute>
+ <attribute name="action">app.option-a</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option B</attribute>
+ <attribute name="action">app.option-b</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option C</attribute>
+ <attribute name="action">app.option-c</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Option D</attribute>
+ <attribute name="action">app.option-d</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Move to Trash</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="menu_bar_model">
+ <submenu>
+ <attribute name="label" translatable="yes">_File</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_New</attribute>
+ <attribute name="action">app.new</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Open</attribute>
+ <attribute name="action">app.open</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Save</attribute>
+ <attribute name="action">app.save</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Save _As</attribute>
+ <attribute name="action">app.save-as</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Quit</attribute>
+ <attribute name="action">app.quit</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Edit</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Cu_t</attribute>
+ <attribute name="action">app.cut</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Copy</attribute>
+ <attribute name="action">app.copy</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Paste</attribute>
+ <attribute name="action">app.paste</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Delete</attribute>
+ <attribute name="action">win.delete</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Search</attribute>
+ <attribute name="action">win.search</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu>
+ <attribute name="label" translatable="yes">C_hecks</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-on</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-off</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-on-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-off-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Check</attribute>
+ <attribute name="action">app.check-no-action</attribute>
+ <attribute name="hidden-when">action-missing</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Radios</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x</attribute>
+ <attribute name="target">x</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x</attribute>
+ <attribute name="target">y</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x-disabled</attribute>
+ <attribute name="target">x</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-x-disabled</attribute>
+ <attribute name="target">y</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Radio</attribute>
+ <attribute name="action">app.radio-no-action</attribute>
+ <attribute name="hidden-when">action-missing</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_View</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Dark Theme</attribute>
+ <attribute name="action">win.dark</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Toolbar</attribute>
+ <attribute name="action">win.toolbar</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Statusbar</attribute>
+ <attribute name="action">win.statusbar</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Select Background</attribute>
+ <attribute name="action">win.background</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <item>
+ <attribute name="label" translatable="yes">About</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </submenu>
+ </menu>
+</interface>
diff --git a/testsuite/tools/meson.build b/testsuite/tools/meson.build
index 96ac7fda06..239e1b0e04 100644
--- a/testsuite/tools/meson.build
+++ b/testsuite/tools/meson.build
@@ -2,7 +2,7 @@ bash = find_program('bash', required : false)
if bash.found()
test_env = environment()
- foreach t : ['simplify', 'simplify-3to4', 'validate', 'settings']
+ foreach t : ['simplify', 'simplify-3to4', 'validate', 'enumerate', 'settings']
test(t,
find_program(t, dirs: meson.current_source_dir()),
workdir: meson.current_build_dir(),
diff --git a/testsuite/tools/validate b/testsuite/tools/validate
index 42048ef7b4..414a5053b3 100755
--- a/testsuite/tools/validate
+++ b/testsuite/tools/validate
@@ -21,7 +21,7 @@ for t in ${TESTS[*]}; do
cd $TEST_DATA_DIR
- $GTK_BUILDER_TOOL validate $(basename $t) 2>$result
+ $GTK_BUILDER_TOOL validate --deprecations $(basename $t) 2>$result
cd $OLDPWD