o r3by@sdZddlmZmZmZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZdZdZdZdZd Zd d iZGd d d ZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGd d!d!eZid"ej d#ej!d$ej"d%ej#d&ej$d'ej%d(ej&d)ej'd*ej(d+ej)d,ej*d-ej+d.ej,d/ej-d0ej.d1ej/d2ej0ej1ej2e3d3d4Z4e5e46D]Z7e7e4e4e7<qd5d6ej8ej9DD] \Z:Z;e:e4e;<e;e4e:<qGd7d8d8ZdejAd?ejBd@ejCdAejDdBejEdCejFdDejGdEejHdFejIdGejJdHejKdIejLdJejMdKejNejOejPejQejRejSejTdLZUGdMdNdNZVdndPdQZWGdRdSdSeZXGdTdUdUe=ZYGdVdWdWe=ZZGdXdYdYe=Z[GdZd[d[e[Z\Gd\d]d]eZ] ^  dod`daZ^dbdcgd_dddfdddeZ_dfd_dgdbdcgdfdhdiZ`Gdjdkdke=ZadldmZbdS)pa This module provides the NEWT Windowing toolkit API for Python This is a lightweight text-mode windowing library, based on slang. Classes: - Widget - Button - CompactButton - Checkbox - SingleRadioButton - Listbox - Textbox - TextboxReflowed - Label - Scale - Entry - Form - Grid - SnackScreen - RadioGroup - RadioBar - ButtonBar - GridFormHelp - GridForm - CheckboxTree - Clistbox Functions: - ListboxChoiceWindow - ButtonChoiceWindow - EntryWindow )absolute_importprint_functionunicode_literalsN) FLAG_DISABLED FLAGS_SET FLAGS_RESET FLAGS_TOGGLEFD_READFD_WRITE FD_EXCEPT)r)r r rr)r)rrappendr c@s"eZdZdZdddZddZdS)WidgetzBase class for NEWT toolkit - Do not use directly methods: - Widget(self) - setCallback(self, obj, data = None) : The callback for when object activated. data is passed to obj. NcCs&|r |j||dS|j|dSN)w setCallback)selfobjdatar'/usr/lib/python3/dist-packages/snack.pyrDszWidget.setCallbackcCstr)NotImplementedErrorrrrr__init__JszWidget.__init__r)__name__ __module__ __qualname____doc__rrrrrrr:s rc@eZdZdZddZdS)ButtonzqBasic button class, takes button text as parameter method: - Button(self, text): returns a button cCt||_dSr)_snackbuttonrrtextrrrrTzButton.__init__Nrrrrrrrrrr!M r!c@r ) CompactButtonzCompact Button class (less frilly button decoration). methods: - CompactButton(self,text) : create button, with text. cCr"r)r# compactbuttonrr%rrrr^r'zCompactButton.__init__Nr(rrrrr*Wr)r*c@s:eZdZdZddZddZddZdd Zdd d Zd S)CheckboxaA checkbox. methods: - Checkbox(self, text, isOn = 0) : text, and boolean as to default value - setValue(self) : set value - value(self, value) : return checkbox value - selected(self) : returns boolean - setFlags(self, flag, sense) : set flags flags: FLAG_DISABLED, FLAGS_SET, FLAGS_RESET cC|jjSrr checkboxValuerrrrvaluenzCheckbox.valuecCs |jjdkSNrr.rrrrselectedq zCheckbox.selectedcC|j||Sr)rcheckboxSetFlagsrflagsenserrrsetFlagstszCheckbox.setFlagscCs |j|Sr)rcheckboxSetValue)rr0rrrsetValuexr4zCheckbox.setValuercCt|||_dSr)r#checkboxr)rr&isOnrrrr{zCheckbox.__init__Nr) rrrrr0r3r:r<rrrrrr,as r,c@s"eZdZdZddZdddZdS) SingleRadioButtonzSingle Radio Button. methods: - SingleRadioButton(text, group, isOn = 0) : create button - selected(self) : returns bool, whether or not is selected. cCs|jj|jjkSr)rkey radioValuerrrrr3r'zSingleRadioButton.selectedrcCs.|r t||j||_dSt|d||_dSr)r# radiobuttonr)rr&groupr?rrrrszSingleRadioButton.__init__NrA)rrrrr3rrrrrrB~srBc@sZeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dddZ dS)ListboxaListbox class. methods: - Listbox(self, height, scroll = 0, returnExit = 0, width = 0, showCursor = 0, multiple = 0, border = 0) - insert(self, text, item, before) : insert element; before = key to item to insert before, or None. - delete(self, item) : delete item from list. - replace(self, text,item) : Replace a given item's text - current(self) : returns currently selected item - getSelection(self) : returns a list of selected items - setCurrent(self,i tem) : select current. - clear(self) : clear listbox cCs$|j|}||j|<||j|<dSr)rlistboxAddItemkey2itemitem2keyrr&itemrCrrrrs  zListbox.appendcCs@|s |j|d}n |j||j|}||j|<||j|<dSr2)rlistboxInsertItemrJrI)rr&rLbeforerCrrrinserts  zListbox.insertcCs,|j|j||j|j|=|j|=dSr)rlistboxDeleteItemrJrIrrLrrrdeletes zListbox.deletecCsL|j||j|}|j|j||j|j|=||j|<||j|<dSr)rrMrJrPrIrKrrrreplaces  zListbox.replacecCs|j|jSr)rIrlistboxGetCurrentrrrrcurrentr'zListbox.currentcC,g}|j}|D] }||j|q |Sr)rlistboxGetSelectionrrIr selectionlistrCrrr getSelection  zListbox.getSelectioncC|j|j|dSr)rlistboxSetCurrentrJrQrrr setCurrentzListbox.setCurrentcCsi|_i|_|jdSr)rIrJr listboxClearrrrrclearsz Listbox.clearrcCs:t|||||||_i|_i|_|r|j|dSdSr)r#listboxrrIrJlistboxSetWidth)rheightscroll returnExitwidth showCursormultipleborderrrrrs zListbox.__init__N)rrrrrr) rrrrrrOrRrSrUr[r_rbrrrrrrGsrGc@s*eZdZdZddZddZd ddZd S) TextboxaTextbox, container for text. methods: - Textbox(self, width, height, scroll = 0, wrap = 0): scroll, wrap are flags include scroll bars, or text wrap. - setText(text) : set text. - setHeight(height): set height. cC|j|dSr)r textboxTextr%rrrsetTextr'zTextbox.setTextcCrmr)r textboxHeight)rrerrr setHeightr'zTextbox.setHeightrcCst||||||_dSr)r#textboxr)rrhrer&rfwraprrrrzTextbox.__init__Nr )rrrrrorqrrrrrrls  rlc@seZdZdddZdS)TextboxReflowed r cCsPt||||\}}}|dkr||krt||||ddSt||||ddS)Nr rr)reflowrlr)rrhr&flexDownflexUp maxHeightnewtextrerrrrszTextboxReflowed.__init__N)rvrwr )rrrrrrrrrusruc@s(eZdZdZddZddZddZdS) LabelzA Label (simple text). methods: - Label(self,text) : create label - setText(self,text) : change text. - setColors(self, colorset) : change individual colors cCrmr)r labelTextr%rrrror'z Label.setTextcCr"r)r#labelrr%rrrrr'zLabel.__init__cCrmr)rlabelSetColors)rcolorsetrrr setColorsr'zLabel.setColorsN)rrrrrorrrrrrr}s  r}c@ eZdZdZddZddZdS)ScalezA Scale (progress bar). methods: - Scale(self,width, total) : create scale; width: size on screen, fullamount: integer. - set(self,amount) : set amount to integer. cCrmr)rscaleSet)ramountrrrsetr'z Scale.setcCr=r)r#scaler)rrhtotalrrrr r@zScale.__init__N)rrrrrrrrrrrs rc@s8eZdZdZddZdddZddZ  dd d Zd S)EntryaEntry widget. methods: - Entry(self, width, text = "", hidden = 0, password = 0, scroll = 1, returnExit = 0) constructor. hidden doesn't show text, password stars it out, scroll includes scroll bars; if returnExit is set, return from Form when exiting this element, else proceed to next entry widget. - value(self): return value. - set(text, cursorAtEnd = 1) : set the text - setFlags (flag, sense) : flags can be FLAG_DISABLED, FLAGS_SET, FLAGS_RESET, FLAGS_TOGGLE cCr-r)r entryValuerrrrr0r1z Entry.valuercCr5r)r entrySetValue)rr& cursorAtEndrrrrz Entry.setcCr5r)r entrySetFlagsr7rrrr:"rzEntry.setFlagsrcCst|||||||_dSr)r#entryr)rrhr&hiddenpasswordrfrgrrrr%szEntry.__init__Nr)rrrrr)rrrrr0rr:rrrrrrs rF1F2F3F4F5F6F7F8F9F10F11F12ESCENTERSUSPEND BACKSPACEDELETE )INSERTRESIZErcCsg|]}t||fqSr)ord).0crrr 7src@sReZdZdZddZddZddZdd Zdd d Zd dZ ddZ ddZ d S)Forma Base Form class, from which Grid, etc. inherit methods: - Form(self, helpArg = None) : constructor. - addHotKey(self, keyname) : keynames of form "F1" through "F12", "ESC" - add(self, widget) : Add a widget - run(self): run a form, expecting input - draw(self): draw form. - setTimer(self, timer) : add a timer - watchFile(self, file, flags) : watch a named file - setCurrent (self, co): Set a given widget as the current focus cCs|jt|dSr)r addhotkeyhotkeysrkeynamerrr addHotKeyIszForm.addHotKeycCsrd|jvr|jD]}||q d|jvr$|jD]}||qdSd|jvr7||j|jj<|j|jSdS)Nr gridmembersr) __dict__rkeysrraddtransrrC)rwidgetrCrrrrrLs      zForm.addcCs^|j\}}|tjkr|j|S|tjkrdS|tjkr"|j|S|tjkr+t |St d)NTIMERzEOF or IO error) rrunr#FORM_EXIT_WIDGETrFORM_EXIT_TIMERFORM_EXIT_FDREADYfilemapFORM_EXIT_HOTKEYr RuntimeError)rwhatwhichrrrrYs      zForm.runcC|jdSr)rdrawrrrrres z Form.drawNcCs"i|_i|_t||_||_dSr)rrr#formrhelpArg)rrrrrris  z Form.__init__cCs|j|jdSr)r setcurrentrcorrrr_pr@zForm.setCurrentcCrmr)rsettimer)rtimerrrrsetTimersr'z Form.setTimercCs$||j|<|j||dSr)rfilenorwatchfd)rfileflagsrrr watchFilevszForm.watchFiler) rrrrrrrrrr_rrrrrrr;s    rc@s0eZdZdZddZ   d ddZdd Zd S) GridayGrid class. methods: - place(self,x,y): Return what is placed at (x,y) - setField(self, what, col, row, padding = (0, 0, 0, 0), anchorLeft = 0, anchorTop = 0, anchorRight = 0, anchorBottom = 0, growx = 0, growy = 0): used to add widget 'what' to grid. - Grid(self, *args): eg. g = Grid(2,3) for 2x3 grid cCr5r)gplacerxyrrrrrz Grid.placerrrrrc Cs|j|d} |rtj} n|rtj} |r| tjB} n|r"| tjB} d} | r)tj} | r0| tjB} d|j vrA|j |||j || | S|j |||j || S)Nrr) rrr# ANCHOR_LEFT ANCHOR_RIGHT ANCHOR_TOP ANCHOR_BOTTOM GRID_GROWX GRID_GROWYrrsetfieldr) rrcolrowpadding anchorLeft anchorTop anchorRight anchorBottomgrowxgrowy anchorFlags gridFlagsrrrsetFields(     z Grid.setFieldcGstj||_g|_dSr)r#gridrr)rargsrrrr  z Grid.__init__Nrrrrrrr)rrrrrrrrrrrrzs  rROOTBORDERWINDOWSHADOWTITLEBUTTON ACTBUTTONCHECKBOX ACTCHECKBOXENTRYLABELLISTBOX ACTLISTBOXTEXTBOX ACTTEXTBOXHELPLINEROOTTEXT) EMPTYSCALE FULLSCALEDISENTRY COMPACTBUTTON ACTSELLISTBOX SELLISTBOXc@seZdZdZddZddZddZdd Zd d Zd d Z d$ddZ ddZ ddZ ddZ ddZddZd%ddZd&ddZd d!Zd"d#ZdS)' SnackScreena A Screen; methods: - Screen(self) : constructor - finish(self) - resume(self) - suspend(self) - doHelpCallback(self,arg) call callback with arg - helpCallback(self,cb): Set help callback - suspendcallback(self,cb, data=None) : set callback. data=data to pass to cb. - openWindow(self,left, top, width, height, title): Open a window. - pushHelpLine(self,text): put help line on screen. Returns current help line if text=None - setColor(self, colorset, fg, bg): Set foreground and background colors; colorset = key from snack.colorsets, fg & bg = english color names defined by S-Lang (ref: S-Lang Library C Programmer's Guide section: 8.4.4. Setting Character Attributes) cCs&tt\|_|_|ddSr)r#initsizerhre pushHelpLinerrrrrszSnackScreen.__init__cCtSr)r#finishrrrrr r1zSnackScreen.finishcC tdSr)r#resumerrrrrr4zSnackScreen.resumecCr r)r#suspendrrrrrr4zSnackScreen.suspendcCs|||dSr)helpCb)rargrrrdoHelpCallbackr'zSnackScreen.doHelpCallbackcCs||_t|jSr)rr# helpcallbackr)rcbrrr helpCallbacks zSnackScreen.helpCallbackNcCs|rt||St|Sr)r#suspendcallback)rrrrrrsuspendCallbacks  zSnackScreen.suspendCallbackcCst|||||Sr)r# openwindow)rlefttoprhretitlerrr openWindowr@zSnackScreen.openWindowcCs|stdSt|S)Nz *default*)r# pushhelpliner%rrrr s  zSnackScreen.pushHelpLinecCr r)r# pophelplinerrrr popHelpLiner1zSnackScreen.popHelpLinecCt|||Sr)r# drawroottext)rrrr&rrr drawRootTextrzSnackScreen.drawRootTextcCr r)r#centeredwindow)rrhrerrrrcenteredWindowrzSnackScreen.centeredWindowcCs(|r |r t|j|||St|j|Sr)r#gridwrappedwindowr)rrrrrrrrgridWrappedWindowszSnackScreen.gridWrappedWindowTcCs|rtStSr)r# popwindowpopwindownorefresh)rrefreshrrr popWindowszSnackScreen.popWindowcCr r)r#r)rrrrr) r1zSnackScreen.refreshcCs(|tvr tt|||St|||Sr) colorsetsr#setcolor)rrfgbgrrrsetColorszSnackScreen.setColorrNN)T)rrrrrr rrrrrrr rr"r$r&r*r)r/rrrrrs$    rrvcCst||||S)zR returns a tuple of the wrapped text, the actual width, and the actual height )r#rx)r&rhryrzrrrrxsrxc@s*eZdZdZddZd ddZddZdS) RadioGroupz Combo widget: Group of Radio buttons methods: - RadioGroup(self): constructor. - add(self,title, value, default = None): add a button. Returns button. - getSelection(self) : returns value of selected button | None cCsd|_g|_dSr)prev buttonlistrrrrr%s zRadioGroup.__init__NcCs:|js |dkr d}t||j|}||_|j||f|SNr)r2rBr3r)rrr0defaultbrrrr)s zRadioGroup.addcCs$|jD] \}}|r|SqdSr)r3r3)rr6r0rrrr[3szRadioGroup.getSelectionr)rrrrrrr[rrrrr1s   r1c@r)RadioBarz Bar of Radio buttons, based on Grid. methods: - RadioBar(self, screen, buttonlist) : constructor. - getSelection(self): return value of selected button cCszg|_d|_t|_t|dt||D]%\}}}|j|||}|j||f|j |d|jdd|jd|_qdS)Nrrr) rZrLr1rFrrlenrrr)rscreenr3rr0r5r6rrrrBszRadioBar.__init__cC |jSr)rFr[rrrrr[M zRadioBar.getSelectionN)rrrrrr[rrrrr79s r7c@s"eZdZdZdddZddZdS) ButtonBara Bar of buttons, based on grid. methods: - ButtonBar(screen, buttonlist,buttonlist, compact = 0): - buttonPressed(self, result): Takes the widget returned by Form.run and looks to see if it was one of the widgets in the ButtonBar. rc Csg|_i|_d|_t|t|d|D]L}t|tjdkrt nt r)|}| }nt|dkr4|\}}n |\}}}||j|<|rEt |}nt |}|j||f|||jdd|jd|_qdS)Nrr3)rrrr)rZrrLrrr9 isinstancesysversionstr basestringlowerr*r!rr) rr:r3compactblistrr0hotkeyr6rrrr\s&      zButtonBar.__init__cCs8||jvr |j|S|jD] \}}||kr|Sq dSr)rrZ)rresultr$r0rrr buttonPressedss  zButtonBar.buttonPressedNrA)rrrrrrJrrrrr=Ss  r=c@sneZdZdZddZ   dddZdd d Zd d Zd dZdddZ dddZ ddZ ddZ ddZ dS) GridFormHelpa= Subclass of Grid, for the help form text. methods: - GridFormHelp(self, screen, title, help, *args) : - add (self, widget, col, row, padding = (0, 0, 0, 0), anchorLeft = 0, anchorTop = 0, anchorRight = 0, anchorBottom = 0, growx = 0, growy = 0): - runOnce(self, x = None, y = None): pop up the help window - addHotKey(self, keyname): - setTimer(self, keyname): - create(self, x = None, y = None): - run(self, x = None, y = None): - draw(self): - runPopup(self): - setCurrent (self, co): cGsJ||_||_t||_g|_d|_t|}|g|dd<tjt |dSr2) r:rrr childList form_createdrZrrtuple)rr:rhelprrrrrs zGridFormHelp.__init__rrc Cs,|||||||||| | |j|dSr)rrLr) rrrrrrrrrrrrrrrs zGridFormHelp.addNcCs|||}|j|Sr)rr:r*)rrrrIrrrrunOnces  zGridFormHelp.runOncecCrmr)rrrrrrrr'zGridFormHelp.addHotKeycCrmr)rrrrrrrr'zGridFormHelp.setTimercCsL|js$|dd|jD]}|j|q |j||j||d|_dSdSr4)rMrrLrrr:r&r)rrrchildrrrcreates   zGridFormHelp.createcCs||||jSr)rRrrrrrrrrzGridFormHelp.runcCs||jSr)rRrrrrrrrs zGridFormHelp.drawcCs0||j||j|j}|j|Sr)rRr:r&rrrr*)rrIrrrrunPopups   zGridFormHelp.runPopupcCrmr)rr_rrrrr_r'zGridFormHelp.setCurrentrr0)rrrrrrrPrrrRrrrSr_rrrrrK}s     rKc@r )GridFormzh GridForm class (extends GridFormHelp): methods: - GridForm(self, screen, title, *args): cGs|||df|}tj|dSr)rKr)rr:rrmyargsrrrrszGridForm.__init__Nr(rrrrrTr)rTc@s`eZdZdZdddZdddZdd Zdd d Zd d ZddZ ddZ dddZ ddZ dS) CheckboxTreea CheckboxTree combo widget, methods: - CheckboxTree(self, height, scroll = 0, width = None, hide_checkbox = 0, unselectable = 0) constructor. - append(self, text, item = None, selected = 0): - addItem(self, text, path, item = None, selected = 0): - getCurrent(self): - getSelection(self): - setEntry(self, item, text): - setCurrent(self, item): - setEntryValue(self, item, selected = 1): - getEntryValue(self, item): NrcCs||tdf||dS)Nr)addItem snackArgs)rr&rLr3rrrrszCheckboxTree.appendcCs4|dur|}|j|||}||j|<||j|<dSr)rcheckboxtreeAddItemrIrJ)rr&pathrLr3rCrrrrWs  zCheckboxTree.addItemcCs|j}|j|Sr)rcheckboxtreeGetCurrentrI)rcurrrrr getCurrents  zCheckboxTree.getCurrentcCs6t|||||_i|_i|_|r|j|dSdSr)r# checkboxtreerrIrJcheckboxtreeSetWidth)rrerfrh hide_checkbox unselectablerrrrs zCheckboxTree.__init__cCrVr)rcheckboxtreeGetSelectionrrIrXrrrr[r\zCheckboxTree.getSelectioncC|j|j||dSr)rcheckboxtreeSetEntryrJ)rrLr&rrrsetEntryrtzCheckboxTree.setEntrycCr]r)rcheckboxtreeSetCurrentrJrQrrrr_r`zCheckboxTree.setCurrentrcCrcr)rcheckboxtreeSetEntryValuerJ)rrLr3rrr setEntryValuertzCheckboxTree.setEntryValuecCs|j|j|Sr)rcheckboxtreeGetEntryValuerJrQrrr getEntryValuer@zCheckboxTree.getEntryValuer2)rNrrr) rrrrrrWr]rr[rer_rhrjrrrrrVs     rVOkCancel(c Cs|dkrt|}t||} t||} t||dd} d} |D](}t|tkr*|\}}n|}| }|| kr5|}n||kr;|}| ||| d} q|dkrO| |t||| dd}| | dd|j | dddd|j | dd dd | }| || fS) z - ListboxChoiceWindow(screen, title, text, items, buttons = ('Ok', 'Cancel'), width = 40, scroll = 0, height = -1, default = None, help = None): r r)rfrgrN)rrrrrr?r) r9r=rurGtyperNrr_rKrrPrJrU)r:rr&itemsbuttonsrhrfrer5rObbtlcountrLrCrrcrrrListboxChoiceWindow s0       rzrlrmc Csdt||}t|||jdd} t|||dd} | j| dddd| j|dddd|| ||S) z - ButtonChoiceWindow(screen, title, text, buttons = [ 'Ok', 'Cancel' ], width = 40, x = None, y = None, help = None): )r{rr?rrrrrrprq)r=rurerKrrJrP) r:rr&rtrhrrrOrurvrrrrButtonChoiceWindow4s r}rc CsNt||} t||} d} |D]} | d} qtd| } d} g}|D]@} t| tkr>| \} }t|tjdkr5tnt r=t ||}nt |}| j t | d| ddd| j |d| dd| d} | |q t|||dd}|j| ddd d |j| ddd d |j| dddd |}g}d} |D]} | || | d} q| |t|fS) z EntryWindow(screen, title, text, prompts, allowCancel = 1, width = 40, entryWidth = 20, buttons = [ 'Ok', 'Cancel' ], help = None): rrr?r>)rrrr)rrr8ror|rprq)r=rurrrrNr@rArBrCrDrrr}rrKrrPr0rJ)r:rr&prompts allowCancelrh entryWidthrtrOrurvrxnsg entryListerrI entryValuesrrr EntryWindowDs<        rc@sjeZdZdZ    dddZdddZdd d Zdd d Zd dZdddZ ddZ ddZ ddZ dS)CListboxapClistbox convenience class. methods: - Clistbox(self, height, cols, cols_widths, scroll = 0) : constructor - colFormText(self, col_text, align = None, adjust_width = 0) : column text. - append(self, col_text, item, col_text_align = None) : - insert(self, col_text, item, before, col_text_align = None) - delete(self, item) - replace(self, col_text, item, col_text_align = None) - current(self) : returns current item - setCurrent(self, item): sets an item as current - clear(self): clear the listbox Alignments may be LEFT, RIGHT, CENTER, None rrNc Cs||_|dd|_||_||_| dkr5t|ddd} |j| | | d} t| |_|j |jddddn t|ddd} t |||||_ |j |j d| dddS)Nrr?) adjust_widthrr8)r) cols col_widthscol_padcol_text_alignrr colFormTextr}rrrGrc)rrerrrfrgrhrr col_labelscol_label_alignrbox_ylstrrrrrs  zCListbox.__init__c Cs,d}d}t|}||jkr||kr||}t|}|j||kr2|r)||j|<n |d|j|}|j|t|} | dkrs|dkrGt} n||} | tkrU|d| }| tkrid| d|d| dd}| tkrsd| |}||dkrd|j} nd} ||| }|d}||jkr||ks|S)Nrrrr?r) r9rr#wstrlenrLEFTCENTERRIGHTr) rcol_textalignrirCc_lencstrcstrlendeltaapstrrrrrs<       #zCListbox.colFormTextcC,|dkr|j}|||}|j||dSr)rrrcrrrrLrr&rrrr zCListbox.appendcCs.|dkr|j}|||}|j|||dSr)rrrcrO)rrrLrNrr&rrrrOs zCListbox.insertcCrmr)rcrRrQrrrrRr'zCListbox.deletecCrr)rrrcrSrrrrrSrzCListbox.replacecCr;r)rcrUrrrrrUr<zCListbox.currentcCrmr)rcr_rQrrrr_r'zCListbox.setCurrentcCrr)rcrbrrrrrbrzCListbox.clear)rrrrNNNrr2r) rrrrrrrrOrRrSrUr_rbrrrrrrs  )   rcCsd|S)Nr)rrrrcustomColorsetr1r)rvrv)rkrnrr NN)cr __future__rrrr#stringrArrrrr r r rDOWNrUPrrXrr!r*r,rBrGrlrur}rrKEY_F1KEY_F2KEY_F3KEY_F4KEY_F5KEY_F6KEY_F7KEY_F8KEY_F9KEY_F10KEY_F11KEY_F12KEY_ESC KEY_ENTER KEY_SUSPEND KEY_BACKSPACE KEY_DELETE KEY_INSERT KEY_RESIZErrrZrr ascii_lettersdigitsorrr COLORSET_ROOTCOLORSET_BORDERCOLORSET_WINDOWCOLORSET_SHADOWCOLORSET_TITLECOLORSET_BUTTONCOLORSET_ACTBUTTONCOLORSET_CHECKBOXCOLORSET_ACTCHECKBOXCOLORSET_ENTRYCOLORSET_LABELCOLORSET_LISTBOXCOLORSET_ACTLISTBOXCOLORSET_TEXTBOXCOLORSET_ACTTEXTBOXCOLORSET_HELPLINECOLORSET_ROOTTEXTCOLORSET_EMPTYSCALECOLORSET_FULLSCALECOLORSET_DISENTRYCOLORSET_COMPACTBUTTONCOLORSET_ACTSELLISTBOXCOLORSET_SELLISTBOXr+rrxr1r7r=rKrTrVrzr}rrrrrrrs$$  A   ? .      U*I 9 ,   . s