Ë
    ^	fžy  ã                   óš  — d Z ddlmZmZmZ ddlZddlZddlZddlmZm	Z	m
Z
mZmZmZmZ dZdZdZdZd	Zd
diZ G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d „ d!e«      Zi d"ej@                  “d#ejB                  “d$ejD                  “d%ejF                  “d&ejH                  “d'ejJ                  “d(ejL                  “d)ejN                  “d*ejP                  “d+ejR                  “d,ejT                  “d-ejV                  “d.ejX                  “d/ejZ                  “d0ej\                  “d1ej^                  “d2ej`                  “ejb                  ejd                   e3d3«      d4œ¥Z4 e5e4jm                  «       «      D ]
  Z7e7e4e4e7   <   Œ ejp                  ejr                  z   D � cg c]  }  e3| «      | f‘Œ c} D ]  \  Z:Z;e:e4e;<   e;e4e:<   Œ  G d5„ d6«      Z< G d7„ d8«      Z=i d9ej|                  “d:ej~                  “d;ej€                  “d<ej‚                  “d=ej„                  “d>ej†                  “d?ejˆ                  “d@ejŠ                  “dAejŒ                  “dBejŽ                  “dCej�                  “dDej’                  “dEej”                  “dFej–                  “dGej˜                  “dHejš                  “dIejœ                  “ejž                  ej                   ej¢                  ej¤                  ej¦                  ej¨                  dJœ¥ZU G dK„ dL«      ZVdedM„ZW G dN„ dOe«      ZX G dP„ dQe=«      ZY G dR„ dSe=«      ZZ G dT„ dUe=«      Z[ G dV„ dWe[«      Z\ G dX„ dYe«      Z]	 	 	 dfd[„Z^d\d]gdZdddfd^„Z_d_dZd`d\d]gdfda„Z` G db„ dce=«      Zadd„ Zbyc c} w )gaã  
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   ©r   r   )é   r   )r   r   Úappendr   c                   ó   — e Zd ZdZdd„Zd„ Zy)Ú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.
    Nc                 óx   — |r| j                   j                  ||«       y | j                   j                  |«       y ©N)ÚwÚsetCallback)ÚselfÚobjÚdatas      ú'/usr/lib/python3/dist-packages/snack.pyr   zWidget.setCallbackD   s+   € ÙØ�F‰F×Ñ˜s DÕ)à�F‰F×Ñ˜sÕ#ó    c                 ó   — t         ‚r   )ÚNotImplementedError©r   s    r   Ú__init__zWidget.__init__J   s   € Ü!Ð!r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   :   s   „ ñó$ó"r   r   c                   ó   — e Zd ZdZd„ Zy)ÚButtonzqBasic button class, takes button text as parameter

    method:

     - Button(self, text): returns a button
    c                 ó8   — t        j                  |«      | _        y r   )Ú_snackÚbuttonr   ©r   Útexts     r   r   zButton.__init__T   s   € Ü—‘˜tÓ$ˆ�r   N©r    r!   r"   r#   r   r$   r   r   r&   r&   M   s   „ ñó%r   r&   c                   ó   — e Zd ZdZd„ Zy)ÚCompactButtonz…Compact Button class (less frilly button decoration).

    methods:

     - CompactButton(self,text) : create button, with text.
    c                 ó8   — t        j                  |«      | _        y r   )r(   Úcompactbuttonr   r*   s     r   r   zCompactButton.__init__^   s   € Ü×%Ñ% dÓ+ˆ�r   Nr,   r$   r   r   r.   r.   W   s   „ ñó,r   r.   c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdd„Zy)	Ú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
    c                 ó.   — | j                   j                  S r   ©r   ÚcheckboxValuer   s    r   ÚvaluezCheckbox.valuen   s   € Ø�v‰v×#Ñ#Ð#r   c                 ó4   — | j                   j                  dk7  S ©Nr   r4   r   s    r   ÚselectedzCheckbox.selectedq   s   € Ø�v‰v×#Ñ# qÑ(Ð(r   c                 ó:   — | j                   j                  ||«      S r   )r   ÚcheckboxSetFlags©r   ÚflagÚsenses      r   ÚsetFlagszCheckbox.setFlagst   s   € à�v‰v×&Ñ& t¨UÓ3Ð3r   c                 ó8   — | j                   j                  |«      S r   )r   ÚcheckboxSetValue)r   r6   s     r   ÚsetValuezCheckbox.setValuex   s   € Ø�v‰v×&Ñ& uÓ-Ð-r   c                 ó:   — t        j                  ||«      | _        y r   )r(   Úcheckboxr   )r   r+   ÚisOns      r   r   zCheckbox.__init__{   s   € Ü—‘  tÓ,ˆ�r   N©r   )	r    r!   r"   r#   r6   r9   r?   rB   r   r$   r   r   r2   r2   a   s    „ ñò$ò)ò4ò.ô-r   r2   c                   ó   — e Zd ZdZd„ Zdd„Zy)ÚSingleRadioButtonzÌSingle Radio Button.

    methods:
    
     -  SingleRadioButton(text, group, isOn = 0)  : create button
     -  selected(self)                            : returns bool, whether or not is selected.
    c                 ó\   — | j                   j                  | j                   j                  k(  S r   )r   ÚkeyÚ
