Found another one -- does this ever end? :)
[ardour.git] / gtk2_ardour / rc_option_editor.cc
index dfed91eecd6ceec3c8391285faacbf48fedc39d0..c906e96c66dc03ff9dc8a86e3b73c1857c4d088e 100644 (file)
@@ -1329,10 +1329,10 @@ class ControlSurfacesOptions : public OptionEditorMiniPage
                {
                        _store = ListStore::create (_model);
                        _view.set_model (_store);
-                       _view.append_column (_("Control Surface Protocol"), _model.name);
-                       _view.get_column(0)->set_resizable (true);
-                       _view.get_column(0)->set_expand (true);
                        _view.append_column_editable (_("Enable"), _model.enabled);
+                       _view.append_column (_("Control Surface Protocol"), _model.name);
+                       _view.get_column(1)->set_resizable (true);
+                       _view.get_column(1)->set_expand (true);
 
                        Gtk::HBox* edit_box = manage (new Gtk::HBox);
                        edit_box->set_spacing(3);
@@ -1823,7 +1823,7 @@ private:
 class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
 {
        public:
-               MidiPortOptions() {
+               MidiPortOptions() : refill_id (-1) {
 
                        setup_midi_port_view (midi_output_view, false);
                        setup_midi_port_view (midi_input_view, true);
@@ -1853,13 +1853,15 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
                        midi_output_view.show ();
                        midi_input_view.show ();
 
-                       table.signal_show().connect (sigc::mem_fun (*this, &MidiPortOptions::on_show));
+                       table.signal_map().connect (sigc::mem_fun (*this, &MidiPortOptions::on_map));
+                       table.signal_unmap().connect (sigc::mem_fun (*this, &MidiPortOptions::on_unmap));
                }
 
                void parameter_changed (string const&) {}
                void set_state_from_config() {}
 
-               void on_show () {
+               void on_map () {
+
                        refill ();
 
                        AudioEngine::instance()->PortRegisteredOrUnregistered.connect (connections,
@@ -1876,6 +1878,10 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
                                        gui_context());
                }
 
+               void on_unmap () {
+                       connections.drop_connections ();
+               }
+
                void refill () {
 
                        if (refill_midi_ports (true, midi_input_view)) {
@@ -1888,6 +1894,8 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
                        } else {
                                output_label.hide ();
                        }
+
+                       refill_id = -1;
                }
 
        private:
@@ -1901,7 +1909,8 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
                                add (music_data);
                                add (control_data);
                                add (selection);
-                               add (name);
+                               add (fullname);
+                               add (shortname);
                                add (filler);
                        }
 
@@ -1909,7 +1918,8 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
                        Gtk::TreeModelColumn<bool> music_data;
                        Gtk::TreeModelColumn<bool> control_data;
                        Gtk::TreeModelColumn<bool> selection;
-                       Gtk::TreeModelColumn<std::string> name;
+                       Gtk::TreeModelColumn<std::string> fullname;
+                       Gtk::TreeModelColumn<std::string> shortname;
                        Gtk::TreeModelColumn<std::string> filler;
                };
 
@@ -1918,6 +1928,7 @@ class MidiPortOptions : public OptionEditorMiniPage, public sigc::trackable
                Gtk::TreeView midi_output_view;
                Gtk::Label input_label;
                Gtk::Label output_label;
+               int refill_id;
 
                void setup_midi_port_view (Gtk::TreeView&, bool with_selection);
                bool refill_midi_ports (bool for_input, Gtk::TreeView&);
@@ -1937,7 +1948,7 @@ MidiPortOptions::setup_midi_port_view (Gtk::TreeView& view, bool with_selection)
        TreeViewColumn* col;
        Gtk::Label* l;
 
-       pretty_name_column = view.append_column_editable (_("Name (click to edit)"), midi_port_columns.pretty_name) - 1;
+       pretty_name_column = view.append_column_editable (_("Name (click twice to edit)"), midi_port_columns.pretty_name) - 1;
 
        col = manage (new TreeViewColumn ("", midi_port_columns.music_data));
        col->set_alignment (ALIGN_CENTER);
@@ -1987,8 +1998,8 @@ MidiPortOptions::setup_midi_port_view (Gtk::TreeView& view, bool with_selection)
                toggle_cell->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &MidiPortOptions::midi_selection_column_toggled), &view));
        }
 
