[gtranslator/dl-workflow: 9/10] Use checkbox instead of button for reserver in DL




commit 60454b87e0ee4272025488dd8ecf6a769da62c6a
Author: Daniel GarcĂ­a Moreno <dani danigm net>
Date:   Tue Mar 2 08:36:45 2021 +0100

    Use checkbox instead of button for reserver in DL
    
    This patch changes the reserve for translation button to a checkbox so
    there's only one button and the reserve is done in the load process if
    the checkbox is checked.

 src/gtr-dl-teams.c  | 26 +++++++++++++++++---------
 src/gtr-dl-teams.ui |  4 ++--
 2 files changed, 19 insertions(+), 11 deletions(-)
---
diff --git a/src/gtr-dl-teams.c b/src/gtr-dl-teams.c
index 33b8aae6..092104b1 100644
--- a/src/gtr-dl-teams.c
+++ b/src/gtr-dl-teams.c
@@ -74,7 +74,7 @@ static void team_add_cb (GtkButton *btn, GtrDlTeams *self);
 static void gtr_dl_teams_save_combo_selected (GtkWidget *widget, GtrDlTeams *self);
 static void gtr_dl_teams_load_po_file (GtkButton *button, GtrDlTeams *self);
 static void gtr_dl_teams_get_file_info (GtrDlTeams *self);
-static void gtr_dl_teams_reserve_for_translation (GtkButton *button, GtrDlTeams *self);
+static gboolean gtr_dl_teams_reserve_for_translation (GtkWidget *button, GtrDlTeams *self);
 
 static void
 gtr_dl_teams_list_add (JsonArray *array,
@@ -471,6 +471,17 @@ gtr_dl_teams_load_po_file (GtkButton *button, GtrDlTeams *self)
   g_autofree char *filename = NULL;
   g_autofree char *file_path = NULL;
   g_autoptr(GFile) dest_file = NULL;
+  gboolean reserve_first = FALSE;
+
+  // reserve for translation first
+  reserve_first = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
+                                                (priv->reserve_button));
+  if (reserve_first)
+    {
+      ret = gtr_dl_teams_reserve_for_translation (priv->reserve_button, self);
+      if (!ret)
+        return;
+    }
 
   /* Load the file, save as temp; path to file is https://l10n.gnome.org/[priv->file_path] */
   session = soup_session_new ();
@@ -585,8 +596,8 @@ gtr_dl_teams_load_po_file (GtkButton *button, GtrDlTeams *self)
 }
 
 /* Reserve for translation */
-static void
-gtr_dl_teams_reserve_for_translation (GtkButton *button, GtrDlTeams *self)
+static gboolean
+gtr_dl_teams_reserve_for_translation (GtkWidget *button, GtrDlTeams *self)
 {
   GtrDlTeamsPrivate *priv = gtr_dl_teams_get_instance_private (self);
   GtrProfileManager *pmanager = NULL;
@@ -626,7 +637,7 @@ gtr_dl_teams_reserve_for_translation (GtkButton *button, GtrDlTeams *self)
                                     soup_status_get_phrase(msg->status_code));
     gtk_dialog_run(GTK_DIALOG(dialog));
     gtk_widget_destroy(dialog);
-    return;
+    return FALSE;
   }
 
   /* Display a message if the reserve for translation operation was successful */
@@ -643,6 +654,8 @@ gtr_dl_teams_reserve_for_translation (GtkButton *button, GtrDlTeams *self)
   gtk_dialog_run (GTK_DIALOG (success_dialog));
   gtk_widget_destroy (success_dialog);
   gtk_widget_set_sensitive (priv->reserve_button, FALSE);
+
+  return TRUE;
 }
 
 static void
@@ -812,11 +825,6 @@ gtr_dl_teams_init (GtrDlTeams *self)
                     "clicked",
                     G_CALLBACK (gtr_dl_teams_load_po_file),
                     self);
-
-  g_signal_connect (priv->reserve_button,
-                    "clicked",
-                    G_CALLBACK (gtr_dl_teams_reserve_for_translation),
-                    self);
 }
 
 GtrDlTeams*
diff --git a/src/gtr-dl-teams.ui b/src/gtr-dl-teams.ui
index 3e4662df..6ee004fa 100644
--- a/src/gtr-dl-teams.ui
+++ b/src/gtr-dl-teams.ui
@@ -102,9 +102,9 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="reserve_button">
+              <object class="GtkCheckButton" id="reserve_button">
                 <property name="label" translatable="yes">Reserve for translation</property>
-                <property name="visible">False</property>
+                <property name="visible">true</property>
               </object>
               <packing>
                 <property name="expand">False</property>


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