[gnome-builder/editor-layout] tab: implement document loading



commit 83fb0ab562440860fde992e70faba4cf5c05e2f1
Author: Christian Hergert <christian hergert me>
Date:   Sun Nov 30 04:38:42 2014 -0800

    tab: implement document loading

 src/editor/gb-editor-tab.c |   52 ++++++++++++++++++++++++++++++++++++++++++++
 src/editor/gb-editor-tab.h |    2 +
 2 files changed, 54 insertions(+), 0 deletions(-)
---
diff --git a/src/editor/gb-editor-tab.c b/src/editor/gb-editor-tab.c
index 8308381..5985403 100644
--- a/src/editor/gb-editor-tab.c
+++ b/src/editor/gb-editor-tab.c
@@ -195,6 +195,58 @@ gb_editor_tab_save (GbEditorTab *tab)
   EXIT;
 }
 
+static void
+gb_editor_tab_open_file_cb (GObject      *source_object,
+                            GAsyncResult *result,
+                            gpointer      user_data)
+{
+  GbEditorTab *tab = user_data;
+  GbEditorDocument *document = (GbEditorDocument *)source_object;
+  GError *error = NULL;
+
+  ENTRY;
+
+  g_return_if_fail (GB_IS_EDITOR_DOCUMENT (document));
+  g_return_if_fail (G_IS_ASYNC_RESULT (result));
+  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
+
+  if (!gb_editor_document_load_finish (document, result, &error))
+    {
+      g_print ("%s", error->message);
+      //gb_editor_tab_set_error (tab, error);
+      g_clear_error (&error);
+    }
+
+  gb_widget_fade_hide (GTK_WIDGET (tab->priv->progress_bar));
+
+  g_object_unref (tab);
+
+  EXIT;
+}
+
+void
+gb_editor_tab_open_file (GbEditorTab *tab,
+                         GFile       *file)
+{
+  ENTRY;
+
+  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
+
+  gtk_progress_bar_set_fraction (tab->priv->progress_bar, 0.0);
+  gtk_widget_show (GTK_WIDGET (tab->priv->progress_bar));
+
+  gb_editor_document_load_async (tab->priv->document,
+                                 file,
+                                 NULL, /* cancellable */
+                                 gb_editor_tab_progress_cb,
+                                 tab,
+                                 NULL,
+                                 gb_editor_tab_open_file_cb,
+                                 g_object_ref (tab));
+
+  EXIT;
+}
+
 void
 gb_editor_tab_open (GbEditorTab *tab)
 {
diff --git a/src/editor/gb-editor-tab.h b/src/editor/gb-editor-tab.h
index 9bb06c5..84a6f08 100644
--- a/src/editor/gb-editor-tab.h
+++ b/src/editor/gb-editor-tab.h
@@ -55,6 +55,8 @@ GType gb_editor_tab_get_type    (void) G_GNUC_CONST;
 void  gb_editor_tab_save        (GbEditorTab *tab);
 void  gb_editor_tab_save_as     (GbEditorTab *tab);
 void  gb_editor_tab_open        (GbEditorTab *tab);
+void  gb_editor_tab_open_file   (GbEditorTab *tab,
+                                 GFile       *file);
 void  gb_editor_tab_scroll_up   (GbEditorTab *tab);
 void  gb_editor_tab_scroll_down (GbEditorTab *tab);
 


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