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); windowList.push_back(window);
window->show(); window->show();
update_close_window_in_menus();
} }
bool bool
@ -107,11 +109,31 @@ WindowManager::on_window_closed(GdkEventAny* event)
REQUIRE(main); REQUIRE(main);
main->quit(); main->quit();
} }
update_close_window_in_menus();
// Unless this is false, the window won't close // Unless this is false, the window won't close
return false; 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 GdkColor
WindowManager::read_style_colour_property( WindowManager::read_style_colour_property(
Gtk::Widget &widget, const gchar *property_name, Gtk::Widget &widget, const gchar *property_name,

View file

@ -94,6 +94,15 @@ private:
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. * Registers the custom icon sizes.
**/ **/

View file

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

View file

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

View file

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

View file

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