;ò •¬¹Cc@sÓdkZdkiiZdeifd„ƒYZdeifd„ƒYZdeifd„ƒYZ d„Z dZ e d joPdk Z dkZdkZeid eiie id ƒge id ƒndS( Ns TestPanelcBstZd„ZRS(NcCsïtii||dƒ||_|iƒiƒ}ti |dti ti ti ƒ}ti |dti ti ti ƒ}ti |dti ti ti ƒ}ti|ddƒ} | i|ƒd}ti|d|ƒ} | i|ƒti|ddƒ} | i|ƒd}ti|d|ƒ} | i|ƒti|dd ƒ}|i|ƒd }ti|d|ƒ} | i|ƒt||d tid d d ƒddƒ}ti|dƒ}titiƒ}|i }|i"ddfdƒxšddddddgD]€}|i"t|||d|ƒdti$ƒ|i"ddfdƒ|i"t||||ƒdti$ƒ|i"ddfdƒqW|i%|ƒ|i&|ƒtiti'ƒ}|i"| dti$ti(Bti)Bdƒ|i"| dti$ti*Bdƒ|i"| dti$ti+Bti(Bti,Bdƒ|i"| dti$ti*Bdƒ|i"|dti-ti*Bdƒ|i"|dti$ti+Bti,Bdƒ|i"| dti$ti*Bdƒ|i"|dti-ti+Bti)Bti,Bdƒ|i%|ƒdS(Niÿÿÿÿiiis EventManagersÁ This demo shows (1) basic uses and features of the EventManager, as well as (2) how it helps with a real-world task: creating independent, object- oriented components.sEvent Listenerssó These objects listen to motion events from the target window, using the ability to register one event with multiple listeners. They also register for mouse events on themselves to implement toggle-button functionality.s Target Windows‚ A passive window that's used as an event generator. Move the mouse over it to send events to the listeners above.sbgColoriPi sactiveif0.20000000000000001f0.29999999999999999f0.40000000000000002f0.5f0.59999999999999998f0.69999999999999996f0.050000000000000003i(.swxsPanels__init__sselfsparentslogsGetFonts GetPointSizesfsizesFontsSWISSsNORMALsf1sBOLDsf2sf3s StaticTextstitle1sSetFontstxtsmessage0stitle2smessage1stitle3smessage2sTilesColours targetPanels buttonPanelsBoxSizers HORIZONTALssizerstilestargetsAddsfactors ALIGN_CENTERsSetSizersFitsVERTICALsTOPsBOTTOMsALLsLEFTsRIGHTsEXPAND(sselfsparentslogsf1sf2sf3ssizersfactorsfsizesmessage2smessage1smessage0stitle1stitle2stitle3stargets targetPanelstxts buttonPanel((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys__init__sX %%%      * )%  ' .  ' .(s__name__s __module__s__init__(((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys TestPanelssTilecBs’tZdZeidddƒZeidddƒZeidddƒZdeedddfdd „Z d „Z d „Z d „Z d „Z RS(s“ This outer class is responsible for changing its border color in response to certain mouse events over its contained 'InnerTile'. i–iúiõiÒiÜii&ic CsLtii||dd|dtiƒt|||||ƒ|_ ||_ti tiƒ} | i|i dtitiB|ƒ|i| ƒ|iƒtii|iti|ƒ|itiƒ|o€tii|iti |i ƒtii|i!ti"|i ƒtii|i#ti$|i ƒtii|iti%|i ƒndS(Niÿÿÿÿssizesstylei(&swxsWindows__init__sselfsparentssizes CLIP_CHILDRENs InnerTileslogsfactors thingToWatchsbgColorstilesBoxSizers HORIZONTALssizersAddsEXPANDsALLs borderWidthsSetSizersLayoutsems eventManagersRegistersdoLayoutsEVT_SIZEsSetBackgroundColoursTilesnormalsactivessetHoversEVT_ENTER_WINDOWs setNormalsEVT_LEAVE_WINDOWs setActives EVT_LEFT_DOWNs EVT_LEFT_UP( sselfsparentslogsfactors thingToWatchsbgColorsactivessizes borderWidthssizer((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys__init__]s% #  cCs|iƒdS(N(sselfsLayout(sselfsevent((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pysdoLayoutpscCs|itiƒ|iƒdS(N(sselfsSetBackgroundColoursTileshoversRefresh(sselfsevent((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pyssetHovertscCs|itiƒ|iƒdS(N(sselfsSetBackgroundColoursTilesactivesRefresh(sselfsevent((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys setActiveyscCs|itiƒ|iƒdS(N(sselfsSetBackgroundColoursTilesnormalsRefresh(sselfsevent((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys setNormal~s(s__name__s __module__s__doc__swxsColoursnormalsactiveshoversNones__init__sdoLayoutssetHovers setActives setNormal(((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pysTileSs !   s InnerTilecBsËtZeidddƒZeidddƒZeidddƒZeidd dƒZed „ei ƒei ƒƒZ ei ƒZ e e d „Z e d „Ze d „Zd„Zd„Zd„ZRS(NiPi iÈiFi2iiði¹i¾cCs||S(N(sbsa(sasb((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pysŠscCsštii||dƒ|iddfƒ||_|o|i|ƒn|oE||_ ||_ d|_ |i ƒt ii|i ti|ƒndS(Niÿÿÿÿii(swxsWindows__init__sselfsparents SetMinSizeslogsbgColorsSetBackgroundColours thingToWatchsfactorsstates toggleOnOffsems eventManagersRegisters EVT_LEFT_UP(sselfsparentslogsfactors thingToWatchsbgColor((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys__init__‘s     cCs^|iotii|iƒn tii|iti|i ƒd|i|_|i ƒdS(Ni( sselfsstatesems eventManagersDeregisterListeners makeColorsRegisterswxs EVT_MOTIONs thingToWatchs resetColor(sselfsevent((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys toggleOnOff s  cCs2|io|itiƒn|itiƒdS(N(sselfsstatessetColors InnerTiles IDLE_COLORs OFF_COLOR(sselfsevent((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys resetColor«s cCs|i|ƒ|iƒdS(N(sselfsSetBackgroundColourscolorsRefresh(sselfscolor((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pyssetColor²s cCs|i|iƒƒdS(N(sselfsmakeColorFromTuples mouseEventsGetPositionTuple(sselfs mouseEvent((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys makeColor·sc Cs¼|\}}d}t|||i|ƒ}||}ti dti d|} ti dti d|}ti dti d|}|itit| ƒt|ƒt|ƒƒƒdS(Nf180.0iii(sxsysMAXsminsselfsfactorsscaledspercents InnerTilesSTART_COLOR_TUPLEsDELTASsrsgsbssetColorswxsColoursint( sselfs.2sxsysbsgsMAXspercentsscaledsr((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pysmakeColorFromTuple»s  (s__name__s __module__swxsColours IDLE_COLORs START_COLORs FINAL_COLORs OFF_COLORsmapsGetsDELTASsSTART_COLOR_TUPLEsNones__init__s toggleOnOffs resetColorssetColors makeColorsmakeColorFromTuple(((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys InnerTile„s!    cCst||ƒ}|SdS(N(s TestPanelsnbslogswin(sframesnbslogswin((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pysrunTestÉss¯

EventManager

The goal of the EventManager is to make wxWindows events more 'Pythonic' (ie. object-oriented) and easier to work with, without impacting performance. It offers these features:

Usage

The EventManager class has three public methods. First get a reference to it:

  from wxPython.lib.evtmgr import eventManager

...and then invoke any of the following methods. These methods are 'safe'; duplicate registrations or de-registrations will have no effect.

Registering a listener:

  eventManager.Register(listener, event, event-source)

De-registering by window:

  eventManager.DeregisterWindow(event-source)

De-registering by listener:

  eventManager.DeregisterListener(listener)

Simple Example:

  from wxPython.lib.evtmgr import eventManager

  aButton = wxButton(somePanel, -1, 'Click me')
  eventManager.Register(self.someMethod, EVT_BUTTON, aButton)

See the demo code as well as the documentation in the source of wxPython.lib.evtmgr for more details.

by Robb Shecter (robb@acm.org) s__main__sii(swxs wx.lib.evtmgrslibsevtmgrsemsPanels TestPanelsWindowsTiles InnerTilesrunTestsoverviews__name__ssyssossrunsmainspathsbasenamesargv( semssyssruns InnerTilesoverviewsrunTestsTileswxsoss TestPanel((sl/mnt/gmirror/ports/x11-toolkits/py-wxPython26-common/work/wxPython-src-2.6.3.3/wxPython/demo/EventManager.pys? s B1E M