diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2025-04-26 16:34:56 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2025-04-26 16:34:56 +0200 |
| commit | 558bfbab432caaafa324e669d0987457b5e48b80 (patch) | |
| tree | 8a1645fa687d6fc2e13c7886abe078f86af4c9e7 | |
| parent | 4e4332cb402fd3151e11e7e3b6d673388d7bb4a9 (diff) | |
| download | turns-558bfbab432caaafa324e669d0987457b5e48b80.tar.xz turns-558bfbab432caaafa324e669d0987457b5e48b80.zip | |
ui: implement basic about dialog
| -rw-r--r-- | app/CMakeLists.txt | 10 | ||||
| -rw-r--r-- | app/ch.arknet.Turns.metainfo.xml | 38 | ||||
| -rw-r--r-- | app/src/main.cpp | 13 | ||||
| -rw-r--r-- | ui/res/ui.cmb | 3 |
4 files changed, 63 insertions, 1 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index ed740b2..669cfeb 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -17,6 +17,11 @@ target_link_libraries("app" PRIVATE "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--no-whole-archive>" ) +target_add_glib_resources("app" + PREFIX "metainfo" + UI_FILES "ch.arknet.Turns.metainfo.xml" +) + set_target_properties("app" PROPERTIES OUTPUT_NAME "turns" ) @@ -25,6 +30,11 @@ install(TARGETS "app" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" ) +install(FILES + "${CMAKE_CURRENT_SOURCE_DIR}/ch.arknet.Turns.metainfo.xml" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" +) + configure_file("desktop.in" "turns.desktop" ) diff --git a/app/ch.arknet.Turns.metainfo.xml b/app/ch.arknet.Turns.metainfo.xml new file mode 100644 index 0000000..621c1ee --- /dev/null +++ b/app/ch.arknet.Turns.metainfo.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop"> + <id>ch.arknet.Turns</id> + <metadata_license>CC-BY-SA-4.0</metadata_license> + <project_license>LGPL-2.1-or-later</project_license> + <name>Turns</name> + <name xml:lang="de">Züge</name> + <summary>A simple turn order tracker</summary> + <description> + <p> + Turns is an application to track turn order for TTRPGs like Dungeons and Dragons or Call of Cthulhu. + </p> + </description> + <releases> + <release version="1.0" date="2025-12-31" type="stable"> + <description> + <p>This is the first public release</p> + </description> + </release> + </releases> + <recommends> + <control>keyboard</control> + <control>pointing</control> + </recommends> + <content_rating type="oars-1.1" /> + <keywords> + <keyword>Role-playing Games</keyword> + <keyword>Tabletop Games</keyword> + </keywords> + <developer id="ch.arknet"> + <name>Felix Morgner</name> + </developer> + <update_contact>felix.morgner@gmail.com</update_contact> + <launchable type="desktop-id">ch.arknet.Turns.desktop</launchable> + <url type="homepage">https://source.arknet.ch/fmorgner/turns</url> + <url type="bugtracker">https://source.arknet.ch/fmorgner/turns/-/issues</url> + <url type="vcs-browser">https://source.arknet.ch/fmorgner/turns</url> +</component>
\ No newline at end of file diff --git a/app/src/main.cpp b/app/src/main.cpp index 7595dc3..8016a83 100644 --- a/app/src/main.cpp +++ b/app/src/main.cpp @@ -3,6 +3,7 @@ #include "turns/ui/init.hpp" #include "turns/ui/windows/tracker.hpp" +#include <sigc++/adaptors/bind.h> #include <sigc++/functors/mem_fun.h> #include <glibmm/refptr.h> @@ -10,8 +11,11 @@ #include <giomm/application.h> #include <giomm/settings.h> +#include <gtkmm/application.h> #include <gtkmm/builder.h> +#include <gtkmm/object.h> +#include <adwaitamm/aboutdialog.hpp> #include <adwaitamm/application.hpp> #include <adwaitamm/enums.hpp> #include <adwaitamm/stylemanager.hpp> @@ -19,7 +23,6 @@ #include <libintl.h> #include <clocale> -#include <print> auto add_new_window(Glib::RefPtr<Gtk::Application> app, Glib::RefPtr<Gtk::Builder> builder, Glib::RefPtr<Gio::Settings> settings) { @@ -31,6 +34,13 @@ auto add_new_window(Glib::RefPtr<Gtk::Application> app, Glib::RefPtr<Gtk::Builde return window; } +auto show_about(Glib::RefPtr<Adwaita::Application> app) +{ + auto active_window = app->get_active_window(); + auto dialog = Gtk::make_managed<Adwaita::AboutDialog>("metainfo/ch.arknet.Turns.metainfo.xml", ""); + dialog->present(active_window); +} + auto main(int argc, char * argv[]) -> int { setlocale(LC_ALL, ""); @@ -50,6 +60,7 @@ auto main(int argc, char * argv[]) -> int style_manager->set_color_scheme(Adwaita::ColorScheme::PreferLight); app->add_action("quit", sigc::mem_fun(*app, &Adwaita::Application::quit)); + app->add_action("about", sigc::bind(&show_about, app)); app->set_accel_for_action("app.quit", "<Primary>q"); app->set_accel_for_action("win.clear", "<Primary>x"); app->set_accel_for_action("win.next", "<Primary>space"); diff --git a/ui/res/ui.cmb b/ui/res/ui.cmb index 4cba1f8..1bd764e 100644 --- a/ui/res/ui.cmb +++ b/ui/res/ui.cmb @@ -43,6 +43,7 @@ (1,33,"(item)",None,9,None,None,None,3,None,None), (1,34,"(item)",None,9,None,None,None,1,None,None), (1,44,"(item)",None,9,None,None,None,5,None,None), + (1,45,"(item)",None,9,None,None,None,6,None,None), (2,1,"AdwDialog","participant_editor",None,None,None,None,0,None,None), (2,2,"AdwToolbarView",None,1,None,None,None,0,None,None), (2,3,"AdwHeaderBar",None,2,None,"top",None,0,None,None), @@ -137,6 +138,8 @@ (1,34,"(item)","label","_Open...",1,None,None,None,None,None,None,None,None), (1,44,"(item)","action","app.quit",None,None,None,None,None,None,None,None,None), (1,44,"(item)","label","_Quit",1,None,None,None,None,None,None,None,None), + (1,45,"(item)","action","app.about",None,None,None,None,None,None,None,None,None), + (1,45,"(item)","label","About",None,None,None,None,None,None,None,None,None), (2,1,"AdwDialog","child",None,None,None,None,None,2,None,None,None,None), (2,1,"AdwDialog","default-widget",None,None,None,None,None,None,None,None,None,None), (2,1,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), |
