diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-12-18 02:05:24 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-12-18 02:05:24 -0500 |
commit | 712eba816e1824c7babeffc946dad0335bd87913 (patch) | |
tree | 31fa1dcc72401a3641e5d9d677e5feb048141758 | |
parent | 387dd3103926db8fd9ff6078cd33e0c1191339d1 (diff) | |
download | abaddon-portaudio-712eba816e1824c7babeffc946dad0335bd87913.tar.gz abaddon-portaudio-712eba816e1824c7babeffc946dad0335bd87913.zip |
reload settings + custom css path
-rw-r--r-- | abaddon.cpp | 11 | ||||
-rw-r--r-- | abaddon.hpp | 1 | ||||
-rw-r--r-- | settings.cpp | 8 | ||||
-rw-r--r-- | settings.hpp | 2 | ||||
-rw-r--r-- | windows/mainwindow.cpp | 10 | ||||
-rw-r--r-- | windows/mainwindow.hpp | 4 |
6 files changed, 33 insertions, 3 deletions
diff --git a/abaddon.cpp b/abaddon.cpp index 2fd6d39..8388840 100644 --- a/abaddon.cpp +++ b/abaddon.cpp @@ -66,7 +66,7 @@ int Abaddon::StartGTK() { // tmp css stuff m_css_provider = Gtk::CssProvider::create(); m_css_provider->signal_parsing_error().connect([this](const Glib::RefPtr<const Gtk::CssSection> §ion, const Glib::Error &error) { - Gtk::MessageDialog dlg(*m_main_window, "main.css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog dlg(*m_main_window, "css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.run(); }); @@ -99,6 +99,7 @@ int Abaddon::StartGTK() { m_main_window->signal_action_reload_css().connect(sigc::mem_fun(*this, &Abaddon::ActionReloadCSS)); m_main_window->signal_action_join_guild().connect(sigc::mem_fun(*this, &Abaddon::ActionJoinGuildDialog)); m_main_window->signal_action_set_status().connect(sigc::mem_fun(*this, &Abaddon::ActionSetStatus)); + m_main_window->signal_action_reload_settings().connect(sigc::mem_fun(*this, &Abaddon::ActionReloadSettings)); m_main_window->signal_action_show_user_menu().connect(sigc::mem_fun(*this, &Abaddon::ShowUserMenu)); @@ -454,13 +455,17 @@ void Abaddon::ActionReactionRemove(Snowflake id, const Glib::ustring ¶m) { m_discord.RemoveReaction(id, param); } +void Abaddon::ActionReloadSettings() { + m_settings.Reload(); +} + void Abaddon::ActionReloadCSS() { try { Gtk::StyleContext::remove_provider_for_screen(Gdk::Screen::get_default(), m_css_provider); - m_css_provider->load_from_path("./css/main.css"); + m_css_provider->load_from_path(m_settings.GetMainCSS()); Gtk::StyleContext::add_provider_for_screen(Gdk::Screen::get_default(), m_css_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } catch (Glib::Error &e) { - Gtk::MessageDialog dlg(*m_main_window, "main.css failed to load (" + e.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog dlg(*m_main_window, "css failed to load (" + e.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.run(); } } diff --git a/abaddon.hpp b/abaddon.hpp index d2439ae..649578e 100644 --- a/abaddon.hpp +++ b/abaddon.hpp @@ -46,6 +46,7 @@ public: void ActionReactionAdd(Snowflake id, const Glib::ustring ¶m); void ActionReactionRemove(Snowflake id, const Glib::ustring ¶m); + void ActionReloadSettings(); void ActionReloadCSS(); ImageManager &GetImageManager(); diff --git a/settings.cpp b/settings.cpp index 8736d15..ce7d94e 100644 --- a/settings.cpp +++ b/settings.cpp @@ -14,6 +14,10 @@ SettingsManager::SettingsManager(std::string filename) m_ok = rc == SI_OK; } +void SettingsManager::Reload() { + m_ok = m_ini.LoadFile(m_filename.c_str()) == SI_OK; +} + std::string SettingsManager::GetSettingString(const std::string §ion, const std::string &key, std::string fallback) const { return m_ini.GetValue(section.c_str(), key.c_str(), fallback.c_str()); } @@ -65,3 +69,7 @@ int SettingsManager::GetCacheHTTPConcurrency() const { bool SettingsManager::GetPrefetch() const { return GetSettingBool("discord", "prefetch", false); } + +std::string SettingsManager::GetMainCSS() const { + return GetSettingString("gui", "css", "./css/main.css"); +} diff --git a/settings.hpp b/settings.hpp index a656ac9..30ce975 100644 --- a/settings.hpp +++ b/settings.hpp @@ -6,6 +6,7 @@ class SettingsManager { public: SettingsManager(std::string filename); + void Reload(); void Close(); bool GetUseMemoryDB() const; @@ -16,6 +17,7 @@ public: std::string GetLinkColor() const; int GetCacheHTTPConcurrency() const; bool GetPrefetch() const; + std::string GetMainCSS() const; bool IsValid() const; diff --git a/windows/mainwindow.cpp b/windows/mainwindow.cpp index 570690a..30a79fa 100644 --- a/windows/mainwindow.cpp +++ b/windows/mainwindow.cpp @@ -28,7 +28,9 @@ MainWindow::MainWindow() m_menu_file.set_label("File"); m_menu_file.set_submenu(m_menu_file_sub); + m_menu_file_reload_settings.set_label("Reload Settings"); m_menu_file_reload_css.set_label("Reload CSS"); + m_menu_file_sub.append(m_menu_file_reload_settings); m_menu_file_sub.append(m_menu_file_reload_css); m_menu_bar.append(m_menu_file); @@ -58,6 +60,10 @@ MainWindow::MainWindow() m_signal_action_set_status.emit(); }); + m_menu_file_reload_settings.signal_activate().connect([this] { + m_signal_action_reload_settings.emit(); + }); + m_content_box.set_hexpand(true); m_content_box.set_vexpand(true); @@ -258,3 +264,7 @@ MainWindow::type_signal_action_set_status MainWindow::signal_action_set_status() MainWindow::type_signal_action_show_user_menu MainWindow::signal_action_show_user_menu() { return m_signal_action_show_user_menu; } + +MainWindow::type_signal_action_reload_settings MainWindow::signal_action_reload_settings() { + return m_signal_action_reload_settings; +} diff --git a/windows/mainwindow.hpp b/windows/mainwindow.hpp index a9ebae4..241851e 100644 --- a/windows/mainwindow.hpp +++ b/windows/mainwindow.hpp @@ -41,6 +41,7 @@ public: typedef sigc::signal<void> type_signal_action_join_guild; typedef sigc::signal<void> type_signal_action_set_status; typedef sigc::signal<void, const GdkEvent *, Snowflake, Snowflake> type_signal_action_show_user_menu; + typedef sigc::signal<void> type_signal_action_reload_settings; type_signal_action_connect signal_action_connect(); type_signal_action_disconnect signal_action_disconnect(); @@ -49,6 +50,7 @@ public: type_signal_action_join_guild signal_action_join_guild(); type_signal_action_set_status signal_action_set_status(); type_signal_action_show_user_menu signal_action_show_user_menu(); + type_signal_action_reload_settings signal_action_reload_settings(); protected: type_signal_action_connect m_signal_action_connect; @@ -58,6 +60,7 @@ protected: type_signal_action_join_guild m_signal_action_join_guild; type_signal_action_set_status m_signal_action_set_status; type_signal_action_show_user_menu m_signal_action_show_user_menu; + type_signal_action_reload_settings m_signal_action_reload_settings; protected: Gtk::Box m_main_box; @@ -80,5 +83,6 @@ protected: Gtk::MenuItem m_menu_file; Gtk::Menu m_menu_file_sub; + Gtk::MenuItem m_menu_file_reload_settings; Gtk::MenuItem m_menu_file_reload_css; }; |