[gnome-builder/wip/project-selector: 41/56] project-selector: add page for cloning repository
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/project-selector: 41/56] project-selector: add page for cloning repository
- Date: Mon, 6 Apr 2015 21:40:48 +0000 (UTC)
commit f780345e45f105d40f3028851ee73c368a14813e
Author: Christian Hergert <christian hergert me>
Date: Thu Apr 2 23:03:46 2015 -0700
project-selector: add page for cloning repository
data/ui/gb-new-project-dialog.ui | 71 ++++++++++++++++++++++++++++++++++-
src/dialogs/gb-new-project-dialog.c | 29 +++++++++++++-
2 files changed, 97 insertions(+), 3 deletions(-)
---
diff --git a/data/ui/gb-new-project-dialog.ui b/data/ui/gb-new-project-dialog.ui
index 8ae6ac0..d558462 100644
--- a/data/ui/gb-new-project-dialog.ui
+++ b/data/ui/gb-new-project-dialog.ui
@@ -117,7 +117,7 @@
</object>
</child>
<child>
- <object class="GtkListBoxRow" id="row_open_remove_project">
+ <object class="GtkListBoxRow" id="row_clone_remote">
<property name="visible">true</property>
<child>
<object class="GtkBox">
@@ -280,6 +280,71 @@
<property name="height-request">500</property>
</object>
</child>
+ <child>
+ <object class="GtkBox" id="page_clone_remote">
+ <property name="orientation">horizontal</property>
+ <property name="expand">true</property>
+ <property name="spacing">12</property>
+ <property name="visible">true</property>
+ <child type="center">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <property name="halign">center</property>
+ <property name="hexpand">false</property>
+ <property name="valign">center</property>
+ <property name="vexpand">false</property>
+ <property name="visible">true</property>
+ <child>
+ <object class="GtkEntry" id="clone_uri_entry">
+ <property name="hexpand">true</property>
+ <property name="width-chars">35</property>
+ <property name="placeholder-text" translatable="yes">ssh://user
host:repository.git</property>
+ <property name="visible">true</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="clone_location_button">
+ <property name="action">select-folder</property>
+ <property name="hexpand">true</property>
+ <property name="visible">true</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <property name="hexpand">true</property>
+ <property name="vexpand">true</property>
+ <property name="valign">center</property>
+ <property name="halign">end</property>
+ <property name="visible">true</property>
+ <child>
+ <object class="GtkLabel" id="clone_uri_label">
+ <property name="label" translatable="yes">Repository URL</property>
+ <property name="visible">true</property>
+ <property name="xalign">1.0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="clone_location_label">
+ <property name="label" translatable="yes">Location</property>
+ <property name="visible">true</property>
+ <property name="xalign">1.0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</template>
@@ -296,6 +361,10 @@
<widget name="language_label"/>
<widget name="pattern_button"/>
<widget name="pattern_label"/>
+ <widget name="clone_location_label"/>
+ <widget name="clone_location_button"/>
+ <widget name="clone_uri_label"/>
+ <widget name="clone_uri_entry"/>
</widgets>
</object>
</interface>
diff --git a/src/dialogs/gb-new-project-dialog.c b/src/dialogs/gb-new-project-dialog.c
index e4d5d79..946e0f4 100644
--- a/src/dialogs/gb-new-project-dialog.c
+++ b/src/dialogs/gb-new-project-dialog.c
@@ -27,10 +27,14 @@ struct _GbNewProjectDialog
GtkButton *back_button;
GtkButton *cancel_button;
+ GtkFileChooserWidget *clone_location_button;
GtkButton *create_button;
GtkFileChooserWidget *file_chooser;
+ GtkHeaderBar *header_bar;
GtkListBox *open_list_box;
+ GtkListBoxRow *row_clone_remote;
GtkListBoxRow *row_open_local;
+ GtkBox *page_clone_remote;
GtkBox *page_open_project;
GtkStack *stack;
};
@@ -119,6 +123,8 @@ gb_new_project_dialog__open_list_box_row_activated (GbNewProjectDialog *self,
if (row == self->row_open_local)
gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->file_chooser));
+ else if (row == self->row_clone_remote)
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->page_clone_remote));
}
static void
@@ -138,13 +144,22 @@ gb_new_project_dialog__stack_notify_visible_child (GbNewProjectDialog *self,
gtk_widget_hide (GTK_WIDGET (self->cancel_button));
gtk_widget_show (GTK_WIDGET (self->back_button));
gtk_widget_set_sensitive (GTK_WIDGET (self->create_button), FALSE);
+ gtk_header_bar_set_title (self->header_bar, _("Select Project File"));
}
else if (visible_child == GTK_WIDGET (self->page_open_project))
- {
+ {
gtk_widget_hide (GTK_WIDGET (self->back_button));
gtk_widget_show (GTK_WIDGET (self->cancel_button));
gtk_widget_set_sensitive (GTK_WIDGET (self->create_button), FALSE);
- }
+ gtk_header_bar_set_title (self->header_bar, _("New Project"));
+ }
+ else if (visible_child == GTK_WIDGET (self->page_clone_remote))
+ {
+ gtk_widget_hide (GTK_WIDGET (self->cancel_button));
+ gtk_widget_show (GTK_WIDGET (self->back_button));
+ gtk_widget_set_sensitive (GTK_WIDGET (self->create_button), FALSE);
+ gtk_header_bar_set_title (self->header_bar, _("Clone Repository"));
+ }
}
static GList *
@@ -321,17 +336,23 @@ gb_new_project_dialog_class_init (GbNewProjectDialogClass *klass)
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, back_button);
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, cancel_button);
+ GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, clone_location_button);
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, create_button);
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, file_chooser);
+ GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, header_bar);
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, open_list_box);
+ GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, page_clone_remote);
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, page_open_project);
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, row_open_local);
+ GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, row_clone_remote);
GB_WIDGET_CLASS_BIND (klass, GbNewProjectDialog, stack);
}
static void
gb_new_project_dialog_init (GbNewProjectDialog *self)
{
+ g_autofree gchar *path = NULL;
+ GFile *location;
GList *iter;
GList *filters;
@@ -388,5 +409,9 @@ gb_new_project_dialog_init (GbNewProjectDialog *self)
gb_new_project_dialog__open_list_box_header_func,
NULL, NULL);
+ path = g_build_filename (g_get_home_dir (), Q_("Directory|Projects"), NULL);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (self->file_chooser), path);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (self->clone_location_button), path);
+
g_object_notify (G_OBJECT (self->stack), "visible-child");
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]