[gtranslator/gtk4: 62/79] Modernize GtrProfileDialog widget




commit 6aebd2e6be62298cbe37b4696bd39b15450ef80d
Author: Daniel García Moreno <dani danigm net>
Date:   Fri Aug 12 09:38:53 2022 +0200

    Modernize GtrProfileDialog widget
    
    This patch updates the GtrProfileDialog code, using modern practices and
    Gtk4 widgets.

 src/gtr-languages-fetcher-old.ui | 228 ------------------------------
 src/gtr-profile-dialog-old.ui    | 290 ---------------------------------------
 src/gtr-profile-dialog.c         | 128 ++++++-----------
 src/gtr-profile-dialog.h         |  48 ++-----
 src/gtr-profile-dialog.ui        | 269 ++++++++++--------------------------
 5 files changed, 125 insertions(+), 838 deletions(-)
---
diff --git a/src/gtr-profile-dialog.c b/src/gtr-profile-dialog.c
index 71a0374a..141efd79 100644
--- a/src/gtr-profile-dialog.c
+++ b/src/gtr-profile-dialog.c
@@ -1,23 +1,25 @@
 /*
  * Copyright (C) 2007  Pablo Sanxiao <psanxiao gmail com>
- *               2008  Igalia 
+ *               2008  Igalia
+ * Copyright (C) 2022 Daniel Garcia <dani danigm net>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program 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 General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * Authors:
  *   Pablo Sanxiao <psanxiao gmail com>
  *   Ignacio Casal Quinteiro <icq gnome org>
+ *   Daniel Garcia <dani danigm net>
  */
 
 #ifdef HAVE_CONFIG_H
@@ -37,8 +39,6 @@
 
 typedef struct
 {
-  GtkWidget *main_box;
-
   GtkWidget *profile_name;
   GtkWidget *auth_token;
 
@@ -47,107 +47,67 @@ typedef struct
   GtkWidget *team_email;
 
   GtkWidget *languages_fetcher;
+  gboolean   editing;
 } GtrProfileDialogPrivate;
 
+struct _GtrProfileDialog
+{
+  GtkDialog parent_instance;
+};
+
 G_DEFINE_TYPE_WITH_PRIVATE (GtrProfileDialog, gtr_profile_dialog, GTK_TYPE_DIALOG)
 
 static void
 gtr_profile_dialog_class_init (GtrProfileDialogClass *klass)
 {
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  gtk_widget_class_set_template_from_resource (widget_class,
+                                               "/org/gnome/translator/gtr-profile-dialog.ui");
+
+  gtk_widget_class_bind_template_child_private (widget_class, GtrProfileDialog, languages_fetcher);
+  gtk_widget_class_bind_template_child_private (widget_class, GtrProfileDialog, profile_name);
+  gtk_widget_class_bind_template_child_private (widget_class, GtrProfileDialog, auth_token);
+  gtk_widget_class_bind_template_child_private (widget_class, GtrProfileDialog, author_name);
+  gtk_widget_class_bind_template_child_private (widget_class, GtrProfileDialog, author_email);
+  gtk_widget_class_bind_template_child_private (widget_class, GtrProfileDialog, team_email);
 }
 
 static void
 gtr_profile_dialog_init (GtrProfileDialog *dlg)
 {
   GtrProfileDialogPrivate *priv = gtr_profile_dialog_get_instance_private (dlg);
-  GtkBox *content_area;
-  GtkWidget *fetcher_box;
-  GtkBuilder *builder;
-  const gchar *root_objects[] = {
-    "main_box",
-    NULL
-  };
 
-  gtk_dialog_add_button (GTK_DIALOG (dlg),
-                         _("_Cancel"), GTK_RESPONSE_CANCEL);
+  priv->editing = FALSE;
 
   gtk_window_set_title (GTK_WINDOW (dlg), _("Translation Editor Profile"));
   gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE);
   gtk_window_set_destroy_with_parent (GTK_WINDOW (dlg), TRUE);
   gtk_window_set_modal (GTK_WINDOW (dlg), TRUE);
 
