patch from brian to get consistent menu behaviour
[ardour.git] / gtk2_ardour / ardour_ui_options.cc
index 7a3ebfc13059495418743260e2f4a801a44d3fc1..ea1c1c13f41ca4f1da106e74cbe91e9539a398c2 100644 (file)
@@ -280,7 +280,7 @@ void
 ARDOUR_UI::toggle_session_auto_loop ()
 {
        if (session) {
-               if (Config->get_auto_loop()) {
+               if (session->get_play_loop()) {
                        if (session->transport_rolling()) {
                                transport_roll();
                        } else {
@@ -367,15 +367,7 @@ ARDOUR_UI::toggle_StopTransportAtEndOfSession()
 void
 ARDOUR_UI::toggle_GainReduceFastTransport()
 {
-       Glib::RefPtr<Action> act = ActionManager::get_action ("options", "GainReduceFastTransport");
-       if (act) {
-               Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
-               if (tact->get_active()) {
-                       Config->set_quieten_at_speed (0.251189); // -12dB reduction for ffwd or rewind
-               } else {
-                       Config->set_quieten_at_speed (1.0); /* no change */
-               }
-       }
+       ActionManager::toggle_config_state ("options", "GainReduceFastTransport", &Configuration::set_quieten_at_speed, &Configuration::get_quieten_at_speed);
 }
 
 void
@@ -593,12 +585,12 @@ ARDOUR_UI::map_output_auto_connect ()
 void
 ARDOUR_UI::map_meter_falloff ()
 {
-       const char* action = 0;
+       const char* action = X_("MeterFalloffMedium");
 
        /* XXX hack alert. Fix this. Please */
 
        float val = Config->get_meter_falloff ();
-       MeterFalloff code = (MeterFalloff) (floor (val));
+       MeterFalloff code = (MeterFalloff) (int) (floor (val));
 
        switch (code) {
        case MeterFalloffOff:
@@ -637,12 +629,12 @@ ARDOUR_UI::map_meter_falloff ()
 void
 ARDOUR_UI::map_meter_hold ()
 {
-       const char* action = 0;
+       const char* action = X_("MeterHoldMedium");
 
        /* XXX hack alert. Fix this. Please */
 
        float val = Config->get_meter_hold ();
-       MeterHold code = (MeterHold) (floor (val));
+       MeterHold code = (MeterHold) (int) (floor (val));
 
        switch (code) {
        case MeterHoldOff:
@@ -747,10 +739,8 @@ ARDOUR_UI::set_meter_falloff (MeterFalloff val)
 void
 ARDOUR_UI::parameter_changed (const char* parameter_name)
 {
-       cerr << "Parameter changed : " << parameter_name << endl;
-
 #define PARAM_IS(x) (!strcmp (parameter_name, (x)))
-
+       
        if (PARAM_IS ("slave-source")) {
 
                sync_option_combo.set_active_text (slave_source_to_string (Config->get_slave_source()));
@@ -779,8 +769,6 @@ ARDOUR_UI::parameter_changed (const char* parameter_name)
                map_solo_model ();
        } else if (PARAM_IS ("auto-play")) {
                ActionManager::map_some_state ("Transport", "ToggleAutoPlay", &Configuration::get_auto_play);
-       } else if (PARAM_IS ("auto-loop")) {
-               ActionManager::map_some_state ("Transport", "Loop", &Configuration::get_auto_loop);
        } else if (PARAM_IS ("auto-return")) {
                ActionManager::map_some_state ("Transport", "ToggleAutoReturn", &Configuration::get_auto_return);
        } else if (PARAM_IS ("auto-input")) {
@@ -852,6 +840,14 @@ ARDOUR_UI::parameter_changed (const char* parameter_name)
                map_meter_falloff ();
        } else if (PARAM_IS ("verify-remove-last-capture")) {
                ActionManager::map_some_state ("options", "VerifyRemoveLastCapture", &Configuration::get_verify_remove_last_capture);
+       } else if (PARAM_IS ("video-pullup") || PARAM_IS ("smpte-frames-per-second")) {
+               if (session) {
+                       primary_clock.set (session->audible_frame(), true);
+                       secondary_clock.set (session->audible_frame(), true);
+               } else {
+                       primary_clock.set (0, true);
+                       secondary_clock.set (0, true);
+               }
        }
 
 #undef PARAM_IS