[gnote] Add main window search action support to action manager



commit 2e32a4e99c734cdfc83bcb4abbe9e0b47ff0a3e5
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sun Dec 27 14:53:44 2015 +0200

    Add main window search action support to action manager

 src/actionmanager.cpp  |   24 ++++++++++++++++++++++++
 src/actionmanager.hpp  |    6 ++++++
 src/iactionmanager.hpp |    7 +++++++
 3 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/src/actionmanager.cpp b/src/actionmanager.cpp
index 05230c5..316a110 100644
--- a/src/actionmanager.cpp
+++ b/src/actionmanager.cpp
@@ -235,4 +235,28 @@ namespace gnote {
     return m_main_window_actions2;
   }
 
+  void ActionManager::register_main_window_search_callback(const std::string & id, const Glib::ustring & 
action,
+                                                    sigc::slot<void, const Glib::VariantBase&> callback)
+  {
+    DBG_ASSERT(m_main_window_search_actions.find(id) == m_main_window_search_actions.end(), "Duplicate 
callback for main window search");
+
+    m_main_window_search_actions[id] = std::make_pair(action, callback);
+    signal_main_window_search_actions_changed();
+  }
+
+  void ActionManager::unregister_main_window_search_callback(const std::string & id)
+  {
+    m_main_window_search_actions.erase(id);
+    signal_main_window_search_actions_changed();
+  }
+
+  std::map<Glib::ustring, sigc::slot<void, const Glib::VariantBase&>> 
ActionManager::get_main_window_search_callbacks()
+  {
+    std::map<Glib::ustring, sigc::slot<void, const Glib::VariantBase&>> cbacks;
+    for(auto & iter : m_main_window_search_actions) {
+      cbacks.insert(iter.second);
+    }
+    return cbacks;
+  }
+
 }
diff --git a/src/actionmanager.hpp b/src/actionmanager.hpp
index 0caab13..cfcffdf 100644
--- a/src/actionmanager.hpp
+++ b/src/actionmanager.hpp
@@ -59,6 +59,11 @@ public:
   Glib::RefPtr<Gio::Menu> get_app_menu() const;
   virtual void register_main_window_action(const Glib::ustring & action, const Glib::VariantType 
*state_type) override;
   virtual std::map<Glib::ustring, const Glib::VariantType*> get_main_window_actions() const override;
+
+  virtual void register_main_window_search_callback(const std::string & id, const Glib::ustring & action,
+                                                    sigc::slot<void, const Glib::VariantBase&> callback) 
override;
+  virtual void unregister_main_window_search_callback(const std::string & id) override;
+  virtual std::map<Glib::ustring, sigc::slot<void, const Glib::VariantBase&>> 
get_main_window_search_callbacks() override;
 private:
   void make_app_actions();
   void make_app_menu_items();
@@ -91,6 +96,7 @@ private:
   typedef std::multimap<int, AppMenuItem> AppMenuItemMultiMap;
   AppMenuItemMultiMap m_app_menu_items;
   std::map<Glib::ustring, const Glib::VariantType*> m_main_window_actions2;
+  std::map<std::string, std::pair<Glib::ustring, sigc::slot<void, const Glib::VariantBase&>>> 
m_main_window_search_actions;
 };
 
 
diff --git a/src/iactionmanager.hpp b/src/iactionmanager.hpp
index 50de3c5..dff9f5a 100644
--- a/src/iactionmanager.hpp
+++ b/src/iactionmanager.hpp
@@ -60,6 +60,13 @@ public:
                                  const std::string & action_def) = 0;
   virtual void register_main_window_action(const Glib::ustring & action, const Glib::VariantType 
*state_type) = 0;
   virtual std::map<Glib::ustring, const Glib::VariantType*> get_main_window_actions() const = 0;
+
+  virtual void register_main_window_search_callback(const std::string & id, const Glib::ustring & action,
+                                                    sigc::slot<void, const Glib::VariantBase&> callback) = 0;
+  virtual void unregister_main_window_search_callback(const std::string & id) = 0;
+  virtual std::map<Glib::ustring, sigc::slot<void, const Glib::VariantBase&>> 
get_main_window_search_callbacks() = 0;
+  sigc::signal<void> signal_main_window_search_actions_changed;
+  sigc::signal<void, std::map<int, Gtk::Widget*>&> signal_build_main_window_search_popover;
 };
 
 }


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