Add preliminary implementation of a menu option Window/Close Window

This commit is contained in:
Stefan Kangas 2010-12-06 13:40:32 +01:00
parent 1672206489
commit 2909804538
6 changed files with 52 additions and 1 deletions

View file

@ -56,6 +56,8 @@ WindowManager::new_window(gui::model::Project &source_project,
windowList.push_back(window);
window->show();
update_close_window_in_menus();
}
bool
@ -107,11 +109,31 @@ WindowManager::on_window_closed(GdkEventAny* event)
REQUIRE(main);
main->quit();
}
update_close_window_in_menus();
// Unless this is false, the window won't close
return false;
}
void
WindowManager::update_close_window_in_menus()
{
bool enable = windowList.size() > 1;
list< shared_ptr<WorkspaceWindow> >::iterator iterator =
windowList.begin();
while (iterator != windowList.end())
{
shared_ptr<WorkspaceWindow> workspace_window(*iterator);
REQUIRE(workspace_window);
workspace_window->set_close_window_sensitive(enable);
iterator++;
}
}
GdkColor
WindowManager::read_style_colour_property(
Gtk::Widget &widget, const gchar *property_name,

View file

@ -94,6 +94,15 @@ private:
private:
/**
* On creating and closing of any window, handle enabling or disabling of the
* Window/Close Window menu option.
*
* It should be enabled when there is more than one window and disabled
* otherwise.
**/
void update_close_window_in_menus();
/**
* Registers the custom icon sizes.
**/

View file

@ -123,6 +123,9 @@ Actions::populate_main_actions(RefPtr<Gtk::UIManager> uiManager)
actionGroup->add(Action::create("WindowNewWindow",
StockID("new_window")),
mem_fun(*this, &Actions::on_menu_window_new_window));
actionGroup->add(Action::create("WindowCloseWindow",
_("Close Window")),
mem_fun(*this, &Actions::on_menu_window_close_window));
actionGroup->add(Action::create("WindowShowPanel", _("_Show Panel")));
// Help Menu
@ -169,6 +172,7 @@ Actions::populate_main_actions(RefPtr<Gtk::UIManager> uiManager)
" </menu>"
" <menu action='WindowMenu'>"
" <menuitem action='WindowNewWindow'/>"
" <menuitem action='WindowCloseWindow'/>"
" <menu action='WindowShowPanel'/>"
" </menu>"
" <menu action='HelpMenu'>"
@ -335,6 +339,13 @@ Actions::on_menu_window_new_window()
workspaceWindow.get_controller());
}
void
Actions::on_menu_window_close_window()
{
workspaceWindow.hide();
// delete &workspaceWindow;
}
void
Actions::on_menu_show_panel(int panel_index)
{

View file

@ -93,6 +93,7 @@ private:
void on_menu_track_add();
void on_menu_window_new_window();
void on_menu_window_close_window();
void on_menu_show_panel(int panel_index);
void on_menu_help_about();

View file

@ -117,7 +117,13 @@ WorkspaceWindow::create_ui()
show_all_children();
}
void
WorkspaceWindow::set_close_window_sensitive(bool enable)
{
uiManager->get_action("/MenuBar/WindowMenu/WindowCloseWindow")
->set_sensitive(enable);
}
} // namespace workspace
} // namespace gui

View file

@ -69,6 +69,8 @@ public:
PanelManager& get_panel_manager();
void set_close_window_sensitive(bool enable);
private:
void create_ui();