refactor level-meter widget: 5x2 stops meter colors
[ardour.git] / gtk2_ardour / rc_option_editor.cc
index 4bab2304a1729e83e3375b9b62952688b55aad24..da0e55c7a2e8f849bb6f8ad54b653375c74ce266 100644 (file)
@@ -105,10 +105,7 @@ private:
 
        void click_browse_clicked ()
        {
-               SoundFileChooser sfdb (*_parent, _("Choose Click"));
-
-               sfdb.show_all ();
-               sfdb.present ();
+               SoundFileChooser sfdb (_("Choose Click"));
 
                if (sfdb.run () == RESPONSE_OK) {
                        click_chosen (sfdb.get_filename());
@@ -128,7 +125,7 @@ private:
        
        void click_emphasis_browse_clicked ()
        {
-               SoundFileChooser sfdb (*_parent, _("Choose Click Emphasis"));
+               SoundFileChooser sfdb (_("Choose Click Emphasis"));
 
                sfdb.show_all ();
                sfdb.present ();
@@ -395,7 +392,7 @@ public:
                        }
                }
 
-               l = manage (left_aligned_label (_("Toggle snap using:")));
+               l = manage (left_aligned_label (_("Ignore snap using:")));
                l->set_name ("OptionsLabel");
 
                t->attach (*l, 0, 1, 3, 4, FILL | EXPAND, FILL);
@@ -532,7 +529,7 @@ public:
                _dpi_adjustment (50, 50, 250, 1, 10),
                _dpi_slider (_dpi_adjustment)
        {
-               _dpi_adjustment.set_value (_rc_config->get_font_scale () / 1024);
+               _dpi_adjustment.set_value (floor (_rc_config->get_font_scale () / 1024));
 
                Label* l = manage (new Label (_("Font scaling:")));
                l->set_name ("OptionsLabel");
@@ -551,7 +548,7 @@ public:
        void parameter_changed (string const & p)
        {
                if (p == "font-scale") {
-                       _dpi_adjustment.set_value (_rc_config->get_font_scale() / 1024);
+                       _dpi_adjustment.set_value (floor (_rc_config->get_font_scale() / 1024));
                }
        }
 
@@ -656,7 +653,7 @@ public:
        {
                _store = ListStore::create (_model);
                _view.set_model (_store);
-               _view.append_column (_("Name"), _model.name);
+               _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 (_("Enabled"), _model.enabled);
@@ -812,6 +809,124 @@ private:
         PBD::ScopedConnection protocol_status_connection;
 };
 
+class VideoTimelineOptions : public OptionEditorBox
+{
+public:
+       VideoTimelineOptions (RCConfiguration* c)
+               : _rc_config (c)
+               , _show_video_export_info_button (_("Show Video Export Info before export"))
+               , _show_video_server_dialog_button (_("Show Video Server Startup Dialog"))
+               , _video_advanced_setup_button (_("Advanced Setup (remote video server)"))
+       {
+               Table* t = manage (new Table (2, 6));
+               t->set_spacings (4);
+
+               t->attach (_video_advanced_setup_button, 0, 2, 0, 1);
+               _video_advanced_setup_button.signal_toggled().connect (sigc::mem_fun (*this, &VideoTimelineOptions::video_advanced_setup_toggled));
+               Gtkmm2ext::UI::instance()->set_tip (_video_advanced_setup_button,
+                                           _("<b>When enabled</b> you can speficify a custom video-server URL and docroot. - Do not enable this option unless you know what you are doing."));
+
+               Label* l = manage (new Label (_("Video Server URL:")));
+               l->set_alignment (0, 0.5);
+               t->attach (*l, 0, 1, 1, 2, FILL);
+               t->attach (_video_server_url_entry, 1, 2, 1, 2, FILL);
+               Gtkmm2ext::UI::instance()->set_tip (_video_server_url_entry,
+                                           _("Base URL of the video-server including http prefix. This is usually 'http://hostname.example.org:1554/' and defaults to 'http://localhost:1554/' when the video-server is runing locally"));
+
+               l = manage (new Label (_("Video Folder:")));
+               l->set_alignment (0, 0.5);
+               t->attach (*l, 0, 1, 2, 3, FILL);
+               t->attach (_video_server_docroot_entry, 1, 2, 2, 3);
+               Gtkmm2ext::UI::instance()->set_tip (_video_server_docroot_entry,
+                                           _("Local path to the video-server document-root. Only files below this directory will be accessible by the video-server. If the server run on a remote host, it should point to a network mounted folder of the server's docroot or be left empty if it is unvailable. It is used for the local video-monitor and file-browsing when opening/adding a video file."));
+
+               /* small vspace  y=3..4 */
+
+               t->attach (_show_video_export_info_button, 0, 2, 4, 5);
+               _show_video_export_info_button.signal_toggled().connect (sigc::mem_fun (*this, &VideoTimelineOptions::show_video_export_info_toggled));
+               Gtkmm2ext::UI::instance()->set_tip (_show_video_export_info_button,
+                                           _("<b>When enabled</b> an information window with details is displayed before the video-export dialog."));
+
+               t->attach (_show_video_server_dialog_button, 0, 2, 5, 6);
+               _show_video_server_dialog_button.signal_toggled().connect (sigc::mem_fun (*this, &VideoTimelineOptions::show_video_server_dialog_toggled));
+               Gtkmm2ext::UI::instance()->set_tip (_show_video_server_dialog_button,
+                                           _("<b>When enabled</b> the video server is never launched automatically without confirmation"));
+
+               _video_server_url_entry.signal_changed().connect (sigc::mem_fun(*this, &VideoTimelineOptions::server_url_changed));
+               _video_server_url_entry.signal_activate().connect (sigc::mem_fun(*this, &VideoTimelineOptions::server_url_changed));
+               _video_server_docroot_entry.signal_changed().connect (sigc::mem_fun(*this, &VideoTimelineOptions::server_docroot_changed));
+               _video_server_docroot_entry.signal_activate().connect (sigc::mem_fun(*this, &VideoTimelineOptions::server_docroot_changed));
+
+               _box->pack_start (*t,true,true);
+       }
+
+       void server_url_changed ()
+       {
+               _rc_config->set_video_server_url (_video_server_url_entry.get_text());
+       }
+
+       void server_docroot_changed ()
+       {
+               _rc_config->set_video_server_docroot (_video_server_docroot_entry.get_text());
+       }
+
+       void show_video_export_info_toggled ()
+       {
+               bool const x = _show_video_export_info_button.get_active ();
+               _rc_config->set_show_video_export_info (x);
+       }
+
+       void show_video_server_dialog_toggled ()
+       {
+               bool const x = _show_video_server_dialog_button.get_active ();
+               _rc_config->set_show_video_server_dialog (x);
+       }
+
+       void video_advanced_setup_toggled ()
+       {
+               bool const x = _video_advanced_setup_button.get_active ();
+               _rc_config->set_video_advanced_setup(x);
+       }
+
+       void parameter_changed (string const & p)
+       {
+               if (p == "video-server-url") {
+                       _video_server_url_entry.set_text (_rc_config->get_video_server_url());
+               } else if (p == "video-server-docroot") {
+                       _video_server_docroot_entry.set_text (_rc_config->get_video_server_docroot());
+               } else if (p == "show-video-export-info") {
+                       bool const x = _rc_config->get_show_video_export_info();
+                       _show_video_export_info_button.set_active (x);
+               } else if (p == "show-video-server-dialog") {
+                       bool const x = _rc_config->get_show_video_server_dialog();
+                       _show_video_server_dialog_button.set_active (x);
+               } else if (p == "video-advanced-setup") {
+                       bool const x = _rc_config->get_video_advanced_setup();
+                       _video_advanced_setup_button.set_active(x);
+                       _video_server_docroot_entry.set_sensitive(x);
+                       _video_server_url_entry.set_sensitive(x);
+               }
+       }
+
+       void set_state_from_config ()
+       {
+               parameter_changed ("video-server-url");
+               parameter_changed ("video-server-docroot");
+               parameter_changed ("video-monitor-setup-dialog");
+               parameter_changed ("show-video-export-info");
+               parameter_changed ("show-video-server-dialog");
+               parameter_changed ("video-advanced-setup");
+       }
+
+private:
+       RCConfiguration* _rc_config;
+       Entry _video_server_url_entry;
+       Entry _video_server_docroot_entry;
+       CheckButton _show_video_export_info_button;
+       CheckButton _show_video_server_dialog_button;
+       CheckButton _video_advanced_setup_button;
+};
+
 /** A class which allows control of visibility of some editor components usign
  *  a VisibilityGroup.  The caller should pass in a `dummy' VisibilityGroup
  *  which has the correct members, but with null widget pointers.  This
@@ -873,6 +988,7 @@ private:
 };
 
 
+
 RCOptionEditor::RCOptionEditor ()
        : OptionEditor (Config, string_compose (_("%1 Preferences"), PROGRAM_NAME))
         , _rc_config (Config)
@@ -881,6 +997,8 @@ RCOptionEditor::RCOptionEditor ()
        /* MISC */
 
         uint32_t hwcpus = hardware_concurrency ();
+       BoolOption* bo;
+       BoolComboOption* bco;
 
         if (hwcpus > 1) {
                 add_option (_("Misc"), new OptionEditorHeading (_("DSP CPU Utilization")));
@@ -973,6 +1091,15 @@ RCOptionEditor::RCOptionEditor ()
                     0, 1000, 1, 20
                     ));
 
+       add_option (_("Misc"),
+            new SpinOption<double> (
+                    "automation-interval-msecs",
+                    _("Automation sampling interval (milliseconds)"),
+                    sigc::mem_fun (*_rc_config, &RCConfiguration::get_automation_interval_msecs),
+                    sigc::mem_fun (*_rc_config, &RCConfiguration::set_automation_interval_msecs),
+                    1, 1000, 1, 20
+                    ));
+
        /* TRANSPORT */
 
        BoolOption* tsf;
@@ -992,7 +1119,9 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::get_stop_recording_on_xrun),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_stop_recording_on_xrun)
                     );
