Add preliminary implementation of a menu option Window/Close Window
This commit is contained in:
parent
1672206489
commit
2909804538
6 changed files with 52 additions and 1 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ public:
|
|||
|
||||
PanelManager& get_panel_manager();
|
||||
|
||||
void set_close_window_sensitive(bool enable);
|
||||
|
||||
private:
|
||||
void create_ui();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue