# HG changeset patch # User Emmanuel Gil Peyrot # Date 1604237642 -3600 # Node ID cdbf3a2c9af89932f9cb5f6ba7eeaf0913dd24fd # Parent 2e074d185151a5f0f59a945315c604aaa779c302 Add a very simple menu. diff --git a/src/main.rs b/src/main.rs --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ use gio::prelude::*; use gtk::prelude::*; +use glib::clone; use std::env::args; use std::fs::{File, OpenOptions}; @@ -200,6 +201,38 @@ struct State { } fn build_ui(application: >k::Application) { + let quit = gio::SimpleAction::new("quit", None); + application.set_accels_for_action("app.quit", &["q"]); + application.add_action(&quit); + quit.connect_activate(clone!(@weak application => move |_, _| application.quit())); + + let about = gio::SimpleAction::new("about", None); + application.add_action(&about); + about.connect_activate(|_, _| { + let about = gtk::AboutDialog::new(); + about.set_program_name("TabletEmu"); + about.set_logo_icon_name(Some("input-tablet")); + about.set_website(Some("https://hg.linkmauve.fr/tablet-emu")); + about.set_version(Some("0.1")); + about.set_license_type(gtk::License::Agpl30); + about.set_program_name("TabletEmu"); + about.run(); + unsafe { about.destroy(); } + }); + + let menu = gio::Menu::new(); + { + let file = gio::Menu::new(); + file.append(Some("_Quit"), Some("app.quit")); + menu.append_submenu(Some("_File"), &file); + } + { + let help = gio::Menu::new(); + help.append(Some("_About"), Some("app.about")); + menu.append_submenu(Some("_Help"), &help); + } + application.set_menubar(Some(&menu)); + let dev = match create_uinput_device() { Ok(dev) => dev, Err(err) => {