X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Frc_option_editor.cc;h=08d55a8f0e95fcbfbf3f08abb5a49fab560fe149;hb=5b2eb6107c3ae056e7c27182008b46b4df5c2b28;hp=787cfcd07d20daa4257b5a0e18e846cb419bef9d;hpb=7d553eea8028977021f1526b8ab538737a21767c;p=ardour.git diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 787cfcd07d..08d55a8f0e 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -43,12 +43,14 @@ #include "ardour/audio_backend.h" #include "ardour/audioengine.h" -#include "ardour/profile.h" -#include "ardour/dB.h" -#include "ardour/rc_configuration.h" #include "ardour/control_protocol_manager.h" +#include "ardour/dB.h" #include "ardour/port_manager.h" #include "ardour/plugin_manager.h" +#include "ardour/profile.h" +#include "ardour/rc_configuration.h" +#include "ardour/transport_master_manager.h" + #include "control_protocol/control_protocol.h" #include "waveview/wave_view.h" @@ -66,6 +68,7 @@ #include "midi_tracer.h" #include "rc_option_editor.h" #include "sfdb_ui.h" +#include "transport_masters_dialog.h" #include "ui_config.h" #include "utils.h" @@ -136,7 +139,7 @@ public: if (_rc_config->get_click_sound ().empty() && _rc_config->get_click_emphasis_sound().empty()) { _use_default_click_check_button.set_active (true); - _use_emphasis_on_click_check_button.set_active (true); + _use_emphasis_on_click_check_button.set_active (_rc_config->get_use_click_emphasis ()); } else { _use_default_click_check_button.set_active (false); @@ -1404,10 +1407,12 @@ class ControlSurfacesOptions : public OptionEditorMiniPage { //enable the Edit button when a row is selected for editing TreeModel::Row row = *(_view.get_selection()->get_selected()); - if (row && row[_model.enabled]) - edit_button->set_sensitive (true); - else + if (row && row[_model.enabled]) { + ControlProtocolInfo* cpi = row[_model.protocol_info]; + edit_button->set_sensitive (cpi && cpi->protocol && cpi->protocol->has_editor ()); + } else { edit_button->set_sensitive (false); + } } void view_changed (TreeModel::Path const &, TreeModel::iterator const & i) @@ -2107,14 +2112,7 @@ MidiPortOptions::pretty_name_edit (std::string const & path, string const & new_ return; } - boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - if (backend) { - ARDOUR::PortEngine::PortHandle ph = backend->get_port_by_name ((*iter)[midi_port_columns.name]); - if (ph) { - backend->set_port_property (ph, "http://jackaudio.org/metadata/pretty-name", new_text, ""); - (*iter)[midi_port_columns.pretty_name] = new_text; - } - } + AudioEngine::instance()->set_midi_port_pretty_name ((*iter)[midi_port_columns.name], new_text); } /*============*/ @@ -2136,7 +2134,6 @@ RCOptionEditor::RCOptionEditor () uint32_t hwcpus = hardware_concurrency (); BoolOption* bo; - BoolComboOption* bco; if (hwcpus > 1) { add_option (_("General"), new OptionEditorHeading (_("DSP CPU Utilization"))); @@ -2283,7 +2280,7 @@ RCOptionEditor::RCOptionEditor () )); -#ifdef ENABLE_NLS +#if ENABLE_NLS add_option (_("General/Translation"), new OptionEditorHeading (_("Internationalization"))); @@ -2306,14 +2303,6 @@ RCOptionEditor::RCOptionEditor () add_option (_("Editor"), new OptionEditorHeading (_("General"))); - add_option (_("Editor"), - new BoolOption ( - "rubberbanding-snaps-to-grid", - _("Snap rubberband to grid"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_rubberbanding_snaps_to_grid), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_rubberbanding_snaps_to_grid) - )); - bo = new BoolOption ( "name-new-markers", _("Prompt for new marker names"), @@ -2450,16 +2439,18 @@ RCOptionEditor::RCOptionEditor () add_option (_("Editor"), fadeshape); - bco = new BoolComboOption ( - "use-overlap-equivalency", - _("Regions in edit groups are edited together"), - _("whenever they overlap in time"), - _("only if they have identical length and position"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_use_overlap_equivalency), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_use_overlap_equivalency) + ComboOption *eqv = new ComboOption ( + "region-equivalence", + _("Regions in active edit groups are edited together"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_region_equivalence), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_region_equivalence) ); - add_option (_("Editor"), bco); + eqv->add (Overlap, _("whenever they overlap in time")); + eqv->add (Enclosed, _("if either encloses the other")); + eqv->add (Exact, _("only if they have identical length, position and origin")); + + add_option (_("Editor"), eqv); ComboOption* lm = new ComboOption ( "layer-model", @@ -2490,6 +2481,93 @@ RCOptionEditor::RCOptionEditor () add_option (_("Editor"), rsas); + add_option (_("Editor/Snap"), new OptionEditorHeading (_("General Snap options:"))); + + add_option (_("Editor/Snap"), + new SpinOption ( + "snap-threshold", + _("Snap Threshold (pixels)"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_snap_threshold), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_snap_threshold), + 10, 200, + 1, 10 + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "show-snapped-cursor", + _("Show \"snapped cursor\""), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_snapped_cursor), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_snapped_cursor) + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "rubberbanding-snaps-to-grid", + _("Snap rubberband selection to grid"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_rubberbanding_snaps_to_grid), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_rubberbanding_snaps_to_grid) + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "grid-follows-internal", + _("Grid switches to alternate selection for Internal Edit tools"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_grid_follows_internal), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_grid_follows_internal) + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "rulers-follow-grid", + _("Rulers automatically change to follow the Grid mode selection"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_rulers_follow_grid), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_rulers_follow_grid) + )); + + add_option (_("Editor/Snap"), new OptionEditorHeading (_("When \"Snap\" is enabled, snap to:"))); + + + add_option (_("Editor/Snap"), + new BoolOption ( + "snap-to-marks", + _("Markers"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_snap_to_marks), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_snap_to_marks) + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "snap-to-region-sync", + _("Region Sync Points"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_snap_to_region_sync), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_snap_to_region_sync) + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "snap-to-region-start", + _("Region Starts"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_snap_to_region_start), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_snap_to_region_start) + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "snap-to-region-end", + _("Region Ends"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_snap_to_region_end), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_snap_to_region_end) + )); + + add_option (_("Editor/Snap"), + new BoolOption ( + "snap-to-grid", + _("Grid"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_snap_to_grid), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_snap_to_grid) + )); + add_option (_("Editor/Modifiers"), new OptionEditorHeading (_("Keyboard Modifiers"))); add_option (_("Editor/Modifiers"), new KeyboardOptions); add_option (_("Editor/Modifiers"), new OptionEditorBlank ()); @@ -3131,16 +3209,9 @@ RCOptionEditor::RCOptionEditor () /* SYNC */ - add_option (_("Sync"), new OptionEditorHeading (_("External Synchronization"))); - - _sync_source = new ComboOption ( - "sync-source", - _("External timecode source"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_sync_source), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_sync_source) - ); + add_option (_("Sync"), new OptionEditorHeading (_("Transport Masters"))); - add_option (_("Sync"), _sync_source); + add_option (_("Sync"), new WidgetOption (X_("foo"), X_("Transport Masters"), _transport_masters_widget)); _sync_framerate = new BoolOption ( "timecode-sync-frame-rate", @@ -3158,64 +3229,6 @@ RCOptionEditor::RCOptionEditor () add_option (_("Sync"), _sync_framerate); - _sync_genlock = new BoolOption ( - "timecode-source-is-synced", - _("Sync-lock timecode to clock (disable drift compensation)"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_timecode_source_is_synced), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_timecode_source_is_synced) - ); - Gtkmm2ext::UI::instance()->set_tip - (_sync_genlock->tip_widget(), - string_compose (_("When enabled %1 will never varispeed when slaved to external timecode. " - "Sync Lock indicates that the selected external timecode source shares clock-sync " - "(Black & Burst, Wordclock, etc) with the audio interface. " - "This option disables drift compensation. The transport speed is fixed at 1.0. " - "Vari-speed LTC will be ignored and cause drift." - "\n\n" - "When disabled %1 will compensate for potential drift, regardless if the " - "timecode sources shares clock sync." - ), PROGRAM_NAME)); - - - add_option (_("Sync"), _sync_genlock); - - _sync_source_2997 = new BoolOption ( - "timecode-source-2997", - _("Lock to 29.9700 fps instead of 30000/1001"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_timecode_source_2997), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_timecode_source_2997) - ); - Gtkmm2ext::UI::instance()->set_tip - (_sync_source_2997->tip_widget(), - _("When enabled the external timecode source is assumed to use 29.97 fps instead of 30000/1001.\n" - "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 vendors use that rate - despite it being against the specs - " - "because the variant of using exactly 29.97 fps has zero timecode drift.\n" - )); - - add_option (_("Sync"), _sync_source_2997); - - add_option (_("Sync/LTC"), new OptionEditorHeading (_("Linear Timecode (LTC) Reader"))); - - _ltc_port = new ComboStringOption ( - "ltc-source-port", - _("LTC incoming port"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_ltc_source_port), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_ltc_source_port) - ); - - vector physical_inputs; - physical_inputs.push_back (_("None")); - AudioEngine::instance()->get_physical_inputs (DataType::AUDIO, physical_inputs); - _ltc_port->set_popdown_strings (physical_inputs); - - populate_sync_options (); - AudioEngine::instance()->Running.connect (engine_started_connection, MISSING_INVALIDATOR, boost::bind (&RCOptionEditor::populate_sync_options, this), gui_context()); - - add_option (_("Sync/LTC"), _ltc_port); - add_option (_("Sync/LTC"), new OptionEditorHeading (_("Linear Timecode (LTC) Generator"))); add_option (_("Sync/LTC"), @@ -3303,7 +3316,7 @@ RCOptionEditor::RCOptionEditor () _("Inbound MMC device ID"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_mmc_receive_device_id), sigc::mem_fun (*_rc_config, &RCConfiguration::set_mmc_receive_device_id), - 0, 128, 1, 10 + 0, 127, 1, 10 )); add_option (_("Sync/MIDI"), @@ -3312,7 +3325,7 @@ RCOptionEditor::RCOptionEditor () _("Outbound MMC device ID"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_mmc_send_device_id), sigc::mem_fun (*_rc_config, &RCConfiguration::set_mmc_send_device_id), - 0, 128, 1, 10 + 0, 127, 1, 10 )); @@ -3326,7 +3339,7 @@ RCOptionEditor::RCOptionEditor () add_option (_("MIDI Ports"), new BoolOption ( - "get-midi-input-follows-selection", + "midi-input-follows-selection", _("MIDI input follows MIDI track selection"), sigc::mem_fun (*_rc_config, &RCConfiguration::get_midi_input_follows_selection), sigc::mem_fun (*_rc_config, &RCConfiguration::set_midi_input_follows_selection) @@ -3728,6 +3741,23 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_never_display_periodic_midi) )); + + add_option (_("Appearance/Editor"), + new BoolOption ( + "use-note-bars-for-velocity", + _("Show velocity horizontally inside notes"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_use_note_bars_for_velocity), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_note_bars_for_velocity) + )); + + add_option (_("Appearance/Editor"), + new BoolOption ( + "use-note-color-for-velocity", + _("Use colors to show note velocity"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_use_note_color_for_velocity), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_note_color_for_velocity) + )); + add_option (_("Appearance/Editor"), new OptionEditorBlank ()); /* The names of these controls must be the same as those given in MixerStrip @@ -3814,7 +3844,7 @@ RCOptionEditor::RCOptionEditor () add_option (_("Appearance/Toolbar"), new ColumVisibilityOption ( - "action-table-columns", _("Lua Action Script Button Visibility"), 4, + "action-table-columns", _("Display Action-Buttons"), 4, sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_action_table_columns), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_action_table_columns) ) @@ -3833,6 +3863,13 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_flat_buttons) )); + add_option (_("Appearance/Theme"), new BoolOption ( + "boxy-buttons", + _("Draw \"boxy\" buttons"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_boxy_buttons), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_boxy_buttons) + )); + add_option (_("Appearance/Theme"), new BoolOption ( "meter-style-led", _("LED meter style"), @@ -3882,7 +3919,7 @@ RCOptionEditor::RCOptionEditor () 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\ + 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\ @@ -3959,6 +3996,13 @@ These settings will only take effect after %1 is restarted.\n\ set_current_page (_("General")); } +void +RCOptionEditor::set_session (Session *s) +{ + SessionHandlePtr::set_session (s); + _transport_masters_widget.set_session (s); +} + void RCOptionEditor::parameter_changed (string const & p) { @@ -3973,22 +4017,11 @@ RCOptionEditor::parameter_changed (string const & p) _solo_control_is_listen_control->set_sensitive (s); _listen_position->set_sensitive (s); } else if (p == "sync-source") { - _sync_source->set_sensitive (true); - if (_session) { - _sync_source->set_sensitive (!_session->config.get_external_sync()); - } - switch(Config->get_sync_source()) { - case ARDOUR::MTC: - case ARDOUR::LTC: - _sync_genlock->set_sensitive (true); + boost::shared_ptr tm (TransportMasterManager::instance().current()); + if (boost::dynamic_pointer_cast (tm)) { _sync_framerate->set_sensitive (true); - _sync_source_2997->set_sensitive (true); - break; - default: - _sync_genlock->set_sensitive (false); + } else { _sync_framerate->set_sensitive (false); - _sync_source_2997->set_sensitive (false); - break; } } else if (p == "send-ltc") { bool const s = Config->get_send_ltc (); @@ -4065,29 +4098,6 @@ void RCOptionEditor::edit_vst_path () { delete pd; } - -void -RCOptionEditor::populate_sync_options () -{ - vector sync_opts = ARDOUR::get_available_sync_options (); - - _sync_source->clear (); - - for (vector::iterator i = sync_opts.begin(); i != sync_opts.end(); ++i) { - _sync_source->add (*i, sync_source_to_string (*i)); - } - - if (sync_opts.empty()) { - _sync_source->set_sensitive(false); - } else { - if (std::find(sync_opts.begin(), sync_opts.end(), _rc_config->get_sync_source()) == sync_opts.end()) { - _rc_config->set_sync_source(sync_opts.front()); - } - } - - parameter_changed ("sync-source"); -} - Gtk::Window* RCOptionEditor::use_own_window (bool and_fill_it) {