-       Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), _("<b>When enabled</b> Ardour will stop recording if an over- or underrun is detected by the audio engine"));
+       Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), 
+                                           string_compose (_("<b>When enabled</b> %1 will stop recording if an over- or underrun is detected by the audio engine"),
+                                                           PROGRAM_NAME));
        add_option (_("Transport"), tsf);
 
        tsf = new BoolOption (
@@ -1010,9 +1139,11 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::get_stop_at_session_end),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_stop_at_session_end)
                     );
-       Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), _("<b>When enabled</b> if Ardour is <b>not recording</b>, it will stop the transport "
-                                                  "when it reaches the current session end marker\n\n"
-                                                  "<b>When disabled</b> Ardour will continue to roll past the session end marker at all times"));
+       Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), 
+                                           string_compose (_("<b>When enabled</b> if %1 is <b>not recording</b>, it will stop the transport "
+                                                             "when it reaches the current session end marker\n\n"
+                                                             "<b>When disabled</b> %1 will continue to roll past the session end marker at all times"),
+                                                           PROGRAM_NAME));
        add_option (_("Transport"), tsf);
 
        tsf = new BoolOption (
@@ -1021,10 +1152,11 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::get_seamless_loop),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_seamless_loop)
                     );
-       Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), _("<b>When enabled</b> this will loop by reading ahead and wrapping around at the loop point, "
-                                                  "preventing any need to do a transport locate at the end of the loop\n\n"
-                                                  "<b>When disabled</b> looping is done by locating back to the start of the loop when Ardour reaches the end "
-                                                  "which will often cause a small click or delay"));
+       Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), 
+                                           string_compose (_("<b>When enabled</b> this will loop by reading ahead and wrapping around at the loop point, "
+                                                             "preventing any need to do a transport locate at the end of the loop\n\n"
+                                                             "<b>When disabled</b> looping is done by locating back to the start of the loop when %1 reaches the end "
+                                                             "which will often cause a small click or delay"), PROGRAM_NAME));
        add_option (_("Transport"), tsf);
 
        tsf = new BoolOption (
@@ -1066,11 +1198,11 @@ RCOptionEditor::RCOptionEditor ()
                     );
        Gtkmm2ext::UI::instance()->set_tip 
                (_sync_framerate->tip_widget(),
-                _("This option controls the value of the video frame rate <i>while chasing</i> an external timecode source.\n\n"
-                  "<b>When enabled</b> the session video frame rate will be changed to match that of the selected external timecode source.\n\n"
-                  "<b>When disabled</b> the session video frame rate will not be changed to match that of the selected external timecode source."
-                  "Instead the frame rate indication in the main clock will flash red and Ardour will convert between the external "
-                  "timecode standard and the session standard."));
+                string_compose (_("This option controls the value of the video frame rate <i>while chasing</i> an external timecode source.\n\n"
+                                  "<b>When enabled</b> the session video frame rate will be changed to match that of the selected external timecode source.\n\n"
+                                  "<b>When disabled</b> the session video frame rate will not be changed to match that of the selected external timecode source."
+                                  "Instead the frame rate indication in the main clock will flash red and %1 will convert between the external "
+                                  "timecode standard and the session standard."), PROGRAM_NAME));
 
        add_option (_("Transport"), _sync_framerate);
 