radioValuer   s    r   r9   zSingleRadioButton.selected‡   s   € Ø�v‰v�z‰z˜TŸV™V×.Ñ.Ñ.Ð.r   c                 óŽ   — |r't        j                  ||j                  |«      | _        y t        j                  |d |«      | _        y r   )r(   Úradiobuttonr   )r   r+   ÚgrouprE   s       r   r   zSingleRadioButton.__init__Š   s5   € ÙÜ×'Ñ'¨¨e¯g©g°tÓ<ˆD�Fä×'Ñ'¨¨d°DÓ9ˆD�Fr   NrF   )r    r!   r"   r#   r9   r   r$   r   r   rH   rH   ~   s   „ ñò0ô:r   rH   c                   óH   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd
„Zy)Ú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
    c                 óv   — | j                   j                  |«      }|| j                  |<   || j                  |<   y r   )r   ÚlistboxAddItemÚkey2itemÚitem2key©r   r+   ÚitemrJ   s       r   r   zListbox.appendŸ   s2   € Ø�f‰f×#Ñ# DÓ)ˆØ!ˆ�‰�cÑØ!ˆ�‰�dÒr   c                 óÐ   — |s| j                   j                  |d«      }n)| j                   j                  || j                  |   «      }|| j                  |<   || j                  |<   y r8   )r   ÚlistboxInsertItemrT   rS   )r   r+   rV   ÚbeforerJ   s        r   ÚinsertzListbox.insert¤   sV   € ÙØ—&‘&×*Ñ*¨4°Ó3‰Cà—&‘&×*Ñ*¨4°·±¸vÑ1FÓGˆCØ!ˆ�‰�cÑØ!ˆ�‰�dÒr   c                 ó¢   — | j                   j                  | j                  |   «       | j                  | j                  |   = | j                  |= y r   )r   ÚlistboxDeleteItemrT   rS   ©r   rV   s     r   ÚdeletezListbox.delete¬   s>   € Ø�‰× Ñ  §¡¨tÑ!4Ô5Ø�M‰M˜$Ÿ-™-¨Ñ-Ð.Ø�M‰M˜$Ñr   c                 ó  — | j                   j                  || j                  |   «      }| j                   j                  | j                  |   «       | j                  | j                  |   = || j                  |<   || j                  |<   y r   )r   rX   rT   r\   rS   rU   s       r   ÚreplacezListbox.replace±   sm   € Ø�f‰f×&Ñ& t¨T¯]©]¸4Ñ-@ÓAˆØ�‰× Ñ  §¡¨tÑ!4Ô5Ø�M‰M˜$Ÿ-™-¨Ñ-Ð.Ø!ˆ�‰�dÑØ!ˆ�‰�cÒr   c                 óP   — | j                   | j                  j                  «          S r   )rS   r   ÚlistboxGetCurrentr   s    r   ÚcurrentzListbox.current¸   s   € Ø�}‰}˜TŸV™V×5Ñ5Ó7Ñ8Ð8r   c                 óˆ   — g }| j                   j                  «       }|D ]   }|j                  | j                  |   «       Œ" |S r   )r   ÚlistboxGetSelectionr   rS   ©r   Ú	selectionÚlistrJ   s       r   ÚgetSelectionzListbox.getSelection»   sE   € Øˆ	Ø�v‰v×)Ñ)Ó+ˆØò 	1ˆCØ×Ñ˜TŸ]™]¨3Ñ/Õ0ð	1àÐr   c                 óT   — | j                   j                  | j                  |   «       y r   )r   ÚlistboxSetCurrentrT   r]   s     r   Ú
setCurrentzListbox.setCurrentÂ   s   € Ø�‰× Ñ  §¡¨tÑ!4Õ5r   c                 óT   — i | _         i | _        | j                  j                  «        y r   )rS   rT   r   ÚlistboxClearr   s    r   ÚclearzListbox.clearÅ   s    € ØˆŒØˆŒØ�‰×ÑÕr   c                 óš   — t        j                  ||||||«      | _        i | _        i | _        |r| j                  j                  |«       y y r   )r(   Úlistboxr   rS   rT   ÚlistboxSetWidth)r   ÚheightÚscrollÚ
returnExitÚwidthÚ
showCursorÚmultipleÚborders           r   r   zListbox.__init__Ê   sE   € Ü—‘ ¨°
¸JÈÐRXÓYˆŒØˆŒØˆŒÙØ�F‰F×"Ñ" 5Õ)ð r   N)r   r   r   r   r   r   )r    r!   r"   r#   r   rZ   r^   r`   rc   ri   rl   ro   r   r$   r   r   rP   rP   �   s4   „ ñò"ò
"ò ò
"ò9òò6òô
*r   rP   c                   ó$   — e Zd ZdZd„ Zd„ Zdd„Zy)ÚTextboxa  Textbox, 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.
    c                 ó:   — | j                   j                  |«       y r   )r   ÚtextboxTextr*   s     r   ÚsetTextzTextbox.setTextÜ   s   € Ø�‰×Ñ˜4Õ r   c                 ó:   — | j                   j                  |«       y r   )r   ÚtextboxHeight)r   rs   s     r   Ú	setHeightzTextbox.setHeightß   s   € Ø�‰×Ñ˜VÕ$r   c                 ó@   — t        j                  |||||«      | _        y r   )r(   Útextboxr   )r   rv   rs   r+   rt   Úwraps         r   r   zTextbox.__init__â   s   € Ü—‘  v¨t°V¸TÓBˆ�r   Nr   )r    r!   r"   r#   r~   r�   r   r$   r   r   r{   r{   Ñ   s   „ ñò!ò%ôCr   r{   c                   ó   — e Zd Zdd„Zy)ÚTextboxReflowedc                 ó¢   — t        ||||«      \  }}}|dk7  r||kD  rt        j                  | |||d«       y t        j                  | |||d«       y )Nr   r   r   )Úreflowr{   r   )r   rv   r+   ÚflexDownÚflexUpÚ	maxHeightÚnewtextrs   s           r   r   zTextboxReflowed.__init__ç   sS   € Ü#)¨$°°xÀÓ#HÑ ˆ�%˜Ø˜Š?˜v¨	Ò1Ü×Ñ˜T 5¨)°W¸aÕ@ä×Ñ˜T 5¨&°'¸1Õ=r   N)é   é
   r   )r    r!   r"   r   r$   r   r   r†   r†   å   s   „ ô>r   r†   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚLabelz¸A Label (simple text).

    methods:

     - Label(self,text)   : create label
     - setText(self,text) : change text.
     - setColors(self, colorset) : change individual colors
    c                 ó:   — | j                   j                  |«       y r   )r   Ú	labelTextr*   s     r   r~   zLabel.setText÷   s   € Ø�‰×Ñ˜Õr   c                 ó8   — t        j                  |«      | _        y r   )r(   Úlabelr   r*   s     r   r   zLabel.__init__ú   s   € Ü—‘˜dÓ#ˆ�r   c                 ó:   — | j                   j                  |«       y r   )r   ÚlabelSetColors)r   Úcolorsets     r   Ú	setColorszLabel.setColorsý   s   € Ø�‰×Ñ˜hÕ'r   N)r    r!   r"   r#   r~   r   r˜   r$   r   r   r�   r�   î   s   „ ñòò$ó(r   r�   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú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.
    c                 ó:   — | j                   j                  |«       y r   )r   ÚscaleSet)r   Úamounts     r   Úsetz	Scale.set  s   € Ø�‰�‰˜Õr   c                 ó:   — t        j                  ||«      | _        y r   )r(   Úscaler   )r   rv   Útotals      r   r   zScale.__init__  s   € Ü—‘˜e UÓ+ˆ�r   N)r    r!   r"   r#   rž   r   r$   r   r   rš   rš      s   „ ñò ó,r   rš   c                   ó0   — e Zd ZdZd„ Zdd„Zd„ Z	 	 dd„Zy)	ÚEntrya  Entry 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
    c                 ó.   — | j                   j                  S r   )r   Ú
