-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathsimple.d
48 lines (37 loc) · 1.83 KB
/
simple.d
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
// распостраняется до конца файла: если нет версии simple, то
// код ниже не попадает в компиляцию
version(simple):
import std.stdio;
import std.conv : text;
import gtk.Builder;
import gtk.Main;
import gtk.Widget;
import gtk.Window;
import gtk.Button;
import gtk.Label;
void main(string[] args)
{
// инициализация gtk
Main.init(args);
// класс Builder строит интерфейс
auto ui = new Builder;
// файлы .glade подготавливаются с помощью программы Glade
// директива import позволяет читать файл во время компиляции
// по сути текст файла вставляется в исполняемый файл
ui.addFromString(import("main.glade"));
// builder возвращает ObjectG объект, его приводим к интересуюущему классу
auto win = cast(Window)ui.getObject("mwindow");
// имена объектов присваиваются при создании интерфейса (main.glade)
auto btn = cast(Button)ui.getObject("actionbtn");
auto lbl = cast(Label)ui.getObject("infolbl");
size_t n;
// выставляем новый текст в label (текстовый widget)
btn.addOnClicked((aux) { lbl.setText(text(n++)); });
// функция text переводит любой свой аргумент в текст
// при скрытии окна завершать главный цикл обработки событий
win.addOnHide((aux){ Main.quit(); });
// показать окно и все дочерние элементы
win.showAll();
// запуск цикла обработки событий
Main.run();
}