[gnote] Add app menu items to actions menu



commit 6a0afa259693c01860f7f051e6de174144384025
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sun Nov 4 23:13:21 2018 +0200

    Add app menu items to actions menu

 src/actionmanager.cpp | 41 ++++++++++++++++++++++++++++++++++++++++-
 src/actionmanager.hpp |  5 ++++-
 2 files changed, 44 insertions(+), 2 deletions(-)
---
diff --git a/src/actionmanager.cpp b/src/actionmanager.cpp
index eac2fd92..ff6e9b23 100644
--- a/src/actionmanager.cpp
+++ b/src/actionmanager.cpp
@@ -1,7 +1,7 @@
 /*
  * gnote
  *
- * Copyright (C) 2011-2017 Aurimas Cernius
+ * Copyright (C) 2011-2018 Aurimas Cernius
  * Copyright (C) 2009 Hubert Figuiere
  *
  * This program is free software: you can redistribute it and/or modify
@@ -63,6 +63,7 @@
 #include "debug.hpp"
 #include "actionmanager.hpp"
 #include "iconmanager.hpp"
+#include "utils.hpp"
 
 namespace gnote {
 
@@ -88,6 +89,9 @@ namespace gnote {
     register_main_window_action("enable-bullets", &Glib::Variant<bool>::variant_type(), true);
     register_main_window_action("increase-indent", NULL, true);
     register_main_window_action("decrease-indent", NULL, true);
+
+    signal_build_main_window_search_popover.connect(sigc::mem_fun(*this, 
&ActionManager::add_app_menu_new_section));
+    signal_build_main_window_search_popover.connect(sigc::mem_fun(*this, 
&ActionManager::add_app_menu_trailing_sections));
   }
 
 
@@ -232,4 +236,39 @@ namespace gnote {
     return cbacks;
   }
 
+  bool ActionManager::add_app_menu_section(std::map<int, Gtk::Widget*> & widgets, int & order, int section)
+  {
+    std::pair<AppMenuItemMultiMap::const_iterator, AppMenuItemMultiMap::const_iterator>
+    range = m_app_menu_items.equal_range(section);
+
+    if(range.first != m_app_menu_items.end()) {
+      for(AppMenuItemMultiMap::const_iterator iter = range.first; iter != range.second; ++iter) {
+        widgets.insert(std::make_pair(order++, utils::create_popover_button(iter->second.action_def, 
iter->second.label)));
+      }
+
+      return true;
+    }
+
+    return false;
+  }
+
+  void ActionManager::add_app_menu_new_section(std::map<int, Gtk::Widget*> & widgets)
+  {
+    int order = 0;
+    if(add_app_menu_section(widgets, order, APP_ACTION_NEW)) {
+      // end section
+      widgets[order] = NULL;
+    }
+  }
+
+  void ActionManager::add_app_menu_trailing_sections(std::map<int, Gtk::Widget*> & widgets)
+  {
+    int order = 100000;
+    if(add_app_menu_section(widgets, order, APP_ACTION_MANAGE)) {
+      // end section
+      widgets[order] = NULL;
+    }
+    add_app_menu_section(widgets, order, APP_ACTION_LAST);
+  }
+
 }
diff --git a/src/actionmanager.hpp b/src/actionmanager.hpp
index 4a54ec6f..4421e143 100644
--- a/src/actionmanager.hpp
+++ b/src/actionmanager.hpp
@@ -1,7 +1,7 @@
 /*
  * gnote
  *
- * Copyright (C) 2012-2013,2015-2017 Aurimas Cernius
+ * Copyright (C) 2012-2013,2015-2018 Aurimas Cernius
  * Copyright (C) 2009 Hubert Figuiere
  *
  * This program is free software: you can redistribute it and/or modify
@@ -61,6 +61,9 @@ private:
   void make_app_actions();
   void make_app_menu_items();
   Glib::RefPtr<Gio::Menu> make_app_menu_section(int section) const;
+  bool add_app_menu_section(std::map<int, Gtk::Widget*> & widgets, int & order, int section);
+  void add_app_menu_new_section(std::map<int, Gtk::Widget*>&);
+  void add_app_menu_trailing_sections(std::map<int, Gtk::Widget*>&);
 
   std::vector<Glib::RefPtr<Gio::SimpleAction> > m_app_actions;
 


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