python (3.12.0)

(root)/
lib/
python3.12/
idlelib/
__pycache__/
multicall.cpython-312.pyc

̑eH	dZddlZddlZddlZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZd
ZdZdZdZ ejBdk(r	dZ"eeee fZ#ndZ"eeeefZ#e$e%e"Dcic]}e"|D]}||c}}Z&dZ'Gd d!Z(e$de%e"zZ)e)Dcgc]"d"jUfd#e+e"D$c}Z,d$Z-e-e)Z.gZ/e)D]9Z0dZ1e$e%e"D]Z2de2ze0zse1e#e2zZ1e/jge1;Gd%d&Z4d'Z5e4fdze(fe%e5dz
zzZ6e$e%e5Dcic]}e5|D]}||c}}Z7ejpd(Z9ejpd)Z:d*Z;d+Z<iZ=d,Z>d-Z?e@d.k(r dd/lAmBZBeBd0dd12dd3lCmDZDeDe?yycc}}wcc}wcc}}w)4a
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.
N	

 @darwin)ShiftControl)Option)Command)r)Altr)MetaMzapplication has been destroyedc$eZdZdZdZdZdZy)
_SimpleBindercx||_dt|dzdz|_||_||_g|_d|_y)N<r>)type_typessequencewidget
widgetinstbindedfuncs	handlerid)selfr+r.r/s    E/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/idlelib/multicall.py__init__z_SimpleBinder.__init__Js?	F4LO+C/
$c|jsP|j|jfd}|jj	|j
|j||_|jj|y)Nc||_i}tt|dz
ddD]}||}||vs
d||<||}|s|cSy)NrT)mc_typerangelen)eventlr9	wascalledifuncrs       r3handlerz#_SimpleBinder.bind.<locals>.handlerTsY '
	s1vaxR0%AQ4D9,*.	$ K#$H
%r5)r1r0r+r.bindr/r-append)r2tripletr@rBs    r3rCz_SimpleBinder.bindRsY~~#'#3#3tyy	
%"[[--doo.2mmWFDN%r5c|jj||jsC|jj|j|j
|jd|_yyN)r0remover.unbindr/r-r1)r2rEr@s   r3rIz_SimpleBinder.unbindbsM%KKt

