[gnome-builder/wip/greeter] greeter: load project when row is activated
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/greeter] greeter: load project when row is activated
- Date: Sun, 10 May 2015 22:45:28 +0000 (UTC)
commit e9ff2ae4cfdb831054487044dc0ab22b0d930cec
Author: Christian Hergert <christian hergert me>
Date: Sun May 10 15:45:07 2015 -0700
greeter: load project when row is activated
src/greeter/gb-greeter-window.c | 58 +++++++++++++++++++++++++++++++++++++++
1 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/src/greeter/gb-greeter-window.c b/src/greeter/gb-greeter-window.c
index 0b704b1..4f8b36f 100644
--- a/src/greeter/gb-greeter-window.c
+++ b/src/greeter/gb-greeter-window.c
@@ -23,6 +23,7 @@
#include "egg-signal-group.h"
+#include "gb-application.h"
#include "gb-greeter-project-row.h"
#include "gb-greeter-window.h"
#include "gb-gtk.h"
@@ -222,6 +223,52 @@ gb_greeter_window_filter_row (GtkListBoxRow *row,
}
static void
+gb_greeter_window__open_project_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GbApplication *app = (GbApplication *)object;
+ g_autoptr(GbGreeterWindow) self = user_data;
+ g_autoptr(GError) error = NULL;
+
+ g_assert (GB_IS_APPLICATION (app));
+
+ if (!gb_application_open_project_finish (app, result, &error))
+ {
+ g_warning ("%s\n", error->message);
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (self));
+}
+
+static void
+gb_greeter_window__row_activated (GbGreeterWindow *self,
+ GbGreeterProjectRow *row,
+ GtkListBox *list_box)
+{
+ IdeProjectInfo *project_info;
+ GApplication *app;
+ GFile *project_file;
+
+ g_assert (GB_IS_GREETER_WINDOW (self));
+ g_assert (GB_IS_GREETER_PROJECT_ROW (row));
+ g_assert (GTK_IS_LIST_BOX (list_box));
+
+ app = g_application_get_default ();
+ project_info = gb_greeter_project_row_get_project_info (row);
+ project_file = ide_project_info_get_file (project_info);
+
+ gtk_widget_set_sensitive (GTK_WIDGET (self), FALSE);
+
+ gb_application_open_project_async (GB_APPLICATION (app),
+ project_file,
+ NULL,
+ NULL,
+ gb_greeter_window__open_project_cb,
+ g_object_ref (self));
+}
+
+static void
gb_greeter_window_finalize (GObject *object)
{
GbGreeterWindow *self = (GbGreeterWindow *)object;
@@ -320,6 +367,17 @@ gb_greeter_window_init (GbGreeterWindow *self)
self,
G_CONNECT_SWAPPED);
+ g_signal_connect_object (self->my_projects_list_box,
+ "row-activated",
+ G_CALLBACK (gb_greeter_window__row_activated),
+ self,
+ G_CONNECT_SWAPPED);
+ g_signal_connect_object (self->other_projects_list_box,
+ "row-activated",
+ G_CALLBACK (gb_greeter_window__row_activated),
+ self,
+ G_CONNECT_SWAPPED);
+
gtk_list_box_set_header_func (self->my_projects_list_box,
gb_gtk_list_box_row_separator_func,
NULL, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]