entryValuer   s    r   r6   zEntry.value  s   € Ø�v‰v× Ñ Ð r   c                 ó:   — | j                   j                  ||«      S r   )r   ÚentrySetValue)r   r+   ÚcursorAtEnds      r   rž   z	Entry.set  s   € Ø�v‰v×#Ñ# D¨+Ó6Ð6r   c                 ó:   — | j                   j                  ||«      S r   )r   ÚentrySetFlagsr<   s      r   r?   zEntry.setFlags"  s   € Ø�v‰v×#Ñ# D¨%Ó0Ð0r   c                 óB   — t        j                  ||||||«      | _        y r   )r(   Úentryr   )r   rv   r+   ÚhiddenÚpasswordrt   ru   s          r   r   zEntry.__init__%  s   € ä—‘˜e T¨6°8¸VÀZÓPˆ�r   N©r   )Ú r   r   r   r   )r    r!   r"   r#   r6   rž   r?   r   r$   r   r   r£   r£     s&   „ ñò!ó7ò1ð MNØôQr   r£   ÚF1ÚF2ÚF3ÚF4ÚF5ÚF6ÚF7ÚF8ÚF9ÚF10ÚF11ÚF12ÚESCÚENTERÚSUSPENDÚ	BACKSPACEÚDELETEú )ÚINSERTÚRESIZErÂ   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	d	„ Z
d
„ Zy)Ú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
    c                 óH   — | j                   j                  t        |   «       y r   )r   Ú	addhotkeyÚhotkeys©r   Úkeynames     r   Ú	addHotKeyzForm.addHotKeyI  s   € Ø�‰×Ñœ Ñ)Õ*r   c                 óŽ  — d|j                   v r0|j                  j                  «       D ]  }| j                  |«       Œ d|j                   v r#|j                  D ]  }| j                  |«       Œ y d|j                   v rH|| j                  |j                  j                  <   | j                  j                  |j                  «      S y )NrÉ   Úgridmembersr   )	Ú__dict__rÉ   ÚkeysrÌ   rÎ   ÚaddÚtransr   rJ   )r   ÚwidgetrJ   r   s       r   rÑ   zForm.addL  s§   € Ø˜Ÿ™Ñ'Ø—~‘~×*Ñ*Ó,ò $�Ø—‘˜sÕ#ð$ð ˜FŸO™OÑ+Ø×'Ñ'ò �Ø—‘˜•ðð
 ð �F—O‘OÑ#Ø'-ˆD�J‰J�v—x‘x—|‘|Ñ$Ø—6‘6—:‘:˜fŸh™hÓ'Ð'Ør   c                 ó:  — | j                   j                  «       \  }}|t        j                  k(  r| j                  |   S |t        j
                  k(  ry|t        j                  k(  r| j                  |   S |t        j                  k(  r	t        |   S t        d«      ‚)NÚTIMERzEOF or IO error)r   Úrunr(   ÚFORM_EXIT_WIDGETrÒ   ÚFORM_EXIT_TIMERÚFORM_EXIT_FDREADYÚfilemapÚFORM_EXIT_HOTKEYrÉ   ÚRuntimeError)r   ÚwhatÚwhichs      r   rÖ   zForm.runY  s„   € ØŸ™Ÿ
™
›‰ˆˆuØ”F×+Ñ+Ò+Ø—:‘:˜eÑ$Ð$Ø”f×,Ñ,Ò,ØØ”f×.Ñ.Ò.Ø—<‘< Ñ&Ð&Ø”f×-Ñ-Ò-Ü˜5‘>Ð!ÜÐ,Ó-Ð-r   c                 ó8   — | j                   j                  «        y r   )r   Údrawr   s    r   rà   z	Form.drawe  s   € Ø�‰�‰ŒØr   Nc                 ób   — i | _         i | _        t        j                  |«      | _        || _        y r   )rÒ   rÚ   r(   Úformr   ÚhelpArg)r   rã   s     r   r   zForm.__init__i  s'   € ØˆŒ
ØˆŒÜ—‘˜WÓ%ˆŒàˆ�r   c                 óN   — | j                   j                  |j                   «       y r   )r   Ú
setcurrent©r   Úcos     r   rl   zForm.setCurrentp  s   € Ø�‰×Ñ˜2Ÿ4™4Õ r   c                 ó:   — | j                   j                  |«       y r   )r   Úsettimer)r   Útimers     r   ÚsetTimerzForm.setTimers  s   € Ø�‰�‰˜Õr   c                 ó’   — || j                   |j                  «       <   | j                  j                  |j                  «       |«       y r   )rÚ   Úfilenor   Úwatchfd)r   ÚfileÚflagss      r   Ú	watchFilezForm.watchFilev  s.   € Ø&*ˆ�‰�T—[‘[“]Ñ#Ø�‰�‰˜Ÿ™› uÕ-r   r   )r    r!   r"   r#   rÌ   rÑ   rÖ   rà   r   rl   rë   rñ   r$   r   r   rÆ   rÆ   ;  s/   „ ñò+òò
.òóò!ò ó.r   rÆ   c                   ó*   — e Zd ZdZd„ Z	 	 	 dd„Zd„ Zy)ÚGriday  Grid 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
    c                 ó:   — | j                   j                  ||«      S r   )ÚgÚplace©r   ÚxÚys      r   rö   z
Grid.place†  s   € Ø�v‰v�|‰|˜A˜qÓ!Ð!r   c                 óð  — | j                   j                  |«       d}|rt        j                  }n|rt        j                  }|r|t        j
                  z  }n|r|t        j                  z  }d}|	rt        j                  }|
