X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Frc_option_editor.cc;h=8e562f4279805bfd06ba6f31bd4b96b718951f6d;hb=9480dc1c6ace4a1ed138c9e738e28c21064e9541;hp=f729c98d48244ded8ecb82e75abf66f58c247374;hpb=9c622e3c99996e947e62d36020cd9a490328fec9;p=ardour.git diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index f729c98d48..8e562f4279 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -55,6 +55,7 @@ #include "ardour_window.h" #include "ardour_dialog.h" #include "ardour_ui.h" +#include "color_theme_manager.h" #include "gui_thread.h" #include "meter_patterns.h" #include "midi_tracer.h" @@ -65,7 +66,7 @@ #include "keyboard.h" #include "theme_manager.h" #include "ui_config.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace Gtk; @@ -111,7 +112,7 @@ public: sigc::mem_fun (*this, &ClickOptions::click_emphasis_browse_clicked)); t->attach (_click_emphasis_browse_button, 2, 3, 3, 4, FILL); - _box->pack_start (*t, false, false); + _box->pack_start (*t, true, false); _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)); @@ -338,6 +339,7 @@ static const struct { { "Option", GDK_MOD1_MASK }, { "Command-Shift", GDK_MOD2_MASK|GDK_SHIFT_MASK }, { "Command-Option", GDK_MOD2_MASK|GDK_MOD1_MASK }, + { "Command-Control", GDK_MOD2_MASK|GDK_CONTROL_MASK }, { "Command-Option-Control", GDK_MOD2_MASK|GDK_MOD1_MASK|GDK_CONTROL_MASK }, { "Option-Control", GDK_MOD1_MASK|GDK_CONTROL_MASK }, { "Option-Shift", GDK_MOD1_MASK|GDK_SHIFT_MASK }, @@ -350,6 +352,7 @@ static const struct { { "Alt", GDK_MOD1_MASK }, { "Control-Shift", GDK_CONTROL_MASK|GDK_SHIFT_MASK }, { "Control-Alt", GDK_CONTROL_MASK|GDK_MOD1_MASK }, + { "Control-Windows", GDK_CONTROL_MASK|GDK_MOD4_MASK }, { "Control-Shift-Alt", GDK_CONTROL_MASK|GDK_SHIFT_MASK|GDK_MOD1_MASK }, { "Alt-Windows", GDK_MOD1_MASK|GDK_MOD4_MASK }, { "Alt-Shift", GDK_MOD1_MASK|GDK_SHIFT_MASK }, @@ -540,12 +543,13 @@ public: /* constraint modifier */ set_popdown_strings (_constraint_modifier_combo, dumb); _constraint_modifier_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::constraint_modifier_chosen)); + std::string mod_str = string_compose (X_("%1-%2"), Keyboard::primary_modifier_name (), Keyboard::level4_modifier_name ()); Gtkmm2ext::UI::instance()->set_tip (_constraint_modifier_combo, (string_compose (_("Recommended Setting: %1%2"), #ifdef __APPLE__ Keyboard::primary_modifier_name (), #else - Keyboard::secondary_modifier_name (), + Keyboard::tertiary_modifier_name (), #endif restart_msg))); for (int x = 0; modifiers[x].name; ++x) { @@ -561,6 +565,29 @@ public: t->attach (*l, col, col + 1, row, row + 1, FILL | EXPAND, FILL); t->attach (_constraint_modifier_combo, col + 1, col + 2, row, row + 1, FILL | EXPAND, FILL); + ++row; + col = 1; + + /* push points */ + set_popdown_strings (_push_points_combo, dumb); + _push_points_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::push_points_modifier_chosen)); + + mod_str = string_compose (X_("%1-%2"), Keyboard::primary_modifier_name (), Keyboard::level4_modifier_name ()); + Gtkmm2ext::UI::instance()->set_tip (_push_points_combo, + (string_compose (_("Recommended Setting: %1%2"), mod_str, restart_msg))); + for (int x = 0; modifiers[x].name; ++x) { + if (modifiers[x].modifier == (guint) ArdourKeyboard::push_points_modifier ()) { + _push_points_combo.set_active_text (S_(modifiers[x].name)); + break; + } + } + + l = manage (left_aligned_label (_("Push points using:"))); + l->set_name ("OptionsLabel"); + + t->attach (*l, col, col + 1, row, row + 1, FILL | EXPAND, FILL); + t->attach (_push_points_combo, col + 1, col + 2, row, row + 1, FILL | EXPAND, FILL); + ++row; l = manage (left_aligned_label (_("When Beginning a Trim:"))); @@ -594,8 +621,10 @@ public: /* anchored trim */ set_popdown_strings (_trim_anchored_combo, dumb); _trim_anchored_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::trim_anchored_modifier_chosen)); + + mod_str = string_compose (X_("%1-%2"), Keyboard::primary_modifier_name (), Keyboard::tertiary_modifier_name ()); Gtkmm2ext::UI::instance()->set_tip (_trim_anchored_combo, - (string_compose (_("Recommended Setting: %1%2"), Keyboard::tertiary_modifier_name (), restart_msg))); + (string_compose (_("Recommended Setting: %1%2"), mod_str, restart_msg))); for (int x = 0; modifiers[x].name; ++x) { if (modifiers[x].modifier == (guint) ArdourKeyboard::trim_anchored_modifier ()) { _trim_anchored_combo.set_active_text (S_(modifiers[x].name)); @@ -639,7 +668,7 @@ public: set_popdown_strings (_note_size_relative_combo, dumb); _note_size_relative_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::note_size_relative_modifier_chosen)); Gtkmm2ext::UI::instance()->set_tip (_note_size_relative_combo, - (string_compose (_("Recommended Setting: %1%2"), Keyboard::primary_modifier_name (), restart_msg))); + (string_compose (_("Recommended Setting: %1%2"), Keyboard::tertiary_modifier_name (), restart_msg))); for (int x = 0; modifiers[x].name; ++x) { if (modifiers[x].modifier == (guint) ArdourKeyboard::note_size_relative_modifier ()) { _note_size_relative_combo.set_active_text (S_(modifiers[x].name)); @@ -667,9 +696,9 @@ public: set_popdown_strings (_snap_modifier_combo, dumb); _snap_modifier_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::snap_modifier_chosen)); #ifdef __APPLE__ - std::string mod_str = string_compose (X_("%1-%2"), Keyboard::level4_modifier_name (), Keyboard::tertiary_modifier_name ()); + mod_str = string_compose (X_("%1-%2"), Keyboard::level4_modifier_name (), Keyboard::tertiary_modifier_name ()); #else - std::string mod_str = Keyboard::secondary_modifier_name(); + mod_str = Keyboard::secondary_modifier_name(); #endif Gtkmm2ext::UI::instance()->set_tip (_snap_modifier_combo, (string_compose (_("Recommended Setting: %1%2"), mod_str, restart_msg))); @@ -753,7 +782,7 @@ public: set_popdown_strings (_fine_adjust_combo, dumb); _fine_adjust_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::fine_adjust_modifier_chosen)); - mod_str = string_compose (X_("%1-%2"), Keyboard::secondary_modifier_name (), Keyboard::tertiary_modifier_name ()); + mod_str = string_compose (X_("%1-%2"), Keyboard::primary_modifier_name (), Keyboard::secondary_modifier_name ()); Gtkmm2ext::UI::instance()->set_tip (_fine_adjust_combo, (string_compose (_("Recommended Setting: %1%2"), mod_str, restart_msg))); for (int x = 0; modifiers[x].name; ++x) { @@ -769,28 +798,6 @@ public: t->attach (*l, col, col + 1, row, row + 1, FILL | EXPAND, FILL); t->attach (_fine_adjust_combo, col + 1, col + 2, row, row + 1, FILL | EXPAND, FILL); - ++row; - col = 1; - - /* push points */ - set_popdown_strings (_push_points_combo, dumb); - _push_points_combo.signal_changed().connect (sigc::mem_fun(*this, &KeyboardOptions::push_points_modifier_chosen)); - - Gtkmm2ext::UI::instance()->set_tip (_push_points_combo, - (string_compose (_("Recommended Setting: %1%2"), Keyboard::primary_modifier_name (), restart_msg))); - for (int x = 0; modifiers[x].name; ++x) { - if (modifiers[x].modifier == (guint) ArdourKeyboard::push_points_modifier ()) { - _push_points_combo.set_active_text (S_(modifiers[x].name)); - break; - } - } - - l = manage (left_aligned_label (_("Push points using:"))); - l->set_name ("OptionsLabel"); - - t->attach (*l, col, col + 1, row, row + 1, FILL | EXPAND, FILL); - t->attach (_push_points_combo, col + 1, col + 2, row, row + 1, FILL | EXPAND, FILL); - _box->pack_start (*t, false, false); } @@ -826,7 +833,7 @@ private: string const txt = _edit_modifier_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { Keyboard::set_edit_modifier (modifiers[i].modifier); break; } @@ -838,7 +845,7 @@ private: string const txt = _delete_modifier_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { Keyboard::set_delete_modifier (modifiers[i].modifier); break; } @@ -850,7 +857,7 @@ private: string const txt = _copy_modifier_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { Keyboard::set_copy_modifier (modifiers[i].modifier); break; } @@ -862,7 +869,7 @@ private: string const txt = _insert_note_modifier_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { Keyboard::set_insert_note_modifier (modifiers[i].modifier); break; } @@ -874,7 +881,7 @@ private: string const txt = _snap_modifier_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { Keyboard::set_snap_modifier (modifiers[i].modifier); break; } @@ -886,7 +893,7 @@ private: string const txt = _snap_delta_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { Keyboard::set_snap_delta_modifier (modifiers[i].modifier); break; } @@ -898,7 +905,7 @@ private: string const txt = _constraint_modifier_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { ArdourKeyboard::set_constraint_modifier (modifiers[i].modifier); break; } @@ -910,7 +917,7 @@ private: string const txt = _trim_contents_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { ArdourKeyboard::set_trim_contents_modifier (modifiers[i].modifier); break; } @@ -922,7 +929,7 @@ private: string const txt = _trim_overlap_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { ArdourKeyboard::set_trim_overlap_modifier (modifiers[i].modifier); break; } @@ -934,7 +941,7 @@ private: string const txt = _trim_anchored_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { ArdourKeyboard::set_trim_anchored_modifier (modifiers[i].modifier); break; } @@ -946,7 +953,7 @@ private: string const txt = _fine_adjust_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { ArdourKeyboard::set_fine_adjust_modifier (modifiers[i].modifier); break; } @@ -958,7 +965,7 @@ private: string const txt = _push_points_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { ArdourKeyboard::set_push_points_modifier (modifiers[i].modifier); break; } @@ -970,7 +977,7 @@ private: string const txt = _note_size_relative_combo.get_active_text(); for (int i = 0; modifiers[i].name; ++i) { - if (txt == _(modifiers[i].name)) { + if (txt == S_(modifiers[i].name)) { ArdourKeyboard::set_note_size_relative_modifier (modifiers[i].modifier); break; } @@ -1361,7 +1368,7 @@ public: edit_box->set_spacing(3); _box->pack_start (*edit_box, false, false); edit_box->show (); - + Label* label = manage (new Label); label->set_text (_("Click to edit the settings for selected protocol ( it must be ENABLED first ):")); edit_box->pack_start (*label, false, false); @@ -1431,7 +1438,7 @@ private: else edit_button->set_sensitive (false); } - + void view_changed (TreeModel::Path const &, TreeModel::iterator const & i) { TreeModel::Row r = *i; @@ -1853,7 +1860,6 @@ RCOptionEditor::RCOptionEditor () , _rc_config (Config) , _mixer_strip_visibility ("mixer-element-visibility") { - UIConfiguration::instance().ParameterChanged.connect (sigc::mem_fun (*this, &RCOptionEditor::parameter_changed)); /* MISC */ @@ -1876,7 +1882,7 @@ RCOptionEditor::RCOptionEditor () procs->add (0, _("all available processors")); for (uint32_t i = 1; i <= hwcpus; ++i) { - procs->add (i, string_compose (_("%1 processors"), i)); + procs->add (i, string_compose (P_("%1 processor", "%1 processors", i), i)); } procs->set_note (string_compose (_("This setting will only take effect when %1 is restarted."), PROGRAM_NAME)); @@ -1930,11 +1936,11 @@ RCOptionEditor::RCOptionEditor () 0, 1000, 1, 20 )); - add_option (_("Misc"), new OptionEditorHeading (_("Click"))); + add_option (_("Misc/Click"), new OptionEditorHeading (_("Click"))); - add_option (_("Misc"), new ClickOptions (_rc_config)); + add_option (_("Misc/Click"), new ClickOptions (_rc_config)); - add_option (_("Misc"), + add_option (_("Misc/Click"), new FaderOption ( "click-gain", _("Click gain level"), @@ -2184,7 +2190,7 @@ RCOptionEditor::RCOptionEditor () Gtkmm2ext::UI::instance()->set_tip (_ltc_volume_slider->tip_widget(), - _("Specify the Peak Volume of the generated LTC signal in dbFS. A good value is 0dBu ^= -18dbFS in an EBU calibrated system")); + _("Specify the Peak Volume of the generated LTC signal in dBFS. A good value is 0dBu ^= -18dBFS in an EBU calibrated system")); add_option (_("Transport/Sync"), _ltc_volume_slider); @@ -2216,14 +2222,6 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_draggable_playhead) )); - add_option (_("Editor"), - new BoolOption ( - "show-track-meters", - _("Show meters on tracks in the editor"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_track_meters), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_track_meters) - )); - add_option (_("Editor"), new BoolOption ( "show-editor-meter", @@ -2344,11 +2342,11 @@ if (!Profile->get_mixbus()) { rsas->add(ExistingNewlyCreatedBoth, _("existing selection and newly-created regions")); add_option (_("Editor"), rsas); - - add_option (_("Editor"), new OptionEditorHeading (_("Waveforms"))); + + add_option (_("Editor/Waveforms"), new OptionEditorHeading (_("Waveforms"))); if (!Profile->get_mixbus()) { - add_option (_("Editor"), + add_option (_("Editor/Waveforms"), new BoolOption ( "show-waveforms", _("Show waveforms in regions"), @@ -2357,7 +2355,7 @@ if (!Profile->get_mixbus()) { )); } // !mixbus - add_option (_("Editor"), + add_option (_("Editor/Waveforms"), new BoolOption ( "show-waveforms-while-recording", _("Show waveforms for audio while it is being recorded"), @@ -2375,7 +2373,7 @@ if (!Profile->get_mixbus()) { wfs->add (Linear, _("linear")); wfs->add (Logarithmic, _("logarithmic")); - add_option (_("Editor"), wfs); + add_option (_("Editor/Waveforms"), wfs); ComboOption* wfsh = new ComboOption ( "waveform-shape", @@ -2387,9 +2385,9 @@ if (!Profile->get_mixbus()) { wfsh->add (Traditional, _("traditional")); wfsh->add (Rectified, _("rectified")); - add_option (_("Editor"), wfsh); + add_option (_("Editor/Waveforms"), wfsh); - add_option (_("Editor"), new ClipLevelOptions ()); + add_option (_("Editor/Waveforms"), new ClipLevelOptions ()); /* AUDIO */ @@ -2524,24 +2522,6 @@ if (!Profile->get_mixbus()) { add_option (_("Audio"), dm); - add_option (_("Audio"), new OptionEditorHeading (_("Plugins"))); - - add_option (_("Audio"), - new BoolOption ( - "plugins-stop-with-transport", - _("Silence plugins when the transport is stopped"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_plugins_stop_with_transport), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_plugins_stop_with_transport) - )); - - add_option (_("Audio"), - new BoolOption ( - "new-plugins-active", - _("Make new plugins active"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_new_plugins_active), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_new_plugins_active) - )); - add_option (_("Audio"), new OptionEditorHeading (_("Regions"))); add_option (_("Audio"), @@ -2675,10 +2655,9 @@ if (!Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::set_mute_affects_main_outs) )); - add_option (_("Solo & mute"), new OptionEditorHeading (_("Send Routing"))); - if (!ARDOUR::Profile->get_mixbus()) { + add_option (_("Solo & mute"), new OptionEditorHeading (_("Send Routing"))); add_option (_("Solo & mute"), new BoolOption ( "link-send-and-route-panner", @@ -2741,9 +2720,9 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::set_midi_feedback) )); - add_option (_("MIDI"), new OptionEditorHeading (_("MIDI Clock"))); + add_option (_("MIDI/Sync"), new OptionEditorHeading (_("MIDI Clock"))); - add_option (_("MIDI"), + add_option (_("MIDI/Sync"), new BoolOption ( "send-midi-clock", _("Send MIDI Clock"), @@ -2751,9 +2730,9 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::set_send_midi_clock) )); - add_option (_("MIDI"), new OptionEditorHeading (_("MIDI Time Code (MTC)"))); + add_option (_("MIDI/Sync"), new OptionEditorHeading (_("MIDI Time Code (MTC)"))); - add_option (_("MIDI"), + add_option (_("MIDI/Sync"), new BoolOption ( "send-mtc", _("Send MIDI Time Code"), @@ -2761,7 +2740,7 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::set_send_mtc) )); - add_option (_("MIDI"), + add_option (_("MIDI/Sync"), new SpinOption ( "mtc-qf-speed-tolerance", _("Percentage either side of normal transport speed to transmit MTC"), @@ -2770,9 +2749,9 @@ if (!ARDOUR::Profile->get_mixbus()) { 0, 20, 1, 5 )); - add_option (_("MIDI"), new OptionEditorHeading (_("Midi Machine Control (MMC)"))); + add_option (_("MIDI/Sync"), new OptionEditorHeading (_("Midi Machine Control (MMC)"))); - add_option (_("MIDI"), + add_option (_("MIDI/Sync"), new BoolOption ( "mmc-control", _("Obey MIDI Machine Control commands"), @@ -2780,7 +2759,7 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::set_mmc_control) )); - add_option (_("MIDI"), + add_option (_("MIDI/Sync"), new BoolOption ( "send-mmc", _("Send MIDI Machine Control commands"), @@ -2788,7 +2767,7 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::set_send_mmc) )); - add_option (_("MIDI"), + add_option (_("MIDI/Sync"), new SpinOption ( "mmc-receive-device-id", _("Inbound MMC device ID"), @@ -2797,7 +2776,7 @@ if (!ARDOUR::Profile->get_mixbus()) { 0, 128, 1, 10 )); - add_option (_("MIDI"), + add_option (_("MIDI/Sync"), new SpinOption ( "mmc-send-device-id", _("Outbound MMC device ID"), @@ -2859,28 +2838,19 @@ if (!ARDOUR::Profile->get_mixbus()) { add_option (_("Control Surfaces"), new ControlSurfacesOptions); - ComboOption* rm = new ComboOption ( - "remote-model", - _("Control surface remote ID"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_remote_model), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_remote_model) - ); - - rm->add (UserOrdered, _("assigned by user")); - rm->add (MixerOrdered, _("follows order of mixer")); - - add_option (_("Control Surfaces"), rm); - /* VIDEO Timeline */ add_option (_("Video"), new VideoTimelineOptions (_rc_config)); #if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT || defined AUDIOUNIT_SUPPORT) - add_option (_("Plugins"), new OptionEditorHeading (_("General"))); - add_option (_("Plugins"), new RcActionButton (_("Scan for Plugins"), sigc::mem_fun (*this, &RCOptionEditor::plugin_scan_refresh))); +#endif + + add_option (_("Plugins"), new OptionEditorHeading (_("General"))); + +#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT || defined AUDIOUNIT_SUPPORT) bo = new BoolOption ( "show-plugin-scan-window", _("Always Display Plugin Scan Progress"), @@ -2890,11 +2860,33 @@ if (!ARDOUR::Profile->get_mixbus()) { add_option (_("Plugins"), bo); Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), _("When enabled a popup window showing plugin scan progress is displayed for indexing (cache load) and discovery (detect new plugins)")); - #endif + bo = new BoolOption ( + "plugins-stop-with-transport", + _("Silence plugins when the transport is stopped"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_plugins_stop_with_transport), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_plugins_stop_with_transport) + ); + add_option (_("Plugins"), bo); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + _("When enabled plugins will be reset at transport stop. When disabled plugins will be left unchanged at transport stop.\n\nThis mostly affects plugins with a \"tail\" like Reverbs.")); + + bo = new BoolOption ( + "new-plugins-active", + _("Make new plugins active"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_new_plugins_active), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_new_plugins_active) + ); + add_option (_("Plugins"), bo); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + _("When enabled plugins will be activated when they are added to tracks/busses. When disabled plugins will be left inactive when they are added to tracks/busses")); + #if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT) - add_option (_("Plugins"), new OptionEditorHeading (_("VST"))); + add_option (_("Plugins/VST"), new OptionEditorHeading (_("VST"))); + add_option (_("Plugins/VST"), + new RcActionButton (_("Scan for Plugins"), + sigc::mem_fun (*this, &RCOptionEditor::plugin_scan_refresh))); bo = new BoolOption ( "discover-vst-on-start", @@ -2902,7 +2894,7 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::get_discover_vst_on_start), sigc::mem_fun (*_rc_config, &RCConfiguration::set_discover_vst_on_start) ); - add_option (_("Plugins"), bo); + add_option (_("Plugins/VST"), bo); Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), _("When enabled new VST plugins are searched, tested and added to the cache index on application start. When disabled new plugins will only be available after triggering a 'Scan' manually")); @@ -2914,40 +2906,40 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (*_rc_config, &RCConfiguration::get_verbose_plugin_scan), sigc::mem_fun (*_rc_config, &RCConfiguration::set_verbose_plugin_scan) ); - add_option (_("Plugins"), bo); + add_option (_("Plugins/VST"), bo); Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), _("When enabled additional information for every plugin is added to the Log Window.")); #endif - add_option (_("Plugins"), new VstTimeOutSliderOption (_rc_config)); + add_option (_("Plugins/VST"), new VstTimeOutSliderOption (_rc_config)); - add_option (_("Plugins"), + add_option (_("Plugins/VST"), new RcActionButton (_("Clear"), sigc::mem_fun (*this, &RCOptionEditor::clear_vst_cache), _("VST Cache:"))); - add_option (_("Plugins"), + add_option (_("Plugins/VST"), new RcActionButton (_("Clear"), sigc::mem_fun (*this, &RCOptionEditor::clear_vst_blacklist), _("VST Blacklist:"))); #endif #ifdef LXVST_SUPPORT - add_option (_("Plugins"), + add_option (_("Plugins/VST"), new RcActionButton (_("Edit"), sigc::mem_fun (*this, &RCOptionEditor::edit_lxvst_path), _("Linux VST Path:"))); - add_option (_("Plugins"), + add_option (_("Plugins/VST"), new RcConfigDisplay ( "plugin-path-lxvst", _("Path:"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_plugin_path_lxvst), - ':')); + 0)); #endif #ifdef WINDOWS_VST_SUPPORT - add_option (_("Plugins"), + add_option (_("Plugins/VST"), new RcActionButton (_("Edit"), sigc::mem_fun (*this, &RCOptionEditor::edit_vst_path), _("Windows VST Path:"))); @@ -2960,7 +2952,11 @@ if (!ARDOUR::Profile->get_mixbus()) { #endif #ifdef AUDIOUNIT_SUPPORT - add_option (_("Plugins"), new OptionEditorHeading (_("Audio Unit"))); + + add_option (_("Plugins/Audio Unit"), new OptionEditorHeading (_("Audio Unit"))); + add_option (_("Plugins/Audio Unit"), + new RcActionButton (_("Scan for Plugins"), + sigc::mem_fun (*this, &RCOptionEditor::plugin_scan_refresh))); bo = new BoolOption ( "discover-audio-units", @@ -2972,12 +2968,12 @@ if (!ARDOUR::Profile->get_mixbus()) { Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), _("When enabled Audio Unit Plugins are discovered on application start. When disabled AU plugins will only be available after triggering a 'Scan' manually. The first successful scan will enable AU auto-scan, Any crash during plugin discovery will disable it.")); - add_option (_("Plugins"), + add_option (_("Plugins/Audio Unit"), new RcActionButton (_("Clear"), sigc::mem_fun (*this, &RCOptionEditor::clear_au_cache), _("AU Cache:"))); - add_option (_("Plugins"), + add_option (_("Plugins/Audio Unit"), new RcActionButton (_("Clear"), sigc::mem_fun (*this, &RCOptionEditor::clear_au_blacklist), _("AU Blacklist:"))); @@ -2993,7 +2989,7 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_open_gui_after_adding_plugin) )); -#ifdef LV2_SUPPORT +#if (defined LV2_SUPPORT && defined LV2_EXTENDED) add_option (_("Plugins"), new BoolOption ( "show-inline-display-by-default", @@ -3010,6 +3006,27 @@ if (!ARDOUR::Profile->get_mixbus()) { ); add_option (_("Plugins"), _plugin_prefer_inline); #endif + + add_option (_("Plugins"), new OptionEditorHeading (_("Instrument"))); + + bo = new BoolOption ( + "ask-replace-instrument", + _("Ask to replace existing instrument plugin"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_ask_replace_instrument), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_ask_replace_instrument) + ); + add_option (_("Plugins"), bo); + + bo = new BoolOption ( + "ask-setup_instrument", + _("Interactively configure instrument plugins on insert"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_ask_setup_instrument), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_ask_setup_instrument) + ); + add_option (_("Plugins"), bo); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + _("When enabled show a dialog to select instrument channel configuration before adding a multichannel plugin.")); + #endif /* INTERFACE */ @@ -3039,6 +3056,14 @@ if (!ARDOUR::Profile->get_mixbus()) { add_option (S_("Preferences|GUI"), bgo); #endif + add_option (S_("Preferences|GUI"), + new BoolOption ( + "use-wm-visibility", + _("Use Window Manager/Desktop visibility information"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_use_wm_visibility), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_wm_visibility) + )); + add_option (S_("Preferences|GUI"), new BoolOption ( "widget-prelight", @@ -3047,7 +3072,6 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_widget_prelight) )); -#ifdef TOOLTIPS_GOT_FIXED add_option (S_("Preferences|GUI"), new BoolOption ( "use-tooltips", @@ -3055,7 +3079,6 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_use_tooltips), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_tooltips) )); -#endif add_option (S_("Preferences|GUI"), new BoolOption ( @@ -3120,6 +3143,7 @@ if (!ARDOUR::Profile->get_mixbus()) { _mixer_strip_visibility.add (0, X_("SoloIsoLock"), _("Solo Iso / Lock")); _mixer_strip_visibility.add (0, X_("Output"), _("Output")); _mixer_strip_visibility.add (0, X_("Comments"), _("Comments")); + _mixer_strip_visibility.add (0, X_("VCA"), _("VCA Assigns")); add_option ( S_("Preferences|GUI"), @@ -3284,7 +3308,7 @@ if (!ARDOUR::Profile->get_mixbus()) { 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.")); + _("Specify the audio signal level in dBFS at and above which the meter-peak indicator will flash red.")); add_option (S_("Preferences|Metering"), mpks); @@ -3296,15 +3320,54 @@ if (!ARDOUR::Profile->get_mixbus()) { sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_meter_style_led) )); + add_option (S_("Preferences|Metering"), new OptionEditorHeading (_("Editor Meters"))); + + add_option (S_("Preferences|Metering"), + new BoolOption ( + "show-track-meters", + _("Show meters on tracks in the editor"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_track_meters), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_track_meters) + )); + + add_option (S_("Preferences|Metering"), + new BoolOption ( + "editor-stereo-only-meters", + _("Show at most stereo meters in the track-header"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_editor_stereo_only_meters), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_editor_stereo_only_meters) + )); + + add_option (S_("Preferences|Metering"), new OptionEditorHeading (_("Post Export Analysis"))); + + add_option (S_("Preferences|Metering"), + new BoolOption ( + "save-export-analysis-image", + _("Save loudness analysis as image file"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_save_export_analysis_image), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_save_export_analysis_image) + )); + /* and now the theme manager */ ThemeManager* tm = manage (new ThemeManager); add_page (_("Theme"), *tm); + add_option (_("Theme/Colors"), new ColorThemeManager); + //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(); + if (node) { + /* gcc4 complains about ambiguity with Gtk::Widget::set_state + (Gtk::StateType) here !!! + */ + Tabbable::set_state (*node, Stateful::loading_state_version); + } } void @@ -3343,7 +3406,7 @@ RCOptionEditor::parameter_changed (string const & p) _ltc_send_continuously->set_sensitive (s); _ltc_volume_slider->set_sensitive (s); } else if (p == "open-gui-after-adding-plugin" || p == "show-inline-display-by-default") { -#ifdef LV2_SUPPORT +#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 } @@ -3428,7 +3491,7 @@ RCOptionEditor::populate_sync_options () Gtk::Window* RCOptionEditor::use_own_window (bool and_fill_it) { - bool new_window = !own_window(); + bool new_window = !own_window (); Gtk::Window* win = Tabbable::use_own_window (and_fill_it); @@ -3439,3 +3502,11 @@ RCOptionEditor::use_own_window (bool and_fill_it) return win; } + +XMLNode& +RCOptionEditor::get_state () +{ + XMLNode* node = new XMLNode (X_("Preferences")); + node->add_child_nocopy (Tabbable::get_state()); + return *node; +}