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);
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));
automation_button.signal_clicked().connect (sigc::mem_fun(*this, &RouteTimeAxisView::automation_click));
@ -277,7 +277,7 @@ RouteTimeAxisView::post_construct ()
}
gint
RouteTimeAxisView::edit_click (GdkEventButton *ev)
RouteTimeAxisView::route_group_click (GdkEventButton *ev)
{
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
if (_route->route_group()) {
@ -342,15 +342,7 @@ RouteTimeAxisView::take_name_changed (void *src)
void
RouteTimeAxisView::playlist_click ()
{
// always build a new action menu
delete playlist_action_menu;
playlist_action_menu = new Menu;
playlist_action_menu->set_name ("ArdourContextMenu");
build_playlist_menu (playlist_action_menu);
build_playlist_menu ();
conditionally_add_to_selection ();
playlist_action_menu->popup (1, gtk_get_current_event_time());
}
@ -546,6 +538,17 @@ RouteTimeAxisView::build_display_menu ()
}
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)));
@ -1402,21 +1405,24 @@ struct PlaylistSorter {
};
void
RouteTimeAxisView::build_playlist_menu (Gtk::Menu * menu)
RouteTimeAxisView::build_playlist_menu ()
{
using namespace Menu_Helpers;
if (!menu || !is_track()) {
if (!is_track()) {
return;
}
MenuList& playlist_items = menu->items();
menu->set_name ("ArdourContextMenu");
delete playlist_action_menu;
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();
delete playlist_menu;
vector<boost::shared_ptr<Playlist> > playlists, playlists_tr;
boost::shared_ptr<Track> tr = track();
RadioMenuItem::Group playlist_group;

View File

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