Implemented New Window command

This commit is contained in:
Joel Holdsworth 2009-01-31 18:49:44 +00:00
parent cef0e0e074
commit 852377c1f1
4 changed files with 31 additions and 10 deletions

View file

@ -65,10 +65,11 @@ GtkLumiera::main(int argc, char *argv[])
Project project;
Controller controller(project);
WindowManager window_manager;
window_manager.set_theme("lumiera_ui.rc");
window_manager.new_window(project, controller);
WindowManager *manager = WindowManager::instance();
REQUIRE(manager);
manager->set_theme("lumiera_ui.rc");
manager->new_window(project, controller);
kit.run();
}

View file

@ -73,17 +73,31 @@ WindowManager::set_theme(Glib::ustring path)
return true;
}
WindowManager*
WindowManager::instance()
{
// Initialized during first access
static WindowManager manager;
return &manager;
}
bool
WindowManager::on_window_closed(GdkEventAny*)
{
WindowManager::on_window_closed(GdkEventAny* event)
{
REQUIRE(event);
REQUIRE(event->window);
list< shared_ptr<WorkspaceWindow> >::iterator iterator =
windowList.begin();
while(iterator != windowList.end())
{
shared_ptr<WorkspaceWindow> window(*iterator);
REQUIRE(window);
shared_ptr<WorkspaceWindow> workspace_window(*iterator);
REQUIRE(workspace_window);
if(!window->get_frame())
RefPtr<Gdk::Window> window = workspace_window->get_window();
REQUIRE(window);
if(window->gobj() == event->window)
{
// This window has been closed
iterator = windowList.erase(iterator);

View file

@ -69,6 +69,9 @@ public:
bool set_theme(Glib::ustring path);
public:
static WindowManager* instance();
/**
* A utility function which reads a colour style from the GTK Style.
* @param widget The widget to load the style out of.
@ -87,7 +90,7 @@ private:
/**
* An event handler for when a window has been closed.
**/
bool on_window_closed(GdkEventAny*);
bool on_window_closed(GdkEventAny* event);
private:

View file

@ -23,6 +23,8 @@
#include "actions.hpp"
#include "workspace-window.hpp"
#include "../window-manager.hpp"
#include "../dialogs/render.hpp"
#include "../dialogs/preferences-dialog.hpp"
#include "../dialogs/name-chooser.hpp"
@ -188,7 +190,8 @@ Actions::on_menu_view_viewer()
void
Actions::on_menu_view_new_window()
{
g_message("New Window");
WindowManager::instance()->new_window(workspaceWindow.project,
workspaceWindow.controller);
}
/* ===== Sequence Menu Event Handlers ===== */