a õ bžyã@sdZddlmZmZmZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZdZdZdZdZd Zd d iZGd d „d ƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGd d!„d!eƒZej ej!ej"ej#ej$ej%ej&ej'ej(ej)ej*ej+ej,ej-ej.ej/ej0ej1ej2e3d"ƒd#œZ4e5e4 6¡ƒD]Z7e7e4e4e7<q‚d$d%„ej8ej9DƒD]\Z:Z;e:e4e;<e;e4e:<q¬Gd&d'„d'ƒZej?ej@ejAejBejCejDejEejFejGejHejIejJejKejLejMejNejOejPejQejRejSejTd*œZUGd+d,„d,ƒZVdLd.d/„ZWGd0d1„d1eƒZXGd2d3„d3e=ƒZYGd4d5„d5e=ƒZZGd6d7„d7e=ƒZ[Gd8d9„d9e[ƒZ\Gd:d;„d;eƒZ]dMd>d?„Z^d@dAgd=dddfdBdC„Z_dDd=dEd@dAgdfdFdG„Z`GdHdI„dIe=ƒZadJdK„ZbdS)Naã 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_importÚprint_functionÚunicode_literalsN)Ú FLAG_DISABLEDÚ FLAGS_SETÚ FLAGS_RESETÚ FLAGS_TOGGLEÚFD_READÚFD_WRITEÚ FD_EXCEPT)éÿÿÿÿr)r r )rr)ér )r rÚappendr c@s"eZdZdZddd„Zdd„ZdS)ÚWidgetzÚBase 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 ||¡n |j |¡dS©N)ÚwÚ setCallback)ÚselfÚobjÚdata©rú+/usr/lib64/python3.9/site-packages/snack.pyrDszWidget.setCallbackcCst‚dSr)ÚNotImplementedError©rrrrÚ__init__JszWidget.__init__)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrrr:s rc@seZdZdZdd„ZdS)ÚButtonzqBasic button class, takes button text as parameter method: - Button(self, text): returns a button cCst |¡|_dSr)Ú_snackÚbuttonr©rÚtextrrrrTszButton.__init__N©rrrrrrrrrrMsrc@seZdZdZdd„ZdS)Ú CompactButtonz…Compact Button class (less frilly button decoration). methods: - CompactButton(self,text) : create button, with text. cCst |¡|_dSr)r Z compactbuttonrr"rrrr^szCompactButton.__init__Nr$rrrrr%Wsr%c@s:eZdZdZdd„Zdd„Zdd„Zdd „Zdd d „Zd S)ÚCheckboxa…A 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 cCs|jjSr©rZ checkboxValuerrrrÚvaluenszCheckbox.valuecCs |jjdkS©Nrr'rrrrÚselectedqszCheckbox.selectedcCs|j ||¡Sr)rZcheckboxSetFlags©rÚflagZsenserrrÚsetFlagstszCheckbox.setFlagscCs |j |¡Sr)rZcheckboxSetValue)rr(rrrÚsetValuexszCheckbox.setValuercCst ||¡|_dSr)r Zcheckboxr)rr#ÚisOnrrrr{szCheckbox.__init__N)r) rrrrr(r*r-r.rrrrrr&as  r&c@s"eZdZdZdd„Zddd„ZdS) ÚSingleRadioButtonzÌSingle Radio Button. methods: - SingleRadioButton(text, group, isOn = 0) : create button - selected(self) : returns bool, whether or not is selected. cCs|jj|jjkSr)rÚkeyZ radioValuerrrrr*‡szSingleRadioButton.selectedrcCs,|rt ||j|¡|_nt |d|¡|_dSr)r Z radiobuttonr)rr#Úgroupr/rrrrŠszSingleRadioButton.__init__N)r)rrrrr*rrrrrr0~sr0c@sZeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z ddd„Z dS)ÚListboxaˆListbox 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)rZlistboxAddItemÚkey2itemÚitem2key©rr#Úitemr1rrrrŸs  zListbox.appendcCs@|s|j |d¡}n|j ||j|¡}||j|<||j|<dSr))rÚlistboxInsertItemr5r4)rr#r7Úbeforer1rrrÚinsert¤s  zListbox.insertcCs,|j |j|¡|j|j|=|j|=dSr)rÚlistboxDeleteItemr5r4©rr7rrrÚdelete¬szListbox.deletecCsL|j ||j|¡}|j |j|¡|j|j|=||j|<||j|<dSr)rr8r5r;r4r6rrrÚreplace±s  zListbox.replacecCs|j|j ¡Sr)r4rZlistboxGetCurrentrrrrÚcurrent¸szListbox.currentcCs,g}|j ¡}|D]}| |j|¡q|Sr)rZlistboxGetSelectionrr4©rZ selectionÚlistr1rrrÚ getSelection»s  zListbox.getSelectioncCs|j |j|¡dSr)rZlistboxSetCurrentr5r<rrrÚ setCurrentÂszListbox.setCurrentcCsi|_i|_|j ¡dSr)r4r5rZ listboxClearrrrrÚclearÅsz Listbox.clearrcCs6t ||||||¡|_i|_i|_|r2|j |¡dSr)r Úlistboxrr4r5ZlistboxSetWidth)rÚheightÚscrollÚ returnExitÚwidthZ showCursorZmultipleZborderrrrrÊs zListbox.__init__N)rrrrrr) rrrrrr:r=r>r?rBrCrDrrrrrr3sr3c@s*eZdZdZdd„Zdd„Zd dd„Zd 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. cCs|j |¡dSr)rZ textboxTextr"rrrÚsetTextÜszTextbox.setTextcCs|j |¡dSr)rZ textboxHeight)rrFrrrÚ setHeightßszTextbox.setHeightrcCst |||||¡|_dSr)r Ztextboxr)rrIrFr#rGÚwraprrrrâszTextbox.__init__N)rr)rrrrrKrLrrrrrrJÑs rJc@seZdZddd„ZdS)ÚTextboxReflowedéé r cCsNt||||ƒ\}}}|dkr8||kr8t ||||d¡nt ||||d¡dS)Nr r r)ÚreflowrJr)rrIr#ÚflexDownÚflexUpÚ maxHeightZnewtextrFrrrrçszTextboxReflowed.__init__N)rOrPr )rrrrrrrrrNåsrNc@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚLabelz¸A Label (simple text). methods: - Label(self,text) : create label - setText(self,text) : change text. - setColors(self, colorset) : change individual colors cCs|j |¡dSr)rZ labelTextr"rrrrK÷sz Label.setTextcCst |¡|_dSr)r Úlabelrr"rrrrúszLabel.__init__cCs|j |¡dSr)rZlabelSetColors)rÚcolorsetrrrÚ setColorsýszLabel.setColorsN)rrrrrKrrXrrrrrUîsrUc@s eZdZdZdd„Zdd„ZdS)ÚScalezÀA Scale (progress bar). methods: - Scale(self,width, total) : create scale; width: size on screen, fullamount: integer. - set(self,amount) : set amount to integer. cCs|j |¡dSr)rZscaleSet)rÚamountrrrÚsetsz Scale.setcCst ||¡|_dSr)r Zscaler)rrIÚtotalrrrr szScale.__init__N)rrrrr[rrrrrrYsrYc@s4eZdZdZdd„Zddd„Zdd„Zdd 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 cCs|jjSr)rZ entryValuerrrrr(sz Entry.valuer cCs|j ||¡Sr)rZ entrySetValue)rr#Z cursorAtEndrrrr[sz Entry.setcCs|j ||¡Sr)rZ entrySetFlagsr+rrrr-"szEntry.setFlagsÚrcCst ||||||¡|_dSr)r Úentryr)rrIr#ZhiddenÚpasswordrGrHrrrr%szEntry.__init__N)r )r^rrr r)rrrrr(r[r-rrrrrr]s  ÿr]ú )ZF1ZF2ZF3ZF4ZF5ZF6ZF7ZF8ZF9ZF10ZF11ZF12ZESCZENTERZSUSPENDZ BACKSPACEZDELETEZINSERTZRESIZEracCsg|]}t|ƒ|f‘qSr)Úord)Ú.0ÚcrrrÚ 7órec@sReZdZdZdd„Zdd„Zdd„Zdd „Zdd d „Zd d„Z dd„Z dd„Z 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|j t|¡dSr)rZ addhotkeyÚhotkeys©rZkeynamerrrÚ addHotKeyIszForm.addHotKeycCspd|jvr$|j ¡D]}| |¡qd|jvrF|jD]}| |¡q4n&d|jvrl||j|jj<|j |j¡SdS)NrhÚ gridmembersr) Ú__dict__rhÚkeysrjrkÚaddÚtransrr1)rÚwidgetr1rrrrrnLs     zForm.addcCsb|j ¡\}}|tjkr"|j|S|tjkr0dS|tjkrD|j|S|tjkrVt |St dƒ‚dS)NZTIMERzEOF or IO error) rÚrunr ZFORM_EXIT_WIDGETroZFORM_EXIT_TIMERZFORM_EXIT_FDREADYÚfilemapZFORM_EXIT_HOTKEYrhÚ RuntimeError)rÚwhatÚwhichrrrrqYs      zForm.runcCs|j ¡dSr)rÚdrawrrrrrves z Form.drawNcCs"i|_i|_t |¡|_||_dSr)rorrr ÚformrÚhelpArg)rrxrrrris z Form.__init__cCs|j |j¡dSr)rZ setcurrent©rÚcorrrrCpszForm.setCurrentcCs|j |¡dSr)rZsettimer)rZtimerrrrÚsetTimerssz Form.setTimercCs$||j| ¡<|j | ¡|¡dSr)rrÚfilenorZwatchfd)rÚfileÚflagsrrrÚ watchFilevszForm.watchFile)N) rrrrrjrnrqrvrrCr{rrrrrrg;s    rgc@s*eZdZdZdd„Zd dd„Zdd „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 cCs|j ||¡Sr)ÚgÚplace©rÚxÚyrrrr‚†sz Grid.place©rrrrrc Csœ|j |¡d} |rtj} n |r&tj} |r6| tjB} n|rD| tjB} d} | rRtj} | r`| tjB} d|j vr‚|j   |||j || | ¡S|j   |||j || ¡SdS)Nrr) rkrr Z ANCHOR_LEFTZ ANCHOR_RIGHTZ ANCHOR_TOPZ ANCHOR_BOTTOMZ GRID_GROWXZ GRID_GROWYrlrZsetfieldr) rrtÚcolÚrowÚpaddingÚ anchorLeftÚ anchorTopÚ anchorRightÚ anchorBottomÚgrowxÚgrowyZ anchorFlagsZ gridFlagsrrrÚsetField‰s(     ÿz Grid.setFieldcGstj|Ž|_g|_dSr)r Úgridrrk)rÚargsrrrr¤s z Grid.__init__N)r†rrrrrr)rrrrr‚rrrrrrr€zs þ r€)ZROOTZBORDERZWINDOWZSHADOWZTITLEZBUTTONZ ACTBUTTONZCHECKBOXZ ACTCHECKBOXZENTRYZLABELZLISTBOXZ ACTLISTBOXZTEXTBOXZ ACTTEXTBOXZHELPLINEZROOTTEXTZ EMPTYSCALEZ FULLSCALEZDISENTRYZ COMPACTBUTTONZ ACTSELLISTBOXZ SELLISTBOXc@s–eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z d$dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd%dd„Zd&dd„Zd 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&t ¡t ¡\|_|_| d¡dSr)r ÚinitÚsizerIrFÚ pushHelpLinerrrrrÔszSnackScreen.__init__cCst ¡Sr)r Úfinishrrrrr—ÙszSnackScreen.finishcCs t ¡dSr)r Úresumerrrrr˜ÜszSnackScreen.resumecCs t ¡dSr)r Úsuspendrrrrr™ßszSnackScreen.suspendcCs| ||¡dSr)ÚhelpCb)rÚargrrrÚdoHelpCallbackâszSnackScreen.doHelpCallbackcCs||_t |j¡Sr)ršr Z helpcallbackrœ)rÚcbrrrÚ helpCallbackåszSnackScreen.helpCallbackNcCs|rt ||¡St |¡Sr)r Zsuspendcallback)rrrrrrÚsuspendCallbackés zSnackScreen.suspendCallbackcCst |||||¡Sr)r Z openwindow)rÚleftÚtoprIrFÚtitlerrrÚ openWindowîszSnackScreen.openWindowcCs|st d¡St |¡SdS)Nz *default*)r Z pushhelpliner"rrrr–ñs zSnackScreen.pushHelpLinecCst ¡Sr)r Z pophelplinerrrrÚ popHelpLine÷szSnackScreen.popHelpLinecCst |||¡Sr)r Z drawroottext)rr r¡r#rrrÚ drawRootTextúszSnackScreen.drawRootTextcCst |||¡Sr)r Zcenteredwindow)rrIrFr¢rrrÚcenteredWindowýszSnackScreen.centeredWindowcCs(|r|rt |j|||¡St |j|¡Sr)r Zgridwrappedwindowr)rr‘r¢r„r…rrrÚgridWrappedWindowszSnackScreen.gridWrappedWindowTcCs|r t ¡St ¡Sr)r Z popwindowZpopwindownorefresh)rÚrefreshrrrÚ popWindowszSnackScreen.popWindowcCst ¡Sr)r r¨rrrrr¨ szSnackScreen.refreshcCs,|tvrt t|||¡St |||¡SdSr)Ú colorsetsr Zsetcolor)rrWZfgÚbgrrrÚsetColorszSnackScreen.setColor)N)NN)T)rrrrrr—r˜r™rœržrŸr£r–r¤r¥r¦r§r©r¨r¬rrrrr“Às"   r“rOcCst ||||¡S)zR returns a tuple of the wrapped text, the actual width, and the actual height )r rQ)r#rIrRrSrrrrQsrQc@s*eZdZdZdd„Zd dd„Zdd„ZdS) Ú 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%szRadioGroup.__init__NcCs:|js|dkrd}t||j|ƒ}||_|j ||f¡|S©Nr )r®r0r¯r)rr¢r(ÚdefaultÚbrrrrn)s zRadioGroup.addcCs$|jD]\}}| ¡r|SqdSr)r¯r*)rr²r(rrrrB3szRadioGroup.getSelection)N)rrrrrrnrBrrrrr­s r­c@s eZdZdZdd„Zdd„ZdS)Ú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 |||¡}|j ||f¡|j |d|jdd|jd|_q*dS)Nrr ©rŠ) rAr7r­r2r€rÚlenrnrr)rÚscreenr¯r¢r(r±r²rrrrBszRadioBar.__init__cCs |j ¡Sr)r2rBrrrrrBMszRadioBar.getSelectionN)rrrrrrBrrrrr³9s r³c@s"eZdZdZddd„Zdd„ZdS) Ú 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 CsÆg|_i|_d|_t |t|ƒd¡|D]˜}t|tjdkr>t nt ƒrR|}|  ¡}n*t|ƒdkrh|\}}n|\}}}||j|<|rŠt |ƒ}nt |ƒ}|j ||f¡| ||jdd¡|jd|_q(dS)Nrr Ú3é)r rr r)rArhr7r€rrµÚ isinstanceÚsysÚversionÚstrÚ basestringÚlowerr%rrr) rr¶r¯ZcompactZblistr¢r(Zhotkeyr²rrrr\s$      zButtonBar.__init__cCs8||jvr|j|S|jD]\}}||kr|SqdSr)rhrA)rÚresultr!r(rrrÚ buttonPressedss    zButtonBar.buttonPressedN)r)rrrrrrÁrrrrr·Ss r·c@sheZdZdZdd„Zddd„Zdd d „Zd d „Zd d„Zddd„Z ddd„Z dd„Z dd„Z dd„Z 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 |ƒŽdSr)) r¶r¢rgrwÚ childListÚ form_createdrAr€rÚtuple)rr¶r¢Úhelpr’rrrrs zGridFormHelp.__init__r†rc Cs,| ||||||||| | ¡ |j |¡dSr)rrÃr) rrpr‡rˆr‰rŠr‹rŒrrŽrrrrrn™s þzGridFormHelp.addNcCs| ||¡}|j ¡|Sr)rqr¶r©)rr„r…rÀrrrÚrunOnce¡s  zGridFormHelp.runOncecCs|j |¡dSr)rwrjrirrrrj¦szGridFormHelp.addHotKeycCs|j |¡dSr)rwr{rirrrr{©szGridFormHelp.setTimercCsH|jsD| dd¡|jD]}|j |¡q|j ||j||¡d|_dSr°)rÄr‚rÃrwrnr¶r§r¢)rr„r…ÚchildrrrÚcreate¬s   zGridFormHelp.createcCs| ||¡|j ¡Sr)rÉrwrqrƒrrrrq´s zGridFormHelp.runcCs| ¡|j ¡Sr)rÉrwrvrrrrrv¸szGridFormHelp.drawcCs0| ¡|j ||j¡|j ¡}|j ¡|Sr)rÉr¶r§r¢rwrqr©)rrÀrrrÚrunPopup¼s   zGridFormHelp.runPopupcCs|j |¡dSr)rwrCryrrrrCÃszGridFormHelp.setCurrent)r†rrrrrr)NN)NN)NN)rrrrrrnrÇrjr{rÉrqrvrÊrCrrrrrÂ}s þ    rÂc@seZdZdZdd„ZdS)ÚGridFormzh GridForm class (extends GridFormHelp): methods: - GridForm(self, screen, title, *args): cGs|||df|}tj|ŽdSr)rÂr)rr¶r¢r’ZmyargsrrrrÍszGridForm.__init__Nr$rrrrrËÆsrËc@s`eZdZdZddd„Zddd„Zdd „Zdd d „Zd d „Zdd„Z dd„Z ddd„Z dd„Z 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#r7r*rrrrászCheckboxTree.appendcCs4|dur |}|j |||¡}||j|<||j|<dSr)rZcheckboxtreeAddItemr4r5)rr#Úpathr7r*r1rrrrÍäs  zCheckboxTree.addItemcCs|j ¡}|j|Sr)rZcheckboxtreeGetCurrentr4)rZcurrrrrÚ getCurrentës zCheckboxTree.getCurrentcCs2t ||||¡|_i|_i|_|r.|j |¡dSr)r Z checkboxtreerr4r5ZcheckboxtreeSetWidth)rrFrGrIZ hide_checkboxZ unselectablerrrrïs zCheckboxTree.__init__cCs,g}|j ¡}|D]}| |j|¡q|Sr)rZcheckboxtreeGetSelectionrr4r@rrrrBös  zCheckboxTree.getSelectioncCs|j |j||¡dSr)rZcheckboxtreeSetEntryr5)rr7r#rrrÚsetEntryýszCheckboxTree.setEntrycCs|j |j|¡dSr)rZcheckboxtreeSetCurrentr5r<rrrrCszCheckboxTree.setCurrentr cCs|j |j||¡dSr)rZcheckboxtreeSetEntryValuer5)rr7r*rrrÚ setEntryValueszCheckboxTree.setEntryValuecCs|j |j|¡Sr)rZcheckboxtreeGetEntryValuer5r<rrrÚ getEntryValueszCheckboxTree.getEntryValue)Nr)Nr)rNrr)r ) rrrrrrÍrÐrrBrÑrCrÒrÓrrrrrÌÑs    rÌ©ÚOkÚCancelé(c Csú|dkrt|ƒ}t||ƒ} t||ƒ} t||dd} d} |D]P}t|ƒtkrT|\}}n|}| }|| krj|}n ||krv|}|  ||¡| d} q:|dkrž|  |¡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 )rGrHrNé)rr rr ©r‰r¹©rŽ) rµr·rNr3ÚtyperÅrrCrÂrnrÇrÁr?)r¶r¢r#ÚitemsÚbuttonsrIrGrFr±rÆÚbbÚtÚlÚcountr7r1rÚrcrrrÚListboxChoiceWindow s0        rãrÕrÖc 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): é )rTr r¹r©rrrr rÙrÚ)r·rNrFrÂrnrÁrÇ) r¶r¢r#rÝrIr„r…rÆrÞrßrrrrÚButtonChoiceWindow4s  rær éc CsPt||ƒ} t||ƒ} d} |D] } | d} qtd| ƒ} d} g}|D]€} t| ƒtkr|| \} }t|tjdkrjtnt ƒ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): rr r¹r¸)rrr r)r‰rŠr´rØrårÙrÚ)r·rNr€rÛrÅrºr»r¼r½r¾r]rrUrrÂrnrÇr(rÁ)r¶r¢r#ZpromptsZ allowCancelrIZ entryWidthrÝrÆrÞrßráÚnZsgZ entryListÚerrÀZ entryValuesrrrÚ EntryWindowDs:        rêc@sbeZdZdZddd„Zddd„Zdd d „Zdd d „Zd d„Zddd„Z dd„Z dd„Z dd„Z 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 rr Nc Cs¤||_|dd…|_||_||_| dkrjt |dd¡d} |j| | | d} t| ƒ|_|j |jddddnt |dd¡d} t ||||ƒ|_ |j |j d| dddS)Nr r¹)Ú adjust_widthrr´)rŒ) ÚcolsÚ col_widthsÚcol_padÚcol_text_alignr€rÚ colFormTextrUrVrr3rE)rrFrírîrGrHrIrïrðZ col_labelsZcol_label_alignrìZbox_yZlstrrrrrƒs ÿ zCListbox.__init__c Cs"d}d}t|ƒ}||jkr||kr||}t |¡}|j||krh|rV||j|<n|d|j|…}|j|t |¡} | dkrê|dkr’t} n||} | tkr®|d| }| tkrÖd| d|d| dd}| tkrêd| |}||dkrd|j} nd} ||| }|d}q|S)Nrr^rar¹r ) rµrír ZwstrlenrîÚLEFTÚCENTERÚRIGHTrï) rÚcol_textZalignrìÚir½Zc_lenZcstrZcstrlenZdeltaÚaZpstrrrrrñžs:   ÿ    zCListbox.colFormTextcCs,|dkr|j}| ||¡}|j ||¡dSr)rðrñrEr©rrõr7rðr#rrrrÇs zCListbox.appendcCs.|dkr|j}| ||¡}|j |||¡dSr)rðrñrEr:)rrõr7r9rðr#rrrr:Ís zCListbox.insertcCs|j |¡dSr)rEr=r<rrrr=ÓszCListbox.deletecCs,|dkr|j}| ||¡}|j ||¡dSr)rðrñrEr>rørrrr>Ös zCListbox.replacecCs |j ¡Sr)rEr?rrrrr?ÜszCListbox.currentcCs|j |¡dSr)rErCr<rrrrCßszCListbox.setCurrentcCs|j ¡dSr)rErDrrrrrDâszCListbox.clear)rrrr NNNr)Nr)N)N)N) rrrrrrñrr:r=r>r?rCrDrrrrrërsý  )   rëcCsd|S)Nér)r„rrrÚcustomColorsetåsrú)rOrO)rÔr×rr NN)crZ __future__rrrr Ústringr»rrrrr r r ròZDOWNróZUPrôrÎrrr%r&r0r3rJrNrUrYr]ZKEY_F1ZKEY_F2ZKEY_F3ZKEY_F4ZKEY_F5ZKEY_F6ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_ESCZ KEY_ENTERZ KEY_SUSPENDZ KEY_BACKSPACEZ KEY_DELETEZ KEY_INSERTZ KEY_RESIZErbrhrArmrèÚ ascii_lettersÚdigitsÚordrgr€Z COLORSET_ROOTZCOLORSET_BORDERZCOLORSET_WINDOWZCOLORSET_SHADOWZCOLORSET_TITLEZCOLORSET_BUTTONZCOLORSET_ACTBUTTONZCOLORSET_CHECKBOXZCOLORSET_ACTCHECKBOXZCOLORSET_ENTRYZCOLORSET_LABELZCOLORSET_LISTBOXZCOLORSET_ACTLISTBOXZCOLORSET_TEXTBOXZCOLORSET_ACTTEXTBOXZCOLORSET_HELPLINEZCOLORSET_ROOTTEXTZCOLORSET_EMPTYSCALEZCOLORSET_FULLSCALEZCOLORSET_DISENTRYZCOLORSET_COMPACTBUTTONZCOLORSET_ACTSELLISTBOXZCOLORSET_SELLISTBOXrªr“rQr­r³r·rÂrËrÌrãrærêrërúrrrrÚs¦$$  A    ø  ?.êU *I 9ý ,þ  ÿ .s