-  content_area = GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg)));
-
-  gtk_widget_set_margin_start (GTK_WIDGET (content_area), 6);
-  gtk_widget_set_margin_end (GTK_WIDGET (content_area), 6);
-  gtk_widget_set_margin_top (GTK_WIDGET (content_area), 6);
-  gtk_widget_set_margin_bottom (GTK_WIDGET (content_area), 6);
-  gtk_box_set_spacing (content_area, 6);
-
-  builder = gtk_builder_new ();
-  GError *error = NULL;
-  gtk_builder_add_objects_from_resource (builder, "/org/gnome/translator/gtr-profile-dialog.ui",
-                                         root_objects, &error);
-  if (error)
-  {
-    g_debug("%s \n", error->message);
-  }
-  priv->main_box = GTK_WIDGET (gtk_builder_get_object (builder, "main_box"));
-  g_object_ref (priv->main_box);
-  priv->profile_name = GTK_WIDGET (gtk_builder_get_object (builder, "profile_name"));
-  priv->auth_token = GTK_WIDGET (gtk_builder_get_object (builder, "auth_token"));
-  priv->author_name = GTK_WIDGET (gtk_builder_get_object (builder, "name"));
-  priv->author_email = GTK_WIDGET (gtk_builder_get_object (builder, "email"));
-  priv->team_email = GTK_WIDGET (gtk_builder_get_object (builder, "team_email"));
-  fetcher_box = GTK_WIDGET (gtk_builder_get_object (builder, "fetcher_box"));
-  g_object_unref (builder);
-
-  gtk_box_append (content_area, priv->main_box);
-
-  priv->languages_fetcher = gtr_languages_fetcher_new ();
-  gtk_widget_show (priv->languages_fetcher);
-  gtk_widget_set_hexpand (priv->languages_fetcher, TRUE);
-  gtk_box_append (GTK_BOX (fetcher_box), priv->languages_fetcher);
+  gtk_widget_init_template (GTK_WIDGET (dlg));
 }
 
 static void
 fill_entries (GtrProfileDialog *dlg, GtrProfile *profile)
 {
   GtrProfileDialogPrivate *priv = gtr_profile_dialog_get_instance_private (dlg);
+
+  priv->editing = TRUE;
   if (gtr_profile_get_name (profile) != NULL)
-    //gtk_entry_set_text (GTK_ENTRY (priv->profile_name), gtr_profile_get_name (profile));
-  {
-    GtkEntryBuffer *entry_buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->profile_name));
-    gtk_entry_buffer_set_text (entry_buffer, gtr_profile_get_name (profile), -1);
-  }
+    gtk_editable_set_text (GTK_EDITABLE (priv->profile_name), gtr_profile_get_name (profile));
 
   if (gtr_profile_get_auth_token (profile) != NULL)
-    //gtk_entry_set_text (GTK_ENTRY (priv->auth_token), gtr_profile_get_auth_token (profile));
-  {
-    GtkEntryBuffer *entry_buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->auth_token));
-    gtk_entry_buffer_set_text (entry_buffer, gtr_profile_get_auth_token (profile), -1);
-  }
+    gtk_editable_set_text (GTK_EDITABLE (priv->auth_token), gtr_profile_get_auth_token (profile));
 
   if (gtr_profile_get_author_name (profile) != NULL)
-    //gtk_entry_set_text (GTK_ENTRY (priv->author_name), gtr_profile_get_author_name (profile));
-  {
-    GtkEntryBuffer *entry_buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->author_name));
-    gtk_entry_buffer_set_text (entry_buffer, gtr_profile_get_author_name (profile), -1);
-  }
+    gtk_editable_set_text (GTK_EDITABLE (priv->author_name), gtr_profile_get_author_name (profile));
 
   if (gtr_profile_get_author_email (profile) != NULL)
-    //gtk_entry_set_text (GTK_ENTRY (priv->author_email), gtr_profile_get_author_email (profile));
-  {
-    GtkEntryBuffer *entry_buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->author_email));
-    gtk_entry_buffer_set_text (entry_buffer, gtr_profile_get_author_email (profile), -1);
-  }
+    gtk_editable_set_text (GTK_EDITABLE (priv->author_email), gtr_profile_get_author_email (profile));
 
   if (gtr_profile_get_group_email (profile) != NULL)
