Push user track-templates to the template list

This commit is contained in:
Robin Gareus
2017-08-18 01:51:02 +02:00
parent bfee5a65d2
commit f85c320759
3 changed files with 96 additions and 115 deletions

View File

@@ -230,8 +230,10 @@ AddRouteDialog::AddRouteDialog ()
add_table->attach (insert_label, 2, 3, n, n + 1, Gtk::FILL, Gtk::EXPAND, 0, 0);
add_table->attach (insert_at_combo, 3, 4, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
add_table->attach (*(manage (new Gtk::Button(_("Add selected items (and leave dialog open)"), Add))), 5, 8, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
Gtk::Button* addnoclose_button = manage (new Gtk::Button(_("Add selected items (and leave dialog open)")));
addnoclose_button->set_can_default ();
addnoclose_button->signal_clicked ().connect (sigc::bind (sigc::mem_fun (*this, &Gtk::Dialog::response), Add));
add_table->attach (*addnoclose_button, 5, 8, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
vbox->pack_start (*add_table, false, true);
@@ -252,7 +254,6 @@ AddRouteDialog::AddRouteDialog ()
*/
add_button (_("Add and Close"), AddAndClose);
//add_button (_("Add"), Add);
set_response_sensitive (AddAndClose, true);
set_default_response (AddAndClose);
@@ -277,53 +278,56 @@ void
AddRouteDialog::trk_template_row_selected ()
{
if (trk_template_chooser.get_selection()->count_selected_rows() > 0) {
TreeIter iter = trk_template_chooser.get_selection()->get_selected();
TreeIter iter = trk_template_chooser.get_selection ()->get_selected ();
if (!iter) {
return;
}
string d = (*iter)[track_template_columns.description];
trk_template_desc.get_buffer()->set_text (d);
trk_template_desc.get_buffer ()->set_text (d);
string n = (*iter)[track_template_columns.name];
const string n = (*iter)[track_template_columns.name];
if ( n != _("Manual Configuration") ) {
/* template or meta-template */
const string p = (*iter)[track_template_columns.path];
bool meta_template = p.substr (0, 11) == "urn:ardour:";
trk_template_desc.set_sensitive(true);
trk_template_desc.set_sensitive (true);
manual_label.set_sensitive(false);
add_label.set_sensitive(false);
type_label.set_sensitive(false);
name_label.set_sensitive(false);
group_label.set_sensitive(false);
strict_io_label.set_sensitive(false);
configuration_label.set_sensitive(false);
mode_label.set_sensitive(false);
manual_label.set_sensitive (false);
add_label.set_sensitive (false);
type_label.set_sensitive (false);
name_label.set_sensitive (!meta_template);
group_label.set_sensitive (false);
strict_io_label.set_sensitive (false);
configuration_label.set_sensitive (false);
mode_label.set_sensitive (false);
routes_spinner.set_sensitive(false);
track_bus_combo.set_sensitive(false);
name_template_entry.set_sensitive(false);
channel_combo.set_sensitive(false);
mode_combo.set_sensitive(false);
instrument_combo.set_sensitive(false);
strict_io_combo.set_sensitive(false);
route_group_combo.set_sensitive(false);
routes_spinner.set_sensitive (!meta_template);
track_bus_combo.set_sensitive (false);
name_template_entry.set_sensitive (!meta_template);
channel_combo.set_sensitive (false);
mode_combo.set_sensitive (false);
instrument_combo.set_sensitive (false);
strict_io_combo.set_sensitive (false);
route_group_combo.set_sensitive (false);
} else {
trk_template_desc.set_sensitive(false);
trk_template_desc.set_sensitive (false);
manual_label.set_sensitive(true);
add_label.set_sensitive(true);
type_label.set_sensitive(true);
name_label.set_sensitive(true);
group_label.set_sensitive(true);
strict_io_label.set_sensitive(true);
manual_label.set_sensitive (true);
add_label.set_sensitive (true);
type_label.set_sensitive (true);
name_label.set_sensitive (true);
group_label.set_sensitive (true);
strict_io_label.set_sensitive (true);
track_bus_combo.set_sensitive(true);
routes_spinner.set_sensitive(true);
name_template_entry.set_sensitive(true);
track_type_chosen();
track_bus_combo.set_sensitive (true);
routes_spinner.set_sensitive (true);
name_template_entry.set_sensitive (true);
track_type_chosen ();
}
}
}
@@ -496,7 +500,6 @@ AddRouteDialog::track_type_chosen ()
}
string
AddRouteDialog::name_template () const
{
@@ -504,7 +507,7 @@ AddRouteDialog::name_template () const
}
bool
AddRouteDialog::name_template_is_default() const
AddRouteDialog::name_template_is_default () const
{
string n = name_template();
@@ -602,20 +605,6 @@ AddRouteDialog::channels ()
return ret;
}
string
AddRouteDialog::track_template ()
{
string str = channel_combo.get_active_text();
for (ChannelSetups::iterator i = channel_setups.begin(); i != channel_setups.end(); ++i) {
if (str == (*i).name) {
return (*i).template_path;
}
}
return string();
}
void
AddRouteDialog::on_show ()
{
@@ -633,8 +622,6 @@ AddRouteDialog::refill_channel_setups ()
{
ChannelSetup chn;
route_templates.clear ();
string channel_current_choice = channel_combo.get_active_text();
channel_combo_strings.clear ();
@@ -648,25 +635,48 @@ AddRouteDialog::refill_channel_setups ()
chn.channels = 2;
channel_setups.push_back (chn);
chn.name = "separator";
channel_setups.push_back (chn);
if (!ARDOUR::Profile->get_mixbus()) {
ARDOUR::find_route_templates (route_templates);
chn.name = "separator";
channel_setups.push_back (chn);
if (!route_templates.empty()) {
vector<string> v;
for (vector<TemplateInfo>::iterator x = route_templates.begin(); x != route_templates.end(); ++x) {
chn.name = x->name;
chn.channels = 0;
chn.template_path = x->path;
channel_setups.push_back (chn);
}
chn.name = _("3 Channel");
chn.channels = 3;
channel_setups.push_back (chn);
chn.name = _("4 Channel");
chn.channels = 4;
channel_setups.push_back (chn);
chn.name = _("5 Channel");
chn.channels = 5;
channel_setups.push_back (chn);
chn.name = _("6 Channel");
chn.channels = 6;
channel_setups.push_back (chn);
chn.name = _("8 Channel");
chn.channels = 8;
channel_setups.push_back (chn);
chn.name = _("12 Channel");
chn.channels = 12;
channel_setups.push_back (chn);
chn.name = _("Custom");
chn.channels = 0;
channel_setups.push_back (chn);
}
for (ChannelSetups::iterator i = channel_setups.begin(); i != channel_setups.end(); ++i) {
channel_combo_strings.push_back ((*i).name);
}
trk_template_model->clear();
//Add any Lua scripts (factory templates) found in the scripts folder
LuaScriptList& ms (LuaScripting::instance ().scripts (LuaScriptInfo::TrackSetup));
/* Add any Lua scripts (factory templates) found in the scripts folder */
LuaScriptList& ms (LuaScripting::instance ().scripts (LuaScriptInfo::TrackSetup));
for (LuaScriptList::const_iterator s = ms.begin(); s != ms.end(); ++s) {
TreeModel::Row row;
if ( (*s)->name == "Add tracks") { //somewhat-special, most-used template
@@ -684,49 +694,25 @@ AddRouteDialog::refill_channel_setups ()
}
}
//Add a special item for "Manual Configuration)
std::vector<ARDOUR::TemplateInfo> route_templates;
ARDOUR::find_route_templates (route_templates);
for (vector<TemplateInfo>::iterator x = route_templates.begin(); x != route_templates.end(); ++x) {
TreeModel::Row row = *(trk_template_model->append ());
row[track_template_columns.name] = x->name;
row[track_template_columns.path] = x->path;
row[track_template_columns.description] = x->description;
row[track_template_columns.created_with] = x->created_with;
}
/* Add a special item for "Manual Configuration" */
TreeModel::Row row = *(trk_template_model->prepend ());
row[track_template_columns.name] = _("Manual Configuration");
row[track_template_columns.path] = "urn:ardour:manual";
row[track_template_columns.description] = _("Use the controls, below, to add tracks.");
row[track_template_columns.created_with] = "";
/* clear template path for the rest */
chn.template_path = "";
chn.name = _("3 Channel");
chn.channels = 3;
channel_setups.push_back (chn);
chn.name = _("4 Channel");
chn.channels = 4;
channel_setups.push_back (chn);
chn.name = _("5 Channel");
chn.channels = 5;
channel_setups.push_back (chn);
chn.name = _("6 Channel");
chn.channels = 6;
channel_setups.push_back (chn);
chn.name = _("8 Channel");
chn.channels = 8;
channel_setups.push_back (chn);
chn.name = _("12 Channel");
chn.channels = 12;
channel_setups.push_back (chn);
chn.name = _("Custom");
chn.channels = 0;
channel_setups.push_back (chn);
for (ChannelSetups::iterator i = channel_setups.begin(); i != channel_setups.end(); ++i) {
channel_combo_strings.push_back ((*i).name);
}
set_popdown_strings (channel_combo, channel_combo_strings);
if (!channel_current_choice.empty()) {

View File

@@ -75,7 +75,6 @@ public:
std::string name_template () const;
bool name_template_is_default () const;
std::string track_template ();
ARDOUR::PluginInfoPtr requested_instrument ();
ARDOUR::TrackMode mode();
@@ -108,8 +107,6 @@ private:
Gtk::ComboBoxText insert_at_combo;
Gtk::ComboBoxText strict_io_combo;
std::vector<ARDOUR::TemplateInfo> route_templates;
void track_type_chosen ();
void refill_channel_setups ();
void refill_route_groups ();
@@ -152,7 +149,6 @@ private:
struct ChannelSetup {
std::string name;
std::string template_path;
uint32_t channels;
};

View File

@@ -4377,9 +4377,9 @@ ARDOUR_UI::add_route_dialog_response (int r)
return;
}
std::string template_name = add_route_dialog->get_template_path();
if (!template_name.empty() && template_name.substr (0, 11) == "urn:ardour:") {
meta_session_setup (template_name.substr (11));
std::string template_path = add_route_dialog->get_template_path();
if (!template_path.empty() && template_path.substr (0, 11) == "urn:ardour:") {
meta_session_setup (template_path.substr (11));
return;
}
@@ -4388,21 +4388,20 @@ ARDOUR_UI::add_route_dialog_response (int r)
}
PresentationInfo::order_t order = translate_order (add_route_dialog->insert_at());
string template_path = add_route_dialog->track_template();
const string name_template = add_route_dialog->name_template ();
DisplaySuspender ds;
if (!template_path.empty()) {
if (add_route_dialog->name_template_is_default()) {
_session->new_route_from_template (count, order, template_path, string());
if (!template_path.empty ()) {
if (add_route_dialog->name_template_is_default ()) {
_session->new_route_from_template (count, order, template_path, string ());
} else {
_session->new_route_from_template (count, order, template_path, add_route_dialog->name_template());
_session->new_route_from_template (count, order, template_path, name_template);
}
return;
}
ChanCount input_chan= add_route_dialog->channels ();
ChanCount output_chan;
string name_template = add_route_dialog->name_template ();
PluginInfoPtr instrument = add_route_dialog->requested_instrument ();
RouteGroup* route_group = add_route_dialog->route_group ();
AutoConnectOption oac = Config->get_output_auto_connect();