summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-04-26 16:34:56 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-04-26 16:34:56 +0200
commit558bfbab432caaafa324e669d0987457b5e48b80 (patch)
tree8a1645fa687d6fc2e13c7886abe078f86af4c9e7
parent4e4332cb402fd3151e11e7e3b6d673388d7bb4a9 (diff)
downloadturns-558bfbab432caaafa324e669d0987457b5e48b80.tar.xz
turns-558bfbab432caaafa324e669d0987457b5e48b80.zip
ui: implement basic about dialog
-rw-r--r--app/CMakeLists.txt10
-rw-r--r--app/ch.arknet.Turns.metainfo.xml38
-rw-r--r--app/src/main.cpp13
-rw-r--r--ui/res/ui.cmb3
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),