diff options
Diffstat (limited to 'status.c')
-rw-r--r-- | status.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/status.c b/status.c new file mode 100644 index 00000000..0d3be0f3 --- /dev/null +++ b/status.c @@ -0,0 +1,68 @@ +#include "status.h" + +myStatus *my_status_new(gchar *title, gchar *text) +{ + GtkWidget *window, *label, *hbox, *img, *vbox, *progress; + myStatus *status; + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(window), title); + gtk_container_set_border_width(GTK_CONTAINER(window), 15); + gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_widget_show(hbox); + gtk_container_add(GTK_CONTAINER(window), hbox); + + img = gtk_image_new_from_file(IMG_PREFIX "logo.png"); + gtk_widget_show(img); + gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); + gtk_widget_set_usize(GTK_WIDGET(img), 96, 64); + + vbox = gtk_vbox_new(FALSE, 5); + gtk_widget_show(vbox); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); + + label = gtk_label_new(text); + gtk_label_set_use_markup(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); + + progress = gtk_progress_bar_new(); + gtk_widget_show(progress); + gtk_box_pack_start(GTK_BOX(vbox), progress, TRUE, FALSE, 0); + + gtk_widget_show(window); + + status = g_new0(myStatus, 1); + status->window = window; + status->label = label; + status->progress = progress; + + return status; +} + +void my_status_pulse(myStatus *status) +{ + gtk_progress_bar_pulse(GTK_PROGRESS_BAR(status->progress)); + + while (gtk_events_pending()) + gtk_main_iteration(); +} + +void my_status_destroy(myStatus *status) +{ + gtk_widget_destroy(status->window); + g_free(status); + status = NULL; +} + +void my_status_set_text(myStatus *status, gchar *text) +{ + gtk_label_set_markup(GTK_LABEL(status->label), text); + + while (gtk_events_pending()) + gtk_main_iteration(); +} + |