summaryrefslogtreecommitdiff
path: root/ui/src
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-08-15 20:41:34 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-08-15 20:41:34 +0200
commit46c93e74067de844b35c1249122fcf878a0db924 (patch)
tree17756d05d881ea7ee344c30e55f526f7a9c29198 /ui/src
parentf1b454d2cd8bf054fabbc81f46389a20b5516068 (diff)
downloadturns-46c93e74067de844b35c1249122fcf878a0db924.tar.xz
turns-46c93e74067de844b35c1249122fcf878a0db924.zip
ui: prepare basic color preference infrastructure
Diffstat (limited to 'ui/src')
-rw-r--r--ui/src/windows/tracker.cpp29
-rw-r--r--ui/src/windows/tracker/event_handlers.cpp6
2 files changed, 35 insertions, 0 deletions
diff --git a/ui/src/windows/tracker.cpp b/ui/src/windows/tracker.cpp
index 0b581af..c6dc731 100644
--- a/ui/src/windows/tracker.cpp
+++ b/ui/src/windows/tracker.cpp
@@ -11,22 +11,28 @@
#include <glibmm/binding.h>
#include <glibmm/i18n.h>
+#include <glibmm/propertyproxy.h>
#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
#include <glibmm/varianttype.h>
#include <giomm/liststore.h>
+#include <giomm/settings.h>
#include <gtkmm/applicationwindow.h>
#include <gtkmm/builder.h>
#include <gtkmm/button.h>
+#include <gtkmm/cssprovider.h>
#include <gtkmm/error.h>
#include <gtkmm/filedialog.h>
#include <gtkmm/object.h>
#include <gtkmm/revealer.h>
#include <gtkmm/stack.h>
+#include <gtkmm/styleprovider.h>
#include <gtkmm/widget.h>
#include <adwaita.h>
+#include <gtk/gtk.h>
#include <nlohmann/json.hpp>
#include <exception>
@@ -48,7 +54,10 @@ namespace turns::ui::windows
, m_turn_order{core::turn_order::create()}
, m_turn_order_view{Gtk::make_managed<widgets::turn_order_view>(m_turn_order)}
, m_subtitle{m_title, "subtitle"}
+ , m_css{Gtk::CssProvider::create()}
+ , m_settings{Gio::Settings::create("ch.arknet.Turns")}
{
+ setup_colors();
setup_actions();
m_stack->add(*m_turn_order_view);
@@ -159,6 +168,13 @@ namespace turns::ui::windows
}
}
+ auto tracker::setup_colors() -> void
+ {
+ Gtk::CssProvider::add_provider_for_display(get_display(), m_css, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ m_settings->signal_changed().connect(sigc::mem_fun(*this, &tracker::on_settings_changed));
+ update_colors();
+ }
+
auto tracker::start_replace_content() -> void
{
m_file_buffer = m_turn_order->serialize().dump(2);
@@ -176,6 +192,19 @@ namespace turns::ui::windows
m_overlay->add(adw::Toast{message});
}
+ auto tracker::update_colors() -> void
+ {
+ auto friendly_color = m_settings->get_string("disposition-color-friendly");
+ auto hostile_color = m_settings->get_string("disposition-color-hostile");
+ auto secret_color = m_settings->get_string("disposition-color-secret");
+ m_css->load_from_string(std::format("@define-color friendly {};\n"
+ "@define-color hostile {};\n"
+ "@define-color secret {};\n",
+ friendly_color.c_str(),
+ hostile_color.c_str(),
+ secret_color.c_str()));
+ }
+
auto tracker::update_subtitle() -> void
{
if (m_turn_order->is_empty())
diff --git a/ui/src/windows/tracker/event_handlers.cpp b/ui/src/windows/tracker/event_handlers.cpp
index 3fc1c53..e33e889 100644
--- a/ui/src/windows/tracker/event_handlers.cpp
+++ b/ui/src/windows/tracker/event_handlers.cpp
@@ -5,6 +5,7 @@
#include <glibmm/i18n.h>
#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
#include <giomm/asyncresult.h>
#include <giomm/error.h>
@@ -97,4 +98,9 @@ namespace turns::ui::windows
set_sensitive(false);
}
+ auto tracker::on_settings_changed(Glib::ustring) -> void
+ {
+ update_colors();
+ }
+
} // namespace turns::ui::windows \ No newline at end of file