summaryrefslogtreecommitdiffstats
path: root/ui.vala
blob: 843198b58b5af8f78f7011bc189877229b982657 (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* Copyright 2012, Sebastian Reichel <sre@ring0.de>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

public void init_ui() {
	init_restock_dialog();
	init_main_window();
}

public void init_main_window() {
	var window = builder.get_object("main") as Gtk.Window;

	/* TODO */
	window.destroy.connect(() => {
		Gtk.main_quit();
	});
}

public void init_restock_dialog() {
	var window = builder.get_object("restock_dialog") as Gtk.Window;

	/* product combobox */
	var box = builder.get_object("comboboxtext1") as Gtk.ComboBoxText;
	foreach(var entry in db.get_products().entries) {
		box.append(entry.key, entry.value);
	}

	/* spinner button */
	var spinner = builder.get_object("spinbutton1") as Gtk.SpinButton;

	/* dialog buttons */
	var cancel = builder.get_object("button-restock-cancel") as Gtk.Button;
	var ok = builder.get_object("button-restock-add") as Gtk.Button;

	cancel.clicked.connect(() => {
		spinner.value = 0.0;
		box.active = -1;
		window.hide();
	});

	ok.clicked.connect(() => {
		var id = box.get_active_id();
		var product = (id != null) ? uint64.parse(id) : 0;
		var amount = (int) spinner.get_value();

		write_to_log("restock: %lld - %d\n", product, amount);

		if(db.restock(product, amount)) {
			spinner.value = 0.0;
			box.active = -1;
			window.hide();
		}
	});
}

public void show_restock_dialog() {
	(builder.get_object("restock-dialog") as Gtk.Window).show();
}

public void show_about_dialog() {
	(builder.get_object("about-dialog") as Gtk.Window).show();
}

public void show_main_window() {
	(builder.get_object("main") as Gtk.Window).show();
}

[PrintfFormat]
public void write_to_log(string format, ...) {
	var arguments = va_list();
	var message = format.vprintf(arguments);
	var time = new DateTime.now_local();

	var view = builder.get_object("logview") as Gtk.TextView;
	view.buffer.insert_at_cursor(time.format("[%Y-%m-%d %H:%M:%S] ") + message + "\n", -1);
	view.scroll_to_mark(view.buffer.get_insert(), 0.0, true, 0.0, 1.0);
}