summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/CMakeLists.txt10
-rw-r--r--app/ch.arknet.Turns.metainfo.xml38
-rw-r--r--app/src/main.cpp13
3 files changed, 60 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");