[niepce: 8/22] [mg] Update for the new Gio::Action framework.
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce: 8/22] [mg] Update for the new Gio::Action framework.
- Date: Tue, 29 Jul 2014 08:06:10 +0000 (UTC)
commit c7d9ecce09588c7bd1fa3cce032bdc28bb96c87f
Author: Hubert Figuière <hub figuiere net>
Date: Fri Jul 18 01:43:02 2014 -0400
[mg] Update for the new Gio::Action framework.
magellan/src/mgwindow.cpp | 161 ++++++++++++++++++---------------------------
magellan/src/mgwindow.hpp | 7 +-
2 files changed, 66 insertions(+), 102 deletions(-)
---
diff --git a/magellan/src/mgwindow.cpp b/magellan/src/mgwindow.cpp
index ad5541e..e0a7306 100644
--- a/magellan/src/mgwindow.cpp
+++ b/magellan/src/mgwindow.cpp
@@ -20,12 +20,12 @@
#include <glibmm/i18n.h>
-#include <gtkmm/stock.h>
#include <gtkmm/window.h>
#include "fwk/base/debug.hpp"
#include "fwk/toolkit/application.hpp"
#include "fwk/toolkit/undo.hpp"
+#include "fwk/toolkit/gtkutils.hpp"
#include "mgwindow.hpp"
@@ -53,13 +53,9 @@ Gtk::Widget * MgWindow::buildWidget()
Application::Ptr pApp = Application::app();
init_actions();
- init_ui(manager);
win.add(m_vbox);
- Gtk::Widget* pMenuBar = pApp->uiManager()->get_widget("/MenuBar");
- m_vbox.pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
Glib::RefPtr<Gtk::Builder> bldr
= Gtk::Builder::create_from_file(GLADEDIR"mgwindow.ui",
"content_box");
@@ -69,7 +65,7 @@ Gtk::Widget * MgWindow::buildWidget()
Gtk::Button* dload_btn;
bldr->get_widget("download_btn", dload_btn);
- dload_btn->set_related_action(m_importAction);
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(dload_btn->gobj()), "win.Import");
win.set_size_request(600, 400);
win.show_all_children();
@@ -79,100 +75,69 @@ Gtk::Widget * MgWindow::buildWidget()
void MgWindow::init_actions()
{
- Glib::RefPtr<Gtk::Action> an_action;
-
- m_refActionGroup = Gtk::ActionGroup::create();
-
- m_refActionGroup->add(Gtk::Action::create("MenuFile", _("_File")));
- m_importAction = Gtk::Action::create("Import", _("_Import"));
- m_refActionGroup->add(m_importAction,
- sigc::mem_fun(*this,
- &MgWindow::on_action_import));
- m_refActionGroup->add(Gtk::Action::create("Close", Gtk::Stock::CLOSE),
- sigc::mem_fun(gtkWindow(),
- &Gtk::Window::hide));
- m_refActionGroup->add(Gtk::Action::create("Quit", Gtk::Stock::QUIT),
- sigc::mem_fun(*Application::app(),
- &Application::quit));
-
- m_refActionGroup->add(Gtk::Action::create("MenuEdit", _("_Edit")));
-
- create_undo_action(m_refActionGroup);
- create_redo_action(m_refActionGroup);
+ m_actionGroup = Gio::SimpleActionGroup::create();
+ gtkWindow().insert_action_group("win", m_actionGroup);
+
+ m_menu = Gio::Menu::create();
+ auto submenu = Gio::Menu::create();
+ m_menu->append_submenu(_("File"), submenu);
+
+ fwk::add_action(m_actionGroup, "Import",
+ sigc::mem_fun(*this,
+ &MgWindow::on_action_import),
+ submenu, _("_Import..."), "win", nullptr);
+ fwk::add_action(m_actionGroup, "Close",
+ sigc::mem_fun(gtkWindow(),
+ &Gtk::Window::hide),
+ submenu, _("Close"), "win", "<Primary>w");
+
+ submenu = Gio::Menu::create();
+ m_menu->append_submenu(_("Edit"), submenu);
+ auto section = Gio::Menu::create();
+ submenu->append_section(section);
+
+ create_undo_action(m_actionGroup, section);
+ create_redo_action(m_actionGroup, section);
// FIXME: bind
- m_refActionGroup->add(Gtk::Action::create("Cut", Gtk::Stock::CUT));
- m_refActionGroup->add(Gtk::Action::create("Copy", Gtk::Stock::COPY));
- m_refActionGroup->add(Gtk::Action::create("Paste", Gtk::Stock::PASTE));
- m_refActionGroup->add(Gtk::Action::create("Delete", Gtk::Stock::DELETE));
-
- m_refActionGroup->add(Gtk::Action::create("Preferences",
- Gtk::Stock::PREFERENCES),
- sigc::mem_fun(*this,
- &MgWindow::on_preferences));
-
- m_refActionGroup->add(Gtk::Action::create("MenuTools", _("_Tools")));
- m_refActionGroup->add(Gtk::Action::create("RedetectDevices",
- Gtk::Stock::REFRESH),
- Gtk::AccelKey("F5"),
- sigc::mem_fun(*this, &MgWindow::detect_devices));
- m_hide_tools_action = Gtk::ToggleAction::create("ToggleToolsVisible",
- _("_Hide tools"));
- m_refActionGroup->add(m_hide_tools_action,
- sigc::mem_fun(*this, &Frame::toggle_tools_visible));
-
- m_refActionGroup->add(Gtk::Action::create("MenuHelp", _("_Help")));
- m_refActionGroup->add(Gtk::Action::create("Help", Gtk::Stock::HELP));
- m_refActionGroup->add(Gtk::Action::create("About", Gtk::Stock::ABOUT),
- sigc::mem_fun(*Application::app(),
- &Application::about));
-
- Application::app()->uiManager()->insert_action_group(m_refActionGroup);
-
- gtkWindow().add_accel_group(Application::app()
- ->uiManager()->get_accel_group());
-}
-
-
-void MgWindow::init_ui(const Glib::RefPtr<Gtk::UIManager> & manager)
-{
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Import'/>"
- " <separator/>"
- " <menuitem action='Close'/>"
- " <menuitem action='Quit'/>"
- " </menu>"
- " <menu action='MenuEdit'>"
- " <menuitem action='Undo'/>"
- " <menuitem action='Redo'/>"
- " <separator/>"
- " <menuitem action='Cut'/>"
- " <menuitem action='Copy'/>"
- " <menuitem action='Paste'/>"
- " <menuitem action='Delete'/>"
- " <separator/>"
- " <menuitem action='Preferences'/>"
- " </menu>"
- " <menu action='MenuTools'>"
- " <menuitem action='RedetectDevices' />"
- " <separator/>"
- " <menuitem action='ToggleToolsVisible'/>"
- " <separator/>"
- " </menu>"
- " <menu action='MenuHelp'>"
- " <menuitem action='Help'/>"
- " <menuitem action='About'/>"
- " </menu>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <toolitem action='Import'/>"
- " <toolitem action='Quit'/>"
- " </toolbar>"
- "</ui>";
- manager->add_ui_from_string(ui_info);
+ section = Gio::Menu::create();
+ submenu->append_section(section);
+
+ fwk::add_action(m_actionGroup,
+ "Cut",
+ Gio::ActionMap::ActivateSlot(), section,
+ _("Cut"), "win", "<control>x");
+ fwk::add_action(m_actionGroup,
+ "Copy",
+ Gio::ActionMap::ActivateSlot(), section,
+ _("Copy"), "win", "<control>c");
+ fwk::add_action(m_actionGroup,
+ "Paste",
+ Gio::ActionMap::ActivateSlot(), section,
+ _("Paste"), "win" "<control>v");
+
+ section = Gio::Menu::create();
+ submenu->append_section(section);
+ fwk::add_action(m_actionGroup,
+ "Preferences",
+ sigc::mem_fun(*this,
+ &MgWindow::on_preferences),
+ section, _("Preferences"), "win", nullptr);
+
+ submenu = Gio::Menu::create();
+ m_menu->append_submenu(_("Tools"), submenu);
+
+ fwk::add_action(m_actionGroup,
+ "RedetectDevices",
+ sigc::mem_fun(*this, &MgWindow::detect_devices),
+ submenu, _("Refresh"), "win", "F5");
+
+
+ m_hide_tools_action
+ = fwk::add_action(m_actionGroup, "ToggleToolsVisible",
+ sigc::mem_fun(*this, &Frame::toggle_tools_visible),
+ submenu, _("Hide tools"), "win",
+ nullptr);
}
diff --git a/magellan/src/mgwindow.hpp b/magellan/src/mgwindow.hpp
index 0a173cb..3c27eac 100644
--- a/magellan/src/mgwindow.hpp
+++ b/magellan/src/mgwindow.hpp
@@ -21,8 +21,9 @@
#ifndef __MG_WINDOW_HPP_
#define __MG_WINDOW_HPP_
+#include <giomm/simpleactiongroup.h>
+
#include <gtkmm/action.h>
-#include <gtkmm/actiongroup.h>
#include <gtkmm/box.h>
#include <gtkmm/liststore.h>
#include <gtkmm/treemodel.h>
@@ -43,7 +44,6 @@ protected:
private:
- void init_ui(const Glib::RefPtr<Gtk::UIManager> & manager);
void init_actions();
void on_action_import();
void on_preferences();
@@ -51,8 +51,7 @@ private:
void detect_devices();
Gtk::VBox m_vbox;
- Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup;
- Glib::RefPtr<Gtk::Action> m_importAction;
+ Glib::RefPtr<Gio::SimpleActionGroup> m_actionGroup;
};
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]