/*
- Copyright (C) 2007 Paul Davis
+ Copyright (C) 2007 Paul Davis
Author: Dave Robillard
This program is free software; you can redistribute it and/or modify
#include <boost/shared_ptr.hpp>
#include <gtkmm.h>
-#include <gtkmm2ext/barcontroller.h>
+
+#include "gtkmm2ext/barcontroller.h"
+#include "pbd/signals.h"
namespace ARDOUR {
class Session;
class AutomationList;
class AutomationControl;
+ class Automatable;
}
-
+/** A BarController which displays the value and allows control of an AutomationControl */
class AutomationController : public Gtkmm2ext::BarController {
public:
static boost::shared_ptr<AutomationController> create(
- ARDOUR::Session& s,
- boost::shared_ptr<ARDOUR::AutomationList> al,
+ boost::shared_ptr<ARDOUR::Automatable> parent,
+ const Evoral::Parameter& param,
boost::shared_ptr<ARDOUR::AutomationControl> ac);
~AutomationController();
-
+
boost::shared_ptr<ARDOUR::AutomationControl> controllable() { return _controllable; }
Gtk::Adjustment* adjustment() { return _adjustment; }
-
- void update_label(char* label, int label_len);
+
void display_effective_value();
void value_adjusted();
+ void stop_updating ();
+
private:
- AutomationController(boost::shared_ptr<ARDOUR::AutomationControl> ac, Gtk::Adjustment* adj);
+ AutomationController (boost::shared_ptr<ARDOUR::Automatable> parent, boost::shared_ptr<ARDOUR::AutomationControl> ac, Gtk::Adjustment* adj);
+ std::string get_label (double&);
+
void start_touch();
void end_touch();
void automation_state_changed();
bool _ignore_change;
+ boost::shared_ptr<ARDOUR::Automatable> _owner;
boost::shared_ptr<ARDOUR::AutomationControl> _controllable;
Gtk::Adjustment* _adjustment;
sigc::connection _screen_update_connection;
+ PBD::ScopedConnection _changed_connection;
};