summaryrefslogtreecommitdiff
path: root/status.c
blob: 626093ff3990ddc1a5651bed3e5a6569bcfe10a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "config.h"
#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();	
}