diff options
author | Carl Hetherington <carl@carlh.net> | 2010-07-19 23:26:40 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-07-19 23:26:40 +0000 |
commit | e2b5f355fb57ea082428ee0ab29407e15fdfb9b8 (patch) | |
tree | c6ba15b6813365fa4ddd3ee2503010d0a39e53a2 | |
parent | 5b3982fed0e99925b53dcdbf0293237791965d4c (diff) |
Various route group menu tweaks.
git-svn-id: svn://localhost/ardour2/branches/3.0@7446 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/group_tabs.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/group_tabs.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 83 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.h | 2 |
4 files changed, 35 insertions, 57 deletions
diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc index d69bc7a039..f899e8fa78 100644 --- a/gtk2_ardour/group_tabs.cc +++ b/gtk2_ardour/group_tabs.cc @@ -309,6 +309,7 @@ GroupTabs::get_menu (RouteGroup* g) items.push_back (MenuElem (_("Edit..."), sigc::bind (sigc::mem_fun (*this, &GroupTabs::edit_group), g))); items.push_back (MenuElem (_("Subgroup"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g))); items.push_back (MenuElem (_("Collect"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::collect), g))); + items.push_back (MenuElem (_("Remove"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::remove_group), g))); } add_menu_items (_menu, g); @@ -505,3 +506,8 @@ GroupTabs::set_activation (RouteGroup* g, bool a) g->set_active (a, this); } +void +GroupTabs::remove_group (RouteGroup* g) +{ + _session->remove_route_group (*g); +} diff --git a/gtk2_ardour/group_tabs.h b/gtk2_ardour/group_tabs.h index d5d1fa5afc..22ebd808cc 100644 --- a/gtk2_ardour/group_tabs.h +++ b/gtk2_ardour/group_tabs.h @@ -96,6 +96,7 @@ private: void subgroup (ARDOUR::RouteGroup *); void activate_all (); void disable_all (); + void remove_group (ARDOUR::RouteGroup *); void render (cairo_t *); void on_size_request (Gtk::Requisition *); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 69e14e2f8f..89276d435a 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -67,7 +67,6 @@ Mixer_UI::Mixer_UI () _strip_width = Config->get_default_narrow_ms() ? Narrow : Wide; track_menu = 0; _monitor_section = 0; - route_group_context_menu = 0; no_track_list_redisplay = false; in_group_row_change = false; _visible = false; @@ -171,8 +170,8 @@ Mixer_UI::Mixer_UI () route_group_add_button->signal_clicked().connect (sigc::mem_fun (*this, &Mixer_UI::new_route_group)); route_group_remove_button->signal_clicked().connect (sigc::mem_fun (*this, &Mixer_UI::remove_selected_route_group)); - route_group_display_button_box->add (*route_group_remove_button); route_group_display_button_box->add (*route_group_add_button); + route_group_display_button_box->add (*route_group_remove_button); group_display_vbox.pack_start (group_display_scroller, true, true); group_display_vbox.pack_start (*route_group_display_button_box, false, false); @@ -1056,37 +1055,9 @@ Mixer_UI::strip_property_changed (const PropertyChange& what_changed, MixerStrip error << _("track display list item for renamed strip not found!") << endmsg; } - -void -Mixer_UI::build_route_group_context_menu () -{ - using namespace Gtk::Menu_Helpers; - - route_group_context_menu = new Menu; - route_group_context_menu->set_name ("ArdourContextMenu"); - MenuList& items = route_group_context_menu->items(); - - items.push_back (MenuElem (_("Activate All"), sigc::mem_fun(*this, &Mixer_UI::activate_all_route_groups))); - items.push_back (MenuElem (_("Disable All"), sigc::mem_fun(*this, &Mixer_UI::disable_all_route_groups))); - items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Add group"), sigc::mem_fun(*this, &Mixer_UI::new_route_group))); - -} - bool Mixer_UI::group_display_button_press (GdkEventButton* ev) { - if (Keyboard::is_context_menu_event (ev)) { - if (route_group_context_menu == 0) { - build_route_group_context_menu (); - } - route_group_context_menu->popup (1, ev->time); - return true; - } - - - RouteGroup* group; - TreeIter iter; TreeModel::Path path; TreeViewColumn* column; int cellx; @@ -1096,32 +1067,40 @@ Mixer_UI::group_display_button_press (GdkEventButton* ev) return false; } + TreeIter iter = group_model->get_iter (path); + if (!iter) { + return false; + } + + RouteGroup* group = (*iter)[group_columns.group]; + + if (Keyboard::is_context_menu_event (ev)) { + _group_tabs->get_menu(group)->popup (1, ev->time); + return true; + } + switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) { case 0: if (Keyboard::is_edit_event (ev)) { - if ((iter = group_model->get_iter (path))) { - if ((group = (*iter)[group_columns.group]) != 0) { - // edit_route_group (group); + if (group) { + // edit_route_group (group); #ifdef GTKOSX - group_display.queue_draw(); + group_display.queue_draw(); #endif - return true; - } + return true; } - } break; case 1: - if ((iter = group_model->get_iter (path))) { - bool visible = (*iter)[group_columns.visible]; - (*iter)[group_columns.visible] = !visible; + { + bool visible = (*iter)[group_columns.visible]; + (*iter)[group_columns.visible] = !visible; #ifdef GTKOSX - group_display.queue_draw(); + group_display.queue_draw(); #endif - return true; - } - break; + return true; + } default: break; @@ -1160,22 +1139,16 @@ Mixer_UI::route_groups_changed () } _session->foreach_route_group (sigc::mem_fun (*this, &Mixer_UI::add_route_group)); + + _group_tabs->set_dirty (); } void Mixer_UI::new_route_group () { - PropertyList plist; - - plist.add (Properties::active, true); - plist.add (Properties::gain, true); - plist.add (Properties::mute, true); - plist.add (Properties::solo, true); - - RouteGroup* g = new RouteGroup (*_session, ""); - g->set_properties (plist); - - _session->add_route_group (g); + RouteList rl; + + _group_tabs->run_new_group_dialog (rl); } void diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index 5349ebb36b..ce7c02439d 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -176,7 +176,6 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR void show_all_audiotracks(); void hide_all_audiotracks (); - Gtk::Menu* route_group_context_menu; bool in_group_row_change; void group_selected (gint row, gint col, GdkEvent *ev); @@ -184,7 +183,6 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR void group_display_active_clicked(); void new_route_group (); void remove_selected_route_group (); - void build_route_group_context_menu (); void activate_all_route_groups (); void disable_all_route_groups (); void add_route_group (ARDOUR::RouteGroup *); |