Add private modules build and add Applcation ref to MainWindow
This commit is contained in:
parent
2b4d8804ce
commit
1bb458198c
5 changed files with 39 additions and 25 deletions
|
@ -19,8 +19,12 @@ set(CXX_EXTENSIONS NO)
|
|||
set(BOOST_INCLUDE_LIBRARIES "pfr")
|
||||
option(CPM_USE_LOCAL_PACKAGES "Use local packages" ON)
|
||||
|
||||
file(GLOB_RECURSE LIB_SOURCES "lib/src/*.cpp")
|
||||
file(GLOB_RECURSE LIB_SOURCES "src/lib/*.cpp")
|
||||
file(GLOB_RECURSE SOURCES "src/*.cpp")
|
||||
file(GLOB_RECURSE IMPL_SOURCES "src/*_impl.cpp")
|
||||
file(GLOB_RECURSE LIB_IMPL_SOURCES "src/lib/*_impl.cpp")
|
||||
list(REMOVE_ITEM LIB_SOURCES ${LIB_IMPL_SOURCES})
|
||||
list(REMOVE_ITEM SOURCES ${IMPL_SOURCES} ${LIB_SOURCES})
|
||||
set(CMAKE_CXX_MODULE_STD 1)
|
||||
|
||||
set_target_properties(__cmake_cxx23 PROPERTIES CXX_EXTENSIONS OFF)
|
||||
|
@ -85,6 +89,8 @@ target_compile_features(larra_xmpp INTERFACE cxx_std_23)
|
|||
target_sources(larra_xmpp PUBLIC FILE_SET larraXMPPSet TYPE CXX_MODULES
|
||||
FILES ${LIB_SOURCES})
|
||||
|
||||
target_sources(larra_xmpp PUBLIC ${LIB_IMPL_SOURCES})
|
||||
|
||||
|
||||
install(TARGETS larra_xmpp
|
||||
EXPORT larraXMPPTargets
|
||||
|
@ -115,6 +121,7 @@ target_link_libraries(larra larra_xmpp)
|
|||
target_sources(larra PUBLIC FILE_SET larraSet TYPE CXX_MODULES
|
||||
FILES ${SOURCES})
|
||||
|
||||
target_sources(larra PUBLIC ${IMPL_SOURCES})
|
||||
|
||||
install(TARGETS larra
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
|
|
|
@ -3,17 +3,16 @@ module;
|
|||
|
||||
#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));
|
||||
|
@ -32,25 +31,15 @@ export struct Application : Gtk::Application {
|
|||
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 on_activate() -> void final;
|
||||
|
||||
auto OnClickPreferences() -> void {
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
auto OnClickManageAccounts() -> void {
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
auto OnClickAbout() -> void {};
|
||||
};
|
||||
|
|
16
src/application_impl.cpp
Normal file
16
src/application_impl.cpp
Normal file
|
@ -0,0 +1,16 @@
|
|||
module larra.application;
|
||||
import larra.main_window;
|
||||
|
||||
namespace larra {
|
||||
|
||||
auto Application::on_activate() -> void {
|
||||
auto win = new MainWindow{*this}; // NOLINT
|
||||
this->add_window(*win);
|
||||
win->signal_hide().connect([win] {
|
||||
delete win; // NOLINT
|
||||
});
|
||||
win->set_show_menubar();
|
||||
win->set_visible(true);
|
||||
}
|
||||
|
||||
} // namespace larra
|
|
@ -1,19 +1,21 @@
|
|||
module;
|
||||
#include <gtkmm.h>
|
||||
export module larra.main_window;
|
||||
import larra.application;
|
||||
|
||||
namespace larra {
|
||||
|
||||
export struct MainWindow : Gtk::ApplicationWindow {
|
||||
Gtk::Box main;
|
||||
|
||||
Gtk::Box leftPanel{Gtk::Orientation::VERTICAL};
|
||||
Gtk::Box accounts{Gtk::Orientation::VERTICAL};
|
||||
|
||||
MainWindow() {
|
||||
Application& app;
|
||||
MainWindow(Application& app) : app(app) {
|
||||
this->set_title("Larra");
|
||||
auto settings = Gtk::Settings::get_default();
|
||||
this->main.append(this->leftPanel);
|
||||
Gtk::Box leftPanel{Gtk::Orientation::VERTICAL};
|
||||
leftPanel.set_halign(Gtk::Align::START);
|
||||
leftPanel.set_expand(true);
|
||||
Gtk::Box accounts{Gtk::Orientation::VERTICAL};
|
||||
leftPanel.append(accounts);
|
||||
this->main.append(leftPanel);
|
||||
this->set_child(this->main);
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue