Spaces:
Runtime error
Runtime error
| # Tix.py -- Tix widget wrappers. | |
| # | |
| # For Tix, see http://tix.sourceforge.net | |
| # | |
| # - Sudhir Shenoy (sshenoy@gol.com), Dec. 1995. | |
| # based on an idea of Jean-Marc Lugrin (lugrin@ms.com) | |
| # | |
| # NOTE: In order to minimize changes to Tkinter.py, some of the code here | |
| # (TixWidget.__init__) has been taken from Tkinter (Widget.__init__) | |
| # and will break if there are major changes in Tkinter. | |
| # | |
| # The Tix widgets are represented by a class hierarchy in python with proper | |
| # inheritance of base classes. | |
| # | |
| # As a result after creating a 'w = StdButtonBox', I can write | |
| # w.ok['text'] = 'Who Cares' | |
| # or w.ok['bg'] = w['bg'] | |
| # or even w.ok.invoke() | |
| # etc. | |
| # | |
| # Compare the demo tixwidgets.py to the original Tcl program and you will | |
| # appreciate the advantages. | |
| # | |
| # NOTE: This module is deprecated since Python 3.6. | |
| import os | |
| import warnings | |
| import tkinter | |
| from tkinter import * | |
| from tkinter import _cnfmerge | |
| warnings.warn( | |
| 'The Tix Tk extension is unmaintained, and the tkinter.tix wrapper module' | |
| ' is deprecated in favor of tkinter.ttk', | |
| DeprecationWarning, | |
| stacklevel=2, | |
| ) | |
| # Some more constants (for consistency with Tkinter) | |
| WINDOW = 'window' | |
| TEXT = 'text' | |
| STATUS = 'status' | |
| IMMEDIATE = 'immediate' | |
| IMAGE = 'image' | |
| IMAGETEXT = 'imagetext' | |
| BALLOON = 'balloon' | |
| AUTO = 'auto' | |
| ACROSSTOP = 'acrosstop' | |
| # A few useful constants for the Grid widget | |
| ASCII = 'ascii' | |
| CELL = 'cell' | |
| COLUMN = 'column' | |
| DECREASING = 'decreasing' | |
| INCREASING = 'increasing' | |
| INTEGER = 'integer' | |
| MAIN = 'main' | |
| MAX = 'max' | |
| REAL = 'real' | |
| ROW = 'row' | |
| S_REGION = 's-region' | |
| X_REGION = 'x-region' | |
| Y_REGION = 'y-region' | |
| # Some constants used by Tkinter dooneevent() | |
| TCL_DONT_WAIT = 1 << 1 | |
| TCL_WINDOW_EVENTS = 1 << 2 | |
| TCL_FILE_EVENTS = 1 << 3 | |
| TCL_TIMER_EVENTS = 1 << 4 | |
| TCL_IDLE_EVENTS = 1 << 5 | |
| TCL_ALL_EVENTS = 0 | |
| # BEWARE - this is implemented by copying some code from the Widget class | |
| # in Tkinter (to override Widget initialization) and is therefore | |
| # liable to break. | |
| # Could probably add this to Tkinter.Misc | |
| class tixCommand: | |
| """The tix commands provide access to miscellaneous elements | |
| of Tix's internal state and the Tix application context. | |
| Most of the information manipulated by these commands pertains | |
| to the application as a whole, or to a screen or | |
| display, rather than to a particular window. | |
| This is a mixin class, assumed to be mixed to Tkinter.Tk | |
| that supports the self.tk.call method. | |
| """ | |
| def tix_addbitmapdir(self, directory): | |
| """Tix maintains a list of directories under which | |
| the tix_getimage and tix_getbitmap commands will | |
| search for image files. The standard bitmap directory | |
| is $TIX_LIBRARY/bitmaps. The addbitmapdir command | |
| adds directory into this list. By using this | |
| command, the image files of an applications can | |
| also be located using the tix_getimage or tix_getbitmap | |
| command. | |
| """ | |
| return self.tk.call('tix', 'addbitmapdir', directory) | |
| def tix_cget(self, option): | |
| """Returns the current value of the configuration | |
| option given by option. Option may be any of the | |
| options described in the CONFIGURATION OPTIONS section. | |
| """ | |
| return self.tk.call('tix', 'cget', option) | |
| def tix_configure(self, cnf=None, **kw): | |
| """Query or modify the configuration options of the Tix application | |
| context. If no option is specified, returns a dictionary all of the | |
| available options. If option is specified with no value, then the | |
| command returns a list describing the one named option (this list | |
| will be identical to the corresponding sublist of the value | |
| returned if no option is specified). If one or more option-value | |
| pairs are specified, then the command modifies the given option(s) | |
| to have the given value(s); in this case the command returns an | |
| empty string. Option may be any of the configuration options. | |
| """ | |
| # Copied from Tkinter.py | |
| if kw: | |
| cnf = _cnfmerge((cnf, kw)) | |
| elif cnf: | |
| cnf = _cnfmerge(cnf) | |
| if cnf is None: | |
| return self._getconfigure('tix', 'configure') | |
| if isinstance(cnf, str): | |
| return self._getconfigure1('tix', 'configure', '-'+cnf) | |
| return self.tk.call(('tix', 'configure') + self._options(cnf)) | |
| def tix_filedialog(self, dlgclass=None): | |
| """Returns the file selection dialog that may be shared among | |
| different calls from this application. This command will create a | |
| file selection dialog widget when it is called the first time. This | |
| dialog will be returned by all subsequent calls to tix_filedialog. | |
| An optional dlgclass parameter can be passed to specified what type | |
| of file selection dialog widget is desired. Possible options are | |
| tix FileSelectDialog or tixExFileSelectDialog. | |
| """ | |
| if dlgclass is not None: | |
| return self.tk.call('tix', 'filedialog', dlgclass) | |
| else: | |
| return self.tk.call('tix', 'filedialog') | |
| def tix_getbitmap(self, name): | |
| """Locates a bitmap file of the name name.xpm or name in one of the | |
| bitmap directories (see the tix_addbitmapdir command above). By | |
| using tix_getbitmap, you can avoid hard coding the pathnames of the | |
| bitmap files in your application. When successful, it returns the | |
| complete pathname of the bitmap file, prefixed with the character | |
| '@'. The returned value can be used to configure the -bitmap | |
| option of the TK and Tix widgets. | |
| """ | |
| return self.tk.call('tix', 'getbitmap', name) | |
| def tix_getimage(self, name): | |
| """Locates an image file of the name name.xpm, name.xbm or name.ppm | |
| in one of the bitmap directories (see the addbitmapdir command | |
| above). If more than one file with the same name (but different | |
| extensions) exist, then the image type is chosen according to the | |
| depth of the X display: xbm images are chosen on monochrome | |
| displays and color images are chosen on color displays. By using | |
| tix_ getimage, you can avoid hard coding the pathnames of the | |
| image files in your application. When successful, this command | |
| returns the name of the newly created image, which can be used to | |
| configure the -image option of the Tk and Tix widgets. | |
| """ | |
| return self.tk.call('tix', 'getimage', name) | |
| def tix_option_get(self, name): | |
| """Gets the options maintained by the Tix | |
| scheme mechanism. Available options include: | |
| active_bg active_fg bg | |
| bold_font dark1_bg dark1_fg | |
| dark2_bg dark2_fg disabled_fg | |
| fg fixed_font font | |
| inactive_bg inactive_fg input1_bg | |
| input2_bg italic_font light1_bg | |
| light1_fg light2_bg light2_fg | |
| menu_font output1_bg output2_bg | |
| select_bg select_fg selector | |
| """ | |
| # could use self.tk.globalgetvar('tixOption', name) | |
| return self.tk.call('tix', 'option', 'get', name) | |
| def tix_resetoptions(self, newScheme, newFontSet, newScmPrio=None): | |
| """Resets the scheme and fontset of the Tix application to | |
| newScheme and newFontSet, respectively. This affects only those | |
| widgets created after this call. Therefore, it is best to call the | |
| resetoptions command before the creation of any widgets in a Tix | |
| application. | |
| The optional parameter newScmPrio can be given to reset the | |
| priority level of the Tk options set by the Tix schemes. | |
| Because of the way Tk handles the X option database, after Tix has | |
| been has imported and inited, it is not possible to reset the color | |
| schemes and font sets using the tix config command. Instead, the | |
| tix_resetoptions command must be used. | |
| """ | |
| if newScmPrio is not None: | |
| return self.tk.call('tix', 'resetoptions', newScheme, newFontSet, newScmPrio) | |
| else: | |
| return self.tk.call('tix', 'resetoptions', newScheme, newFontSet) | |
| class Tk(tkinter.Tk, tixCommand): | |
| """Toplevel widget of Tix which represents mostly the main window | |
| of an application. It has an associated Tcl interpreter.""" | |
| def __init__(self, screenName=None, baseName=None, className='Tix'): | |
| tkinter.Tk.__init__(self, screenName, baseName, className) | |
| tixlib = os.environ.get('TIX_LIBRARY') | |
| self.tk.eval('global auto_path; lappend auto_path [file dir [info nameof]]') | |
| if tixlib is not None: | |
| self.tk.eval('global auto_path; lappend auto_path {%s}' % tixlib) | |
| self.tk.eval('global tcl_pkgPath; lappend tcl_pkgPath {%s}' % tixlib) | |
| # Load Tix - this should work dynamically or statically | |
| # If it's static, tcl/tix8.1/pkgIndex.tcl should have | |
| # 'load {} Tix' | |
| # If it's dynamic under Unix, tcl/tix8.1/pkgIndex.tcl should have | |
| # 'load libtix8.1.8.3.so Tix' | |
| self.tk.eval('package require Tix') | |
| def destroy(self): | |
| # For safety, remove the delete_window binding before destroy | |
| self.protocol("WM_DELETE_WINDOW", "") | |
| tkinter.Tk.destroy(self) | |
| # The Tix 'tixForm' geometry manager | |
| class Form: | |
| """The Tix Form geometry manager | |
| Widgets can be arranged by specifying attachments to other widgets. | |
| See Tix documentation for complete details""" | |
| def config(self, cnf={}, **kw): | |
| self.tk.call('tixForm', self._w, *self._options(cnf, kw)) | |
| form = config | |
| def __setitem__(self, key, value): | |
| Form.form(self, {key: value}) | |
| def check(self): | |
| return self.tk.call('tixForm', 'check', self._w) | |
| def forget(self): | |
| self.tk.call('tixForm', 'forget', self._w) | |
| def grid(self, xsize=0, ysize=0): | |
| if (not xsize) and (not ysize): | |
| x = self.tk.call('tixForm', 'grid', self._w) | |
| y = self.tk.splitlist(x) | |
| z = () | |
| for x in y: | |
| z = z + (self.tk.getint(x),) | |
| return z | |
| return self.tk.call('tixForm', 'grid', self._w, xsize, ysize) | |
| def info(self, option=None): | |
| if not option: | |
| return self.tk.call('tixForm', 'info', self._w) | |
| if option[0] != '-': | |
| option = '-' + option | |
| return self.tk.call('tixForm', 'info', self._w, option) | |
| def slaves(self): | |
| return [self._nametowidget(x) for x in | |
| self.tk.splitlist( | |
| self.tk.call( | |
| 'tixForm', 'slaves', self._w))] | |
| tkinter.Widget.__bases__ = tkinter.Widget.__bases__ + (Form,) | |
| class TixWidget(tkinter.Widget): | |
| """A TixWidget class is used to package all (or most) Tix widgets. | |
| Widget initialization is extended in two ways: | |
| 1) It is possible to give a list of options which must be part of | |
| the creation command (so called Tix 'static' options). These cannot be | |
| given as a 'config' command later. | |
| 2) It is possible to give the name of an existing TK widget. These are | |
| child widgets created automatically by a Tix mega-widget. The Tk call | |
| to create these widgets is therefore bypassed in TixWidget.__init__ | |
| Both options are for use by subclasses only. | |
| """ | |
| def __init__ (self, master=None, widgetName=None, | |
| static_options=None, cnf={}, kw={}): | |
| # Merge keywords and dictionary arguments | |
| if kw: | |
| cnf = _cnfmerge((cnf, kw)) | |
| else: | |
| cnf = _cnfmerge(cnf) | |
| # Move static options into extra. static_options must be | |
| # a list of keywords (or None). | |
| extra=() | |
| # 'options' is always a static option | |
| if static_options: | |
| static_options.append('options') | |
| else: | |
| static_options = ['options'] | |
| for k,v in list(cnf.items()): | |
| if k in static_options: | |
| extra = extra + ('-' + k, v) | |
| del cnf[k] | |
| self.widgetName = widgetName | |
| self._setup(master, cnf) | |
| # If widgetName is None, this is a dummy creation call where the | |
| # corresponding Tk widget has already been created by Tix | |
| if widgetName: | |
| self.tk.call(widgetName, self._w, *extra) | |
| # Non-static options - to be done via a 'config' command | |
| if cnf: | |
| Widget.config(self, cnf) | |
| # Dictionary to hold subwidget names for easier access. We can't | |
| # use the children list because the public Tix names may not be the | |
| # same as the pathname component | |
| self.subwidget_list = {} | |
| # We set up an attribute access function so that it is possible to | |
| # do w.ok['text'] = 'Hello' rather than w.subwidget('ok')['text'] = 'Hello' | |
| # when w is a StdButtonBox. | |
| # We can even do w.ok.invoke() because w.ok is subclassed from the | |
| # Button class if you go through the proper constructors | |
| def __getattr__(self, name): | |
| if name in self.subwidget_list: | |
| return self.subwidget_list[name] | |
| raise AttributeError(name) | |
| def set_silent(self, value): | |
| """Set a variable without calling its action routine""" | |
| self.tk.call('tixSetSilent', self._w, value) | |
| def subwidget(self, name): | |
| """Return the named subwidget (which must have been created by | |
| the sub-class).""" | |
| n = self._subwidget_name(name) | |
| if not n: | |
| raise TclError("Subwidget " + name + " not child of " + self._name) | |
| # Remove header of name and leading dot | |
| n = n[len(self._w)+1:] | |
| return self._nametowidget(n) | |
| def subwidgets_all(self): | |
| """Return all subwidgets.""" | |
| names = self._subwidget_names() | |
| if not names: | |
| return [] | |
| retlist = [] | |
| for name in names: | |
| name = name[len(self._w)+1:] | |
| try: | |
| retlist.append(self._nametowidget(name)) | |
| except: | |
| # some of the widgets are unknown e.g. border in LabelFrame | |
| pass | |
| return retlist | |
| def _subwidget_name(self,name): | |
| """Get a subwidget name (returns a String, not a Widget !)""" | |
| try: | |
| return self.tk.call(self._w, 'subwidget', name) | |
| except TclError: | |
| return None | |
| def _subwidget_names(self): | |
| """Return the name of all subwidgets.""" | |
| try: | |
| x = self.tk.call(self._w, 'subwidgets', '-all') | |
| return self.tk.splitlist(x) | |
| except TclError: | |
| return None | |
| def config_all(self, option, value): | |
| """Set configuration options for all subwidgets (and self).""" | |
| if option == '': | |
| return | |
| elif not isinstance(option, str): | |
| option = repr(option) | |
| if not isinstance(value, str): | |
| value = repr(value) | |
| names = self._subwidget_names() | |
| for name in names: | |
| self.tk.call(name, 'configure', '-' + option, value) | |
| # These are missing from Tkinter | |
| def image_create(self, imgtype, cnf={}, master=None, **kw): | |
| if master is None: | |
| master = self | |
| if kw and cnf: cnf = _cnfmerge((cnf, kw)) | |
| elif kw: cnf = kw | |
| options = () | |
| for k, v in cnf.items(): | |
| if callable(v): | |
| v = self._register(v) | |
| options = options + ('-'+k, v) | |
| return master.tk.call(('image', 'create', imgtype,) + options) | |
| def image_delete(self, imgname): | |
| try: | |
| self.tk.call('image', 'delete', imgname) | |
| except TclError: | |
| # May happen if the root was destroyed | |
| pass | |
| # Subwidgets are child widgets created automatically by mega-widgets. | |
| # In python, we have to create these subwidgets manually to mirror their | |
| # existence in Tk/Tix. | |
| class TixSubWidget(TixWidget): | |
| """Subwidget class. | |
| This is used to mirror child widgets automatically created | |
| by Tix/Tk as part of a mega-widget in Python (which is not informed | |
| of this)""" | |
| def __init__(self, master, name, | |
| destroy_physically=1, check_intermediate=1): | |
| if check_intermediate: | |
| path = master._subwidget_name(name) | |
| try: | |
| path = path[len(master._w)+1:] | |
| plist = path.split('.') | |
| except: | |
| plist = [] | |
| if not check_intermediate: | |
| # immediate descendant | |
| TixWidget.__init__(self, master, None, None, {'name' : name}) | |
| else: | |
| # Ensure that the intermediate widgets exist | |
| parent = master | |
| for i in range(len(plist) - 1): | |
| n = '.'.join(plist[:i+1]) | |
| try: | |
| w = master._nametowidget(n) | |
| parent = w | |
| except KeyError: | |
| # Create the intermediate widget | |
| parent = TixSubWidget(parent, plist[i], | |
| destroy_physically=0, | |
| check_intermediate=0) | |
| # The Tk widget name is in plist, not in name | |
| if plist: | |
| name = plist[-1] | |
| TixWidget.__init__(self, parent, None, None, {'name' : name}) | |
| self.destroy_physically = destroy_physically | |
| def destroy(self): | |
| # For some widgets e.g., a NoteBook, when we call destructors, | |
| # we must be careful not to destroy the frame widget since this | |
| # also destroys the parent NoteBook thus leading to an exception | |
| # in Tkinter when it finally calls Tcl to destroy the NoteBook | |
| for c in list(self.children.values()): c.destroy() | |
| if self._name in self.master.children: | |
| del self.master.children[self._name] | |
| if self._name in self.master.subwidget_list: | |
| del self.master.subwidget_list[self._name] | |
| if self.destroy_physically: | |
| # This is bypassed only for a few widgets | |
| self.tk.call('destroy', self._w) | |
| # Useful class to create a display style - later shared by many items. | |
| # Contributed by Steffen Kremser | |
| class DisplayStyle: | |
| """DisplayStyle - handle configuration options shared by | |
| (multiple) Display Items""" | |
| def __init__(self, itemtype, cnf={}, *, master=None, **kw): | |
| if master is None: | |
| if 'refwindow' in kw: | |
| master = kw['refwindow'] | |
| elif 'refwindow' in cnf: | |
| master = cnf['refwindow'] | |
| else: | |
| master = tkinter._get_default_root('create display style') | |
| self.tk = master.tk | |
| self.stylename = self.tk.call('tixDisplayStyle', itemtype, | |
| *self._options(cnf,kw) ) | |
| def __str__(self): | |
| return self.stylename | |
| def _options(self, cnf, kw): | |
| if kw and cnf: | |
| cnf = _cnfmerge((cnf, kw)) | |
| elif kw: | |
| cnf = kw | |
| opts = () | |
| for k, v in cnf.items(): | |
| opts = opts + ('-'+k, v) | |
| return opts | |
| def delete(self): | |
| self.tk.call(self.stylename, 'delete') | |
| def __setitem__(self,key,value): | |
| self.tk.call(self.stylename, 'configure', '-%s'%key, value) | |
| def config(self, cnf={}, **kw): | |
| return self._getconfigure( | |
| self.stylename, 'configure', *self._options(cnf,kw)) | |
| def __getitem__(self,key): | |
| return self.tk.call(self.stylename, 'cget', '-%s'%key) | |
| ###################################################### | |
| ### The Tix Widget classes - in alphabetical order ### | |
| ###################################################### | |
| class Balloon(TixWidget): | |
| """Balloon help widget. | |
| Subwidget Class | |
| --------- ----- | |
| label Label | |
| message Message""" | |
| # FIXME: It should inherit -superclass tixShell | |
| def __init__(self, master=None, cnf={}, **kw): | |
| # static seem to be -installcolormap -initwait -statusbar -cursor | |
| static = ['options', 'installcolormap', 'initwait', 'statusbar', | |
| 'cursor'] | |
| TixWidget.__init__(self, master, 'tixBalloon', static, cnf, kw) | |
| self.subwidget_list['label'] = _dummyLabel(self, 'label', | |
| destroy_physically=0) | |
| self.subwidget_list['message'] = _dummyLabel(self, 'message', | |
| destroy_physically=0) | |
| def bind_widget(self, widget, cnf={}, **kw): | |
| """Bind balloon widget to another. | |
| One balloon widget may be bound to several widgets at the same time""" | |
| self.tk.call(self._w, 'bind', widget._w, *self._options(cnf, kw)) | |
| def unbind_widget(self, widget): | |
| self.tk.call(self._w, 'unbind', widget._w) | |
| class ButtonBox(TixWidget): | |
| """ButtonBox - A container for pushbuttons. | |
| Subwidgets are the buttons added with the add method. | |
| """ | |
| def __init__(self, master=None, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixButtonBox', | |
| ['orientation', 'options'], cnf, kw) | |
| def add(self, name, cnf={}, **kw): | |
| """Add a button with given name to box.""" | |
| btn = self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) | |
| self.subwidget_list[name] = _dummyButton(self, name) | |
| return btn | |
| def invoke(self, name): | |
| if name in self.subwidget_list: | |
| self.tk.call(self._w, 'invoke', name) | |
| class ComboBox(TixWidget): | |
| """ComboBox - an Entry field with a dropdown menu. The user can select a | |
| choice by either typing in the entry subwidget or selecting from the | |
| listbox subwidget. | |
| Subwidget Class | |
| --------- ----- | |
| entry Entry | |
| arrow Button | |
| slistbox ScrolledListBox | |
| tick Button | |
| cross Button : present if created with the fancy option""" | |
| # FIXME: It should inherit -superclass tixLabelWidget | |
| def __init__ (self, master=None, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixComboBox', | |
| ['editable', 'dropdown', 'fancy', 'options'], | |
| cnf, kw) | |
| self.subwidget_list['label'] = _dummyLabel(self, 'label') | |
| self.subwidget_list['entry'] = _dummyEntry(self, 'entry') | |
| self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') | |
| self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, | |
| 'slistbox') | |
| try: | |
| self.subwidget_list['tick'] = _dummyButton(self, 'tick') | |
| self.subwidget_list['cross'] = _dummyButton(self, 'cross') | |
| except TypeError: | |
| # unavailable when -fancy not specified | |
| pass | |
| # align | |
| def add_history(self, str): | |
| self.tk.call(self._w, 'addhistory', str) | |
| def append_history(self, str): | |
| self.tk.call(self._w, 'appendhistory', str) | |
| def insert(self, index, str): | |
| self.tk.call(self._w, 'insert', index, str) | |
| def pick(self, index): | |
| self.tk.call(self._w, 'pick', index) | |
| class Control(TixWidget): | |
| """Control - An entry field with value change arrows. The user can | |
| adjust the value by pressing the two arrow buttons or by entering | |
| the value directly into the entry. The new value will be checked | |
| against the user-defined upper and lower limits. | |
| Subwidget Class | |
| --------- ----- | |
| incr Button | |
| decr Button | |
| entry Entry | |
| label Label""" | |
| # FIXME: It should inherit -superclass tixLabelWidget | |
| def __init__ (self, master=None, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixControl', ['options'], cnf, kw) | |
| self.subwidget_list['incr'] = _dummyButton(self, 'incr') | |
| self.subwidget_list['decr'] = _dummyButton(self, 'decr') | |
| self.subwidget_list['label'] = _dummyLabel(self, 'label') | |
| self.subwidget_list['entry'] = _dummyEntry(self, 'entry') | |
| def decrement(self): | |
| self.tk.call(self._w, 'decr') | |
| def increment(self): | |
| self.tk.call(self._w, 'incr') | |
| def invoke(self): | |
| self.tk.call(self._w, 'invoke') | |
| def update(self): | |
| self.tk.call(self._w, 'update') | |
| class DirList(TixWidget): | |
| """DirList - displays a list view of a directory, its previous | |
| directories and its sub-directories. The user can choose one of | |
| the directories displayed in the list or change to another directory. | |
| Subwidget Class | |
| --------- ----- | |
| hlist HList | |
| hsb Scrollbar | |
| vsb Scrollbar""" | |
| # FIXME: It should inherit -superclass tixScrolledHList | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixDirList', ['options'], cnf, kw) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| def chdir(self, dir): | |
| self.tk.call(self._w, 'chdir', dir) | |
| class DirTree(TixWidget): | |
| """DirTree - Directory Listing in a hierarchical view. | |
| Displays a tree view of a directory, its previous directories and its | |
| sub-directories. The user can choose one of the directories displayed | |
| in the list or change to another directory. | |
| Subwidget Class | |
| --------- ----- | |
| hlist HList | |
| hsb Scrollbar | |
| vsb Scrollbar""" | |
| # FIXME: It should inherit -superclass tixScrolledHList | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixDirTree', ['options'], cnf, kw) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| def chdir(self, dir): | |
| self.tk.call(self._w, 'chdir', dir) | |
| class DirSelectBox(TixWidget): | |
| """DirSelectBox - Motif style file select box. | |
| It is generally used for | |
| the user to choose a file. FileSelectBox stores the files mostly | |
| recently selected into a ComboBox widget so that they can be quickly | |
| selected again. | |
| Subwidget Class | |
| --------- ----- | |
| selection ComboBox | |
| filter ComboBox | |
| dirlist ScrolledListBox | |
| filelist ScrolledListBox""" | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixDirSelectBox', ['options'], cnf, kw) | |
| self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') | |
| self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx') | |
| class ExFileSelectBox(TixWidget): | |
| """ExFileSelectBox - MS Windows style file select box. | |
| It provides a convenient method for the user to select files. | |
| Subwidget Class | |
| --------- ----- | |
| cancel Button | |
| ok Button | |
| hidden Checkbutton | |
| types ComboBox | |
| dir ComboBox | |
| file ComboBox | |
| dirlist ScrolledListBox | |
| filelist ScrolledListBox""" | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixExFileSelectBox', ['options'], cnf, kw) | |
| self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') | |
| self.subwidget_list['ok'] = _dummyButton(self, 'ok') | |
| self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') | |
| self.subwidget_list['types'] = _dummyComboBox(self, 'types') | |
| self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') | |
| self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') | |
| self.subwidget_list['file'] = _dummyComboBox(self, 'file') | |
| self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') | |
| def filter(self): | |
| self.tk.call(self._w, 'filter') | |
| def invoke(self): | |
| self.tk.call(self._w, 'invoke') | |
| # Should inherit from a Dialog class | |
| class DirSelectDialog(TixWidget): | |
| """The DirSelectDialog widget presents the directories in the file | |
| system in a dialog window. The user can use this dialog window to | |
| navigate through the file system to select the desired directory. | |
| Subwidgets Class | |
| ---------- ----- | |
| dirbox DirSelectDialog""" | |
| # FIXME: It should inherit -superclass tixDialogShell | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixDirSelectDialog', | |
| ['options'], cnf, kw) | |
| self.subwidget_list['dirbox'] = _dummyDirSelectBox(self, 'dirbox') | |
| # cancel and ok buttons are missing | |
| def popup(self): | |
| self.tk.call(self._w, 'popup') | |
| def popdown(self): | |
| self.tk.call(self._w, 'popdown') | |
| # Should inherit from a Dialog class | |
| class ExFileSelectDialog(TixWidget): | |
| """ExFileSelectDialog - MS Windows style file select dialog. | |
| It provides a convenient method for the user to select files. | |
| Subwidgets Class | |
| ---------- ----- | |
| fsbox ExFileSelectBox""" | |
| # FIXME: It should inherit -superclass tixDialogShell | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixExFileSelectDialog', | |
| ['options'], cnf, kw) | |
| self.subwidget_list['fsbox'] = _dummyExFileSelectBox(self, 'fsbox') | |
| def popup(self): | |
| self.tk.call(self._w, 'popup') | |
| def popdown(self): | |
| self.tk.call(self._w, 'popdown') | |
| class FileSelectBox(TixWidget): | |
| """ExFileSelectBox - Motif style file select box. | |
| It is generally used for | |
| the user to choose a file. FileSelectBox stores the files mostly | |
| recently selected into a ComboBox widget so that they can be quickly | |
| selected again. | |
| Subwidget Class | |
| --------- ----- | |
| selection ComboBox | |
| filter ComboBox | |
| dirlist ScrolledListBox | |
| filelist ScrolledListBox""" | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixFileSelectBox', ['options'], cnf, kw) | |
| self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') | |
| self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') | |
| self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') | |
| self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') | |
| def apply_filter(self): # name of subwidget is same as command | |
| self.tk.call(self._w, 'filter') | |
| def invoke(self): | |
| self.tk.call(self._w, 'invoke') | |
| # Should inherit from a Dialog class | |
| class FileSelectDialog(TixWidget): | |
| """FileSelectDialog - Motif style file select dialog. | |
| Subwidgets Class | |
| ---------- ----- | |
| btns StdButtonBox | |
| fsbox FileSelectBox""" | |
| # FIXME: It should inherit -superclass tixStdDialogShell | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixFileSelectDialog', | |
| ['options'], cnf, kw) | |
| self.subwidget_list['btns'] = _dummyStdButtonBox(self, 'btns') | |
| self.subwidget_list['fsbox'] = _dummyFileSelectBox(self, 'fsbox') | |
| def popup(self): | |
| self.tk.call(self._w, 'popup') | |
| def popdown(self): | |
| self.tk.call(self._w, 'popdown') | |
| class FileEntry(TixWidget): | |
| """FileEntry - Entry field with button that invokes a FileSelectDialog. | |
| The user can type in the filename manually. Alternatively, the user can | |
| press the button widget that sits next to the entry, which will bring | |
| up a file selection dialog. | |
| Subwidgets Class | |
| ---------- ----- | |
| button Button | |
| entry Entry""" | |
| # FIXME: It should inherit -superclass tixLabelWidget | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixFileEntry', | |
| ['dialogtype', 'options'], cnf, kw) | |
| self.subwidget_list['button'] = _dummyButton(self, 'button') | |
| self.subwidget_list['entry'] = _dummyEntry(self, 'entry') | |
| def invoke(self): | |
| self.tk.call(self._w, 'invoke') | |
| def file_dialog(self): | |
| # FIXME: return python object | |
| pass | |
| class HList(TixWidget, XView, YView): | |
| """HList - Hierarchy display widget can be used to display any data | |
| that have a hierarchical structure, for example, file system directory | |
| trees. The list entries are indented and connected by branch lines | |
| according to their places in the hierarchy. | |
| Subwidgets - None""" | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixHList', | |
| ['columns', 'options'], cnf, kw) | |
| def add(self, entry, cnf={}, **kw): | |
| return self.tk.call(self._w, 'add', entry, *self._options(cnf, kw)) | |
| def add_child(self, parent=None, cnf={}, **kw): | |
| if parent is None: | |
| parent = '' | |
| return self.tk.call( | |
| self._w, 'addchild', parent, *self._options(cnf, kw)) | |
| def anchor_set(self, entry): | |
| self.tk.call(self._w, 'anchor', 'set', entry) | |
| def anchor_clear(self): | |
| self.tk.call(self._w, 'anchor', 'clear') | |
| def column_width(self, col=0, width=None, chars=None): | |
| if not chars: | |
| return self.tk.call(self._w, 'column', 'width', col, width) | |
| else: | |
| return self.tk.call(self._w, 'column', 'width', col, | |
| '-char', chars) | |
| def delete_all(self): | |
| self.tk.call(self._w, 'delete', 'all') | |
| def delete_entry(self, entry): | |
| self.tk.call(self._w, 'delete', 'entry', entry) | |
| def delete_offsprings(self, entry): | |
| self.tk.call(self._w, 'delete', 'offsprings', entry) | |
| def delete_siblings(self, entry): | |
| self.tk.call(self._w, 'delete', 'siblings', entry) | |
| def dragsite_set(self, index): | |
| self.tk.call(self._w, 'dragsite', 'set', index) | |
| def dragsite_clear(self): | |
| self.tk.call(self._w, 'dragsite', 'clear') | |
| def dropsite_set(self, index): | |
| self.tk.call(self._w, 'dropsite', 'set', index) | |
| def dropsite_clear(self): | |
| self.tk.call(self._w, 'dropsite', 'clear') | |
| def header_create(self, col, cnf={}, **kw): | |
| self.tk.call(self._w, 'header', 'create', col, *self._options(cnf, kw)) | |
| def header_configure(self, col, cnf={}, **kw): | |
| if cnf is None: | |
| return self._getconfigure(self._w, 'header', 'configure', col) | |
| self.tk.call(self._w, 'header', 'configure', col, | |
| *self._options(cnf, kw)) | |
| def header_cget(self, col, opt): | |
| return self.tk.call(self._w, 'header', 'cget', col, opt) | |
| def header_exists(self, col): | |
| # A workaround to Tix library bug (issue #25464). | |
| # The documented command is "exists", but only erroneous "exist" is | |
| # accepted. | |
| return self.tk.getboolean(self.tk.call(self._w, 'header', 'exist', col)) | |
| header_exist = header_exists | |
| def header_delete(self, col): | |
| self.tk.call(self._w, 'header', 'delete', col) | |
| def header_size(self, col): | |
| return self.tk.call(self._w, 'header', 'size', col) | |
| def hide_entry(self, entry): | |
| self.tk.call(self._w, 'hide', 'entry', entry) | |
| def indicator_create(self, entry, cnf={}, **kw): | |
| self.tk.call( | |
| self._w, 'indicator', 'create', entry, *self._options(cnf, kw)) | |
| def indicator_configure(self, entry, cnf={}, **kw): | |
| if cnf is None: | |
| return self._getconfigure( | |
| self._w, 'indicator', 'configure', entry) | |
| self.tk.call( | |
| self._w, 'indicator', 'configure', entry, *self._options(cnf, kw)) | |
| def indicator_cget(self, entry, opt): | |
| return self.tk.call(self._w, 'indicator', 'cget', entry, opt) | |
| def indicator_exists(self, entry): | |
| return self.tk.call (self._w, 'indicator', 'exists', entry) | |
| def indicator_delete(self, entry): | |
| self.tk.call(self._w, 'indicator', 'delete', entry) | |
| def indicator_size(self, entry): | |
| return self.tk.call(self._w, 'indicator', 'size', entry) | |
| def info_anchor(self): | |
| return self.tk.call(self._w, 'info', 'anchor') | |
| def info_bbox(self, entry): | |
| return self._getints( | |
| self.tk.call(self._w, 'info', 'bbox', entry)) or None | |
| def info_children(self, entry=None): | |
| c = self.tk.call(self._w, 'info', 'children', entry) | |
| return self.tk.splitlist(c) | |
| def info_data(self, entry): | |
| return self.tk.call(self._w, 'info', 'data', entry) | |
| def info_dragsite(self): | |
| return self.tk.call(self._w, 'info', 'dragsite') | |
| def info_dropsite(self): | |
| return self.tk.call(self._w, 'info', 'dropsite') | |
| def info_exists(self, entry): | |
| return self.tk.call(self._w, 'info', 'exists', entry) | |
| def info_hidden(self, entry): | |
| return self.tk.call(self._w, 'info', 'hidden', entry) | |
| def info_next(self, entry): | |
| return self.tk.call(self._w, 'info', 'next', entry) | |
| def info_parent(self, entry): | |
| return self.tk.call(self._w, 'info', 'parent', entry) | |
| def info_prev(self, entry): | |
| return self.tk.call(self._w, 'info', 'prev', entry) | |
| def info_selection(self): | |
| c = self.tk.call(self._w, 'info', 'selection') | |
| return self.tk.splitlist(c) | |
| def item_cget(self, entry, col, opt): | |
| return self.tk.call(self._w, 'item', 'cget', entry, col, opt) | |
| def item_configure(self, entry, col, cnf={}, **kw): | |
| if cnf is None: | |
| return self._getconfigure(self._w, 'item', 'configure', entry, col) | |
| self.tk.call(self._w, 'item', 'configure', entry, col, | |
| *self._options(cnf, kw)) | |
| def item_create(self, entry, col, cnf={}, **kw): | |
| self.tk.call( | |
| self._w, 'item', 'create', entry, col, *self._options(cnf, kw)) | |
| def item_exists(self, entry, col): | |
| return self.tk.call(self._w, 'item', 'exists', entry, col) | |
| def item_delete(self, entry, col): | |
| self.tk.call(self._w, 'item', 'delete', entry, col) | |
| def entrycget(self, entry, opt): | |
| return self.tk.call(self._w, 'entrycget', entry, opt) | |
| def entryconfigure(self, entry, cnf={}, **kw): | |
| if cnf is None: | |
| return self._getconfigure(self._w, 'entryconfigure', entry) | |
| self.tk.call(self._w, 'entryconfigure', entry, | |
| *self._options(cnf, kw)) | |
| def nearest(self, y): | |
| return self.tk.call(self._w, 'nearest', y) | |
| def see(self, entry): | |
| self.tk.call(self._w, 'see', entry) | |
| def selection_clear(self, cnf={}, **kw): | |
| self.tk.call(self._w, 'selection', 'clear', *self._options(cnf, kw)) | |
| def selection_includes(self, entry): | |
| return self.tk.call(self._w, 'selection', 'includes', entry) | |
| def selection_set(self, first, last=None): | |
| self.tk.call(self._w, 'selection', 'set', first, last) | |
| def show_entry(self, entry): | |
| return self.tk.call(self._w, 'show', 'entry', entry) | |
| class InputOnly(TixWidget): | |
| """InputOnly - Invisible widget. Unix only. | |
| Subwidgets - None""" | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixInputOnly', None, cnf, kw) | |
| class LabelEntry(TixWidget): | |
| """LabelEntry - Entry field with label. Packages an entry widget | |
| and a label into one mega widget. It can be used to simplify the creation | |
| of ``entry-form'' type of interface. | |
| Subwidgets Class | |
| ---------- ----- | |
| label Label | |
| entry Entry""" | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixLabelEntry', | |
| ['labelside','options'], cnf, kw) | |
| self.subwidget_list['label'] = _dummyLabel(self, 'label') | |
| self.subwidget_list['entry'] = _dummyEntry(self, 'entry') | |
| class LabelFrame(TixWidget): | |
| """LabelFrame - Labelled Frame container. Packages a frame widget | |
| and a label into one mega widget. To create widgets inside a | |
| LabelFrame widget, one creates the new widgets relative to the | |
| frame subwidget and manage them inside the frame subwidget. | |
| Subwidgets Class | |
| ---------- ----- | |
| label Label | |
| frame Frame""" | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixLabelFrame', | |
| ['labelside','options'], cnf, kw) | |
| self.subwidget_list['label'] = _dummyLabel(self, 'label') | |
| self.subwidget_list['frame'] = _dummyFrame(self, 'frame') | |
| class ListNoteBook(TixWidget): | |
| """A ListNoteBook widget is very similar to the TixNoteBook widget: | |
| it can be used to display many windows in a limited space using a | |
| notebook metaphor. The notebook is divided into a stack of pages | |
| (windows). At one time only one of these pages can be shown. | |
| The user can navigate through these pages by | |
| choosing the name of the desired page in the hlist subwidget.""" | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixListNoteBook', ['options'], cnf, kw) | |
| # Is this necessary? It's not an exposed subwidget in Tix. | |
| self.subwidget_list['pane'] = _dummyPanedWindow(self, 'pane', | |
| destroy_physically=0) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['shlist'] = _dummyScrolledHList(self, 'shlist') | |
| def add(self, name, cnf={}, **kw): | |
| self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) | |
| self.subwidget_list[name] = TixSubWidget(self, name) | |
| return self.subwidget_list[name] | |
| def page(self, name): | |
| return self.subwidget(name) | |
| def pages(self): | |
| # Can't call subwidgets_all directly because we don't want .nbframe | |
| names = self.tk.splitlist(self.tk.call(self._w, 'pages')) | |
| ret = [] | |
| for x in names: | |
| ret.append(self.subwidget(x)) | |
| return ret | |
| def raise_page(self, name): # raise is a python keyword | |
| self.tk.call(self._w, 'raise', name) | |
| class Meter(TixWidget): | |
| """The Meter widget can be used to show the progress of a background | |
| job which may take a long time to execute. | |
| """ | |
| def __init__(self, master=None, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixMeter', | |
| ['options'], cnf, kw) | |
| class NoteBook(TixWidget): | |
| """NoteBook - Multi-page container widget (tabbed notebook metaphor). | |
| Subwidgets Class | |
| ---------- ----- | |
| nbframe NoteBookFrame | |
| <pages> page widgets added dynamically with the add method""" | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self,master,'tixNoteBook', ['options'], cnf, kw) | |
| self.subwidget_list['nbframe'] = TixSubWidget(self, 'nbframe', | |
| destroy_physically=0) | |
| def add(self, name, cnf={}, **kw): | |
| self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) | |
| self.subwidget_list[name] = TixSubWidget(self, name) | |
| return self.subwidget_list[name] | |
| def delete(self, name): | |
| self.tk.call(self._w, 'delete', name) | |
| self.subwidget_list[name].destroy() | |
| del self.subwidget_list[name] | |
| def page(self, name): | |
| return self.subwidget(name) | |
| def pages(self): | |
| # Can't call subwidgets_all directly because we don't want .nbframe | |
| names = self.tk.splitlist(self.tk.call(self._w, 'pages')) | |
| ret = [] | |
| for x in names: | |
| ret.append(self.subwidget(x)) | |
| return ret | |
| def raise_page(self, name): # raise is a python keyword | |
| self.tk.call(self._w, 'raise', name) | |
| def raised(self): | |
| return self.tk.call(self._w, 'raised') | |
| class NoteBookFrame(TixWidget): | |
| # FIXME: This is dangerous to expose to be called on its own. | |
| pass | |
| class OptionMenu(TixWidget): | |
| """OptionMenu - creates a menu button of options. | |
| Subwidget Class | |
| --------- ----- | |
| menubutton Menubutton | |
| menu Menu""" | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixOptionMenu', ['options'], cnf, kw) | |
| self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') | |
| self.subwidget_list['menu'] = _dummyMenu(self, 'menu') | |
| def add_command(self, name, cnf={}, **kw): | |
| self.tk.call(self._w, 'add', 'command', name, *self._options(cnf, kw)) | |
| def add_separator(self, name, cnf={}, **kw): | |
| self.tk.call(self._w, 'add', 'separator', name, *self._options(cnf, kw)) | |
| def delete(self, name): | |
| self.tk.call(self._w, 'delete', name) | |
| def disable(self, name): | |
| self.tk.call(self._w, 'disable', name) | |
| def enable(self, name): | |
| self.tk.call(self._w, 'enable', name) | |
| class PanedWindow(TixWidget): | |
| """PanedWindow - Multi-pane container widget | |
| allows the user to interactively manipulate the sizes of several | |
| panes. The panes can be arranged either vertically or horizontally.The | |
| user changes the sizes of the panes by dragging the resize handle | |
| between two panes. | |
| Subwidgets Class | |
| ---------- ----- | |
| <panes> g/p widgets added dynamically with the add method.""" | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixPanedWindow', ['orientation', 'options'], cnf, kw) | |
| # add delete forget panecget paneconfigure panes setsize | |
| def add(self, name, cnf={}, **kw): | |
| self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) | |
| self.subwidget_list[name] = TixSubWidget(self, name, | |
| check_intermediate=0) | |
| return self.subwidget_list[name] | |
| def delete(self, name): | |
| self.tk.call(self._w, 'delete', name) | |
| self.subwidget_list[name].destroy() | |
| del self.subwidget_list[name] | |
| def forget(self, name): | |
| self.tk.call(self._w, 'forget', name) | |
| def panecget(self, entry, opt): | |
| return self.tk.call(self._w, 'panecget', entry, opt) | |
| def paneconfigure(self, entry, cnf={}, **kw): | |
| if cnf is None: | |
| return self._getconfigure(self._w, 'paneconfigure', entry) | |
| self.tk.call(self._w, 'paneconfigure', entry, *self._options(cnf, kw)) | |
| def panes(self): | |
| names = self.tk.splitlist(self.tk.call(self._w, 'panes')) | |
| return [self.subwidget(x) for x in names] | |
| class PopupMenu(TixWidget): | |
| """PopupMenu widget can be used as a replacement of the tk_popup command. | |
| The advantage of the Tix PopupMenu widget is it requires less application | |
| code to manipulate. | |
| Subwidgets Class | |
| ---------- ----- | |
| menubutton Menubutton | |
| menu Menu""" | |
| # FIXME: It should inherit -superclass tixShell | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixPopupMenu', ['options'], cnf, kw) | |
| self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') | |
| self.subwidget_list['menu'] = _dummyMenu(self, 'menu') | |
| def bind_widget(self, widget): | |
| self.tk.call(self._w, 'bind', widget._w) | |
| def unbind_widget(self, widget): | |
| self.tk.call(self._w, 'unbind', widget._w) | |
| def post_widget(self, widget, x, y): | |
| self.tk.call(self._w, 'post', widget._w, x, y) | |
| class ResizeHandle(TixWidget): | |
| """Internal widget to draw resize handles on Scrolled widgets.""" | |
| def __init__(self, master, cnf={}, **kw): | |
| # There seems to be a Tix bug rejecting the configure method | |
| # Let's try making the flags -static | |
| flags = ['options', 'command', 'cursorfg', 'cursorbg', | |
| 'handlesize', 'hintcolor', 'hintwidth', | |
| 'x', 'y'] | |
| # In fact, x y height width are configurable | |
| TixWidget.__init__(self, master, 'tixResizeHandle', | |
| flags, cnf, kw) | |
| def attach_widget(self, widget): | |
| self.tk.call(self._w, 'attachwidget', widget._w) | |
| def detach_widget(self, widget): | |
| self.tk.call(self._w, 'detachwidget', widget._w) | |
| def hide(self, widget): | |
| self.tk.call(self._w, 'hide', widget._w) | |
| def show(self, widget): | |
| self.tk.call(self._w, 'show', widget._w) | |
| class ScrolledHList(TixWidget): | |
| """ScrolledHList - HList with automatic scrollbars.""" | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixScrolledHList', ['options'], | |
| cnf, kw) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class ScrolledListBox(TixWidget): | |
| """ScrolledListBox - Listbox with automatic scrollbars.""" | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixScrolledListBox', ['options'], cnf, kw) | |
| self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class ScrolledText(TixWidget): | |
| """ScrolledText - Text with automatic scrollbars.""" | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixScrolledText', ['options'], cnf, kw) | |
| self.subwidget_list['text'] = _dummyText(self, 'text') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class ScrolledTList(TixWidget): | |
| """ScrolledTList - TList with automatic scrollbars.""" | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixScrolledTList', ['options'], | |
| cnf, kw) | |
| self.subwidget_list['tlist'] = _dummyTList(self, 'tlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class ScrolledWindow(TixWidget): | |
| """ScrolledWindow - Window with automatic scrollbars.""" | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixScrolledWindow', ['options'], cnf, kw) | |
| self.subwidget_list['window'] = _dummyFrame(self, 'window') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class Select(TixWidget): | |
| """Select - Container of button subwidgets. It can be used to provide | |
| radio-box or check-box style of selection options for the user. | |
| Subwidgets are buttons added dynamically using the add method.""" | |
| # FIXME: It should inherit -superclass tixLabelWidget | |
| def __init__(self, master, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixSelect', | |
| ['allowzero', 'radio', 'orientation', 'labelside', | |
| 'options'], | |
| cnf, kw) | |
| self.subwidget_list['label'] = _dummyLabel(self, 'label') | |
| def add(self, name, cnf={}, **kw): | |
| self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) | |
| self.subwidget_list[name] = _dummyButton(self, name) | |
| return self.subwidget_list[name] | |
| def invoke(self, name): | |
| self.tk.call(self._w, 'invoke', name) | |
| class Shell(TixWidget): | |
| """Toplevel window. | |
| Subwidgets - None""" | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixShell', ['options', 'title'], cnf, kw) | |
| class DialogShell(TixWidget): | |
| """Toplevel window, with popup popdown and center methods. | |
| It tells the window manager that it is a dialog window and should be | |
| treated specially. The exact treatment depends on the treatment of | |
| the window manager. | |
| Subwidgets - None""" | |
| # FIXME: It should inherit from Shell | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self, master, | |
| 'tixDialogShell', | |
| ['options', 'title', 'mapped', | |
| 'minheight', 'minwidth', | |
| 'parent', 'transient'], cnf, kw) | |
| def popdown(self): | |
| self.tk.call(self._w, 'popdown') | |
| def popup(self): | |
| self.tk.call(self._w, 'popup') | |
| def center(self): | |
| self.tk.call(self._w, 'center') | |
| class StdButtonBox(TixWidget): | |
| """StdButtonBox - Standard Button Box (OK, Apply, Cancel and Help) """ | |
| def __init__(self, master=None, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixStdButtonBox', | |
| ['orientation', 'options'], cnf, kw) | |
| self.subwidget_list['ok'] = _dummyButton(self, 'ok') | |
| self.subwidget_list['apply'] = _dummyButton(self, 'apply') | |
| self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') | |
| self.subwidget_list['help'] = _dummyButton(self, 'help') | |
| def invoke(self, name): | |
| if name in self.subwidget_list: | |
| self.tk.call(self._w, 'invoke', name) | |
| class TList(TixWidget, XView, YView): | |
| """TList - Hierarchy display widget which can be | |
| used to display data in a tabular format. The list entries of a TList | |
| widget are similar to the entries in the Tk listbox widget. The main | |
| differences are (1) the TList widget can display the list entries in a | |
| two dimensional format and (2) you can use graphical images as well as | |
| multiple colors and fonts for the list entries. | |
| Subwidgets - None""" | |
| def __init__ (self,master=None,cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixTList', ['options'], cnf, kw) | |
| def active_set(self, index): | |
| self.tk.call(self._w, 'active', 'set', index) | |
| def active_clear(self): | |
| self.tk.call(self._w, 'active', 'clear') | |
| def anchor_set(self, index): | |
| self.tk.call(self._w, 'anchor', 'set', index) | |
| def anchor_clear(self): | |
| self.tk.call(self._w, 'anchor', 'clear') | |
| def delete(self, from_, to=None): | |
| self.tk.call(self._w, 'delete', from_, to) | |
| def dragsite_set(self, index): | |
| self.tk.call(self._w, 'dragsite', 'set', index) | |
| def dragsite_clear(self): | |
| self.tk.call(self._w, 'dragsite', 'clear') | |
| def dropsite_set(self, index): | |
| self.tk.call(self._w, 'dropsite', 'set', index) | |
| def dropsite_clear(self): | |
| self.tk.call(self._w, 'dropsite', 'clear') | |
| def insert(self, index, cnf={}, **kw): | |
| self.tk.call(self._w, 'insert', index, *self._options(cnf, kw)) | |
| def info_active(self): | |
| return self.tk.call(self._w, 'info', 'active') | |
| def info_anchor(self): | |
| return self.tk.call(self._w, 'info', 'anchor') | |
| def info_down(self, index): | |
| return self.tk.call(self._w, 'info', 'down', index) | |
| def info_left(self, index): | |
| return self.tk.call(self._w, 'info', 'left', index) | |
| def info_right(self, index): | |
| return self.tk.call(self._w, 'info', 'right', index) | |
| def info_selection(self): | |
| c = self.tk.call(self._w, 'info', 'selection') | |
| return self.tk.splitlist(c) | |
| def info_size(self): | |
| return self.tk.call(self._w, 'info', 'size') | |
| def info_up(self, index): | |
| return self.tk.call(self._w, 'info', 'up', index) | |
| def nearest(self, x, y): | |
| return self.tk.call(self._w, 'nearest', x, y) | |
| def see(self, index): | |
| self.tk.call(self._w, 'see', index) | |
| def selection_clear(self, cnf={}, **kw): | |
| self.tk.call(self._w, 'selection', 'clear', *self._options(cnf, kw)) | |
| def selection_includes(self, index): | |
| return self.tk.call(self._w, 'selection', 'includes', index) | |
| def selection_set(self, first, last=None): | |
| self.tk.call(self._w, 'selection', 'set', first, last) | |
| class Tree(TixWidget): | |
| """Tree - The tixTree widget can be used to display hierarchical | |
| data in a tree form. The user can adjust | |
| the view of the tree by opening or closing parts of the tree.""" | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| def __init__(self, master=None, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixTree', | |
| ['options'], cnf, kw) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| def autosetmode(self): | |
| '''This command calls the setmode method for all the entries in this | |
| Tree widget: if an entry has no child entries, its mode is set to | |
| none. Otherwise, if the entry has any hidden child entries, its mode is | |
| set to open; otherwise its mode is set to close.''' | |
| self.tk.call(self._w, 'autosetmode') | |
| def close(self, entrypath): | |
| '''Close the entry given by entryPath if its mode is close.''' | |
| self.tk.call(self._w, 'close', entrypath) | |
| def getmode(self, entrypath): | |
| '''Returns the current mode of the entry given by entryPath.''' | |
| return self.tk.call(self._w, 'getmode', entrypath) | |
| def open(self, entrypath): | |
| '''Open the entry given by entryPath if its mode is open.''' | |
| self.tk.call(self._w, 'open', entrypath) | |
| def setmode(self, entrypath, mode='none'): | |
| '''This command is used to indicate whether the entry given by | |
| entryPath has children entries and whether the children are visible. mode | |
| must be one of open, close or none. If mode is set to open, a (+) | |
| indicator is drawn next the entry. If mode is set to close, a (-) | |
| indicator is drawn next the entry. If mode is set to none, no | |
| indicators will be drawn for this entry. The default mode is none. The | |
| open mode indicates the entry has hidden children and this entry can be | |
| opened by the user. The close mode indicates that all the children of the | |
| entry are now visible and the entry can be closed by the user.''' | |
| self.tk.call(self._w, 'setmode', entrypath, mode) | |
| # Could try subclassing Tree for CheckList - would need another arg to init | |
| class CheckList(TixWidget): | |
| """The CheckList widget | |
| displays a list of items to be selected by the user. CheckList acts | |
| similarly to the Tk checkbutton or radiobutton widgets, except it is | |
| capable of handling many more items than checkbuttons or radiobuttons. | |
| """ | |
| # FIXME: It should inherit -superclass tixTree | |
| def __init__(self, master=None, cnf={}, **kw): | |
| TixWidget.__init__(self, master, 'tixCheckList', | |
| ['options', 'radio'], cnf, kw) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| def autosetmode(self): | |
| '''This command calls the setmode method for all the entries in this | |
| Tree widget: if an entry has no child entries, its mode is set to | |
| none. Otherwise, if the entry has any hidden child entries, its mode is | |
| set to open; otherwise its mode is set to close.''' | |
| self.tk.call(self._w, 'autosetmode') | |
| def close(self, entrypath): | |
| '''Close the entry given by entryPath if its mode is close.''' | |
| self.tk.call(self._w, 'close', entrypath) | |
| def getmode(self, entrypath): | |
| '''Returns the current mode of the entry given by entryPath.''' | |
| return self.tk.call(self._w, 'getmode', entrypath) | |
| def open(self, entrypath): | |
| '''Open the entry given by entryPath if its mode is open.''' | |
| self.tk.call(self._w, 'open', entrypath) | |
| def getselection(self, mode='on'): | |
| '''Returns a list of items whose status matches status. If status is | |
| not specified, the list of items in the "on" status will be returned. | |
| Mode can be on, off, default''' | |
| return self.tk.splitlist(self.tk.call(self._w, 'getselection', mode)) | |
| def getstatus(self, entrypath): | |
| '''Returns the current status of entryPath.''' | |
| return self.tk.call(self._w, 'getstatus', entrypath) | |
| def setstatus(self, entrypath, mode='on'): | |
| '''Sets the status of entryPath to be status. A bitmap will be | |
| displayed next to the entry its status is on, off or default.''' | |
| self.tk.call(self._w, 'setstatus', entrypath, mode) | |
| ########################################################################### | |
| ### The subclassing below is used to instantiate the subwidgets in each ### | |
| ### mega widget. This allows us to access their methods directly. ### | |
| ########################################################################### | |
| class _dummyButton(Button, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyCheckbutton(Checkbutton, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyEntry(Entry, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyFrame(Frame, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyLabel(Label, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyListbox(Listbox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyMenu(Menu, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyMenubutton(Menubutton, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyScrollbar(Scrollbar, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyText(Text, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyScrolledListBox(ScrolledListBox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class _dummyHList(HList, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyScrolledHList(ScrolledHList, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class _dummyTList(TList, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyComboBox(ComboBox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, ['fancy',destroy_physically]) | |
| self.subwidget_list['label'] = _dummyLabel(self, 'label') | |
| self.subwidget_list['entry'] = _dummyEntry(self, 'entry') | |
| self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') | |
| self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, | |
| 'slistbox') | |
| try: | |
| self.subwidget_list['tick'] = _dummyButton(self, 'tick') | |
| #cross Button : present if created with the fancy option | |
| self.subwidget_list['cross'] = _dummyButton(self, 'cross') | |
| except TypeError: | |
| # unavailable when -fancy not specified | |
| pass | |
| class _dummyDirList(DirList, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') | |
| self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') | |
| self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') | |
| class _dummyDirSelectBox(DirSelectBox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') | |
| self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx') | |
| class _dummyExFileSelectBox(ExFileSelectBox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') | |
| self.subwidget_list['ok'] = _dummyButton(self, 'ok') | |
| self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') | |
| self.subwidget_list['types'] = _dummyComboBox(self, 'types') | |
| self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') | |
| self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') | |
| self.subwidget_list['file'] = _dummyComboBox(self, 'file') | |
| self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') | |
| class _dummyFileSelectBox(FileSelectBox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') | |
| self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') | |
| self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') | |
| self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') | |
| class _dummyFileComboBox(ComboBox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['dircbx'] = _dummyComboBox(self, 'dircbx') | |
| class _dummyStdButtonBox(StdButtonBox, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| self.subwidget_list['ok'] = _dummyButton(self, 'ok') | |
| self.subwidget_list['apply'] = _dummyButton(self, 'apply') | |
| self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') | |
| self.subwidget_list['help'] = _dummyButton(self, 'help') | |
| class _dummyNoteBookFrame(NoteBookFrame, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=0): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| class _dummyPanedWindow(PanedWindow, TixSubWidget): | |
| def __init__(self, master, name, destroy_physically=1): | |
| TixSubWidget.__init__(self, master, name, destroy_physically) | |
| ######################## | |
| ### Utility Routines ### | |
| ######################## | |
| #mike Should tixDestroy be exposed as a wrapper? - but not for widgets. | |
| def OptionName(widget): | |
| '''Returns the qualified path name for the widget. Normally used to set | |
| default options for subwidgets. See tixwidgets.py''' | |
| return widget.tk.call('tixOptionName', widget._w) | |
| # Called with a dictionary argument of the form | |
| # {'*.c':'C source files', '*.txt':'Text Files', '*':'All files'} | |
| # returns a string which can be used to configure the fsbox file types | |
| # in an ExFileSelectBox. i.e., | |
| # '{{*} {* - All files}} {{*.c} {*.c - C source files}} {{*.txt} {*.txt - Text Files}}' | |
| def FileTypeList(dict): | |
| s = '' | |
| for type in dict.keys(): | |
| s = s + '{{' + type + '} {' + type + ' - ' + dict[type] + '}} ' | |
| return s | |
| # Still to be done: | |
| # tixIconView | |
| class CObjView(TixWidget): | |
| """This file implements the Canvas Object View widget. This is a base | |
| class of IconView. It implements automatic placement/adjustment of the | |
| scrollbars according to the canvas objects inside the canvas subwidget. | |
| The scrollbars are adjusted so that the canvas is just large enough | |
| to see all the objects. | |
| """ | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| pass | |
| class Grid(TixWidget, XView, YView): | |
| '''The Tix Grid command creates a new window and makes it into a | |
| tixGrid widget. Additional options, may be specified on the command | |
| line or in the option database to configure aspects such as its cursor | |
| and relief. | |
| A Grid widget displays its contents in a two dimensional grid of cells. | |
| Each cell may contain one Tix display item, which may be in text, | |
| graphics or other formats. See the DisplayStyle class for more information | |
| about Tix display items. Individual cells, or groups of cells, can be | |
| formatted with a wide range of attributes, such as its color, relief and | |
| border. | |
| Subwidgets - None''' | |
| # valid specific resources as of Tk 8.4 | |
| # editdonecmd, editnotifycmd, floatingcols, floatingrows, formatcmd, | |
| # highlightbackground, highlightcolor, leftmargin, itemtype, selectmode, | |
| # selectunit, topmargin, | |
| def __init__(self, master=None, cnf={}, **kw): | |
| static= [] | |
| self.cnf= cnf | |
| TixWidget.__init__(self, master, 'tixGrid', static, cnf, kw) | |
| # valid options as of Tk 8.4 | |
| # anchor, bdtype, cget, configure, delete, dragsite, dropsite, entrycget, | |
| # edit, entryconfigure, format, geometryinfo, info, index, move, nearest, | |
| # selection, set, size, unset, xview, yview | |
| def anchor_clear(self): | |
| """Removes the selection anchor.""" | |
| self.tk.call(self, 'anchor', 'clear') | |
| def anchor_get(self): | |
| "Get the (x,y) coordinate of the current anchor cell" | |
| return self._getints(self.tk.call(self, 'anchor', 'get')) | |
| def anchor_set(self, x, y): | |
| """Set the selection anchor to the cell at (x, y).""" | |
| self.tk.call(self, 'anchor', 'set', x, y) | |
| def delete_row(self, from_, to=None): | |
| """Delete rows between from_ and to inclusive. | |
| If to is not provided, delete only row at from_""" | |
| if to is None: | |
| self.tk.call(self, 'delete', 'row', from_) | |
| else: | |
| self.tk.call(self, 'delete', 'row', from_, to) | |
| def delete_column(self, from_, to=None): | |
| """Delete columns between from_ and to inclusive. | |
| If to is not provided, delete only column at from_""" | |
| if to is None: | |
| self.tk.call(self, 'delete', 'column', from_) | |
| else: | |
| self.tk.call(self, 'delete', 'column', from_, to) | |
| def edit_apply(self): | |
| """If any cell is being edited, de-highlight the cell and applies | |
| the changes.""" | |
| self.tk.call(self, 'edit', 'apply') | |
| def edit_set(self, x, y): | |
| """Highlights the cell at (x, y) for editing, if the -editnotify | |
| command returns True for this cell.""" | |
| self.tk.call(self, 'edit', 'set', x, y) | |
| def entrycget(self, x, y, option): | |
| "Get the option value for cell at (x,y)" | |
| if option and option[0] != '-': | |
| option = '-' + option | |
| return self.tk.call(self, 'entrycget', x, y, option) | |
| def entryconfigure(self, x, y, cnf=None, **kw): | |
| return self._configure(('entryconfigure', x, y), cnf, kw) | |
| # def format | |
| # def index | |
| def info_exists(self, x, y): | |
| "Return True if display item exists at (x,y)" | |
| return self._getboolean(self.tk.call(self, 'info', 'exists', x, y)) | |
| def info_bbox(self, x, y): | |
| # This seems to always return '', at least for 'text' displayitems | |
| return self.tk.call(self, 'info', 'bbox', x, y) | |
| def move_column(self, from_, to, offset): | |
| """Moves the range of columns from position FROM through TO by | |
| the distance indicated by OFFSET. For example, move_column(2, 4, 1) | |
| moves the columns 2,3,4 to columns 3,4,5.""" | |
| self.tk.call(self, 'move', 'column', from_, to, offset) | |
| def move_row(self, from_, to, offset): | |
| """Moves the range of rows from position FROM through TO by | |
| the distance indicated by OFFSET. | |
| For example, move_row(2, 4, 1) moves the rows 2,3,4 to rows 3,4,5.""" | |
| self.tk.call(self, 'move', 'row', from_, to, offset) | |
| def nearest(self, x, y): | |
| "Return coordinate of cell nearest pixel coordinate (x,y)" | |
| return self._getints(self.tk.call(self, 'nearest', x, y)) | |
| # def selection adjust | |
| # def selection clear | |
| # def selection includes | |
| # def selection set | |
| # def selection toggle | |
| def set(self, x, y, itemtype=None, **kw): | |
| args= self._options(self.cnf, kw) | |
| if itemtype is not None: | |
| args= ('-itemtype', itemtype) + args | |
| self.tk.call(self, 'set', x, y, *args) | |
| def size_column(self, index, **kw): | |
| """Queries or sets the size of the column given by | |
| INDEX. INDEX may be any non-negative | |
| integer that gives the position of a given column. | |
| INDEX can also be the string "default"; in this case, this command | |
| queries or sets the default size of all columns. | |
| When no option-value pair is given, this command returns a tuple | |
| containing the current size setting of the given column. When | |
| option-value pairs are given, the corresponding options of the | |
| size setting of the given column are changed. Options may be one | |
| of the following: | |
| pad0 pixels | |
| Specifies the paddings to the left of a column. | |
| pad1 pixels | |
| Specifies the paddings to the right of a column. | |
| size val | |
| Specifies the width of a column. Val may be: | |
| "auto" -- the width of the column is set to the | |
| width of the widest cell in the column; | |
| a valid Tk screen distance unit; | |
| or a real number following by the word chars | |
| (e.g. 3.4chars) that sets the width of the column to the | |
| given number of characters.""" | |
| return self.tk.splitlist(self.tk.call(self._w, 'size', 'column', index, | |
| *self._options({}, kw))) | |
| def size_row(self, index, **kw): | |
| """Queries or sets the size of the row given by | |
| INDEX. INDEX may be any non-negative | |
| integer that gives the position of a given row . | |
| INDEX can also be the string "default"; in this case, this command | |
| queries or sets the default size of all rows. | |
| When no option-value pair is given, this command returns a list con- | |
| taining the current size setting of the given row . When option-value | |
| pairs are given, the corresponding options of the size setting of the | |
| given row are changed. Options may be one of the following: | |
| pad0 pixels | |
| Specifies the paddings to the top of a row. | |
| pad1 pixels | |
| Specifies the paddings to the bottom of a row. | |
| size val | |
| Specifies the height of a row. Val may be: | |
| "auto" -- the height of the row is set to the | |
| height of the highest cell in the row; | |
| a valid Tk screen distance unit; | |
| or a real number following by the word chars | |
| (e.g. 3.4chars) that sets the height of the row to the | |
| given number of characters.""" | |
| return self.tk.splitlist(self.tk.call( | |
| self, 'size', 'row', index, *self._options({}, kw))) | |
| def unset(self, x, y): | |
| """Clears the cell at (x, y) by removing its display item.""" | |
| self.tk.call(self._w, 'unset', x, y) | |
| class ScrolledGrid(Grid): | |
| '''Scrolled Grid widgets''' | |
| # FIXME: It should inherit -superclass tixScrolledWidget | |
| def __init__(self, master=None, cnf={}, **kw): | |
| static= [] | |
| self.cnf= cnf | |
| TixWidget.__init__(self, master, 'tixScrolledGrid', static, cnf, kw) | |