Desensitize Remote Control ID menu option if there are > 1 selected tracks.
git-svn-id: svn://localhost/ardour2/branches/3.0@8937 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
5da5a1c100
commit
465aaffdd4
|
@ -1287,7 +1287,8 @@ MixerStrip::select_route_group (GdkEventButton *ev)
|
|||
group_menu->GroupSelected.connect (sigc::mem_fun (*this, &MixerStrip::set_route_group));
|
||||
}
|
||||
|
||||
group_menu->popup (1, ev->time);
|
||||
group_menu->build (route_group ());
|
||||
group_menu->menu()->popup (1, ev->time);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include <gtkmm/menu.h>
|
||||
#include <gtkmm/stock.h>
|
||||
#include "gtkmm2ext/utils.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/route_group.h"
|
||||
#include "route_group_menu.h"
|
||||
|
@ -31,20 +32,23 @@ using namespace PBD;
|
|||
|
||||
RouteGroupMenu::RouteGroupMenu (Session* s, PropertyList* plist)
|
||||
: SessionHandlePtr (s)
|
||||
, _menu (0)
|
||||
, _default_properties (plist)
|
||||
, _inhibit_group_selected (false)
|
||||
, _selected_route_group (0)
|
||||
{
|
||||
rebuild (0);
|
||||
|
||||
}
|
||||
|
||||
RouteGroupMenu::~RouteGroupMenu()
|
||||
{
|
||||
delete _default_properties;
|
||||
delete _menu;
|
||||
delete _default_properties;
|
||||
}
|
||||
|
||||
/** @param curr Current route group to mark as selected, or 0 for no group */
|
||||
void
|
||||
RouteGroupMenu::rebuild (RouteGroup* curr)
|
||||
RouteGroupMenu::build (RouteGroup* curr)
|
||||
{
|
||||
using namespace Menu_Helpers;
|
||||
|
||||
|
@ -52,16 +56,25 @@ RouteGroupMenu::rebuild (RouteGroup* curr)
|
|||
|
||||
_inhibit_group_selected = true;
|
||||
|
||||
items().clear ();
|
||||
delete _menu;
|
||||
|
||||
/* Note: don't use manage() here, otherwise if our _menu object is attached as a submenu
|
||||
and its parent is then destroyed, our _menu object will be deleted and we'll have no
|
||||
way of knowing about it. Without manage(), when the above happens our _menu's gobject
|
||||
will be destroyed and its value set to 0, so we know.
|
||||
*/
|
||||
_menu = new Menu;
|
||||
|
||||
items().push_back (MenuElem (_("New group..."), sigc::mem_fun (*this, &RouteGroupMenu::new_group)));
|
||||
items().push_back (SeparatorElem ());
|
||||
MenuList& items = _menu->items ();
|
||||
|
||||
items.push_back (MenuElem (_("New group..."), sigc::mem_fun (*this, &RouteGroupMenu::new_group)));
|
||||
items.push_back (SeparatorElem ());
|
||||
|
||||
RadioMenuItem::Group group;
|
||||
items().push_back (RadioMenuElem (group, _("No group"), sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), (RouteGroup *) 0)));
|
||||
items.push_back (RadioMenuElem (group, _("No group"), sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), (RouteGroup *) 0)));
|
||||
|
||||
if (curr == 0) {
|
||||
static_cast<RadioMenuItem*> (&items().back())->set_active ();
|
||||
static_cast<RadioMenuItem*> (&items.back())->set_active ();
|
||||
}
|
||||
|
||||
if (_session) {
|
||||
|
@ -76,10 +89,12 @@ RouteGroupMenu::add_item (RouteGroup* rg, RouteGroup* curr, RadioMenuItem::Group
|
|||
{
|
||||
using namespace Menu_Helpers;
|
||||
|
||||
items().push_back (RadioMenuElem (*group, rg->name(), sigc::bind (sigc::mem_fun(*this, &RouteGroupMenu::set_group), rg)));
|
||||
MenuList& items = _menu->items ();
|
||||
|
||||
items.push_back (RadioMenuElem (*group, rg->name(), sigc::bind (sigc::mem_fun(*this, &RouteGroupMenu::set_group), rg)));
|
||||
|
||||
if (rg == curr) {
|
||||
static_cast<RadioMenuItem*> (&items().back())->set_active ();
|
||||
static_cast<RadioMenuItem*> (&items.back())->set_active ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -122,3 +137,21 @@ RouteGroupMenu::new_group ()
|
|||
set_group (g);
|
||||
}
|
||||
}
|
||||
|
||||
Gtk::Menu *
|
||||
RouteGroupMenu::menu ()
|
||||
{
|
||||
/* Our menu's gobject can be 0 if it was attached as a submenu whose
|
||||
parent was subsequently deleted.
|
||||
*/
|
||||
assert (_menu && _menu->gobj());
|
||||
return _menu;
|
||||
}
|
||||
|
||||
void
|
||||
RouteGroupMenu::detach ()
|
||||
{
|
||||
if (_menu && _menu->gobj ()) {
|
||||
Gtkmm2ext::detach_menu (*_menu);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,14 +23,15 @@
|
|||
#include "ardour/route_group.h"
|
||||
#include "ardour/session_handle.h"
|
||||
|
||||
|
||||
class RouteGroupMenu : public Gtk::Menu, public ARDOUR::SessionHandlePtr
|
||||
class RouteGroupMenu : public ARDOUR::SessionHandlePtr
|
||||
{
|
||||
public:
|
||||
RouteGroupMenu (ARDOUR::Session*, PBD::PropertyList*);
|
||||
~RouteGroupMenu();
|
||||
|
||||
void rebuild (ARDOUR::RouteGroup *);
|
||||
Gtk::Menu* menu ();
|
||||
void build (ARDOUR::RouteGroup *);
|
||||
void detach ();
|
||||
|
||||
sigc::signal<void, ARDOUR::RouteGroup*> GroupSelected;
|
||||
|
||||
|
@ -39,6 +40,7 @@ public:
|
|||
void new_group ();
|
||||
void set_group (ARDOUR::RouteGroup *);
|
||||
|
||||
Gtk::Menu* _menu;
|
||||
PBD::PropertyList* _default_properties;
|
||||
bool _inhibit_group_selected;
|
||||
ARDOUR::RouteGroup* _selected_route_group;
|
||||
|
|
|
@ -120,7 +120,6 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, boost::sh
|
|||
gm.get_level_meter().setup_meters(50);
|
||||
|
||||
_has_state = true;
|
||||
playlist_menu = 0;
|
||||
playlist_action_menu = 0;
|
||||
automation_action_menu = 0;
|
||||
plugins_submenu_item = 0;
|
||||
|
@ -251,9 +250,6 @@ RouteTimeAxisView::~RouteTimeAxisView ()
|
|||
delete *i;
|
||||
}
|
||||
|
||||
delete playlist_menu;
|
||||
playlist_menu = 0;
|
||||
|
||||
delete playlist_action_menu;
|
||||
playlist_action_menu = 0;
|
||||
|
||||
|
@ -289,8 +285,8 @@ RouteTimeAxisView::route_group_click (GdkEventButton *ev)
|
|||
return false;
|
||||
}
|
||||
|
||||
route_group_menu->rebuild (_route->route_group ());
|
||||
route_group_menu->popup (ev->button, ev->time);
|
||||
route_group_menu->build (_route->route_group ());
|
||||
route_group_menu->menu()->popup (ev->button, ev->time);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -443,6 +439,9 @@ RouteTimeAxisView::build_display_menu ()
|
|||
|
||||
items.push_back (MenuElem (_("Color..."), sigc::mem_fun (*this, &RouteUI::choose_color)));
|
||||
|
||||
if (_size_menu) {
|
||||
detach_menu (*_size_menu);
|
||||
}
|
||||
build_size_menu ();
|
||||
items.push_back (MenuElem (_("Height"), *_size_menu));
|
||||
|
||||
|
@ -450,6 +449,7 @@ RouteTimeAxisView::build_display_menu ()
|
|||
|
||||
if (!Profile->get_sae()) {
|
||||
items.push_back (MenuElem (_("Remote Control ID..."), sigc::mem_fun (*this, &RouteUI::open_remote_control_id_dialog)));
|
||||
items.back().set_sensitive (_editor.get_selection().tracks.size() <= 1);
|
||||
items.push_back (SeparatorElem());
|
||||
}
|
||||
|
||||
|
@ -458,7 +458,7 @@ RouteTimeAxisView::build_display_menu ()
|
|||
|
||||
if (is_track()) {
|
||||
|
||||
Menu *layers_menu = manage(new Menu);
|
||||
Menu* layers_menu = manage (new Menu);
|
||||
MenuList &layers_items = layers_menu->items();
|
||||
layers_menu->set_name("ArdourContextMenu");
|
||||
|
||||
|
@ -546,8 +546,9 @@ RouteTimeAxisView::build_display_menu ()
|
|||
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));
|
||||
route_group_menu->detach ();
|
||||
route_group_menu->build (_route->route_group ());
|
||||
items.push_back (MenuElem (_("Route Group"), *route_group_menu->menu ()));
|
||||
|
||||
build_automation_action_menu ();
|
||||
items.push_back (MenuElem (_("Automation"), *automation_action_menu));
|
||||
|
@ -1430,8 +1431,6 @@ RouteTimeAxisView::build_playlist_menu ()
|
|||
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;
|
||||
|
|
|
@ -266,7 +266,6 @@ protected:
|
|||
Gtk::RadioMenuItem* normal_track_mode_item;
|
||||
Gtk::RadioMenuItem* non_layered_track_mode_item;
|
||||
Gtk::RadioMenuItem* destructive_track_mode_item;
|
||||
Gtk::Menu* playlist_menu;
|
||||
Gtk::Menu* playlist_action_menu;
|
||||
Gtk::MenuItem* playlist_item;
|
||||
Gtk::Menu* mode_menu;
|
||||
|
|
|
@ -617,9 +617,7 @@ TimeAxisView::conditionally_add_to_selection ()
|
|||
void
|
||||
TimeAxisView::popup_display_menu (guint32 when)
|
||||
{
|
||||
if (display_menu == 0) {
|
||||
build_display_menu ();
|
||||
}
|
||||
build_display_menu ();
|
||||
|
||||
conditionally_add_to_selection ();
|
||||
display_menu->popup (1, when);
|
||||
|
@ -1356,9 +1354,11 @@ TimeAxisView::get_child_list ()
|
|||
void
|
||||
TimeAxisView::build_size_menu ()
|
||||
{
|
||||
if (_size_menu) {
|
||||
if (_size_menu && _size_menu->gobj ()) {
|
||||
return;
|
||||
}
|
||||
|
||||
delete _size_menu;
|
||||
|
||||
using namespace Menu_Helpers;
|
||||
|
||||
|
|
Loading…
Reference in New Issue