summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-07-19 23:26:40 +0000
committerCarl Hetherington <carl@carlh.net>2010-07-19 23:26:40 +0000
commite2b5f355fb57ea082428ee0ab29407e15fdfb9b8 (patch)
treec6ba15b6813365fa4ddd3ee2503010d0a39e53a2 /gtk2_ardour
parent5b3982fed0e99925b53dcdbf0293237791965d4c (diff)
Various route group menu tweaks.
git-svn-id: svn://localhost/ardour2/branches/3.0@7446 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/group_tabs.cc6
-rw-r--r--gtk2_ardour/group_tabs.h1
-rw-r--r--gtk2_ardour/mixer_ui.cc83
-rw-r--r--gtk2_ardour/mixer_ui.h2
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 *);