try just removing all PLATFORM_WINDOWS conditionals in ipmidi code to see if it will...
[ardour.git] / libs / surfaces / mackie / button.h
index 7e36ac76e5cf31f61239ffe2a197c5eaddb5c948..e9cbdd7b4be517765425e4ffb8080856c8248681 100644 (file)
 #ifndef __ardour_mackie_control_protocol_button_h__
 #define __ardour_mackie_control_protocol_button_h__
 
+#include "ardour/types.h"
+
 #include "controls.h"
 #include "led.h"
 
+namespace ArdourSurface {
+
 namespace Mackie {
 
 class Surface;
@@ -37,9 +41,9 @@ public:
 
        enum ID {
                /* Global Buttons */
-               
-               IO,
-               Sends,
+
+               Track,
+               Send,
                Pan,
                Plugin,
                Eq,
@@ -49,7 +53,7 @@ public:
                ChannelLeft,
                ChannelRight,
                Flip,
-               Edit,
+               View,
                NameValue,
                TimecodeBeats,
                F1,
@@ -60,35 +64,31 @@ public:
                F6,
                F7,
                F8,
-               F9,
-               F10,
-               F11,
-               F12,
-               F13,
-               F14,
-               F15,
-               F16,
-               Shift,
-               Option,
-               Ctrl,
-               CmdAlt,
-               On,
-               RecReady,
-               Undo,
-               Save,
+               MidiTracks,
+               Inputs,
+               AudioTracks,
+               AudioInstruments,
+               Aux,
+               Busses,
+               Outputs,
+               User,
+               Read,
+               Write,
+               Trim,
                Touch,
-               Redo,
-               Marker,
-               Enter,
+               Latch,
+               Grp,
+               Save,
+               Undo,
                Cancel,
-               Mixer,
-               FrmLeft,
-               FrmRight,
+               Enter,
+               Marker,
+               Nudge,
                Loop,
-               PunchIn,
-               PunchOut,
-               Home,
-               End,
+               Drop,
+               Replace,
+               Click,
+               ClearSolo,
                Rewind,
                Ffwd,
                Stop,
@@ -102,61 +102,62 @@ public:
                Scrub,
                UserA,
                UserB,
-               Assign1,
-               Assign2,
-               Snapshot,
-               Read,
-               Write,
-               FdrGroup,
-               ClearSolo,
-               Track,
-               Send,
-               MidiTracks,
-               Inputs,
-               AudioTracks,
-               AudioInstruments,
-               Aux,
-               Busses,
-               Outputs,
-               User,
-               Trim,
-               Latch,
-               Grp,
-               Nudge, 
-               Drop,
-               Replace,
-               Click,
-               View,
+
+               FinalGlobalButton,
+
+               /* Global buttons that users should not redefine */
+
+               Shift,
+               Option,
+               Ctrl,
+               CmdAlt,
 
                /* Strip buttons */
-               
+
                RecEnable,
                Solo,
                Mute,
                Select,
                VSelect,
                FaderTouch,
+
+               /* Master fader */
+
+               MasterFaderTouch,
        };
 
 
-       Button (ID bid, int did, std::string name, Group & group)
+       Button (Surface& s, ID bid, int did, std::string name, Group & group)
                : Control (did, name, group)
+               , _surface (s)
                , _bid (bid)
-               , _led  (did, name + "_led", group) {}
-       
+               , _led  (did, name + "_led", group)
+               , press_time (0) {}
+
        MidiByteArray zero() { return _led.zero (); }
        MidiByteArray set_state (LedState ls) { return _led.set_state (ls); }
-       
+
        ID bid() const { return _bid; }
-       
+
        static Control* factory (Surface& surface, Button::ID bid, int id, const std::string&, Group& group);
        static int name_to_id (const std::string& name);
+       static std::string id_to_name (Button::ID);
+
+       Surface& surface() const { return _surface; }
+
+       void pressed ();
+       void released ();
+
+       int32_t long_press_count ();
 
 private:
+       Surface& _surface;
        ID  _bid; /* device independent button ID */
        Led _led;
+       ARDOUR::microseconds_t press_time;
 };
 
-}
+} // Mackie namespace
+} // ArdourSurface namespace
 
 #endif