-    //gtk_entry_set_text (GTK_ENTRY (priv->team_email), gtr_profile_get_group_email (profile));
-  {
-    GtkEntryBuffer *entry_buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->team_email));
-    gtk_entry_buffer_set_text (entry_buffer,  gtr_profile_get_group_email (profile), -1);
-  }
+    gtk_editable_set_text (GTK_EDITABLE (priv->team_email), gtr_profile_get_group_email (profile));
 
   if (gtr_profile_get_language_name (profile) != NULL)
     gtr_languages_fetcher_set_language_name (GTR_LANGUAGES_FETCHER (priv->languages_fetcher),
@@ -205,32 +165,26 @@ GtrProfile *
 gtr_profile_dialog_get_profile (GtrProfileDialog *dlg)
 {
   GtrProfile *profile;
-  GtkEntryBuffer *buffer;
   GtrProfileDialogPrivate *priv = gtr_profile_dialog_get_instance_private (dlg);
 
   g_return_val_if_fail (GTR_IS_PROFILE_DIALOG (dlg), NULL);
 
   profile = gtr_profile_new ();
 
-  buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->profile_name));
-  gtr_profile_set_name (profile,gtk_entry_buffer_get_text (buffer));
-                        //gtk_entry_get_text (GTK_ENTRY (priv->profile_name)));
+  gtr_profile_set_name (profile,
+                        gtk_editable_get_text (GTK_EDITABLE (priv->profile_name)));
 
-  buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->auth_token));
-  gtr_profile_set_auth_token (profile,gtk_entry_buffer_get_text (buffer));
-                        //gtk_entry_get_text (GTK_ENTRY (priv->auth_token)));
+  gtr_profile_set_auth_token (profile,
+                        gtk_editable_get_text (GTK_EDITABLE (priv->auth_token)));
 
-  buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->author_name));
-  gtr_profile_set_author_name (profile,gtk_entry_buffer_get_text (buffer));
-                               //gtk_entry_get_text (GTK_ENTRY (priv->author_name)));
+  gtr_profile_set_author_name (profile,
+                               gtk_editable_get_text (GTK_EDITABLE (priv->author_name)));
 
-  buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->author_email));
-  gtr_profile_set_author_email (profile,gtk_entry_buffer_get_text (buffer));
-                                //gtk_entry_get_text (GTK_ENTRY (priv->author_email)));
+  gtr_profile_set_author_email (profile,
+                                gtk_editable_get_text (GTK_EDITABLE (priv->author_email)));
 
-  buffer = gtk_entry_get_buffer (GTK_ENTRY(priv->team_email));
-  gtr_profile_set_group_email (profile,gtk_entry_buffer_get_text (buffer));
-                               //gtk_entry_get_text (GTK_ENTRY (priv->team_email)));
+  gtr_profile_set_group_email (profile,
+                               gtk_editable_get_text (GTK_EDITABLE (priv->team_email)));
 
   gtr_profile_set_language_name (profile,
                                  gtr_languages_fetcher_get_language_name (GTR_LANGUAGES_FETCHER 
(priv->languages_fetcher)));
diff --git a/src/gtr-profile-dialog.h b/src/gtr-profile-dialog.h
index 2ba135ea..e97fdbb8 100644
--- a/src/gtr-profile-dialog.h
+++ b/src/gtr-profile-dialog.h
@@ -1,26 +1,27 @@
 /*
  * Copyright (C) 2007  Pablo Sanxiao <psanxiao gmail com>
- *               2008  Igalia 
+ *               2008  Igalia
+ * Copyright (C) 2022 Daniel Garcia <dani danigm net>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program 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 General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * Authors:
- *   Pablo Sanxiao <psanxiao gmail com> 
+ *   Pablo Sanxiao <psanxiao gmail com>
+ *   Author: Daniel Garcia <dani danigm net>
  */
 
-#ifndef __PROFILE_DIALOG_H__
-#define __PROFILE_DIALOG_H__
+#pragma once
 
 #include <glib.h>
 #include <glib-object.h>
@@ -30,46 +31,15 @@
 
 G_BEGIN_DECLS
 
