[gnote] Make ActionManager non-singleton



commit 5de69cdb32fc162a9bd828fd73b2e5da51db7323
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sun Oct 13 17:41:59 2019 +0300

    Make ActionManager non-singleton

 src/addinmanager.cpp                       |  2 +-
 src/gnote.cpp                              | 17 ++++++++---------
 src/gnote.hpp                              |  4 ++++
 src/iactionmanager.hpp                     |  3 ---
 src/ignote.hpp                             |  2 ++
 src/notebooks/notebookapplicationaddin.cpp |  4 ++--
 src/preferencesdialog.cpp                  |  2 +-
 src/recentchanges.cpp                      |  4 ++--
 src/searchnoteswidget.cpp                  |  6 +++---
 src/synchronization/syncmanager.cpp        |  4 ++--
 10 files changed, 25 insertions(+), 23 deletions(-)
---
diff --git a/src/addinmanager.cpp b/src/addinmanager.cpp
index cccf92d3..95453e33 100644
--- a/src/addinmanager.cpp
+++ b/src/addinmanager.cpp
@@ -579,7 +579,7 @@ namespace {
 
   void AddinManager::register_addin_actions() const
   {
-    auto & manager(IActionManager::obj());
+    auto & manager(IGnote::obj().action_manager());
     for(auto & info : m_addin_infos) {
       auto & non_modifying = info.second.non_modifying_actions();
       for(auto & action : info.second.actions()) {
diff --git a/src/gnote.cpp b/src/gnote.cpp
index 0cb54c56..656df6c9 100644
--- a/src/gnote.cpp
+++ b/src/gnote.cpp
@@ -429,17 +429,16 @@ namespace gnote {
 
   void Gnote::make_app_actions()
   {
-    IActionManager & am(IActionManager::obj());
-    am.get_app_action("new-note")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_new_note_app_action));
-    am.get_app_action("new-window")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_new_window_action));
-    am.get_app_action("show-preferences")->signal_activate().connect(
+    m_action_manager.get_app_action("new-note")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_new_note_app_action));
+    m_action_manager.get_app_action("new-window")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_new_window_action));
+    m_action_manager.get_app_action("show-preferences")->signal_activate().connect(
       sigc::mem_fun(*this, &Gnote::on_show_preferences_action));
-    am.get_app_action("sync-notes")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::open_note_sync_window));
-    am.get_app_action("help-contents")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_show_help_action));
-    am.get_app_action("help-shortcuts")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_show_help_shortcust_action));
-    am.get_app_action("about")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_show_about_action));
+    m_action_manager.get_app_action("sync-notes")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::open_note_sync_window));
+    m_action_manager.get_app_action("help-contents")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_show_help_action));
+    m_action_manager.get_app_action("help-shortcuts")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_show_help_shortcust_action));
+    m_action_manager.get_app_action("about")->signal_activate().connect(sigc::mem_fun(*this, 
&Gnote::on_show_about_action));
 
-    add_app_actions(static_cast<ActionManager &>(am).get_app_actions());
+    add_app_actions(m_action_manager.get_app_actions());
   }
 
 
diff --git a/src/gnote.hpp b/src/gnote.hpp
index b769f41d..37b321a3 100644
--- a/src/gnote.hpp
+++ b/src/gnote.hpp
@@ -121,6 +121,10 @@ public:
     {
       return *m_manager;
     }
