add plural forms for pt to gtk2_ardour/po/pt.po
[ardour.git] / gtk2_ardour / automation_controller.cc
index 66c051ee19b45f58aa1c3569de6b00a4c43e686e..03054fa98b60ae073eb7b4e3a646c598d6aabbc3 100644 (file)
 #include "ardour/tempo.h"
 
 #include "ardour_button.h"
+#include "ardour_knob.h"
 #include "automation_controller.h"
 #include "gui_thread.h"
 #include "note_select_dialog.h"
 #include "timers.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace ARDOUR;
 using namespace Gtk;
@@ -65,7 +66,8 @@ AutomationBarController::~AutomationBarController()
 
 AutomationController::AutomationController(boost::shared_ptr<Automatable>       printer,
                                            boost::shared_ptr<AutomationControl> ac,
-                                           Adjustment*                          adj)
+                                           Adjustment*                          adj,
+                                           bool                                 use_knob)
        : _widget(NULL)
        , _printer (printer)
        , _controllable(ac)
@@ -88,7 +90,16 @@ AutomationController::AutomationController(boost::shared_ptr<Automatable>
                but->set_controllable(ac);
                but->signal_clicked.connect(
                        sigc::mem_fun(*this, &AutomationController::toggled));
+               const bool active = _adjustment->get_value() >= 0.5;
+               if (but->get_active() != active) {
+                       but->set_active(active);
+               }
                _widget = but;
+       } else if (use_knob) {
+               ArdourKnob* knob = manage (new ArdourKnob (ArdourKnob::default_elements, ArdourKnob::Detent));
+               knob->set_controllable (ac);
+               knob->set_name("processor control knob");
+               _widget = knob;
        } else {
                AutomationBarController* bar = manage(new AutomationBarController(_printer, ac, adj));
 
@@ -123,7 +134,8 @@ boost::shared_ptr<AutomationController>
 AutomationController::create(boost::shared_ptr<Automatable>       printer,
                              const Evoral::Parameter&             param,
                              const ParameterDescriptor&           desc,
-                             boost::shared_ptr<AutomationControl> ac)
+                             boost::shared_ptr<AutomationControl> ac,
+                             bool use_knob)
 {
        const double lo        = ac->internal_to_interface(desc.lower);
        const double up        = ac->internal_to_interface(desc.upper);
@@ -136,7 +148,7 @@ AutomationController::create(boost::shared_ptr<Automatable>       printer,
 
        assert (ac);
        assert(ac->parameter() == param);
-       return boost::shared_ptr<AutomationController>(new AutomationController(printer, ac, adjustment));
+       return boost::shared_ptr<AutomationController>(new AutomationController(printer, ac, adjustment, use_knob));
 }
 
 void