tzh
2024-08-22 c7d0944258c7d0943aa7b2211498fd612971ce27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
[\¬Qc@s)dZddlZddlZddlZddlZddlmZdZdZdZ    dZ
dZ d    Z d
Z d Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdTZdUZdVZ dWZ!dXZ"dYZ#ej$ƒr'dZd[d\d]fZ%eee"e#fZ&n$d^d_d`dafZ%ee ee!fZ&e'ge(e)e%ƒƒD]#Z*e%e*D]Z+e+e*f^qoqaƒZ,d"dbd#„ƒYZ-e(de)e%ƒ>ƒZ.ge.D]%Z/d$j0d%„e1e%ƒDƒƒ^q½Z2d&„Z3e3e.ƒZ4gZ5x]e.D]UZ/dZ6x9e(e)e%ƒƒD]%Z7de7>e/@r)e6e&e7OZ6q)q)We5j8e6ƒq
Wd'dcd(„ƒYZ9dddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzfZ:e9fde-fe)e:ƒdZ;e'ge(e)e:ƒƒD]#Z*e:e*D]Z+e+e*f^qqùƒZ<ej=dBƒZ>ej=dCƒZ?dD„Z@dE„ZAiZBdF„ZCeDdGkr%ejEƒZFeCejGƒeFƒZHeHjIƒdgdH„ZJeJdIƒeJdJƒeJdKƒeJdLƒeJdMƒeJdNƒeJdOƒeJdPƒeJdQƒeJdRƒeJdSƒeFjKƒndS({s˜
MultiCall - a class which inherits its methods from a Tkinter widget (Text, for
example), but enables multiple calls of functions per virtual event - all
matching events will be called, not only the most specific one. This is done
by wrapping the event functions - event_add, event_delete and event_info.
MultiCall recognizes only a subset of legal event sequences. Sequences which
are not recognized are treated by the original Tk handling mechanism. A
more-specific event will be called before a less-specific event.
 
The recognized sequences are complete one-event sequences (no emacs-style
Ctrl-X Ctrl-C, no shortcuts like <3>), for all types of events.
Key/Button Press/Release events can have modifiers.
The recognized modifiers are Shift, Control, Option and Command for Mac, and
Control, Alt, Shift, Meta/M for other platforms.
 
For all events which were handled by MultiCall, a new member is added to the
event instance passed to the binded functions - mc_type. This is one of the
event type constants defined in this module (such as MC_KEYPRESS).
For Key/Button events (which are handled by MultiCall and may receive
modifiers), another member is added - mc_state. This member gives the state
of the recognized modifiers, as a combination of the modifier constants
also defined in this module (for example, MC_SHIFT).
Using these members is absolutely portable.
 
The order by which events are called is defined by these rules:
1. A more-specific event will be called before a less-specific event.
2. A recently-binded event will be called before a previously-binded event,
   unless this conflicts with the first rule.
