
#----------------------------------------------------------------------------

from wxPython.wx import *
from joystick_wdr import *


class JoystickTestPanel(wxPanel):
    def __init__(self, parent, id,
        pos = wxPyDefaultPosition, size = wxPyDefaultSize,
        style = wxTAB_TRAVERSAL ):
        wxPanel.__init__(self, parent, id, pos, size, style)

        MakeJoystickTestPanel( self, True )

        try:
            self.stick = wxJoystick()
            self.stick.SetCapture(self)
            EVT_JOYSTICK_EVENTS(self, self.OnJoystick)
            self.UpdateFields()
        except NotImplementedError, v:
            wxMessageBox(str(v), "Exception Message")


    def UpdateFields(self):
        s = self.stick
        self.GetXPositionCtrl().SetValue(str(s.GetPosition().x))
        self.GetYPositionCtrl().SetValue(str(s.GetPosition().y))
        self.GetZPositionCtrl().SetValue(str(s.GetZPosition()))
        self.GetPovCtsPosCtrl().SetValue(str(s.GetPOVPosition()))
        self.GetRudderPosCtrl().SetValue(str(s.GetRudderPosition()))
        self.GetHasRudderCtrl().SetValue(str(s.HasRudder()))
        self.GetHasZCtrl().SetValue(str(s.HasZ()))
        self.GetHasPovCtrl().SetValue(str(s.HasPOV()))
        self.GetHasPov4dirCtrl().SetValue(str(s.HasPOV4Dir()))
        self.GetMfgIdCtrl().SetValue(str(s.GetManufacturerId()))
        self.GetProdNameCtrl().SetValue(str(s.GetProductName()))
        self.GetZMinCtrl().SetValue(str(s.GetZMin()))
        self.GetXMaxCtrl().SetValue(str(s.GetXMax()))
        self.GetNumButtonsCtrl().SetValue(str(s.GetNumberButtons()))
        self.GetNumAxesCtrl().SetValue(str(s.GetNumberAxes()))
        self.GetPollingMinCtrl().SetValue(str(s.GetPollingMin()))
        self.GetPollingMaxCtrl().SetValue(str(s.GetPollingMax()))
        self.GetUMinCtrl().SetValue(str(s.GetUMin()))
        self.GetUMaxCtrl().SetValue(str(s.GetUMax()))
        self.GetButtonStateCtrl().SetValue(str(s.GetButtonState()))
        self.GetPovPositionCtrl().SetValue(str(s.GetPOVPosition()))
        self.GetUPositionCtrl().SetValue(str(s.GetUPosition()))
        self.GetVPositionCtrl().SetValue(str(s.GetVPosition()))
        self.GetHasUCtrl().SetValue(str(s.HasU()))
        self.GetHasVCtrl().SetValue(str(s.HasV()))
        self.GetHasPovCtsCtrl().SetValue(str(s.HasPOVCTS()))
        self.GetNumSticksCtrl().SetValue(str(s.GetNumberJoysticks()))
        self.GetXMinCtrl().SetValue(str(s.GetXMin()))
        self.GetYMinCtrl().SetValue(str(s.GetYMin()))
        self.GetYMaxCtrl().SetValue(str(s.GetYMax()))
        self.GetZMaxCtrl().SetValue(str(s.GetZMax()))
        self.GetMaxButtonsCtrl().SetValue(str(s.GetMaxButtons()))
        self.GetMaxAxesCtrl().SetValue(str(s.GetMaxAxes()))
        self.GetRudderMinCtrl().SetValue(str(s.GetRudderMin()))
        self.GetRudderMaxCtrl().SetValue(str(s.GetRudderMax()))
        self.GetVMinCtrl().SetValue(str(s.GetVMin()))
        self.GetVMaxCtrl().SetValue(str(s.GetVMax()))


    def OnJoystick(self, evt):
        self.UpdateFields()


    # WDR: methods for JoystickTestPanel

    def GetYPositionCtrl(self):
        return self.FindWindowById(ID_Y_Position_Ctrl)

    def GetXPositionCtrl(self):
        return self.FindWindowById(ID_X_Position_Ctrl)


    def GetVMaxCtrl(self):
        return self.FindWindowById(ID_V_Max_Ctrl)

    def GetVMinCtrl(self):
        return self.FindWindowById(ID_V_Min_Ctrl)

    def GetRudderMaxCtrl(self):
        return self.FindWindowById(ID_Rudder_Max_Ctrl)

    def GetRudderMinCtrl(self):
        return self.FindWindowById(ID_Rudder_Min_Ctrl)

    def GetMaxAxesCtrl(self):
        return self.FindWindowById(ID_Max_Axes_Ctrl)

    def GetMaxButtonsCtrl(self):
        return self.FindWindowById(ID_Max_Buttons_Ctrl)

    def GetZMaxCtrl(self):
        return self.FindWindowById(ID_Z_Max_Ctrl)

    def GetYMaxCtrl(self):
        return self.FindWindowById(ID_Y_Max_Ctrl)

    def GetYMinCtrl(self):
        return self.FindWindowById(ID_Y_Min_Ctrl)

    def GetXMinCtrl(self):
        return self.FindWindowById(ID_X_Min_Ctrl)

    def GetNumSticksCtrl(self):
        return self.FindWindowById(ID_Num_Sticks_Ctrl)

    def GetHasPovCtsCtrl(self):
        return self.FindWindowById(ID_Has_POV_CTS_Ctrl)

    def GetHasVCtrl(self):
        return self.FindWindowById(ID_Has_V_Ctrl)

    def GetHasUCtrl(self):
        return self.FindWindowById(ID_Has_U_Ctrl)

    def GetVPositionCtrl(self):
        return self.FindWindowById(ID_V_Position_Ctrl)

    def GetUPositionCtrl(self):
        return self.FindWindowById(ID_U_Position_Ctrl)

    def GetPovPositionCtrl(self):
        return self.FindWindowById(ID_POV_Position_Ctrl)

    def GetButtonStateCtrl(self):
        return self.FindWindowById(ID_Button_State_Ctrl)

    def GetUMaxCtrl(self):
        return self.FindWindowById(ID_U_Max_Ctrl)

    def GetUMinCtrl(self):
        return self.FindWindowById(ID_U_Min_Ctrl)

    def GetPollingMaxCtrl(self):
        return self.FindWindowById(ID_Polling_Max_Ctrl)

    def GetPollingMinCtrl(self):
        return self.FindWindowById(ID_Polling_Min_Ctrl)

    def GetNumAxesCtrl(self):
        return self.FindWindowById(ID_Num_Axes_Ctrl)

    def GetNumButtonsCtrl(self):
        return self.FindWindowById(ID_Num_Buttons_Ctrl)

    def GetXMaxCtrl(self):
        return self.FindWindowById(ID_X_Max_Ctrl)

    def GetZMinCtrl(self):
        return self.FindWindowById(ID_Z_Min_Ctrl)

    def GetProdNameCtrl(self):
        return self.FindWindowById(ID_Prod_Name_Ctrl)

    def GetMfgIdCtrl(self):
        return self.FindWindowById(ID_Mfg_ID_Ctrl)

    def GetHasPov4dirCtrl(self):
        return self.FindWindowById(ID_Has_POV_4DIR_Ctrl)

    def GetHasPovCtrl(self):
        return self.FindWindowById(ID_Has_POV_Ctrl)

    def GetHasZCtrl(self):
        return self.FindWindowById(ID_Has_Z_Ctrl)

    def GetHasRudderCtrl(self):
        return self.FindWindowById(ID_Has_Rudder_Ctrl)

    def GetRudderPosCtrl(self):
        return self.FindWindowById(ID_Rudder_Pos_Ctrl)

    def GetPovCtsPosCtrl(self):
        return self.FindWindowById(ID_POV_CTS_Pos_Ctrl)

    def GetZPositionCtrl(self):
        return self.FindWindowById(ID_Z_Position_Ctrl)

    # WDR: handler implementations for JoysticktestPanel


#----------------------------------------------------------------------

def runTest(frame, nb, log):
    win = JoystickTestPanel(nb, -1)
    return win

#----------------------------------------------------------------------


overview = """\
"""




if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])])