@@ -1099,7 +1231,7 @@ RCOptionEditor::RCOptionEditor ()
                         "SMPTE 12M-1999 specifies 29.97df as 30000/1001. The spec further mentions that "
                         "drop-frame timecode has an accumulated error of -86ms over a 24-hour period.\n"
                         "Drop-frame timecode would compensate exactly for a NTSC color frame rate of 30 * 0.9990 (ie 29.970000). "
-                        "That is not the actual rate, however some vendor use that rate - despite it being against the specs - "
+                        "That is not the actual rate. However, some vendors use that rate - despite it being against the specs - "
                         "because the variant of using exactly 29.97 fps has zero timecode drift.\n"
                         ));
 
@@ -1121,7 +1253,6 @@ RCOptionEditor::RCOptionEditor ()
 
        add_option (_("Transport"), _ltc_port);
 
-#ifdef HAVE_LTC
        // TODO; rather disable this button than not compile it..
        add_option (_("Transport"), new OptionEditorHeading (S_("LTC Generator")));
 
@@ -1141,13 +1272,13 @@ RCOptionEditor::RCOptionEditor ()
                            );
        Gtkmm2ext::UI::instance()->set_tip
                (_ltc_send_continuously->tip_widget(),
-                _("<b>When enabled</b> Ardour will continue to send LTC information even when the transport (playhead) is not moving"));
+                string_compose (_("<b>When enabled</b> %1 will continue to send LTC information even when the transport (playhead) is not moving"), PROGRAM_NAME));
        add_option (_("Transport"), _ltc_send_continuously);
 
