[gnote] Move print menu item to gears menu



commit 21c9148123816e51cf149109c70d1def983b5bcc
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sat Jun 1 17:34:48 2013 +0300

    Move print menu item to gears menu
    
    Part of Bug 700655.

 src/addins/printnotes/printnotesnoteaddin.cpp |   57 +++++++++++++-----------
 src/addins/printnotes/printnotesnoteaddin.hpp |    4 --
 2 files changed, 31 insertions(+), 30 deletions(-)
---
diff --git a/src/addins/printnotes/printnotesnoteaddin.cpp b/src/addins/printnotes/printnotesnoteaddin.cpp
index 13c26b5..d941722 100644
--- a/src/addins/printnotes/printnotesnoteaddin.cpp
+++ b/src/addins/printnotes/printnotesnoteaddin.cpp
@@ -37,6 +37,34 @@
 
 namespace printnotes {
 
+  namespace {
+    class PrintNotesAction
+      : public Gtk::Action
+    {
+    public:
+      static Glib::RefPtr<Gtk::Action> create(gnote::NoteWindow *note_window)
+        {
+          return Glib::RefPtr<Gtk::Action>(new PrintNotesAction(note_window));
+        }
+    protected:
+      virtual Gtk::Widget *create_menu_item_vfunc()
+        {
+          Gtk::ImageMenuItem *menu_item = new Gtk::ImageMenuItem;
+          menu_item->add_accelerator("activate", m_note_window->get_accel_group(),
+                                     GDK_KEY_P, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+          return menu_item;
+        }
+    private:
+      PrintNotesAction(gnote::NoteWindow *note_window)
+        : Gtk::Action("PrintAction", Gtk::Stock::PRINT, _("Print"), _("Print note"))
+        , m_note_window(note_window)
+      {}
+
+      gnote::NoteWindow *m_note_window;
+    };
+  }
+
+
   PrintNotesModule::PrintNotesModule()
   {
     ADD_INTERFACE_IMPL(PrintNotesNoteAddin);
@@ -54,33 +82,10 @@ namespace printnotes {
 
   void PrintNotesNoteAddin::on_note_opened()
   {
-    m_item = manage(new Gtk::ImageMenuItem (_("Print")));
-    m_item->set_image(*manage(new Gtk::Image (Gtk::Stock::PRINT,
-                                             Gtk::ICON_SIZE_MENU)));
-    m_item->signal_activate().connect(
+    Glib::RefPtr<Gtk::Action> action = PrintNotesAction::create(get_window());
+    action->signal_activate().connect(
       sigc::mem_fun(*this, &PrintNotesNoteAddin::print_button_clicked));
-    gnote::NoteWindow *note_window = get_window();
-    note_window->signal_foregrounded.connect(
-      sigc::mem_fun(*this, &PrintNotesNoteAddin::on_note_foregrounded));
-    note_window->signal_backgrounded.connect(
-      sigc::mem_fun(*this, &PrintNotesNoteAddin::on_note_backgrounded));
-    m_item->show ();
-    add_plugin_menu_item (m_item);
-  }
-
-
-  void PrintNotesNoteAddin::on_note_foregrounded()
-  {
-    m_item->add_accelerator("activate", get_window()->get_accel_group(),
-                            GDK_KEY_P, Gdk::CONTROL_MASK,
-                            Gtk::ACCEL_VISIBLE);
-  }
-
-
-  void PrintNotesNoteAddin::on_note_backgrounded()
-  {
-    m_item->remove_accelerator(get_window()->get_accel_group(),
-                               GDK_KEY_P, Gdk::CONTROL_MASK);
+    add_note_action(action, 400);
   }
 
 
diff --git a/src/addins/printnotes/printnotesnoteaddin.hpp b/src/addins/printnotes/printnotesnoteaddin.hpp
index 774faf8..ec55dbf 100644
--- a/src/addins/printnotes/printnotesnoteaddin.hpp
+++ b/src/addins/printnotes/printnotesnoteaddin.hpp
@@ -28,7 +28,6 @@
 
 #include <vector>
 
-#include <gtkmm/menuitem.h>
 #include <pangomm/layout.h>
 
 #include "sharp/dynamicmodule.hpp"
@@ -115,10 +114,7 @@ private:
   void on_end_print(const Glib::RefPtr<Gtk::PrintContext>&);
 /////
   void print_button_clicked();
-  void on_note_foregrounded();
-  void on_note_backgrounded();
 
-  Gtk::ImageMenuItem * m_item;
   int                  m_margin_top;
   int                  m_margin_left;
   int                  m_margin_right;


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