examples: Deprecation cleanup
authorMatthias Clasen <mclasen@redhat.com>
Fri, 4 Aug 2023 12:36:38 +0000 (08:36 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 4 Aug 2023 12:38:00 +0000 (08:38 -0400)
examples/application6/exampleappprefs.c
examples/application6/prefs.ui
examples/application7/exampleappprefs.c
examples/application7/prefs.ui
examples/application8/exampleappprefs.c
examples/application8/prefs.ui
examples/application9/exampleappprefs.c
examples/application9/prefs.ui

index 4bdf6542ca845be1ee0ff004d8c2bca494c4aac1..a5372e602ddcbc2f342526b7e2a430ba62008aa7 100644 (file)
@@ -15,18 +15,78 @@ struct _ExampleAppPrefs
 
 G_DEFINE_TYPE (ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
 
+static gboolean
+string_to_font_desc (GValue   *value,
+                     GVariant *variant,
+                     gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  PangoFontDescription *desc;
+
+  desc = pango_font_description_from_string (s);
+  g_value_take_boxed (value, desc);
+
+  return TRUE;
+}
+
+static GVariant *
+font_desc_to_string (const GValue       *value,
+                     const GVariantType *expected_type,
+                     gpointer            user_data)
+{
+  PangoFontDescription *desc = g_value_get_boxed (value);
+  char *s = pango_font_description_to_string (desc);
+  return g_variant_new_take_string (s);
+}
+
+static gboolean
+transition_to_pos (GValue   *value,
+                   GVariant *variant,
+                   gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  if (strcmp (s, "none") == 0)
+    g_value_set_uint (value, 0);
+  else if (strcmp (s, "crossfade") == 0)
+    g_value_set_uint (value, 1);
+  else
+    g_value_set_uint (value, 2);
+
+  return TRUE;
+}
+
+static GVariant *
+pos_to_transition (const GValue       *value,
+                   const GVariantType *expected_type,
+                   gpointer            user_data)
+{
+  switch (g_value_get_uint (value))
+    {
+    case 0: return g_variant_new_string ("none");
+    case 1: return g_variant_new_string ("crossfade");
+    case 2: return g_variant_new_string ("slide-left-right");
+    default: g_assert_not_reached ();
+    }
+}
+
 static void
 example_app_prefs_init (ExampleAppPrefs *prefs)
 {
   gtk_widget_init_template (GTK_WIDGET (prefs));
   prefs->settings = g_settings_new ("org.gtk.exampleapp");
 
-  g_settings_bind (prefs->settings, "font",
-                   prefs->font, "font",
-                   G_SETTINGS_BIND_DEFAULT);
-  g_settings_bind (prefs->settings, "transition",
-                   prefs->transition, "active-id",
-                   G_SETTINGS_BIND_DEFAULT);
+  g_settings_bind_with_mapping (prefs->settings, "font",
+                                prefs->font, "font-desc",
+                                G_SETTINGS_BIND_DEFAULT,
+                                string_to_font_desc,
+                                font_desc_to_string,
+                                NULL, NULL);
+  g_settings_bind_with_mapping (prefs->settings, "transition",
+                                prefs->transition, "selected",
+                                G_SETTINGS_BIND_DEFAULT,
+                                transition_to_pos,
+                                pos_to_transition,
+                                NULL, NULL);
 }
 
 static void
index 04ca33c92ded727cac05dc9de61aab2450793364..4d58c291e3c1fb531c9f455fc56e06bd60611738 100644 (file)
               </object>
             </child>
             <child>
-              <object class="GtkFontButton" id="font">
+              <object class="GtkFontDialogButton" id="font">
+                <property name="dialog">
+                  <object class="GtkFontDialog"/>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">0</property>
               </object>
             </child>
             <child>
-              <object class="GtkComboBoxText" id="transition">
-                <items>
-                  <item translatable="yes" id="none">None</item>
-                  <item translatable="yes" id="crossfade">Fade</item>
-                  <item translatable="yes" id="slide-left-right">Slide</item>
-                </items>
+              <object class="GtkDropDown" id="transition">
+                <property name="model">
+                  <object class="GtkStringList">
+                    <items>
+                      <item translatable="yes">None</item>
+                      <item translatable="yes">Fade</item>
+                      <item translatable="yes">Slide</item>
+                    </items>
+                  </object>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">1</property>
index 4bdf6542ca845be1ee0ff004d8c2bca494c4aac1..a5372e602ddcbc2f342526b7e2a430ba62008aa7 100644 (file)
@@ -15,18 +15,78 @@ struct _ExampleAppPrefs
 
 G_DEFINE_TYPE (ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
 
+static gboolean
+string_to_font_desc (GValue   *value,
+                     GVariant *variant,
+                     gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  PangoFontDescription *desc;
+
+  desc = pango_font_description_from_string (s);
+  g_value_take_boxed (value, desc);
+
+  return TRUE;
+}
+
+static GVariant *
+font_desc_to_string (const GValue       *value,
+                     const GVariantType *expected_type,
+                     gpointer            user_data)
+{
+  PangoFontDescription *desc = g_value_get_boxed (value);
+  char *s = pango_font_description_to_string (desc);
+  return g_variant_new_take_string (s);
+}
+
+static gboolean
+transition_to_pos (GValue   *value,
+                   GVariant *variant,
+                   gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  if (strcmp (s, "none") == 0)
+    g_value_set_uint (value, 0);
+  else if (strcmp (s, "crossfade") == 0)
+    g_value_set_uint (value, 1);
+  else
+    g_value_set_uint (value, 2);
+
+  return TRUE;
+}
+
+static GVariant *
+pos_to_transition (const GValue       *value,
+                   const GVariantType *expected_type,
+                   gpointer            user_data)
+{
+  switch (g_value_get_uint (value))
+    {
+    case 0: return g_variant_new_string ("none");
+    case 1: return g_variant_new_string ("crossfade");
+    case 2: return g_variant_new_string ("slide-left-right");
+    default: g_assert_not_reached ();
+    }
+}
+
 static void
 example_app_prefs_init (ExampleAppPrefs *prefs)
 {
   gtk_widget_init_template (GTK_WIDGET (prefs));
   prefs->settings = g_settings_new ("org.gtk.exampleapp");
 
-  g_settings_bind (prefs->settings, "font",
-                   prefs->font, "font",
-                   G_SETTINGS_BIND_DEFAULT);
-  g_settings_bind (prefs->settings, "transition",
-                   prefs->transition, "active-id",
-                   G_SETTINGS_BIND_DEFAULT);
+  g_settings_bind_with_mapping (prefs->settings, "font",
+                                prefs->font, "font-desc",
+                                G_SETTINGS_BIND_DEFAULT,
+                                string_to_font_desc,
+                                font_desc_to_string,
+                                NULL, NULL);
+  g_settings_bind_with_mapping (prefs->settings, "transition",
+                                prefs->transition, "selected",
+                                G_SETTINGS_BIND_DEFAULT,
+                                transition_to_pos,
+                                pos_to_transition,
+                                NULL, NULL);
 }
 
 static void
index 04ca33c92ded727cac05dc9de61aab2450793364..4d58c291e3c1fb531c9f455fc56e06bd60611738 100644 (file)
               </object>
             </child>
             <child>
-              <object class="GtkFontButton" id="font">
+              <object class="GtkFontDialogButton" id="font">
+                <property name="dialog">
+                  <object class="GtkFontDialog"/>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">0</property>
               </object>
             </child>
             <child>
-              <object class="GtkComboBoxText" id="transition">
-                <items>
-                  <item translatable="yes" id="none">None</item>
-                  <item translatable="yes" id="crossfade">Fade</item>
-                  <item translatable="yes" id="slide-left-right">Slide</item>
-                </items>
+              <object class="GtkDropDown" id="transition">
+                <property name="model">
+                  <object class="GtkStringList">
+                    <items>
+                      <item translatable="yes">None</item>
+                      <item translatable="yes">Fade</item>
+                      <item translatable="yes">Slide</item>
+                    </items>
+                  </object>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">1</property>
index 4bdf6542ca845be1ee0ff004d8c2bca494c4aac1..a5372e602ddcbc2f342526b7e2a430ba62008aa7 100644 (file)
@@ -15,18 +15,78 @@ struct _ExampleAppPrefs
 
 G_DEFINE_TYPE (ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
 
+static gboolean
+string_to_font_desc (GValue   *value,
+                     GVariant *variant,
+                     gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  PangoFontDescription *desc;
+
+  desc = pango_font_description_from_string (s);
+  g_value_take_boxed (value, desc);
+
+  return TRUE;
+}
+
+static GVariant *
+font_desc_to_string (const GValue       *value,
+                     const GVariantType *expected_type,
+                     gpointer            user_data)
+{
+  PangoFontDescription *desc = g_value_get_boxed (value);
+  char *s = pango_font_description_to_string (desc);
+  return g_variant_new_take_string (s);
+}
+
+static gboolean
+transition_to_pos (GValue   *value,
+                   GVariant *variant,
+                   gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  if (strcmp (s, "none") == 0)
+    g_value_set_uint (value, 0);
+  else if (strcmp (s, "crossfade") == 0)
+    g_value_set_uint (value, 1);
+  else
+    g_value_set_uint (value, 2);
+
+  return TRUE;
+}
+
+static GVariant *
+pos_to_transition (const GValue       *value,
+                   const GVariantType *expected_type,
+                   gpointer            user_data)
+{
+  switch (g_value_get_uint (value))
+    {
+    case 0: return g_variant_new_string ("none");
+    case 1: return g_variant_new_string ("crossfade");
+    case 2: return g_variant_new_string ("slide-left-right");
+    default: g_assert_not_reached ();
+    }
+}
+
 static void
 example_app_prefs_init (ExampleAppPrefs *prefs)
 {
   gtk_widget_init_template (GTK_WIDGET (prefs));
   prefs->settings = g_settings_new ("org.gtk.exampleapp");
 
-  g_settings_bind (prefs->settings, "font",
-                   prefs->font, "font",
-                   G_SETTINGS_BIND_DEFAULT);
-  g_settings_bind (prefs->settings, "transition",
-                   prefs->transition, "active-id",
-                   G_SETTINGS_BIND_DEFAULT);
+  g_settings_bind_with_mapping (prefs->settings, "font",
+                                prefs->font, "font-desc",
+                                G_SETTINGS_BIND_DEFAULT,
+                                string_to_font_desc,
+                                font_desc_to_string,
+                                NULL, NULL);
+  g_settings_bind_with_mapping (prefs->settings, "transition",
+                                prefs->transition, "selected",
+                                G_SETTINGS_BIND_DEFAULT,
+                                transition_to_pos,
+                                pos_to_transition,
+                                NULL, NULL);
 }
 
 static void
index 04ca33c92ded727cac05dc9de61aab2450793364..4d58c291e3c1fb531c9f455fc56e06bd60611738 100644 (file)
               </object>
             </child>
             <child>
-              <object class="GtkFontButton" id="font">
+              <object class="GtkFontDialogButton" id="font">
+                <property name="dialog">
+                  <object class="GtkFontDialog"/>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">0</property>
               </object>
             </child>
             <child>
-              <object class="GtkComboBoxText" id="transition">
-                <items>
-                  <item translatable="yes" id="none">None</item>
-                  <item translatable="yes" id="crossfade">Fade</item>
-                  <item translatable="yes" id="slide-left-right">Slide</item>
-                </items>
+              <object class="GtkDropDown" id="transition">
+                <property name="model">
+                  <object class="GtkStringList">
+                    <items>
+                      <item translatable="yes">None</item>
+                      <item translatable="yes">Fade</item>
+                      <item translatable="yes">Slide</item>
+                    </items>
+                  </object>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">1</property>
index 4bdf6542ca845be1ee0ff004d8c2bca494c4aac1..a5372e602ddcbc2f342526b7e2a430ba62008aa7 100644 (file)
@@ -15,18 +15,78 @@ struct _ExampleAppPrefs
 
 G_DEFINE_TYPE (ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
 
+static gboolean
+string_to_font_desc (GValue   *value,
+                     GVariant *variant,
+                     gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  PangoFontDescription *desc;
+
+  desc = pango_font_description_from_string (s);
+  g_value_take_boxed (value, desc);
+
+  return TRUE;
+}
+
+static GVariant *
+font_desc_to_string (const GValue       *value,
+                     const GVariantType *expected_type,
+                     gpointer            user_data)
+{
+  PangoFontDescription *desc = g_value_get_boxed (value);
+  char *s = pango_font_description_to_string (desc);
+  return g_variant_new_take_string (s);
+}
+
+static gboolean
+transition_to_pos (GValue   *value,
+                   GVariant *variant,
+                   gpointer  user_data)
+{
+  const char *s = g_variant_get_string (variant, NULL);
+  if (strcmp (s, "none") == 0)
+    g_value_set_uint (value, 0);
+  else if (strcmp (s, "crossfade") == 0)
+    g_value_set_uint (value, 1);
+  else
+    g_value_set_uint (value, 2);
+
+  return TRUE;
+}
+
+static GVariant *
+pos_to_transition (const GValue       *value,
+                   const GVariantType *expected_type,
+                   gpointer            user_data)
+{
+  switch (g_value_get_uint (value))
+    {
+    case 0: return g_variant_new_string ("none");
+    case 1: return g_variant_new_string ("crossfade");
+    case 2: return g_variant_new_string ("slide-left-right");
+    default: g_assert_not_reached ();
+    }
+}
+
 static void
 example_app_prefs_init (ExampleAppPrefs *prefs)
 {
   gtk_widget_init_template (GTK_WIDGET (prefs));
   prefs->settings = g_settings_new ("org.gtk.exampleapp");
 
-  g_settings_bind (prefs->settings, "font",
-                   prefs->font, "font",
-                   G_SETTINGS_BIND_DEFAULT);
-  g_settings_bind (prefs->settings, "transition",
-                   prefs->transition, "active-id",
-                   G_SETTINGS_BIND_DEFAULT);
+  g_settings_bind_with_mapping (prefs->settings, "font",
+                                prefs->font, "font-desc",
+                                G_SETTINGS_BIND_DEFAULT,
+                                string_to_font_desc,
+                                font_desc_to_string,
+                                NULL, NULL);
+  g_settings_bind_with_mapping (prefs->settings, "transition",
+                                prefs->transition, "selected",
+                                G_SETTINGS_BIND_DEFAULT,
+                                transition_to_pos,
+                                pos_to_transition,
+                                NULL, NULL);
 }
 
 static void
index 04ca33c92ded727cac05dc9de61aab2450793364..4d58c291e3c1fb531c9f455fc56e06bd60611738 100644 (file)
               </object>
             </child>
             <child>
-              <object class="GtkFontButton" id="font">
+              <object class="GtkFontDialogButton" id="font">
+                <property name="dialog">
+                  <object class="GtkFontDialog"/>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">0</property>
               </object>
             </child>
             <child>
-              <object class="GtkComboBoxText" id="transition">
-                <items>
-                  <item translatable="yes" id="none">None</item>
-                  <item translatable="yes" id="crossfade">Fade</item>
-                  <item translatable="yes" id="slide-left-right">Slide</item>
-                </items>
+              <object class="GtkDropDown" id="transition">
+                <property name="model">
+                  <object class="GtkStringList">
+                    <items>
+                      <item translatable="yes">None</item>
+                      <item translatable="yes">Fade</item>
+                      <item translatable="yes">Slide</item>
+                    </items>
+                  </object>
+                </property>
                 <layout>
                   <property name="column">1</property>
                   <property name="row">1</property>