r|t        j                  z  }d|j                  v r*| j                  j                  |||j                  |||«      S | j                  j                  |||j                  ||«      S )Nr   rõ   )rÎ   r   r(   ÚANCHOR_LEFTÚANCHOR_RIGHTÚ
ANCHOR_TOPÚANCHOR_BOTTOMÚ
GRID_GROWXÚ
GRID_GROWYrÏ   rõ   Úsetfieldr   )r   rÝ   ÚcolÚrowÚpaddingÚ
anchorLeftÚ	anchorTopÚanchorRightÚanchorBottomÚgrowxÚgrowyÚanchorFlagsÚ	gridFlagss                r   ÚsetFieldzGrid.setField‰  sØ   € ð 	×Ñ×Ñ Ô%ØˆÙÜ ×,Ñ,‰KÙÜ ×-Ñ-ˆKáØ%¬×(9Ñ(9Ñ9‰KÙØ%¬×(<Ñ(<Ñ<ˆKàˆ	ÙÜ×)Ñ)ˆIÙØ!¤F×$5Ñ$5Ñ5ˆIà�$—-‘-ÑØ—6‘6—?‘? 3¨¨T¯V©V°W¸kØ ó"ð "ð —6‘6—?‘? 3¨¨T¯V©V°W¸kÓJÐJr   c                 ó@   — t        j                  |Ž | _        g | _        y r   )r(   Úgridrõ   rÎ   )r   Úargss     r   r   zGrid.__init__¤  s   € Ü—‘˜dÐ#ˆŒØˆÕr   N©)r   r   r   r   r   r   r   r   r   r   )r    r!   r"   r#   rö   r  r   r$   r   r   ró   ró   z  s"   „ ñ
ò"ð 2>Ø67Ø./óKó6r   ró   ÚROOTÚBORDERÚWINDOWÚSHADOWÚTITLEÚBUTTONÚ	ACTBUTTONÚCHECKBOXÚACTCHECKBOXÚENTRYÚLABELÚLISTBOXÚ
ACTLISTBOXÚTEXTBOXÚ
ACTTEXTBOXÚHELPLINEÚROOTTEXT)Ú
EMPTYSCALEÚ	FULLSCALEÚDISENTRYÚCOMPACTBUTTONÚACTSELLISTBOXÚ
SELLISTBOXc                   óv   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd	„Z
d
„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Zd„ Zy)Ú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)
    c                 ó�   — t        j                  «        t        j                  «       \  | _        | _        | j                  d «       y r   )r(   ÚinitÚsizerv   rs   ÚpushHelpLiner   s    r   r   zSnackScreen.__init__Ô  s-   € Ü�‰ŒÜ$*§K¡K£MÑ!ˆŒ�T”[Ø×Ñ˜$Õr   c                 ó*   — t        j                  «       S r   )r(   Úfinishr   s    r   r0  zSnackScreen.finishÙ  s   € Ü�}‰}‹Ðr   c                 ó,   — t        j                  «        y r   )r(   Úresumer   s    r   r2  zSnackScreen.resumeÜ  s   € Ü�‰�r   c                 ó,   — t        j                  «        y r   )r(   Úsuspendr   s    r   r4  zSnackScreen.suspendß  s   € Ü�‰Õr   c                 ó(   — | j                  | |«       y r   )ÚhelpCb)r   Úargs     r   ÚdoHelpCallbackzSnackScreen.doHelpCallbackâ  s   € Ø�‰�D˜#Õr   c                 óN   — || _         t        j                  | j                  «      S r   )r6  r(   Úhelpcallbackr8  )r   Úcbs     r   ÚhelpCallbackzSnackScreen.helpCallbackå  s    € ØˆŒÜ×"Ñ" 4×#6Ñ#6Ó7Ð7r   Nc                 ó\   — |rt        j                  ||«      S t        j                  |«      S r   )r(   Úsuspendcallback)r   r;  r   s      r   ÚsuspendCallbackzSnackScreen.suspendCallbacké  s)   € ÙÜ×)Ñ)¨"¨dÓ3Ð3Ü×%Ñ% bÓ)Ð)r   c                 ó4   — t        j                  |||||«      S r   )r(   Ú
openwindow)r   ÚleftÚtoprv   rs   Útitles         r   Ú
openWindowzSnackScreen.openWindowî  s   € Ü× Ñ   s¨E°6¸5ÓAÐAr   c                 óZ   — |st        j                  d«      S t        j                  |«      S )Nz	*default*)r(   Úpushhelpliner*   s     r   r.  zSnackScreen.pushHelpLineñ  s'   € ÙÜ×&Ñ& {Ó3Ð3ä×&Ñ& tÓ,Ð,r   c                 ó*   — t        j                  «       S r   )r(   Úpophelpliner   s    r   ÚpopHelpLinezSnackScreen.popHelpLine÷  s   € Ü×!Ñ!Ó#Ð#r   c                 ó0   — t        j                  |||«      S r   )r(   Údrawroottext)r   rB  rC  r+   s       r   ÚdrawRootTextzSnackScreen.drawRootTextú  s   € Ü×"Ñ" 4¨¨dÓ3Ð3r   c                 ó0   — t        j                  |||«      S r   )r(   Úcenteredwindow)r   rv   rs   rD  s       r   ÚcenteredWindowzSnackScreen.centeredWindowý  s   € Ü×$Ñ$ U¨F°EÓ:Ð:r   c                 óŽ   — |r$|r"t        j                  |j                  |||«      S t        j                  |j                  |«      S r   )r(   Úgridwrappedwindowrõ   )r   r  rD  rø   rù   s        r   ÚgridWrappedWindowzSnackScreen.gridWrappedWindow   s9   € Ù‘Ü×+Ñ+¨D¯F©F°E¸1¸aÓ@Ð@ä×'Ñ'¨¯©°Ó6Ð6r   c                 óV   — |rt        j                  «       S t        j                  «       S r   )r(   Ú	popwindowÚpopwindownorefresh)r   Úrefreshs     r   Ú	popWindowzSnackScreen.popWindow  s#   € ÙÜ×#Ñ#Ó%Ð%Ü×(Ñ(Ó*Ð*r   c                 ó*   — t        j                  «       S r   )r(   rW  r   s    r   rW  zSnackScreen.refresh  s   € Ü�~‰~ÓÐr   c                 ó|   — |t         v rt        j                  t         |   ||«      S t        j                  |||«      S r   )Ú	colorsetsr(   Úsetcolor)r   r—   ÚfgÚbgs       r   ÚsetColorzSnackScreen.setColor  s7   € Ø”yÑ Ü—?‘?¤9¨XÑ#6¸¸BÓ?Ð?ô —/‘/ (¨B°Ó3Ð3r   r   ©NN)T)r    r!   r"   r#   r   r0  r2  r4  r8  r<  r?  rE  r.  rJ  rM  rP  rS  rX  rW  r_  r$   r   r   r*  r*  À  sX   „ ñò& ò
òòòò8ó*ò
Bò-ò$ò4ò;ó7ó+ò
 ó4r   r*  c                 ó2   — t        j                  | |||«      S )zR returns a tuple of the wrapped text, the actual width, and the actual height
    )r(   rˆ   )r+   rv   r‰   rŠ   s       r   rˆ   rˆ     s   € ô �=‰=˜˜u h°Ó7Ð7r   c                   ó$   — e Zd ZdZd„ Zdd„Zd„ Zy)Ú
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    
    c                 ó    — d | _         g | _        y r   )ÚprevÚ
buttonlistr   s    r   r   zRadioGroup.__init__%  s   € ØˆŒ	Øˆ�r   Nc                 ó¢   — | j                   s|d k(  rd}t        || j                   |«      }|| _         | j                  j                  ||f«       |S ©Nr   )re  rH   rf  r   )r   rD  r6   ÚdefaultÚbs        r   rÑ   zRadioGroup.add)  sJ   € Ø�yŠy˜W¨š_ð ˆGÜ˜e T§Y¡Y°Ó8ˆØˆŒ	Ø�‰×Ñ  5˜zÔ*Øˆr   c                 óT   — | j                   D ]  \  }}|j                  «       sŒ|c S  y r   )rf  r9   )r   rj  r6   s      r   ri   zRadioGroup.getSelection3  s)   € ØŸ/™/ò 	*‰JˆQ�Ø�z‰z�| Eš\ð	*àr   r   )r    r!   r"   r#   r   rÑ   ri   r$   r   r   rc  rc    s   „ ñòóór   rc  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚRadioBarz¬ Bar of Radio buttons, based on Grid.

    methods:

    - RadioBar(self, screen, buttonlist) : constructor.
    - getSelection(self): return value of selected button 
    c                 ón  — g | _         d| _        t        «       | _        t        j                  | dt        |«      «       |D ]s  \  }}}| j                  j                  |||«      }| j                   j                  ||f«       | j                  |d| j                  d¬«       | j                  dz   | _        Œu y )Nr   r   ©r  )
