[libadwaita/wip/exalm/demo-cleanups: 7/21] demo: Split lists page into a separate class




commit f7d71984870fd2395da98e737d9dc64bb1c4c4b3
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Thu Dec 9 16:04:24 2021 +0500

    demo: Split lists page into a separate class

 demo/adw-demo-window.c                  |   2 +
 demo/adw-demo-window.ui                 | 162 +-----------------------------
 demo/adwaita-demo.gresources.xml        |   1 +
 demo/meson.build                        |   1 +
 demo/pages/lists/adw-demo-page-lists.c  |  24 +++++
 demo/pages/lists/adw-demo-page-lists.h  |  11 +++
 demo/pages/lists/adw-demo-page-lists.ui | 169 ++++++++++++++++++++++++++++++++
 7 files changed, 209 insertions(+), 161 deletions(-)
---
diff --git a/demo/adw-demo-window.c b/demo/adw-demo-window.c
index fc121f23..cecc194b 100644
--- a/demo/adw-demo-window.c
+++ b/demo/adw-demo-window.c
@@ -3,6 +3,7 @@
 #include <glib/gi18n.h>
 #include "pages/clamp/adw-demo-page-clamp.h"
 #include "pages/leaflet/adw-demo-page-leaflet.h"
+#include "pages/lists/adw-demo-page-lists.h"
 #include "pages/welcome/adw-demo-page-welcome.h"
 #include "adw-flap-demo-window.h"
 #include "adw-style-demo-window.h"
@@ -924,6 +925,7 @@ adw_demo_window_init (AdwDemoWindow *self)
 
   g_type_ensure (ADW_TYPE_DEMO_PAGE_CLAMP);
   g_type_ensure (ADW_TYPE_DEMO_PAGE_LEAFLET);
+  g_type_ensure (ADW_TYPE_DEMO_PAGE_LISTS);
   g_type_ensure (ADW_TYPE_DEMO_PAGE_WELCOME);
 
   gtk_widget_init_template (GTK_WIDGET (self));
diff --git a/demo/adw-demo-window.ui b/demo/adw-demo-window.ui
index 0c0f9f7a..30103f8f 100644
--- a/demo/adw-demo-window.ui
+++ b/demo/adw-demo-window.ui
@@ -149,169 +149,9 @@
                         </child>
                         <child>
                           <object class="GtkStackPage">
-                            <property name="name">lists</property>
                             <property name="title" translatable="yes">Lists</property>
                             <property name="child">