-/*
- * Type checking and casting macros
- */
-#define GTR_TYPE_PROFILE_DIALOG                (gtr_profile_dialog_get_type ())
-#define GTR_PROFILE_DIALOG(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GTR_TYPE_PROFILE_DIALOG, 
GtrProfileDialog))
-#define GTR_PROFILE_DIALOG_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), GTR_TYPE_PROFILE_DIALOG, 
GtrProfileDialogClass))
-#define GTR_IS_PROFILE_DIALOG(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTR_TYPE_PROFILE_DIALOG))
-#define GTR_IS_PROFILE_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GTR_TYPE_PROFILE_DIALOG))
-#define GTR_PROFILE_DIALOG_GET_CLASS(o)        (G_TYPE_INSTANCE_GET_CLASS ((o), GTR_TYPE_PROFILE_DIALOG, 
GtrProfileDialogClass))
-
-/*
- * Main object structure
- */
-typedef struct _GtrProfileDialog GtrProfileDialog;
-
-struct _GtrProfileDialog
-{
-  GtkDialog parent_instance;
-};
-
-/*
- * Class definition
- */
-typedef struct _GtrProfileDialogClass GtrProfileDialogClass;
+#define GTR_TYPE_PROFILE_DIALOG (gtr_profile_dialog_get_type ())
 
-struct _GtrProfileDialogClass
-{
-  GtkDialogClass parent_class;
-};
+G_DECLARE_FINAL_TYPE (GtrProfileDialog, gtr_profile_dialog, GTR, PROFILE_DIALOG, GtkDialog)
 
 /*
  * Public methods
  */
-GType               gtr_profile_dialog_get_type         (void) G_GNUC_CONST;
-
 GtrProfileDialog   *gtr_profile_dialog_new              (GtkWidget  *parent,
                                                          GtrProfile *profile);
-
 GtrProfile         *gtr_profile_dialog_get_profile      (GtrProfileDialog *dlg);
 
 G_END_DECLS
-
-#endif
diff --git a/src/gtr-profile-dialog.ui b/src/gtr-profile-dialog.ui
index 0bfbd521..d81e75aa 100644
--- a/src/gtr-profile-dialog.ui
+++ b/src/gtr-profile-dialog.ui
@@ -1,220 +1,101 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk" version="4.0"/>
-  <object class="GtkDialog" id="dialog1">
-    <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</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="modal">1</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="content_area">
-      <object class="GtkBox" id="vbox1">
-        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
+  <template class="GtrProfileDialog" parent="GtkDialog">
+    <property name="height-request">400</property>
+    <child type="action">
+      <object class="GtkButton" id="button_cancel">
+        <property name="label" translatable="yes">Cancel</property>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="cancel">button_cancel</action-widget>
+    </action-widgets>
+    <child>
+
+      <object class="GtkScrolledWindow">
+          <property name="hscrollbar-policy">never</property>
+          <property name="propagate-natural-width">1</property>
+          <property name="propagate-natural-height">1</property>
+          <property name="hexpand">1</property>
+          <property name="vexpand">1</property>
         <child>
-          <object class="GtkBox" id="main_box">
-            <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-            <property name="orientation">vertical</property>
-            <property name="spacing">18</property>
+          <object class="GtkViewport">
             <child>
-              <object class="GtkBox" id="vbox2">
-                <property name="valign">center</property>
-                <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                <property name="orientation">vertical</property>
-                <property name="spacing">6</property>
+
+              <object class="AdwClamp">
+                <property name="maximum-size">600</property>
+                <property name="tightening-threshold">400</property>
                 <child>
-                  <object class="GtkGrid">
-                    <property name="row_spacing">4</property>
-                    <property name="column_spacing">6</property>
-                    <child>
-                      <object class="GtkLabel" id="label3">
-                        <property name="width_request">80</property>
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="label" translatable="1">_Name</property>
-                        <property name="use_underline">1</property>
-                        <property name="mnemonic_widget">profile_name</property>
-                        <property name="xalign">1</property>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">1</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="profile_name">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="hexpand">1</property>
-                        <property name="invisible_char">●</property>
-                        <layout>
-                          <property name="column">1</property>
-                          <property name="row">1</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label1">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="label" translatable="1">Profile Information</property>
-                        <property name="xalign">0</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"></attribute>
-                        </attributes>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">0</property>
-                          <property name="column-span">2</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label4">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="label" translatable="1">Translator Information</property>
-                        <property name="xalign">0</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"></attribute>
-                        </attributes>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">2</property>
-                          <property name="column-span">2</property>
-                        </layout>
-                      </object>
-                    </child>
+                  <object class="GtkBox" id="main_box">
+                    <property name="orientation">vertical</property>
+                    <property name="margin-bottom">12</property>
                     <child>
