module; #include #include export module larra.application; import larra.main_window; namespace larra { export struct Application : Gtk::Application { Application() : Gtk::Application("org.larra.larra") { Glib::set_application_name("Larra"); }; static auto create() -> Glib::RefPtr { return Glib::make_refptr_for_instance(new Application{}); // NOLINT }; auto on_startup() -> void final { this->Gtk::Application::on_startup(); this->add_action("preferences", sigc::mem_fun(*this, &Application::OnClickPreferences)); this->add_action("accounts", sigc::mem_fun(*this, &Application::OnClickManageAccounts)); this->add_action("about", sigc::mem_fun(*this, &Application::OnClickAbout)); auto gmenu = Gio::Menu::create(); auto larraMenu = Gio::Menu::create(); larraMenu->append("Preferences", "app.preferences"); auto accountsMenu = Gio::Menu::create(); accountsMenu->append("Manage accounts", "app.accounts"); auto helpMenu = Gio::Menu::create(); helpMenu->append("About", "app.about"); gmenu->append_submenu("Larra", larraMenu); gmenu->append_submenu("Accounts", accountsMenu); gmenu->append_submenu("Help", helpMenu); this->set_menubar(gmenu); }; auto on_activate() -> void final { auto win = new MainWindow{}; // NOLINT this->add_window(*win); win->signal_hide().connect([win] { delete win; // NOLINT }); win->set_show_menubar(); win->set_visible(true); }; auto OnClickPreferences() -> void { }; auto OnClickManageAccounts() -> void { }; auto OnClickAbout() -> void {}; }; } // namespace larra