[gnome-dictionary/wip/ui-redesign: 4/4] app: Show a spinner while loading word definitions



commit da65b1bcafd1a9d49bbd3dcbcee6b1ec92d835be
Author: Juan R. GarcĂ­a Blanco <juanrgar gmail com>
Date:   Mon Jan 1 01:30:11 2001 +0100

    app: Show a spinner while loading word definitions
    
    Use a stack to accomodate definition box and a spinner.
    See https://bugzilla.gnome.org/show_bug.cgi?id=334866

 src/gdict-app-window.ui |   27 ++++++++++++++++++++++++---
 src/gdict-window.c      |   14 ++++++++++++++
 src/gdict-window.h      |    2 ++
 3 files changed, 40 insertions(+), 3 deletions(-)
---
diff --git a/src/gdict-app-window.ui b/src/gdict-app-window.ui
index 77abbb2..b14690f 100644
--- a/src/gdict-app-window.ui
+++ b/src/gdict-app-window.ui
@@ -6,12 +6,33 @@
     <property name="can_focus">False</property>
     <property name="show_menubar">False</property>
     <child>
-      <object class="GtkBox" id="main_box">
+      <object class="GtkStack" id="stack">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
         <child>
-          <placeholder/>
+          <object class="GtkSpinner" id="spinner">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="name">spinner</property>
+            <property name="title" translatable="yes">page0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="main_box">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="name">main</property>
+            <property name="title" translatable="yes">page1</property>
+            <property name="position">1</property>
+          </packing>
         </child>
       </object>
     </child>
diff --git a/src/gdict-window.c b/src/gdict-window.c
index a62ac15..65544d0 100644
--- a/src/gdict-window.c
+++ b/src/gdict-window.c
@@ -235,6 +235,10 @@ gdict_window_lookup_start_cb (GdictContext *context,
   window->current_definition = 0;
 
   gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), window->busy_cursor);
+
+  gtk_spinner_start (GTK_SPINNER (window->spinner));
+  gtk_widget_show (window->spinner);
+  gtk_stack_set_visible_child_name (GTK_STACK (window->stack), "spinner");
 }
 
 static void
@@ -275,6 +279,10 @@ gdict_window_lookup_end_cb (GdictContext *context,
 
   gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), NULL);
 
+  gtk_stack_set_visible_child_name (GTK_STACK (window->stack), "main");
+  gtk_spinner_stop (GTK_SPINNER (window->spinner));
+  gtk_widget_hide (window->spinner);
+
   if (count == 0)
     {
       g_free (window->word);
@@ -290,6 +298,10 @@ gdict_window_error_cb (GdictContext *context,
                       GdictWindow  *window)
 {
   gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), NULL);
+
+  gtk_stack_set_visible_child_name (GTK_STACK (window->stack), "main");
+  gtk_spinner_stop (GTK_SPINNER (window->spinner));
+  gtk_widget_hide (window->spinner);
   
   /* launch the speller only on NO_MATCH */
   if (error->code == GDICT_CONTEXT_ERROR_NO_MATCH)
@@ -1683,6 +1695,8 @@ gdict_window_class_init (GdictWindowClass *klass)
   gtk_widget_class_bind_template_child (widget_class, GdictWindow, header_bar);
   gtk_widget_class_bind_template_child (widget_class, GdictWindow, entry);
   gtk_widget_class_bind_template_child (widget_class, GdictWindow, main_box);
+  gtk_widget_class_bind_template_child (widget_class, GdictWindow, spinner);
+  gtk_widget_class_bind_template_child (widget_class, GdictWindow, stack);
 
   gdict_window_properties[PROP_ACTION] =
     g_param_spec_enum ("action",
diff --git a/src/gdict-window.h b/src/gdict-window.h
index c01f60c..1ab2448 100644
--- a/src/gdict-window.h
+++ b/src/gdict-window.h
@@ -51,6 +51,8 @@ struct _GdictWindow
   GtkWidget *header_bar;
   GtkWidget *main_box;
   GtkWidget *entry;
+  GtkWidget *spinner;
+  GtkWidget *stack;
   
   /* sidebar widgets */
   GtkWidget *speller;


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