projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
replace ::cast_dynamic() with relevant ActionManager::get_*_action() calls
[ardour.git]
/
gtk2_ardour
/
route_group_menu.cc
diff --git
a/gtk2_ardour/route_group_menu.cc
b/gtk2_ardour/route_group_menu.cc
index 9c1f6f9e38e9d25f92b557bae5f6ed22afa38a0b..63577392a779ab5b39dd48c3eca61754d3db04e6 100644
(file)
--- a/
gtk2_ardour/route_group_menu.cc
+++ b/
gtk2_ardour/route_group_menu.cc
@@
-19,13
+19,17
@@
#include <gtkmm/menu.h>
#include <gtkmm/stock.h>
#include <gtkmm/menu.h>
#include <gtkmm/stock.h>
+
#include "gtkmm2ext/utils.h"
#include "gtkmm2ext/utils.h"
+#include "gtkmm2ext/doi.h"
+
#include "ardour/session.h"
#include "ardour/route_group.h"
#include "ardour/route.h"
#include "route_group_menu.h"
#include "route_group_dialog.h"
#include "ardour/session.h"
#include "ardour/route_group.h"
#include "ardour/route.h"
#include "route_group_menu.h"
#include "route_group_dialog.h"
-#include "i18n.h"
+
+#include "pbd/i18n.h"
using namespace Gtk;
using namespace ARDOUR;
using namespace Gtk;
using namespace ARDOUR;
@@
-51,7
+55,7
@@
void
RouteGroupMenu::build (WeakRouteList const & s)
{
assert (!s.empty ());
RouteGroupMenu::build (WeakRouteList const & s)
{
assert (!s.empty ());
-
+
using namespace Menu_Helpers;
_subject = s;
using namespace Menu_Helpers;
_subject = s;
@@
-68,7
+72,7
@@
RouteGroupMenu::build (WeakRouteList const & s)
_inhibit_group_selected = true;
delete _menu;
_inhibit_group_selected = true;
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
/* 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
@@
-77,14
+81,14
@@
RouteGroupMenu::build (WeakRouteList const & s)
_menu = new Menu;
MenuList& items = _menu->items ();
_menu = new Menu;
MenuList& items = _menu->items ();
-
- items.push_back (MenuElem (_("New
g
roup..."), sigc::mem_fun (*this, &RouteGroupMenu::new_group)));
+
+ items.push_back (MenuElem (_("New
G
roup..."), sigc::mem_fun (*this, &RouteGroupMenu::new_group)));
items.push_back (SeparatorElem ());
RadioMenuItem::Group group;
items.push_back (SeparatorElem ());
RadioMenuItem::Group group;
- items.push_back (RadioMenuElem (group, _("No
g
roup")));
+ items.push_back (RadioMenuElem (group, _("No
G
roup")));
RadioMenuItem* i = static_cast<RadioMenuItem *> (&items.back ());
RadioMenuItem* i = static_cast<RadioMenuItem *> (&items.back ());
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), (RouteGroup *) 0));
+ i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group),
i,
(RouteGroup *) 0));
if (groups.size() == 1 && *groups.begin() == 0) {
i->set_active ();
if (groups.size() == 1 && *groups.begin() == 0) {
i->set_active ();
@@
-112,7
+116,7
@@
RouteGroupMenu::add_item (RouteGroup* rg, std::set<RouteGroup*> const & groups,
items.push_back (RadioMenuElem (*group, rg->name()));
RadioMenuItem* i = static_cast<RadioMenuItem*> (&items.back ());
items.push_back (RadioMenuElem (*group, rg->name()));
RadioMenuItem* i = static_cast<RadioMenuItem*> (&items.back ());
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group), rg));
+ i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::set_group),
i,
rg));
if (groups.size() == 1 && *groups.begin() == rg) {
/* there's only one active group, and it's this one */
if (groups.size() == 1 && *groups.begin() == rg) {
/* there's only one active group, and it's this one */
@@
-127,11
+131,14
@@
RouteGroupMenu::add_item (RouteGroup* rg, std::set<RouteGroup*> const & groups,
* @param Group, or 0 for none.
*/
void
* @param Group, or 0 for none.
*/
void
-RouteGroupMenu::set_group (RouteGroup* g)
+RouteGroupMenu::set_group (
Gtk::RadioMenuItem* e,
RouteGroup* g)
{
if (_inhibit_group_selected) {
return;
}
{
if (_inhibit_group_selected) {
return;
}
+ if (e && !e->get_active()) {
+ return;
+ }
for (WeakRouteList::const_iterator i = _subject.begin(); i != _subject.end(); ++i) {
boost::shared_ptr<Route> r = i->lock ();
for (WeakRouteList::const_iterator i = _subject.begin(); i != _subject.end(); ++i) {
boost::shared_ptr<Route> r = i->lock ();
@@
-158,16
+165,23
@@
RouteGroupMenu::new_group ()
}
RouteGroup* g = new RouteGroup (*_session, "");
}
RouteGroup* g = new RouteGroup (*_session, "");
-
g->apply_changes (*_default_properties
);
+
RouteGroupDialog* d = new RouteGroupDialog (g, true
);
- RouteGroupDialog d (g, true);
+ d->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::new_group_dialog_finished), d));
+ d->present ();
+}
- if (d.do_run ()) {
- delete g;
+void
+RouteGroupMenu::new_group_dialog_finished (int r, RouteGroupDialog* d)
+{
+ if (r == RESPONSE_OK) {
+ _session->add_route_group (d->group());
+ set_group (0, d->group());
} else {
} else {
- _session->add_route_group (g);
- set_group (g);
+ delete d->group ();
}
}
+
+ delete_when_idle (d);
}
Gtk::Menu *
}
Gtk::Menu *