#include "pbd/error.h"
#include "pbd/convert.h"
+
#include "gtkmm2ext/utils.h"
+#include "gtkmm2ext/doi.h"
#include "ardour/plugin_manager.h"
#include "ardour/profile.h"
#include "add_route_dialog.h"
#include "route_group_dialog.h"
#include "tooltips.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace Gtk;
using namespace Gtkmm2ext;
, instrument_label (_("Instrument:"))
{
set_name ("AddRouteDialog");
- set_modal (true);
set_skip_taskbar_hint (true);
set_resizable (false);
set_position (WIN_POS_MOUSE);
channel_combo.set_name (X_("ChannelCountSelector"));
mode_combo.set_name (X_("ChannelCountSelector"));
- refill_channel_setups ();
- refill_route_groups ();
refill_track_modes ();
- channel_combo.set_active_text (channel_combo_strings.front());
-
track_bus_combo.append_text (_("Audio Tracks"));
track_bus_combo.append_text (_("MIDI Tracks"));
track_bus_combo.append_text (_("Audio+MIDI Tracks"));
void
AddRouteDialog::channel_combo_changed ()
{
- maybe_update_name_template_entry ();
refill_track_modes ();
}
void
AddRouteDialog::maybe_update_name_template_entry ()
{
- if (
- name_template_entry.get_text() != "" &&
- name_template_entry.get_text() != VCA::default_name_template() &&
- name_template_entry.get_text() != _("Audio") &&
- name_template_entry.get_text() != _("MIDI") &&
- name_template_entry.get_text() != _("Audio+MIDI") &&
- name_template_entry.get_text() != _("Bus")) {
- strict_io_combo.set_sensitive (false);
- return;
- }
-
- strict_io_combo.set_sensitive (true);
-
switch (type_wanted()) {
case AudioTrack:
name_template_entry.set_text (_("Audio"));
mode_label.set_sensitive (true);
instrument_label.set_sensitive (false);
route_group_combo.set_sensitive (true);
+ strict_io_combo.set_sensitive (true);
+ insert_at_combo.set_sensitive (true);
break;
case MidiTrack:
channel_combo.set_sensitive (false);
mode_label.set_sensitive (false);
instrument_label.set_sensitive (true);
route_group_combo.set_sensitive (true);
+ strict_io_combo.set_sensitive (true);
+ insert_at_combo.set_sensitive (true);
break;
case MixedTrack:
{
mode_label.set_sensitive (true);
instrument_label.set_sensitive (true);
route_group_combo.set_sensitive (true);
+ strict_io_combo.set_sensitive (true);
+ insert_at_combo.set_sensitive (true);
break;
case AudioBus:
mode_combo.set_sensitive (false);
mode_label.set_sensitive (true);
instrument_label.set_sensitive (false);
route_group_combo.set_sensitive (true);
+ strict_io_combo.set_sensitive (true);
+ insert_at_combo.set_sensitive (true);
break;
case VCAMaster:
mode_combo.set_sensitive (false);
mode_label.set_sensitive (false);
instrument_label.set_sensitive (false);
route_group_combo.set_sensitive (false);
+ strict_io_combo.set_sensitive (false);
+ insert_at_combo.set_sensitive (false);
break;
case MidiBus:
mode_combo.set_sensitive (false);
configuration_label.set_sensitive (false);
mode_label.set_sensitive (true);
instrument_label.set_sensitive (true);
+ strict_io_combo.set_sensitive (true);
+ insert_at_combo.set_sensitive (true);
break;
}
ChannelSetup chn;
route_templates.clear ();
+
+ string channel_current_choice = channel_combo.get_active_text();
+
channel_combo_strings.clear ();
channel_setups.clear ();
}
set_popdown_strings (channel_combo, channel_combo_strings);
- channel_combo.set_active_text (channel_combo_strings.front());
+
+ if (!channel_current_choice.empty()) {
+ channel_combo.set_active_text (channel_current_choice);
+ } else {
+ channel_combo.set_active_text (channel_combo_strings.front());
+ }
}
void
{
if (_session && route_group_combo.get_active_text () == _("New Group...")) {
RouteGroup* g = new RouteGroup (*_session, "");
- RouteGroupDialog d (g, true);
-
- if (d.do_run ()) {
- delete g;
- route_group_combo.set_active (2);
- } else {
- if (_session) {
- _session->add_route_group (g);
- }
- add_route_group (g);
- route_group_combo.set_active (3);
+ RouteGroupDialog* d = new RouteGroupDialog (g, true);
+
+ d->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &AddRouteDialog::new_group_dialog_finished), d));
+ d->present();
+ }
+}
+
+void
+AddRouteDialog::new_group_dialog_finished (int r, RouteGroupDialog* d)
+{
+ if (r == RESPONSE_OK) {
+
+ if (!d->name_check()) {
+ return;
+ }
+
+ if (_session) {
+ _session->add_route_group (d->group());
}
+
+ add_route_group (d->group());
+ route_group_combo.set_active (3);
+ } else {
+ delete d->group ();
+ route_group_combo.set_active (2);
}
+
+ delete_when_idle (d);
}
-AddRouteDialog::InsertAt
+RouteDialogs::InsertAt
AddRouteDialog::insert_at ()
{
+ using namespace RouteDialogs;
+
std::string str = insert_at_combo.get_active_text();
if (str == _("First")) {