Allow edit group creation from the route UI's menu. Allow new tracks to be put in particular edit groups.
git-svn-id: svn://localhost/ardour2/branches/3.0@5226 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
6b20256ad4
commit
f0bf3a0c19
|
@ -23,12 +23,14 @@
|
|||
#include <sigc++/bind.h>
|
||||
#include <gtkmm/stock.h>
|
||||
#include <gtkmm/separator.h>
|
||||
#include <gtkmm/table.h>
|
||||
|
||||
#include "pbd/error.h"
|
||||
#include "pbd/convert.h"
|
||||
#include "gtkmm2ext/utils.h"
|
||||
#include "ardour/profile.h"
|
||||
#include "ardour/template_utils.h"
|
||||
#include "ardour/route_group.h"
|
||||
#include "ardour/session.h"
|
||||
|
||||
#include "utils.h"
|
||||
|
@ -49,8 +51,9 @@ static const char* track_mode_names[] = {
|
|||
0
|
||||
};
|
||||
|
||||
AddRouteDialog::AddRouteDialog ()
|
||||
AddRouteDialog::AddRouteDialog (Session & s)
|
||||
: Dialog (_("ardour: add track/bus")),
|
||||
_session (s),
|
||||
track_button (_("Tracks")),
|
||||
bus_button (_("Busses")),
|
||||
routes_adjustment (1, 1, 128, 1, 4),
|
||||
|
@ -77,65 +80,65 @@ AddRouteDialog::AddRouteDialog ()
|
|||
track_button.set_name ("AddRouteDialogRadioButton");
|
||||
bus_button.set_name ("AddRouteDialogRadioButton");
|
||||
routes_spinner.set_name ("AddRouteDialogSpinner");
|
||||
|
||||
RadioButton::Group g = track_button.get_group();
|
||||
bus_button.set_group (g);
|
||||
track_button.set_active (true);
|
||||
|
||||
/* add */
|
||||
|
||||
HBox* hbox1 = manage (new HBox);
|
||||
hbox1->set_spacing (6);
|
||||
Label* label1 = manage (new Label (_("Add this many:")));
|
||||
hbox1->pack_start (*label1, PACK_SHRINK);
|
||||
hbox1->pack_start (routes_spinner, PACK_SHRINK);
|
||||
|
||||
HBox* hbox2 = manage (new HBox);
|
||||
hbox2->set_spacing (6);
|
||||
hbox2->set_border_width (6);
|
||||
hbox2->pack_start (*hbox1, PACK_EXPAND_WIDGET);
|
||||
|
||||
/* track/bus choice & modes */
|
||||
|
||||
HBox* hbox5 = manage (new HBox);
|
||||
hbox5->set_spacing (6);
|
||||
hbox5->pack_start (track_button, PACK_EXPAND_PADDING);
|
||||
hbox5->pack_start (bus_button, PACK_EXPAND_PADDING);
|
||||
|
||||
channel_combo.set_name (X_("ChannelCountSelector"));
|
||||
track_mode_combo.set_name (X_("ChannelCountSelector"));
|
||||
|
||||
refill_channel_setups ();
|
||||
set_popdown_strings (track_mode_combo, track_mode_strings, true);
|
||||
|
||||
edit_group_combo.append_text (_("No group"));
|
||||
_session.foreach_edit_group (mem_fun (*this, &AddRouteDialog::add_edit_group));
|
||||
|
||||
channel_combo.set_active_text (channel_combo_strings.front());
|
||||
track_mode_combo.set_active_text (track_mode_strings.front());
|
||||
edit_group_combo.set_active (0);
|
||||
|
||||
RadioButton::Group g = track_button.get_group();
|
||||
bus_button.set_group (g);
|
||||
track_button.set_active (true);
|
||||
|
||||
Table* table = manage (new Table (5, 2));
|
||||
table->set_spacings (4);
|
||||
|
||||
/* add */
|
||||
|
||||
Label* l = manage (new Label (_("Add this many:")));
|
||||
l->set_alignment (1, 0.5);
|
||||
table->attach (*l, 0, 1, 0, 1);
|
||||
table->attach (routes_spinner, 1, 2, 0, 1, FILL | EXPAND);
|
||||
|
||||
/* track/bus choice & modes */
|
||||
|
||||
HBox* hbox = manage (new HBox);
|
||||
hbox->set_spacing (6);
|
||||
hbox->pack_start (track_button, PACK_EXPAND_PADDING);
|
||||
hbox->pack_start (bus_button, PACK_EXPAND_PADDING);
|
||||
table->attach (*hbox, 0, 2, 1, 2);
|
||||
|
||||
channel_combo.set_name (X_("ChannelCountSelector"));
|
||||
track_mode_combo.set_name (X_("ChannelCountSelector"));
|
||||
|
||||
track_button.signal_clicked().connect (mem_fun (*this, &AddRouteDialog::track_type_chosen));
|
||||
bus_button.signal_clicked().connect (mem_fun (*this, &AddRouteDialog::track_type_chosen));
|
||||
|
||||
VBox* vbox1 = manage (new VBox);
|
||||
vbox1->set_spacing (6);
|
||||
vbox1->set_border_width (6);
|
||||
|
||||
Frame* frame1 = manage (new Frame (_("Channel Configuration")));
|
||||
frame1->add (channel_combo);
|
||||
Frame* frame2 = manage (new Frame (_("Track Mode")));
|
||||
frame2->add (track_mode_combo);
|
||||
l = manage (new Label (_("Channel configuration:")));
|
||||
l->set_alignment (1, 0.5);
|
||||
table->attach (*l, 0, 1, 2, 3);
|
||||
table->attach (channel_combo, 1, 2, 2, 3, FILL | EXPAND);
|
||||
|
||||
vbox1->pack_start (*hbox5, PACK_SHRINK);
|
||||
vbox1->pack_start (*frame1, PACK_SHRINK);
|
||||
|
||||
if (!ARDOUR::Profile->get_sae()) {
|
||||
vbox1->pack_start (*frame2, PACK_SHRINK);
|
||||
if (!ARDOUR::Profile->get_sae ()) {
|
||||
l = manage (new Label (_("Track mode:")));
|
||||
l->set_alignment (1, 0.5);
|
||||
table->attach (*l, 0, 1, 3, 4);
|
||||
table->attach (track_mode_combo, 1, 2, 3, 4, FILL | EXPAND);
|
||||
}
|
||||
|
||||
l = manage (new Label (_("Add to edit group:")));
|
||||
l->set_alignment (1, 0.5);
|
||||
table->attach (*l, 0, 1, 4, 5);
|
||||
table->attach (edit_group_combo, 1, 2, 4, 5, FILL | EXPAND);
|
||||
get_vbox()->pack_start (*table);
|
||||
|
||||
get_vbox()->set_spacing (6);
|
||||
get_vbox()->set_border_width (6);
|
||||
|
||||
get_vbox()->pack_start (*hbox2, PACK_SHRINK);
|
||||
get_vbox()->pack_start (*vbox1, PACK_SHRINK);
|
||||
|
||||
get_vbox()->show_all ();
|
||||
|
||||
/* track template info will be managed whenever
|
||||
|
@ -320,3 +323,19 @@ AddRouteDialog::refill_channel_setups ()
|
|||
set_popdown_strings (channel_combo, channel_combo_strings, true);
|
||||
channel_combo.set_active_text (channel_combo_strings.front());
|
||||
}
|
||||
|
||||
void
|
||||
AddRouteDialog::add_edit_group (RouteGroup* g)
|
||||
{
|
||||
edit_group_combo.append_text (g->name ());
|
||||
}
|
||||
|
||||
RouteGroup*
|
||||
AddRouteDialog::edit_group ()
|
||||
{
|
||||
if (edit_group_combo.get_active_row_number () == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return _session.edit_group_by_name (edit_group_combo.get_active_text());
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
class AddRouteDialog : public Gtk::Dialog
|
||||
{
|
||||
public:
|
||||
AddRouteDialog ();
|
||||
AddRouteDialog (ARDOUR::Session &);
|
||||
~AddRouteDialog ();
|
||||
|
||||
bool track ();
|
||||
|
@ -50,8 +50,10 @@ class AddRouteDialog : public Gtk::Dialog
|
|||
|
||||
ARDOUR::DataType type();
|
||||
ARDOUR::TrackMode mode();
|
||||
ARDOUR::RouteGroup* edit_group ();
|
||||
|
||||
private:
|
||||
ARDOUR::Session& _session;
|
||||
Gtk::Entry name_template_entry;
|
||||
Gtk::RadioButton track_button;
|
||||
Gtk::RadioButton bus_button;
|
||||
|
@ -59,11 +61,13 @@ class AddRouteDialog : public Gtk::Dialog
|
|||
Gtk::SpinButton routes_spinner;
|
||||
Gtk::ComboBoxText channel_combo;
|
||||
Gtk::ComboBoxText track_mode_combo;
|
||||
Gtk::ComboBoxText edit_group_combo;
|
||||
|
||||
std::vector<ARDOUR::TemplateInfo> route_templates;
|
||||
|
||||
void track_type_chosen ();
|
||||
void refill_channel_setups ();
|
||||
void add_edit_group (ARDOUR::RouteGroup *);
|
||||
|
||||
void reset_template_option_visibility ();
|
||||
|
||||
|
|
|
@ -1242,7 +1242,7 @@ ARDOUR_UI::open_session ()
|
|||
|
||||
|
||||
void
|
||||
ARDOUR_UI::session_add_midi_route (bool disk, uint32_t how_many)
|
||||
ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* edit_group, uint32_t how_many)
|
||||
{
|
||||
list<boost::shared_ptr<MidiTrack> > tracks;
|
||||
|
||||
|
@ -1254,7 +1254,7 @@ ARDOUR_UI::session_add_midi_route (bool disk, uint32_t how_many)
|
|||
try {
|
||||
if (disk) {
|
||||
|
||||
tracks = session->new_midi_track (ARDOUR::Normal, how_many);
|
||||
tracks = session->new_midi_track (ARDOUR::Normal, edit_group, how_many);
|
||||
|
||||
if (tracks.size() != how_many) {
|
||||
if (how_many == 1) {
|
||||
|
@ -1282,7 +1282,7 @@ restart JACK with more ports."));
|
|||
|
||||
|
||||
void
|
||||
ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode, uint32_t how_many)
|
||||
ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode, RouteGroup* edit_group, uint32_t how_many)
|
||||
{
|
||||
list<boost::shared_ptr<AudioTrack> > tracks;
|
||||
RouteList routes;
|
||||
|
@ -1294,7 +1294,7 @@ ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t
|
|||
|
||||
try {
|
||||
if (track) {
|
||||
tracks = session->new_audio_track (input_channels, output_channels, mode, how_many);
|
||||
tracks = session->new_audio_track (input_channels, output_channels, mode, edit_group, how_many);
|
||||
|
||||
if (tracks.size() != how_many) {
|
||||
if (how_many == 1) {
|
||||
|
@ -1307,7 +1307,7 @@ ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t
|
|||
|
||||
} else {
|
||||
|
||||
routes = session->new_audio_route (input_channels, output_channels, how_many);
|
||||
routes = session->new_audio_route (input_channels, output_channels, edit_group, how_many);
|
||||
|
||||
if (routes.size() != how_many) {
|
||||
if (how_many == 1) {
|
||||
|
@ -2764,7 +2764,7 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
}
|
||||
|
||||
if (add_route_dialog == 0) {
|
||||
add_route_dialog = new AddRouteDialog;
|
||||
add_route_dialog = new AddRouteDialog (*session);
|
||||
if (float_window) {
|
||||
add_route_dialog->set_transient_for (*float_window);
|
||||
}
|
||||
|
@ -2802,6 +2802,7 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
uint32_t output_chan;
|
||||
string name_template = add_route_dialog->name_template ();
|
||||
bool track = add_route_dialog->track ();
|
||||
RouteGroup* edit_group = add_route_dialog->edit_group ();
|
||||
|
||||
AutoConnectOption oac = Config->get_output_auto_connect();
|
||||
|
||||
|
@ -2815,7 +2816,7 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
|
||||
if (add_route_dialog->type() == ARDOUR::DataType::MIDI) {
|
||||
if (track) {
|
||||
session_add_midi_track(count);
|
||||
session_add_midi_track(edit_group, count);
|
||||
} else {
|
||||
MessageDialog msg (*editor,
|
||||
_("Sorry, MIDI Busses are not supported at this time."));
|
||||
|
@ -2824,9 +2825,9 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
}
|
||||
} else {
|
||||
if (track) {
|
||||
session_add_audio_track (input_chan, output_chan, add_route_dialog->mode(), count);
|
||||
session_add_audio_track (input_chan, output_chan, add_route_dialog->mode(), edit_group, count);
|
||||
} else {
|
||||
session_add_audio_bus (input_chan, output_chan, count);
|
||||
session_add_audio_bus (input_chan, output_chan, edit_group, count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -198,16 +198,16 @@ class ARDOUR_UI : public Gtkmm2ext::UI
|
|||
|
||||
void add_route (Gtk::Window* float_window);
|
||||
|
||||
void session_add_audio_track (int input_channels, int32_t output_channels, ARDOUR::TrackMode mode, uint32_t how_many) {
|
||||
session_add_audio_route (true, input_channels, output_channels, mode, how_many);
|
||||
void session_add_audio_track (int input_channels, int32_t output_channels, ARDOUR::TrackMode mode, ARDOUR::RouteGroup* edit_group, uint32_t how_many) {
|
||||
session_add_audio_route (true, input_channels, output_channels, mode, edit_group, how_many);
|
||||
}
|
||||
|
||||
void session_add_audio_bus (int input_channels, int32_t output_channels, uint32_t how_many) {
|
||||
session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, how_many);
|
||||
void session_add_audio_bus (int input_channels, int32_t output_channels, ARDOUR::RouteGroup* edit_group, uint32_t how_many) {
|
||||
session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, edit_group, how_many);
|
||||
}
|
||||
|
||||
void session_add_midi_track (uint32_t how_many) {
|
||||
session_add_midi_route (true, how_many);
|
||||
void session_add_midi_track (ARDOUR::RouteGroup* edit_group, uint32_t how_many) {
|
||||
session_add_midi_route (true, edit_group, how_many);
|
||||
}
|
||||
|
||||
/*void session_add_midi_bus () {
|
||||
|
@ -524,8 +524,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI
|
|||
void edit_metadata ();
|
||||
void import_metadata ();
|
||||
|
||||
void session_add_audio_route (bool disk, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode, uint32_t how_many);
|
||||
void session_add_midi_route (bool disk, uint32_t how_many);
|
||||
void session_add_audio_route (bool disk, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode, ARDOUR::RouteGroup *, uint32_t how_many);
|
||||
void session_add_midi_route (bool disk, ARDOUR::RouteGroup *, uint32_t how_many);
|
||||
|
||||
void set_transport_sensitivity (bool);
|
||||
|
||||
|
|
|
@ -215,11 +215,11 @@ ARDOUR_UI::install_actions ()
|
|||
ActionManager::register_toggle_action (common_actions, X_("ToggleKeyEditor"), _("Keybindings"), mem_fun(*this, &ARDOUR_UI::toggle_key_editor));
|
||||
ActionManager::register_toggle_action (common_actions, X_("ToggleBundleManager"), _("Bundle Manager"), mem_fun(*this, &ARDOUR_UI::toggle_bundle_manager));
|
||||
|
||||
act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("Add Audio Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1, ARDOUR::Normal, 1));
|
||||
act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("Add Audio Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1, ARDOUR::Normal, (ARDOUR::RouteGroup *) 0, 1));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("Add Audio Bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1, 1));
|
||||
act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("Add Audio Bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1, (ARDOUR::RouteGroup *) 0, 1));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (common_actions, X_("AddMIDITrack"), _("Add MIDI Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_midi_track), 1));
|
||||
act = ActionManager::register_action (common_actions, X_("AddMIDITrack"), _("Add MIDI Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_midi_track), (ARDOUR::RouteGroup *) 0, 1));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
//act = ActionManager::register_action (common_actions, X_("AddMidiBus"), _("Add Midi Bus"), mem_fun(*this, &ARDOUR_UI::session_add_midi_bus));
|
||||
//ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
|
|
@ -835,7 +835,7 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region, uint32_t
|
|||
{
|
||||
if (!existing_track) {
|
||||
if (ar) {
|
||||
list<boost::shared_ptr<AudioTrack> > at (session->new_audio_track (in_chans, out_chans, Normal, 1));
|
||||
list<boost::shared_ptr<AudioTrack> > at (session->new_audio_track (in_chans, out_chans, Normal, 0, 1));
|
||||
|
||||
if (at.empty()) {
|
||||
return -1;
|
||||
|
@ -843,7 +843,7 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region, uint32_t
|
|||
|
||||
existing_track = at.front();
|
||||
} else if (mr) {
|
||||
list<boost::shared_ptr<MidiTrack> > mt (session->new_midi_track (Normal, 1));
|
||||
list<boost::shared_ptr<MidiTrack> > mt (session->new_midi_track (Normal, 0, 1));
|
||||
|
||||
if (mt.empty()) {
|
||||
return -1;
|
||||
|
|
|
@ -79,7 +79,7 @@ Editor::disable_all_edit_groups ()
|
|||
void
|
||||
Editor::new_edit_group ()
|
||||
{
|
||||
session->add_edit_group ("");
|
||||
session->add_edit_group (new RouteGroup (*session, ""));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1125,7 +1125,7 @@ Mixer_UI::mix_groups_changed ()
|
|||
void
|
||||
Mixer_UI::new_mix_group ()
|
||||
{
|
||||
session->add_mix_group ("");
|
||||
session->add_mix_group (new RouteGroup (*session, ""));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
42
gtk2_ardour/route_group_dialog.cc
Normal file
42
gtk2_ardour/route_group_dialog.cc
Normal file
|
@ -0,0 +1,42 @@
|
|||
#include <gtkmm/stock.h>
|
||||
#include "ardour/route_group.h"
|
||||
#include "route_group_dialog.h"
|
||||
#include "i18n.h"
|
||||
|
||||
using namespace Gtk;
|
||||
using namespace ARDOUR;
|
||||
|
||||
RouteGroupDialog::RouteGroupDialog (RouteGroup* g)
|
||||
: Dialog (_("Route group")),
|
||||
_group (g),
|
||||
_active (_("Active"))
|
||||
{
|
||||
_name.set_text (_group->name ());
|
||||
_active.set_active (_group->is_active ());
|
||||
|
||||
HBox* h = manage (new HBox);
|
||||
h->pack_start (*manage (new Label (_("Name:"))));
|
||||
h->pack_start (_name);
|
||||
|
||||
get_vbox()->pack_start (*h);
|
||||
get_vbox()->pack_start (_active);
|
||||
|
||||
add_button (Stock::CANCEL, RESPONSE_CANCEL);
|
||||
/* XXX: change this depending on context */
|
||||
add_button (Stock::OK, RESPONSE_OK);
|
||||
|
||||
show_all ();
|
||||
}
|
||||
|
||||
int
|
||||
RouteGroupDialog::do_run ()
|
||||
{
|
||||
int const r = run ();
|
||||
|
||||
if (r == Gtk::RESPONSE_OK) {
|
||||
_group->set_name (_name.get_text ());
|
||||
_group->set_active (_active.get_active (), this);
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
22
gtk2_ardour/route_group_dialog.h
Normal file
22
gtk2_ardour/route_group_dialog.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
#ifndef __gtk_ardour_route_group_dialog_h__
|
||||
#define __gtk_ardour_route_group_dialog_h__
|
||||
|
||||
#include <gtkmm/dialog.h>
|
||||
#include <gtkmm/entry.h>
|
||||
#include <gtkmm/checkbutton.h>
|
||||
|
||||
class RouteGroupDialog : public Gtk::Dialog
|
||||
{
|
||||
public:
|
||||
RouteGroupDialog (ARDOUR::RouteGroup *);
|
||||
|
||||
int do_run ();
|
||||
|
||||
private:
|
||||
ARDOUR::RouteGroup* _group;
|
||||
Gtk::Entry _name;
|
||||
Gtk::CheckButton _active;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -75,6 +75,7 @@
|
|||
#include "simplerect.h"
|
||||
#include "streamview.h"
|
||||
#include "utils.h"
|
||||
#include "route_group_dialog.h"
|
||||
|
||||
#include "ardour/track.h"
|
||||
|
||||
|
@ -320,13 +321,18 @@ RouteTimeAxisView::edit_click (GdkEventButton *ev)
|
|||
RadioMenuItem::Group group;
|
||||
|
||||
items.clear ();
|
||||
|
||||
items.push_back (MenuElem (_("New group..."), mem_fun (*this, &RouteTimeAxisView::set_edit_group_to_new)));
|
||||
|
||||
items.push_back (SeparatorElem ());
|
||||
|
||||
items.push_back (RadioMenuElem (group, _("No group"),
|
||||
bind (mem_fun(*this, &RouteTimeAxisView::set_edit_group_from_menu), (RouteGroup *) 0)));
|
||||
|
||||
if (_route->edit_group() == 0) {
|
||||
static_cast<RadioMenuItem*>(&items.back())->set_active ();
|
||||
}
|
||||
|
||||
|
||||
_session.foreach_edit_group (bind (mem_fun (*this, &RouteTimeAxisView::add_edit_group_menu_item), &group));
|
||||
edit_group_menu.popup (ev->button, ev->time);
|
||||
|
||||
|
@ -2401,3 +2407,19 @@ RouteTimeAxisView::remove_underlay(StreamView* v)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
RouteTimeAxisView::set_edit_group_to_new ()
|
||||
{
|
||||
RouteGroup* g = new RouteGroup (_session, "", RouteGroup::Active);
|
||||
g->set_active (true, this);
|
||||
|
||||
RouteGroupDialog d (g);
|
||||
int const r = d.do_run ();
|
||||
|
||||
if (r == Gtk::RESPONSE_OK) {
|
||||
_session.add_edit_group (g);
|
||||
_route->set_edit_group (g, this);
|
||||
} else {
|
||||
delete g;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -224,6 +224,7 @@ protected:
|
|||
|
||||
void add_edit_group_menu_item (ARDOUR::RouteGroup *, Gtk::RadioMenuItem::Group*);
|
||||
void set_edit_group_from_menu (ARDOUR::RouteGroup *);
|
||||
void set_edit_group_to_new ();
|
||||
|
||||
void reset_samples_per_unit ();
|
||||
|
||||
|
|
|
@ -189,6 +189,7 @@ def build(bld):
|
|||
region_view.cc
|
||||
return_ui.cc
|
||||
rhythm_ferret.cc
|
||||
route_group_dialog.cc
|
||||
route_params_ui.cc
|
||||
route_processor_selection.cc
|
||||
route_time_axis.cc
|
||||
|
|
|
@ -486,8 +486,8 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
|
|||
|
||||
StateOfTheState state_of_the_state() const { return _state_of_the_state; }
|
||||
|
||||
RouteGroup* add_edit_group (std::string);
|
||||
RouteGroup* add_mix_group (std::string);
|
||||
void add_edit_group (RouteGroup *);
|
||||
void add_mix_group (RouteGroup *);
|
||||
|
||||
void remove_edit_group (RouteGroup&);
|
||||
void remove_mix_group (RouteGroup&);
|
||||
|
@ -515,12 +515,14 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
|
|||
/* fundamental operations. duh. */
|
||||
|
||||
std::list<boost::shared_ptr<AudioTrack> > new_audio_track (
|
||||
int input_channels, int output_channels, TrackMode mode = Normal, uint32_t how_many = 1);
|
||||
int input_channels, int output_channels, TrackMode mode = Normal, RouteGroup* edit_group = 0, uint32_t how_many = 1
|
||||
);
|
||||
|
||||
RouteList new_audio_route (int input_channels, int output_channels, uint32_t how_many);
|
||||
RouteList new_audio_route (int input_channels, int output_channels, RouteGroup* edit_group, uint32_t how_many);
|
||||
|
||||
std::list<boost::shared_ptr<MidiTrack> > new_midi_track (
|
||||
TrackMode mode = Normal, uint32_t how_many = 1);
|
||||
TrackMode mode = Normal, RouteGroup* edit_group = 0, uint32_t how_many = 1
|
||||
);
|
||||
|
||||
void remove_route (boost::shared_ptr<Route>);
|
||||
void resort_routes ();
|
||||
|
|
|
@ -1480,7 +1480,7 @@ Session::resort_routes_using (shared_ptr<RouteList> r)
|
|||
}
|
||||
|
||||
list<boost::shared_ptr<MidiTrack> >
|
||||
Session::new_midi_track (TrackMode mode, uint32_t how_many)
|
||||
Session::new_midi_track (TrackMode mode, RouteGroup* edit_group, uint32_t how_many)
|
||||
{
|
||||
char track_name[32];
|
||||
uint32_t track_id = 0;
|
||||
|
@ -1589,6 +1589,7 @@ Session::new_midi_track (TrackMode mode, uint32_t how_many)
|
|||
*/
|
||||
|
||||
track->midi_diskstream()->non_realtime_input_change();
|
||||
track->set_edit_group (edit_group, 0);
|
||||
|
||||
track->DiskstreamChanged.connect (mem_fun (this, &Session::resort_routes));
|
||||
//track->set_remote_control_id (control_id);
|
||||
|
@ -1645,7 +1646,7 @@ Session::new_midi_track (TrackMode mode, uint32_t how_many)
|
|||
}
|
||||
|
||||
list<boost::shared_ptr<AudioTrack> >
|
||||
Session::new_audio_track (int input_channels, int output_channels, TrackMode mode, uint32_t how_many)
|
||||
Session::new_audio_track (int input_channels, int output_channels, TrackMode mode, RouteGroup* edit_group, uint32_t how_many)
|
||||
{
|
||||
char track_name[32];
|
||||
uint32_t track_id = 0;
|
||||
|
@ -1757,6 +1758,8 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod
|
|||
|
||||
channels_used += track->n_inputs ().n_audio();
|
||||
|
||||
track->set_edit_group (edit_group, 0);
|
||||
|
||||
track->audio_diskstream()->non_realtime_input_change();
|
||||
|
||||
track->DiskstreamChanged.connect (mem_fun (this, &Session::resort_routes));
|
||||
|
@ -1835,7 +1838,7 @@ Session::set_remote_control_ids ()
|
|||
|
||||
|
||||
RouteList
|
||||
Session::new_audio_route (int input_channels, int output_channels, uint32_t how_many)
|
||||
Session::new_audio_route (int input_channels, int output_channels, RouteGroup* edit_group, uint32_t how_many)
|
||||
{
|
||||
char bus_name[32];
|
||||
uint32_t bus_id = 1;
|
||||
|
@ -1934,6 +1937,7 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_
|
|||
|
||||
channels_used += bus->n_inputs ().n_audio();
|
||||
|
||||
bus->set_edit_group (edit_group, 0);
|
||||
bus->set_remote_control_id (control_id);
|
||||
++control_id;
|
||||
|
||||
|
|
|
@ -2058,17 +2058,17 @@ Session::load_route_groups (const XMLNode& node, bool edit)
|
|||
{
|
||||
XMLNodeList nlist = node.children();
|
||||
XMLNodeConstIterator niter;
|
||||
RouteGroup* rg;
|
||||
|
||||
set_dirty();
|
||||
|
||||
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
|
||||
if ((*niter)->name() == "RouteGroup") {
|
||||
RouteGroup* rg = new RouteGroup (*this, "");
|
||||
if (edit) {
|
||||
rg = add_edit_group ("");
|
||||
add_edit_group (rg);
|
||||
rg->set_state (**niter);
|
||||
} else {
|
||||
rg = add_mix_group ("");
|
||||
add_mix_group (rg);
|
||||
rg->set_state (**niter);
|
||||
}
|
||||
}
|
||||
|
@ -2133,24 +2133,20 @@ Session::possible_states () const
|
|||
return possible_states(_path);
|
||||
}
|
||||
|
||||
RouteGroup *
|
||||
Session::add_edit_group (string name)
|
||||
void
|
||||
Session::add_edit_group (RouteGroup* g)
|
||||
{
|
||||
RouteGroup* rg = new RouteGroup (*this, name);
|
||||
edit_groups.push_back (rg);
|
||||
edit_group_added (rg); /* EMIT SIGNAL */
|
||||
set_dirty();
|
||||
return rg;
|
||||
edit_groups.push_back (g);
|
||||
edit_group_added (g); /* EMIT SIGNAL */
|
||||
set_dirty ();
|
||||
}
|
||||
|
||||
RouteGroup *
|
||||
Session::add_mix_group (string name)
|
||||
void
|
||||
Session::add_mix_group (RouteGroup* g)
|
||||
{
|
||||
RouteGroup* rg = new RouteGroup (*this, name, RouteGroup::Relative);
|
||||
mix_groups.push_back (rg);
|
||||
mix_group_added (rg); /* EMIT SIGNAL */
|
||||
set_dirty();
|
||||
return rg;
|
||||
mix_groups.push_back (g);
|
||||
mix_group_added (g); /* EMIT SIGNAL */
|
||||
set_dirty ();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue
Block a user