-  _ltc_volume_adjustment = new Gtk::Adjustment(-18, -50, 0, .5, 5);
+       _ltc_volume_adjustment = new Gtk::Adjustment(-18, -50, 0, .5, 5);
        _ltc_volume_adjustment->set_value (20 * log10(_rc_config->get_ltc_output_volume()));
        _ltc_volume_adjustment->signal_value_changed().connect (sigc::mem_fun (*this, &RCOptionEditor::ltc_generator_volume_changed));
-       _ltc_volume_slider = new HSliderOption("ltcvol", ("LTC generator level:"), *_ltc_volume_adjustment);
+       _ltc_volume_slider = new HSliderOption("ltcvol", _("LTC generator level"), *_ltc_volume_adjustment);
 
        Gtkmm2ext::UI::instance()->set_tip
                (_ltc_volume_slider->tip_widget(),
@@ -1155,7 +1286,6 @@ RCOptionEditor::RCOptionEditor ()
 
        add_option (_("Transport"), _ltc_volume_slider);
        parameter_changed ("send-ltc");
-#endif
 
        parameter_changed ("sync-source");
 
@@ -1185,13 +1315,16 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_track_meters)
                     ));
 
-       add_option (_("Editor"),
-            new BoolOption (
+       bco = new BoolComboOption (
                     "use-overlap-equivalency",
-                    _("Use overlap equivalency for regions"),
+                    _("Regions in active edit groups are edited together"),
+                    _("whenever they overlap in time"),
+                    _("only if they have identical length, position and origin"),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::get_use_overlap_equivalency),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_use_overlap_equivalency)
-                    ));
+                    );
+
+       add_option (_("Editor"), bco);
 
        add_option (_("Editor"),
             new BoolOption (
@@ -1291,13 +1424,16 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_link_editor_and_mixer_selection)
                     ));
 
