13
0

Add submenus for route group, playlist and automation to route context menu. Fixes #618.

git-svn-id: svn://localhost/ardour2/branches/3.0@7594 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2010-08-11 02:04:49 +00:00
parent 12aa01660a
commit 3d3d6feaa4
2 changed files with 24 additions and 19 deletions

View File

@ -148,7 +148,7 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, boost::sh
playlist_button.unset_flags (Gtk::CAN_FOCUS); playlist_button.unset_flags (Gtk::CAN_FOCUS);
automation_button.unset_flags (Gtk::CAN_FOCUS); automation_button.unset_flags (Gtk::CAN_FOCUS);
route_group_button.signal_button_release_event().connect (sigc::mem_fun(*this, &RouteTimeAxisView::edit_click), false); route_group_button.signal_button_release_event().connect (sigc::mem_fun(*this, &RouteTimeAxisView::route_group_click), false);
playlist_button.signal_clicked().connect (sigc::mem_fun(*this, &RouteTimeAxisView::playlist_click)); playlist_button.signal_clicked().connect (sigc::mem_fun(*this, &RouteTimeAxisView::playlist_click));
automation_button.signal_clicked().connect (sigc::mem_fun(*this, &RouteTimeAxisView::automation_click)); automation_button.signal_clicked().connect (sigc::mem_fun(*this, &RouteTimeAxisView::automation_click));
@ -277,7 +277,7 @@ RouteTimeAxisView::post_construct ()
} }
gint gint
RouteTimeAxisView::edit_click (GdkEventButton *ev) RouteTimeAxisView::route_group_click (GdkEventButton *ev)
{ {
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
if (_route->route_group()) { if (_route->route_group()) {
@ -342,15 +342,7 @@ RouteTimeAxisView::take_name_changed (void *src)
void void
RouteTimeAxisView::playlist_click () RouteTimeAxisView::playlist_click ()
{ {
// always build a new action menu build_playlist_menu ();
delete playlist_action_menu;
playlist_action_menu = new Menu;
playlist_action_menu->set_name ("ArdourContextMenu");
build_playlist_menu (playlist_action_menu);
conditionally_add_to_selection (); conditionally_add_to_selection ();
playlist_action_menu->popup (1, gtk_get_current_event_time()); playlist_action_menu->popup (1, gtk_get_current_event_time());
} }
@ -546,6 +538,17 @@ RouteTimeAxisView::build_display_menu ()
} }
items.push_back (SeparatorElem()); items.push_back (SeparatorElem());
build_playlist_menu ();
items.push_back (MenuElem (_("Playlist"), *playlist_action_menu));
route_group_menu->rebuild (_route->route_group ());
items.push_back (MenuElem (_("Route Group"), *route_group_menu));
build_automation_action_menu ();
items.push_back (MenuElem (_("Automation"), *automation_action_menu));
items.push_back (SeparatorElem());
} }
items.push_back (CheckMenuElem (_("Active"), sigc::mem_fun(*this, &RouteUI::toggle_route_active))); items.push_back (CheckMenuElem (_("Active"), sigc::mem_fun(*this, &RouteUI::toggle_route_active)));
@ -1402,21 +1405,24 @@ struct PlaylistSorter {
}; };
void void
RouteTimeAxisView::build_playlist_menu (Gtk::Menu * menu) RouteTimeAxisView::build_playlist_menu ()
{ {
using namespace Menu_Helpers; using namespace Menu_Helpers;
if (!menu || !is_track()) { if (!is_track()) {
return; return;
} }
MenuList& playlist_items = menu->items(); delete playlist_action_menu;
menu->set_name ("ArdourContextMenu"); playlist_action_menu = new Menu;
playlist_action_menu->set_name ("ArdourContextMenu");
MenuList& playlist_items = playlist_action_menu->items();
playlist_action_menu->set_name ("ArdourContextMenu");
playlist_items.clear(); playlist_items.clear();
delete playlist_menu; delete playlist_menu;
vector<boost::shared_ptr<Playlist> > playlists, playlists_tr; vector<boost::shared_ptr<Playlist> > playlists, playlists_tr;
boost::shared_ptr<Track> tr = track(); boost::shared_ptr<Track> tr = track();
RadioMenuItem::Group playlist_group; RadioMenuItem::Group playlist_group;

View File

@ -105,8 +105,7 @@ public:
/* group playlist name resolving */ /* group playlist name resolving */
std::string resolve_new_group_playlist_name(std::string &, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &); std::string resolve_new_group_playlist_name(std::string &, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &);
void build_playlist_menu ();
void build_playlist_menu (Gtk::Menu *);
void add_underlay (StreamView*, bool update_xml = true); void add_underlay (StreamView*, bool update_xml = true);
void remove_underlay (StreamView*); void remove_underlay (StreamView*);
@ -172,7 +171,7 @@ protected:
void update_diskstream_display (); void update_diskstream_display ();
gint edit_click (GdkEventButton *); gint route_group_click (GdkEventButton *);
void processors_changed (ARDOUR::RouteProcessorChange); void processors_changed (ARDOUR::RouteProcessorChange);