Each function will be called at most once for each event.
iÿÿÿÿN(t macosxSupportiiiiiiiiii    i
i i i iiiiiiiiitShifttControltOptiontCommandtAlttMetatMt _SimpleBindercBs,eZd„Zd„Zd„Zd„ZRS(cCsJ||_dt|dd|_||_||_g|_d|_dS(Nt<it>(ttypet_typestsequencetwidgett
widgetinstt bindedfuncstNonet    handlerid(tselfR RR((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyt__init__Fs                 cCsV|jsB|j|jd„}|jj|j|j|ƒ|_n|jj|ƒdS(NcSss||_i}x]tt|ƒdddƒD]?}||}||kr,t||<||ƒ}|rk|Sq,q,WdS(Niiÿÿÿÿ(tmc_typetrangetlentTrue(teventtlRt    wascalledtitfunctr((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pythandlerPs    #
 
 (RRR RtbindRR tappend(RttripletRR((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR Ns
    
cCsH|jj|ƒ|jsD|jj|j|j|jƒd|_ndS(N(RtremoveRtunbindRR RR(RR"R((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR$^s    cCs/|jr+|jj|j|j|jƒndS(N(RRR$RR (R((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyt__del__ds    (t__name__t
__module__RR R$R%(((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyREs            tccs1|]'\}}d|>t@r|ddVqdS(iit-N(ts(t.0Rtm((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pys    <genexpr>ns    csid„}g}xS|D]K‰tt‡fd†|Dƒƒƒ}|jd|dtƒ|j|ƒqW|S(s•For each item of states return a list containing all combinations of
    that item with individual bits reset, sorted by the number of set bits.
    cSs6d}x)|r1t|dƒ\}}||7}q    W|S(snumber of bits set in n base 2ii(tdivmod(tntnbtrem((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pytnbitsws
    c3s|]}ˆ|@VqdS(N((R+tx(tstate(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pys    <genexpr>€stkeytreverse(tlisttsettsortRR!(tstatesR1t    statelistt    substates((R3sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pytexpand_substatesss     "t_ComplexBindercBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs"||||j|jd„}|S(Nc SsÛtg|(||_||_i}d}x||D]t}xatt|ƒdddƒD]C}    ||    }
|
|krRt||
<||    |ƒ}|r•Pq•qRqRW|r/Pq/q/Wg|(x|D] } | ƒqµWg|(|r×|SdS(Niiÿÿÿÿ(RRtmc_stateRRR( RtlistsRR>tishandlerrunningtdoafterhandlerRRRRRtf((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR™s*
         #
 
   (R@RA(RR?RR>R((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyt__create_handler˜s
c    Cs||_t|d|_||_||_igtD] }g^q6d6|_g|_g|_    g|_
x“tD]‹}gt |D]}|jd|^q‚}|j ||t |ƒ}dt||jd}|jj||jj|j||ƒfƒqqWdS(NiR    R
(R R ttypenameRRt_statesRRt
handleridsR@RAt_state_subsetst_ComplexBinder__create_handlert _state_codest _state_namesR!R (    RR RRR*RR?Rtseq((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyRµs            #             (c
s+ˆdˆjkrïgtD] }g^qˆjˆd<xµtD]ª}gˆddfD](}t|D]}ˆj||^qcqU}ˆj|ˆjt|ƒ}dt|ˆjˆdf}ˆj    j
|ˆj j ˆj ||ƒfƒq>Wn‡‡‡fd†}    ˆjs|    ƒnˆjj
|    ƒdS(Nis    <%s%s-%s>cs ˆjˆdˆdjˆƒS(Nii(RR!((RRR"(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyt<lambda>Øs(RRERRGRHR RIRJRDRFR!RR RR@RA(
RR"RR*tdetailRR?RRKtdoit((RRR"sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR Ìs$ (     
cs<‡‡‡fd†}ˆjs(|ƒnˆjj|ƒdS(Ncs ˆjˆdˆdjˆƒS(Nii(RR#((RRR"(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyRLßs(R@RAR!(RR"RRN((RRR"sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR$Þs    
cCs7x0|jD]%\}}|jj|j||ƒq
WdS(N(RFRR$R(RRKtid((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR%ås(R&R'RHRR R$R%(((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR=s
                tKeyPresstKeyt
KeyReleaset ButtonPresstButtont ButtonReleasetActivatet    CirculatetColormapt    Configuret
DeactivatetDestroytEntertExposetFocusIntFocusOuttGravitytLeavetMaptMotiont
MouseWheeltPropertytReparenttUnmapt
Visibilitys^\w+$s^[1-5]$c    Csc| s'|ddks'|ddkr+d    Stj|dd!dƒ}d}x7|rƒ|dtkrƒ|dt|d>O}|d=qMW|r²|dtkr²t|d}|d=nd    St|tkrß|sÒ|rÖd    Sd    }nw|gd
D]}t|^qékr t}nt}|s d    }n6t    |ƒdkrR|j
|dƒrR|d}nd    S|||fS( s-Get a string which should describe an event sequence. If it is
    successfully parsed as one, return a tuple containing the state (as an int),
    the event type (as an index of _types), and the detail - None if none, or a
    string if there is one. If the parsing is unsuccessful, return None.
    iR    iÿÿÿÿR
iR)RPRRN(RPRR( Rtstringtsplitt_modifier_namest _type_namest_binder_classesRt
_keysym_ret
_button_reRtmatch(R twordst    modifiersR RMR*ttype_re((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyt_parse_sequenceþs0' 
     #        % cCsb|dr:dt|dt|ddd|ddSdt|dt|dddSdS(NiR    iiR)R
(RJR (R"((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyt_triplet_to_sequence(s
0cs>ˆtkrtˆSdˆf‡fd†ƒY}|tˆ<|S(s©Return a MultiCall class which inherits its methods from the
    given widget class (for example, Tkinter.Text). This is used
    instead of a templating mechanism.
    t    MultiCallcszeZ‡fd†Zddd‡fd†Zd‡fd†Z‡fd†Z‡fd†Zd‡fd†Zd„Z    RS(csXˆj|||Ži|_gtttƒƒD]}t||ˆ|ƒ^q/|_dS(N(Rt_MultiCall__eventinfoRRR Rmt_MultiCall__binders(RtargstkwargsR(R(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR;s    cs#t|ƒtkr t|ƒdkr |d dkr |ddkr ||jkr÷|j|}|ddk    r§x4|dD]%}|j|dj||dƒq{Wn||d<|ddk    r
x0|dD]!}|j|dj||ƒqÌWq
q |gg|j|<nˆj||||ƒS(Nis<<iþÿÿÿs>>ii(R tstrRRwRRxR$R (RR RtaddteiR"(R(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR Ds$  &
%csÈt|ƒtkrµt|ƒdkrµ|d dkrµ|ddkrµ||jkrµ|j|\}}|dk    rµx)|D]!}|j|dj||ƒqyWd|j|d<qµnˆj|||ƒS(Nis<<iþÿÿÿs>>ii(R R{RRwRRxR$(RR tfuncidRttripletsR"(R(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR$Us$   cs²||jkr%dgg|j|<n|j|\}}xs|D]k}t|ƒ}|dkrsˆj|||ƒq?|dk    r|j|dj||ƒn|j|ƒq?WdS(Ni(RwRRtt    event_addRxR R!(Rtvirtualt    sequencesRRRKR"(R(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR€`s    cs ||jkrdS|j|\}}xs|D]k}t|ƒ}|dkraˆj|||ƒq-|dk    r‹|j|dj||ƒn|j|ƒq-WdS(Ni(RwRtRt event_deleteRxR$R#(RRR‚RRRKR"(R(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyRƒps    cs]|dks||jkr+ˆj||ƒSttt|j|dƒƒˆj||ƒSdS(Ni(RRwt
event_infottupletmapRu(RR(R(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR„~s
    cSs`xY|jD]N}|j|\}}|r
x,|D]!}|j|dj||ƒq0Wq
q
WdS(Ni(RwRxR$(RRRRR"((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR%†s
 N(
R&R'RRR R$R€RƒR„R%((R(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyRv8s     (t_multicall_dict(RRv((RsY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pytMultiCallCreator0s
 V
t__main__csS‡fd†}tjd|d|ƒtjd|dˆƒ|dcd7<dS(Ncs    ˆGHdS(N((R(RK(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyR—ss <<handler%d>>ii(ttextR R€(RKR.R((RKsY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pytbindseq–ss<Key>s <Control-Key>s <Alt-Key-a>s<Control-Key-a>s<Alt-Control-Key-a>s<Key-b>s<Control-Button-1>s<Alt-Button-1>s
<FocusOut>s<Enter>s<Leave>iiii i@i€(R(R(R(R(R(R(R(RR(((sKeyPressRQ(s
KeyRelease(RSRT(RU(RV(RW(RX(RY(RZ(R[(R\(R](R^(R_(R`(Ra(Rb(Rc(Rd(Re(Rf(Rg(Rh(Lt__doc__tsysRitretTkintertidlelibRt MC_KEYPRESSt MC_KEYRELEASEtMC_BUTTONPRESStMC_BUTTONRELEASEt MC_ACTIVATEt MC_CIRCULATEt MC_COLORMAPt MC_CONFIGUREt MC_DEACTIVATEt
MC_DESTROYtMC_ENTERt    MC_EXPOSEt
MC_FOCUSINt MC_FOCUSOUTt
MC_GRAVITYtMC_LEAVEtMC_MAPt    MC_MOTIONt MC_MOUSEWHEELt MC_PROPERTYt MC_REPARENTtMC_UNMAPt MC_VISIBILITYtMC_SHIFTt
MC_CONTROLtMC_ALTtMC_METAt    MC_OPTIONt
MC_COMMANDtrunningAsOSXAppt
_modifierst_modifier_maskstdictRRtnumbertnameRkRRER*tjoint    enumerateRJR<RGRIRRR!R=R RmRltcompileRnRoRtRuR‡RˆR&tTktroottTextRŠtpackR‹tmainloop(((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/idlelib/MultiCall.pyt<module>s²     &
(/      \         "&    *        a