-       view.get_selection()->set_mode (SELECTION_NONE);
-       view.set_tooltip_column (4); /* port "real" name */
+       view.get_selection()->set_mode (SELECTION_SINGLE);
+       view.set_tooltip_column (5); /* port short name */
        view.get_column(0)->set_resizable (true);
        view.get_column(0)->set_expand (true);
 }
@@ -2017,8 +2028,7 @@ MidiPortOptions::refill_midi_ports (bool for_input, Gtk::TreeView& view)
 
                PortManager::MidiPortInformation mpi (AudioEngine::instance()->midi_port_information (*s));
 
-               if (mpi.pretty_name.empty()) {
-                       /* vanished since get_known_midi_ports() */
+               if (!mpi.exists) {
                        continue;
                }
 
@@ -2032,7 +2042,8 @@ MidiPortOptions::refill_midi_ports (bool for_input, Gtk::TreeView& view)
                row[midi_port_columns.music_data] = mpi.properties & MidiPortMusic;
                row[midi_port_columns.control_data] = mpi.properties & MidiPortControl;
                row[midi_port_columns.selection] = mpi.properties & MidiPortSelection;
-               row[midi_port_columns.name] = *s;
+               row[midi_port_columns.fullname] = *s;
+               row[midi_port_columns.shortname] = AudioEngine::instance()->short_port_name_from_port_name (*s);
        }
 
        view.set_model (model);
@@ -2054,9 +2065,9 @@ MidiPortOptions::midi_music_column_toggled (string const & path, TreeView* view)
        /* don't reset model - wait for MidiPortInfoChanged signal */
 
        if (new_value) {
-               ARDOUR::AudioEngine::instance()->add_midi_port_flags ((*iter)[midi_port_columns.name], MidiPortMusic);
+               ARDOUR::AudioEngine::instance()->add_midi_port_flags ((*iter)[midi_port_columns.fullname], MidiPortMusic);
        } else {
-               ARDOUR::AudioEngine::instance()->remove_midi_port_flags ((*iter)[midi_port_columns.name], MidiPortMusic);
+               ARDOUR::AudioEngine::instance()->remove_midi_port_flags ((*iter)[midi_port_columns.fullname], MidiPortMusic);
        }
 }
 
@@ -2074,9 +2085,9 @@ MidiPortOptions::midi_control_column_toggled (string const & path, TreeView* vie
        /* don't reset model - wait for MidiPortInfoChanged signal */
 
        if (new_value) {
-               ARDOUR::AudioEngine::instance()->add_midi_port_flags ((*iter)[midi_port_columns.name], MidiPortControl);
+               ARDOUR::AudioEngine::instance()->add_midi_port_flags ((*iter)[midi_port_columns.fullname], MidiPortControl);
        } else {
-               ARDOUR::AudioEngine::instance()->remove_midi_port_flags ((*iter)[midi_port_columns.name], MidiPortControl);
+               ARDOUR::AudioEngine::instance()->remove_midi_port_flags ((*iter)[midi_port_columns.fullname], MidiPortControl);
        }
 }
 
@@ -2094,9 +2105,9 @@ MidiPortOptions::midi_selection_column_toggled (string const & path, TreeView* v
        /* don't reset model - wait for MidiSelectionPortsChanged signal */
 
        if (new_value) {
-               ARDOUR::AudioEngine::instance()->add_midi_port_flags ((*iter)[midi_port_columns.name], MidiPortSelection);
+               ARDOUR::AudioEngine::instance()->add_midi_port_flags ((*iter)[midi_port_columns.fullname], MidiPortSelection);
        } else {
-               ARDOUR::AudioEngine::instance()->remove_midi_port_flags ((*iter)[midi_port_columns.name], MidiPortSelection);
+               ARDOUR::AudioEngine::instance()->remove_midi_port_flags ((*iter)[midi_port_columns.fullname], MidiPortSelection);
        }
 }
 
@@ -2109,7 +2120,7 @@ MidiPortOptions::pretty_name_edit (std::string const & path, string const & new_
                return;
        }
 
-       AudioEngine::instance()->set_midi_port_pretty_name ((*iter)[midi_port_columns.name], new_text);
+       AudioEngine::instance()->set_port_pretty_name ((*iter)[midi_port_columns.fullname], new_text);
 }
 
 /*============*/
