;ò )‘†Ac@sídkZdkZeZeidjo eZndZdeifd„ƒYZdei fd„ƒYZ dei fd„ƒYZ d ei fd „ƒYZ d ei fd „ƒYZ d ei fd„ƒYZdei fd„ƒYZdei fd„ƒYZdei fd„ƒYZdeifd„ƒYZdei fd„ƒYZdei fd„ƒYZdei fd„ƒYZd„ZdZedjoPdkZdkZdkZeid eiiei d!ƒgei d"ƒndS(#Ns __WXMAC__isLabelcBstZd„ZRS(NcCsltii||d|dtiƒ|iti|i ƒi ƒ|i ƒi ƒ|i ƒi ƒti ƒƒdS(Niÿÿÿÿsstyle(swxs StaticTexts__init__sselfsparentslabels ALIGN_RIGHTsSetFontsFontsGetFonts GetPointSizes GetFamilysGetStylesBOLD(sselfsparentslabel((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__!s "(s__name__s __module__s__init__(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysLabelssJoyGaugecBs>tZd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs¸||_ddf}tii||dd|ƒ|iti|i ƒ|iti |i ƒ|iti d„ƒti |Œ|_tit|iƒ}|i|ƒ|i|ƒdS(NidiÿÿÿÿssizecCstS(N(sNone(se((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys9s(ssticksselfssizeswxsPanels__init__sparentsBinds EVT_PAINTsOnPaintsEVT_SIZEsOnSizesEVT_ERASE_BACKGROUNDs EmptyBitmapsbuffers BufferedDCsNonesdcsDrawFaces DrawJoystick(sselfsparentssticksdcssize((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__0s   cCsc|iƒ\}}ti||ƒ|_titi|ƒ|iƒ}|i |ƒ|i |ƒdS(N( sselfs GetClientSizeswshswxs EmptyBitmapsbuffers BufferedDCsClientDCsdcsDrawFaces DrawJoystick(sselfseventshsdcsw((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysOnSizeAs  cCs*|iti|iƒƒƒ|iƒdS(N(sdcs SetBackgroundswxsBrushsselfsGetBackgroundColoursClear(sselfsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysDrawFaceKscCsti||iƒ}dS(N(swxsBufferedPaintDCsselfsbuffersdc(sselfsevtsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysOnPaintPscCs¤|iƒ\}}t||ƒ}||d} ||d}|d}|i | |||ƒ|i ƒ|i t it idddƒƒƒ|i| |||ƒ|it it idt iƒƒ|i| ||| |||ƒ|i| ||| |||ƒ|io„t|iiƒiƒ}t|iiƒiƒ}|iiƒ}|iiƒ} |djo*| t!|ƒ7} |t!|ƒ7}d}nt"| |dƒ}|ii$ƒ}|ii&ƒ}|djo*|t!|ƒ7}|t!|ƒ7}d}nt"||dƒ} t|ƒ|}t|ƒ| } t+||ƒ}t+|| ƒ} || }| |}|it it i.dƒƒ|i/||ƒn|i0ƒdS(Niiûiüiíii(1sselfs GetClientSizeswshsminsedgeSizesxoriginsyoriginscentersdcsSetClippingRegions BeginDrawingsSetBrushswxsBrushsColours DrawRectanglesSetPensPensBLACKsDOT_DASHsDrawLinessticksfloats GetPositionsxsjoyxsysjoyysGetXMinsxminsGetXMaxsxmaxsabssmaxsxrangesGetYMinsyminsGetYMaxsymaxsyrangesxratiosyratiosintsxvalsyvalsREDs CrossHairs EndDrawing(sselfsdcsxrangesxminsxvalsyminsjoyxsjoyysymaxsyrangesxoriginsxmaxsyvalsyratioscentershsxratiosyoriginswsysxsedgeSize((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys DrawJoystickWsL  %"""       cCs<titi|ƒ|iƒ}|i|ƒ|i|ƒdS(N(swxs BufferedDCsClientDCsselfsbuffersdcsDrawFaces DrawJoystick(sselfsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdate™s (s__name__s __module__s__init__sOnSizesDrawFacesOnPaints DrawJoysticksUpdate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysJoyGauge/s     BsJoyPanelcBstZd„Zd„ZRS(NcCs1||_tii||dƒtitiƒ}ti |i ƒi ƒd|i ƒi ƒ|i ƒi ƒtiƒ}ti|dddtiƒ}|i|ƒ|i|dtitiBtiBtiBdƒt||iƒ|_|i|idtitiBtiBtiBdƒ|i|ƒ|i|ƒdS(Niÿÿÿÿis X - Y Axessstyleii(ssticksselfswxsPanels__init__sparentsBoxSizersVERTICALssizersFontsGetFonts GetPointSizes GetFamilysGetStylesBOLDsfns StaticTexts ALIGN_CENTREstsSetFontsAddsALLsEXPANDs ALIGN_CENTERsALIGN_CENTER_HORIZONTALsJoyGaugescontrolsSetSizersFit(sselfsparentsstickssizerstsfn((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__¢s   .1 cCs|iiƒdS(N(sselfscontrolsUpdate(sself((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdate»s(s__name__s __module__s__init__sUpdate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysJoyPanel¡s sPOVGaugecBsGtZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCsÜ||_ddf|_t|_t|_t|_tii ||dd|iƒ|i ti |i ƒ|i ti|iƒ|i tid„ƒti|iŒ|_tit|iƒ}|i|ƒ|i|ƒdS(NidiÿÿÿÿssizecCstS(N(sNone(se((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysÑs(ssticksselfssizesFalsesavailsfourDirsctsswxsPanels__init__sparentsBinds EVT_PAINTsOnPaintsEVT_SIZEsOnSizesEVT_ERASE_BACKGROUNDs EmptyBitmapsbuffers BufferedDCsNonesdcsDrawFacesDrawPOV(sselfsparentssticksdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__Ås     cCs|iƒ\}}t||ƒ}||f|_ti||ƒ|_ ti ti |ƒ|i ƒ}|i |ƒ|i|ƒdS(N(sselfs GetClientSizeswshsminssssizeswxs EmptyBitmapsbuffers BufferedDCsClientDCsdcsDrawFacesDrawPOV(sselfseventshsdcsssw((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysOnSizeÙs cCs*|iti|iƒƒƒ|iƒdS(N(sdcs SetBackgroundswxsBrushsselfsGetBackgroundColoursClear(sselfsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysDrawFaceäscCsti||iƒ}dS(N(swxsBufferedPaintDCsselfsbuffersdc(sselfsevtsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysOnPaintéscCs›|iƒ\} }t| |ƒ}| |d} ||d}| |d}||d}|i ƒ|i t it iƒƒ|i|||dƒ|i t it iƒƒ|i||dƒ|it it idt iƒƒ|i| || ||ƒ|i|||||ƒ|ion|io`d}|io|iiƒ}n|io|iiƒ}nd|jo djno d} nd} |dd }|djo|d }ntid }t!t"| ti#||ƒƒƒ} t!t"| ti%||ƒƒƒ} | |}| |}|it it i)dƒƒ|i||||ƒ|i t it i)ƒƒ|i||d ƒqn|i*ƒdS( Nii iiÿÿÿÿii ŒiidiZihi´i(+sselfs GetClientSizeswshsminsdiametersxoriginsyoriginsxcentersycentersdcs BeginDrawingsSetBrushswxsBrushsWHITEs DrawCirclesBLACKsSetPensPensDOT_DASHsDrawLinessticksavailspossfourDirsGetPOVPositionsctssGetPOVCTSPositionsvectorsmathspisradiansPerDegreesintsroundscosspointXssinspointYsnxsnysBLUEs EndDrawing(sselfsdcsdiametershsxcentersnxspossyoriginsnysvectorswspointYspointXsxoriginsradiansPerDegreesycenter((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysDrawPOVðsJ "       ##  cCs<titi|ƒ|iƒ}|i|ƒ|i|ƒdS(N(swxs BufferedDCsClientDCsselfsbuffersdcsDrawFacesDrawPOV(sselfsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdate6s cCs:|i}|iƒ|_|iƒ|_|iƒ|_dS(N( sselfssticksssHasPOVsavails HasPOV4DirsfourDirs HasPOVCTSscts(sselfss((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys Calibrate<s ( s__name__s __module__s__init__sOnSizesDrawFacesOnPaintsDrawPOVsUpdates Calibrate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysPOVGaugeÁs    F s POVStatuscBstZd„Zed„ZRS(NcCsJ||_tii||ddddfƒtitiƒ}|i ddfƒti |ddƒ|_ |i |i dti ti BtiBdƒti |ddƒ|_|i |idti ti BtiBdƒti |dd ƒ|_|i |idti ti BtiBdƒ|i|ƒ|i|ƒ|iti|iƒdS( Niÿÿÿÿssizeidis Availableiis 4-Way Onlys Continuous(ssticksselfswxsPanels__init__sparentsBoxSizersVERTICALssizersAddsCheckBoxsavailsALLsEXPANDs ALIGN_LEFTsfourDirsctssSetSizersFitsBinds EVT_CHECKBOXs Calibrate(sselfsparentsstickssizer((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__Is "***  cCsO|i}|ii|iƒƒ|ii|iƒƒ|ii|i ƒƒdS(N( sselfssticksssavailsSetValuesHasPOVsfourDirs HasPOV4Dirsctss HasPOVCTS(sselfsevtss((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys Calibratebs (s__name__s __module__s__init__sNones Calibrate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys POVStatusEs sPOVPanelcBs#tZd„Zd„Zd„ZRS(NcCs­||_tii||ddddfƒtitiƒ}titi ƒ}|i ddfƒti |i ƒiƒd|i ƒiƒ|i ƒiƒtiƒ}ti|dddtiƒ}|i|ƒ|i |dtitiBd ƒt||ƒ|_|i |id titiBtiBd ƒ|i |d titiBtiBd ƒt||ƒ|_|i |id titiBtiBd ƒ|i|ƒ|i|ƒdS( Niÿÿÿÿssizeidiis POV Controlsstyleii(ssticksselfswxsPanels__init__sparentsBoxSizers HORIZONTALssizersVERTICALsgsizersAddsFontsGetFonts GetPointSizes GetFamilysGetStylesBOLDsfns StaticTexts ALIGN_CENTERstsSetFontsALLsEXPANDsPOVGaugesdisplays POVStatussstatussSetSizersFit(sselfsparentsstickssizerstsgsizersfn((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__ls& "   *'* cCs|iiƒ|iiƒdS(N(sselfsdisplays Calibratesstatus(sself((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys CalibrateŒs cCs|iiƒdS(N(sselfsdisplaysUpdate(sself((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdate‘s(s__name__s __module__s__init__s CalibratesUpdate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysPOVPanelks sLEDcBs>tZd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCsd|_ddf|_||_ti|iƒiƒd|iƒi ƒ|iƒi ƒti ƒ|_ ti i||dd|iƒ|iti|iƒ|iti|iƒ|itid„ƒti|iŒ|_tit|iƒ}|i|ƒ|i|ƒdS(NiÿÿÿÿiissizecCstS(N(sNone(se((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys©s(sselfsstatessizesnumberswxsFontsparentsGetFonts GetPointSizes GetFamilysGetStylesBOLDsfnsPanels__init__sBinds EVT_PAINTsOnPaintsEVT_SIZEsOnSizesEVT_ERASE_BACKGROUNDs EmptyBitmapsbuffers BufferedDCsNonesdcsDrawFacesDrawLED(sselfsparentsnumbersdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__˜s   cCs|iƒ\}}t||ƒ}||f|_ti|iŒ|_ ti ti |ƒ|i ƒ}|i |ƒ|i|ƒdS(N(sselfs GetClientSizeswshsminssssizeswxs EmptyBitmapsbuffers BufferedDCsClientDCsdcsDrawFacesDrawLED(sselfseventshsdcsssw((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysOnSize±s cCs*|iti|iƒƒƒ|iƒdS(N(sdcs SetBackgroundswxsBrushsselfsGetBackgroundColoursClear(sselfsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysDrawFace¼scCsti||iƒ}dS(N(swxsBufferedPaintDCsselfsbuffersdc(sselfsevtsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysOnPaintÁsc CsJ|i\}}|d}||d} ||d}|iƒ|i djo|i t i t i ƒƒnG|i djo|i t i t iƒƒn|i t i t iƒƒ|i|||dƒt|iƒ} |i|iƒ|i| ƒ\}} ||d}|| d}|it iƒ|i| ||ƒ|iƒdS(Niii(sselfssizesbwsbhscentersxoriginsyoriginsdcs BeginDrawingsstatesSetBrushswxsBrushsREDsGREENsBLACKs DrawCirclesstrsnumberstxtsSetFontsfns GetTextExtentsfwsfhstxstysSetTextForegroundsWHITEsDrawTexts EndDrawing( sselfsdcscenterstxsfwstysbhsyoriginsbwsfhsxoriginstxt((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysDrawLEDÈs&  cCs<titi|ƒ|iƒ}|i|ƒ|i|ƒdS(N(swxs BufferedDCsClientDCsselfsbuffersdcsDrawFacesDrawLED(sselfsdc((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdateùs (s__name__s __module__s__init__sOnSizesDrawFacesOnPaintsDrawLEDsUpdate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysLED—s     1s JoyButtonscBs#tZd„Zd„Zd„ZRS(NcCs³||_h|_tii||dƒtitiƒ}ti |i ƒi ƒd|i ƒi ƒ|i ƒiƒtiƒ}ti|dddtiƒ}|i|ƒ|i|dtitiBtiBdƒtiddd d ƒ}|i|i ƒi ƒdƒxgtdtƒD]V}t||ƒ}||i|<|i|dtitiBti Bdƒ|i!|ƒqW|i|dtitiBtiBdƒ|i"|ƒ|i#|ƒdS( NiÿÿÿÿisButtonssstyleiiiii($ssticksselfsledsswxsPanels__init__sparentsBoxSizersVERTICALstsizersFontsGetFonts GetPointSizes GetFamilysGetStylesBOLDsfns StaticTexts ALIGN_LEFTstsSetFontsAddsALLsEXPANDs FlexGridSizerssizers SetPointSizesranges MAX_BUTTONSsisLEDs ALIGN_CENTERsALIGN_CENTER_VERTICALsAddGrowableColsSetSizersFit(sselfsparentsstickstsizerssizersistsfn((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__s,    ' '' cCsgx'tdtƒD]}d|i|_qW|iiƒ}x'td|ƒD]}d|i|_qIWdS(Niiÿÿÿÿ( sranges MAX_BUTTONSsisselfsledssstatessticksGetNumberButtonsst(sselfsist((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys Calibrate%scCsŒ|iiƒ}xvtdtƒD]e}|i|idjod|i|_n|d|>@od|i|_n|i|i ƒqWdS(Nii( sselfssticksGetButtonStatestsranges MAX_BUTTONSsisledssstatesUpdate(sselfsist((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdate.s(s__name__s __module__s__init__s CalibratesUpdate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys JoyButtonss # s InfoPanelcBstZd„Zd„ZRS(Nc Csÿ||_tii||dƒtiddƒ}|it |dƒddfddfti ti Bti Bdƒti |ddddd dfd tiƒ|_|i|iddfddfti ti BtiBdƒ|it |d ƒddfddfti ti Bti Bdƒti |dddd tiƒ|_|i|idd fdd fti ti BtiBdƒ|it |d ƒddfddfti ti Bti Bdƒti |ddddd dfd tiƒ|_|i|iddfddfti ti BtiBdƒti|ddƒ}|i|ddfddfti tiBdƒ|it |dƒddfddfti ti Bti Bdƒti |ddddd dfd tiƒ|_|i|idd fddfti ti BtiBdƒ|it |dƒddfddfti ti Bti Bdƒti |ddddd dfd tiƒ|_|i|iddfddfti ti BtiBdƒ|it |dƒddfddfti ti Bti Bdƒti |ddddd dfd tiƒ|_|i|iddfddfti ti BtiBdƒ|it |dƒdd fddfti ti Bdƒ|it |dƒddfddfti ti Bti Bdƒti |ddddd dfd tiƒ|_|i|iddfddfti ti BtiBdƒ|it |dƒddfddfti ti Bti Bdƒti |ddddd dfd tiƒ|_|i|iddfddfti ti BtiBdƒ|i|ƒ|i|ƒdS(NiÿÿÿÿisMfr ID: iisvaluesssizei-sstyles Prod Name: is Threshold: iis Calibrates # of Sticks: s # of Axes: iis Max # Axes: s Polling -- sMin: sMax: (ssticksselfswxsPanels__init__sparents GridBagSizerssizersAddsLabelsALLsGROWs ALIGN_RIGHTsTextCtrls TE_READONLYsMfgIDs ALIGN_LEFTsProdNames ThresholdsButtonsbs ALIGN_CENTERs NumJoystickssNumAxissMaxAxissPollMinsPollMaxsSetSizersFit(sselfsparentssticksbssizer((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__>s@ ?09?$9?09/?09?09?098?09?09 cCs|i odSn|i}|iit|iƒƒƒ|iit|iƒƒƒ|i it|i ƒƒƒ|i it|i ƒƒƒ|i it|iƒƒƒ|iit|iƒƒƒ|iit|iƒƒƒ|iit|iƒƒƒdS(N(sselfssticksssMfgIDsSetValuesstrsGetManufacturerIdsProdNamesGetProductNames ThresholdsGetMovementThresholds NumJoystickssGetNumberJoystickssNumAxiss GetNumberAxessMaxAxiss GetMaxAxessPollMins GetPollingMinsPollMaxs GetPollingMax(sselfss((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys Calibratets  (s__name__s __module__s__init__s Calibrate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys InfoPanel=s 6sAxisBarcBs,tZd„Zd„Zd„Zd„ZRS(Nc Csrtii||dddddfdtitiBƒd|_|idƒ|i dƒ|i ti |i ƒdS( Niÿÿÿÿièssizeisstyleis light bluesorange( swxsGauges__init__sselfsparents GA_HORIZONTALs GA_SMOOTHsrawvaluesSetBackgroundColoursSetForegroundColoursBinds EVT_PAINTsonPaint(sselfsparent((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__s 5   cCs|i|ƒ||_dS(N(sselfsSetValuesvaluesrawvalue(sselfsvaluesrawvalue((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdates cCs|iti|ƒ|ƒdS(N(sselfs ShowValueswxsPaintDCsevt(sselfsevt((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysonPaint£sc Cs|iƒtii||ƒ|iƒ\}}t |i ƒ} ti |iƒiƒ|iƒiƒ|iƒiƒtiƒ} |i| ƒ|i| ƒ\}}|d}||d}|d}||d} |itiƒ|i| || ƒ|idƒ|i| |d| dƒdS(Niswhitei(sdcsClearswxsGaugesOnPaintsselfsevtsGetSizeswshsstrsrawvaluestxtsFontsGetFonts GetPointSizes GetFamilysGetStylesBOLDsfnsSetFonts GetTextExtentsfwsfhscenterstxstysSetTextForegroundsBLACKsDrawText( sselfsdcsevtstxsfwshscenterswsfhstystxtsfn((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys ShowValue¨s$      (s__name__s __module__s__init__sUpdatesonPaints ShowValue(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysAxisBar†s  sAxiscBs,tZd„Zd„Zd„Zd„ZRS(NcCsþ||_||_|ddgjotd|ƒ|_n |i|_tii||dƒti ti ƒ}|iƒotd|ƒ|_ td|ƒ|_ti|dt|i ƒƒdtiƒ|_ti|dt|iƒƒdtiƒ|_t|ƒ|_|i|idtitiBtiBd ƒ|i|id titiBtiBd ƒ|i|idtitiBtiBd ƒnCti|dd ƒ|_|i|id titiBtiBd ƒ|i|ƒ|i|ƒti|iƒdS( NsXsYs stick.Has%siÿÿÿÿsstick.Get%sMinsstick.Get%sMaxsstyleiis *** Not Present ***( ssticksselfstokensevalsHasFuncs alwaysTrueswxsPanels__init__sparentsBoxSizers HORIZONTALssizersGetMinsGetMaxs StaticTextsstrs ALIGN_RIGHTsMins ALIGN_LEFTsMaxsAxisBarsbarsAddsALLsALIGN_CENTER_VERTICALs ALIGN_CENTERscontrolsSetSizersFits CallAftersUpdate(sselfsparentstokensstickssizer((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__äs*    --**.*  cCsR|iƒ odSn|iit|iƒƒƒ|iit|iƒƒƒdS(N(sselfsHasFuncsMinsSetLabelsstrsGetMinsMaxsGetMax(sself((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys CalibratescCs"|iƒ odSnt|iiƒƒ}t|iiƒƒ}|idjo|i i ƒi }n:|idjo|i i ƒi }ntd|iƒ}|djo*|t|ƒ7}|t|ƒ7}d}nt||ƒ}d}|ot||dƒ}n|ii||ƒdS(NsXsYsself.stick.Get%sPosition()iiè(sselfsHasFuncsintsMinsGetLabelsminsMaxsmaxstokenssticks GetPositionsxsvalsysevalsabssfloatsrangesrelativesbarsUpdate(sselfsvalsminsmaxsrelativesrange((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdate"s$   cCstSdS(N(sTrue(sself((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys alwaysTrueUs(s__name__s __module__s__init__s CalibratesUpdates alwaysTrue(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysAxisÝs 6  3s AxisPanelcBs#tZd„Zd„Zd„ZRS(NcCsP||_ddfddfddfddfd d fd d fg}g|_tii||d ƒtiddddƒ}|i dƒ|i dƒx‰|D]\}}|i t||ƒdtitiBdƒt|||iƒ}|ii|ƒ|i |dtitiBtiBdƒqW|i|ƒ|i|ƒti|iƒdS(NsX Axis sXsY Axis sYsZ Axis sZsRudder sRuddersU Axis sUsV Axis sViÿÿÿÿiiiii(ssticksselfsaxesListsaxesswxsPanels__init__sparents FlexGridSizerssizersAddGrowableColslabelstokensAddsLabelsALLs ALIGN_RIGHTsAxisstsappendsEXPANDs ALIGN_LEFTsSetSizersFits CallAftersUpdate(sselfsparentsstickssizerslabelstokenstsaxesList((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__cs  <    )+  cCs"x|iD]}|iƒq WdS(N(sselfsaxessis Calibrate(sselfsi((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys Calibrateˆs cCs"x|iD]}|iƒq WdS(N(sselfsaxessisUpdate(sselfsi((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysUpdateŒs (s__name__s __module__s__init__s CalibratesUpdate(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys AxisPanel\s % sJoystickDemoPanelcBs2tZd„Zed„Zed„Zd„ZRS(NcCsy||_tii||dƒyCtiƒ|_|ii|ƒti |i ƒti |i ƒWn4t j o(}tit|ƒdƒt|_nXtiddƒ}t||iƒ|_|i|iddfddftitiBdƒ|iiti|i ƒt||iƒ|_|i|iddfddftitiBdƒt||iƒ|_|i|iddfddftitiBdƒt||iƒ|_|i|iddfddftitiBdƒt ||iƒ|_!|i|i!ddfddftiti"Bti#Bti$Bdƒ|i%|ƒ|i&|ƒ|iti'|i ƒ|ii(dƒdS(NiÿÿÿÿsException Messageiiiii ()slogsselfswxsPanels__init__sparentsJoystickssticks SetCaptures CallAfters Calibrates OnJoysticksNotImplementedErrorsvs MessageBoxsstrsNones GridBagSizerssizers InfoPanelsinfosAddsALLsGROWsBinds EVT_BUTTONsJoyPanelsjoysPOVPanelspovs AxisPanelsaxess JoyButtonssbuttonssEXPANDs ALIGN_CENTERsALIGN_CENTER_VERTICALsSetSizersFitsEVT_JOYSTICK_EVENTSsSetMovementThreshold(sselfsparentslogssizersv((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys__init__•s4 2222@  cCsK|i odSn|iiƒ|iiƒ|iiƒ|iiƒdS(N(sselfssticksinfos Calibratesaxesspovsbuttons(sselfsevt((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys CalibrateÃs     cCsi|i odSn|iiƒ|iiƒ|iiƒ|tj o |iƒo|i iƒndS(N( sselfssticksaxessUpdatesjoyspovsevtsNonesIsButtonsbuttons(sselfsevt((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys OnJoystickÎs    cCs(|io|iiƒnt|_dS(N(sselfssticksReleaseCapturesNone(sself((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys ShutdownDemoÙs (s__name__s __module__s__init__sNones Calibrates OnJoysticks ShutdownDemo(((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysJoystickDemoPanel“s . cCsKtot||ƒ}|Sn*dkl}||ddtiƒ}|SdS(N(s MessagePanels.wx.Joystick is not available on this platform.sSorry( s haveJoysticksJoystickDemoPanelsnbslogswinsMains MessagePanelswxs ICON_WARNING(sframesnbslogswins MessagePanel((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pysrunTestàs  sF

wx.Joystick

This demo illustrates the use of the wx.Joystick class, which is an interface to one or more joysticks attached to your system.

The data that can be retrieved from the joystick comes in four basic flavors. All of these are illustrated in the demo. In fact, this demo illustrates everything you can get from the wx.Joystick control.

  • Static information such as Manufacturer ID and model name,
  • Analog input from up to six axes, including X and Y for the actual stick,
  • Button input from the fire button and any other buttons that the stick has,
  • and the POV control (a kind of mini-joystick on top of the joystick) that many sticks come with.

Getting data from the joystick can be event-driven thanks to four event types associated with wx.JoystickEvent, or the joystick can be polled programatically to get data on a regular basis.

Data types

Data from the joystick comes in two flavors: that which defines the boundaries, and that which defines the current state of the stick. Thus, we have Get*Max() and Get*Min() methods for all axes, the max number of axes, the max number of buttons, and so on. In general, this data can be read once and stored to speed computation up.

Analog Input

Analog input (the axes) is delivered as a whole, positive number. If you need to know if the axis is at zero (centered) or not, you will first have to calculate that center based on the max and min values. The demo shows a bar graph for each axis expressed in native numerical format, plus a 'centered' X-Y axis compass showing the relationship of that input to the calculated stick position. Analog input may be jumpy and spurious, so the control has a means of 'smoothing' the analog data by setting a movement threshold. This demo sets the threshold to 10, but you can set it at any valid value between the min and max.

Button Input

Button state is retrieved as one int that contains each button state mapped to a bit. You get the state of a button by AND-ing its bit against the returned value, in the form
     # assume buttonState is what the stick returned, and buttonBit 
     # is the bit you want to examine
     
     if (buttonState & ( 1 << buttonBit )) :
         # button pressed, do something with it

The problem here is that some OSs return a 32-bit value for up to 32 buttons (imagine that stick!). Python V2.3 will generate an exception for bit values over 30. For that reason, this demo is limited to 16 buttons.

Note that more than one button can be pressed at a time, so be sure to check all of them!

POV Input

POV hats come in two flavors: four-way, and continuous. four-way POVs are restricted to the cardinal points of the compass; continuous, or CTS POV hats can deliver input in .01 degree increments, theoreticaly. The data is returned as a whole number; the last two digits are considered to be to the right of the decimal point, so in order to use this information, you need to divide by 100 right off the bat.

Different methods are provided to retrieve the POV data for a CTS hat versus a four-way hat.

Caveats

The wx.Joystick control is in many ways incomplete at the C++ library level, but it is not insurmountable. In short, while the joystick interface can be event-driven, the wx.JoystickEvent class lacks event binders for all event types. Thus, you cannot rely on wx.JoystickEvents to tell you when something has changed, necessarilly.
  • There are no events associated with the POV control.
  • There are no events associated with the Rudder
  • There are no events associated with the U and V axes.

Fortunately, there is an easy workaround. In the top level frame, create a wx.Timer that will poll the stick at a set interval. Of course, if you do this, you might as well forgo catching wxEVT_JOYSTICK_* events at all and rely on the timer to do the polling.

Ideally, the timer should be a one-shot; after it fires, collect and process data as needed, then re-start the timer, possibly using wx.CallAfter(). s__main__sii(!smathswxsTrues haveJoysticksPlatformsFalses MAX_BUTTONSs StaticTextsLabelsPanelsJoyGaugesJoyPanelsPOVGauges POVStatussPOVPanelsLEDs JoyButtonss InfoPanelsGaugesAxisBarsAxiss AxisPanelsJoystickDemoPanelsrunTestsoverviews__name__ssyssossrunsmainspathsbasenamesargv(s MAX_BUTTONSs haveJoysticksoverviewsLabels JoyButtonss POVStatussrunsAxisBars AxisPanelsLEDswxsmathsPOVGauges InfoPanelssyssJoystickDemoPanelsJoyPanelsJoyGaugesPOVPanelsrunTestsossAxis((sh/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/Joystick.pys?s0   r „&,j<IW7M c