1b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# Tix.py -- Tix widget wrappers. 2b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# 30c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis# For Tix, see http://tix.sourceforge.net 4b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# 522710823fb554a796dc96c44885d7a9389426824Moshe Zadka# - Sudhir Shenoy (sshenoy@gol.com), Dec. 1995. 6b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# based on an idea of Jean-Marc Lugrin (lugrin@ms.com) 7b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# 8b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# NOTE: In order to minimize changes to Tkinter.py, some of the code here 922710823fb554a796dc96c44885d7a9389426824Moshe Zadka# (TixWidget.__init__) has been taken from Tkinter (Widget.__init__) 1022710823fb554a796dc96c44885d7a9389426824Moshe Zadka# and will break if there are major changes in Tkinter. 11b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# 12b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# The Tix widgets are represented by a class hierarchy in python with proper 13b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# inheritance of base classes. 14b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# 15b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# As a result after creating a 'w = StdButtonBox', I can write 1622710823fb554a796dc96c44885d7a9389426824Moshe Zadka# w.ok['text'] = 'Who Cares' 1722710823fb554a796dc96c44885d7a9389426824Moshe Zadka# or w.ok['bg'] = w['bg'] 1822710823fb554a796dc96c44885d7a9389426824Moshe Zadka# or even w.ok.invoke() 19b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# etc. 20b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# 21b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# Compare the demo tixwidgets.py to the original Tcl program and you will 22b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# appreciate the advantages. 23b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# 24b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 2522ba01ea550a0a6a0bb1e2a6f2758acd46797d2bTerry Jan Reedyimport os 2622ba01ea550a0a6a0bb1e2a6f2758acd46797d2bTerry Jan Reedyimport tkinter 2714fc4270da5db43574d46d055a5f794ed33b271fGeorg Brandlfrom tkinter import * 2822ba01ea550a0a6a0bb1e2a6f2758acd46797d2bTerry Jan Reedyfrom tkinter import _cnfmerge 29b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 30b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisimport _tkinter # If this fails your Python may not be configured for Tk 31b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 32b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# Some more constants (for consistency with Tkinter) 33b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisWINDOW = 'window' 34b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisTEXT = 'text' 35b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisSTATUS = 'status' 36b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisIMMEDIATE = 'immediate' 37b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisIMAGE = 'image' 38b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisIMAGETEXT = 'imagetext' 39b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisBALLOON = 'balloon' 40b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisAUTO = 'auto' 41b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. LöwisACROSSTOP = 'acrosstop' 42b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 43bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo# A few useful constants for the Grid widget 44bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloASCII = 'ascii' 45bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloCELL = 'cell' 46bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloCOLUMN = 'column' 47bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloDECREASING = 'decreasing' 48bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloINCREASING = 'increasing' 49bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloINTEGER = 'integer' 50bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloMAIN = 'main' 51bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloMAX = 'max' 52bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloREAL = 'real' 53bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloROW = 'row' 54bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloS_REGION = 's-region' 55bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloX_REGION = 'x-region' 56bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme PoloY_REGION = 'y-region' 57bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 58723293cb49f479a41dc893d72c2d6502587d52cbFred Drake# Some constants used by Tkinter dooneevent() 59723293cb49f479a41dc893d72c2d6502587d52cbFred DrakeTCL_DONT_WAIT = 1 << 1 60723293cb49f479a41dc893d72c2d6502587d52cbFred DrakeTCL_WINDOW_EVENTS = 1 << 2 61723293cb49f479a41dc893d72c2d6502587d52cbFred DrakeTCL_FILE_EVENTS = 1 << 3 62723293cb49f479a41dc893d72c2d6502587d52cbFred DrakeTCL_TIMER_EVENTS = 1 << 4 63723293cb49f479a41dc893d72c2d6502587d52cbFred DrakeTCL_IDLE_EVENTS = 1 << 5 64723293cb49f479a41dc893d72c2d6502587d52cbFred DrakeTCL_ALL_EVENTS = 0 65723293cb49f479a41dc893d72c2d6502587d52cbFred Drake 66b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# BEWARE - this is implemented by copying some code from the Widget class 67b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# in Tkinter (to override Widget initialization) and is therefore 68b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# liable to break. 69b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 70b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# Could probably add this to Tkinter.Misc 71b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass tixCommand: 72723293cb49f479a41dc893d72c2d6502587d52cbFred Drake """The tix commands provide access to miscellaneous elements 73b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis of Tix's internal state and the Tix application context. 74723293cb49f479a41dc893d72c2d6502587d52cbFred Drake Most of the information manipulated by these commands pertains 75723293cb49f479a41dc893d72c2d6502587d52cbFred Drake to the application as a whole, or to a screen or 76723293cb49f479a41dc893d72c2d6502587d52cbFred Drake display, rather than to a particular window. 77b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 78b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis This is a mixin class, assumed to be mixed to Tkinter.Tk 79b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis that supports the self.tk.call method. 80b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 81723293cb49f479a41dc893d72c2d6502587d52cbFred Drake 82b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_addbitmapdir(self, directory): 83723293cb49f479a41dc893d72c2d6502587d52cbFred Drake """Tix maintains a list of directories under which 84b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis the tix_getimage and tix_getbitmap commands will 85723293cb49f479a41dc893d72c2d6502587d52cbFred Drake search for image files. The standard bitmap directory 86723293cb49f479a41dc893d72c2d6502587d52cbFred Drake is $TIX_LIBRARY/bitmaps. The addbitmapdir command 87723293cb49f479a41dc893d72c2d6502587d52cbFred Drake adds directory into this list. By using this 88b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis command, the image files of an applications can 89b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis also be located using the tix_getimage or tix_getbitmap 90b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis command. 91b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 92b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'addbitmapdir', directory) 93b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 94b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_cget(self, option): 95b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """Returns the current value of the configuration 96b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis option given by option. Option may be any of the 97b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis options described in the CONFIGURATION OPTIONS section. 98b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 99b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'cget', option) 100b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 101b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_configure(self, cnf=None, **kw): 102723293cb49f479a41dc893d72c2d6502587d52cbFred Drake """Query or modify the configuration options of the Tix application 103723293cb49f479a41dc893d72c2d6502587d52cbFred Drake context. If no option is specified, returns a dictionary all of the 104723293cb49f479a41dc893d72c2d6502587d52cbFred Drake available options. If option is specified with no value, then the 105723293cb49f479a41dc893d72c2d6502587d52cbFred Drake command returns a list describing the one named option (this list 106723293cb49f479a41dc893d72c2d6502587d52cbFred Drake will be identical to the corresponding sublist of the value 107723293cb49f479a41dc893d72c2d6502587d52cbFred Drake returned if no option is specified). If one or more option-value 108723293cb49f479a41dc893d72c2d6502587d52cbFred Drake pairs are specified, then the command modifies the given option(s) 109723293cb49f479a41dc893d72c2d6502587d52cbFred Drake to have the given value(s); in this case the command returns an 110723293cb49f479a41dc893d72c2d6502587d52cbFred Drake empty string. Option may be any of the configuration options. 111b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 112723293cb49f479a41dc893d72c2d6502587d52cbFred Drake # Copied from Tkinter.py 113723293cb49f479a41dc893d72c2d6502587d52cbFred Drake if kw: 114723293cb49f479a41dc893d72c2d6502587d52cbFred Drake cnf = _cnfmerge((cnf, kw)) 115723293cb49f479a41dc893d72c2d6502587d52cbFred Drake elif cnf: 116723293cb49f479a41dc893d72c2d6502587d52cbFred Drake cnf = _cnfmerge(cnf) 117723293cb49f479a41dc893d72c2d6502587d52cbFred Drake if cnf is None: 118848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure('tix', 'configure') 119975fce37883899a55bbcdaa6300c5c6ffe9d3db2Serhiy Storchaka if isinstance(cnf, str): 120848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure1('tix', 'configure', '-'+cnf) 121723293cb49f479a41dc893d72c2d6502587d52cbFred Drake return self.tk.call(('tix', 'configure') + self._options(cnf)) 122b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 123b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_filedialog(self, dlgclass=None): 124723293cb49f479a41dc893d72c2d6502587d52cbFred Drake """Returns the file selection dialog that may be shared among 125723293cb49f479a41dc893d72c2d6502587d52cbFred Drake different calls from this application. This command will create a 126723293cb49f479a41dc893d72c2d6502587d52cbFred Drake file selection dialog widget when it is called the first time. This 127723293cb49f479a41dc893d72c2d6502587d52cbFred Drake dialog will be returned by all subsequent calls to tix_filedialog. 128723293cb49f479a41dc893d72c2d6502587d52cbFred Drake An optional dlgclass parameter can be passed to specified what type 129723293cb49f479a41dc893d72c2d6502587d52cbFred Drake of file selection dialog widget is desired. Possible options are 130723293cb49f479a41dc893d72c2d6502587d52cbFred Drake tix FileSelectDialog or tixExFileSelectDialog. 131b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 132b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis if dlgclass is not None: 133b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'filedialog', dlgclass) 134b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis else: 135b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'filedialog') 136b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 137b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_getbitmap(self, name): 138723293cb49f479a41dc893d72c2d6502587d52cbFred Drake """Locates a bitmap file of the name name.xpm or name in one of the 139723293cb49f479a41dc893d72c2d6502587d52cbFred Drake bitmap directories (see the tix_addbitmapdir command above). By 140723293cb49f479a41dc893d72c2d6502587d52cbFred Drake using tix_getbitmap, you can avoid hard coding the pathnames of the 141723293cb49f479a41dc893d72c2d6502587d52cbFred Drake bitmap files in your application. When successful, it returns the 142723293cb49f479a41dc893d72c2d6502587d52cbFred Drake complete pathname of the bitmap file, prefixed with the character 143723293cb49f479a41dc893d72c2d6502587d52cbFred Drake '@'. The returned value can be used to configure the -bitmap 144723293cb49f479a41dc893d72c2d6502587d52cbFred Drake option of the TK and Tix widgets. 145b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 146b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'getbitmap', name) 147b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 148b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_getimage(self, name): 149723293cb49f479a41dc893d72c2d6502587d52cbFred Drake """Locates an image file of the name name.xpm, name.xbm or name.ppm 150723293cb49f479a41dc893d72c2d6502587d52cbFred Drake in one of the bitmap directories (see the addbitmapdir command 151723293cb49f479a41dc893d72c2d6502587d52cbFred Drake above). If more than one file with the same name (but different 152723293cb49f479a41dc893d72c2d6502587d52cbFred Drake extensions) exist, then the image type is chosen according to the 153723293cb49f479a41dc893d72c2d6502587d52cbFred Drake depth of the X display: xbm images are chosen on monochrome 154723293cb49f479a41dc893d72c2d6502587d52cbFred Drake displays and color images are chosen on color displays. By using 15542da663e6fe7ecbb89b17d596c76812a91bb99a4Ezio Melotti tix_ getimage, you can avoid hard coding the pathnames of the 156723293cb49f479a41dc893d72c2d6502587d52cbFred Drake image files in your application. When successful, this command 157723293cb49f479a41dc893d72c2d6502587d52cbFred Drake returns the name of the newly created image, which can be used to 158723293cb49f479a41dc893d72c2d6502587d52cbFred Drake configure the -image option of the Tk and Tix widgets. 159b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 160b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'getimage', name) 161b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 162b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_option_get(self, name): 16313925008dc11f2a235627dc8c0440c0ce99171d9Ezio Melotti """Gets the options maintained by the Tix 164723293cb49f479a41dc893d72c2d6502587d52cbFred Drake scheme mechanism. Available options include: 165b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 166b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis active_bg active_fg bg 167b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis bold_font dark1_bg dark1_fg 168b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis dark2_bg dark2_fg disabled_fg 1690c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis fg fixed_font font 170b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis inactive_bg inactive_fg input1_bg 171b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis input2_bg italic_font light1_bg 172b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis light1_fg light2_bg light2_fg 173b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis menu_font output1_bg output2_bg 174b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis select_bg select_fg selector 175b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 176b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis # could use self.tk.globalgetvar('tixOption', name) 177b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'option', 'get', name) 178b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 179b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def tix_resetoptions(self, newScheme, newFontSet, newScmPrio=None): 180723293cb49f479a41dc893d72c2d6502587d52cbFred Drake """Resets the scheme and fontset of the Tix application to 181723293cb49f479a41dc893d72c2d6502587d52cbFred Drake newScheme and newFontSet, respectively. This affects only those 182723293cb49f479a41dc893d72c2d6502587d52cbFred Drake widgets created after this call. Therefore, it is best to call the 183723293cb49f479a41dc893d72c2d6502587d52cbFred Drake resetoptions command before the creation of any widgets in a Tix 184723293cb49f479a41dc893d72c2d6502587d52cbFred Drake application. 185723293cb49f479a41dc893d72c2d6502587d52cbFred Drake 186723293cb49f479a41dc893d72c2d6502587d52cbFred Drake The optional parameter newScmPrio can be given to reset the 187723293cb49f479a41dc893d72c2d6502587d52cbFred Drake priority level of the Tk options set by the Tix schemes. 188723293cb49f479a41dc893d72c2d6502587d52cbFred Drake 189723293cb49f479a41dc893d72c2d6502587d52cbFred Drake Because of the way Tk handles the X option database, after Tix has 190723293cb49f479a41dc893d72c2d6502587d52cbFred Drake been has imported and inited, it is not possible to reset the color 191723293cb49f479a41dc893d72c2d6502587d52cbFred Drake schemes and font sets using the tix config command. Instead, the 192723293cb49f479a41dc893d72c2d6502587d52cbFred Drake tix_resetoptions command must be used. 193b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 194b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis if newScmPrio is not None: 195b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'resetoptions', newScheme, newFontSet, newScmPrio) 196b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis else: 197b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call('tix', 'resetoptions', newScheme, newFontSet) 198b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 19914fc4270da5db43574d46d055a5f794ed33b271fGeorg Brandlclass Tk(tkinter.Tk, tixCommand): 200b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """Toplevel widget of Tix which represents mostly the main window 201b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis of an application. It has an associated Tcl interpreter.""" 202b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, screenName=None, baseName=None, className='Tix'): 20314fc4270da5db43574d46d055a5f794ed33b271fGeorg Brandl tkinter.Tk.__init__(self, screenName, baseName, className) 20422710823fb554a796dc96c44885d7a9389426824Moshe Zadka tixlib = os.environ.get('TIX_LIBRARY') 205b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.tk.eval('global auto_path; lappend auto_path [file dir [info nameof]]') 20622710823fb554a796dc96c44885d7a9389426824Moshe Zadka if tixlib is not None: 20722710823fb554a796dc96c44885d7a9389426824Moshe Zadka self.tk.eval('global auto_path; lappend auto_path {%s}' % tixlib) 20822710823fb554a796dc96c44885d7a9389426824Moshe Zadka self.tk.eval('global tcl_pkgPath; lappend tcl_pkgPath {%s}' % tixlib) 209b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis # Load Tix - this should work dynamically or statically 210d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz # If it's static, tcl/tix8.1/pkgIndex.tcl should have 2110c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # 'load {} Tix' 212d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz # If it's dynamic under Unix, tcl/tix8.1/pkgIndex.tcl should have 2130c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # 'load libtix8.1.8.3.so Tix' 21422710823fb554a796dc96c44885d7a9389426824Moshe Zadka self.tk.eval('package require Tix') 215b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 216d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz def destroy(self): 2176a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3dSerhiy Storchaka # For safety, remove the delete_window binding before destroy 218d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz self.protocol("WM_DELETE_WINDOW", "") 21914fc4270da5db43574d46d055a5f794ed33b271fGeorg Brandl tkinter.Tk.destroy(self) 220b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 221b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# The Tix 'tixForm' geometry manager 222b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass Form: 223b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """The Tix Form geometry manager 224b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 225b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis Widgets can be arranged by specifying attachments to other widgets. 226b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis See Tix documentation for complete details""" 227b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 228b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def config(self, cnf={}, **kw): 229ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call('tixForm', self._w, *self._options(cnf, kw)) 230b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 231b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis form = config 232b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 233b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __setitem__(self, key, value): 23449fa2bdaa124e99c62ea901c8151eaa064f79c6dGuido van Rossum Form.form(self, {key: value}) 235b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 236b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def check(self): 237b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis return self.tk.call('tixForm', 'check', self._w) 238b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 239b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def forget(self): 240b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis self.tk.call('tixForm', 'forget', self._w) 241b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 242b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def grid(self, xsize=0, ysize=0): 243b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis if (not xsize) and (not ysize): 244b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis x = self.tk.call('tixForm', 'grid', self._w) 245b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis y = self.tk.splitlist(x) 246b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis z = () 247b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis for x in y: 248b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis z = z + (self.tk.getint(x),) 249b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis return z 250468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis return self.tk.call('tixForm', 'grid', self._w, xsize, ysize) 251b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 252b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info(self, option=None): 253b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis if not option: 254b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis return self.tk.call('tixForm', 'info', self._w) 255b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis if option[0] != '-': 256b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis option = '-' + option 257b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis return self.tk.call('tixForm', 'info', self._w, option) 258b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 259b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def slaves(self): 260022f049fededad8a2e8e902effd42eca19fbf2b1Alexander Belopolsky return [self._nametowidget(x) for x in 261022f049fededad8a2e8e902effd42eca19fbf2b1Alexander Belopolsky self.tk.splitlist( 262b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis self.tk.call( 263022f049fededad8a2e8e902effd42eca19fbf2b1Alexander Belopolsky 'tixForm', 'slaves', self._w))] 264b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 265b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 2660c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 26714fc4270da5db43574d46d055a5f794ed33b271fGeorg Brandltkinter.Widget.__bases__ = tkinter.Widget.__bases__ + (Form,) 268b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 26914fc4270da5db43574d46d055a5f794ed33b271fGeorg Brandlclass TixWidget(tkinter.Widget): 270b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """A TixWidget class is used to package all (or most) Tix widgets. 271b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 272b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis Widget initialization is extended in two ways: 273b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1) It is possible to give a list of options which must be part of 27422710823fb554a796dc96c44885d7a9389426824Moshe Zadka the creation command (so called Tix 'static' options). These cannot be 27522710823fb554a796dc96c44885d7a9389426824Moshe Zadka given as a 'config' command later. 27622710823fb554a796dc96c44885d7a9389426824Moshe Zadka 2) It is possible to give the name of an existing TK widget. These are 27722710823fb554a796dc96c44885d7a9389426824Moshe Zadka child widgets created automatically by a Tix mega-widget. The Tk call 27822710823fb554a796dc96c44885d7a9389426824Moshe Zadka to create these widgets is therefore bypassed in TixWidget.__init__ 279b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 280b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis Both options are for use by subclasses only. 281b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """ 282b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self, master=None, widgetName=None, 28322710823fb554a796dc96c44885d7a9389426824Moshe Zadka static_options=None, cnf={}, kw={}): 2840c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Merge keywords and dictionary arguments 2850c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if kw: 28622710823fb554a796dc96c44885d7a9389426824Moshe Zadka cnf = _cnfmerge((cnf, kw)) 2870c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis else: 2880c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis cnf = _cnfmerge(cnf) 2890c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 2900c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Move static options into extra. static_options must be 2910c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # a list of keywords (or None). 2920c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis extra=() 293f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 294f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz # 'options' is always a static option 2950c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if static_options: 296f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz static_options.append('options') 297f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz else: 298f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz static_options = ['options'] 299ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger 30021027e608a2b1b008231105d6eaf0a04078d395fHirokazu Yamamoto for k,v in list(cnf.items()): 301f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz if k in static_options: 302f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz extra = extra + ('-' + k, v) 303f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz del cnf[k] 3040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 3050c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.widgetName = widgetName 3060c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis Widget._setup(self, master, cnf) 3070c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 3080c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # If widgetName is None, this is a dummy creation call where the 3090c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # corresponding Tk widget has already been created by Tix 3100c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if widgetName: 311ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(widgetName, self._w, *extra) 3120c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 3130c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Non-static options - to be done via a 'config' command 3140c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if cnf: 3150c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis Widget.config(self, cnf) 3160c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 3170c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Dictionary to hold subwidget names for easier access. We can't 3180c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # use the children list because the public Tix names may not be the 3190c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # same as the pathname component 3200c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list = {} 321b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 322b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis # We set up an attribute access function so that it is possible to 323b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis # do w.ok['text'] = 'Hello' rather than w.subwidget('ok')['text'] = 'Hello' 324b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis # when w is a StdButtonBox. 325b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis # We can even do w.ok.invoke() because w.ok is subclassed from the 326b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis # Button class if you go through the proper constructors 327b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __getattr__(self, name): 328e014a13f03abc0111591565fc0b669dd1cff0958Guido van Rossum if name in self.subwidget_list: 3290c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.subwidget_list[name] 330ce36ad8a467d914eb5c91f33835b9eaea18ee93bCollin Winter raise AttributeError(name) 331b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 332b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def set_silent(self, value): 3330c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Set a variable without calling its action routine""" 3340c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call('tixSetSilent', self._w, value) 335b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 336b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def subwidget(self, name): 3370c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Return the named subwidget (which must have been created by 3380c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis the sub-class).""" 3390c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis n = self._subwidget_name(name) 3400c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if not n: 341ce36ad8a467d914eb5c91f33835b9eaea18ee93bCollin Winter raise TclError("Subwidget " + name + " not child of " + self._name) 3420c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Remove header of name and leading dot 3430c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis n = n[len(self._w)+1:] 3440c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self._nametowidget(n) 345b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 346b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def subwidgets_all(self): 3470c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Return all subwidgets.""" 3480c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis names = self._subwidget_names() 3490c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if not names: 3500c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return [] 3510c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis retlist = [] 3520c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis for name in names: 3530c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis name = name[len(self._w)+1:] 3540c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis try: 3550c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis retlist.append(self._nametowidget(name)) 3560c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis except: 3570c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # some of the widgets are unknown e.g. border in LabelFrame 3580c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis pass 3590c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return retlist 360b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 361b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def _subwidget_name(self,name): 3620c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Get a subwidget name (returns a String, not a Widget !)""" 3630c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis try: 3640c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'subwidget', name) 3650c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis except TclError: 3660c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return None 367b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 368b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def _subwidget_names(self): 3690c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Return the name of all subwidgets.""" 3700c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis try: 3710c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis x = self.tk.call(self._w, 'subwidgets', '-all') 372848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self.tk.splitlist(x) 3730c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis except TclError: 3740c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return None 375b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 376b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def config_all(self, option, value): 3770c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Set configuration options for all subwidgets (and self).""" 3780c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if option == '': 3790c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return 380975fce37883899a55bbcdaa6300c5c6ffe9d3db2Serhiy Storchaka elif not isinstance(option, str): 38170a6b49821a3226f55e9716f32d802d06640cb89Walter Dörwald option = repr(option) 382975fce37883899a55bbcdaa6300c5c6ffe9d3db2Serhiy Storchaka if not isinstance(value, str): 38370a6b49821a3226f55e9716f32d802d06640cb89Walter Dörwald value = repr(value) 3840c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis names = self._subwidget_names() 3850c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis for name in names: 3860c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(name, 'configure', '-' + option, value) 387731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz # These are missing from Tkinter 388731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz def image_create(self, imgtype, cnf={}, master=None, **kw): 389731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz if not master: 39014fc4270da5db43574d46d055a5f794ed33b271fGeorg Brandl master = tkinter._default_root 391731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz if not master: 392ce36ad8a467d914eb5c91f33835b9eaea18ee93bCollin Winter raise RuntimeError('Too early to create image') 393731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz if kw and cnf: cnf = _cnfmerge((cnf, kw)) 394731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz elif kw: cnf = kw 395731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz options = () 396731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz for k, v in cnf.items(): 3975d1155c08edf7f53eca804b2b6538636c2dfe711Florent Xicluna if callable(v): 398731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz v = self._register(v) 399731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz options = options + ('-'+k, v) 400731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz return master.tk.call(('image', 'create', imgtype,) + options) 401731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz def image_delete(self, imgname): 402731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz try: 403731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz self.tk.call('image', 'delete', imgname) 404731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz except TclError: 405731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz # May happen if the root was destroyed 406731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz pass 407b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 408b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# Subwidgets are child widgets created automatically by mega-widgets. 409b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# In python, we have to create these subwidgets manually to mirror their 410b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# existence in Tk/Tix. 411b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass TixSubWidget(TixWidget): 412b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """Subwidget class. 413b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 414b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis This is used to mirror child widgets automatically created 415b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis by Tix/Tk as part of a mega-widget in Python (which is not informed 416b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis of this)""" 417b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 418b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, 41922710823fb554a796dc96c44885d7a9389426824Moshe Zadka destroy_physically=1, check_intermediate=1): 4200c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if check_intermediate: 4210c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis path = master._subwidget_name(name) 4220c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis try: 4230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis path = path[len(master._w)+1:] 424ebb41907098acab04f0ed2165dca63c2b2264cedNeal Norwitz plist = path.split('.') 4250c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis except: 4260c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis plist = [] 4270c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 42889f507fe8c497b3f70fdcecce8bc240f9af2bbe2Thomas Wouters if not check_intermediate: 4290c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # immediate descendant 4300c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, None, None, {'name' : name}) 4310c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis else: 4320c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Ensure that the intermediate widgets exist 4330c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis parent = master 4340c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis for i in range(len(plist) - 1): 435ebb41907098acab04f0ed2165dca63c2b2264cedNeal Norwitz n = '.'.join(plist[:i+1]) 4360c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis try: 4370c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis w = master._nametowidget(n) 4380c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis parent = w 4390c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis except KeyError: 4400c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Create the intermediate widget 4410c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis parent = TixSubWidget(parent, plist[i], 442f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz destroy_physically=0, 443f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz check_intermediate=0) 44489f507fe8c497b3f70fdcecce8bc240f9af2bbe2Thomas Wouters # The Tk widget name is in plist, not in name 44589f507fe8c497b3f70fdcecce8bc240f9af2bbe2Thomas Wouters if plist: 44689f507fe8c497b3f70fdcecce8bc240f9af2bbe2Thomas Wouters name = plist[-1] 4470c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, parent, None, None, {'name' : name}) 4480c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.destroy_physically = destroy_physically 449b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 450b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def destroy(self): 4510c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # For some widgets e.g., a NoteBook, when we call destructors, 4520c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # we must be careful not to destroy the frame widget since this 4530c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # also destroys the parent NoteBook thus leading to an exception 4540c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # in Tkinter when it finally calls Tcl to destroy the NoteBook 45521027e608a2b1b008231105d6eaf0a04078d395fHirokazu Yamamoto for c in list(self.children.values()): c.destroy() 456e014a13f03abc0111591565fc0b669dd1cff0958Guido van Rossum if self._name in self.master.children: 4570c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis del self.master.children[self._name] 458e014a13f03abc0111591565fc0b669dd1cff0958Guido van Rossum if self._name in self.master.subwidget_list: 4590c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis del self.master.subwidget_list[self._name] 4600c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if self.destroy_physically: 4610c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # This is bypassed only for a few widgets 4620c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call('destroy', self._w) 463b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 464b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 465b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# Useful class to create a display style - later shared by many items. 466b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# Contributed by Steffen Kremser 467b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass DisplayStyle: 468b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """DisplayStyle - handle configuration options shared by 469b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis (multiple) Display Items""" 470b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 4711aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka def __init__(self, itemtype, cnf={}, *, master=None, **kw): 4721aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka if not master: 4731aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka if 'refwindow' in kw: 4741aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka master = kw['refwindow'] 4751aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka elif 'refwindow' in cnf: 4761aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka master = cnf['refwindow'] 4771aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka else: 4781aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka master = tkinter._default_root 4791aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka if not master: 4801aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka raise RuntimeError("Too early to create display style: " 4811aca3899fb6d30724c9dba14b6503fbe6dc8f5dcSerhiy Storchaka "no root window") 48222710823fb554a796dc96c44885d7a9389426824Moshe Zadka self.tk = master.tk 483ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.stylename = self.tk.call('tixDisplayStyle', itemtype, 484ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger *self._options(cnf,kw) ) 485b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 486b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __str__(self): 4870c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.stylename 4880c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 48973e5a5b65d66f4fba9c4f626bcd6400f4a7215e6Thomas Wouters def _options(self, cnf, kw): 4900c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if kw and cnf: 4910c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis cnf = _cnfmerge((cnf, kw)) 4920c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis elif kw: 4930c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis cnf = kw 4940c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis opts = () 4950c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis for k, v in cnf.items(): 4960c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis opts = opts + ('-'+k, v) 4970c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return opts 4980c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 499b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete(self): 5000c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self.stylename, 'delete') 5010c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 502b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __setitem__(self,key,value): 5030c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self.stylename, 'configure', '-%s'%key, value) 5040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 505b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def config(self, cnf={}, **kw): 506848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure( 507848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka self.stylename, 'configure', *self._options(cnf,kw)) 5080c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 509b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __getitem__(self,key): 5100c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self.stylename, 'cget', '-%s'%key) 511b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 512b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 513b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis###################################################### 514b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis### The Tix Widget classes - in alphabetical order ### 515b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis###################################################### 516b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 517b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass Balloon(TixWidget): 518b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """Balloon help widget. 519b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 52022710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 52122710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 522723293cb49f479a41dc893d72c2d6502587d52cbFred Drake label Label 523723293cb49f479a41dc893d72c2d6502587d52cbFred Drake message Message""" 524b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 525468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixShell 526b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master=None, cnf={}, **kw): 527652e1917c6f2bcdccb784d9d37950c381948a77cMartin v. Löwis # static seem to be -installcolormap -initwait -statusbar -cursor 5280c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis static = ['options', 'installcolormap', 'initwait', 'statusbar', 5290c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 'cursor'] 5300c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixBalloon', static, cnf, kw) 5310c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['label'] = _dummyLabel(self, 'label', 5320c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis destroy_physically=0) 5330c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['message'] = _dummyLabel(self, 'message', 5340c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis destroy_physically=0) 535b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 536b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def bind_widget(self, widget, cnf={}, **kw): 5370c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Bind balloon widget to another. 5380c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis One balloon widget may be bound to several widgets at the same time""" 539ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'bind', widget._w, *self._options(cnf, kw)) 540b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 541b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def unbind_widget(self, widget): 5420c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'unbind', widget._w) 543b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 544b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ButtonBox(TixWidget): 545b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ButtonBox - A container for pushbuttons. 546b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis Subwidgets are the buttons added with the add method. 547b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 548b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master=None, cnf={}, **kw): 5490c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixButtonBox', 5500c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis ['orientation', 'options'], cnf, kw) 551b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 552b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add(self, name, cnf={}, **kw): 5530c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis """Add a button with given name to box.""" 554b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 555ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger btn = self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) 5560c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list[name] = _dummyButton(self, name) 5570c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return btn 558b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 559b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def invoke(self, name): 560e014a13f03abc0111591565fc0b669dd1cff0958Guido van Rossum if name in self.subwidget_list: 5610c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'invoke', name) 562b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 563b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ComboBox(TixWidget): 564b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ComboBox - an Entry field with a dropdown menu. The user can select a 56513925008dc11f2a235627dc8c0440c0ce99171d9Ezio Melotti choice by either typing in the entry subwidget or selecting from the 566b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis listbox subwidget. 567b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 56822710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 56922710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 57022710823fb554a796dc96c44885d7a9389426824Moshe Zadka entry Entry 57122710823fb554a796dc96c44885d7a9389426824Moshe Zadka arrow Button 572b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis slistbox ScrolledListBox 5730c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis tick Button 574b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis cross Button : present if created with the fancy option""" 575b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 576468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixLabelWidget 577b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self, master=None, cnf={}, **kw): 5780c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixComboBox', 5790c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis ['editable', 'dropdown', 'fancy', 'options'], 5800c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis cnf, kw) 5810c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['label'] = _dummyLabel(self, 'label') 5820c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['entry'] = _dummyEntry(self, 'entry') 5830c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') 5840c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, 5850c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 'slistbox') 5860c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis try: 5870c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['tick'] = _dummyButton(self, 'tick') 5880c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['cross'] = _dummyButton(self, 'cross') 5890c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis except TypeError: 5900c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # unavailable when -fancy not specified 5910c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis pass 592b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 593731a986dfa321252e0c91d5dbf49670bd151382cNeal Norwitz # align 594ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger 595b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add_history(self, str): 5960c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'addhistory', str) 597b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 598b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def append_history(self, str): 5990c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'appendhistory', str) 600b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 601b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def insert(self, index, str): 6020c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'insert', index, str) 603b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 604b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def pick(self, index): 6050c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'pick', index) 606b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 607b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass Control(TixWidget): 608b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """Control - An entry field with value change arrows. The user can 609b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis adjust the value by pressing the two arrow buttons or by entering 610b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis the value directly into the entry. The new value will be checked 611b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis against the user-defined upper and lower limits. 612b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 61322710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 61422710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 61522710823fb554a796dc96c44885d7a9389426824Moshe Zadka incr Button 61622710823fb554a796dc96c44885d7a9389426824Moshe Zadka decr Button 61722710823fb554a796dc96c44885d7a9389426824Moshe Zadka entry Entry 61822710823fb554a796dc96c44885d7a9389426824Moshe Zadka label Label""" 619b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 620468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixLabelWidget 621b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self, master=None, cnf={}, **kw): 6220c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixControl', ['options'], cnf, kw) 6230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['incr'] = _dummyButton(self, 'incr') 6240c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['decr'] = _dummyButton(self, 'decr') 6250c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['label'] = _dummyLabel(self, 'label') 6260c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['entry'] = _dummyEntry(self, 'entry') 627b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 628b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def decrement(self): 6290c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'decr') 630b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 631b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def increment(self): 6320c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'incr') 633b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 634b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def invoke(self): 6350c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'invoke') 636b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 637b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def update(self): 6380c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'update') 639b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 640b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass DirList(TixWidget): 641b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """DirList - displays a list view of a directory, its previous 642b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis directories and its sub-directories. The user can choose one of 643b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis the directories displayed in the list or change to another directory. 644b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 64522710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 64622710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 64722710823fb554a796dc96c44885d7a9389426824Moshe Zadka hlist HList 64822710823fb554a796dc96c44885d7a9389426824Moshe Zadka hsb Scrollbar 64922710823fb554a796dc96c44885d7a9389426824Moshe Zadka vsb Scrollbar""" 650b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 651468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledHList 652b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 6530c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixDirList', ['options'], cnf, kw) 6540c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 6550c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 6560c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 657b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 658b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def chdir(self, dir): 6590c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'chdir', dir) 660b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 661b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass DirTree(TixWidget): 662b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """DirTree - Directory Listing in a hierarchical view. 663b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis Displays a tree view of a directory, its previous directories and its 664b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis sub-directories. The user can choose one of the directories displayed 665b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis in the list or change to another directory. 666b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 66722710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 66822710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 669f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz hlist HList 670f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz hsb Scrollbar 671f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz vsb Scrollbar""" 672b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 673468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledHList 674b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 6750c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixDirTree', ['options'], cnf, kw) 6760c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 6770c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 6780c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 679b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 680b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def chdir(self, dir): 6810c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'chdir', dir) 682b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 683b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass DirSelectBox(TixWidget): 684b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """DirSelectBox - Motif style file select box. 685b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis It is generally used for 686b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis the user to choose a file. FileSelectBox stores the files mostly 687b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis recently selected into a ComboBox widget so that they can be quickly 688b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis selected again. 6890c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 690b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis Subwidget Class 691b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis --------- ----- 692b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis selection ComboBox 693f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz filter ComboBox 694f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz dirlist ScrolledListBox 695f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz filelist ScrolledListBox""" 696b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 697b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master, cnf={}, **kw): 6980c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixDirSelectBox', ['options'], cnf, kw) 6990c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') 7000c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx') 701b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 702b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ExFileSelectBox(TixWidget): 703b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """ExFileSelectBox - MS Windows style file select box. 7046a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3dSerhiy Storchaka It provides a convenient method for the user to select files. 705b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 70622710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 70722710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 70822710823fb554a796dc96c44885d7a9389426824Moshe Zadka cancel Button 70922710823fb554a796dc96c44885d7a9389426824Moshe Zadka ok Button 71022710823fb554a796dc96c44885d7a9389426824Moshe Zadka hidden Checkbutton 71122710823fb554a796dc96c44885d7a9389426824Moshe Zadka types ComboBox 71222710823fb554a796dc96c44885d7a9389426824Moshe Zadka dir ComboBox 71322710823fb554a796dc96c44885d7a9389426824Moshe Zadka file ComboBox 71422710823fb554a796dc96c44885d7a9389426824Moshe Zadka dirlist ScrolledListBox 71522710823fb554a796dc96c44885d7a9389426824Moshe Zadka filelist ScrolledListBox""" 716b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 717b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 7180c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixExFileSelectBox', ['options'], cnf, kw) 7190c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') 7200c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['ok'] = _dummyButton(self, 'ok') 7210c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') 7220c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['types'] = _dummyComboBox(self, 'types') 7230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') 7240c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') 7250c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['file'] = _dummyComboBox(self, 'file') 7260c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') 727b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 728b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def filter(self): 7290c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'filter') 730b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 731b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def invoke(self): 7320c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'invoke') 733b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 734b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 735b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# Should inherit from a Dialog class 736b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass DirSelectDialog(TixWidget): 737b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """The DirSelectDialog widget presents the directories in the file 738b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis system in a dialog window. The user can use this dialog window to 739b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis navigate through the file system to select the desired directory. 740b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 741b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis Subwidgets Class 742b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis ---------- ----- 743b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis dirbox DirSelectDialog""" 744b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 745468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixDialogShell 746b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master, cnf={}, **kw): 7470c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixDirSelectDialog', 748f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['options'], cnf, kw) 7490c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dirbox'] = _dummyDirSelectBox(self, 'dirbox') 7500c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # cancel and ok buttons are missing 7510c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 752b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def popup(self): 7530c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'popup') 754b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 755b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def popdown(self): 7560c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'popdown') 757b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 758b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 759b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# Should inherit from a Dialog class 760b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ExFileSelectDialog(TixWidget): 761b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """ExFileSelectDialog - MS Windows style file select dialog. 7626a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3dSerhiy Storchaka It provides a convenient method for the user to select files. 763b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 76422710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 76522710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 76622710823fb554a796dc96c44885d7a9389426824Moshe Zadka fsbox ExFileSelectBox""" 767b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 768468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixDialogShell 769b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 7700c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixExFileSelectDialog', 771f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['options'], cnf, kw) 7720c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['fsbox'] = _dummyExFileSelectBox(self, 'fsbox') 773b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 774b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def popup(self): 7750c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'popup') 776b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 777b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def popdown(self): 7780c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'popdown') 779b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 780b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass FileSelectBox(TixWidget): 781b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """ExFileSelectBox - Motif style file select box. 782b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis It is generally used for 783b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis the user to choose a file. FileSelectBox stores the files mostly 784b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis recently selected into a ComboBox widget so that they can be quickly 785b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis selected again. 7860c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 78722710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 78822710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 78922710823fb554a796dc96c44885d7a9389426824Moshe Zadka selection ComboBox 790f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz filter ComboBox 791f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz dirlist ScrolledListBox 792f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz filelist ScrolledListBox""" 793b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 794b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 7950c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixFileSelectBox', ['options'], cnf, kw) 7960c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') 7970c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') 7980c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') 7990c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') 800b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 80122710823fb554a796dc96c44885d7a9389426824Moshe Zadka def apply_filter(self): # name of subwidget is same as command 8020c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'filter') 803b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 804b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def invoke(self): 8050c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'invoke') 806b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 807b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# Should inherit from a Dialog class 808b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass FileSelectDialog(TixWidget): 809b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """FileSelectDialog - Motif style file select dialog. 810b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 81122710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 81222710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 81322710823fb554a796dc96c44885d7a9389426824Moshe Zadka btns StdButtonBox 81422710823fb554a796dc96c44885d7a9389426824Moshe Zadka fsbox FileSelectBox""" 815b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 816468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixStdDialogShell 817b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 8180c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixFileSelectDialog', 819f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['options'], cnf, kw) 8200c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['btns'] = _dummyStdButtonBox(self, 'btns') 8210c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['fsbox'] = _dummyFileSelectBox(self, 'fsbox') 822b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 823b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def popup(self): 8240c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'popup') 825b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 826b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def popdown(self): 8270c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'popdown') 828b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 829b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass FileEntry(TixWidget): 830b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """FileEntry - Entry field with button that invokes a FileSelectDialog. 831b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis The user can type in the filename manually. Alternatively, the user can 832b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis press the button widget that sits next to the entry, which will bring 833b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis up a file selection dialog. 834b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 83522710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 83622710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 83722710823fb554a796dc96c44885d7a9389426824Moshe Zadka button Button 83822710823fb554a796dc96c44885d7a9389426824Moshe Zadka entry Entry""" 839b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 840468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixLabelWidget 841b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 8420c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixFileEntry', 843f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['dialogtype', 'options'], cnf, kw) 8440c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['button'] = _dummyButton(self, 'button') 8450c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['entry'] = _dummyEntry(self, 'entry') 846b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 847b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def invoke(self): 8480c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'invoke') 849b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 850b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def file_dialog(self): 851468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: return python object 8520c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis pass 853b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 8541fff00832639082d2d7aa354c8e6d9110171d6bcGuilherme Poloclass HList(TixWidget, XView, YView): 855b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """HList - Hierarchy display widget can be used to display any data 856b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis that have a hierarchical structure, for example, file system directory 857b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis trees. The list entries are indented and connected by branch lines 85813925008dc11f2a235627dc8c0440c0ce99171d9Ezio Melotti according to their places in the hierarchy. 859b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 860b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis Subwidgets - None""" 861b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 862b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self,master=None,cnf={}, **kw): 8630c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixHList', 864f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['columns', 'options'], cnf, kw) 865b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 866b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add(self, entry, cnf={}, **kw): 867ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger return self.tk.call(self._w, 'add', entry, *self._options(cnf, kw)) 868b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 869b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add_child(self, parent=None, cnf={}, **kw): 8700c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if not parent: 8710c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis parent = '' 872ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger return self.tk.call( 873ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self._w, 'addchild', parent, *self._options(cnf, kw)) 874b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 875b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def anchor_set(self, entry): 8760c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'anchor', 'set', entry) 877b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 878b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def anchor_clear(self): 8790c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'anchor', 'clear') 880b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 881b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def column_width(self, col=0, width=None, chars=None): 8820c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if not chars: 8830c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'column', 'width', col, width) 8840c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis else: 8850c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'column', 'width', col, 886f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz '-char', chars) 887b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 888b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete_all(self): 8890c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'delete', 'all') 890b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 891b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete_entry(self, entry): 8920c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'delete', 'entry', entry) 893b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 894b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete_offsprings(self, entry): 8950c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'delete', 'offsprings', entry) 896b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 897b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete_siblings(self, entry): 8980c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'delete', 'siblings', entry) 899b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 900b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dragsite_set(self, index): 9010c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dragsite', 'set', index) 902b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 903b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dragsite_clear(self): 9040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dragsite', 'clear') 905b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 906b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dropsite_set(self, index): 9070c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dropsite', 'set', index) 908b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 909b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dropsite_clear(self): 9100c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dropsite', 'clear') 911b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 912b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def header_create(self, col, cnf={}, **kw): 913ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'header', 'create', col, *self._options(cnf, kw)) 9140c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 915b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def header_configure(self, col, cnf={}, **kw): 9160c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if cnf is None: 917848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure(self._w, 'header', 'configure', col) 918ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'header', 'configure', col, 919ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger *self._options(cnf, kw)) 9200c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 921b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def header_cget(self, col, opt): 9220c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'header', 'cget', col, opt) 9230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 924b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def header_exists(self, col): 925071dec2027a0ec5515af7e5c1317e78b0dfb347dSerhiy Storchaka # A workaround to Tix library bug (issue #25464). 926071dec2027a0ec5515af7e5c1317e78b0dfb347dSerhiy Storchaka # The documented command is "exists", but only erroneous "exist" is 927071dec2027a0ec5515af7e5c1317e78b0dfb347dSerhiy Storchaka # accepted. 928071dec2027a0ec5515af7e5c1317e78b0dfb347dSerhiy Storchaka return self.tk.getboolean(self.tk.call(self._w, 'header', 'exist', col)) 929071dec2027a0ec5515af7e5c1317e78b0dfb347dSerhiy Storchaka header_exist = header_exists 9300c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 931b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def header_delete(self, col): 93222710823fb554a796dc96c44885d7a9389426824Moshe Zadka self.tk.call(self._w, 'header', 'delete', col) 9330c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 934b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def header_size(self, col): 93522710823fb554a796dc96c44885d7a9389426824Moshe Zadka return self.tk.call(self._w, 'header', 'size', col) 9360c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 937b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def hide_entry(self, entry): 9380c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'hide', 'entry', entry) 939b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 940b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def indicator_create(self, entry, cnf={}, **kw): 941ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call( 942ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self._w, 'indicator', 'create', entry, *self._options(cnf, kw)) 9430c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 944b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def indicator_configure(self, entry, cnf={}, **kw): 9450c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if cnf is None: 946848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure( 947848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka self._w, 'indicator', 'configure', entry) 948ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call( 949ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self._w, 'indicator', 'configure', entry, *self._options(cnf, kw)) 9500c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 951b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def indicator_cget(self, entry, opt): 9520c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'indicator', 'cget', entry, opt) 9530c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 954b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def indicator_exists(self, entry): 9550c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call (self._w, 'indicator', 'exists', entry) 9560c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 957b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def indicator_delete(self, entry): 95822710823fb554a796dc96c44885d7a9389426824Moshe Zadka self.tk.call(self._w, 'indicator', 'delete', entry) 9590c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 960b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def indicator_size(self, entry): 96122710823fb554a796dc96c44885d7a9389426824Moshe Zadka return self.tk.call(self._w, 'indicator', 'size', entry) 962b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 963b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_anchor(self): 9640c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'anchor') 965b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 966bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def info_bbox(self, entry): 967bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo return self._getints( 968bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self._w, 'info', 'bbox', entry)) or None 969bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 970b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_children(self, entry=None): 9710c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis c = self.tk.call(self._w, 'info', 'children', entry) 9720c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.splitlist(c) 973b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 974b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_data(self, entry): 9750c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'data', entry) 976b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 977bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def info_dragsite(self): 978bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo return self.tk.call(self._w, 'info', 'dragsite') 979bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 980bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def info_dropsite(self): 981bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo return self.tk.call(self._w, 'info', 'dropsite') 982bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 983b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_exists(self, entry): 9840c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'exists', entry) 985b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 986b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_hidden(self, entry): 9870c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'hidden', entry) 988b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 989b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_next(self, entry): 9900c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'next', entry) 991b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 992b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_parent(self, entry): 9930c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'parent', entry) 994b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 995b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_prev(self, entry): 9960c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'prev', entry) 997b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 998b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_selection(self): 9990c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis c = self.tk.call(self._w, 'info', 'selection') 10000c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.splitlist(c) 1001b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 10023e048485f9c56066f347bc0e6a06056870847056Martin v. Löwis def item_cget(self, entry, col, opt): 10030c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'item', 'cget', entry, col, opt) 10040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 1005b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def item_configure(self, entry, col, cnf={}, **kw): 10060c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis if cnf is None: 1007848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure(self._w, 'item', 'configure', entry, col) 1008ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'item', 'configure', entry, col, 1009ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger *self._options(cnf, kw)) 1010b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1011b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def item_create(self, entry, col, cnf={}, **kw): 1012ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call( 1013ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self._w, 'item', 'create', entry, col, *self._options(cnf, kw)) 1014b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1015b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def item_exists(self, entry, col): 10160c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'item', 'exists', entry, col) 10170c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 1018b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def item_delete(self, entry, col): 10190c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'item', 'delete', entry, col) 1020b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1021433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis def entrycget(self, entry, opt): 1022433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis return self.tk.call(self._w, 'entrycget', entry, opt) 1023433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis 1024433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis def entryconfigure(self, entry, cnf={}, **kw): 1025433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis if cnf is None: 1026848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure(self._w, 'entryconfigure', entry) 1027433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis self.tk.call(self._w, 'entryconfigure', entry, 1028433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis *self._options(cnf, kw)) 1029433fa69c4015584a2ee298faf71570813b7689dcMartin v. Löwis 1030b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def nearest(self, y): 10310c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'nearest', y) 1032b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1033b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def see(self, entry): 10340c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'see', entry) 1035b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1036b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def selection_clear(self, cnf={}, **kw): 1037ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'selection', 'clear', *self._options(cnf, kw)) 1038b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1039b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def selection_includes(self, entry): 10400c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'selection', 'includes', entry) 1041b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1042b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def selection_set(self, first, last=None): 10430c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'selection', 'set', first, last) 1044b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1045b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def show_entry(self, entry): 10460c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'show', 'entry', entry) 1047b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1048b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass InputOnly(TixWidget): 1049468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis """InputOnly - Invisible widget. Unix only. 1050b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1051b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis Subwidgets - None""" 1052b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1053b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self,master=None,cnf={}, **kw): 10540c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixInputOnly', None, cnf, kw) 1055b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1056b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass LabelEntry(TixWidget): 1057b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """LabelEntry - Entry field with label. Packages an entry widget 1058a90a4a96517fe25b57246083076b247f417d737dMartin Panter and a label into one mega widget. It can be used to simplify the creation 1059a90a4a96517fe25b57246083076b247f417d737dMartin Panter of ``entry-form'' type of interface. 1060b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 106122710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 106222710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 106322710823fb554a796dc96c44885d7a9389426824Moshe Zadka label Label 106422710823fb554a796dc96c44885d7a9389426824Moshe Zadka entry Entry""" 1065b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1066b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self,master=None,cnf={}, **kw): 10670c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixLabelEntry', 1068f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['labelside','options'], cnf, kw) 10690c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['label'] = _dummyLabel(self, 'label') 10700c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['entry'] = _dummyEntry(self, 'entry') 1071b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1072b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass LabelFrame(TixWidget): 1073b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """LabelFrame - Labelled Frame container. Packages a frame widget 1074b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis and a label into one mega widget. To create widgets inside a 1075b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis LabelFrame widget, one creates the new widgets relative to the 1076b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis frame subwidget and manage them inside the frame subwidget. 1077b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 107822710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 107922710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 108022710823fb554a796dc96c44885d7a9389426824Moshe Zadka label Label 108122710823fb554a796dc96c44885d7a9389426824Moshe Zadka frame Frame""" 1082b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1083b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self,master=None,cnf={}, **kw): 10840c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixLabelFrame', 1085f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['labelside','options'], cnf, kw) 10860c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['label'] = _dummyLabel(self, 'label') 10870c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['frame'] = _dummyFrame(self, 'frame') 1088b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1089b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1090b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass ListNoteBook(TixWidget): 1091b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """A ListNoteBook widget is very similar to the TixNoteBook widget: 1092b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis it can be used to display many windows in a limited space using a 1093b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis notebook metaphor. The notebook is divided into a stack of pages 1094b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis (windows). At one time only one of these pages can be shown. 1095b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis The user can navigate through these pages by 1096b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis choosing the name of the desired page in the hlist subwidget.""" 1097b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1098b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master, cnf={}, **kw): 1099f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz TixWidget.__init__(self, master, 'tixListNoteBook', ['options'], cnf, kw) 1100f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz # Is this necessary? It's not an exposed subwidget in Tix. 1101f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.subwidget_list['pane'] = _dummyPanedWindow(self, 'pane', 1102f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz destroy_physically=0) 1103f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 1104f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.subwidget_list['shlist'] = _dummyScrolledHList(self, 'shlist') 1105b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1106b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def add(self, name, cnf={}, **kw): 1107ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) 11080c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list[name] = TixSubWidget(self, name) 11090c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.subwidget_list[name] 1110b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 111101824bf50c2967c264b0fb4a13d08bb5c1d9665cMartin v. Löwis def page(self, name): 1112182b5aca27d376b08a2904bed42b751496f932f3Tim Peters return self.subwidget(name) 111301824bf50c2967c264b0fb4a13d08bb5c1d9665cMartin v. Löwis 111401824bf50c2967c264b0fb4a13d08bb5c1d9665cMartin v. Löwis def pages(self): 1115182b5aca27d376b08a2904bed42b751496f932f3Tim Peters # Can't call subwidgets_all directly because we don't want .nbframe 11166bc87b4b4dc9566c4ee8bf1a256e0f2686cf0f4bSerhiy Storchaka names = self.tk.splitlist(self.tk.call(self._w, 'pages')) 1117182b5aca27d376b08a2904bed42b751496f932f3Tim Peters ret = [] 1118182b5aca27d376b08a2904bed42b751496f932f3Tim Peters for x in names: 1119182b5aca27d376b08a2904bed42b751496f932f3Tim Peters ret.append(self.subwidget(x)) 1120182b5aca27d376b08a2904bed42b751496f932f3Tim Peters return ret 112101824bf50c2967c264b0fb4a13d08bb5c1d9665cMartin v. Löwis 1122b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def raise_page(self, name): # raise is a python keyword 11230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'raise', name) 1124b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1125b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass Meter(TixWidget): 1126b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """The Meter widget can be used to show the progress of a background 1127b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis job which may take a long time to execute. 1128b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 1129b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1130b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master=None, cnf={}, **kw): 11310c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixMeter', 1132f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['options'], cnf, kw) 1133b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1134b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass NoteBook(TixWidget): 1135b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """NoteBook - Multi-page container widget (tabbed notebook metaphor). 1136b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 113722710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 113822710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 113922710823fb554a796dc96c44885d7a9389426824Moshe Zadka nbframe NoteBookFrame 1140b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis <pages> page widgets added dynamically with the add method""" 1141b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1142b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self,master=None,cnf={}, **kw): 11430c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self,master,'tixNoteBook', ['options'], cnf, kw) 11440c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['nbframe'] = TixSubWidget(self, 'nbframe', 1145f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz destroy_physically=0) 1146b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1147b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add(self, name, cnf={}, **kw): 1148ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) 11490c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list[name] = TixSubWidget(self, name) 11500c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.subwidget_list[name] 1151b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1152b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete(self, name): 11530c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'delete', name) 11540c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list[name].destroy() 11550c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis del self.subwidget_list[name] 1156b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1157b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def page(self, name): 11580c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.subwidget(name) 1159b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1160b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def pages(self): 11610c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Can't call subwidgets_all directly because we don't want .nbframe 11626bc87b4b4dc9566c4ee8bf1a256e0f2686cf0f4bSerhiy Storchaka names = self.tk.splitlist(self.tk.call(self._w, 'pages')) 11630c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis ret = [] 11640c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis for x in names: 11650c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis ret.append(self.subwidget(x)) 11660c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return ret 1167b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 116822710823fb554a796dc96c44885d7a9389426824Moshe Zadka def raise_page(self, name): # raise is a python keyword 11690c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'raise', name) 1170b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1171b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def raised(self): 11720c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'raised') 1173b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1174b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass NoteBookFrame(TixWidget): 1175468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: This is dangerous to expose to be called on its own. 1176b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis pass 1177b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1178b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass OptionMenu(TixWidget): 1179b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """OptionMenu - creates a menu button of options. 1180b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 118122710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidget Class 118222710823fb554a796dc96c44885d7a9389426824Moshe Zadka --------- ----- 1183f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz menubutton Menubutton 1184f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz menu Menu""" 1185b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1186b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 11870c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixOptionMenu', ['options'], cnf, kw) 11880c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') 11890c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['menu'] = _dummyMenu(self, 'menu') 1190b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1191b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add_command(self, name, cnf={}, **kw): 1192ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'add', 'command', name, *self._options(cnf, kw)) 1193b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1194b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add_separator(self, name, cnf={}, **kw): 1195ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'add', 'separator', name, *self._options(cnf, kw)) 1196b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1197b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete(self, name): 11980c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'delete', name) 1199b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1200b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def disable(self, name): 12010c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'disable', name) 1202b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1203b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def enable(self, name): 12040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'enable', name) 1205b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1206b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass PanedWindow(TixWidget): 1207b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """PanedWindow - Multi-pane container widget 1208b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis allows the user to interactively manipulate the sizes of several 1209b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis panes. The panes can be arranged either vertically or horizontally.The 1210b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis user changes the sizes of the panes by dragging the resize handle 1211b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis between two panes. 1212b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 121322710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 121422710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 1215b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis <panes> g/p widgets added dynamically with the add method.""" 1216b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1217b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 12180c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixPanedWindow', ['orientation', 'options'], cnf, kw) 1219b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1220f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz # add delete forget panecget paneconfigure panes setsize 1221b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add(self, name, cnf={}, **kw): 1222ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) 12230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list[name] = TixSubWidget(self, name, 1224f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz check_intermediate=0) 12250c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.subwidget_list[name] 1226b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1227f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def delete(self, name): 1228f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.tk.call(self._w, 'delete', name) 1229f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.subwidget_list[name].destroy() 1230f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz del self.subwidget_list[name] 1231f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1232f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def forget(self, name): 1233f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.tk.call(self._w, 'forget', name) 1234f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1235f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def panecget(self, entry, opt): 1236f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz return self.tk.call(self._w, 'panecget', entry, opt) 1237f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1238f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def paneconfigure(self, entry, cnf={}, **kw): 1239f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz if cnf is None: 1240848972cac1d8a1d5a8828c807dbdaa26c2567b2cSerhiy Storchaka return self._getconfigure(self._w, 'paneconfigure', entry) 1241ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'paneconfigure', entry, *self._options(cnf, kw)) 1242f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1243b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def panes(self): 1244bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo names = self.tk.splitlist(self.tk.call(self._w, 'panes')) 1245bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo return [self.subwidget(x) for x in names] 1246b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1247b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass PopupMenu(TixWidget): 1248b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """PopupMenu widget can be used as a replacement of the tk_popup command. 1249b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis The advantage of the Tix PopupMenu widget is it requires less application 1250b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis code to manipulate. 1251b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1252b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 125322710823fb554a796dc96c44885d7a9389426824Moshe Zadka Subwidgets Class 125422710823fb554a796dc96c44885d7a9389426824Moshe Zadka ---------- ----- 125522710823fb554a796dc96c44885d7a9389426824Moshe Zadka menubutton Menubutton 125622710823fb554a796dc96c44885d7a9389426824Moshe Zadka menu Menu""" 1257b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1258468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixShell 1259b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 12600c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixPopupMenu', ['options'], cnf, kw) 12610c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') 12620c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['menu'] = _dummyMenu(self, 'menu') 1263b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1264b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def bind_widget(self, widget): 12650c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'bind', widget._w) 1266b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1267b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def unbind_widget(self, widget): 12680c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'unbind', widget._w) 1269b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1270b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def post_widget(self, widget, x, y): 12710c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'post', widget._w, x, y) 1272b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1273b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ResizeHandle(TixWidget): 1274b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """Internal widget to draw resize handles on Scrolled widgets.""" 1275b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 12760c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # There seems to be a Tix bug rejecting the configure method 12770c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # Let's try making the flags -static 12780c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis flags = ['options', 'command', 'cursorfg', 'cursorbg', 12790c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 'handlesize', 'hintcolor', 'hintwidth', 12800c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 'x', 'y'] 12810c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis # In fact, x y height width are configurable 12820c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixResizeHandle', 1283f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz flags, cnf, kw) 1284b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1285b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def attach_widget(self, widget): 12860c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'attachwidget', widget._w) 1287b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1288652e1917c6f2bcdccb784d9d37950c381948a77cMartin v. Löwis def detach_widget(self, widget): 12890c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'detachwidget', widget._w) 1290652e1917c6f2bcdccb784d9d37950c381948a77cMartin v. Löwis 1291652e1917c6f2bcdccb784d9d37950c381948a77cMartin v. Löwis def hide(self, widget): 12920c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'hide', widget._w) 1293652e1917c6f2bcdccb784d9d37950c381948a77cMartin v. Löwis 1294652e1917c6f2bcdccb784d9d37950c381948a77cMartin v. Löwis def show(self, widget): 12950c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'show', widget._w) 1296652e1917c6f2bcdccb784d9d37950c381948a77cMartin v. Löwis 1297b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ScrolledHList(TixWidget): 1298b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ScrolledHList - HList with automatic scrollbars.""" 1299b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1300468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 1301b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 13020c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixScrolledHList', ['options'], 1303f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz cnf, kw) 13040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 13050c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 13060c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1307b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1308b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ScrolledListBox(TixWidget): 1309b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ScrolledListBox - Listbox with automatic scrollbars.""" 1310b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1311468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 1312b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 13130c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixScrolledListBox', ['options'], cnf, kw) 13140c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') 13150c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 13160c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1317b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1318b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ScrolledText(TixWidget): 1319b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ScrolledText - Text with automatic scrollbars.""" 1320b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1321468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 1322b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 13230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixScrolledText', ['options'], cnf, kw) 13240c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['text'] = _dummyText(self, 'text') 13250c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 13260c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1327b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1328b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ScrolledTList(TixWidget): 1329b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ScrolledTList - TList with automatic scrollbars.""" 1330b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1331468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 1332b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 13330c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixScrolledTList', ['options'], 1334f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz cnf, kw) 13350c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['tlist'] = _dummyTList(self, 'tlist') 13360c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 13370c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1338b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1339b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass ScrolledWindow(TixWidget): 1340b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ScrolledWindow - Window with automatic scrollbars.""" 1341b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1342468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 1343b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 13440c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixScrolledWindow', ['options'], cnf, kw) 13450c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['window'] = _dummyFrame(self, 'window') 13460c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 13470c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1348b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1349b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass Select(TixWidget): 1350b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """Select - Container of button subwidgets. It can be used to provide 1351b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis radio-box or check-box style of selection options for the user. 1352b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1353b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis Subwidgets are buttons added dynamically using the add method.""" 1354b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1355468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixLabelWidget 1356b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, cnf={}, **kw): 13570c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixSelect', 1358f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['allowzero', 'radio', 'orientation', 'labelside', 1359f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 'options'], 1360f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz cnf, kw) 13610c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['label'] = _dummyLabel(self, 'label') 1362b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1363b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def add(self, name, cnf={}, **kw): 1364ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) 13650c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list[name] = _dummyButton(self, name) 13660c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.subwidget_list[name] 1367b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1368b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def invoke(self, name): 13690c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'invoke', name) 1370b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1371f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitzclass Shell(TixWidget): 1372f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz """Toplevel window. 1373f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1374f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz Subwidgets - None""" 1375f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1376f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def __init__ (self,master=None,cnf={}, **kw): 1377f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz TixWidget.__init__(self, master, 'tixShell', ['options', 'title'], cnf, kw) 1378f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1379f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitzclass DialogShell(TixWidget): 1380f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz """Toplevel window, with popup popdown and center methods. 1381f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz It tells the window manager that it is a dialog window and should be 1382f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz treated specially. The exact treatment depends on the treatment of 1383f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz the window manager. 1384f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1385f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz Subwidgets - None""" 1386f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1387468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit from Shell 1388f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def __init__ (self,master=None,cnf={}, **kw): 1389f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz TixWidget.__init__(self, master, 1390f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 'tixDialogShell', 1391f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['options', 'title', 'mapped', 1392f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 'minheight', 'minwidth', 1393f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 'parent', 'transient'], cnf, kw) 1394f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1395f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def popdown(self): 1396f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.tk.call(self._w, 'popdown') 1397f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1398f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def popup(self): 1399f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.tk.call(self._w, 'popup') 1400f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1401f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz def center(self): 1402f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz self.tk.call(self._w, 'center') 1403f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz 1404b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass StdButtonBox(TixWidget): 1405b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis """StdButtonBox - Standard Button Box (OK, Apply, Cancel and Help) """ 1406b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1407b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master=None, cnf={}, **kw): 14080c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixStdButtonBox', 1409f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['orientation', 'options'], cnf, kw) 14100c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['ok'] = _dummyButton(self, 'ok') 14110c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['apply'] = _dummyButton(self, 'apply') 14120c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') 14130c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['help'] = _dummyButton(self, 'help') 1414b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1415b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def invoke(self, name): 1416e014a13f03abc0111591565fc0b669dd1cff0958Guido van Rossum if name in self.subwidget_list: 14170c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'invoke', name) 1418b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 14191fff00832639082d2d7aa354c8e6d9110171d6bcGuilherme Poloclass TList(TixWidget, XView, YView): 1420b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """TList - Hierarchy display widget which can be 1421b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis used to display data in a tabular format. The list entries of a TList 1422b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis widget are similar to the entries in the Tk listbox widget. The main 1423b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis differences are (1) the TList widget can display the list entries in a 1424b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis two dimensional format and (2) you can use graphical images as well as 1425b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis multiple colors and fonts for the list entries. 1426b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1427b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis Subwidgets - None""" 1428b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1429b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__ (self,master=None,cnf={}, **kw): 14300c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixTList', ['options'], cnf, kw) 1431b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1432b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def active_set(self, index): 14330c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'active', 'set', index) 1434b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1435b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def active_clear(self): 14360c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'active', 'clear') 1437b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1438b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def anchor_set(self, index): 14390c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'anchor', 'set', index) 1440b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1441b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def anchor_clear(self): 14420c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'anchor', 'clear') 1443b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1444b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def delete(self, from_, to=None): 14450c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'delete', from_, to) 1446b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1447b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dragsite_set(self, index): 14480c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dragsite', 'set', index) 1449b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1450b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dragsite_clear(self): 14510c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dragsite', 'clear') 1452b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1453b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dropsite_set(self, index): 14540c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dropsite', 'set', index) 1455b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1456b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def dropsite_clear(self): 14570c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'dropsite', 'clear') 1458b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1459b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def insert(self, index, cnf={}, **kw): 1460ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'insert', index, *self._options(cnf, kw)) 1461b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1462b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_active(self): 14630c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'active') 1464b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1465b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_anchor(self): 14660c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'anchor') 1467b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1468b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_down(self, index): 14690c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'down', index) 1470b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1471b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_left(self, index): 14720c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'left', index) 1473b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1474b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_right(self, index): 14750c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'right', index) 1476b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1477b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_selection(self): 14780c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis c = self.tk.call(self._w, 'info', 'selection') 14790c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.splitlist(c) 1480b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1481b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_size(self): 14820c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'size') 1483b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1484b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def info_up(self, index): 14850c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'info', 'up', index) 1486b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1487b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def nearest(self, x, y): 14880c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'nearest', x, y) 1489b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1490b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def see(self, index): 14910c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'see', index) 1492b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1493b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def selection_clear(self, cnf={}, **kw): 1494ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger self.tk.call(self._w, 'selection', 'clear', *self._options(cnf, kw)) 1495b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1496b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def selection_includes(self, index): 14970c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'selection', 'includes', index) 1498b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1499b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def selection_set(self, first, last=None): 15000c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'selection', 'set', first, last) 1501b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1502b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass Tree(TixWidget): 150313925008dc11f2a235627dc8c0440c0ce99171d9Ezio Melotti """Tree - The tixTree widget can be used to display hierarchical 1504b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis data in a tree form. The user can adjust 1505b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis the view of the tree by opening or closing parts of the tree.""" 1506b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1507468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 1508b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master=None, cnf={}, **kw): 15090c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixWidget.__init__(self, master, 'tixTree', 1510f539bdeb9cbddc914b8a604156200a560c891fc8Neal Norwitz ['options'], cnf, kw) 15110c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 15120c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 15130c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1514b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1515b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def autosetmode(self): 1516468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''This command calls the setmode method for all the entries in this 1517468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis Tree widget: if an entry has no child entries, its mode is set to 1518468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis none. Otherwise, if the entry has any hidden child entries, its mode is 1519468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis set to open; otherwise its mode is set to close.''' 15200c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'autosetmode') 1521b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1522b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def close(self, entrypath): 1523468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Close the entry given by entryPath if its mode is close.''' 15240c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'close', entrypath) 1525b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1526b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def getmode(self, entrypath): 1527468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Returns the current mode of the entry given by entryPath.''' 15280c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis return self.tk.call(self._w, 'getmode', entrypath) 1529b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1530b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def open(self, entrypath): 1531468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Open the entry given by entryPath if its mode is open.''' 15320c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'open', entrypath) 1533b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1534b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def setmode(self, entrypath, mode='none'): 1535468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''This command is used to indicate whether the entry given by 1536468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis entryPath has children entries and whether the children are visible. mode 1537468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis must be one of open, close or none. If mode is set to open, a (+) 1538e130a52d8a60229f53c8bc2ea7a1f51ee592bbd7Ezio Melotti indicator is drawn next the entry. If mode is set to close, a (-) 1539e130a52d8a60229f53c8bc2ea7a1f51ee592bbd7Ezio Melotti indicator is drawn next the entry. If mode is set to none, no 1540468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis indicators will be drawn for this entry. The default mode is none. The 1541468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis open mode indicates the entry has hidden children and this entry can be 1542468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis opened by the user. The close mode indicates that all the children of the 1543468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis entry are now visible and the entry can be closed by the user.''' 15440c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.tk.call(self._w, 'setmode', entrypath, mode) 1545b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1546b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1547b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# Could try subclassing Tree for CheckList - would need another arg to init 1548b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass CheckList(TixWidget): 1549b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """The CheckList widget 1550b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis displays a list of items to be selected by the user. CheckList acts 1551b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis similarly to the Tk checkbutton or radiobutton widgets, except it is 1552b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis capable of handling many more items than checkbuttons or radiobuttons. 1553b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 1554468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixTree 1555b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master=None, cnf={}, **kw): 1556b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis TixWidget.__init__(self, master, 'tixCheckList', 1557bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo ['options', 'radio'], cnf, kw) 1558b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 1559b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 1560b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 15610c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis 1562b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def autosetmode(self): 1563468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''This command calls the setmode method for all the entries in this 1564468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis Tree widget: if an entry has no child entries, its mode is set to 1565468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis none. Otherwise, if the entry has any hidden child entries, its mode is 1566468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis set to open; otherwise its mode is set to close.''' 1567b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.tk.call(self._w, 'autosetmode') 1568b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1569b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def close(self, entrypath): 1570468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Close the entry given by entryPath if its mode is close.''' 1571b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.tk.call(self._w, 'close', entrypath) 1572b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1573b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def getmode(self, entrypath): 1574468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Returns the current mode of the entry given by entryPath.''' 1575b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis return self.tk.call(self._w, 'getmode', entrypath) 1576b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1577b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def open(self, entrypath): 1578468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Open the entry given by entryPath if its mode is open.''' 1579b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.tk.call(self._w, 'open', entrypath) 1580b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1581b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def getselection(self, mode='on'): 1582468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Returns a list of items whose status matches status. If status is 1583468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis not specified, the list of items in the "on" status will be returned. 1584468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis Mode can be on, off, default''' 15856bc87b4b4dc9566c4ee8bf1a256e0f2686cf0f4bSerhiy Storchaka return self.tk.splitlist(self.tk.call(self._w, 'getselection', mode)) 1586b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1587b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def getstatus(self, entrypath): 1588468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Returns the current status of entryPath.''' 1589468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis return self.tk.call(self._w, 'getstatus', entrypath) 1590b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1591b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def setstatus(self, entrypath, mode='on'): 1592468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Sets the status of entryPath to be status. A bitmap will be 1593468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis displayed next to the entry its status is on, off or default.''' 1594b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis self.tk.call(self._w, 'setstatus', entrypath, mode) 1595b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1596b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1597b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis########################################################################### 1598b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis### The subclassing below is used to instantiate the subwidgets in each ### 1599b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis### mega widget. This allows us to access their methods directly. ### 1600b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis########################################################################### 1601b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1602b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyButton(Button, TixSubWidget): 1603b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1605b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1606b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyCheckbutton(Checkbutton, TixSubWidget): 1607b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16080c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1609b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1610b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyEntry(Entry, TixSubWidget): 1611b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16120c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1613b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1614b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyFrame(Frame, TixSubWidget): 1615b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16160c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1617b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1618b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyLabel(Label, TixSubWidget): 1619b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16200c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1621b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1622b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyListbox(Listbox, TixSubWidget): 1623b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16240c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1625b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1626b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyMenu(Menu, TixSubWidget): 1627b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16280c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1629b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1630b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyMenubutton(Menubutton, TixSubWidget): 1631b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16320c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1633b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1634b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyScrollbar(Scrollbar, TixSubWidget): 1635b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16360c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1637b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1638b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyText(Text, TixSubWidget): 1639b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16400c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1641b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1642b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyScrolledListBox(ScrolledListBox, TixSubWidget): 1643b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16440c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 16450c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') 16460c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 16470c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1648b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1649b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyHList(HList, TixSubWidget): 1650b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16510c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1652b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1653b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass _dummyScrolledHList(ScrolledHList, TixSubWidget): 1654b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16550c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 16560c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 16570c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 16580c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1659b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1660b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyTList(TList, TixSubWidget): 1661b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16620c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1663b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1664b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyComboBox(ComboBox, TixSubWidget): 1665b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 1666d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz TixSubWidget.__init__(self, master, name, ['fancy',destroy_physically]) 1667d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz self.subwidget_list['label'] = _dummyLabel(self, 'label') 16680c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['entry'] = _dummyEntry(self, 'entry') 16690c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') 1670d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz 16710c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, 1672d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz 'slistbox') 1673d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz try: 1674d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz self.subwidget_list['tick'] = _dummyButton(self, 'tick') 1675d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz #cross Button : present if created with the fancy option 1676d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz self.subwidget_list['cross'] = _dummyButton(self, 'cross') 1677d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz except TypeError: 1678d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz # unavailable when -fancy not specified 1679d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz pass 1680b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1681b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyDirList(DirList, TixSubWidget): 1682b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16830c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 16840c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') 16850c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') 16860c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') 1687b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1688b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass _dummyDirSelectBox(DirSelectBox, TixSubWidget): 1689b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16900c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 16910c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') 16920c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx') 1693b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1694b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyExFileSelectBox(ExFileSelectBox, TixSubWidget): 1695b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 16960c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 16970c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') 16980c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['ok'] = _dummyButton(self, 'ok') 16990c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') 17000c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['types'] = _dummyComboBox(self, 'types') 17010c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') 17020c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') 17030c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['file'] = _dummyComboBox(self, 'file') 17040c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') 1705b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1706b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyFileSelectBox(FileSelectBox, TixSubWidget): 1707b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 17080c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 17090c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') 17100c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') 17110c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') 17120c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') 1713b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1714b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass _dummyFileComboBox(ComboBox, TixSubWidget): 1715b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 17160c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 17170c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['dircbx'] = _dummyComboBox(self, 'dircbx') 1718b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis 1719b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyStdButtonBox(StdButtonBox, TixSubWidget): 1720b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=1): 17210c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 17220c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['ok'] = _dummyButton(self, 'ok') 17230c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['apply'] = _dummyButton(self, 'apply') 17240c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') 17250c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis self.subwidget_list['help'] = _dummyButton(self, 'help') 1726b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1727b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisclass _dummyNoteBookFrame(NoteBookFrame, TixSubWidget): 1728b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis def __init__(self, master, name, destroy_physically=0): 17290c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis TixSubWidget.__init__(self, master, name, destroy_physically) 1730b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 173101824bf50c2967c264b0fb4a13d08bb5c1d9665cMartin v. Löwisclass _dummyPanedWindow(PanedWindow, TixSubWidget): 173201824bf50c2967c264b0fb4a13d08bb5c1d9665cMartin v. Löwis def __init__(self, master, name, destroy_physically=1): 1733182b5aca27d376b08a2904bed42b751496f932f3Tim Peters TixSubWidget.__init__(self, master, name, destroy_physically) 173401824bf50c2967c264b0fb4a13d08bb5c1d9665cMartin v. Löwis 1735b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis######################## 1736b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis### Utility Routines ### 1737b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis######################## 1738b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1739d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz#mike Should tixDestroy be exposed as a wrapper? - but not for widgets. 1740d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz 1741b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisdef OptionName(widget): 1742d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz '''Returns the qualified path name for the widget. Normally used to set 1743d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz default options for subwidgets. See tixwidgets.py''' 1744b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis return widget.tk.call('tixOptionName', widget._w) 1745b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1746b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# Called with a dictionary argument of the form 1747b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# {'*.c':'C source files', '*.txt':'Text Files', '*':'All files'} 1748b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# returns a string which can be used to configure the fsbox file types 1749b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# in an ExFileSelectBox. i.e., 1750b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis# '{{*} {* - All files}} {{*.c} {*.c - C source files}} {{*.txt} {*.txt - Text Files}}' 1751b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwisdef FileTypeList(dict): 1752b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis s = '' 1753b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis for type in dict.keys(): 17540c0d56a22fa939e46d44a5727ed45ccd37bc8206Martin v. Löwis s = s + '{{' + type + '} {' + type + ' - ' + dict[type] + '}} ' 1755b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis return s 1756b21cb5fa7d4e820d470a4dc5a80544e0e0965c86Martin v. Löwis 1757b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis# Still to be done: 1758468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis# tixIconView 1759b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwisclass CObjView(TixWidget): 1760b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """This file implements the Canvas Object View widget. This is a base 1761b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis class of IconView. It implements automatic placement/adjustment of the 1762b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis scrollbars according to the canvas objects inside the canvas subwidget. 1763b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis The scrollbars are adjusted so that the canvas is just large enough 1764b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis to see all the objects. 1765b7b32601281f25ffed50f8187c78a3802fa14039Martin v. Löwis """ 1766468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 1767468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis pass 1768468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis 176949fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 17701fff00832639082d2d7aa354c8e6d9110171d6bcGuilherme Poloclass Grid(TixWidget, XView, YView): 1771d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz '''The Tix Grid command creates a new window and makes it into a 1772d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz tixGrid widget. Additional options, may be specified on the command 1773d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz line or in the option database to configure aspects such as its cursor 1774d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz and relief. 1775d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz 1776d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz A Grid widget displays its contents in a two dimensional grid of cells. 1777d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz Each cell may contain one Tix display item, which may be in text, 1778d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz graphics or other formats. See the DisplayStyle class for more information 1779d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz about Tix display items. Individual cells, or groups of cells, can be 1780d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz formatted with a wide range of attributes, such as its color, relief and 1781d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz border. 1782d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz 1783d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz Subwidgets - None''' 178449fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # valid specific resources as of Tk 8.4 178549fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # editdonecmd, editnotifycmd, floatingcols, floatingrows, formatcmd, 178649fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # highlightbackground, highlightcolor, leftmargin, itemtype, selectmode, 178749fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # selectunit, topmargin, 178849fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def __init__(self, master=None, cnf={}, **kw): 178949fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters static= [] 179049fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters self.cnf= cnf 179149fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters TixWidget.__init__(self, master, 'tixGrid', static, cnf, kw) 179249fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 179349fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # valid options as of Tk 8.4 1794bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo # anchor, bdtype, cget, configure, delete, dragsite, dropsite, entrycget, 1795bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo # edit, entryconfigure, format, geometryinfo, info, index, move, nearest, 1796bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo # selection, set, size, unset, xview, yview 1797bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def anchor_clear(self): 1798bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo """Removes the selection anchor.""" 1799bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self, 'anchor', 'clear') 1800bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 180149fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def anchor_get(self): 180249fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters "Get the (x,y) coordinate of the current anchor cell" 180349fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters return self._getints(self.tk.call(self, 'anchor', 'get')) 180449fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 1805bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def anchor_set(self, x, y): 1806bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo """Set the selection anchor to the cell at (x, y).""" 1807bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self, 'anchor', 'set', x, y) 1808bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 180949fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def delete_row(self, from_, to=None): 181049fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters """Delete rows between from_ and to inclusive. 181149fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters If to is not provided, delete only row at from_""" 181249fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters if to is None: 181349fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters self.tk.call(self, 'delete', 'row', from_) 181449fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters else: 181549fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters self.tk.call(self, 'delete', 'row', from_, to) 1816bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 181749fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def delete_column(self, from_, to=None): 181849fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters """Delete columns between from_ and to inclusive. 181949fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters If to is not provided, delete only column at from_""" 182049fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters if to is None: 182149fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters self.tk.call(self, 'delete', 'column', from_) 182249fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters else: 182349fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters self.tk.call(self, 'delete', 'column', from_, to) 1824bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 1825bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def edit_apply(self): 1826bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo """If any cell is being edited, de-highlight the cell and applies 1827bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo the changes.""" 1828bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self, 'edit', 'apply') 1829bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 1830bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def edit_set(self, x, y): 1831bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo """Highlights the cell at (x, y) for editing, if the -editnotify 1832bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo command returns True for this cell.""" 1833bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self, 'edit', 'set', x, y) 183449fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 183549fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def entrycget(self, x, y, option): 183649fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters "Get the option value for cell at (x,y)" 1837bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo if option and option[0] != '-': 1838bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo option = '-' + option 183949fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters return self.tk.call(self, 'entrycget', x, y, option) 184049fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 1841bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def entryconfigure(self, x, y, cnf=None, **kw): 1842bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo return self._configure(('entryconfigure', x, y), cnf, kw) 1843bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 1844d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz # def format 1845d8b5e3fda1d82dfc1f56a31e48124ff4e5a02bdcNeal Norwitz # def index 184649fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 184749fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def info_exists(self, x, y): 184849fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters "Return True if display item exists at (x,y)" 1849bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo return self._getboolean(self.tk.call(self, 'info', 'exists', x, y)) 185049fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 185149fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def info_bbox(self, x, y): 185249fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # This seems to always return '', at least for 'text' displayitems 185349fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters return self.tk.call(self, 'info', 'bbox', x, y) 185449fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 1855bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def move_column(self, from_, to, offset): 1856e130a52d8a60229f53c8bc2ea7a1f51ee592bbd7Ezio Melotti """Moves the range of columns from position FROM through TO by 1857bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo the distance indicated by OFFSET. For example, move_column(2, 4, 1) 1858bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo moves the columns 2,3,4 to columns 3,4,5.""" 1859bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self, 'move', 'column', from_, to, offset) 1860bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 1861bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def move_row(self, from_, to, offset): 1862e130a52d8a60229f53c8bc2ea7a1f51ee592bbd7Ezio Melotti """Moves the range of rows from position FROM through TO by 1863bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo the distance indicated by OFFSET. 1864bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo For example, move_row(2, 4, 1) moves the rows 2,3,4 to rows 3,4,5.""" 1865bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self, 'move', 'row', from_, to, offset) 1866bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 186749fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def nearest(self, x, y): 186849fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters "Return coordinate of cell nearest pixel coordinate (x,y)" 186949fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters return self._getints(self.tk.call(self, 'nearest', x, y)) 187049fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 187149fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # def selection adjust 187249fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # def selection clear 187349fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # def selection includes 187449fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # def selection set 187549fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters # def selection toggle 187649fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 187749fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def set(self, x, y, itemtype=None, **kw): 187849fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters args= self._options(self.cnf, kw) 187949fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters if itemtype is not None: 188049fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters args= ('-itemtype', itemtype) + args 188149fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters self.tk.call(self, 'set', x, y, *args) 188249fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters 1883bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def size_column(self, index, **kw): 1884c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy """Queries or sets the size of the column given by 1885c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy INDEX. INDEX may be any non-negative 1886c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy integer that gives the position of a given column. 1887bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo INDEX can also be the string "default"; in this case, this command 1888bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo queries or sets the default size of all columns. 1889c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy When no option-value pair is given, this command returns a tuple 1890c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy containing the current size setting of the given column. When 1891c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy option-value pairs are given, the corresponding options of the 1892bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo size setting of the given column are changed. Options may be one 1893c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy of the follwing: 1894bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo pad0 pixels 1895bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo Specifies the paddings to the left of a column. 1896bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo pad1 pixels 1897c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy Specifies the paddings to the right of a column. 1898bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo size val 1899c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy Specifies the width of a column. Val may be: 1900c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy "auto" -- the width of the column is set to the 1901c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy width of the widest cell in the column; 1902c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy a valid Tk screen distance unit; 1903c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy or a real number following by the word chars 1904bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo (e.g. 3.4chars) that sets the width of the column to the 1905bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo given number of characters.""" 19066bc87b4b4dc9566c4ee8bf1a256e0f2686cf0f4bSerhiy Storchaka return self.tk.splitlist(self.tk.call(self._w, 'size', 'column', index, 1907bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo *self._options({}, kw))) 1908bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 1909bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def size_row(self, index, **kw): 1910c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy """Queries or sets the size of the row given by 1911c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy INDEX. INDEX may be any non-negative 1912c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy integer that gives the position of a given row . 1913bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo INDEX can also be the string "default"; in this case, this command 1914bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo queries or sets the default size of all rows. 1915c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy When no option-value pair is given, this command returns a list con- 1916c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy taining the current size setting of the given row . When option-value 1917bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo pairs are given, the corresponding options of the size setting of the 1918bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo given row are changed. Options may be one of the follwing: 1919bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo pad0 pixels 1920bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo Specifies the paddings to the top of a row. 1921bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo pad1 pixels 1922e130a52d8a60229f53c8bc2ea7a1f51ee592bbd7Ezio Melotti Specifies the paddings to the bottom of a row. 1923bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo size val 1924c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy Specifies the height of a row. Val may be: 1925c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy "auto" -- the height of the row is set to the 1926c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy height of the highest cell in the row; 1927c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy a valid Tk screen distance unit; 1928c30b7b16ea03ad094917615940cd1a9ef53c4904Terry Jan Reedy or a real number following by the word chars 1929bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo (e.g. 3.4chars) that sets the height of the row to the 1930bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo given number of characters.""" 19316bc87b4b4dc9566c4ee8bf1a256e0f2686cf0f4bSerhiy Storchaka return self.tk.splitlist(self.tk.call( 1932bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self, 'size', 'row', index, *self._options({}, kw))) 1933bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 1934bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo def unset(self, x, y): 1935bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo """Clears the cell at (x, y) by removing its display item.""" 1936bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo self.tk.call(self._w, 'unset', x, y) 1937bcd03df1bd71a8fe272018072fc6ee145e83b425Guilherme Polo 1938ff41c48a77b7d1411ce97190c8b8405bdaa261e1Raymond Hettinger 193949fd7fa4431da299196d74087df4a04f99f9c46fThomas Woutersclass ScrolledGrid(Grid): 1940468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis '''Scrolled Grid widgets''' 1941468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis 1942468742878f53bb0a9061e6b167b3150f341fdf1cMartin v. Löwis # FIXME: It should inherit -superclass tixScrolledWidget 194349fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters def __init__(self, master=None, cnf={}, **kw): 194449fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters static= [] 194549fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters self.cnf= cnf 194649fd7fa4431da299196d74087df4a04f99f9c46fThomas Wouters TixWidget.__init__(self, master, 'tixScrolledGrid', static, cnf, kw) 1947