[gnome-builder] create-project: simplify version control selection



commit bfa518ae3ebae05e5902ad7a0c11358a1e7192ee
Author: Christian Hergert <chergert redhat com>
Date:   Wed Jun 29 16:05:38 2016 -0700

    create-project: simplify version control selection
    
    We only support a single version control system today, so we can simplify
    the UI during project creation to a switch.
    
    If/when we support additional version control systems, we can think about
    the design of this more.

 plugins/create-project/gbp-create-project-widget.c |   51 +++++---------------
 .../create-project/gbp-create-project-widget.ui    |   32 ++++++++++--
 2 files changed, 40 insertions(+), 43 deletions(-)
---
diff --git a/plugins/create-project/gbp-create-project-widget.c 
b/plugins/create-project/gbp-create-project-widget.c
index 7abcda2..559703d 100644
--- a/plugins/create-project/gbp-create-project-widget.c
+++ b/plugins/create-project/gbp-create-project-widget.c
@@ -34,7 +34,7 @@ struct _GbpCreateProjectWidget
   GtkButton            *project_location_button;
   EggRadioBox          *project_language_chooser;
   GtkFlowBox           *project_template_chooser;
-  GtkComboBoxText      *versioning_chooser;
+  GtkSwitch            *versioning_switch;
   EggRadioBox          *license_chooser;
 };
 
@@ -250,27 +250,6 @@ template_providers_foreach_cb (PeasExtensionSet *set,
   g_list_free_full (templates, g_object_unref);
 }
 
-static void
-vcs_initializers_foreach_cb (PeasExtensionSet *set,
-                             PeasPluginInfo   *plugin_info,
-                             PeasExtension    *exten,
-                             gpointer          user_data)
-{
-  GbpCreateProjectWidget *self = user_data;
-  IdeVcsInitializer *initializer = (IdeVcsInitializer *)exten;
-  g_autofree gchar *title = NULL;
-  g_autofree gchar *id = NULL;
-
-  g_assert (PEAS_IS_EXTENSION_SET (set));
-  g_assert (GBP_IS_CREATE_PROJECT_WIDGET (self));
-  g_assert (IDE_IS_VCS_INITIALIZER (initializer));
-
-  title = ide_vcs_initializer_get_title (initializer);
-  id = g_strdup (peas_plugin_info_get_module_name (plugin_info));
-
-  gtk_combo_box_text_append (self->versioning_chooser, id, title);
-}
-
 static gchar *
 gbp_create_project_widget_get_directory (GbpCreateProjectWidget *self)
 {
@@ -359,15 +338,8 @@ gbp_create_project_widget_constructed (GObject *object)
   peas_extension_set_foreach (extensions, template_providers_foreach_cb, self);
   g_clear_object (&extensions);
 
-  /* Load version control backends */
-  extensions = peas_extension_set_new (engine, IDE_TYPE_VCS_INITIALIZER, NULL);
-  peas_extension_set_foreach (extensions, vcs_initializers_foreach_cb, self);
-  g_clear_object (&extensions);
-  gtk_combo_box_text_append (self->versioning_chooser, NULL, _("Without version control"));
-
   G_OBJECT_CLASS (gbp_create_project_widget_parent_class)->constructed (object);
 
-  gtk_combo_box_set_active (GTK_COMBO_BOX (self->versioning_chooser), 0);
   egg_radio_box_set_active_id (self->project_language_chooser, "C");
 }
 
@@ -454,7 +426,7 @@ gbp_create_project_widget_class_init (GbpCreateProjectWidgetClass *klass)
   gtk_widget_class_bind_template_child (widget_class, GbpCreateProjectWidget, project_location_entry);
   gtk_widget_class_bind_template_child (widget_class, GbpCreateProjectWidget, project_language_chooser);
   gtk_widget_class_bind_template_child (widget_class, GbpCreateProjectWidget, project_template_chooser);
-  gtk_widget_class_bind_template_child (widget_class, GbpCreateProjectWidget, versioning_chooser);
+  gtk_widget_class_bind_template_child (widget_class, GbpCreateProjectWidget, versioning_switch);
   gtk_widget_class_bind_template_child (widget_class, GbpCreateProjectWidget, license_chooser);
 }
 