-                              <object class="AdwStatusPage">
-                                <property name="icon-name">widget-list-symbolic</property>
-                                <property name="title" translatable="yes">Lists</property>
-                                <property name="description" translatable="yes">Rows and helpers for 
GtkListBox.</property>
-                                <property name="child">
-                                  <object class="AdwClamp">
-                                    <property name="maximum-size">400</property>
-                                    <property name="tightening-threshold">300</property>
-                                    <property name="child">
-                                      <object class="GtkBox">
-                                        <property name="orientation">vertical</property>
-                                        <property name="spacing">12</property>
-                                        <child>
-                                          <object class="AdwPreferencesGroup">
-                                            <child>
-                                              <object class="AdwActionRow">
-                                                <property 
name="icon-name">row-preferences-symbolic</property>
-                                                <property name="subtitle" translatable="yes">They also have 
a subtitle and an icon</property>
-                                                <property name="title" translatable="yes">Rows have a 
title</property>
-                                              </object>
-                                            </child>
-                                            <child>
-                                              <object class="AdwActionRow">
-                                                <property name="title" translatable="yes">Rows can have 
suffix widgets</property>
-                                                <child>
-                                                  <object class="GtkButton">
-                                                    <property name="label" 
translatable="yes">Frobnicate</property>
-                                                    <property name="valign">center</property>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                            </child>
-                                          </object>
-                                        </child>
-                                        <child>
-                                          <object class="AdwPreferencesGroup">
-                                            <child>
-                                              <object class="AdwActionRow">
-                                                <property name="activatable_widget">radio_button_1</property>
-                                                <property name="title" translatable="yes">Rows can have 
prefix widgets</property>
-                                                <child type="prefix">
-                                                  <object class="GtkCheckButton" id="radio_button_1">
-                                                    <property name="valign">center</property>
-                                                    <property name="active">True</property>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                            </child>
-                                            <child>
-                                              <object class="AdwActionRow">
-                                                <property name="activatable_widget">radio_button_2</property>
-                                                <property name="title" translatable="yes">Rows can have 
prefix widgets</property>
-                                                <child type="prefix">
-                                                  <object class="GtkCheckButton" id="radio_button_2">
-                                                    <property name="group">radio_button_1</property>
-                                                    <property name="valign">center</property>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                            </child>
-                                          </object>
-                                        </child>
-                                        <child>
-                                          <object class="AdwPreferencesGroup">
-                                            <property name="title" translatable="yes">Combo Rows</property>
-                                            <child>
-                                              <object class="AdwComboRow" id="combo_row">
-                                                <property name="title" translatable="yes">Combo 
Row</property>
-                                                <property name="model">
-                                                  <object class="GtkStringList">
-                                                    <items>
-                                                      <item>Foo</item>
-                                                      <item>Bar</item>
-                                                      <item>Baz</item>
-                                                    </items>
-                                                  </object>
-                                                </property>
-                                              </object>
-                                            </child>
-                                            <child>
-                                              <object class="AdwComboRow" id="enum_combo_row">
-                                                <property name="subtitle" translatable="yes">This combo row 
was created from an enumeration</property>
-                                                <property name="title" translatable="yes">Enumeration Combo 
Row</property>
-                                                <property name="model">
-                                                  <object class="AdwEnumListModel">
-                                                    <property name="enum-type">GtkLicense</property>
-                                                  </object>
-                                                </property>
-                                                <property name="expression">
-                                                  <lookup type="AdwEnumListItem" name="nick"/>
-                                                </property>
-                                              </object>
-                                            </child>
-                                          </object>
-                                        </child>
-                                        <child>
-                                          <object class="AdwPreferencesGroup">
-                                            <property name="title" translatable="yes">Expander 
Rows</property>
-                                            <child>
-                                              <object class="AdwExpanderRow" id="expander_row">
-                                                <property name="title" translatable="yes">Expander 
Row</property>
-                                                <child>
-                                                  <object class="AdwActionRow">
-                                                    <property name="title" translatable="yes">A Nested 
Row</property>
-                                                  </object>
-                                                </child>
-                                                <child>
-                                                  <object class="AdwActionRow">
-                                                    <property name="title" translatable="yes">Another Nested 
Row</property>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                            </child>
-                                            <child>
-                                              <object class="AdwExpanderRow" id="action_expander_row">
-                                                <property name="title" translatable="yes">Expander Row With 
an Action</property>
-                                                <child type="action">
-                                                  <object class="GtkButton">
-                                                    <property name="valign">center</property>
-                                                    <property name="icon-name">row-copy-symbolic</property>
-                                                    <style>
-                                                      <class name="flat"/>
-                                                    </style>
-                                                  </object>
-                                                </child>
-                                                <child>
-                                                  <object class="AdwActionRow">
-                                                    <property name="title" translatable="yes">A Nested 
Row</property>
-                                                  </object>
-                                                </child>
-                                                <child>
-                                                  <object class="AdwActionRow">
-                                                    <property name="title" translatable="yes">Another Nested 
Row</property>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                            </child>
-                                            <child>
-                                              <object class="AdwExpanderRow" id="enable_expander_row">
-                                                <property name="show_enable_switch">True</property>
-                                                <property name="title" translatable="yes">Toggleable 
Expander Row</property>
-                                                <child>
-                                                  <object class="AdwActionRow">
-                                                    <property name="title" translatable="yes">A Nested 
Row</property>
-                                                  </object>
-                                                </child>
-                                                <child>
-                                                  <object class="AdwActionRow">
-                                                    <property name="title" translatable="yes">Another Nested 
Row</property>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                            </child>
-                                          </object>
-                                        </child>
-                                      </object>
-                                    </property>
-                                  </object>
-                                </property>
-                              </object>
+                              <object class="AdwDemoPageLists"/>
                             </property>
                           </object>
                         </child>