t~~N!DN r5c|jr=	|jj|j|j|jyy#t
j$r }t|jdvrYd}~yd}~wwxYwNr)	r1r.rIr/r-tkinterTclErrorAPPLICATION_GONEargs)r2es  r3__del__z_SimpleBinder.__del__hsh>>
""4??DMM(##
'166!945
s;AA>A99A>N)__name__
__module____qualname__r4rCrIrQr5r3r'r'Is& "r5r'c3DK|]\}}d|zzr
|ddzyw)rr-NrU).0r?mss   r3	<genexpr>r\ws0) AqFa<!S)s cd}g}|D]B}t|Dchc]}||z	c}}|j|d|j|D|Scc}w)zFor each item of states return a list containing all combinations of
    that item with individual bits reset, sorted by the number of set bits.
    c<d}|rt|d\}}||z
}|r|S)znumber of bits set in n base 2rr)divmod)nnbrems   r3nbitszexpand_substates.<locals>.nbitss.
Aq\FAs#IB	r5T)keyreverse)listsortrD)statesrc	stateliststatex	substatess      r3expand_substatesrm|saI$V4%!)45	5$/#$5sA
c*eZdZdZdZdZdZdZy)_ComplexBinderc@||||j|jfd}|S)Ncdg|dd||_||_i}d}|D]B}tt|dz
ddD] }	||	}
|
|vs
d||
<||	|}|s n|sBng|dd|D]	}|g|dd|r|Sy)NTrr8)r9mc_stater:r;)r<listsr9rrishandlerrunningdoafterhandlerr>rAr=r?r@fs            r3rBz0_ComplexBinder.__create_handler.<locals>.handlers$(&Q#EM%ENIA	
s1vaxR0"AQ4D9,*.	$ AaDK!
"	
#%Q#

 "N1r5)rtru)r2rsr9rrrBs     r3__create_handlerz_ComplexBinder.__create_handlers(#(%('+'<'<%)%8%8	4r5c	||_t|d|_||_||_dt
Dcgc]}gc}i|_g|_g|_g|_	t
D]}t|Dcgc]}|jd|}}|j||t|}dt|z|jzdz}|jj||jj|j||fycc}wcc}w)Nrr)r*)r+r,typenamer.r/_statesr0
handleridsrtru_state_subsets_ComplexBinder__create_handler_state_codes_state_namesrDrC)	r2r+r.r/r[r?rsrBseqs	         r3r4z_ComplexBinder.__init__s	tQ
$ w"7!2"78!# 	JA8Fq8IJ1T%%d+A.JEJ++E4aIGl1o%dmm3C7COO""C)9)9$//:=w*H$I
J		J#8Ks	D+Dc	~djvrtDcgc]}gc}jd<tD]}ddfDcgc]"}t|D]}j||$}}}j|jt
|}dt|jddd}jj|jjj||ffd}	js|	yjj|	ycc}wcc}}w)Nrr)rXr*cRjddjSNrr)r0rDr@r2rEsr3<lambda>z%_ComplexBinder.bind.<locals>.<lambda>*t''
3GAJ?FFtLr5)r0rzr|r}r+r~rryr{rDr.rCr/rtru)
r2rEr@r[detailr?rsrBrdoits
```       r3rCz_ComplexBinder.binds:1:T---8?+@1B+@DWQZ(
N)0T(:=$#1!#4=**6215=5==//tyy0<QA$0OT]]GAJO&&T[[-=-=doo>A7.L(MN
NM$$F&&t,,A=s	D4'D9cvfd}js|yjj|y)NcRjddjSr)r0rHrsr3rz'_ComplexBinder.unbind.<locals>.<lambda>rr5)rtrurD)r2rEr@rs``` r3rIz_ComplexBinder.unbinds*L$$F&&t,r5c|jD]-\}}	|jj|j||/y#tj
$r }t|jdvrYd}~_d}~wwxYwrK)r{r.rIr/rLrMrNrO)r2ridrPs    r3rQz_ComplexBinder.__del__sh	GC
""4??C<	##
'166!945
s'>A1A,,A1N)rRrSrTr}r4rCrIrQrUr5r3roros:J.-$-r5ro))KeyPressKey)
KeyRelease)ButtonPressButton)
ButtonRelease)Activate)	Circulate)Colormap)	Configure)
Deactivate)Destroy)Enter)Expose)FocusIn)FocusOut)Gravity)Leave)Map)Motion)
MouseWheel)Property)Reparent)Unmap)
Visibilityz^\w+$z^[1-5]$c|r|ddk7s|ddk7ry|ddjd}d}|r.|dtvr#|dt|dzz}|d=|r|dtvr#|r|dtvrt|d}|d=nyt|tur|s|ryd}nT|dDcgc]}t|
c}vrt
}nt}|sd}n)t|dk(r|j|dr|d}ny|||fScc}w)	a-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.
    rr)r8r*NrrX)rr)	split_modifier_names_type_names_binder_classesr'