@@ -2437,7 +2448,7 @@ RCOptionEditor::RCOptionEditor ()
        add_option (_("Editor"), fadeshape);
 
        ComboOption<RegionEquivalence> *eqv = new ComboOption<RegionEquivalence> (
-                    "region-equivalence",
+                    "region-equivalency",
                     _("Regions in active edit groups are edited together"),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::get_region_equivalence),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_region_equivalence)
@@ -2446,6 +2457,7 @@ RCOptionEditor::RCOptionEditor ()
        eqv->add (Overlap, _("whenever they overlap in time"));
        eqv->add (Enclosed, _("if either encloses the other"));
        eqv->add (Exact, _("only if they have identical length, position and origin"));
+       eqv->add (LayerTime, _("only if they have identical length, position and layer"));
 
        add_option (_("Editor"), eqv);
 
@@ -2905,33 +2917,6 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_sound_midi_notes)
                     ));
 
-       ComboOption<std::string>* audition_synth = new ComboOption<std::string> (
-               "midi-audition-synth-uri",
-               _("MIDI Audition Synth (LV2)"),
-               sigc::mem_fun (*_rc_config, &RCConfiguration::get_midi_audition_synth_uri),
-               sigc::mem_fun (*_rc_config, &RCConfiguration::set_midi_audition_synth_uri)
-               );
-
-       audition_synth->add(X_(""), _("None"));
-       PluginInfoList all_plugs;
-       PluginManager& manager (PluginManager::instance());
-#ifdef LV2_SUPPORT
-       all_plugs.insert (all_plugs.end(), manager.lv2_plugin_info().begin(), manager.lv2_plugin_info().end());
-
-       for (PluginInfoList::const_iterator i = all_plugs.begin(); i != all_plugs.end(); ++i) {
-               if (manager.get_status (*i) == PluginManager::Hidden) continue;
-               if (!(*i)->is_instrument()) continue;
-               if ((*i)->type != ARDOUR::LV2) continue;
-               if ((*i)->name.length() > 46) {
-                       audition_synth->add((*i)->unique_id, (*i)->name.substr (0, 44) + "...");
-               } else {
-                       audition_synth->add((*i)->unique_id, (*i)->name);
-               }
-       }
-#endif
-
-       add_option (_("MIDI"), audition_synth);
-
        /* Click */
 
        add_option (_("Metronome"), new OptionEditorHeading (_("Metronome")));
@@ -3276,7 +3261,6 @@ RCOptionEditor::RCOptionEditor ()
 
        add_option (_("Sync/LTC"), _ltc_volume_slider);
 
-
        add_option (_("Sync/MIDI"), new OptionEditorHeading (_("MIDI Beat Clock (Mclk) Generator")));
 
        add_option (_("Sync/MIDI"),
@@ -3682,6 +3666,19 @@ RCOptionEditor::RCOptionEditor ()
                        sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_color_regions_using_track_color)
                        ));
 
+#ifndef MIXBUS // hide this setting in Mixbus. Always on, 4px
+       ComboOption<uint32_t>* gap = new ComboOption<uint32_t> (
+                    "vertical-region-gap",
+                    _("Add a visual gap below Audio Regions"),
+                    sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_vertical_region_gap),
+                    sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_vertical_region_gap)
+                    );
+       gap->add (0, _("None"));
+       gap->add (2, _("Small"));
+       gap->add (4, _("Large"));
+       add_option (_("Appearance/Editor"), gap);
+#endif
+
        add_option (_("Appearance/Editor"), new OptionEditorHeading (_("Waveforms")));
 
        if (!Profile->get_mixbus()) {
@@ -4026,7 +4023,6 @@ These settings will only take effect after %1 is restarted.\n\
        //trigger some parameter-changed messages which affect widget-visibility or -sensitivity
        parameter_changed ("send-ltc");
        parameter_changed ("sync-source");
-       parameter_changed ("use-monitor-bus");
        parameter_changed ("open-gui-after-adding-plugin");
 
        XMLNode* node = ARDOUR_UI::instance()->preferences_settings();
@@ -4056,7 +4052,7 @@ RCOptionEditor::parameter_changed (string const & p)
                bool const s = Config->get_use_monitor_bus ();
                if (!s) {
                        /* we can't use this if we don't have a monitor bus */
-                       Config->set_solo_control_is_listen_control (false);
+                       Config->set_solo_control_is_listen_control (false); // XXX
                }
                _solo_control_is_listen_control->set_sensitive (s);
                _listen_position->set_sensitive (s);