X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Frc_option_editor.cc;h=6b8a96b284dfd6000b589bd9d74fa5f8981fd8ba;hb=5d8a3ea2f04ac284c08e3a3bd3ec865f1378073d;hp=75cb6fbbcfc6b48227c5e8521b03c9a21fefd401;hpb=ff2f224d0c89880d2ce4f2f8be3904a332a76c1c;p=ardour.git diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 75cb6fbbcf..6b8a96b284 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -113,15 +113,15 @@ public: sigc::mem_fun (*this, &ClickOptions::click_emphasis_browse_clicked)); t->attach (_click_emphasis_browse_button, 3, 4, 3, 4, FILL); - FaderOption* fo = new FaderOption ( + _click_fader = new FaderOption ( "click-gain", _("Gain level"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_click_gain), sigc::mem_fun (*_rc_config, &RCConfiguration::set_click_gain) ); - fo->add_to_page (this); - fo->set_state_from_config (); + _click_fader->add_to_page (this); + _click_fader->set_state_from_config (); _click_path_entry.signal_activate().connect (sigc::mem_fun (*this, &ClickOptions::click_changed)); _click_emphasis_path_entry.signal_activate().connect (sigc::mem_fun (*this, &ClickOptions::click_emphasis_changed)); @@ -146,6 +146,8 @@ public: } else if (p == "use-click-emphasis") { bool x = _rc_config->get_use_click_emphasis (); _use_emphasis_on_click_check_button.set_active (x); + } else if (p == "click-gain") { + _click_fader->set_state_from_config (); } } @@ -237,6 +239,7 @@ private: Entry _click_emphasis_path_entry; Button _click_browse_button; Button _click_emphasis_browse_button; + FaderOption* _click_fader; }; class UndoOptions : public OptionEditorComponent @@ -1459,7 +1462,7 @@ class ControlSurfacesOptions : public OptionEditorMiniPage * tear_down_gui() hides an deletes the Window if it exists. */ ArdourWindow* win = new ArdourWindow (*((Gtk::Window*) _view.get_toplevel()), title.get_string()); - win->set_title ("Control Protocol Options"); + win->set_title (_("Control Protocol Settings")); win->add (*box); box->show (); win->present (); @@ -2111,7 +2114,11 @@ MidiPortOptions::pretty_name_edit (std::string const & path, string const & new_ RCOptionEditor::RCOptionEditor () : OptionEditorContainer (Config, string_compose (_("%1 Preferences"), PROGRAM_NAME)) - , Tabbable (*this, _("Preferences")) /* pack self-as-vbox into tabbable */ + , Tabbable (*this, _("Preferences") +#ifdef MIXBUS + , false // detached by default (first start, no instant.xml) +#endif + ) /* pack self-as-vbox into tabbable */ , _rc_config (Config) , _mixer_strip_visibility ("mixer-element-visibility") { @@ -2145,11 +2152,87 @@ RCOptionEditor::RCOptionEditor () add_option (_("General"), procs); } - add_option (_("General"), new OptionEditorHeading (S_("Options|Undo"))); + /* Image cache size */ + add_option (_("General"), new OptionEditorHeading (_("Memory Usage"))); + + HSliderOption *sics = new HSliderOption ("waveform-cache-size", + _("Waveform image cache size (megabytes)"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_waveform_cache_size), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_waveform_cache_size), + 1, 1024, 10 /* 1 MB to 1GB in steps of 10MB */ + ); + sics->scale().set_digits (0); + Gtkmm2ext::UI::instance()->set_tip ( + sics->tip_widget(), + _("Increasing the cache size uses more memory to store waveform images, which can improve graphical performance.")); + add_option (_("General"), sics); - add_option (_("General"), new UndoOptions (_rc_config)); + add_option (_("General"), new OptionEditorHeading (_("Engine"))); add_option (_("General"), + new BoolOption ( + "try-autostart-engine", + _("Try to auto-launch audio/midi engine"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_try_autostart_engine), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_try_autostart_engine) + )); + + add_option (_("General"), new OptionEditorHeading (_("Automation"))); + + add_option (_("General"), + new SpinOption ( + "automation-thinning-factor", + _("Thinning factor (larger value => less data)"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_automation_thinning_factor), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_automation_thinning_factor), + 0, 1000, 1, 20 + )); + + add_option (_("General"), + new SpinOption ( + "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 + )); + + add_option (_("General"), new OptionEditorHeading (_("Tempo"))); + + bo = new BoolOption ( + "allow-non-quarter-pulse", + _("Allow non quarter-note pulse"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_allow_non_quarter_pulse), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_allow_non_quarter_pulse) + ); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + string_compose (_("When enabled %1 will allow tempo to be expressed in divisions per minute\n" + "When disabled %1 will only allow tempo to be expressed in quarter notes per minute"), + PROGRAM_NAME)); + add_option (_("General"), bo); + + if (!ARDOUR::Profile->get_mixbus()) { + add_option (_("General"), new OptionEditorHeading (_("GUI Lock"))); + /* Lock GUI timeout */ + + HSliderOption *slts = new HSliderOption("lock-gui-after-seconds", + _("Lock timeout (seconds)"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_lock_gui_after_seconds), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_lock_gui_after_seconds), + 0, 1000, 1, 10 + ); + slts->scale().set_digits (0); + Gtkmm2ext::UI::instance()->set_tip ( + slts->tip_widget(), + _("Lock GUI after this many idle seconds (zero to never lock)")); + add_option (_("General"), slts); + } // !mixbus + + add_option (_("General/Session"), new OptionEditorHeading (S_("Options|Undo"))); + + add_option (_("General/Session"), new UndoOptions (_rc_config)); + + add_option (_("General/Session"), new BoolOption ( "verify-remove-last-capture", _("Verify removal of last capture"), @@ -2157,9 +2240,9 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_verify_remove_last_capture) )); - add_option (_("General"), new OptionEditorHeading (_("Session Management"))); + add_option (_("General/Session"), new OptionEditorHeading (_("Session Management"))); - add_option (_("General"), + add_option (_("General/Session"), new BoolOption ( "periodic-safety-backups", _("Make periodic backups of the session file"), @@ -2167,7 +2250,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_periodic_safety_backups) )); - add_option (_("General"), + add_option (_("General/Session"), new BoolOption ( "only-copy-imported-files", _("Always copy imported files"), @@ -2175,14 +2258,14 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_only_copy_imported_files) )); - add_option (_("General"), new DirectoryOption ( + add_option (_("General/Session"), new DirectoryOption ( X_("default-session-parent-dir"), _("Default folder for new sessions:"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_default_session_parent_dir), sigc::mem_fun (*_rc_config, &RCConfiguration::set_default_session_parent_dir) )); - add_option (_("General"), + add_option (_("General/Session"), new SpinOption ( "max-recent-sessions", _("Maximum number of recent sessions"), @@ -2191,41 +2274,6 @@ RCOptionEditor::RCOptionEditor () 0, 1000, 1, 20 )); - add_option (_("General"), new OptionEditorHeading (_("Automation"))); - - add_option (_("General"), - new SpinOption ( - "automation-thinning-factor", - _("Thinning factor (larger value => less data)"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_automation_thinning_factor), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_automation_thinning_factor), - 0, 1000, 1, 20 - )); - - add_option (_("General"), - new SpinOption ( - "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 - )); - - add_option (_("General"), new OptionEditorHeading (_("Tempo"))); - - BoolOption* tsf; - - tsf = new BoolOption ( - "allow-non-quarter-pulse", - _("Allow non quarter-note pulse"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_allow_non_quarter_pulse), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_allow_non_quarter_pulse) - ); - Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), - string_compose (_("When enabled %1 will allow tempo to be expressed in divisions per minute\n" - "When disabled %1 will only allow tempo to be expressed in quarter notes per minute"), - PROGRAM_NAME)); - add_option (_("General"), tsf); #ifdef ENABLE_NLS @@ -2273,7 +2321,7 @@ RCOptionEditor::RCOptionEditor () bo = new BoolOption ( "name-new-markers", - _("Prompt for a new marker name"), + _("Prompt for new marker names"), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_name_new_markers), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_name_new_markers) ); @@ -2495,7 +2543,7 @@ RCOptionEditor::RCOptionEditor () add_option (_("Mixer"), pa); - add_option (_("Mixer"), new OptionEditorHeading (_("Default track / bus muting options"))); + add_option (_("Mixer"), new OptionEditorHeading (_("Default Track / Bus Muting Options"))); add_option (_("Mixer"), new BoolOption ( @@ -2563,13 +2611,16 @@ RCOptionEditor::RCOptionEditor () add_option (_("Signal Flow"), mm); - add_option (_("Signal Flow"), - new BoolOption ( + bo = new BoolOption ( "tape-machine-mode", _("Tape machine mode"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_tape_machine_mode), sigc::mem_fun (*_rc_config, &RCConfiguration::set_tape_machine_mode) - )); + ); + add_option (_("Signal Flow"), bo); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + string_compose (_("When enabled %1 will not monitor a track's input if the transport is stopped."), + PROGRAM_NAME)); if (!Profile->get_mixbus()) { @@ -2720,24 +2771,6 @@ RCOptionEditor::RCOptionEditor () -1, 65536, 1, 10 )); - add_option (_("MIDI"), new OptionEditorHeading (_("Display"))); - - add_option (_("MIDI"), - new BoolOption ( - "display-first-midi-bank-as-zero", - _("Display first MIDI bank/program as 0"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_first_midi_bank_is_zero), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_first_midi_bank_is_zero) - )); - - add_option (_("MIDI"), - new BoolOption ( - "never-display-periodic-midi", - _("Don't display periodic (MTC, MMC) SysEx messages in MIDI Regions"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_never_display_periodic_midi), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_never_display_periodic_midi) - )); - add_option (_("MIDI"), new OptionEditorHeading (_("Audition"))); add_option (_("MIDI"), @@ -2934,46 +2967,48 @@ RCOptionEditor::RCOptionEditor () add_option (_("Transport"), new OptionEditorHeading (_("General"))); - tsf = new BoolOption ( + bo = new BoolOption ( "stop-at-session-end", _("Stop at the end of the session"), 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(), + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), string_compose (_("When enabled if %1 is not recording, it will stop the transport " "when it reaches the current session end marker\n\n" "When disabled %1 will continue to roll past the session end marker at all times"), PROGRAM_NAME)); - add_option (_("Transport"), tsf); + add_option (_("Transport"), bo); - tsf = new BoolOption ( + bo = new BoolOption ( "latched-record-enable", _("Keep record-enable engaged on stop"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_latched_record_enable), sigc::mem_fun (*_rc_config, &RCConfiguration::set_latched_record_enable) ); - add_option (_("Transport"), tsf); + add_option (_("Transport"), bo); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + _("When enabled master record will remain engaged when the transport transitions to stop.\nWhen disabled master record will be disabled when the transport transitions to stop.")); - tsf = new BoolOption ( + bo = new BoolOption ( "disable-disarm-during-roll", _("Disable per-track record disarm while rolling"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_disable_disarm_during_roll), sigc::mem_fun (*_rc_config, &RCConfiguration::set_disable_disarm_during_roll) ); - Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), _("When enabled this will prevent you from accidentally stopping specific tracks recording during a take")); - add_option (_("Transport"), tsf); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), _("When enabled this will prevent you from accidentally stopping specific tracks recording during a take.")); + add_option (_("Transport"), bo); - tsf = new BoolOption ( + bo = new BoolOption ( "quieten_at_speed", _("12dB gain reduction during fast-forward and fast-rewind"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_quieten_at_speed), sigc::mem_fun (*_rc_config, &RCConfiguration::set_quieten_at_speed) ); - Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), _("When enabled rhis will reduce the unpleasant increase in perceived volume " "that occurs when fast-forwarding or rewinding through some kinds of audio")); - add_option (_("Transport"), tsf); + add_option (_("Transport"), bo); ComboOption* psc = new ComboOption ( "preroll-seconds", @@ -2982,8 +3017,11 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_preroll_seconds) ); Gtkmm2ext::UI::instance()->set_tip (psc->tip_widget(), - (_("The amount of preroll (in seconds) to apply when Play with Preroll is initiated.\n\n" + (_("The amount of preroll to apply when Play with Preroll or Record with Prerollis initiated.\n\n" "If Follow Edits is enabled, the preroll is applied to the playhead position when a region is selected or trimmed."))); + psc->add (-4.0, _("4 Bars")); + psc->add (-2.0, _("2 Bars")); + psc->add (-1.0, _("1 Bar")); psc->add (0.0, _("0 (no pre-roll)")); psc->add (0.1, _("0.1 second")); psc->add (0.25, _("0.25 second")); @@ -2995,49 +3033,49 @@ RCOptionEditor::RCOptionEditor () add_option (_("Transport"), new OptionEditorHeading (_("Looping"))); - tsf = new BoolOption ( + bo = new BoolOption ( "loop-is-mode", _("Play loop is a transport mode"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_loop_is_mode), sigc::mem_fun (*_rc_config, &RCConfiguration::set_loop_is_mode) ); - Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), (_("When enabled the loop button does not start playback but forces playback to always play the loop\n\n" "When disabled the loop button starts playing the loop, but stop then cancels loop playback"))); - add_option (_("Transport"), tsf); + add_option (_("Transport"), bo); - tsf = new BoolOption ( + bo = new BoolOption ( "seamless-loop", _("Do seamless looping (not possible when slaved to MTC, LTC etc)"), 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(), + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), string_compose (_("When enabled 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" "When disabled 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); + add_option (_("Transport"), bo); add_option (_("Transport"), new OptionEditorHeading (_("Dropout (xrun) Handling"))); - tsf = new BoolOption ( + bo = new BoolOption ( "stop-recording-on-xrun", _("Stop recording when an xrun occurs"), 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(), + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), string_compose (_("When enabled %1 will stop recording if an over- or underrun is detected by the audio engine"), PROGRAM_NAME)); - add_option (_("Transport"), tsf); + add_option (_("Transport"), bo); - tsf = new BoolOption ( + bo = new BoolOption ( "create-xrun-marker", _("Create markers where xruns occur"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_create_xrun_marker), sigc::mem_fun (*_rc_config, &RCConfiguration::set_create_xrun_marker) ); - add_option (_("Transport"), tsf); + add_option (_("Transport"), bo); /* SYNC */ @@ -3454,7 +3492,7 @@ RCOptionEditor::RCOptionEditor () /* INTERFACE */ #if (defined OPTIONAL_CAIRO_IMAGE_SURFACE || defined CAIRO_SUPPORTS_FORCE_BUGGY_GRADIENTS_ENVIRONMENT_VARIABLE) - add_option (S_("Preferences|GUI"), new OptionEditorHeading (_("Graphics Acceleration"))); + add_option (_("Appearance"), new OptionEditorHeading (_("Graphics Acceleration"))); #endif #ifdef OPTIONAL_CAIRO_IMAGE_SURFACE @@ -3467,7 +3505,7 @@ RCOptionEditor::RCOptionEditor () Gtkmm2ext::UI::instance()->set_tip (bgc->tip_widget(), string_compose ( _("Render large parts of the application user-interface in software, instead of using 2D-graphics acceleration.\nThis requires restarting %1 before having an effect"), PROGRAM_NAME)); - add_option (S_("Preferences|GUI"), bgc); + add_option (_("Appearance"), bgc); #endif #ifdef CAIRO_SUPPORTS_FORCE_BUGGY_GRADIENTS_ENVIRONMENT_VARIABLE @@ -3479,11 +3517,11 @@ RCOptionEditor::RCOptionEditor () ); Gtkmm2ext::UI::instance()->set_tip (bgo->tip_widget(), string_compose (_("Disables hardware gradient rendering on buggy video drivers (\"buggy gradients patch\").\nThis requires restarting %1 before having an effect"), PROGRAM_NAME)); - add_option (S_("Preferences|GUI"), bgo); + add_option (_("Appearance"), bgo); #endif - add_option (S_("Preferences|GUI"), new OptionEditorHeading (_("Graphical User Interface"))); + add_option (_("Appearance"), new OptionEditorHeading (_("Graphical User Interface"))); - add_option (S_("Preferences|GUI"), + add_option (_("Appearance"), new BoolOption ( "widget-prelight", _("Highlight widgets on mouseover"), @@ -3491,7 +3529,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_widget_prelight) )); - add_option (S_("Preferences|GUI"), + add_option (_("Appearance"), new BoolOption ( "use-tooltips", _("Show tooltips if mouse hovers over a control"), @@ -3509,9 +3547,9 @@ RCOptionEditor::RCOptionEditor () _("When enabled clock displays are updated every Timecode Frame (fps).\n\n" "When disabled clock displays are updated only every 100ms." )); - add_option (S_("Preferences|GUI"), bo); + add_option (_("Appearance"), bo); - add_option (S_("Preferences|GUI"), + add_option (_("Appearance"), new BoolOption ( "blink-rec-arm", _("Blink Rec-Arm buttons"), @@ -3522,41 +3560,10 @@ RCOptionEditor::RCOptionEditor () #ifndef __APPLE__ /* font scaling does nothing with GDK/Quartz */ - add_option (S_("Preferences|GUI"), new FontScalingOptions ()); + add_option (_("Appearance"), new FontScalingOptions ()); #endif - - /* Image cache size */ - - HSliderOption *sics = new HSliderOption ("waveform-cache-size", - _("Waveform image cache size (megabytes)"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_waveform_cache_size), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_waveform_cache_size), - 1, 1024, 10 /* 1 MB to 1GB in steps of 10MB */ - ); - sics->scale().set_digits (0); - Gtkmm2ext::UI::instance()->set_tip ( - sics->tip_widget(), - _("Increasing the cache size uses more memory to store waveform images, which can improve graphical performance.")); - add_option (S_("Preferences|GUI"), sics); - - if (!ARDOUR::Profile->get_mixbus()) { - /* Lock GUI timeout */ - - HSliderOption *slts = new HSliderOption("lock-gui-after-seconds", - _("Lock timeout (seconds)"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_lock_gui_after_seconds), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_lock_gui_after_seconds), - 0, 1000, 1, 10 - ); - slts->scale().set_digits (0); - Gtkmm2ext::UI::instance()->set_tip ( - slts->tip_widget(), - _("Lock GUI after this many idle seconds (zero to never lock)")); - add_option (S_("Preferences|GUI"), slts); - } // !mixbus - - add_option (_("GUI/Editor"), new OptionEditorHeading (_("General"))); - add_option (_("GUI/Editor"), + add_option (_("Appearance/Editor"), new OptionEditorHeading (_("General"))); + add_option (_("Appearance/Editor"), new BoolOption ( "show-name-highlight", _("Use name highlight bars in region displays (requires a restart)"), @@ -3564,7 +3571,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_name_highlight) )); - add_option (_("GUI/Editor"), + add_option (_("Appearance/Editor"), new BoolOption ( "color-regions-using-track-color", _("Region color follows track color"), @@ -3572,10 +3579,10 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_color_regions_using_track_color) )); - add_option (_("GUI/Editor"), new OptionEditorHeading (_("Waveforms"))); + add_option (_("Appearance/Editor"), new OptionEditorHeading (_("Waveforms"))); if (!Profile->get_mixbus()) { - add_option (_("GUI/Editor"), + add_option (_("Appearance/Editor"), new BoolOption ( "show-waveforms", _("Show waveforms in regions"), @@ -3584,7 +3591,7 @@ RCOptionEditor::RCOptionEditor () )); } // !mixbus - add_option (_("GUI/Editor"), + add_option (_("Appearance/Editor"), new BoolOption ( "show-waveforms-while-recording", _("Show waveforms while recording"), @@ -3592,7 +3599,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_waveforms_while_recording) )); - add_option (_("GUI/Editor"), + add_option (_("Appearance/Editor"), new BoolOption ( "show-waveform-clipping", _("Show waveform clipping"), @@ -3600,7 +3607,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_waveform_clipping) )); - add_option (_("GUI/Editor"), new ClipLevelOptions ()); + add_option (_("Appearance/Editor"), new ClipLevelOptions ()); ComboOption* wfs = new ComboOption ( "waveform-scale", @@ -3612,7 +3619,7 @@ RCOptionEditor::RCOptionEditor () wfs->add (Linear, _("linear")); wfs->add (Logarithmic, _("logarithmic")); - add_option (_("GUI/Editor"), wfs); + add_option (_("Appearance/Editor"), wfs); ComboOption* wfsh = new ComboOption ( "waveform-shape", @@ -3624,11 +3631,11 @@ RCOptionEditor::RCOptionEditor () wfsh->add (Traditional, _("traditional")); wfsh->add (Rectified, _("rectified")); - add_option (_("GUI/Editor"), wfsh); + add_option (_("Appearance/Editor"), wfsh); - add_option (_("GUI/Editor"), new OptionEditorHeading (_("Editor Meters"))); + add_option (_("Appearance/Editor"), new OptionEditorHeading (_("Editor Meters"))); - add_option (_("GUI/Editor"), + add_option (_("Appearance/Editor"), new BoolOption ( "show-track-meters", _("Show meters in track headers"), @@ -3636,7 +3643,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_track_meters) )); - add_option (_("GUI/Editor"), + add_option (_("Appearance/Editor"), new BoolOption ( "editor-stereo-only-meters", _("Limit track header meters to stereo"), @@ -3644,7 +3651,25 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_editor_stereo_only_meters) )); - add_option (_("GUI/Editor"), new OptionEditorBlank ()); + add_option (_("Appearance/Editor"), new OptionEditorHeading (_("MIDI Regions"))); + + add_option (_("Appearance/Editor"), + new BoolOption ( + "display-first-midi-bank-as-zero", + _("Display first MIDI bank/program as 0"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_first_midi_bank_is_zero), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_first_midi_bank_is_zero) + )); + + add_option (_("Appearance/Editor"), + new BoolOption ( + "never-display-periodic-midi", + _("Don't display periodic (MTC, MMC) SysEx messages in MIDI Regions"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_never_display_periodic_midi), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_never_display_periodic_midi) + )); + + add_option (_("Appearance/Editor"), new OptionEditorBlank ()); /* The names of these controls must be the same as those given in MixerStrip for the actual widgets being controlled. @@ -3657,7 +3682,7 @@ RCOptionEditor::RCOptionEditor () _mixer_strip_visibility.add (0, X_("Comments"), _("Comments")); _mixer_strip_visibility.add (0, X_("VCA"), _("VCA Assigns")); - add_option (_("GUI/Mixer"), + add_option (_("Appearance/Mixer"), new VisibilityOption ( _("Mixer Strip"), &_mixer_strip_visibility, @@ -3666,19 +3691,35 @@ RCOptionEditor::RCOptionEditor () ) ); - add_option (_("GUI/Mixer"), + add_option (_("Appearance/Mixer"), new BoolOption ( "default-narrow_ms", - _("Use narrow strips in the mixer by default"), + _("Use narrow strips in the mixer for new strips by default"), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_default_narrow_ms), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_default_narrow_ms) )); - add_option (_("GUI/Mixer"), new OptionEditorBlank ()); + add_option (_("Appearance/Mixer"), new OptionEditorBlank ()); + + add_option (_("Appearance/Toolbar"), new OptionEditorHeading (_("Main Transport Toolbar Items"))); + + add_option (_("Appearance/Toolbar"), + new BoolOption ( + "show-toolbar-recpunch", + _("Display Record/Punch Options"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_toolbar_recpunch), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_toolbar_recpunch) + )); - add_option (_("GUI/Toolbar"), new OptionEditorHeading (_("Main Transport Toolbar Items"))); + add_option (_("Appearance/Toolbar"), + new BoolOption ( + "show-toolbar-monitoring", + _("Display Monitor Options"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_toolbar_monitoring), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_toolbar_monitoring) + )); - add_option (_("GUI/Toolbar"), + add_option (_("Appearance/Toolbar"), new BoolOption ( "show-toolbar-selclock", _("Display Selection Clock"), @@ -3687,7 +3728,7 @@ RCOptionEditor::RCOptionEditor () )); if (!ARDOUR::Profile->get_small_screen()) { - add_option (_("GUI/Toolbar"), + add_option (_("Appearance/Toolbar"), new BoolOption ( "show-secondary-clock", _("Display Secondary Clock"), @@ -3696,7 +3737,7 @@ RCOptionEditor::RCOptionEditor () )); } - add_option (_("GUI/Toolbar"), + add_option (_("Appearance/Toolbar"), new BoolOption ( "show-mini-timeline", _("Display Navigation Timeline"), @@ -3704,7 +3745,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_mini_timeline) )); - add_option (_("GUI/Toolbar"), + add_option (_("Appearance/Toolbar"), new BoolOption ( "show-editor-meter", _("Display Master Level Meter"), @@ -3712,32 +3753,36 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_editor_meter) )); - add_option (_("GUI/Toolbar"), + add_option (_("Appearance/Toolbar"), new ColumVisibilityOption ( "action-table-columns", _("Lua Action Script Button Visibility"), 4, sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_action_table_columns), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_action_table_columns) ) ); - add_option (_("GUI/Toolbar"), new OptionEditorBlank ()); + add_option (_("Appearance/Toolbar"), new OptionEditorBlank ()); OptionEditorHeading* quirks_head = new OptionEditorHeading (_("Various Workarounds for Windowing Systems")); - quirks_head->set_note (string_compose (_("These settings will only take effect after %1 is restarted."), PROGRAM_NAME)); + quirks_head->set_note (string_compose (_("Rules for closing, minimizing, maximizing, and stay-on-top can vary\ +with each version of your OS, and the preferences that you've set in your OS.\n\n\ +You can adjust the options, below, to change how %1's windows and dialogs behave.\n\n\ +These settings will only take effect after %1 is restarted.\n\ + "), PROGRAM_NAME)); /* and now the theme manager */ - add_option (_("GUI/Theme"), new OptionEditorHeading (_("Theme"))); + add_option (_("Appearance/Theme"), new OptionEditorHeading (_("Theme"))); - add_option (_("GUI/Theme"), new BoolOption ( + add_option (_("Appearance/Theme"), new BoolOption ( "flat-buttons", _("Draw \"flat\" buttons"), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_flat_buttons), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_flat_buttons) )); - add_option (_("GUI/Theme"), new BoolOption ( + add_option (_("Appearance/Theme"), new BoolOption ( "meter-style-led", _("LED meter style"), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_meter_style_led), @@ -3753,7 +3798,7 @@ RCOptionEditor::RCOptionEditor () 0, 1.0, 0.05 ); gui_hs->scale().set_update_policy (Gtk::UPDATE_DELAYED); - add_option (_("GUI/Theme"), gui_hs); + add_option (_("Appearance/Theme"), gui_hs); gui_hs = new HSliderOption( "timeline-item-gradient-depth", @@ -3763,7 +3808,7 @@ RCOptionEditor::RCOptionEditor () 0, 1.0, 0.05 ); gui_hs->scale().set_update_policy (Gtk::UPDATE_DELAYED); - add_option (_("GUI/Theme"), gui_hs); + add_option (_("Appearance/Theme"), gui_hs); vector icon_sets = ::get_icon_sets (); if (icon_sets.size() > 1) { @@ -3775,24 +3820,26 @@ RCOptionEditor::RCOptionEditor () for (vector::const_iterator i = icon_sets.begin (); i != icon_sets.end (); ++i) { io->add (*i, *i); } - add_option (_("GUI/Theme"), io); + add_option (_("Appearance/Theme"), io); } - add_option (_("GUI/Colors"), new OptionEditorHeading (_("Colors"))); - add_option (_("GUI/Colors"), new ColorThemeManager); - add_option (_("GUI/Colors"), new OptionEditorBlank ()); + add_option (_("Appearance/Colors"), new OptionEditorHeading (_("Colors"))); + add_option (_("Appearance/Colors"), new ColorThemeManager); + add_option (_("Appearance/Colors"), new OptionEditorBlank ()); /* Quirks */ - add_option (_("GUI/Quirks"), quirks_head); + add_option (_("Appearance/Quirks"), quirks_head); - add_option (_("GUI/Quirks"), - new BoolOption ( + bo = new BoolOption ( "use-wm-visibility", - _("Use Window Manager/Desktop visibility information"), + _("Use visibility information provided by your Window Manager/Desktop"), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_use_wm_visibility), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_wm_visibility) - )); + ); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget (), + _("If you have trouble toggling between hidden Editor and Mixer windows, try changing this setting.")); + add_option (_("Appearance/Quirks"), bo); #ifndef __APPLE__ bo = new BoolOption ( @@ -3803,7 +3850,7 @@ RCOptionEditor::RCOptionEditor () ); Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget (), _("Mark all floating windows to be type \"Dialog\" rather than using \"Utility\" for some.\nThis may help with some window managers.")); - add_option (_("GUI/Quirks"), bo); + add_option (_("Appearance/Quirks"), bo); bo = new BoolOption ( "transients-follow-front", @@ -3813,7 +3860,7 @@ RCOptionEditor::RCOptionEditor () ); Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget (), _("Make transient windows follow the front window when toggling between the editor and mixer.")); - add_option (_("GUI/Quirks"), bo); + add_option (_("Appearance/Quirks"), bo); #endif if (!Profile->get_mixbus()) { @@ -3825,10 +3872,10 @@ RCOptionEditor::RCOptionEditor () ); Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget (), _("When detaching the monitoring section, mark it as \"Utility\" window to stay in front.")); - add_option (_("GUI/Quirks"), bo); + add_option (_("Appearance/Quirks"), bo); } - add_option (_("GUI/Quirks"), new OptionEditorBlank ()); + add_option (_("Appearance/Quirks"), new OptionEditorBlank ()); /* VIDEO Timeline */ add_option (_("Video"), new OptionEditorHeading (_("Video Server"))); @@ -3930,6 +3977,13 @@ void RCOptionEditor::edit_lxvst_path () { pd->hide(); if (r == RESPONSE_ACCEPT) { _rc_config->set_plugin_path_lxvst(pd->get_serialized_paths()); + + MessageDialog msg (_("Re-scan Plugins now?"), + false /*no markup*/, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO, true /*modal*/); + msg.set_default_response (Gtk::RESPONSE_YES); + if (msg.run() == Gtk::RESPONSE_YES) { + plugin_scan_refresh (); + } } delete pd; } @@ -3944,6 +3998,12 @@ void RCOptionEditor::edit_vst_path () { pd->hide(); if (r == RESPONSE_ACCEPT) { _rc_config->set_plugin_path_vst(pd->get_serialized_paths()); + MessageDialog msg (_("Re-scan Plugins now?"), + false /*no markup*/, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO, true /*modal*/); + msg.set_default_response (Gtk::RESPONSE_YES); + if (msg.run() == Gtk::RESPONSE_YES) { + plugin_scan_refresh (); + } } delete pd; } @@ -3981,6 +4041,8 @@ RCOptionEditor::use_own_window (bool and_fill_it) if (win && new_window) { win->set_name ("PreferencesWindow"); ARDOUR_UI::instance()->setup_toplevel_window (*win, _("Preferences"), this); + win->resize (1, 1); + win->set_resizable (false); } return win;