-                      <object class="GtkLabel" id="label6">
-                        <property name="width_request">80</property>
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="label" translatable="1">N_ame</property>
-                        <property name="use_underline">1</property>
-                        <property name="mnemonic_widget">name</property>
-                        <property name="xalign">1</property>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">3</property>
-                        </layout>
+                      <object class="AdwPreferencesGroup">
+                        <property name="title" translatable="true">Profile Information</property>
+                        <property name="vexpand">true</property>
+                        <property name="valign">center</property>
+                        <child>
+                          <object class="AdwEntryRow" id="profile_name">
+                            <property name="title" translatable="yes">Profile name</property>
+                            <property name="text" translatable="yes">default</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                        </child>
                       </object>
                     </child>
                     <child>
-                      <object class="GtkLabel" id="label7">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="label" translatable="1">_Email</property>
-                        <property name="use_underline">1</property>
-                        <property name="mnemonic_widget">email</property>
-                        <property name="xalign">1</property>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">4</property>
-                        </layout>
+                      <object class="AdwPreferencesGroup">
+                        <property name="title" translatable="true">Translator Information</property>
+                        <property name="vexpand">true</property>
+                        <property name="valign">center</property>
+                        <child>
+                          <object class="AdwEntryRow" id="author_name">
+                            <property name="title" translatable="yes">Translator _name</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwEntryRow" id="author_email">
+                            <property name="title" translatable="yes">Translator _email</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwEntryRow" id="team_email">
+                            <property name="title" translatable="yes">Translation _team email</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                        </child>
                       </object>
                     </child>
                     <child>
-                      <object class="GtkLabel">
-                        <property name="label" translatable="1">_Team email</property>
-                        <property name="use_underline">1</property>
-                        <property name="xalign">1</property>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">5</property>
-                        </layout>
+                      <object class="AdwPreferencesGroup">
+                        <property name="title" translatable="true">Damned Lies Integration</property>
+                        <property name="description" translatable="yes">GNOME Damned Lies integration token, 
go to your profile in https://l10n.gnome.org/ to get it</property>
+                        <property name="vexpand">true</property>
+                        <property name="valign">center</property>
+                        <child>
+                          <object class="AdwEntryRow" id="auth_token">
+                            <property name="title" translatable="yes">_Damned Lies auth token</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                        </child>
                       </object>
                     </child>
                     <child>
-                      <object class="GtkLabel" id="label9">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="label" translatable="1">_DL auth token</property>
-                        <property name="tooltip_text" translatable="1">GNOME Damned Lies integration token, 
go to your profile in https://l10n.gnome.org/ to get it</property>
-                        <property name="use_underline">1</property>
-                        <property name="mnemonic_widget">auth_token</property>
-                        <property name="xalign">1</property>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">6</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="name">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="hexpand">1</property>
-                        <property name="invisible_char">●</property>
-                        <layout>
-                          <property name="column">1</property>
-                          <property name="row">3</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="email">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="invisible_char">●</property>
-                        <layout>
-                          <property name="column">1</property>
-                          <property name="row">4</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="auth_token">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="invisible_char">●</property>
-                        <layout>
-                          <property name="column">1</property>
-                          <property name="row">6</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="team_email">
-                        <layout>
-                          <property name="column">1</property>
-                          <property name="row">5</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label8">
-                        <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-                        <property name="label" translatable="1">Language Settings</property>
-                        <property name="xalign">0</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"></attribute>
-                        </attributes>
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">7</property>
-                          <property name="column-span">2</property>
-                        </layout>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkBox" id="fetcher_box">
-                        <layout>
-                          <property name="column">0</property>
-                          <property name="row">8</property>
-                          <property name="column-span">2</property>
-                        </layout>
-                      </object>
+                      <object class="GtrLanguagesFetcher" id="languages_fetcher" />
                     </child>
                   </object>
                 </child>
               </object>
+
             </child>
           </object>
+
         </child>
       </object>
+
     </child>
-  <child internal-child="action_area">
-    <object class="GtkBox" id="dialog-action_area1">
-      <property name="visible">True</property>
-      <property name="can_focus">False</property>
-      <!--<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>-->
-      <!--<property name="layout_style">end</property>-->
-      </object>
-    </child>
-  </object>
+  </template>
 </interface>


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