+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_monitor_model ()
+{
+ const char* on = 0;
+
+ switch (Config->get_monitoring_model()) {
+ case HardwareMonitoring:
+ on = X_("UseHardwareMonitoring");
+ break;
+ case SoftwareMonitoring:
+ on = X_("UseSoftwareMonitoring");
+ break;
+ case ExternalMonitoring:
+ on = X_("UseExternalMonitoring");
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", on);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_denormal_protection ()
+{
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", X_("DenormalProtection"));
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (Config->get_denormal_protection());
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_denormal_model ()
+{
+ const char* on = 0;
+
+ switch (Config->get_denormal_model()) {
+ case DenormalNone:
+ on = X_("DenormalNone");
+ break;
+ case DenormalFTZ:
+ on = X_("DenormalFTZ");
+ break;
+ case DenormalDAZ:
+ on = X_("DenormalDAZ");
+ break;
+ case DenormalFTZDAZ:
+ on = X_("DenormalFTZDAZ");
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", on);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_remote_model ()
+{
+ const char* on = 0;
+
+ switch (Config->get_remote_model()) {
+ case UserOrdered:
+ on = X_("RemoteUserDefined");
+ break;
+ case MixerOrdered:
+ on = X_("RemoteMixerDefined");
+ break;
+ case EditorOrdered:
+ on = X_("RemoteEditorDefined");
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", on);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_file_header_format ()
+{
+ const char* action = 0;
+
+ switch (Config->get_native_file_header_format()) {
+ case BWF:
+ action = X_("FileHeaderFormatBWF");
+ break;
+
+ case WAVE:
+ action = X_("FileHeaderFormatWAVE");
+ break;
+
+ case WAVE64:
+ action = X_("FileHeaderFormatWAVE64");
+ break;
+
+ case iXML:
+ action = X_("FileHeaderFormatiXML");
+ break;
+
+ case RF64:
+ action = X_("FileHeaderFormatRF64");
+ break;
+
+ case CAF:
+ action = X_("FileHeaderFormatCAF");
+ break;
+
+ default:
+ fatal << string_compose (_("programming error: unknown file header format passed to ARDOUR_UI::map_file_data_format: %1"),
+ Config->get_native_file_header_format()) << endmsg;
+ /*NOTREACHED*/
+ }
+
+
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", action);
+
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_file_data_format ()
+{
+ const char* action = 0;
+
+ switch (Config->get_native_file_data_format()) {
+ case FormatFloat:
+ action = X_("FileDataFormatFloat");
+ break;
+
+ case FormatInt24:
+ action = X_("FileDataFormat24bit");
+ break;
+
+ case FormatInt16:
+ action = X_("FileDataFormat16bit");
+ break;
+
+ default:
+ fatal << string_compose (_("programming error: unknown file data format passed to ARDOUR_UI::map_file_data_format: %1"),
+ Config->get_native_file_data_format()) << endmsg;
+ /*NOTREACHED*/
+ }
+
+
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", action);
+
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_input_auto_connect ()
+{
+ const char* on;
+
+ if (Config->get_input_auto_connect() == (AutoConnectOption) 0) {
+ on = "InputAutoConnectManual";
+ } else {
+ on = "InputAutoConnectPhysical";
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", on);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_output_auto_connect ()
+{
+ const char* on;
+
+ if (Config->get_output_auto_connect() == (AutoConnectOption) 0) {
+ on = "OutputAutoConnectManual";
+ } else if (Config->get_output_auto_connect() == AutoConnectPhysical) {
+ on = "OutputAutoConnectPhysical";
+ } else {
+ on = "OutputAutoConnectMaster";
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", on);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_only_copy_imported_files ()
+{
+ Glib::RefPtr<Action> act = ActionManager::get_action ("options", X_("OnlyCopyImportedFiles"));
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (Config->get_only_copy_imported_files());
+ }
+ }
+
+}
+
+
+void
+ARDOUR_UI::map_meter_falloff ()
+{
+ const char* action = X_("MeterFalloffMedium");
+
+ float val = Config->get_meter_falloff ();
+ MeterFalloff code = meter_falloff_from_float(val);
+
+ switch (code) {
+ case MeterFalloffOff:
+ action = X_("MeterFalloffOff");
+ break;
+ case MeterFalloffSlowest:
+ action = X_("MeterFalloffSlowest");
+ break;
+ case MeterFalloffSlow:
+ action = X_("MeterFalloffSlow");
+ break;
+ case MeterFalloffMedium:
+ action = X_("MeterFalloffMedium");
+ break;
+ case MeterFalloffFast:
+ action = X_("MeterFalloffFast");
+ break;
+ case MeterFalloffFaster:
+ action = X_("MeterFalloffFaster");
+ break;
+ case MeterFalloffFastest:
+ action = X_("MeterFalloffFastest");
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("options"), action);
+
+ if (act) {
+ Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic(act);
+ if (ract && !ract->get_active()) {
+ ract->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::map_meter_hold ()
+{
+ const char* action = X_("MeterHoldMedium");
+
+ /* XXX hack alert. Fix this. Please */
+
+ float val = Config->get_meter_hold ();
+ MeterHold code = (MeterHold) (int) (floor (val));
+
+ switch (code) {
+ case MeterHoldOff:
+ action = X_("MeterHoldOff");
+ break;
+ case MeterHoldShort:
+ action = X_("MeterHoldShort");
+ break;
+ case MeterHoldMedium:
+ action = X_("MeterHoldMedium");
+ break;
+ case MeterHoldLong:
+ action = X_("MeterHoldLong");
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("options"), action);
+
+ if (act) {
+ Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic(act);
+ if (ract && !ract->get_active()) {
+ ract->set_active (true);
+ }
+ }
+}
+
+void
+ARDOUR_UI::set_meter_hold (MeterHold val)
+{
+ const char* action = 0;
+ float fval;
+
+ fval = meter_hold_to_float (val);
+
+ switch (val) {
+ case MeterHoldOff:
+ action = X_("MeterHoldOff");
+ break;
+ case MeterHoldShort:
+ action = X_("MeterHoldShort");
+ break;
+ case MeterHoldMedium:
+ action = X_("MeterHoldMedium");
+ break;
+ case MeterHoldLong:
+ action = X_("MeterHoldLong");
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("options"), action);
+
+ if (act) {
+ Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic(act);
+ if (ract && ract->get_active() && Config->get_meter_hold() != fval) {
+ Config->set_meter_hold (fval);
+ }
+ }
+}
+
+void
+ARDOUR_UI::set_meter_falloff (MeterFalloff val)
+{
+ const char* action = 0;
+ float fval;
+
+ fval = meter_falloff_to_float (val);
+
+ switch (val) {
+ case MeterFalloffOff:
+ action = X_("MeterFalloffOff");
+ break;
+ case MeterFalloffSlowest:
+ action = X_("MeterFalloffSlowest");
+ break;
+ case MeterFalloffSlow:
+ action = X_("MeterFalloffSlow");
+ break;
+ case MeterFalloffMedium:
+ action = X_("MeterFalloffMedium");
+ break;
+ case MeterFalloffFast:
+ action = X_("MeterFalloffFast");
+ break;
+ case MeterFalloffFaster:
+ action = X_("MeterFalloffFaster");
+ break;
+ case MeterFalloffFastest:
+ action = X_("MeterFalloffFastest");
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("options"), action);
+
+ if (act) {
+ Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic(act);
+ if (ract && ract->get_active() && Config->get_meter_falloff () != fval) {
+ Config->set_meter_falloff (fval);