rh   rV   rc  rN   ró   r   ÚlenrÑ   r   r  )r   Úscreenrf  rD  r6   ri  rj  s          r   r   zRadioBar.__init__B  s–   € ØˆŒ	ØˆŒ	Ü“\ˆŒ
Ü�‰�d˜Aœs :›Ô/Ø'1ò 	&Ñ#ˆU�E˜7Ø—
‘
—‘˜u e¨WÓ5ˆAØ�I‰I×Ñ˜a ˜ZÔ(Ø�M‰M˜!˜Q §	¡	¸ˆMÔ:ØŸ	™	 A™ˆD�Iñ		&r   c                 ó6   — | j                   j                  «       S r   )rN   ri   r   s    r   ri   zRadioBar.getSelectionM  s   € Ø�z‰z×&Ñ&Ó(Ð(r   N)r    r!   r"   r#   r   ri   r$   r   r   rm  rm  9  s   „ ñò	&ó)r   rm  c                   ó   — e Zd ZdZdd„Zd„ Zy)Ú	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.
    c                 ó  — g | _         i | _        d| _        t        j	                  | t        |«      d«       |D ]Ï  }t        |t        j                  dk\  rt        nt        «      r|}|j                  «       }n)t        |«      dk(  r|\  }}n|\  }}}|| j                  |<   |rt        |«      }nt        |«      }| j                   j                  ||f«       | j                  || j                  dd«       | j                  dz   | _        ŒÑ y )Nr   r   Ú3é   )r   r   r   r   )rh   rÉ   rV   ró   r   rp  Ú
isinstanceÚsysÚversionÚstrÚ
basestringÚlowerr.   r&   r   r  )	r   rq  rf  ÚcompactÚblistrD  r6   Úhotkeyrj  s	            r   r   zButtonBar.__init__\  sà   € ØˆŒ	ØˆŒØˆŒ	Ü�‰�dœC 
›O¨QÔ/Øò 	&ˆEÜ˜%¬¯©°sÒ(:¥Ä
ÔKØ�ØŸ™›‘Ü�U“˜q’Ø!&‘�™à).Ñ&�˜˜vØ',�—‘˜VÑ$áÜ! %Ó(‘ä˜5“M�Ø�I‰I×Ñ˜a ˜ZÔ(Ø�M‰M˜!˜TŸY™Y¨¨<Ô8ØŸ	™	 A™ˆD�Iñ!	&r   c                 óx   — || j                   v r| j                   |   S | j                  D ]  \  }}||k(  sŒ|c S  y r   )rÉ   rh   )r   Úresultr)   r6   s       r   ÚbuttonPressedzButtonBar.buttonPresseds  sF   € Ø�T—\‘\Ñ!Ø—<‘< Ñ'Ð'à#Ÿy™yò 	‰OˆV�UØ˜ÓØ’ð	ð r   NrF   )r    r!   r"   r#   r   rƒ  r$   r   r   rt  rt  S  s   „ ñó&ó.r   rt  c                   óZ   — e Zd ZdZd„ Z	 	 	 dd„Zdd„Zd„ Zd„ Zdd„Z	dd	„Z
d
„ Zd„ Zd„ Zy)Ú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):
    c                 ó´   — || _         || _        t        |«      | _        g | _        d| _        t        |«      }| g|d d t        j                  t        |«      Ž  y r8   )
rq  rD  rÆ   râ   Ú	childListÚform_createdrh   ró   r   Útuple)r   rq  rD  Úhelpr  s        r   r   zGridFormHelp.__init__�  sP   € ØˆŒØˆŒ
Ü˜“JˆŒ	ØˆŒØˆÔÜ�D‹zˆØ�6ˆˆRˆaˆÜ�‰”u˜T“{Ò#r   c                 ón   — | j                  |||||||||	|
«
       | j                  j                  |«       y r   )r  r‡  r   )r   rÓ   r  r  r  r  r  r  r  r	  r
  s              r   rÑ   zGridFormHelp.add™  s:   € ð 	�‰�f˜c 3¨°Ø ¨lØ˜Uô	$ð 	�‰×Ñ˜fÕ%r   Nc                 ó^   — | j                  ||«      }| j                  j                  «        |S r   )rÖ   rq  rX  )r   rø   rù   r‚  s       r   ÚrunOncezGridFormHelp.runOnce¡  s&   € Ø—‘˜!˜Q“ˆØ�‰×ÑÔØˆr   c                 ó:   — | j                   j                  |«       y r   )râ   rÌ   rÊ   s     r   rÌ   zGridFormHelp.addHotKey¦  s   € Ø�	‰	×Ñ˜GÕ$r   c                 ó:   — | j                   j                  |«       y r   )râ   rë   rÊ   s     r   rë   zGridFormHelp.setTimer©  s   € Ø�	‰	×Ñ˜7Õ#r   c                 óø   — | j                   sn| j                  dd«       | j                  D ]  }| j                  j	                  |«       Œ | j
                  j                  | | j                  ||«       d| _         y y rh  )rˆ  rö   r‡  râ   rÑ   rq  rS  rD  )r   rø   rù   Úchilds       r   ÚcreatezGridFormHelp.create¬  sd   € Ø× Ò Ø�J‰J�q˜ŒOØŸ™ò %�Ø—	‘	—‘˜eÕ$ð%à�K‰K×)Ñ)¨$°·
