1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG interface stuff for wxJoystick
 
   7 // Created:     18-June-1999
 
   9 // Copyright:   (c) 2003 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  16 //---------------------------------------------------------------------------
 
  20 #include <wx/joystick.h>
 
  23 //---------------------------------------------------------------------------
 
  27 // Which joystick? Same as Windows ids so no conversion necessary.
 
  34 // Which button is down?
 
  46 #if !wxUSE_JOYSTICK && !defined(__WXMSW__)
 
  47 // A C++ stub class for wxJoystick for platforms that don't have it.
 
  48 class wxJoystick : public wxObject {
 
  50     wxJoystick(int joystick = wxJOYSTICK1) {
 
  51         wxPyBlock_t blocked = wxPyBeginBlockThreads();
 
  52         PyErr_SetString(PyExc_NotImplementedError,
 
  53                         "wxJoystick is not available on this platform.");
 
  54         wxPyEndBlockThreads(blocked);
 
  56     wxPoint GetPosition() { return wxPoint(-1,-1); }
 
  57     int GetZPosition() { return -1; }
 
  58     int GetButtonState() { return -1; }
 
  59     int GetPOVPosition() { return -1; }
 
  60     int GetPOVCTSPosition() { return -1; }
 
  61     int GetRudderPosition() { return -1; }
 
  62     int GetUPosition() { return -1; }
 
  63     int GetVPosition() { return -1; }
 
  64     int GetMovementThreshold() { return -1; }
 
  65     void SetMovementThreshold(int threshold) {}
 
  67     bool IsOk(void) { return false; }
 
  68     int GetNumberJoysticks() { return -1; }
 
  69     int GetManufacturerId() { return -1; }
 
  70     int GetProductId() { return -1; }
 
  71     wxString GetProductName() { return wxEmptyString; }
 
  72     int GetXMin() { return -1; }
 
  73     int GetYMin() { return -1; }
 
  74     int GetZMin() { return -1; }
 
  75     int GetXMax() { return -1; }
 
  76     int GetYMax() { return -1; }
 
  77     int GetZMax() { return -1; }
 
  78     int GetNumberButtons() { return -1; }
 
  79     int GetNumberAxes() { return -1; }
 
  80     int GetMaxButtons() { return -1; }
 
  81     int GetMaxAxes() { return -1; }
 
  82     int GetPollingMin() { return -1; }
 
  83     int GetPollingMax() { return -1; }
 
  84     int GetRudderMin() { return -1; }
 
  85     int GetRudderMax() { return -1; }
 
  86     int GetUMin() { return -1; }
 
  87     int GetUMax() { return -1; }
 
  88     int GetVMin() { return -1; }
 
  89     int GetVMax() { return -1; }
 
  91     bool HasRudder() { return false; }
 
  92     bool HasZ() { return false; }
 
  93     bool HasU() { return false; }
 
  94     bool HasV() { return false; }
 
  95     bool HasPOV() { return false; }
 
  96     bool HasPOV4Dir() { return false; }
 
  97     bool HasPOVCTS() { return false; }
 
  99     bool SetCapture(wxWindow* win, int pollingFreq = 0) { return false; }
 
 100     bool ReleaseCapture() { return false; }
 
 106 MustHaveApp(wxJoystick);
 
 108 class wxJoystick /* : public wxObject */
 
 111     wxJoystick(int joystick = wxJOYSTICK1);
 
 114     wxPoint GetPosition();
 
 116     int GetButtonState();
 
 117     int GetPOVPosition();
 
 118     int GetPOVCTSPosition();
 
 119     int GetRudderPosition();
 
 122     int GetMovementThreshold();
 
 123     void SetMovementThreshold(int threshold) ;
 
 126     int GetNumberJoysticks();
 
 127     int GetManufacturerId();
 
 129     wxString GetProductName();
 
 136     int GetNumberButtons();
 
 157     bool SetCapture(wxWindow* win, int pollingFreq = 0);
 
 158     bool ReleaseCapture();
 
 160     %pythoncode { def __nonzero__(self): return self.IsOk() }
 
 162     %property(ButtonState, GetButtonState, doc="See `GetButtonState`");
 
 163     %property(ManufacturerId, GetManufacturerId, doc="See `GetManufacturerId`");
 
 164     %property(MaxAxes, GetMaxAxes, doc="See `GetMaxAxes`");
 
 165     %property(MaxButtons, GetMaxButtons, doc="See `GetMaxButtons`");
 
 166     %property(MovementThreshold, GetMovementThreshold, SetMovementThreshold, doc="See `GetMovementThreshold` and `SetMovementThreshold`");
 
 167     %property(NumberAxes, GetNumberAxes, doc="See `GetNumberAxes`");
 
 168     %property(NumberButtons, GetNumberButtons, doc="See `GetNumberButtons`");
 
 169     %property(NumberJoysticks, GetNumberJoysticks, doc="See `GetNumberJoysticks`");
 
 170     %property(POVCTSPosition, GetPOVCTSPosition, doc="See `GetPOVCTSPosition`");
 
 171     %property(POVPosition, GetPOVPosition, doc="See `GetPOVPosition`");
 
 172     %property(PollingMax, GetPollingMax, doc="See `GetPollingMax`");
 
 173     %property(PollingMin, GetPollingMin, doc="See `GetPollingMin`");
 
 174     %property(Position, GetPosition, doc="See `GetPosition`");
 
 175     %property(ProductId, GetProductId, doc="See `GetProductId`");
 
 176     %property(ProductName, GetProductName, doc="See `GetProductName`");
 
 177     %property(RudderMax, GetRudderMax, doc="See `GetRudderMax`");
 
 178     %property(RudderMin, GetRudderMin, doc="See `GetRudderMin`");
 
 179     %property(RudderPosition, GetRudderPosition, doc="See `GetRudderPosition`");
 
 180     %property(UMax, GetUMax, doc="See `GetUMax`");
 
 181     %property(UMin, GetUMin, doc="See `GetUMin`");
 
 182     %property(UPosition, GetUPosition, doc="See `GetUPosition`");
 
 183     %property(VMax, GetVMax, doc="See `GetVMax`");
 
 184     %property(VMin, GetVMin, doc="See `GetVMin`");
 
 185     %property(VPosition, GetVPosition, doc="See `GetVPosition`");
 
 186     %property(XMax, GetXMax, doc="See `GetXMax`");
 
 187     %property(XMin, GetXMin, doc="See `GetXMin`");
 
 188     %property(YMax, GetYMax, doc="See `GetYMax`");
 
 189     %property(YMin, GetYMin, doc="See `GetYMin`");
 
 190     %property(ZMax, GetZMax, doc="See `GetZMax`");
 
 191     %property(ZMin, GetZMin, doc="See `GetZMin`");
 
 192     %property(ZPosition, GetZPosition, doc="See `GetZPosition`");
 
 196 //---------------------------------------------------------------------------
 
 198 %constant wxEventType wxEVT_JOY_BUTTON_DOWN;
 
 199 %constant wxEventType wxEVT_JOY_BUTTON_UP;
 
 200 %constant wxEventType wxEVT_JOY_MOVE;
 
 201 %constant wxEventType wxEVT_JOY_ZMOVE;
 
 204 class wxJoystickEvent : public wxEvent
 
 207     wxJoystickEvent(wxEventType type = wxEVT_NULL,
 
 209                     int joystick = wxJOYSTICK1,
 
 212     wxPoint GetPosition() const;
 
 213     int GetZPosition() const;
 
 214     int GetButtonState() const;
 
 215     int GetButtonChange() const;
 
 216     int GetJoystick() const;
 
 218     void SetJoystick(int stick);
 
 219     void SetButtonState(int state);
 
 220     void SetButtonChange(int change);
 
 221     void SetPosition(const wxPoint& pos);
 
 222     void SetZPosition(int zPos);
 
 224     // Was it a button event? (*doesn't* mean: is any button *down*?)
 
 225     bool IsButton() const;
 
 227     // Was it a move event?
 
 230     // Was it a zmove event?
 
 231     bool IsZMove() const;
 
 233     // Was it a down event from button 1, 2, 3, 4 or any?
 
 234     bool ButtonDown(int but = wxJOY_BUTTON_ANY) const;
 
 236     // Was it a up event from button 1, 2, 3 or any?
 
 237     bool ButtonUp(int but = wxJOY_BUTTON_ANY) const;
 
 239     // Was the given button 1,2,3,4 or any in Down state?
 
 240     bool ButtonIsDown(int but =  wxJOY_BUTTON_ANY) const;
 
 243         m_pos = property(GetPosition, SetPosition)
 
 244         m_zPosition = property(GetZPosition, SetZPosition)
 
 245         m_buttonChange = property(GetButtonChange, SetButtonChange)
 
 246         m_buttonState = property(GetButtonState, SetButtonState)
 
 247         m_joyStick = property(GetJoystick, SetJoystick)
 
 250     %property(ButtonChange, GetButtonChange, SetButtonChange, doc="See `GetButtonChange` and `SetButtonChange`");
 
 251     %property(ButtonState, GetButtonState, SetButtonState, doc="See `GetButtonState` and `SetButtonState`");
 
 252     %property(Joystick, GetJoystick, SetJoystick, doc="See `GetJoystick` and `SetJoystick`");
 
 253     %property(Position, GetPosition, SetPosition, doc="See `GetPosition` and `SetPosition`");
 
 254     %property(ZPosition, GetZPosition, SetZPosition, doc="See `GetZPosition` and `SetZPosition`");
 
 259 EVT_JOY_BUTTON_DOWN = wx.PyEventBinder( wxEVT_JOY_BUTTON_DOWN )
 
 260 EVT_JOY_BUTTON_UP = wx.PyEventBinder( wxEVT_JOY_BUTTON_UP )
 
 261 EVT_JOY_MOVE = wx.PyEventBinder( wxEVT_JOY_MOVE )
 
 262 EVT_JOY_ZMOVE = wx.PyEventBinder( wxEVT_JOY_ZMOVE )
 
 264 EVT_JOYSTICK_EVENTS = wx.PyEventBinder([ wxEVT_JOY_BUTTON_DOWN,
 
 272 //---------------------------------------------------------------------------