use gio; use glib; use gobject; use gtk; use os; use rt; use types::c; fn about_clicked(btn: *gtk::Button, data: *opaque) void = { let dialog = gtk::about_dialog_new(); const authors: []*c::char = [ c::fromstr("Harriet?"), null: *c::char, ]; gtk::about_dialog_set_license_type( dialog: *gtk::AboutDialog, gtk::License::MPL_2_0, ); gtk::about_dialog_set_authors( dialog: *gtk::AboutDialog, authors: *[*]*c::char: **c::char, ); gtk::about_dialog_set_website( dialog: *gtk::AboutDialog, c::fromstr("https://git.sr.ht/~yerinalexey/hare-gi"), ); gtk::widget_show_all(dialog); }; fn activate(app: *gio::Application, data: *opaque) void = { const app = app: *gtk::Application; let button = gtk::button_new_with_label(c::fromstr("About")); gtk::button_connect_clicked(button: *gtk::Button, &about_clicked, null); let headerbar = gtk::header_bar_new(); gtk::header_bar_set_title(headerbar: *gtk::HeaderBar, c::fromstr("hare-gi demo")); gtk::header_bar_set_show_close_button(headerbar: *gtk::HeaderBar, glib::TRUE); gtk::header_bar_pack_end(headerbar: *gtk::HeaderBar, button); let window = gtk::application_window_new(app); gtk::window_set_titlebar(window: *gtk::Window, headerbar); gtk::widget_show_all(window); }; export fn main() void = { let app = gtk::application_new( c::fromstr("hare_gi.example"), 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); };