This commit is contained in:
sha512sum 2024-08-26 11:22:03 +00:00 committed by sha512sum
parent e6cdcb8998
commit 2b4d8804ce
3 changed files with 76 additions and 10 deletions

58
src/application.cpp Normal file
View file

@ -0,0 +1,58 @@
module;
#include <gtkmm.h>
#include <print>
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<Application> {
return Glib::make_refptr_for_instance<Application>(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

View file

@ -1,10 +1,7 @@
module;
#include <gtkmm.h>
export module larra.main; export module larra.main;
import larra.library; import larra.application;
import larra.main_window;
auto main(int argc, char* argv[]) -> int { auto main(int argc, char* argv[]) -> int {
auto app = Gtk::Application::create("org.larra.larra"); auto app = larra::Application::create();
return app->make_window_and_run<MainWindow>(argc, argv); return app->run(argc, argv);
}; };

View file

@ -2,9 +2,20 @@ module;
#include <gtkmm.h> #include <gtkmm.h>
export module larra.main_window; export module larra.main_window;
export struct MainWindow : public Gtk::Window { namespace larra {
export struct MainWindow : Gtk::ApplicationWindow {
Gtk::Box main;
Gtk::Box leftPanel{Gtk::Orientation::VERTICAL};
Gtk::Box accounts{Gtk::Orientation::VERTICAL};
MainWindow() { MainWindow() {
this->set_title("XMPP Client"); this->set_title("Larra");
this->set_default_size(200, 200); auto settings = Gtk::Settings::get_default();
}; this->main.append(this->leftPanel);
this->set_child(this->main);
}
}; };
} // namespace larra