From 7590b859fd0f836c624394c674aac09f812b3cfb Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 27 Feb 2011 01:59:04 +0000 Subject: Allow naming of new tracks/busses in the add route dialogue (#3376). git-svn-id: svn://localhost/ardour2/branches/3.0@8976 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/add_route_dialog.cc | 53 +++++++++++++++++++++++++++++++---------- gtk2_ardour/add_route_dialog.h | 1 + gtk2_ardour/ardour_ui.cc | 24 ++++++++++++------- gtk2_ardour/ardour_ui.h | 36 +++++++++++++++++++++------- 4 files changed, 85 insertions(+), 29 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc index 95ee556ebe..1f7239f6e9 100644 --- a/gtk2_ardour/add_route_dialog.cc +++ b/gtk2_ardour/add_route_dialog.cc @@ -130,27 +130,37 @@ AddRouteDialog::AddRouteDialog (Session* s) l->set_padding (8, 0); table2->attach (*l, 0, 1, 0, 3, Gtk::FILL, Gtk::FILL, 0, 0); + int n = 0; + + l = manage (new Label (_("Name:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); + table2->attach (*l, 1, 2, n, n + 1, Gtk::FILL, Gtk::EXPAND, 0, 0); + table2->attach (name_template_entry, 2, 3, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + ++n; + /* Route configuration */ l = manage (new Label (_("Configuration:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); - table2->attach (*l, 1, 2, 0, 1, Gtk::FILL, Gtk::EXPAND, 0, 0); - table2->attach (channel_combo, 2, 3, 0, 1, Gtk::FILL, Gtk::EXPAND & Gtk::FILL, 0, 0); + table2->attach (*l, 1, 2, n, n + 1, Gtk::FILL, Gtk::EXPAND, 0, 0); + table2->attach (channel_combo, 2, 3, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + ++n; if (!ARDOUR::Profile->get_sae ()) { /* Track mode */ mode_label.set_alignment (Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER); - table2->attach (mode_label, 1, 2, 1, 2, Gtk::FILL, Gtk::EXPAND, 0, 0); - table2->attach (mode_combo, 2, 3, 1, 2, Gtk::FILL, Gtk::EXPAND & Gtk::FILL, 0, 0); + table2->attach (mode_label, 1, 2, n, n + 1, Gtk::FILL, Gtk::EXPAND, 0, 0); + table2->attach (mode_combo, 2, 3, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + ++n; } /* Group choice */ l = manage (new Label (_("Group:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); - table2->attach (*l, 1, 2, 2, 3, Gtk::FILL, Gtk::EXPAND, 0, 0); - table2->attach (route_group_combo, 2, 3, 2, 3, Gtk::FILL, Gtk::EXPAND & Gtk::FILL, 0, 0); + table2->attach (*l, 1, 2, n, n + 1, Gtk::FILL, Gtk::EXPAND, 0, 0); + table2->attach (route_group_combo, 2, 3, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + ++n; options_box->pack_start (*table2, false, true); vbox->pack_start (*options_box, false, true); @@ -158,6 +168,7 @@ AddRouteDialog::AddRouteDialog (Session* s) get_vbox()->pack_start (*vbox, false, false); track_bus_combo.signal_changed().connect (sigc::mem_fun (*this, &AddRouteDialog::track_type_chosen)); + channel_combo.signal_changed().connect (sigc::mem_fun (*this, &AddRouteDialog::maybe_update_name_template_entry)); channel_combo.set_row_separator_func (sigc::mem_fun (*this, &AddRouteDialog::channel_separator)); route_group_combo.set_row_separator_func (sigc::mem_fun (*this, &AddRouteDialog::route_separator)); route_group_combo.signal_changed ().connect (sigc::mem_fun (*this, &AddRouteDialog::group_changed)); @@ -179,18 +190,34 @@ AddRouteDialog::~AddRouteDialog () } void -AddRouteDialog::track_type_chosen () +AddRouteDialog::maybe_update_name_template_entry () { - if (track()) { - mode_label.set_text (_("Track mode:")); - set_popdown_strings (mode_combo, track_mode_strings); - mode_combo.set_sensitive (true); - mode_combo.set_active_text (track_mode_strings.front()); + if ( + name_template_entry.get_text() != "" && + name_template_entry.get_text() != _("Audio") && + name_template_entry.get_text() != _("MIDI") && + name_template_entry.get_text() != _("Bus")) { + return; + } + + if (track ()) { + if (type () == DataType::MIDI) { + name_template_entry.set_text (_("MIDI")); + } else { + name_template_entry.set_text (_("Audio")); + } } else { - mode_combo.set_sensitive (false); + name_template_entry.set_text (_("Bus")); } } +void +AddRouteDialog::track_type_chosen () +{ + mode_combo.set_sensitive (track ()); + maybe_update_name_template_entry (); +} + bool AddRouteDialog::track () { diff --git a/gtk2_ardour/add_route_dialog.h b/gtk2_ardour/add_route_dialog.h index bc0434e461..9d4d89906a 100644 --- a/gtk2_ardour/add_route_dialog.h +++ b/gtk2_ardour/add_route_dialog.h @@ -75,6 +75,7 @@ class AddRouteDialog : public ArdourDialog void group_changed (); bool channel_separator (const Glib::RefPtr &m, const Gtk::TreeModel::iterator &i); bool route_separator (const Glib::RefPtr &m, const Gtk::TreeModel::iterator &i); + void maybe_update_name_template_entry (); void reset_template_option_visibility (); diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index d98be0ae7f..bfe8458b62 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1334,7 +1334,7 @@ ARDOUR_UI::open_session () void -ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t how_many) +ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t how_many, string const & name_template) { list > tracks; @@ -1346,7 +1346,7 @@ ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t try { if (disk) { - tracks = _session->new_midi_track (ARDOUR::Normal, route_group, how_many); + tracks = _session->new_midi_track (ARDOUR::Normal, route_group, how_many, name_template); if (tracks.size() != how_many) { if (how_many == 1) { @@ -1374,7 +1374,15 @@ restart JACK with more ports."), PROGRAM_NAME)); void -ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode, RouteGroup* route_group, uint32_t how_many) +ARDOUR_UI::session_add_audio_route ( + bool track, + int32_t input_channels, + int32_t output_channels, + ARDOUR::TrackMode mode, + RouteGroup* route_group, + uint32_t how_many, + string const & name_template + ) { list > tracks; RouteList routes; @@ -1386,7 +1394,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, route_group, how_many); + tracks = _session->new_audio_track (input_channels, output_channels, mode, route_group, how_many, name_template); if (tracks.size() != how_many) { if (how_many == 1) { @@ -1399,7 +1407,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, route_group, how_many); + routes = _session->new_audio_route (input_channels, output_channels, route_group, how_many, name_template); if (routes.size() != how_many) { if (how_many == 1) { @@ -3219,7 +3227,7 @@ ARDOUR_UI::add_route (Gtk::Window* float_window) if (add_route_dialog->type() == ARDOUR::DataType::MIDI) { if (track) { - session_add_midi_track (route_group, count); + session_add_midi_track (route_group, count, name_template); } else { MessageDialog msg (*editor, _("Sorry, MIDI Busses are not supported at this time.")); @@ -3228,9 +3236,9 @@ ARDOUR_UI::add_route (Gtk::Window* float_window) } } else { if (track) { - session_add_audio_track (input_chan, output_chan, add_route_dialog->mode(), route_group, count); + session_add_audio_track (input_chan, output_chan, add_route_dialog->mode(), route_group, count, name_template); } else { - session_add_audio_bus (input_chan, output_chan, route_group, count); + session_add_audio_bus (input_chan, output_chan, route_group, count, name_template); } } } diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 03eaf1379b..d38dabc085 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -204,16 +204,36 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void add_route (Gtk::Window* float_window); - void session_add_audio_track (int input_channels, int32_t output_channels, ARDOUR::TrackMode mode, ARDOUR::RouteGroup* route_group, uint32_t how_many) { - session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many); + void session_add_audio_track ( + int input_channels, + int32_t output_channels, + ARDOUR::TrackMode mode, + ARDOUR::RouteGroup* route_group, + uint32_t how_many, + std::string const & name_template + ) { + + session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template); } - void session_add_audio_bus (int input_channels, int32_t output_channels, ARDOUR::RouteGroup* route_group, uint32_t how_many) { - session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many); + void session_add_audio_bus ( + int input_channels, + int32_t output_channels, + ARDOUR::RouteGroup* route_group, + uint32_t how_many, + std::string const & name_template + ) { + + session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template); } - void session_add_midi_track (ARDOUR::RouteGroup* route_group, uint32_t how_many) { - session_add_midi_route (true, route_group, how_many); + void session_add_midi_track ( + ARDOUR::RouteGroup* route_group, + uint32_t how_many, + std::string const & name_template + ) { + + session_add_midi_route (true, route_group, how_many, name_template); } /*void session_add_midi_bus () { @@ -549,8 +569,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void edit_metadata (); void import_metadata (); - 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 session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &); + void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &); void set_transport_sensitivity (bool); -- cgit v1.2.3