mackie: don't overload "Audio Instruments" and "Instruments" buttons.
[ardour.git] / libs / surfaces / mackie / device_info.cc
index c59ac84e5f8817c3f9e4edea75f08d1a92c1688e..b94cb055447a627736f38cc79520459c92201c48 100644 (file)
@@ -57,6 +57,7 @@ DeviceInfo::DeviceInfo()
        , _uses_ipmidi (false)
        , _no_handshake (false)
        , _has_meters (true)
+       , _has_separate_meters (false)
        , _device_type (MCU)
        , _name (X_("Mackie Control Universal Pro"))
 {
@@ -100,8 +101,8 @@ DeviceInfo::mackie_control_buttons ()
        _global_buttons[Button::UserA] = GlobalButtonInfo ("Rear Panel User Switch 1", "user", 0x66);
        _global_buttons[Button::UserB] = GlobalButtonInfo ("Rear Panel User Switch 2", "user", 0x67);
 
-       //TODO Implement "rear panel external control": a connection for a resistive 
-       //TODO element expression pedal . Message: 0xb0 0x2e 0xVV where 0xVV = external 
+       //TODO Implement "rear panel external control": a connection for a resistive
+       //TODO element expression pedal . Message: 0xb0 0x2e 0xVV where 0xVV = external
        //TODO controller position value (0x00 to 0x7f)
 
        _strip_buttons[Button::RecEnable] = StripButtonInfo (0x0, "Rec");
@@ -343,6 +344,14 @@ DeviceInfo::set_state (const XMLNode& node, int /* version */)
                _has_meters = true;
        }
 
+       if ((child = node.child ("HasSeparateMeters")) != 0) {
+               if ((prop = child->property ("value")) != 0) {
+                       _has_meters = _has_separate_meters = string_is_affirmative (prop->value());
+               }
+       } else {
+               _has_separate_meters = false;
+       }
+
        if ((child = node.child ("LogicControlButtons")) != 0) {
                if ((prop = child->property ("value")) != 0) {
                        _uses_logic_control_buttons = string_is_affirmative (prop->value());
@@ -377,7 +386,7 @@ DeviceInfo::set_state (const XMLNode& node, int /* version */)
                                                        }
                                                }
                                        }
-                                       
+
                                }
 
                        } else if ((*i)->name() == "StripButton") {
@@ -393,9 +402,9 @@ DeviceInfo::set_state (const XMLNode& node, int /* version */)
                                                        }
                                                }
                                        }
-                                       
+
                                }
-                               
+
                        }
                }
        }
@@ -439,6 +448,12 @@ DeviceInfo::has_meters() const
        return _has_meters;
 }
 
+bool
+DeviceInfo::has_separate_meters() const
+{
+       return _has_meters;
+}
+
 bool
 DeviceInfo::has_two_character_display() const
 {
@@ -547,7 +562,7 @@ DeviceInfo::reload_device_info ()
 
 std::ostream& operator<< (std::ostream& os, const Mackie::DeviceInfo& di)
 {
-       os << di.name() << ' ' 
+       os << di.name() << ' '
           << di.strip_cnt() << ' '
           << di.extenders() << ' '
           << di.master_position() << ' '