diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 61 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.h | 10 | ||||
-rw-r--r-- | gtk2_ardour/route_group_menu.cc | 71 | ||||
-rw-r--r-- | gtk2_ardour/route_group_menu.h | 21 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 57 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.h | 6 | ||||
-rw-r--r-- | gtk2_ardour/wscript | 1 |
7 files changed, 112 insertions, 115 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 646d55ff6b..00c7503efa 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -58,7 +58,7 @@ #include "io_selector.h" #include "utils.h" #include "gui_thread.h" -#include "route_group_dialog.h" +#include "route_group_menu.h" #include "i18n.h" @@ -1060,50 +1060,19 @@ MixerStrip::set_route_group (RouteGroup *rg) _route->set_route_group (rg, this); } -void -MixerStrip::add_route_group_to_menu (RouteGroup *rg, RadioMenuItem::Group* group) -{ - using namespace Menu_Helpers; - - MenuList& items = group_menu->items(); - - items.push_back (RadioMenuElem (*group, rg->name(), bind (mem_fun(*this, &MixerStrip::set_route_group), rg))); - - if (_route->route_group() == rg) { - static_cast<RadioMenuItem*>(&items.back())->set_active (); - } -} - bool MixerStrip::select_route_group (GdkEventButton *ev) { using namespace Menu_Helpers; - if (group_menu == 0) { - group_menu = new Menu; - } - group_menu->set_name ("ArdourContextMenu"); - MenuList& items = group_menu->items(); - RadioMenuItem::Group group; - - switch (ev->button) { - case 1: + if (ev->button == 1) { - items.clear (); - - items.push_back (MenuElem (_("New group..."), mem_fun (*this, &MixerStrip::set_route_group_to_new))); - - items.push_back (SeparatorElem ()); - - items.push_back (RadioMenuElem (group, _("No group"), bind (mem_fun(*this, &MixerStrip::set_route_group), (RouteGroup *) 0))); - - _session.foreach_route_group (bind (mem_fun (*this, &MixerStrip::add_route_group_to_menu), &group)); + if (group_menu == 0) { + group_menu = new RouteGroupMenu (_session); + group_menu->GroupSelected.connect (mem_fun (*this, &MixerStrip::set_route_group)); + } group_menu->popup (1, ev->time); - break; - - default: - break; } return true; @@ -1516,21 +1485,3 @@ MixerStrip::set_button_names () } } - -void -MixerStrip::set_route_group_to_new () -{ - RouteGroup* g = new RouteGroup (_session, "", RouteGroup::Active); - g->set_active (true, this); - - RouteGroupDialog d (g, Gtk::Stock::NEW); - int const r = d.do_run (); - - if (r == Gtk::RESPONSE_OK) { - _session.add_route_group (g); - _route->set_route_group (g, this); - } else { - delete g; - } -} - diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 46cc572200..30557b115e 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -53,9 +53,6 @@ #include "processor_box.h" #include "ardour_dialog.h" -class MotionController; - - namespace Gtkmm2ext { class SliderController; } @@ -76,6 +73,8 @@ namespace Gtk { class Mixer_UI; class IOSelectorWindow; +class MotionController; +class RouteGroupMenu; class MixerStrip : public RouteUI, public Gtk::EventBox { @@ -176,7 +175,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox Gtk::Button group_button; Gtk::Label group_label; - Gtk::Menu *group_menu; + RouteGroupMenu *group_menu; gint input_press (GdkEventButton *); gint output_press (GdkEventButton *); @@ -226,7 +225,6 @@ class MixerStrip : public RouteUI, public Gtk::EventBox bool ignore_comment_edit; void set_route_group (ARDOUR::RouteGroup *); - void add_route_group_to_menu (ARDOUR::RouteGroup *, Gtk::RadioMenuItem::Group*); bool select_route_group (GdkEventButton *); void route_group_changed (void *); @@ -256,8 +254,6 @@ class MixerStrip : public RouteUI, public Gtk::EventBox boost::shared_ptr<ARDOUR::Delivery> _current_delivery; void revert_to_default_display (); - void set_route_group_to_new (); - static int scrollbar_height; }; diff --git a/gtk2_ardour/route_group_menu.cc b/gtk2_ardour/route_group_menu.cc new file mode 100644 index 0000000000..e42cdedfac --- /dev/null +++ b/gtk2_ardour/route_group_menu.cc @@ -0,0 +1,71 @@ +#include <gtkmm/menu.h> +#include <gtkmm/stock.h> +#include "ardour/session.h" +#include "ardour/route_group.h" +#include "route_group_menu.h" +#include "route_group_dialog.h" +#include "i18n.h" + +using namespace Gtk; +using namespace ARDOUR; + +RouteGroupMenu::RouteGroupMenu (Session& s) + : _session (s) +{ + rebuild (0); +} + +void +RouteGroupMenu::rebuild (RouteGroup* curr) +{ + using namespace Menu_Helpers; + + items().clear (); + + items().push_back (MenuElem (_("New group..."), mem_fun (*this, &RouteGroupMenu::new_group))); + items().push_back (SeparatorElem ()); + + RadioMenuItem::Group group; + items().push_back (RadioMenuElem (group, _("No group"), bind (mem_fun (*this, &RouteGroupMenu::set_group), (RouteGroup *) 0))); + + if (curr == 0) { + static_cast<RadioMenuItem*> (&items().back())->set_active (); + } + + _session.foreach_route_group (bind (mem_fun (*this, &RouteGroupMenu::add_item), curr, &group)); +} + +void +RouteGroupMenu::add_item (RouteGroup* rg, RouteGroup* curr, RadioMenuItem::Group* group) +{ + using namespace Menu_Helpers; + + items().push_back (RadioMenuElem (*group, rg->name(), bind (mem_fun(*this, &RouteGroupMenu::set_group), rg))); + + if (rg == curr) { + static_cast<RadioMenuItem*> (&items().back())->set_active (); + } +} + +void +RouteGroupMenu::set_group (RouteGroup* g) +{ + GroupSelected (g); +} + + +void +RouteGroupMenu::new_group () +{ + RouteGroup* g = new RouteGroup (_session, "", RouteGroup::Active); + + RouteGroupDialog d (g, Gtk::Stock::NEW); + int const r = d.do_run (); + + if (r == Gtk::RESPONSE_OK) { + _session.add_route_group (g); + set_group (g); + } else { + delete g; + } +} diff --git a/gtk2_ardour/route_group_menu.h b/gtk2_ardour/route_group_menu.h new file mode 100644 index 0000000000..09a31e60ed --- /dev/null +++ b/gtk2_ardour/route_group_menu.h @@ -0,0 +1,21 @@ +namespace ARDOUR { + class Session; + class RouteGroup; +} + +class RouteGroupMenu : public Gtk::Menu +{ +public: + RouteGroupMenu (ARDOUR::Session &); + + void rebuild (ARDOUR::RouteGroup *); + + sigc::signal<void, ARDOUR::RouteGroup*> GroupSelected; + +private: + void add_item (ARDOUR::RouteGroup *, ARDOUR::RouteGroup *, Gtk::RadioMenuItem::Group*); + void new_group (); + void set_group (ARDOUR::RouteGroup *); + + ARDOUR::Session& _session; +}; diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index a31c84dba3..f0a0857030 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -75,7 +75,7 @@ #include "simplerect.h" #include "streamview.h" #include "utils.h" -#include "route_group_dialog.h" +#include "route_group_menu.h" #include "ardour/track.h" @@ -253,6 +253,9 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh _editor.ZoomChanged.connect (mem_fun(*this, &RouteTimeAxisView::reset_samples_per_unit)); ColorsChanged.connect (mem_fun (*this, &RouteTimeAxisView::color_handler)); + route_group_menu = new RouteGroupMenu (_session); + route_group_menu->GroupSelected.connect (mem_fun (*this, &RouteTimeAxisView::set_route_group_from_menu)); + gm.get_gain_slider().signal_scroll_event().connect(mem_fun(*this, &RouteTimeAxisView::controls_ebox_scroll), false); gm.get_gain_slider().set_name ("TrackGainFader"); } @@ -279,6 +282,8 @@ RouteTimeAxisView::~RouteTimeAxisView () } _automation_tracks.clear (); + + delete route_group_menu; } void @@ -315,46 +320,15 @@ RouteTimeAxisView::edit_click (GdkEventButton *ev) if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { _route->set_route_group (0, this); return FALSE; - } - - using namespace Menu_Helpers; - - MenuList& items = route_group_menu.items (); - RadioMenuItem::Group group; - - items.clear (); - - items.push_back (MenuElem (_("New group..."), mem_fun (*this, &RouteTimeAxisView::set_route_group_to_new))); - - items.push_back (SeparatorElem ()); - - items.push_back (RadioMenuElem (group, _("No group"), - bind (mem_fun(*this, &RouteTimeAxisView::set_route_group_from_menu), (RouteGroup *) 0))); - - if (_route->route_group() == 0) { - static_cast<RadioMenuItem*>(&items.back())->set_active (); } - _session.foreach_route_group (bind (mem_fun (*this, &RouteTimeAxisView::add_route_group_menu_item), &group)); - route_group_menu.popup (ev->button, ev->time); + route_group_menu->rebuild (_route->route_group ()); + route_group_menu->popup (ev->button, ev->time); return FALSE; } void -RouteTimeAxisView::add_route_group_menu_item (RouteGroup *eg, RadioMenuItem::Group* group) -{ - using namespace Menu_Helpers; - - MenuList &items = route_group_menu.items(); - - items.push_back (RadioMenuElem (*group, eg->name(), bind (mem_fun(*this, &RouteTimeAxisView::set_route_group_from_menu), eg))); - if (_route->route_group() == eg) { - static_cast<RadioMenuItem*>(&items.back())->set_active (); - } -} - -void RouteTimeAxisView::set_route_group_from_menu (RouteGroup *eg) { _route->set_route_group (eg, this); @@ -2422,18 +2396,3 @@ RouteTimeAxisView::set_button_names () mute_button_label.set_text (_("m")); } -void -RouteTimeAxisView::set_route_group_to_new () -{ - RouteGroup* g = new RouteGroup (_session, "", RouteGroup::Active); - - RouteGroupDialog d (g, Gtk::Stock::NEW); - int const r = d.do_run (); - - if (r == Gtk::RESPONSE_OK) { - _session.add_route_group (g); - _route->set_route_group (g, this); - } else { - delete g; - } -} diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h index 34896e4639..45e961c69e 100644 --- a/gtk2_ardour/route_time_axis.h +++ b/gtk2_ardour/route_time_axis.h @@ -45,7 +45,6 @@ #include "canvas.h" #include "gain_meter.h" - namespace ARDOUR { class Session; class Region; @@ -67,6 +66,7 @@ class AutomationTimeAxisView; class AutomationLine; class ProcessorAutomationLine; class TimeSelection; +class RouteGroupMenu; class RouteTimeAxisView : public RouteUI, public TimeAxisView { @@ -223,9 +223,7 @@ protected: virtual void label_view (); - void add_route_group_menu_item (ARDOUR::RouteGroup *, Gtk::RadioMenuItem::Group*); void set_route_group_from_menu (ARDOUR::RouteGroup *); - void set_route_group_to_new (); void reset_samples_per_unit (); @@ -281,7 +279,7 @@ protected: Gtk::Menu subplugin_menu; Gtk::Menu* automation_action_menu; - Gtk::Menu route_group_menu; + RouteGroupMenu* route_group_menu; Gtk::RadioMenuItem* align_existing_item; Gtk::RadioMenuItem* align_capture_item; Gtk::RadioMenuItem* normal_track_mode_item; diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 9c27e92f6c..accc7cdd72 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -192,6 +192,7 @@ def build(bld): return_ui.cc rhythm_ferret.cc route_group_dialog.cc + route_group_menu.cc route_params_ui.cc route_processor_selection.cc route_time_axis.cc |