@@ -548,7 +520,14 @@ extract_cb (GObject      *object,
   PeasPluginInfo *plugin_info;
   GFile *project_file;
   GError *error = NULL;
-  const gchar *vcs_id;
+
+  /* To keep the UI simple, we only support git from
+   * the creation today. However, at the time of writing
+   * that is our only supported VCS anyway. If you'd like to
+   * add support for an additional VCS, we need to redesign
+   * this part of the UI.
+   */
+  const gchar *vcs_id = "git-plugin";
 
   g_assert (IDE_IS_PROJECT_TEMPLATE (template));
   g_assert (G_IS_ASYNC_RESULT (result));
@@ -566,9 +545,7 @@ extract_cb (GObject      *object,
   project_file = g_task_get_task_data (task);
   g_assert (G_IS_FILE (project_file));
 
-  vcs_id = gtk_combo_box_get_active_id (GTK_COMBO_BOX (self->versioning_chooser));
-
-  if (vcs_id == NULL)
+  if (!gtk_switch_get_active (self->versioning_switch))
     {
       workbench = ide_widget_get_workbench (GTK_WIDGET (self));
       ide_workbench_open_project_async (workbench, project_file, NULL, NULL, NULL);
@@ -623,7 +600,7 @@ gbp_create_project_widget_create_async (GbpCreateProjectWidget *self,
   PeasEngine *engine;
   PeasPluginInfo *plugin_info;
   const gchar *text;
-  const gchar *vcs_id;
+  const gchar *vcs_id = "git-plugin";
   const gchar *author_name;
   GList *selected_box_child;
 
@@ -680,9 +657,7 @@ gbp_create_project_widget_create_async (GbpCreateProjectWidget *self,
                            g_variant_ref_sink (g_variant_new_string (license_short_path)));
     }
 
-  vcs_id = gtk_combo_box_get_active_id (GTK_COMBO_BOX (self->versioning_chooser));
-
-  if (vcs_id != NULL)
+  if (gtk_switch_get_active (self->versioning_switch))
     {
       engine = peas_engine_get_default ();
       plugin_info = peas_engine_get_plugin_info (engine, vcs_id);
diff --git a/plugins/create-project/gbp-create-project-widget.ui 
b/plugins/create-project/gbp-create-project-widget.ui
index c218614..9c54c79 100644
--- a/plugins/create-project/gbp-create-project-widget.ui
+++ b/plugins/create-project/gbp-create-project-widget.ui
@@ -75,7 +75,7 @@
                     </child>
                     <child>
                       <object class="GtkLabel" id="row5_1">
-                        <property name="label" translatable="yes">Versioning</property>
+                        <property name="label" translatable="yes">Version Control</property>
                         <property name="expand">true</property>
                         <property name="halign">end</property>
                         <property name="visible">true</property>
@@ -162,9 +162,31 @@
                       </object>
                     </child>
                     <child>
-                      <object class="GtkComboBoxText" id="versioning_chooser">
-                        <property name="expand">true</property>
+                      <object class="GtkBox" id="versioning_box">
+                        <property name="orientation">horizontal</property>
                         <property name="visible">true</property>
+                        <child>
+                          <object class="GtkSwitch" id="versioning_switch">
+                            <property name="active">true</property>
+                            <property name="halign">start</property>
+                            <property name="visible">true</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkLabel">
+                            <property name="label" translatable="yes">Uses the Git version control 
system</property>
+                            <property name="visible">true</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                            <attributes>
+                              <attribute name="scale" value="0.833333"/>
+                            </attributes>
+                          </object>
+                          <packing>
+                            <property name="pack-type">end</property>
+                          </packing>
+                        </child>
                       </object>
                     </child>
                   </object>
@@ -237,7 +259,7 @@
                 <property name="visible">true</property>
                 <child>
                   <object class="GtkLabel">
-                    <property name="label" translatable="yes">Template</property>
+                    <property name="label" translatable="yes">Select a Template</property>
                     <property name="visible">true</property>
                     <attributes>
                       <attribute name="weight" value="bold"/>
@@ -315,7 +337,7 @@
     <property name="mode">vertical</property>
     <widgets>
       <widget name="row5_1"/>
-      <widget name="versioning_chooser"/>
+      <widget name="versioning_box"/>
       <widget name="spacer5"/>
     </widgets>
   </object>


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