summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-11-20 15:26:34 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-11-20 15:26:34 +0000
commit8f7f17187770afc8352dad61ca48ff304c734f68 (patch)
tree8877485412c5e1685d777e2660ac69ad1d561d33 /gtk2_ardour
parent648450781b8e5a39fd89c1a42f34b601c97df0e2 (diff)
make strip-as-GUI-for-send work for metering too ; frame around session summary widget ; tooltip for editor group tabs ; route group dialog name entry is now activatable (return == click on ok)
git-svn-id: svn://localhost/ardour2/branches/3.0@6137 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.cc10
-rw-r--r--gtk2_ardour/editor_route_groups.cc99
-rw-r--r--gtk2_ardour/editor_route_groups.h1
-rw-r--r--gtk2_ardour/mixer_strip.cc66
-rw-r--r--gtk2_ardour/mixer_strip.h4
-rw-r--r--gtk2_ardour/processor_box.cc5
-rw-r--r--gtk2_ardour/route_group_dialog.cc4
7 files changed, 103 insertions, 86 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index d96ccdcf4b..2c75cc0100 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -452,6 +452,8 @@ Editor::Editor ()
h->pack_start (edit_controls_vbox);
controls_layout.add (*h);
+ ARDOUR_UI::instance()->tooltips().set_tip (*_group_tabs, _("Groups: context-click for possible operations"));
+
controls_layout.set_name ("EditControlsBase");
controls_layout.add_events (Gdk::SCROLL_MASK);
controls_layout.signal_scroll_event().connect (mem_fun(*this, &Editor::control_layout_scroll), false);
@@ -554,7 +556,13 @@ Editor::Editor ()
VPaned *editor_summary_pane = manage(new VPaned());
editor_summary_pane->pack1(edit_packer);
- editor_summary_pane->pack2(*_summary);
+
+ Frame* summary_frame = manage (new Frame);
+ summary_frame->set_shadow_type (Gtk::SHADOW_ETCHED_IN);
+ summary_frame->add (*_summary);
+ summary_frame->show ();
+
+ editor_summary_pane->pack2(*summary_frame);
edit_pane.pack1 (*editor_summary_pane, true, true);
edit_pane.pack2 (the_notebook, false, true);
diff --git a/gtk2_ardour/editor_route_groups.cc b/gtk2_ardour/editor_route_groups.cc
index 7496d50ccb..2a07ca89c1 100644
--- a/gtk2_ardour/editor_route_groups.cc
+++ b/gtk2_ardour/editor_route_groups.cc
@@ -252,87 +252,90 @@ EditorRouteGroups::new_route_group ()
}
void
-EditorRouteGroups::new_from_selection ()
+EditorRouteGroups::run_new_group_dialog (const RouteList& rl)
{
RouteGroup* g = new RouteGroup (
*_session,
"",
RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::Select)
+ (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::RecEnable)
);
RouteGroupDialog d (g, Gtk::Stock::NEW);
int const r = d.do_run ();
- if (r == Gtk::RESPONSE_OK) {
+ switch (r) {
+ case Gtk::RESPONSE_OK:
+ case Gtk::RESPONSE_ACCEPT:
_session->add_route_group (g);
-
- for (TrackSelection::iterator i = _editor->get_selection().tracks.begin(); i != _editor->get_selection().tracks.end(); ++i) {
- RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
- if (rtv) {
- rtv->route()->set_route_group (g, this);
- }
+ for (RouteList::const_iterator i = rl.begin(); i != rl.end(); ++i) {
+ (*i)->set_route_group (g, this);
}
-
- } else {
+ break;
+ default:
delete g;
}
}
void
-EditorRouteGroups::new_from_rec_enabled ()
+EditorRouteGroups::new_from_selection ()
{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::RecEnable)
- );
+ if (_editor->get_selection().tracks.empty()) {
+ return;
+ }
- RouteGroupDialog d (g, Gtk::Stock::NEW);
- int const r = d.do_run ();
+ RouteList rl;
- if (r == Gtk::RESPONSE_OK) {
- _session->add_route_group (g);
-
- for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) {
- RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
- if (rtv && rtv->route()->record_enabled()) {
- rtv->route()->set_route_group (g, this);
- }
+ for (TrackSelection::iterator i = _editor->get_selection().tracks.begin(); i != _editor->get_selection().tracks.end(); ++i) {
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
+ if (rtv) {
+ rl.push_back (rtv->route());
}
+ }
- } else {
- delete g;
+ if (rl.empty()) {
+ return;
}
+
+ run_new_group_dialog (rl);
}
void
-EditorRouteGroups::new_from_soloed ()
+EditorRouteGroups::new_from_rec_enabled ()
{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit)
- );
+ RouteList rl;
- RouteGroupDialog d (g, Gtk::Stock::NEW);
- int const r = d.do_run ();
+ for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) {
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
+ if (rtv && rtv->route()->record_enabled()) {
+ rl.push_back (rtv->route());
+ }
+ }
- if (r == Gtk::RESPONSE_OK) {
- _session->add_route_group (g);
+ if (rl.empty()) {
+ return;
+ }
- for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) {
- RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
- if (rtv && !rtv->route()->is_master() && rtv->route()->soloed()) {
- rtv->route()->set_route_group (g, this);
- }
+ run_new_group_dialog (rl);
+}
+
+void
+EditorRouteGroups::new_from_soloed ()
+{
+ RouteList rl;
+
+ for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) {
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
+ if (rtv && !rtv->route()->is_master() && rtv->route()->soloed()) {
+ rl.push_back (rtv->route());
}
+ }
- } else {
- delete g;
+ if (rl.empty()) {
+ return;
}
+
+ run_new_group_dialog (rl);
}
void
diff --git a/gtk2_ardour/editor_route_groups.h b/gtk2_ardour/editor_route_groups.h
index e5fc6d7c64..3c93b96ed4 100644
--- a/gtk2_ardour/editor_route_groups.h
+++ b/gtk2_ardour/editor_route_groups.h
@@ -84,6 +84,7 @@ private:
void flags_changed (void*, ARDOUR::RouteGroup*);
void set_activation (ARDOUR::RouteGroup *, bool);
void remove_selected ();
+ void run_new_group_dialog (const ARDOUR::RouteList&);
Gtk::Menu* _menu;
Glib::RefPtr<Gtk::ListStore> _model;
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 876cf86dfb..3c32439c03 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -334,16 +334,8 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
delete output_selector;
output_selector = 0;
- boost::shared_ptr<Send> send;
+ revert_to_default_display ();
- if (_current_delivery && (send = boost::dynamic_pointer_cast<Send>(_current_delivery))) {
- send->set_metering (false);
- }
-
- _current_delivery = _route->main_outs ();
-
- panners.set_panner (rt->main_outs()->panner());
- gpm.set_controls (rt, rt->shared_peak_meter(), rt->amp());
processor_box.set_route (rt);
if (set_color_from_route()) {
@@ -1640,46 +1632,54 @@ MixerStrip::switch_io (boost::shared_ptr<Route> target)
return;
}
- boost::shared_ptr<Send> send;
+ boost::shared_ptr<Send> send = _route->internal_send_for (target);
- if (_current_delivery && (send = boost::dynamic_pointer_cast<Send>(_current_delivery))) {
- send->set_metering (false);
+ if (send) {
+ show_send (send);
+ } else {
+ revert_to_default_display ();
}
+}
- _current_delivery = _route->internal_send_for (target);
+void
+MixerStrip::drop_send ()
+{
+ boost::shared_ptr<Send> current_send;
- cerr << "internal send from " << _route->name() << " to " << target->name() << " = "
- << _current_delivery << endl;
+ if (_current_delivery && (current_send = boost::dynamic_pointer_cast<Send>(_current_delivery))) {
+ current_send->set_metering (false);
+ }
+
+ send_gone_connection.disconnect ();
+
+}
- if (_current_delivery) {
- send = boost::dynamic_pointer_cast<Send>(_current_delivery);
- send->set_metering (true);
- _current_delivery->GoingAway.connect (mem_fun (*this, &MixerStrip::revert_to_default_display));
- gain_meter().set_controls (_route, send->meter(), send->amp());
- panner_ui().set_panner (_current_delivery->panner());
+void
+MixerStrip::show_send (boost::shared_ptr<Send> send)
+{
+ assert (send != 0);
+ drop_send ();
- } else {
- _current_delivery = _route->main_outs ();
- gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp());
- panner_ui().set_panner (_route->main_outs()->panner());
- }
+ _current_delivery = send;
+ send->set_metering (true);
+ send_gone_connection = _current_delivery->GoingAway.connect (mem_fun (*this, &MixerStrip::revert_to_default_display));
+ gain_meter().set_controls (_route, send->meter(), send->amp());
gain_meter().setup_meters ();
+
+ panner_ui().set_panner (_current_delivery->panner());
panner_ui().setup_pan ();
}
-
void
MixerStrip::revert_to_default_display ()
{
- show_sends_button->set_active (false);
-
- boost::shared_ptr<Send> send;
-
- if (_current_delivery && (send = boost::dynamic_pointer_cast<Send>(_current_delivery))) {
- send->set_metering (false);
+ if (show_sends_button) {
+ show_sends_button->set_active (false);
}
+ drop_send ();
+
_current_delivery = _route->main_outs();
gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp());
diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h
index fdcf85e1f3..e76f8170ee 100644
--- a/gtk2_ardour/mixer_strip.h
+++ b/gtk2_ardour/mixer_strip.h
@@ -97,6 +97,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
ARDOUR::RouteGroup* route_group() const;
void set_route (boost::shared_ptr<ARDOUR::Route>);
void set_button_names ();
+ void show_send (boost::shared_ptr<ARDOUR::Send>);
sigc::signal<void> WidthChanged;
@@ -263,6 +264,9 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
boost::shared_ptr<ARDOUR::Delivery> _current_delivery;
void revert_to_default_display ();
+ void drop_send ();
+ sigc::connection send_gone_connection;
+
static int scrollbar_height;
void update_io_button (boost::shared_ptr<ARDOUR::Route> route, Width width, bool input_button);
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 7b784022fa..14b0f6599d 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -342,7 +342,7 @@ ProcessorBox::show_processor_menu (gint arg)
aux_menu_item->set_submenu (*m);
} else {
/* stupid gtkmm: we need to pass a null reference here */
- aux_menu_item->set_submenu (*((Gtk::Menu *)0));
+ gtk_menu_item_set_submenu (aux_menu_item->gobj(), 0);
}
}
@@ -1442,8 +1442,7 @@ ProcessorBox::edit_processor (boost::shared_ptr<Processor> processor)
gidget = send_ui;
#else
if (_parent_strip) {
- _parent_strip->gain_meter().set_controls (_route, send->meter(), send->amp());
- _parent_strip->panner_ui().set_panner (send->panner());
+ _parent_strip->show_send (send);
}
#endif
diff --git a/gtk2_ardour/route_group_dialog.cc b/gtk2_ardour/route_group_dialog.cc
index a23d1f4749..4856d87f08 100644
--- a/gtk2_ardour/route_group_dialog.cc
+++ b/gtk2_ardour/route_group_dialog.cc
@@ -75,6 +75,8 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, StockID const & s)
_name.set_text (_group->name ());
_active.set_active (_group->is_active ());
+ _name.signal_activate ().connect (sigc::bind (mem_fun (*this, &Dialog::response), RESPONSE_ACCEPT));
+
_gain.set_active (_group->property (RouteGroup::Gain));
_relative.set_active (_group->is_relative());
_mute.set_active (_group->property (RouteGroup::Mute));
@@ -124,7 +126,7 @@ RouteGroupDialog::do_run ()
{
int const r = run ();
- if (r == Gtk::RESPONSE_OK) {
+ if (r == Gtk::RESPONSE_OK || r == Gtk::RESPONSE_ACCEPT) {
_group->set_property (RouteGroup::Gain, _gain.get_active ());
_group->set_property (RouteGroup::Mute, _mute.get_active ());
_group->set_property (RouteGroup::Solo, _solo.get_active ());