-       add_option (_("Editor"),
-            new BoolOption (
+       bo = new BoolOption (
                     "name-new-markers",
                     _("Name new markers"),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::get_name_new_markers),
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_name_new_markers)
-                    ));
+               );
+       
+       add_option (_("Editor"), bo);
+       Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), _("If enabled, popup a dialog when a new marker is created to allow its name to be set as it is created."
+                                                               "\n\nYou can always rename markers by right-clicking on them"));
 
        add_option (_("Editor"),
            new BoolOption (
@@ -1315,14 +1451,6 @@ RCOptionEditor::RCOptionEditor ()
 
        add_option (_("Audio"), new OptionEditorHeading (_("Monitoring")));
 
-       add_option (_("Audio"),
-            new BoolOption (
-                    "use-monitor-bus",
-                    _("Use a monitor bus (allows AFL/PFL and more control)"),
-                    sigc::mem_fun (*_rc_config, &RCConfiguration::get_use_monitor_bus),
-                    sigc::mem_fun (*_rc_config, &RCConfiguration::set_use_monitor_bus)
-                    ));
-
        ComboOption<MonitorModel>* mm = new ComboOption<MonitorModel> (
                "monitoring-model",
                _("Record monitoring handled by"),
@@ -1429,14 +1557,6 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_plugins_stop_with_transport)
                     ));
 
