[niepce] API change in fwk::Controller to pass a Gtk::UIManager to buildWidget()
- From: Hubert Figuière <hub src gnome org>
- To: svn-commits-list gnome org
- Subject: [niepce] API change in fwk::Controller to pass a Gtk::UIManager to buildWidget()
- Date: Fri, 17 Jul 2009 03:56:27 +0000 (UTC)
commit 16d267f0561c9a1ac337c2ba0099c50f734a3c35
Author: Hubert Figuiere <hub figuiere net>
Date: Mon Jul 13 00:47:43 2009 -0400
API change in fwk::Controller to pass a Gtk::UIManager to buildWidget()
ChangeLog | 5 ++++
camerawire/ChangeLog | 5 ++++
camerawire/src/cwwindow.cpp | 16 +++++++----
camerawire/src/cwwindow.hpp | 4 +-
src/fwk/toolkit/application.cpp | 4 +-
src/fwk/toolkit/application.hpp | 2 +-
src/fwk/toolkit/controller.cpp | 6 +----
src/fwk/toolkit/controller.hpp | 27 +++++++++++----------
src/fwk/toolkit/dialog.cpp | 4 +++
src/fwk/toolkit/dialog.hpp | 2 +
src/fwk/toolkit/frame.cpp | 4 ---
src/fwk/toolkit/frame.hpp | 1 -
src/niepce/modules/darkroom/darkroommodule.cpp | 9 ++++--
src/niepce/modules/darkroom/darkroommodule.hpp | 2 +-
src/niepce/modules/darkroom/toolboxcontroller.cpp | 5 +++-
src/niepce/modules/darkroom/toolboxcontroller.hpp | 2 +-
src/niepce/ui/filmstripcontroller.cpp | 5 +++-
src/niepce/ui/filmstripcontroller.hpp | 5 +--
src/niepce/ui/gridviewmodule.cpp | 10 +++++--
src/niepce/ui/gridviewmodule.hpp | 2 +-
src/niepce/ui/metadatapanecontroller.cpp | 5 +++-
src/niepce/ui/metadatapanecontroller.hpp | 2 +-
src/niepce/ui/moduleshell.cpp | 16 +++++++++---
src/niepce/ui/moduleshell.hpp | 3 +-
src/niepce/ui/niepcewindow.cpp | 24 ++++++++++--------
src/niepce/ui/niepcewindow.hpp | 4 +-
src/niepce/ui/selectioncontroller.hpp | 2 +-
src/niepce/ui/workspacecontroller.cpp | 8 ++++-
src/niepce/ui/workspacecontroller.hpp | 3 +-
29 files changed, 114 insertions(+), 73 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 52a5140..a7270d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-13 Hubert Figuiere <hub figuiere net>
+
+ * API change in fwk::Controller to pass a Gtk::UIManager
+ to buildWidget()
+
2009-07-09 Hubert Figuiere <hub figuiere net>
* configure.ac: Bump gegl requirements to 0.1.0
diff --git a/camerawire/ChangeLog b/camerawire/ChangeLog
index cd4e698..87782fe 100644
--- a/camerawire/ChangeLog
+++ b/camerawire/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-13 Hubert Figuiere <hub figuiere net>
+
+ * API change in fwk::Controller to pass a Gtk::UIManager
+ to buildWidget()
+
2009-05-22 Hubert Figuiere <hub figuiere net>
* src/cwwindow.{hpp,cpp}:
diff --git a/camerawire/src/cwwindow.cpp b/camerawire/src/cwwindow.cpp
index 9d224f5..73a9458 100644
--- a/camerawire/src/cwwindow.cpp
+++ b/camerawire/src/cwwindow.cpp
@@ -40,14 +40,19 @@ CwWindow::CwWindow()
}
-Gtk::Widget * CwWindow::buildWidget()
+Gtk::Widget * CwWindow::buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager)
{
+ if(m_widget) {
+ return m_widget;
+ }
+
Gtk::Window & win(gtkWindow());
+ m_widget = &win;
Application::Ptr pApp = Application::app();
init_actions();
- init_ui();
+ init_ui(manager);
win.add(m_vbox);
@@ -73,7 +78,7 @@ Gtk::Widget * CwWindow::buildWidget()
win.set_size_request(600, 400);
win.show_all_children();
- return &win;
+ return m_widget;
}
@@ -133,9 +138,8 @@ void CwWindow::init_actions()
}
-void CwWindow::init_ui()
+void CwWindow::init_ui(const Glib::RefPtr<Gtk::UIManager> & manager)
{
- fwk::Application::Ptr pApp = fwk::Application::app();
Glib::ustring ui_info =
"<ui>"
" <menubar name='MenuBar'>"
@@ -172,7 +176,7 @@ void CwWindow::init_ui()
" <toolitem action='Quit'/>"
" </toolbar>"
"</ui>";
- pApp->uiManager()->add_ui_from_string(ui_info);
+ manager->add_ui_from_string(ui_info);
}
diff --git a/camerawire/src/cwwindow.hpp b/camerawire/src/cwwindow.hpp
index 659ec30..cc0b0c5 100644
--- a/camerawire/src/cwwindow.hpp
+++ b/camerawire/src/cwwindow.hpp
@@ -40,7 +40,7 @@ public:
CwWindow();
protected:
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager);
private:
class CameraTreeRecord
@@ -61,7 +61,7 @@ private:
Gtk::TreeModelColumn<bool> m_persistent;
};
- void init_ui();
+ void init_ui(const Glib::RefPtr<Gtk::UIManager> & manager);
void init_actions();
void on_action_import();
void on_preferences();
diff --git a/src/fwk/toolkit/application.cpp b/src/fwk/toolkit/application.cpp
index 08d981d..b13568d 100644
--- a/src/fwk/toolkit/application.cpp
+++ b/src/fwk/toolkit/application.cpp
@@ -50,7 +50,7 @@ Application::~Application()
}
/** no widget for applications */
-Gtk::Widget * Application::buildWidget()
+Gtk::Widget * Application::buildWidget(const Glib::RefPtr<Gtk::UIManager> &)
{
return NULL;
}
@@ -161,7 +161,7 @@ void Application::about()
void Application::add(const Controller::Ptr & sub)
{
Controller::add(sub);
- sub->buildWidget();
+ sub->buildWidget(uiManager());
}
void Application::on_about()
diff --git a/src/fwk/toolkit/application.hpp b/src/fwk/toolkit/application.hpp
index b4d252f..a41127e 100644
--- a/src/fwk/toolkit/application.hpp
+++ b/src/fwk/toolkit/application.hpp
@@ -63,7 +63,7 @@ public:
return m_refUIManager;
}
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager);
virtual void quit();
void about();
virtual void add(const Controller::Ptr & sub);
diff --git a/src/fwk/toolkit/controller.cpp b/src/fwk/toolkit/controller.cpp
index c88e732..79a2d25 100644
--- a/src/fwk/toolkit/controller.cpp
+++ b/src/fwk/toolkit/controller.cpp
@@ -39,13 +39,9 @@ Controller::~Controller()
// DBG_OUT("destroy Controllers");
}
-Gtk::Widget * Controller::widget()
+Gtk::Widget * Controller::widget() const
{
DBG_ASSERT(!m_parent.expired(), "must be attached");
- if(m_widget == NULL)
- {
- m_widget = buildWidget();
- }
return m_widget;
}
diff --git a/src/fwk/toolkit/controller.hpp b/src/fwk/toolkit/controller.hpp
index 4ee3b43..cd50ddd 100644
--- a/src/fwk/toolkit/controller.hpp
+++ b/src/fwk/toolkit/controller.hpp
@@ -26,7 +26,8 @@
#include <list>
#include <tr1/memory>
-#include "sigc++/trackable.h"
+#include <gtkmm/uimanager.h>
+#include <sigc++/trackable.h>
#include "fwk/utils/databinder.hpp"
@@ -36,13 +37,13 @@ namespace Gtk {
namespace fwk {
- /** Generic controller class
- */
- class Controller
- : public std::tr1::enable_shared_from_this<Controller>
- , public sigc::trackable
- {
- public:
+/** Generic controller class
+ */
+class Controller
+ : public std::tr1::enable_shared_from_this<Controller>
+ , public sigc::trackable
+{
+public:
typedef std::tr1::shared_ptr<Controller> Ptr;
typedef std::tr1::weak_ptr<Controller> WeakPtr;
@@ -53,7 +54,7 @@ namespace fwk {
void add(const Ptr & sub);
/** clear the parent. Usually called by the parent when unparenting */
void clearParent()
- { m_parent.reset(); }
+ { m_parent.reset(); }
void remove(const Ptr & sub);
virtual bool canTerminate();
@@ -61,14 +62,14 @@ namespace fwk {
virtual void terminate();
/** return the widget controlled (construct it if needed) */
- virtual Gtk::Widget * buildWidget() = 0;
- Gtk::Widget * widget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager) = 0;
+ Gtk::Widget * widget() const;
/** called when everything is ready
* subclasses should reimplement if needed
*/
virtual void on_ready();
- protected:
+protected:
/** called when the controller has been added to a parent. */
virtual void _added();
@@ -79,7 +80,7 @@ namespace fwk {
std::list<Ptr> m_subs; /**< sub controllers */
DataBinderPool m_databinders;
- };
+};
}
diff --git a/src/fwk/toolkit/dialog.cpp b/src/fwk/toolkit/dialog.cpp
index 95e7735..b4445ad 100644
--- a/src/fwk/toolkit/dialog.cpp
+++ b/src/fwk/toolkit/dialog.cpp
@@ -52,6 +52,10 @@ int Dialog::run_modal(const Frame::Ptr & parent)
return result;
}
+Gtk::Widget *Dialog::buildWidget(const Glib::RefPtr<Gtk::UIManager> &)
+{
+ return >kWindow();
+}
}
diff --git a/src/fwk/toolkit/dialog.hpp b/src/fwk/toolkit/dialog.hpp
index b8d66be..56ef3ff 100644
--- a/src/fwk/toolkit/dialog.hpp
+++ b/src/fwk/toolkit/dialog.hpp
@@ -57,6 +57,8 @@ public:
int run_modal();
int run_modal(const Frame::Ptr & parent);
protected:
+ virtual Gtk::Widget *buildWidget(const Glib::RefPtr<Gtk::UIManager> &);
+
bool m_is_setup;
};
diff --git a/src/fwk/toolkit/frame.cpp b/src/fwk/toolkit/frame.cpp
index 53976f8..6c32cb6 100644
--- a/src/fwk/toolkit/frame.cpp
+++ b/src/fwk/toolkit/frame.cpp
@@ -204,10 +204,6 @@ void Frame::frameRectToConfig()
}
}
-Gtk::Widget *Frame::buildWidget()
-{
- return m_window;
-}
/*
Local Variables:
mode:c++
diff --git a/src/fwk/toolkit/frame.hpp b/src/fwk/toolkit/frame.hpp
index 12d187c..10d1c91 100644
--- a/src/fwk/toolkit/frame.hpp
+++ b/src/fwk/toolkit/frame.hpp
@@ -92,7 +92,6 @@ private:
/** frame have the widget set at construction time
* from a ui file or directly.
*/
- virtual Gtk::Widget *buildWidget();
void connectSignals();
void frameRectFromConfig();
void frameRectToConfig();
diff --git a/src/niepce/modules/darkroom/darkroommodule.cpp b/src/niepce/modules/darkroom/darkroommodule.cpp
index 0e96fa2..9562074 100644
--- a/src/niepce/modules/darkroom/darkroommodule.cpp
+++ b/src/niepce/modules/darkroom/darkroommodule.cpp
@@ -44,9 +44,13 @@ void DarkroomModule::dispatch_action(const std::string & /*action_name*/)
}
-Gtk::Widget * DarkroomModule::buildWidget()
+Gtk::Widget * DarkroomModule::buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager)
{
+ if(m_widget) {
+ return m_widget;
+ }
ncr::init();
+ m_widget = &m_dr_splitview;
m_imagecanvas = Gtk::manage(new ImageCanvas());
// TODO set a proper canvas size
// m_canvas_scroll.add(*m_imagecanvas);
@@ -87,9 +91,8 @@ Gtk::Widget * DarkroomModule::buildWidget()
m_toolbox_ctrl = ToolboxController::Ptr(new ToolboxController(*m_dock));
add(m_toolbox_ctrl);
- (void)m_toolbox_ctrl->buildWidget();
+ (void)m_toolbox_ctrl->buildWidget(manager);
- m_widget = &m_dr_splitview;
return m_widget;
}
diff --git a/src/niepce/modules/darkroom/darkroommodule.hpp b/src/niepce/modules/darkroom/darkroommodule.hpp
index 6ca1c0a..d2f32c1 100644
--- a/src/niepce/modules/darkroom/darkroommodule.hpp
+++ b/src/niepce/modules/darkroom/darkroommodule.hpp
@@ -60,7 +60,7 @@ public:
virtual void dispatch_action(const std::string & action_name);
protected:
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> &);
private:
// darkroom split view
diff --git a/src/niepce/modules/darkroom/toolboxcontroller.cpp b/src/niepce/modules/darkroom/toolboxcontroller.cpp
index 653db87..3e8fbff 100644
--- a/src/niepce/modules/darkroom/toolboxcontroller.cpp
+++ b/src/niepce/modules/darkroom/toolboxcontroller.cpp
@@ -38,8 +38,11 @@ ToolboxController::ToolboxController(fwk::Dock &dock)
}
-Gtk::Widget * ToolboxController::buildWidget()
+Gtk::Widget * ToolboxController::buildWidget(const Glib::RefPtr<Gtk::UIManager> &)
{
+ if(m_widget) {
+ return m_widget;
+ }
DrItemWidget *item = NULL;
fwk::EditableHScale *s = NULL;
Gtk::VBox *toolbox = DockItem::get_vbox();
diff --git a/src/niepce/modules/darkroom/toolboxcontroller.hpp b/src/niepce/modules/darkroom/toolboxcontroller.hpp
index 8c9fed6..c618742 100644
--- a/src/niepce/modules/darkroom/toolboxcontroller.hpp
+++ b/src/niepce/modules/darkroom/toolboxcontroller.hpp
@@ -35,7 +35,7 @@ class ToolboxController
public:
typedef std::tr1::shared_ptr<ToolboxController> Ptr;
ToolboxController(fwk::Dock &);
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> &);
};
}
diff --git a/src/niepce/ui/filmstripcontroller.cpp b/src/niepce/ui/filmstripcontroller.cpp
index 170d045..fb9677f 100644
--- a/src/niepce/ui/filmstripcontroller.cpp
+++ b/src/niepce/ui/filmstripcontroller.cpp
@@ -36,8 +36,11 @@ FilmStripController::FilmStripController(const Glib::RefPtr<ImageListStore> & st
{
}
-Gtk::Widget * FilmStripController::buildWidget()
+Gtk::Widget * FilmStripController::buildWidget(const Glib::RefPtr<Gtk::UIManager> &)
{
+ if(m_widget) {
+ return m_widget;
+ }
DBG_ASSERT(m_store, "m_store NULL");
m_thumbview = Glib::wrap(GTK_ICON_VIEW(eog_thumb_view_new(m_store)));
GtkWidget *thn = eog_thumb_nav_new(GTK_WIDGET(m_thumbview->gobj()),
diff --git a/src/niepce/ui/filmstripcontroller.hpp b/src/niepce/ui/filmstripcontroller.hpp
index f6db159..7b2c684 100644
--- a/src/niepce/ui/filmstripcontroller.hpp
+++ b/src/niepce/ui/filmstripcontroller.hpp
@@ -49,9 +49,8 @@ public:
// void on_tnail_notification(const framework::Notification::Ptr &);
// void on_lib_notification(const framework::Notification::Ptr &);
-
-protected:
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> &);
+
private:
Gtk::IconView * m_thumbview;
Glib::RefPtr<ImageListStore> m_store;
diff --git a/src/niepce/ui/gridviewmodule.cpp b/src/niepce/ui/gridviewmodule.cpp
index 3f7ca61..1bf035c 100644
--- a/src/niepce/ui/gridviewmodule.cpp
+++ b/src/niepce/ui/gridviewmodule.cpp
@@ -74,8 +74,12 @@ void GridViewModule::display_none()
}
-Gtk::Widget * GridViewModule::buildWidget()
+Gtk::Widget * GridViewModule::buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager)
{
+ if(m_widget) {
+ return m_widget;
+ }
+ m_widget = &m_lib_splitview;
m_librarylistview.set_model(m_model);
m_librarylistview.set_selection_mode(Gtk::SELECTION_SINGLE);
m_librarylistview.property_row_spacing() = 0;
@@ -103,13 +107,13 @@ Gtk::Widget * GridViewModule::buildWidget()
m_metapanecontroller = MetaDataPaneController::Ptr(new MetaDataPaneController(*m_dock));
add(m_metapanecontroller);
m_lib_splitview.pack2(m_dock->getWidget());
- (void)m_metapanecontroller->buildWidget();
+ (void)m_metapanecontroller->buildWidget(manager);
m_databinders.add_binder(new fwk::ConfigDataBinder<int>(
m_lib_splitview.property_position(),
fwk::Application::app()->config(),
"meta_pane_splitter"));
- return &m_lib_splitview;
+ return m_widget;
}
diff --git a/src/niepce/ui/gridviewmodule.hpp b/src/niepce/ui/gridviewmodule.hpp
index 33ad5ef..ea808e3 100644
--- a/src/niepce/ui/gridviewmodule.hpp
+++ b/src/niepce/ui/gridviewmodule.hpp
@@ -63,7 +63,7 @@ public:
virtual void select_image(int id);
protected:
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager);
private:
diff --git a/src/niepce/ui/metadatapanecontroller.cpp b/src/niepce/ui/metadatapanecontroller.cpp
index 969f239..9894efc 100644
--- a/src/niepce/ui/metadatapanecontroller.cpp
+++ b/src/niepce/ui/metadatapanecontroller.cpp
@@ -95,8 +95,11 @@ namespace ui {
{
}
- Gtk::Widget * MetaDataPaneController::buildWidget()
+ Gtk::Widget * MetaDataPaneController::buildWidget(const Glib::RefPtr<Gtk::UIManager> &)
{
+ if(m_widget) {
+ return m_widget;
+ }
m_widget = &DockItem::getWidget();
const MetaDataSectionFormat * formats = get_format();
diff --git a/src/niepce/ui/metadatapanecontroller.hpp b/src/niepce/ui/metadatapanecontroller.hpp
index 1f0df58..09b3b0a 100644
--- a/src/niepce/ui/metadatapanecontroller.hpp
+++ b/src/niepce/ui/metadatapanecontroller.hpp
@@ -42,7 +42,7 @@ public:
typedef std::tr1::shared_ptr<MetaDataPaneController> Ptr;
MetaDataPaneController(fwk::Dock &);
~MetaDataPaneController();
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> &);
void display(int file_id, const fwk::XmpMeta * meta);
int displayed_file() const
{ return m_fileid; }
diff --git a/src/niepce/ui/moduleshell.cpp b/src/niepce/ui/moduleshell.cpp
index 4ca379c..e3d80a3 100644
--- a/src/niepce/ui/moduleshell.cpp
+++ b/src/niepce/ui/moduleshell.cpp
@@ -38,8 +38,13 @@ namespace ui {
-Gtk::Widget * ModuleShell::buildWidget()
+Gtk::Widget * ModuleShell::buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager)
{
+ if(m_widget) {
+ return m_widget;
+ }
+ m_widget = &m_shell;
+ m_ui_manager = manager;
add_library_module(m_gridview, _("Library"));
@@ -49,15 +54,18 @@ Gtk::Widget * ModuleShell::buildWidget()
// TODO PrintModuleController
// add_library_module(, _("Print"));
- return &m_shell;
+ return m_widget;
}
void ModuleShell::add_library_module(const ILibraryModule::Ptr & module,
const std::string & label)
{
- add(module);
- m_shell.append_page(*module->widget(), label);
+ Gtk::Widget * w = module->buildWidget(m_ui_manager);
+ if(w) {
+ add(module);
+ m_shell.append_page(*w, label);
+ }
}
void ModuleShell::on_ready()
diff --git a/src/niepce/ui/moduleshell.hpp b/src/niepce/ui/moduleshell.hpp
index 6c25bc2..bc0f740 100644
--- a/src/niepce/ui/moduleshell.hpp
+++ b/src/niepce/ui/moduleshell.hpp
@@ -64,8 +64,8 @@ public:
void on_selected(int id);
void on_image_activated(int id);
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager);
protected:
- virtual Gtk::Widget * buildWidget();
virtual void add_library_module(const ILibraryModule::Ptr & module,
const std::string & label);
virtual void on_ready();
@@ -76,6 +76,7 @@ private:
// managed widgets...
ModuleShellWidget m_shell;
+ Glib::RefPtr<Gtk::UIManager> m_ui_manager;
GridViewModule::Ptr m_gridview;
darkroom::DarkroomModule::Ptr m_darkroom;
diff --git a/src/niepce/ui/niepcewindow.cpp b/src/niepce/ui/niepcewindow.cpp
index 0df86f2..c45344f 100644
--- a/src/niepce/ui/niepcewindow.cpp
+++ b/src/niepce/ui/niepcewindow.cpp
@@ -69,17 +69,20 @@ NiepceWindow::~NiepceWindow()
}
Gtk::Widget *
-NiepceWindow::buildWidget()
+NiepceWindow::buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager)
{
+ if(m_widget) {
+ return m_widget;
+ }
Gtk::Window & win(gtkWindow());
- Application::Ptr pApp = Application::app();
+ m_widget = &win;
m_selection_controller = SelectionController::Ptr(new SelectionController);
add(m_selection_controller);
init_actions();
- init_ui();
+ init_ui(manager);
m_notifcenter.reset(new niepce::NotificationCenter());
@@ -121,15 +124,15 @@ NiepceWindow::buildWidget()
add(m_workspacectrl);
m_hbox.set_border_width(4);
- m_hbox.pack1(*(m_workspacectrl->widget()), Gtk::EXPAND);
- m_hbox.pack2(*(m_moduleshell->widget()), Gtk::EXPAND);
+ m_hbox.pack1(*(m_workspacectrl->buildWidget(manager)), Gtk::EXPAND);
+ m_hbox.pack2(*(m_moduleshell->buildWidget(manager)), Gtk::EXPAND);
m_databinders.add_binder(new fwk::ConfigDataBinder<int>(m_hbox.property_position(),
Application::app()->config(),
"workspace_splitter"));
win.add(m_vbox);
- Gtk::Widget* pMenuBar = pApp->uiManager()->get_widget("/MenuBar");
+ Gtk::Widget* pMenuBar = manager->get_widget("/MenuBar");
m_vbox.pack_start(*pMenuBar, Gtk::PACK_SHRINK);
m_vbox.pack_start(m_hbox);
@@ -137,7 +140,7 @@ NiepceWindow::buildWidget()
m_filmstrip = FilmStripController::Ptr(new FilmStripController(m_selection_controller->list_store()));
add(m_filmstrip);
- m_vbox.pack_start(*(m_filmstrip->widget()), Gtk::PACK_SHRINK);
+ m_vbox.pack_start(*(m_filmstrip->buildWidget(manager)), Gtk::PACK_SHRINK);
// status bar
m_vbox.pack_start(m_statusBar, Gtk::PACK_SHRINK);
@@ -160,9 +163,8 @@ NiepceWindow::buildWidget()
}
-void NiepceWindow::init_ui()
+void NiepceWindow::init_ui(const Glib::RefPtr<Gtk::UIManager> & manager)
{
- Application::Ptr pApp = Application::app();
Glib::ustring ui_info =
"<ui>"
" <menubar name='MenuBar'>"
@@ -177,7 +179,7 @@ void NiepceWindow::init_ui()
" <menuitem action='Close'/>"
" <menuitem action='Quit'/>"
" </menu>"
- " <menu action='MenuEdit'>"
+ " <menu name='edit-menu' action='MenuEdit'>"
" <menuitem action='Undo'/>"
" <menuitem action='Redo'/>"
" <separator/>"
@@ -228,7 +230,7 @@ void NiepceWindow::init_ui()
" <toolitem action='Quit'/>"
" </toolbar>"
"</ui>";
- pApp->uiManager()->add_ui_from_string(ui_info);
+ manager->add_ui_from_string(ui_info);
}
diff --git a/src/niepce/ui/niepcewindow.hpp b/src/niepce/ui/niepcewindow.hpp
index 7ce3cf5..cd2fd8b 100644
--- a/src/niepce/ui/niepcewindow.hpp
+++ b/src/niepce/ui/niepcewindow.hpp
@@ -58,7 +58,7 @@ public:
{ return m_libClient; }
protected:
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> & manager);
private:
void on_action_file_import();
@@ -74,7 +74,7 @@ private:
void create_initial_labels();
void on_lib_notification(const eng::LibNotification & n);
- void init_ui();
+ void init_ui(const Glib::RefPtr<Gtk::UIManager> & manager);
void init_actions();
void open_library(const std::string & libMoniker);
diff --git a/src/niepce/ui/selectioncontroller.hpp b/src/niepce/ui/selectioncontroller.hpp
index dc949c0..9e9ded3 100644
--- a/src/niepce/ui/selectioncontroller.hpp
+++ b/src/niepce/ui/selectioncontroller.hpp
@@ -88,7 +88,7 @@ public:
void set_label(int label);
protected:
virtual void _added();
- virtual Gtk::Widget * buildWidget()
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> &)
{ return NULL; }
private:
int get_selection();
diff --git a/src/niepce/ui/workspacecontroller.cpp b/src/niepce/ui/workspacecontroller.cpp
index 363b4a5..a90ea80 100644
--- a/src/niepce/ui/workspacecontroller.cpp
+++ b/src/niepce/ui/workspacecontroller.cpp
@@ -181,8 +181,12 @@ namespace ui {
}
- Gtk::Widget * WorkspaceController::buildWidget()
+ Gtk::Widget * WorkspaceController::buildWidget(const Glib::RefPtr<Gtk::UIManager> &)
{
+ if(m_widget) {
+ return m_widget;
+ }
+ m_widget = &m_vbox;
m_treestore = Gtk::TreeStore::create(m_librarycolumns);
m_librarytree.set_model(m_treestore);
@@ -218,7 +222,7 @@ namespace ui {
sigc::mem_fun(this,
&WorkspaceController::on_libtree_selection));
- return &m_vbox;
+ return m_widget;
}
void WorkspaceController::on_ready()
diff --git a/src/niepce/ui/workspacecontroller.hpp b/src/niepce/ui/workspacecontroller.hpp
index 90f486c..1d507a9 100644
--- a/src/niepce/ui/workspacecontroller.hpp
+++ b/src/niepce/ui/workspacecontroller.hpp
@@ -82,8 +82,7 @@ namespace ui {
void on_count_notification(int);
void on_libtree_selection();
- protected:
- virtual Gtk::Widget * buildWidget();
+ virtual Gtk::Widget * buildWidget(const Glib::RefPtr<Gtk::UIManager> &);
private:
libraryclient::LibraryClient::Ptr getLibraryClient();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]