+ add_option (_("Editor"), bco);
+
+ ComboOption<LayerModel>* lm = new ComboOption<LayerModel> (
+ "layer-model",
+ _("Layering model"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_layer_model),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_layer_model)
+ );
+
+ lm->add (LaterHigher, _("later is higher"));
+ lm->add (Manual, _("manual layering"));
+ add_option (_("Editor"), lm);
+
+ ComboOption<RegionSelectionAfterSplit> *rsas = new ComboOption<RegionSelectionAfterSplit> (
+ "region-selection-after-split",
+ _("After splitting selected regions, select"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_region_selection_after_split),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_region_selection_after_split));
+
+ // TODO: decide which of these modes are really useful
+ rsas->add(None, _("no regions"));
+ // rsas->add(NewlyCreatedLeft, _("newly-created regions before the split"));
+ // rsas->add(NewlyCreatedRight, _("newly-created regions after the split"));
+ rsas->add(NewlyCreatedBoth, _("newly-created regions"));
+ // rsas->add(Existing, _("unmodified regions in the existing selection"));
+ // rsas->add(ExistingNewlyCreatedLeft, _("existing selection and newly-created regions before the split"));
+ // rsas->add(ExistingNewlyCreatedRight, _("existing selection and newly-created regions after the split"));
+ rsas->add(ExistingNewlyCreatedBoth, _("existing selection and newly-created regions"));
+
+ add_option (_("Editor"), rsas);
+
+ add_option (_("Editor/Modifiers"), new OptionEditorHeading (_("Keyboard Modifiers")));
+ add_option (_("Editor/Modifiers"), new KeyboardOptions);
+ add_option (_("Editor/Modifiers"), new OptionEditorBlank ());
+
+ /* MIXER -- SOLO AND MUTE */
+
+ add_option (_("Mixer"), new OptionEditorHeading (_("Solo")));
+
+ _solo_control_is_listen_control = new BoolOption (
+ "solo-control-is-listen-control",
+ _("Solo controls are Listen controls"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_solo_control_is_listen_control),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_solo_control_is_listen_control)
+ );
+
+ add_option (_("Mixer"), _solo_control_is_listen_control);
+
+ add_option (_("Mixer"),
+ new BoolOption (
+ "exclusive-solo",
+ _("Exclusive solo"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_exclusive_solo),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_exclusive_solo)
+ ));
+
+ add_option (_("Mixer"),
+ new BoolOption (
+ "show-solo-mutes",
+ _("Show solo muting"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_show_solo_mutes),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_solo_mutes)
+ ));
+
+ add_option (_("Mixer"),
+ new BoolOption (
+ "solo-mute-override",
+ _("Soloing overrides muting"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_solo_mute_override),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_solo_mute_override)
+ ));
+
+ add_option (_("Mixer"),
+ new FaderOption (
+ "solo-mute-gain",
+ _("Solo-in-place mute cut (dB)"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_solo_mute_gain),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_solo_mute_gain)
+ ));
+
+ _listen_position = new ComboOption<ListenPosition> (
+ "listen-position",
+ _("Listen Position"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_listen_position),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_listen_position)
+ );
+
+ _listen_position->add (AfterFaderListen, _("after-fader (AFL)"));
+ _listen_position->add (PreFaderListen, _("pre-fader (PFL)"));
+
+ add_option (_("Mixer"), _listen_position);
+
+ ComboOption<PFLPosition>* pp = new ComboOption<PFLPosition> (
+ "pfl-position",
+ _("PFL signals come from"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_pfl_position),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_pfl_position)
+ );
+
+ pp->add (PFLFromBeforeProcessors, _("before pre-fader processors"));
+ pp->add (PFLFromAfterProcessors, _("pre-fader but after pre-fader processors"));
+
+ add_option (_("Mixer"), pp);
+
+ ComboOption<AFLPosition>* pa = new ComboOption<AFLPosition> (
+ "afl-position",
+ _("AFL signals come from"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_afl_position),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_afl_position)
+ );
+
+ pa->add (AFLFromBeforeProcessors, _("immediately post-fader"));
+ pa->add (AFLFromAfterProcessors, _("after post-fader processors (before pan)"));
+
+ add_option (_("Mixer"), pa);
+
+ add_option (_("Mixer"), new OptionEditorHeading (_("Default Track / Bus Muting Options")));
+
+ add_option (_("Mixer"),
+ new BoolOption (
+ "mute-affects-pre-fader",
+ _("Mute affects pre-fader sends"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_mute_affects_pre_fader),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_mute_affects_pre_fader)
+ ));
+
+ add_option (_("Mixer"),
+ new BoolOption (
+ "mute-affects-post-fader",
+ _("Mute affects post-fader sends"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_mute_affects_post_fader),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_mute_affects_post_fader)
+ ));
+
+ add_option (_("Mixer"),
+ new BoolOption (
+ "mute-affects-control-outs",
+ _("Mute affects control outputs"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_mute_affects_control_outs),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_mute_affects_control_outs)
+ ));
+
+ add_option (_("Mixer"),
+ new BoolOption (
+ "mute-affects-main-outs",
+ _("Mute affects main outputs"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_mute_affects_main_outs),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_mute_affects_main_outs)
+ ));
+
+
+ if (!ARDOUR::Profile->get_mixbus()) {
+ add_option (_("Mixer"), new OptionEditorHeading (_("Send Routing")));
+ add_option (_("Mixer"),
+ new BoolOption (
+ "link-send-and-route-panner",
+ _("Link panners of Aux and External Sends with main panner by default"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_link_send_and_route_panner),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_link_send_and_route_panner)
+ ));
+ }
+
+ /* Signal Flow */
+
+ add_option (_("Signal Flow"), new OptionEditorHeading (_("Monitoring")));
+
+ ComboOption<MonitorModel>* mm = new ComboOption<MonitorModel> (
+ "monitoring-model",
+ _("Record monitoring handled by"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_monitoring_model),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_monitoring_model)
+ );
+
+ if (AudioEngine::instance()->port_engine().can_monitor_input()) {
+ mm->add (HardwareMonitoring, _("via Audio Driver"));
+ }
+
+ string prog (PROGRAM_NAME);
+ boost::algorithm::to_lower (prog);
+ mm->add (SoftwareMonitoring, string_compose (_("%1"), prog));
+ mm->add (ExternalMonitoring, _("audio hardware"));
+
+ add_option (_("Signal Flow"), mm);
+
+ 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)