+  virtual IActionManager & action_manager() override
+    {
+      return m_action_manager;
+    }
   virtual IconManager & icon_manager() override
     {
       return m_icon_manager;
diff --git a/src/iactionmanager.hpp b/src/iactionmanager.hpp
index 349c1ba1..fa312b50 100644
--- a/src/iactionmanager.hpp
+++ b/src/iactionmanager.hpp
@@ -23,15 +23,12 @@
 
 #include <giomm/simpleaction.h>
 #include <gtkmm/action.h>
-#include <gtkmm/uimanager.h>
 
-#include "base/singleton.hpp"
 #include "popoverwidgets.hpp"
 
 namespace gnote {
 
 class IActionManager
-  : public base::Singleton<IActionManager>
 {
 public:
   virtual ~IActionManager();
diff --git a/src/ignote.hpp b/src/ignote.hpp
index 54e67243..911d00df 100644
--- a/src/ignote.hpp
+++ b/src/ignote.hpp
@@ -25,6 +25,7 @@
 
 namespace gnote {
 
+class IActionManager;
 class IconManager;
 class Preferences;
 
@@ -40,6 +41,7 @@ public:
 
   virtual ~IGnote();
 
+  virtual IActionManager & action_manager() = 0;
   virtual IconManager & icon_manager() = 0;
   virtual Preferences & preferences() = 0;
 
diff --git a/src/notebooks/notebookapplicationaddin.cpp b/src/notebooks/notebookapplicationaddin.cpp
index e26b753f..23974682 100644
--- a/src/notebooks/notebookapplicationaddin.cpp
+++ b/src/notebooks/notebookapplicationaddin.cpp
@@ -35,8 +35,8 @@
 #include "notebooks/notebooknewnotemenuitem.hpp"
 #include "notebooks/notebook.hpp"
 #include "iactionmanager.hpp"
+#include "ignote.hpp"
 #include "debug.hpp"
-#include "iconmanager.hpp"
 #include "notemanager.hpp"
 
 namespace gnote {
@@ -57,7 +57,7 @@ namespace gnote {
 
     void NotebookApplicationAddin::initialize ()
     {
-      IActionManager & am(IActionManager::obj());
+      IActionManager & am(IGnote::obj().action_manager());
 
       NoteManager & nm(note_manager());
 
diff --git a/src/preferencesdialog.cpp b/src/preferencesdialog.cpp
index 167d3400..696618aa 100644
--- a/src/preferencesdialog.cpp
+++ b/src/preferencesdialog.cpp
@@ -1237,7 +1237,7 @@ namespace gnote {
 
       if(dialog_response == Gtk::RESPONSE_YES) {
         // TODO: Put this voodoo in a method somewhere
-        IActionManager::obj().get_app_action("sync-notes")->activate(Glib::VariantBase());
+        IGnote::obj().action_manager().get_app_action("sync-notes")->activate(Glib::VariantBase());
       }
     }
     else {
diff --git a/src/recentchanges.cpp b/src/recentchanges.cpp
index a1a7cfb3..7fff1f48 100644
--- a/src/recentchanges.cpp
+++ b/src/recentchanges.cpp
@@ -107,7 +107,7 @@ namespace gnote {
     m_keybinder.add_accelerator(sigc::mem_fun(*this, &NoteRecentChanges::close_window),
                                 GDK_KEY_Q, Gdk::CONTROL_MASK, (Gtk::AccelFlags)0);
 
-    std::map<Glib::ustring, const Glib::VariantType*> actions = 
IActionManager::obj().get_main_window_actions();
+    std::map<Glib::ustring, const Glib::VariantType*> actions = 
IGnote::obj().action_manager().get_main_window_actions();
     for(std::map<Glib::ustring, const Glib::VariantType*>::iterator iter = actions.begin();
         iter != actions.end(); ++iter) {
       MainWindowAction::Ptr action;
@@ -124,7 +124,7 @@ namespace gnote {
         add_action(action = MainWindowAction::create(iter->first, Glib::ustring("")));
       }
       if(action) {
-        action->is_modifying(IActionManager::obj().is_modifying_main_window_action(iter->first));
+        action->is_modifying(IGnote::obj().action_manager().is_modifying_main_window_action(iter->first));
       }
     }
     find_action("close-window")->signal_activate()
diff --git a/src/searchnoteswidget.cpp b/src/searchnoteswidget.cpp
index 0c58ba4a..02860c9a 100644
--- a/src/searchnoteswidget.cpp
+++ b/src/searchnoteswidget.cpp
@@ -1393,7 +1393,7 @@ void SearchNotesWidget::foreground()
 
   win->add_accel_group(m_accel_group);
   win->set_focus(*m_tree);
-  auto & manager(IActionManager::obj());
+  auto & manager(IGnote::obj().action_manager());
   register_callbacks();
   m_callback_changed_cid = manager.signal_main_window_search_actions_changed
     .connect(sigc::mem_fun(*this, &SearchNotesWidget::callbacks_changed));
@@ -1435,7 +1435,7 @@ std::vector<PopoverWidget> SearchNotesWidget::get_popover_widgets()
 {
   std::vector<PopoverWidget> popover_widgets;
   popover_widgets.reserve(20);
-  IActionManager::obj().signal_build_main_window_search_popover(popover_widgets);
+  IGnote::obj().action_manager().signal_build_main_window_search_popover(popover_widgets);
   for(unsigned i = 0; i < popover_widgets.size(); ++i) {
     popover_widgets[i].secondary_order = i;
   }
@@ -1555,7 +1555,7 @@ void SearchNotesWidget::register_callbacks()
   if(!win) {
     return;
   }
-  auto & manager(IActionManager::obj());
+  auto & manager(IGnote::obj().action_manager());
   auto cbacks = manager.get_main_window_search_callbacks();
   for(auto & cback : cbacks) {
     auto action = win->find_action(cback.first);
diff --git a/src/synchronization/syncmanager.cpp b/src/synchronization/syncmanager.cpp
index 6593f9a2..d1ed77b2 100644
--- a/src/synchronization/syncmanager.cpp
+++ b/src/synchronization/syncmanager.cpp
@@ -60,7 +60,7 @@ namespace sync {
   {
     m_client = GnoteSyncClient::create(manager);
     // Add a "Synchronize Notes" to Gnote's Application Menu
-    IActionManager & am(IActionManager::obj());
+    IActionManager & am(IGnote::obj().action_manager());
     am.add_app_action("sync-notes");
     am.add_app_menu_item(APP_SECTION_MANAGE, 200, _("Synchronize Notes"), "app.sync-notes");
 
@@ -420,7 +420,7 @@ namespace sync {
   {
     Glib::RefPtr<Gio::Settings> settings = 
IGnote::obj().preferences().get_schema_settings(Preferences::SCHEMA_SYNC);
     Glib::ustring sync_addin_id = settings->get_string(Preferences::SYNC_SELECTED_SERVICE_ADDIN);
-    IActionManager::obj().get_app_action("sync-notes")->set_enabled(sync_addin_id != "");
+    IGnote::obj().action_manager().get_app_action("sync-notes")->set_enabled(sync_addin_id != "");
 
     int timeoutPref = settings->get_int(Preferences::SYNC_AUTOSYNC_TIMEOUT);
     if(timeoutPref != m_autosync_timeout_pref_minutes) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]