X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Frc_option_editor.cc;h=5a4580f5d4ed81b1adfc625c3b3a1919d3f24149;hb=4b0e2ad6827821f7419bc65bb755d6292e5e332e;hp=316592dc129cb96e6b1d08abab74a69acd0bab14;hpb=17d54a0d1cac0ee698c85609030958ffaea0050a;p=ardour.git diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 316592dc12..5a4580f5d4 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -86,42 +86,48 @@ public: { // TODO get rid of GTK -> use OptionEditor Widgets Table* t = &table; + Label* l; + int row = 0; - Label* l = manage (left_aligned_label (_("Emphasis on first beat"))); + l = manage (left_aligned_label (_("Emphasis on first beat"))); _use_emphasis_on_click_check_button.add (*l); - t->attach (_use_emphasis_on_click_check_button, 1, 3, 0, 1, FILL); + t->attach (_use_emphasis_on_click_check_button, 1, 3, row, row + 1, FILL); _use_emphasis_on_click_check_button.signal_toggled().connect ( sigc::mem_fun (*this, &ClickOptions::use_emphasis_on_click_toggled)); + ++row; l = manage (left_aligned_label (_("Use built-in default sounds"))); _use_default_click_check_button.add (*l); - t->attach (_use_default_click_check_button, 1, 3, 1, 2, FILL); + t->attach (_use_default_click_check_button, 1, 3, row, row + 1, FILL); _use_default_click_check_button.signal_toggled().connect ( sigc::mem_fun (*this, &ClickOptions::use_default_click_toggled)); + ++row; l = manage (left_aligned_label (_("Audio file:"))); - t->attach (*l, 1, 2, 2, 3, FILL); - t->attach (_click_path_entry, 2, 3, 2, 3, FILL); + t->attach (*l, 1, 2, row, row + 1, FILL); + t->attach (_click_path_entry, 2, 3, row, row + 1, FILL); _click_browse_button.signal_clicked ().connect ( sigc::mem_fun (*this, &ClickOptions::click_browse_clicked)); - t->attach (_click_browse_button, 3, 4, 2, 3, FILL); + t->attach (_click_browse_button, 3, 4, row, row + 1, FILL); + ++row; l = manage (left_aligned_label (_("Emphasis audio file:"))); - t->attach (*l, 1, 2, 3, 4, FILL); - t->attach (_click_emphasis_path_entry, 2, 3, 3, 4, FILL); + t->attach (*l, 1, 2, row, row + 1, FILL); + t->attach (_click_emphasis_path_entry, 2, 3, row, row + 1, FILL); _click_emphasis_browse_button.signal_clicked ().connect ( sigc::mem_fun (*this, &ClickOptions::click_emphasis_browse_clicked)); - t->attach (_click_emphasis_browse_button, 3, 4, 3, 4, FILL); + t->attach (_click_emphasis_browse_button, 3, 4, row, row + 1, FILL); + ++row; - 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 +152,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 +245,7 @@ private: Entry _click_emphasis_path_entry; Button _click_browse_button; Button _click_emphasis_browse_button; + FaderOption* _click_fader; }; class UndoOptions : public OptionEditorComponent @@ -1365,7 +1374,7 @@ class ControlSurfacesOptions : public OptionEditorMiniPage if (!(*i)->mandatory) { TreeModel::Row r = *_store->append (); r[_model.name] = (*i)->name; - r[_model.enabled] = ((*i)->protocol || (*i)->requested); + r[_model.enabled] = 0 != (*i)->protocol; r[_model.protocol_info] = *i; } } @@ -1382,8 +1391,9 @@ class ControlSurfacesOptions : public OptionEditorMiniPage if ((*x)[_model.protocol_info] == cpi) { _ignore_view_change++; - (*x)[_model.enabled] = (cpi->protocol || cpi->requested); + (*x)[_model.enabled] = 0 != cpi->protocol; _ignore_view_change--; + selection_changed (); // update sensitivity break; } } @@ -1459,7 +1469,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 +2121,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") { @@ -2160,50 +2174,14 @@ RCOptionEditor::RCOptionEditor () _("Increasing the cache size uses more memory to store waveform images, which can improve graphical performance.")); add_option (_("General"), sics); - add_option (_("General"), new OptionEditorHeading (S_("Options|Undo"))); - - add_option (_("General"), new UndoOptions (_rc_config)); - - add_option (_("General"), - new BoolOption ( - "verify-remove-last-capture", - _("Verify removal of last capture"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_verify_remove_last_capture), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_verify_remove_last_capture) - )); - - add_option (_("General"), new OptionEditorHeading (_("Session Management"))); + add_option (_("General"), new OptionEditorHeading (_("Engine"))); add_option (_("General"), new BoolOption ( - "periodic-safety-backups", - _("Make periodic backups of the session file"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_periodic_safety_backups), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_periodic_safety_backups) - )); - - add_option (_("General"), - new BoolOption ( - "only-copy-imported-files", - _("Always copy imported files"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_only_copy_imported_files), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_only_copy_imported_files) - )); - - add_option (_("General"), 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"), - new SpinOption ( - "max-recent-sessions", - _("Maximum number of recent sessions"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_max_recent_sessions), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_max_recent_sessions), - 0, 1000, 1, 20 + "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"))); @@ -2257,6 +2235,53 @@ RCOptionEditor::RCOptionEditor () 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"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_verify_remove_last_capture), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_verify_remove_last_capture) + )); + + add_option (_("General/Session"), new OptionEditorHeading (_("Session Management"))); + + add_option (_("General/Session"), + new BoolOption ( + "periodic-safety-backups", + _("Make periodic backups of the session file"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_periodic_safety_backups), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_periodic_safety_backups) + )); + + add_option (_("General/Session"), + new BoolOption ( + "only-copy-imported-files", + _("Always copy imported files"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_only_copy_imported_files), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_only_copy_imported_files) + )); + + 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/Session"), + new SpinOption ( + "max-recent-sessions", + _("Maximum number of recent sessions"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_max_recent_sessions), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_max_recent_sessions), + 0, 1000, 1, 20 + )); + + #ifdef ENABLE_NLS add_option (_("General/Translation"), new OptionEditorHeading (_("Internationalization"))); @@ -2272,19 +2297,6 @@ RCOptionEditor::RCOptionEditor () add_option (_("General/Translation"), bo); - _l10n = new ComboOption ( - "locale-mode", - _("Localization"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_locale_mode), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_locale_mode) - ); - - _l10n->add (ARDOUR::SET_LC_ALL, _("Set complete locale")); - _l10n->add (ARDOUR::SET_LC_MESSAGES, _("Enable only message translation")); - _l10n->add (ARDOUR::SET_LC_MESSAGES_AND_LC_NUMERIC, _("Translate messages and format numeric format")); - _l10n->set_note (_("This setting is provided for plugin compatibility. e.g. some plugins on some systems expect the decimal point to be a dot.")); - - add_option (_("General/Translation"), _l10n); parameter_changed ("enable-translation"); #endif // ENABLE_NLS @@ -2525,7 +2537,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 ( @@ -2643,7 +2655,7 @@ RCOptionEditor::RCOptionEditor () bo = new BoolOption ( "strict-io", - _("Use 'Strict-I/O' for new tracks or Busses"), + _("Use 'Strict-I/O' for new tracks or busses"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_strict_io), sigc::mem_fun (*_rc_config, &RCConfiguration::set_strict_io) ); @@ -2794,6 +2806,20 @@ RCOptionEditor::RCOptionEditor () add_option (_("Metronome"), new OptionEditorHeading (_("Metronome"))); add_option (_("Metronome"), new ClickOptions (_rc_config)); + add_option (_("Metronome"), new OptionEditorHeading (_("Options"))); + + bo = new BoolOption ( + "click-record-only", + _("Enable metronome only while recording"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_click_record_only), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_click_record_only) + ); + + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + string_compose (_("When enabled the metronome will remain silent if %1 is not recording."), PROGRAM_NAME)); + add_option (_("Metronome"), bo); + add_option (_("Metronome"), new OptionEditorBlank ()); + /* Meters */ @@ -2876,6 +2902,24 @@ RCOptionEditor::RCOptionEditor () add_option (S_("Preferences|Metering"), mvu); + HSliderOption *mpks = new HSliderOption("meter-peak", + _("Peak indicator threshold [dBFS]"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_meter_peak), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_meter_peak), + -10, 0, .1, .1 + ); + + Gtkmm2ext::UI::instance()->set_tip ( + mpks->tip_widget(), + _("Specify the audio signal level in dBFS at and above which the meter-peak indicator will flash red.")); + + add_option (S_("Preferences|Metering"), mpks); + + OptionEditorHeading* default_meter_head = new OptionEditorHeading (_("Default Meter Types")); + default_meter_head->set_note (_("These settings apply to newly created tracks and busses. For the Master bus, this will be when a new session is created.")); + + add_option (S_("Preferences|Metering"), default_meter_head); + ComboOption* mtm = new ComboOption ( "meter-type-master", _("Default Meter Type for Master Bus"), @@ -2896,7 +2940,7 @@ RCOptionEditor::RCOptionEditor () ComboOption* mtb = new ComboOption ( "meter-type-bus", - _("Default Meter Type for Busses"), + _("Default meter type for busses"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_type_bus), sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_type_bus) ); @@ -2913,7 +2957,7 @@ RCOptionEditor::RCOptionEditor () ComboOption* mtt = new ComboOption ( "meter-type-track", - _("Default Meter Type for Tracks"), + _("Default meter type for tracks"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_type_track), sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_type_track) ); @@ -2922,19 +2966,6 @@ RCOptionEditor::RCOptionEditor () add_option (S_("Preferences|Metering"), mtt); - HSliderOption *mpks = new HSliderOption("meter-peak", - _("Peak threshold [dBFS]"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_meter_peak), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_meter_peak), - -10, 0, .1, .1 - ); - - Gtkmm2ext::UI::instance()->set_tip ( - mpks->tip_widget(), - _("Specify the audio signal level in dBFS at and above which the meter-peak indicator will flash red.")); - - add_option (S_("Preferences|Metering"), mpks); - add_option (S_("Preferences|Metering"), new OptionEditorHeading (_("Post Export Analysis"))); add_option (S_("Preferences|Metering"), @@ -2988,7 +3019,7 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_quieten_at_speed) ); Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), - _("When enabled rhis will reduce the unpleasant increase in perceived volume " + _("When enabled this will reduce the unpleasant increase in perceived volume " "that occurs when fast-forwarding or rewinding through some kinds of audio")); add_option (_("Transport"), bo); @@ -2999,8 +3030,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")); @@ -3536,6 +3570,14 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_blink_rec_arm) )); + add_option (_("Appearance"), + new BoolOption ( + "blink-alert-indicators", + _("Blink Alert Indicators"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_blink_alert_indicators), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_blink_alert_indicators) + )); + #ifndef __APPLE__ /* font scaling does nothing with GDK/Quartz */ @@ -3673,7 +3715,7 @@ RCOptionEditor::RCOptionEditor () 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) )); @@ -3742,14 +3784,6 @@ RCOptionEditor::RCOptionEditor () add_option (_("Appearance/Toolbar"), new OptionEditorBlank ()); - OptionEditorHeading* quirks_head = new OptionEditorHeading (_("Various Workarounds for Windowing Systems")); - - quirks_head->set_note (string_compose (_("Rules for closing, minimizing, maximizing, and stay-on-top can vary\n\ -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 (_("Appearance/Theme"), new OptionEditorHeading (_("Theme"))); @@ -3808,6 +3842,14 @@ These settings will only take effect after %1 is restarted.\n\ /* Quirks */ + OptionEditorHeading* quirks_head = new OptionEditorHeading (_("Various Workarounds for Windowing Systems")); + + 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)); + add_option (_("Appearance/Quirks"), quirks_head); bo = new BoolOption ( @@ -3917,10 +3959,6 @@ RCOptionEditor::parameter_changed (string const & p) } else if (p == "open-gui-after-adding-plugin" || p == "show-inline-display-by-default") { #if (defined LV2_SUPPORT && defined LV2_EXTENDED) _plugin_prefer_inline->set_sensitive (UIConfiguration::instance().get_open_gui_after_adding_plugin() && UIConfiguration::instance().get_show_inline_display_by_default()); -#endif -#ifdef ENABLE_NLS - } else if (p == "enable-translation") { - _l10n->set_sensitive (ARDOUR::translations_are_enabled ()); #endif } } @@ -3956,6 +3994,14 @@ 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) { + msg.hide (); + plugin_scan_refresh (); + } } delete pd; } @@ -3970,6 +4016,13 @@ 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) { + msg.hide (); + plugin_scan_refresh (); + } } delete pd; }