diff --git a/demo/adwaita-demo.gresources.xml b/demo/adwaita-demo.gresources.xml
index c3f5d793..d73e1f1c 100644
--- a/demo/adwaita-demo.gresources.xml
+++ b/demo/adwaita-demo.gresources.xml
@@ -43,6 +43,7 @@
   <gresource prefix="/org/gnome/Adwaita1/Demo/ui">
     <file preprocess="xml-stripblanks">pages/clamp/adw-demo-page-clamp.ui</file>
     <file preprocess="xml-stripblanks">pages/leaflet/adw-demo-page-leaflet.ui</file>
+    <file preprocess="xml-stripblanks">pages/lists/adw-demo-page-lists.ui</file>
     <file preprocess="xml-stripblanks">pages/welcome/adw-demo-page-welcome.ui</file>
     <file preprocess="xml-stripblanks">adw-demo-preferences-window.ui</file>
     <file preprocess="xml-stripblanks">adw-demo-window.ui</file>
diff --git a/demo/meson.build b/demo/meson.build
index 3e05af16..659c3f38 100644
--- a/demo/meson.build
+++ b/demo/meson.build
@@ -14,6 +14,7 @@ adwaita_demo_sources = [
 
   'pages/clamp/adw-demo-page-clamp.c',
   'pages/leaflet/adw-demo-page-leaflet.c',
+  'pages/lists/adw-demo-page-lists.c',
   'pages/welcome/adw-demo-page-welcome.c',
 
   'adwaita-demo.c',
diff --git a/demo/pages/lists/adw-demo-page-lists.c b/demo/pages/lists/adw-demo-page-lists.c
new file mode 100644
index 00000000..594fa2ca
--- /dev/null
+++ b/demo/pages/lists/adw-demo-page-lists.c
@@ -0,0 +1,24 @@
+#include "adw-demo-page-lists.h"
+
+#include <glib/gi18n.h>
+
+struct _AdwDemoPageLists
+{
+  AdwBin parent_instance;
+};
+
+G_DEFINE_TYPE (AdwDemoPageLists, adw_demo_page_lists, ADW_TYPE_BIN)
+
+static void
+adw_demo_page_lists_class_init (AdwDemoPageListsClass *klass)
+{
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/Adwaita1/Demo/ui/pages/lists/adw-demo-page-lists.ui");
+}
+
+static void
+adw_demo_page_lists_init (AdwDemoPageLists *self)
+{
+  gtk_widget_init_template (GTK_WIDGET (self));
+}
diff --git a/demo/pages/lists/adw-demo-page-lists.h b/demo/pages/lists/adw-demo-page-lists.h
new file mode 100644
index 00000000..711169d2
--- /dev/null
+++ b/demo/pages/lists/adw-demo-page-lists.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include <adwaita.h>
+
+G_BEGIN_DECLS
+
+#define ADW_TYPE_DEMO_PAGE_LISTS (adw_demo_page_lists_get_type())
+
+G_DECLARE_FINAL_TYPE (AdwDemoPageLists, adw_demo_page_lists, ADW, DEMO_PAGE_LISTS, AdwBin)
+
+G_END_DECLS
diff --git a/demo/pages/lists/adw-demo-page-lists.ui b/demo/pages/lists/adw-demo-page-lists.ui
new file mode 100644
index 00000000..637f120e
--- /dev/null
+++ b/demo/pages/lists/adw-demo-page-lists.ui
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk" version="4.0"/>
+  <requires lib="libadwaita" version="1.0"/>
+  <template class="AdwDemoPageLists" parent="AdwBin">
+    <property name="child">
+      <object class="AdwStatusPage">
+        <property name="icon-name">widget-list-symbolic</property>
+        <property name="title" translatable="yes">Lists</property>
+        <property name="description" translatable="yes">Rows and helpers for GtkListBox.</property>
+        <property name="child">
+          <object class="AdwClamp">
+            <property name="maximum-size">400</property>
+            <property name="tightening-threshold">300</property>
+            <property name="child">
+              <object class="GtkBox">
+                <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="AdwPreferencesGroup">
+                    <child>
+                      <object class="AdwActionRow">
+                        <property name="icon-name">row-preferences-symbolic</property>
+                        <property name="subtitle" translatable="yes">They also have a subtitle and an 
icon</property>
+                        <property name="title" translatable="yes">Rows have a title</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="AdwActionRow">
+                        <property name="title" translatable="yes">Rows can have suffix widgets</property>
+                        <child>
+                          <object class="GtkButton">
+                            <property name="label" translatable="yes">Frobnicate</property>
+                            <property name="valign">center</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="AdwPreferencesGroup">
+                    <child>
+                      <object class="AdwActionRow">
+                        <property name="activatable_widget">radio_button_1</property>
+                        <property name="title" translatable="yes">Rows can have prefix widgets</property>
+                        <child type="prefix">
+                          <object class="GtkCheckButton" id="radio_button_1">
+                            <property name="valign">center</property>
+                            <property name="active">True</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="AdwActionRow">
+                        <property name="activatable_widget">radio_button_2</property>
+                        <property name="title" translatable="yes">Rows can have prefix widgets</property>
+                        <child type="prefix">
+                          <object class="GtkCheckButton" id="radio_button_2">
+                            <property name="group">radio_button_1</property>
+                            <property name="valign">center</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="AdwPreferencesGroup">
+                    <property name="title" translatable="yes">Combo Rows</property>
+                    <child>
+                      <object class="AdwComboRow" id="combo_row">
+                        <property name="title" translatable="yes">Combo Row</property>
+                        <property name="model">
+                          <object class="GtkStringList">
+                            <items>
+                              <item>Foo</item>
+                              <item>Bar</item>
+                              <item>Baz</item>
+                            </items>
+                          </object>
+                        </property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="AdwComboRow" id="enum_combo_row">
+                        <property name="subtitle" translatable="yes">This combo row was created from an 
enumeration</property>
+                        <property name="title" translatable="yes">Enumeration Combo Row</property>
+                        <property name="model">
+                          <object class="AdwEnumListModel">
+                            <property name="enum-type">GtkLicense</property>
+                          </object>
+                        </property>
+                        <property name="expression">
+                          <lookup type="AdwEnumListItem" name="nick"/>
+                        </property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="AdwPreferencesGroup">
+                    <property name="title" translatable="yes">Expander Rows</property>
+                    <child>
+                      <object class="AdwExpanderRow" id="expander_row">
+                        <property name="title" translatable="yes">Expander Row</property>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">A Nested Row</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">Another Nested Row</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="AdwExpanderRow" id="action_expander_row">
+                        <property name="title" translatable="yes">Expander Row With an Action</property>
+                        <child type="action">
+                          <object class="GtkButton">
+                            <property name="valign">center</property>
+                            <property name="icon-name">row-copy-symbolic</property>
+                            <style>
+                              <class name="flat"/>
+                            </style>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">A Nested Row</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">Another Nested Row</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="AdwExpanderRow" id="enable_expander_row">
+                        <property name="show_enable_switch">True</property>
+                        <property name="title" translatable="yes">Toggleable Expander Row</property>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">A Nested Row</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">Another Nested Row</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </property>
+          </object>
+        </property>
+      </object>
+    </property>
+  </template>
+</interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]