±
¸A¸qÔAØ !ˆDÕð !r   c                 óZ   — | j                  ||«       | j                  j                  «       S r   )r’  râ   rÖ   r÷   s      r   rÖ   zGridFormHelp.run´  s    € Ø�‰�A�qÔØ�y‰y�}‰}‹Ðr   c                 óV   — | j                  «        | j                  j                  «       S r   )r’  râ   rà   r   s    r   rà   zGridFormHelp.draw¸  s   € Ø�‰ŒØ�y‰y�~‰~ÓÐr   c                 óÚ   — | j                  «        | j                  j                  | | j                  «       | j                  j                  «       }| j                  j                  «        |S r   )r’  rq  rS  rD  râ   rÖ   rX  )r   r‚  s     r   ÚrunPopupzGridFormHelp.runPopup¼  sG   € Ø�‰ŒØ�‰×%Ñ% d¨D¯J©JÔ7Ø—‘—‘“ˆØ�‰×ÑÔØˆr   c                 ó:   — | j                   j                  |«       y r   )râ   rl   ræ   s     r   rl   zGridFormHelp.setCurrentÃ  s   € Ø�	‰	×Ñ˜bÕ!r   r  r`  )r    r!   r"   r#   r   rÑ   r�  rÌ   rë   r’  rÖ   rà   r–  rl   r$   r   r   r…  r…  }  sD   „ ñò"$ð /;Ø9:Ø12ó&óò
%ò$ó"óò òó"r   r…  c                   ó   — e Zd ZdZd„ Zy)ÚGridFormzh GridForm class (extends GridFormHelp):

    methods:

     - GridForm(self, screen, title, *args):
    c                 ó:   — | ||d f|z   }t        j                  |Ž  y r   )r…  r   )r   rq  rD  r  Úmyargss        r   r   zGridForm.__init__Í  s#   € Ø˜  tÐ,¨tÑ3ˆÜ×Ñ˜vÒ&r   Nr,   r$   r   r   r™  r™  Æ  s   „ ñó'r   r™  c                   óN   — e Zd ZdZdd„Zdd„Zd„ Zdd„Zd„ Zd„ Z	d	„ Z
dd
„Zd„ Zy)Ú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):
    Nc                 ó<   — | j                  |t        d   f||«       y )Nr   )ÚaddItemÚ	snackArgs)r   r+   rV   r9   s       r   r   zCheckboxTree.appendá  s   € Ø�‰�TœI hÑ/Ð2°D¸(ÕCr   c                 ó‚   — |€|}| j                   j                  |||«      }|| j                  |<   || j                  |<   y r   )r   ÚcheckboxtreeAddItemrS   rT   )r   r+   ÚpathrV   r9   rJ   s         r   rŸ  zCheckboxTree.addItemä  s@   € Øˆ<ØˆDØ�f‰f×(Ñ(¨¨t°XÓ>ˆØ!ˆ�‰�cÑØ!ˆ�‰�dÒr   c                 óT   — | j                   j                  «       }| j                  |   S r   )r   ÚcheckboxtreeGetCurrentrS   )r   Úcurrs     r   Ú
getCurrentzCheckboxTree.getCurrentë  s#   € Ø�v‰v×,Ñ,Ó.ˆØ�}‰}˜TÑ"Ð"r   c                 ó–   — t        j                  ||||«      | _        i | _        i | _        |r| j                  j                  |«       y y r   )r(   Úcheckboxtreer   rS   rT   ÚcheckboxtreeSetWidth)r   rs   rt   rv   Úhide_checkboxÚunselectables         r   r   zCheckboxTree.__init__ï  sB   € Ü×$Ñ$ V¨V°]ÀLÓQˆŒØˆŒØˆŒÙØ�F‰F×'Ñ'¨Õ.ð r   c                 óˆ   — g }| j                   j                  «       }|D ]   }|j                  | j                  |   «       Œ" |S r   )r   ÚcheckboxtreeGetSelectionr   rS   rf   s       r   ri   zCheckboxTree.getSelectionö  sE   € Øˆ	Ø�v‰v×.Ñ.Ó0ˆØò 	1ˆCØ×Ñ˜TŸ]™]¨3Ñ/Õ0ð	1àÐr   c                 óV   — | j                   j                  | j                  |   |«       y r   )r   ÚcheckboxtreeSetEntryrT   )r   rV   r+   s      r   ÚsetEntryzCheckboxTree.setEntryý  s   € Ø�‰×#Ñ# D§M¡M°$Ñ$7¸Õ>r   c                 óT   — | j                   j                  | j                  |   «       y r   )r   ÚcheckboxtreeSetCurrentrT   r]   s     r   rl   zCheckboxTree.setCurrent   s   € Ø�‰×%Ñ% d§m¡m°DÑ&9Õ:r   c                 óV   — | j                   j                  | j                  |   |«       y r   )r   ÚcheckboxtreeSetEntryValuerT   )r   rV   r9   s      r   ÚsetEntryValuezCheckboxTree.setEntryValue  s   € Ø�‰×(Ñ(¨¯©°tÑ)<¸hÕGr   c                 óR   — | j                   j                  | j                  |   «      S r   )r   ÚcheckboxtreeGetEntryValuerT   r]   s     r   ÚgetEntryValuezCheckboxTree.getEntryValue  s    € Ø�v‰v×/Ñ/°·±¸dÑ0CÓDÐDr   r8   )r   Nr   r   r¯   )r    r!   r"   r#   r   rŸ  r§  r   ri   r±  rl   r¶  r¹  r$   r   r   r�  r�  Ñ  s7   „ ñóDó"ò#ó/òò?ò;óHóEr   r�  é(   c
                 ó*  — |dk(  rt        |«      }t        | |«      }
t        ||«      }t        ||d¬«      }d}|D ]D  }t	        |«      t
        k(  r|\  }}n|}|}||k(  r|}n||k(  r|}|j                  ||«       |dz   }ŒF |dk7  r|j                  |«       t        | ||	dd«      }|j                  |dd«       |j                  |ddd¬«       |j                  |
dd	d¬
«       |j                  «       }|
j                  |«      |j                  «       fS )zÀ
    - ListboxChoiceWindow(screen, title, text, items, 
            buttons = ('Ok', 'Cancel'), 
            width = 40, scroll = 0, height = -1, default = None,
            help = None):
    r   r   )rt   ru   r   Né   )r   r   r   r   ©r  rw  ©r	  )rp  rt  r†   rP   Útyper‰  r   rl   r…  rÑ   r�  rƒ  rc   )rq  rD  r+   ÚitemsÚbuttonsrv   rt   rs   ri  rŠ  ÚbbÚtÚlÚcountrV   rJ   rõ   Úrcs                     r   ÚListboxChoiceWindowrÇ  	  s!  € ð 	�"Š¤ E£
�vä	�6˜7Ó	#€BÜ˜˜tÓ$€AÜ� °aÔ8€AØ€EØò ˆÜ�‹:œÒØ‰KˆT‘3àˆDØˆCà�uÒØ‰GØ˜ŠoØˆGà	�‰��sÔØ˜‘	‰ðð 	�4ŠØ	�‰�gÔä�V˜U D¨!¨QÓ/€AØ‡E�Eˆ!ˆQ�„NØ‡E�Eˆ!ˆQ�˜\€EÔ*Ø‡E�Eˆ"ˆa�˜A€EÔà	
�‰‹€Bà×Ñ˜RÓ  !§)¡)£+Ð.Ð.r   ÚOkÚCancelc                 ó  — t        | |«      }t        ||| j                  dz
  ¬«      }	t        | ||dd«      }
|
j	                  |	ddd¬«       |
j	                  |ddd¬«       |j                  |
j                  ||«      «      S )	z 
     - ButtonChoiceWindow(screen, title, text, 
               buttons = [ 'Ok', 'Cancel' ], 
               width = 40, x = None, y = None, help = None):
    é   )r‹   r   rw  r   ©r   r   r   r   r½  r¾  )rt  r†   rs   r…  rÑ   rƒ  r�  )rq  rD  r+   rÁ  rv   rø   rù   rŠ  rÂ  rÃ  rõ   s              r   ÚButtonChoiceWindowrÍ  4  s|   € ô 
�6˜7Ó	#€BÜ˜˜t°·±ÀÑ1CÔD€Aä�V˜U D¨!¨QÓ/€AØ‡E�Eˆ!ˆQ�˜\€EÔ*Ø‡E�Eˆ"ˆa�˜A€EÔØ×Ñ˜AŸI™I a¨›OÓ,Ð,r   r   é   c	                 ó  — t        | |«      }	t        ||«      }
d}|D ]  }|dz   }Œ	 t        d|«      }d}g }|D ]¤  }t        |«      t        k(  r;|\  }}t        |t        j                  dk\  rt        nt        «      rt        ||«      }nt        |«      }|j                  t        |«      d|dd¬«       |j                  |d|d¬«       |dz   }|j                  |«       Œ¦ t        | ||dd«      }|j                  |
ddd	¬
«       |j                  |ddd	¬
«       |j                  |	ddd¬«       |j!                  «       }g }d}|D ])  }|j                  ||   j#                  «       «       |dz   }Œ+ |	j%                  |«      t	        |«      fS )z•
    EntryWindow(screen, title, text, prompts, allowCancel = 1, width = 40,
        entryWidth = 20, buttons = [ 'Ok', 'Cancel' ], help = None):
    r   r   rw  rv  )r   r   r   r   )r  r  ro  r¼  rÌ  r½  r¾  )rt  r†   ró   r¿  r‰  rx  ry  rz  r{  r|  r£   r  r�   r   r…  rÑ   r�  r6   rƒ  )rq  rD  r+   ÚpromptsÚallowCancelrv   Ú
entryWidthrÁ  rŠ  rÂ  rÃ  rÅ  ÚnÚsgÚ	entryListÚerõ   r‚  ÚentryValuess                      r   ÚEntryWindowrØ  D  sœ  € ô 
�6˜7Ó	#€BÜ˜˜tÓ$€Aà€EØò ˆØ˜‘	‰ðô 
ˆa�‹€Bà€EØ€IØò ˆÜ�‹7”eÒØ‰FˆQ�Ü˜!¤C§K¡K°3Ò$6�S¼JÔGÜ˜* aÓ(‘ä�jÓ!ˆAà
�‰”E˜!“H˜a °,ÈQˆÔOØ
�‰�A�q˜%¨aˆÔ0Ø˜‘	ˆØ×Ñ˜Õðô 	�V˜U D¨!¨QÓ/€Aà‡E�Eˆ!ˆQ�˜\€EÔ*Ø‡E�Eˆ"ˆa�˜l€EÔ+Ø‡E�Eˆ"ˆa�˜A€EÔà�Y‰Y‹[€Fà€KØ€EØò ˆØ×Ñ˜9 UÑ+×1Ñ1Ó3Ô4Ø˜‘	‰ðð ×Ñ˜VÓ$¤e¨KÓ&8Ð9Ð9r   c                   óX   — e Zd ZdZ	 	 	 	 dd„Zdd„Zdd„Zdd„Zd„ Zdd„Z	d	„ Z
d
„ Zd„ Zy)ÚCListboxap  Clistbox 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
    Nc                 óœ  — || _         |d d  | _        || _        || _        |	d k7  r]t        j                  | dd«       d}| j                  |	|
|¬«      }t        |«      | _        | j                  | j                  ddd¬«       nt        j                  | dd«       d}t        ||||«      | _        | j                  | j                  d|d¬«       y )Nr   rw  )Úadjust_widthr   ro  )r  )ÚcolsÚ
col_widthsÚcol_padÚcol_text_alignró   r   ÚcolFormTextr�   r”   r  rP   rq   )r   rs   rÝ  rÞ  rt   ru   rv   rß  rà  Ú
col_labelsÚcol_label_alignrÜ  Úbox_yÚlstrs                 r   r   zCListbox.__init__ƒ  sÅ   € ð
 ˆŒ	Ø$¡Q˜-ˆŒØˆŒØ,ˆÔà˜ÒÜ�M‰M˜$  1Ô%ØˆEà×#Ñ# J°Ø=Ið $ó KˆDä˜t›ˆDŒJØ�M‰M˜$Ÿ*™* a¨°qˆMÕ9ô �M‰M˜$  1Ô%ØˆEô ˜v v¨z¸5ÓAˆŒØ�‰�d—l‘l A u¸!ˆÕ<r   c                 ód  — d}d}t        |«      }|| j                  k  �r||k  �r
||   }t        j                  |«      }| j                  |   |k  r$|r|| j                  |<   n|d | j                  |    }| j                  |   t        j                  |«      z
  }	|	dkD  rS|d k(  rt
        }
n||   }
|
t
        k(  r|d|	z  z   }|
t        k(  rd|	dz  z  |z   d|	dz   dz  z  z   }|
t        k(  rd|	z  |z   }||dz
  k7  rd| j                  z  }nd}||z   |z   }|dz   }|| j                  k  r||k  r�Œ
|S )Nr   r°   rÂ   rw  r   )	rp  rÝ  r(   ÚwstrlenrÞ  ÚLEFTÚCENTERÚRIGHTrß  )r   Úcol_textÚalignrÜ  Úir{  Úc_lenÚcstrÚcstrlenÚdeltaÚaÚpstrs               r   rá  zCListbox.colFormTextž  sW  € ØˆØˆÜ�H“ˆØ�4—9‘9‹} 1 u£9à˜A‘;ˆDÜ—n‘n TÓ*ˆGØ�‰˜qÑ! GÒ+ÙØ)0�D—O‘O AÒ&àÐ 3 §¡°Ñ!3Ð4�Dà—O‘O AÑ&¬¯©¸Ó)=Ñ=ˆEà�qŠyØ˜D’=Ü‘Aà˜a™�Aàœ’9Ø 3¨¡;Ñ/�DØœ’;Ø 5¨1¡9Ñ-°Ñ5Ø ¨¡¨a¡Ñ0ñ2�Dàœ’:Ø %™K¨4Ñ/�Dà�E˜A‘IŠ~Ø˜dŸl™lÑ*‘à�à˜‘*˜tÑ#ˆCà�A‘ˆAðC �4—9‘9Š} 1 u¤9ðF ˆ
r   c                 ó‚   — |d k(  r| j                   }| j                  ||«      }| j                  j                  ||«       y r   )rà  rá  rq   r   ©r   rë  rV   rà  r+   s        r   r   zCListbox.appendÇ  s;   € Ø˜TÒ!Ø!×0Ñ0ˆNØ×Ñ ¨.Ó9ˆØ�‰×Ñ˜D $Õ'r   c                 ó„   — |d k(  r| j                   }| j                  ||«      }| j                  j                  |||«       y r   )rà  rá  rq   rZ   )r   rë  rV   rY   rà  r+   s         r   rZ   zCListbox.insertÍ  s=   € Ø˜TÒ!Ø!×0Ñ0ˆNØ×Ñ ¨.Ó9ˆØ�‰×Ñ˜D $¨Õ/r   c                 ó:   — | j                   j                  |«       y r   )rq   r^   r]   s     r   r^   zCListbox.deleteÓ  s   € Ø�‰×Ñ˜DÕ!r   c                 ó‚   — |d k(  r| j                   }| j                  ||«      }| j                  j                  ||«       y r   )rà  rá  rq   r`   rõ  s        r   r`   zCListbox.replaceÖ  s;   € Ø˜TÒ!Ø!×0Ñ0ˆNØ×Ñ ¨.Ó9ˆØ�‰×Ñ˜T 4Õ(r   c                 ó6   — | j                   j                  «       S r   )rq   rc   r   s    r   rc   zCListbox.currentÜ  s   € Ø�|‰|×#Ñ#Ó%Ð%r   c                 ó:   — | j                   j                  |«       y r   )rq   rl   r]   s     r   rl   zCListbox.setCurrentß  s   € Ø�‰×Ñ Õ%r   c                 ó8   — | j                   j                  «        y r   )rq   ro   r   s    r   ro   zCListbox.clearâ  s   € Ø�‰×ÑÕr   )r   r   r   r   NNNr   r8   r   )r    r!   r"   r#   r   rá  r   rZ   r^   r`   rc   rl   ro   r$   r   r   rÚ  rÚ  r  sC   „ ñð  ;<Ø67Ø59Ø67ó=ó6'óR(ó0ò"ó)ò&ò&ór   rÚ  c                 ó   — d| z   S )Né   r$   )rø   s    r   ÚcustomColorsetrþ  å  s   € Ø�‰6€Mr   )r�   r�   ))rÈ  rÉ  rº  r   r   NN)cr#   Ú
__future__r   r   r   r(   Ústringry  r   r   r   r	   r
   r   r   rè  ÚDOWNré  ÚUPrê  r   r   r&   r.   r2   rH   rP   r{   r†   r�   rš   r£   ÚKEY_F1ÚKEY_F2ÚKEY_F3ÚKEY_F4ÚKEY_F5ÚKEY_F6ÚKEY_F7ÚKEY_F8ÚKEY_F9ÚKEY_F10ÚKEY_F11ÚKEY_F12ÚKEY_ESCÚ	KEY_ENTERÚKEY_SUSPENDÚKEY_BACKSPACEÚ
KEY_DELETEÚ
KEY_INSERTÚ
KEY_RESIZEÚordrÉ   rh   rÐ   rÓ  Úascii_lettersÚdigitsÚoÚcrÆ   ró   ÚCOLORSET_ROOTÚCOLORSET_BORDERÚCOLORSET_WINDOWÚCOLORSET_SHADOWÚCOLORSET_TITLEÚCOLORSET_BUTTONÚCOLORSET_ACTBUTTONÚCOLORSET_CHECKBOXÚCOLORSET_ACTCHECKBOXÚCOLORSET_ENTRYÚCOLORSET_LABELÚCOLORSET_LISTBOXÚCOLORSET_ACTLISTBOXÚCOLORSET_TEXTBOXÚCOLORSET_ACTTEXTBOXÚCOLORSET_HELPLINEÚCOLORSET_ROOTTEXTÚCOLORSET_EMPTYSCALEÚCOLORSET_FULLSCALEÚCOLORSET_DISENTRYÚCOLORSET_COMPACTBUTTONÚCOLORSET_ACTSELLISTBOXÚCOLORSET_SELLISTBOXr[  r*  rˆ   rc  rm  rt  r…  r™  r�  rÇ  rÍ  rØ  rÚ  rþ  )r  s   0r   ú<module>r2     s¬  ðñ!÷H IÑ HÛ Û Û 
ç d× dÑ dà€Ø€Ø	€Ø€Ø€à�bˆM€	÷"ñ "ô&%ˆVô %ô,�Fô ,ô-ˆvô -ô::˜ô :ô$?*ˆfô ?*ôBCˆfô Cô(>�gô >ô(ˆFô (ô$,ˆFô ,ôQˆFô Qð:ˆD�6—=‘=ð  $¨¯©ð ¸¸v¿}¹}ð Ø�6—=‘=ðØ"&¨¯©ðØ8<¸v¿}¹}ðà�6—=‘=ðà"&¨¯©ðà8<¸v¿}¹}ðð �F—N‘Nðð %*¨F¯N©Nðð �F—N‘Nð	ð %*¨F¯N©Nð	ð
 �V×%Ñ%ðð
 (1°6×3EÑ3Eðð ˜×-Ñ-ðð 08¸×9JÑ9Jðð ×'Ñ'°6×3DÑ3DÙ�s“8ò€ñ 
ˆg�l‰l‹nÓ	ò €AØ€GˆG�A‰JÒðà!'×!5Ñ!5°f·m±mÑ!CÖE˜A‰c�!‹f�QŠZÒEò �C€A€aØ€GˆA�JØ€GˆA‚Jð÷=.ñ =.÷~,ñ ,ð\:ˆf�v×+Ñ+ð :Ø˜×/Ñ/ð:à˜×/Ñ/ð:ð ˜×/Ñ/ð:ð ˜×-Ñ-ð	:ð
 ˜×/Ñ/ð:ð ˜F×5Ñ5ð:ð ˜6×3Ñ3ð:ð ˜f×9Ñ9ð:ð ˜×-Ñ-ð:ð ˜×-Ñ-ð:ð ˜&×1Ñ1ð:ð ˜V×7Ñ7ð:ð ˜&×1Ñ1ð:ð ˜V×7Ñ7ð:ð ˜6×3Ñ3ð:ð  ˜6×3Ñ3ð!:ð" $×7Ñ7Ø"×5Ñ5Ø!×3Ñ3Ø &× =Ñ =Ø &× =Ñ =Ø#×7Ñ7ò-:€	÷0S4ñ S4ój8ô�ô ô:)ˆtô )ô4'�ô 'ôTG"�4ô G"ôR	'ˆ|ô 	'ô6E�6ô 6Eðr 'Ø;?Øó)/ðX   Ð+Ø˜t¨°dó-ð  =>ÀrØ T¨8Ð#5¸dó,:ô\qˆtô qófùò] Fs   Ç.O