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
This commit is contained in:
parent
648450781b
commit
8f7f171877
|
@ -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);
|
||||
|
|
|
@ -252,35 +252,7 @@ EditorRouteGroups::new_route_group ()
|
|||
}
|
||||
|
||||
void
|
||||
EditorRouteGroups::new_from_selection ()
|
||||
{
|
||||
RouteGroup* g = new RouteGroup (
|
||||
*_session,
|
||||
"",
|
||||
RouteGroup::Active,
|
||||
(RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::Select)
|
||||
);
|
||||
|
||||
RouteGroupDialog d (g, Gtk::Stock::NEW);
|
||||
int const r = d.do_run ();
|
||||
|
||||
if (r == Gtk::RESPONSE_OK) {
|
||||
_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);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
delete g;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
EditorRouteGroups::new_from_rec_enabled ()
|
||||
EditorRouteGroups::run_new_group_dialog (const RouteList& rl)
|
||||
{
|
||||
RouteGroup* g = new RouteGroup (
|
||||
*_session,
|
||||
|
@ -292,47 +264,78 @@ EditorRouteGroups::new_from_rec_enabled ()
|
|||
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 (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 (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_selection ()
|
||||
{
|
||||
if (_editor->get_selection().tracks.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RouteList rl;
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
if (rl.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
run_new_group_dialog (rl);
|
||||
}
|
||||
|
||||
void
|
||||
EditorRouteGroups::new_from_rec_enabled ()
|
||||
{
|
||||
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()->record_enabled()) {
|
||||
rl.push_back (rtv->route());
|
||||
}
|
||||
}
|
||||
|
||||
if (rl.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
run_new_group_dialog (rl);
|
||||
}
|
||||
|
||||
void
|
||||
EditorRouteGroups::new_from_soloed ()
|
||||
{
|
||||
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 ();
|
||||
|
||||
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()->is_master() && rtv->route()->soloed()) {
|
||||
rtv->route()->set_route_group (g, this);
|
||||
}
|
||||
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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
if (_current_delivery && (send = boost::dynamic_pointer_cast<Send>(_current_delivery))) {
|
||||
send->set_metering (false);
|
||||
}
|
||||
|
||||
_current_delivery = _route->internal_send_for (target);
|
||||
|
||||
cerr << "internal send from " << _route->name() << " to " << target->name() << " = "
|
||||
<< _current_delivery << endl;
|
||||
|
||||
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());
|
||||
boost::shared_ptr<Send> send = _route->internal_send_for (target);
|
||||
|
||||
if (send) {
|
||||
show_send (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());
|
||||
revert_to_default_display ();
|
||||
}
|
||||
|
||||
gain_meter().setup_meters ();
|
||||
panner_ui().setup_pan ();
|
||||
}
|
||||
|
||||
void
|
||||
MixerStrip::drop_send ()
|
||||
{
|
||||
boost::shared_ptr<Send> current_send;
|
||||
|
||||
if (_current_delivery && (current_send = boost::dynamic_pointer_cast<Send>(_current_delivery))) {
|
||||
current_send->set_metering (false);
|
||||
}
|
||||
|
||||
send_gone_connection.disconnect ();
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
MixerStrip::show_send (boost::shared_ptr<Send> send)
|
||||
{
|
||||
assert (send != 0);
|
||||
drop_send ();
|
||||
|
||||
_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());
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 ());
|
||||
|
|
|
@ -362,8 +362,6 @@ Delivery::state (bool full_state)
|
|||
node.add_property("type", "delivery");
|
||||
}
|
||||
|
||||
std::cerr << "delivery " << _name << " storing role " << _role << " as " << enum_2_string (_role) << std::endl;
|
||||
|
||||
node.add_property("role", enum_2_string(_role));
|
||||
node.add_child_nocopy (_panner->state (full_state));
|
||||
|
||||
|
|
|
@ -81,7 +81,8 @@ Send::deactivate ()
|
|||
{
|
||||
_amp->deactivate ();
|
||||
_meter->deactivate ();
|
||||
|
||||
_meter->reset ();
|
||||
|
||||
Processor::deactivate ();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user