summaryrefslogtreecommitdiff
path: root/libs/surfaces/contourdesign
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-05-25 16:45:53 +0200
committerRobin Gareus <robin@gareus.org>2019-05-25 16:49:15 +0200
commit3546a7291bc80efb16b06a08c05cbc75da4035d7 (patch)
tree75cd8021df6b51d6dc9a5dcbec02da48dbd734c9 /libs/surfaces/contourdesign
parent4cd379f89be407b07ca75c6c93f1d6c2bdffb33a (diff)
Shuttle Surface: Fix C++ style: use accessor/setter methods
This also fixes C++ compat: no forward declaration of friend classes (OSX compilation) and C++98 compat (enums are not classes e.g. ActiveState)
Diffstat (limited to 'libs/surfaces/contourdesign')
-rw-r--r--libs/surfaces/contourdesign/contourdesign.cc9
-rw-r--r--libs/surfaces/contourdesign/contourdesign.h28
-rw-r--r--libs/surfaces/contourdesign/contourdesign_gui.cc31
3 files changed, 47 insertions, 21 deletions
diff --git a/libs/surfaces/contourdesign/contourdesign.cc b/libs/surfaces/contourdesign/contourdesign.cc
index b0976f0ddf..7694592e56 100644
--- a/libs/surfaces/contourdesign/contourdesign.cc
+++ b/libs/surfaces/contourdesign/contourdesign.cc
@@ -571,6 +571,15 @@ void ContourDesignControlProtocol::jump_backward (JumpDistance dist)
}
void
+ContourDesignControlProtocol::set_shuttle_speed (int index, double speed)
+{
+ /* called from GUI thread */
+ // XXX this may race with ContourDesignControlProtocol::shuttle_event()
+ // TODO: add bounds check
+ _shuttle_speeds[index] = speed;
+}
+
+void
ContourDesignControlProtocol::shuttle_event(int position)
{
DEBUG_TRACE (DEBUG::ContourDesignControl, string_compose ("shuttle event %1\n", position));
diff --git a/libs/surfaces/contourdesign/contourdesign.h b/libs/surfaces/contourdesign/contourdesign.h
index 730e89ddaf..6c81c0a099 100644
--- a/libs/surfaces/contourdesign/contourdesign.h
+++ b/libs/surfaces/contourdesign/contourdesign.h
@@ -65,7 +65,6 @@ class ContourDesignControlProtocol
: public ARDOUR::ControlProtocol
, public AbstractUI<ContourDesignControlUIRequest>
{
- friend ContourDesignGUI;
public:
ContourDesignControlProtocol (ARDOUR::Session &);
virtual ~ContourDesignControlProtocol ();
@@ -99,6 +98,27 @@ public:
boost::shared_ptr<ButtonBase> make_button_action (std::string action_string);
+ int usb_errorcode () const { return _error; }
+
+ bool keep_rolling () const { return _keep_rolling; }
+ void set_keep_rolling (bool kr) { _keep_rolling = kr; }
+
+ bool test_mode () const { return _test_mode; }
+ void set_test_mode (bool tm) { _test_mode = tm; }
+
+ JumpDistance jog_distance () const { return _jog_distance; }
+ void set_jog_distance (JumpDistance jd) { _jog_distance = jd; }
+
+ void set_shuttle_speed (int index, double speed);
+ double shuttle_speed (int index) const {
+ return _shuttle_speeds[index];
+ }
+
+ PBD::Signal1<void, unsigned short> ButtonPress;
+ PBD::Signal1<void, unsigned short> ButtonRelease;
+
+ std::vector<boost::shared_ptr<ButtonBase> > _button_actions; // XXX TODO: use accessor/setter methods
+
private:
void do_request (ContourDesignControlUIRequest*);
void start ();
@@ -113,6 +133,7 @@ private:
int acquire_device ();
void release_device ();
+ void setup_default_button_actions ();
void handle_button_press (unsigned short btn);
void handle_button_release (unsigned short btn);
@@ -141,8 +162,6 @@ private:
State _state;
bool _test_mode;
- PBD::Signal1<void, unsigned short> ButtonPress;
- PBD::Signal1<void, unsigned short> ButtonRelease;
// Config stuff
@@ -150,9 +169,6 @@ private:
std::vector<double> _shuttle_speeds;
JumpDistance _jog_distance;
- std::vector<boost::shared_ptr<ButtonBase> > _button_actions;
- void setup_default_button_actions ();
-
mutable ContourDesignGUI* _gui;
void build_gui ();
diff --git a/libs/surfaces/contourdesign/contourdesign_gui.cc b/libs/surfaces/contourdesign/contourdesign_gui.cc
index 88c05234df..67dad3088c 100644
--- a/libs/surfaces/contourdesign/contourdesign_gui.cc
+++ b/libs/surfaces/contourdesign/contourdesign_gui.cc
@@ -100,7 +100,7 @@ ContourDesignGUI::ContourDesignGUI (ContourDesignControlProtocol& ccp)
: _ccp (ccp)
, _test_button (_("Button Test"), ArdourButton::led_default_elements)
, _keep_rolling (_("Keep rolling after jumps"))
- , _jog_distance (ccp._jog_distance)
+ , _jog_distance (ccp.jog_distance ())
, _device_state_lbl ()
{
Frame* dg_sample = manage (new Frame (_("Device")));
@@ -123,7 +123,7 @@ ContourDesignGUI::ContourDesignGUI (ContourDesignControlProtocol& ccp)
HBox* speed_box = manage (new HBox);
for (int i=0; i != ContourDesignControlProtocol::num_shuttle_speeds; ++i) {
- double speed = ccp._shuttle_speeds[i];
+ double speed = ccp.shuttle_speed (i);
boost::shared_ptr<Gtk::Adjustment> adj (new Gtk::Adjustment (speed, 0.0, 100.0, 0.25));
_shuttle_speed_adjustments.push_back (adj);
SpinButton* sb = manage (new SpinButton (*adj, 0.25, 2));
@@ -140,7 +140,7 @@ ContourDesignGUI::ContourDesignGUI (ContourDesignControlProtocol& ccp)
_keep_rolling.set_tooltip_text (_("If checked Ardour keeps rolling after jog or shuttle events. If unchecked it stops."));
_keep_rolling.signal_toggled().connect (sigc::mem_fun (*this, &ContourDesignGUI::toggle_keep_rolling));
- _keep_rolling.set_active (_ccp._keep_rolling);
+ _keep_rolling.set_active (_ccp.keep_rolling ());
sj_table->attach (_keep_rolling, 0,1, 2,3);
@@ -207,20 +207,20 @@ ContourDesignGUI::ContourDesignGUI (ContourDesignControlProtocol& ccp)
void
ContourDesignGUI::toggle_keep_rolling ()
{
- _ccp._keep_rolling = _keep_rolling.get_active();
+ _ccp.set_keep_rolling (_keep_rolling.get_active ());
}
void
ContourDesignGUI::set_shuttle_speed (int index)
{
double speed = _shuttle_speed_adjustments[index]->get_value ();
- _ccp._shuttle_speeds[index] = speed;
+ _ccp.set_shuttle_speed (index, speed);
}
void
ContourDesignGUI::update_jog_distance ()
{
- _ccp._jog_distance = _jog_distance.get_distance ();
+ _ccp.set_jog_distance (_jog_distance.get_distance ());
}
void
@@ -237,9 +237,10 @@ ContourDesignGUI::update_action (unsigned int index, ButtonConfigWidget* sender)
void
ContourDesignGUI::toggle_test_mode ()
{
- _ccp._test_mode = !_ccp._test_mode;
- if (_ccp._test_mode) {
- _test_button.set_active_state (ActiveState::ExplicitActive);
+ bool testmode = ! _ccp.test_mode(); // toggle
+ _ccp.set_test_mode (testmode);
+ if (testmode) {
+ _test_button.set_active_state (Gtkmm2ext::ExplicitActive);
} else {
reset_test_state ();
}
@@ -257,11 +258,11 @@ ContourDesignGUI::init_on_show ()
bool
ContourDesignGUI::reset_test_state (GdkEventAny*)
{
- _ccp._test_mode = false;
- _test_button.set_active (ActiveState::Off);
+ _ccp.set_test_mode (false);
+ _test_button.set_active (Gtkmm2ext::Off);
vector<boost::shared_ptr<ArdourButton> >::const_iterator it;
for (it = _btn_leds.begin(); it != _btn_leds.end(); ++it) {
- (*it)->set_active_state (ActiveState::Off);
+ (*it)->set_active_state (Gtkmm2ext::Off);
}
return false;
@@ -270,13 +271,13 @@ ContourDesignGUI::reset_test_state (GdkEventAny*)
void
ContourDesignGUI::test_button_press (unsigned short btn)
{
- _btn_leds[btn]->set_active_state (ActiveState::ExplicitActive);
+ _btn_leds[btn]->set_active_state (Gtkmm2ext::ExplicitActive);
}
void
ContourDesignGUI::test_button_release (unsigned short btn)
{
- _btn_leds[btn]->set_active_state (ActiveState::Off);
+ _btn_leds[btn]->set_active_state (Gtkmm2ext::Off);
}
bool
@@ -297,7 +298,7 @@ ContourDesignGUI::update_device_state ()
XpressButtonsSensitive (false);
ProButtonsSensitive (false);
_device_state_lbl.set_markup (string_compose ("<span weight=\"bold\" foreground=\"red\">Device not working:</span> %1",
- libusb_strerror ((libusb_error)_ccp._error)));
+ libusb_strerror ((libusb_error)_ccp.usb_errorcode ())));
}
return false;