summaryrefslogtreecommitdiff
path: root/status.c
diff options
context:
space:
mode:
Diffstat (limited to 'status.c')
-rw-r--r--status.c68
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();
+}
+