diff options
author | Juan R. García Blanco <juanrgar@gmail.com> | 2001-01-01 01:30:11 +0100 |
---|---|---|
committer | Juan R. García Blanco <juanrgar@gmail.com> | 2015-04-04 21:20:50 +0200 |
commit | da65b1bcafd1a9d49bbd3dcbcee6b1ec92d835be (patch) | |
tree | f3574e8d545badc5e6115ccf52d1075ba063a326 | |
parent | ec9aba6e53ebf81f3d3e037dafd81faad4b6d5f7 (diff) | |
download | gnome-dictionary-da65b1bcafd1a9d49bbd3dcbcee6b1ec92d835be.tar.gz |
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
-rw-r--r-- | src/gdict-app-window.ui | 27 | ||||
-rw-r--r-- | src/gdict-window.c | 14 | ||||
-rw-r--r-- | 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; |