_keysym_re
_button_rer;match)r-words	modifiersr+rr[type_res       r3_parse_sequencersx{c)Xb\S-@QrN  %EI
E!H/Q/%(333	!HE!H/
q[(58$!Ht
-F,FGqKNGG G GF
Z1_uQx!81XFdF""HsC(c|dr+dt|dzt|ddzdz|dzdzSdt|dzt|ddzdzS)Nrr)rrrXr*)rr,)rEs r3_triplet_to_sequencer2syqz<
++F71:,>q,AA#Eqz	<
++F71:,>q,AA#EEr5cVtvr	tSGfdd}|t<|S)zReturn a MultiCall class which inherits its methods from the
    given widget class (for example, Tkinter.Text). This is used
    instead of a templating mechanism.
    ceZdZeWej
sJfdZd	fd	Zd
fd	ZfdZ	fdZ
d
fd	ZdZy)#MultiCallCreator.<locals>.MultiCallcj|g|i|i|_tttDcgc]}t|||c}|_ycc}wrG)r4_MultiCall__eventinfor:r;r,r_MultiCall__binders)r2rOkwargsr?r.s    r3r4z,MultiCallCreator.<locals>.MultiCall.__init__Es[FOOD24262 "D',S['9;"#.a0FDA;DN;sANct|turt|dkDr|dddk(r|dddk(r||jvrz|j|}|d/|dD]'}|j|dj||d)||d<|d>|dD]$}|j|dj
||&n|gg|j|<j
||||S)Nr<<>>rr)r+strr;rrrIrC)r2r-r@addeirEr.s      r3rCz(MultiCallCreator.<locals>.MultiCall.bindNsH~$X):|t#
(=t///))(3B!u(')!uNG NN71:6==gr!uMN BqE!u(')!uKG NN71:6;;GTJK37D$$X.;;tXtS99r5cBt|tur{t|dkDrm|dddk(re|dddk(r]||jvrO|j|\}}|;|D]$}|j|dj||&d|j|d<j|||S)Nrrrrrr)r+rr;rrrI)r2r-funcidr@tripletsrEr.s      r3rIz*MultiCallCreator.<locals>.MultiCall.unbind`sH~$X):|t#
(=4+++!%!1!1(!;h##+Iwqz299'4HI48D$$X.q1==x88r5c"||jvrdgg|j|<|j|\}}|D]X}t|}|j|||$|"|j|dj	|||j|ZyNr)rr	event_addrrCrDr2virtual	sequencesr@rrrEr.s       r3rz-MultiCallCreator.<locals>.MultiCall.event_addksd...-12J  )!--g6ND( 
-)#.?$$T7C8'wqz277FOOG,
-r5c||jvry|j|\}}|D]X}t|}|j|||$|"|j|dj	|||j|Zyr)rrevent_deleterrIrHrs       r3rz0MultiCallCreator.<locals>.MultiCall.event_delete|sd...!--g6ND( 
-)#.?''gs;'wqz299'4HOOG,
-r5c|||jvrj||Sttt|j|dj||zSr)r
event_infotuplemapr)r2rr.s  r3rz.MultiCallCreator.<locals>.MultiCall.event_infosh'1A1A"A((w77S!5!%!1!1'!:1!=?@((w788r5c|jD]A}|j|\}}|s|D]%}	|j|dj||'Cy#tj$r }t
|jdvrYd}~Yd}~wwxYw)Nrr)rrrIrLrMrNrO)r2rr@rrErPs      r3rQz+MultiCallCreator.<locals>.MultiCall.__del__s++
&!%!1!1'!:h#+&& NN71:6==gtL&
& '//&#3qvvay#@ %$A&s"AB%BB)NNNrG)
rRrSrT
issubclassrLMiscr4rCrIrrrrQ)r.sr3	MultiCallrBs7&',,//	;	:$		9	-"	-	8		&r5r)_multicall_dict)r.rs` r3MultiCallCreatorr:s9
 v&&Y&VY&v(OFr5ctj|}|jdtt|jj
ddd\}}|jd||dzfzttj|jdgffd	}|d|d	|d
|d|d|d
|d|d|d|d|d|dy)NzTest MultiCall+rz+%d+%drcfd}jd|dz|jd|dz|dxxdz
cc<y)NctyrG)print)r<rs r3rBz-_multi_call.<locals>.bindseq.<locals>.handlers
#Jr5z
<<handler%d>>rr)rCr)rr`rBtexts`  r3bindseqz_multi_call.<locals>.bindseqsC			/!A$&0qt+S1	!	r5z<Key>z
<Control-Key>z<Alt-Key-a>z<Control-Key-a>z<Alt-Control-Key-a>z<Key-b>z<Control-Button-1>z
<Button-2>z<Alt-Button-1>z
<FocusOut>z<Enter>z<Leave>)
rLTopleveltitlerintgeometryrrTextpack)parenttoprkyrrs     @r3_multi_callrs


6
"CIIsFOO%++C045DAqLLQCL())GLL)#.DIIKsGOM!"I !LLIIr5__main__)mainzidlelib.idle_test.test_mainmenuF)	verbosityexit)run)E__doc__resysrLMC_KEYPRESS
MC_KEYRELEASEMC_BUTTONPRESSMC_BUTTONRELEASEMC_ACTIVATEMC_CIRCULATEMC_COLORMAPMC_CONFIGURE
MC_DEACTIVATE
MC_DESTROYMC_ENTER	MC_EXPOSE
MC_FOCUSINMC_FOCUSOUT
MC_GRAVITYMC_LEAVEMC_MAP	MC_MOTION
MC_MOUSEWHEELMC_PROPERTYMC_REPARENTMC_UNMAP
MC_VISIBILITYMC_SHIFT
MC_CONTROLMC_ALTMC_META	MC_OPTION
MC_COMMANDplatform
_modifiers_modifier_masksr:r;rrNr'rzjoin	enumeraterrmr|r~r[rAr?rDror,rrcompilerrrrrrrrRunittestridlelib.idle_test.htestr)numbernamer[s00pr3<module>rs<


Q}q12B
A|1{1l
AxbIR*2
x2Fy
b+b+2(R}dTFT7	t*<<8FJY
CODJ!68W=O(-S_'=9#%/%79!<9494&&ZS_$
%!")$-j$9))"
$"'*	A	A
3z?
#$
Fa<
##A$[[~
"#a'=*:c&k!m*LL$)V#51!'1V|1t1RZZ
!

RZZ

#
%#NFdN4z	*aeD+I9@"\1s;G
5'GG