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
|
use gio;
use glib;
use gobject;
use gtk4;
use os;
use rt;
use types::c;
fn about_clicked(btn: *gtk4::Button, data: *opaque) void = {
let dialog = gtk4::about_dialog_new();
const authors: []*c::char = [
c::nulstr("Harriet?\0"),
null: *c::char,
];
gtk4::about_dialog_set_license_type(
dialog: *gtk4::AboutDialog,
gtk4::License::MPL_2_0,
);
gtk4::about_dialog_set_authors(
dialog: *gtk4::AboutDialog,
authors: *[*]*c::char: **c::char,
);
gtk4::about_dialog_set_website(
dialog: *gtk4::AboutDialog,
c::nulstr("https://git.sr.ht/~yerinalexey/hare-gi\0"),
);
gtk4::widget_show(dialog);
};
fn activate(app: *gio::Application, data: *opaque) void = {
const app = app: *gtk4::Application;
let button = gtk4::button_new_with_label(c::nulstr("About\0"));
gtk4::button_connect_clicked(button: *gtk4::Button, &about_clicked, null);
let headerbar = gtk4::header_bar_new();
let title = gtk4::label_new(c::nulstr("hare-gi demo\0"));
gtk4::header_bar_set_title_widget(headerbar: *gtk4::HeaderBar, title);
gtk4::header_bar_set_show_title_buttons(headerbar: *gtk4::HeaderBar, glib::TRUE);
gtk4::header_bar_pack_end(headerbar: *gtk4::HeaderBar, button);
let window = gtk4::application_window_new(app);
gtk4::window_set_titlebar(window: *gtk4::Window, headerbar);
gtk4::widget_show(window);
};
export fn main() void = {
let app = gtk4::application_new(
c::nulstr("hare_gi.example\0"),
gio::ApplicationFlags::FLAGS_NONE,
): *gio::Application;
gio::application_connect_activate(app, &activate, null);
const status = gio::application_run(
app, rt::argc: int, rt::argv: **c::char,
);
gobject::object_unref(app);
os::exit(status);
};
|