-       add_option (_("Audio"),
-            new BoolOption (
-                    "do-not-record-plugins",
-                    _("Disable plugins during recording"),
-                    sigc::mem_fun (*_rc_config, &RCConfiguration::get_do_not_record_plugins),
-                    sigc::mem_fun (*_rc_config, &RCConfiguration::set_do_not_record_plugins)
-                    ));
-
        add_option (_("Audio"),
             new BoolOption (
                     "new-plugins-active",
@@ -1678,13 +1798,24 @@ RCOptionEditor::RCOptionEditor ()
 
        /* USER INTERACTION */
 
+       if (getenv ("ARDOUR_BUNDLED")) {
+               add_option (_("User interaction"), 
+                           new BoolOption (
+                                   "enable-translation",
+                                   string_compose (_("Use translations of %1 messages\n"
+                                                     "   <i>(requires a restart of %1 to take effect)</i>\n"
+                                                     "   <i>(if available for your language preferences)</i>"), PROGRAM_NAME),
+                                   sigc::ptr_fun (ARDOUR::translations_are_enabled),
+                                   sigc::ptr_fun (ARDOUR::set_translations_enabled)));
+       }
+
        add_option (_("User interaction"), new OptionEditorHeading (_("Keyboard")));
 
        add_option (_("User interaction"), new KeyboardOptions);
 
-       add_option (_("User interaction"), new OptionEditorHeading (_("Control surfaces")));
+       /* Control Surfaces */
 
-       add_option (_("User interaction"), new ControlSurfacesOptions (*this));
+       add_option (_("Control Surfaces"), new ControlSurfacesOptions (*this));
 
        ComboOption<RemoteModel>* rm = new ComboOption<RemoteModel> (
                "remote-model",
@@ -1697,11 +1828,14 @@ RCOptionEditor::RCOptionEditor ()
        rm->add (MixerOrdered, _("follows order of mixer"));
        rm->add (EditorOrdered, _("follows order of editor"));
 
-       add_option (_("User interaction"), rm);
+       add_option (_("Control Surfaces"), rm);
+
+       /* VIDEO Timeline */
+       add_option (_("Video"), new VideoTimelineOptions (_rc_config));
 
        /* INTERFACE */
 
-       add_option (S_("GUI"),
+       add_option (S_("Preferences|GUI"),
             new BoolOption (
                     "widget-prelight",
                     _("Graphically indicate mouse pointer hovering over various widgets"),
@@ -1709,7 +1843,7 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_widget_prelight)
                     ));
 
-       add_option (S_("GUI"),
+       add_option (S_("Preferences|GUI"),
             new BoolOption (
                     "use-tooltips",
                     _("Show tooltips if mouse hovers over a control"),
@@ -1719,14 +1853,15 @@ RCOptionEditor::RCOptionEditor ()
 
 #ifndef GTKOSX
        /* font scaling does nothing with GDK/Quartz */
-       add_option (S_("GUI"), new FontScalingOptions (_rc_config));
+       add_option (S_("Preferences|GUI"), new FontScalingOptions (_rc_config));
 #endif
+
        add_option (S_("GUI"),
                    new BoolOption (
-                           "use-own-plugin-gui",
-                           _("Use plugins' own interfaces instead of Ardour's"),
-                           sigc::mem_fun (*_rc_config, &RCConfiguration::get_use_plugin_own_gui),
-                           sigc::mem_fun (*_rc_config, &RCConfiguration::set_use_plugin_own_gui)
+                           "super-rapid-clock-update",
+                           _("update transport clock display every 40ms instead of every 100ms"),
+                           sigc::mem_fun (*_rc_config, &RCConfiguration::get_super_rapid_clock_update),
+                           sigc::mem_fun (*_rc_config, &RCConfiguration::set_super_rapid_clock_update)
                            ));
 
        /* The names of these controls must be the same as those given in MixerStrip
@@ -1736,11 +1871,10 @@ RCOptionEditor::RCOptionEditor ()
        _mixer_strip_visibility.add (0, X_("SoloSafe"), _("Solo Safe"));
        _mixer_strip_visibility.add (0, X_("SoloIsolated"), _("Solo Isolated"));
        _mixer_strip_visibility.add (0, X_("Comments"), _("Comments"));
-       _mixer_strip_visibility.add (0, X_("Group"), _("Group"));
        _mixer_strip_visibility.add (0, X_("MeterPoint"), _("Meter Point"));
        
        add_option (
-               S_("GUI"),
+               S_("Preferences|GUI"),
                new VisibilityOption (
                        _("Mixer Strip"),
                        &_mixer_strip_visibility,
@@ -1749,7 +1883,7 @@ RCOptionEditor::RCOptionEditor ()
                        )
                );
 
-       add_option (S_("GUI"),
+       add_option (S_("Preferences|GUI"),
             new BoolOption (
                     "default-narrow_ms",
                     _("Use narrow strips in the mixer by default"),
@@ -1757,7 +1891,7 @@ RCOptionEditor::RCOptionEditor ()
                     sigc::mem_fun (*_rc_config, &RCConfiguration::set_default_narrow_ms)
                     ));
 
-       add_option (S_("GUI"), new OptionEditorHeading (_("Metering")));
+       add_option (S_("Preferences|GUI"), new OptionEditorHeading (_("Metering")));
 
        ComboOption<float>* mht = new ComboOption<float> (
                "meter-hold",
@@ -1771,7 +1905,7 @@ RCOptionEditor::RCOptionEditor ()
        mht->add (MeterHoldMedium, _("medium"));
        mht->add (MeterHoldLong, _("long"));
 
-       add_option (S_("GUI"), mht);
+       add_option (S_("Preferences|GUI"), mht);
 
        ComboOption<float>* mfo = new ComboOption<float> (
                "meter-falloff",
@@ -1788,7 +1922,7 @@ RCOptionEditor::RCOptionEditor ()
        mfo->add (METER_FALLOFF_FASTER, _("faster"));
        mfo->add (METER_FALLOFF_FASTEST, _("fastest"));
 
-       add_option (S_("GUI"), mfo);
+       add_option (S_("Preferences|GUI"), mfo);
 }
 
 void
@@ -1807,7 +1941,7 @@ RCOptionEditor::parameter_changed (string const & p)
        } else if (p == "sync-source") {
                _sync_source->set_sensitive (true);
                if (_session) {
-                       _sync_source->set_sensitive (_session->config.get_external_sync());
+                       _sync_source->set_sensitive (!_session->config.get_external_sync());
                }
                switch(Config->get_sync_source()) {
                case ARDOUR::MTC:
@@ -1822,12 +1956,10 @@ RCOptionEditor::parameter_changed (string const & p)
                        _sync_source_2997->set_sensitive (false);
                        break;
                }
-#ifdef HAVE_LTC
        } else if (p == "send-ltc") {
                bool const s = Config->get_send_ltc ();
                _ltc_send_continuously->set_sensitive (s);
                _ltc_volume_slider->set_sensitive (s);
-#endif /*HAVE_LTC*/
        }
 }