summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Kendrick <rjek@netsurf-browser.org>2006-04-10 15:11:02 +0000
committerRob Kendrick <rjek@netsurf-browser.org>2006-04-10 15:11:02 +0000
commitc3da525dbcd044f37ce02b9a9fa59febfc3e99ed (patch)
tree393a9da21be0aa5eff5607593c9187a9d26c17f1
parent1ee3d620b8230a9b89def30ea8b83b8055de96c5 (diff)
downloadnetsurf-c3da525dbcd044f37ce02b9a9fa59febfc3e99ed.tar.gz
netsurf-c3da525dbcd044f37ce02b9a9fa59febfc3e99ed.tar.bz2
Simple throbber for nsgtk
svn path=/trunk/netsurf/; revision=2521
-rw-r--r--gtk/gtk_window.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/gtk/gtk_window.c b/gtk/gtk_window.c
index 65431b37b..cbcffc9cd 100644
--- a/gtk/gtk_window.c
+++ b/gtk/gtk_window.c
@@ -35,6 +35,7 @@ struct gui_window {
GtkWidget *url_bar;
GtkWidget *drawing_area;
GtkWidget *status_bar;
+ GtkWidget *progress_bar;
GtkWidget *stop_button;
GtkWidget *back_button;
GtkWidget *forward_button;
@@ -109,7 +110,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
GtkWidget *url_bar;
GtkWidget *scrolled, *history_scrolled;
GtkWidget *drawing_area, *history_area;
- GtkWidget *status_bar;
+ GtkWidget *status_box;
g = malloc(sizeof *g);
if (!g) {
@@ -233,16 +234,24 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
gtk_widget_show(history_area);
g->history_window->drawing_area = history_area;
- status_bar = gtk_statusbar_new();
- gtk_box_pack_start(GTK_BOX(vbox), status_bar, FALSE, TRUE, 0);
- gtk_widget_show(status_bar);
+ status_box = gtk_hbox_new(FALSE, 2);
+ gtk_box_pack_start(GTK_BOX(vbox), status_box, FALSE, TRUE, 3);
+ gtk_widget_show(status_box);
+
+ g->status_bar = gtk_label_new("");
+ gtk_box_pack_start(GTK_BOX(status_box), g->status_bar, FALSE, TRUE, 0);
+ gtk_widget_show(g->status_bar);
+
+ g->progress_bar = gtk_progress_bar_new();
+ gtk_progress_bar_set_pulse_step(g->progress_bar, 0.20);
+ gtk_widget_set_size_request(g->progress_bar, 64, 0);
+ gtk_box_pack_end(GTK_BOX(status_box), g->progress_bar, FALSE, FALSE, 0);
gtk_widget_show(window);
g->window = window;
g->url_bar = url_bar;
g->drawing_area = drawing_area;
- g->status_bar = status_bar;
g->bw = bw;
g->current_pointer = GUI_POINTER_DEFAULT;
@@ -629,12 +638,7 @@ void gui_window_set_extent(struct gui_window *g, int width, int height)
void gui_window_set_status(struct gui_window *g, const char *text)
{
- guint context_id;
-
- gtk_statusbar_pop(GTK_STATUSBAR(g->status_bar), 0);
- context_id = gtk_statusbar_get_context_id(
- GTK_STATUSBAR(g->status_bar), text);
- gtk_statusbar_push(GTK_STATUSBAR(g->status_bar), context_id, text);
+ gtk_label_set_text(g->status_bar, text);
}
@@ -720,13 +724,21 @@ void gui_window_set_url(struct gui_window *g, const char *url)
gtk_entry_set_text(GTK_ENTRY(g->url_bar), url);
}
+static void nsgtk_throb(void *p)
+{
+ struct gui_window *g = p;
+ gtk_progress_bar_pulse((struct gui_window *)(g)->progress_bar);
+ schedule(10, nsgtk_throb, g);
+}
void gui_window_start_throbber(struct gui_window* g)
{
gtk_widget_set_sensitive(g->stop_button, TRUE);
gtk_widget_set_sensitive(g->reload_button, FALSE);
+ gtk_widget_show(g->progress_bar);
schedule(100, gtk_perform_deferred_resize, g);
gui_window_update_back_forward(g);
+ schedule(10, nsgtk_throb, g);
}
@@ -735,6 +747,8 @@ void gui_window_stop_throbber(struct gui_window* g)
gtk_widget_set_sensitive(g->stop_button, FALSE);
gtk_widget_set_sensitive(g->reload_button, TRUE);
gui_window_update_back_forward(g);
+ gtk_widget_hide(g->progress_bar);
+ schedule_remove(nsgtk_throb, g);
}