| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | # Tkinter.py -- Tk/Tcl widget wrappers | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | __version__ = "$Revision$" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  | 	# See if modern _tkinter is present | 
					
						
							|  |  |  | 	import _tkinter | 
					
						
							|  |  |  | 	tkinter = _tkinter # b/w compat | 
					
						
							|  |  |  | except ImportError: | 
					
						
							|  |  |  | 	# No modern _tkinter -- try oldfashioned tkinter | 
					
						
							|  |  |  | 	import tkinter | 
					
						
							|  |  |  | 	if hasattr(tkinter, "__path__"): | 
					
						
							|  |  |  | 		import sys, os | 
					
						
							|  |  |  | 		# Append standard platform specific directory | 
					
						
							|  |  |  | 		p = tkinter.__path__ | 
					
						
							|  |  |  | 		for dir in sys.path: | 
					
						
							|  |  |  | 			if (dir not in p and | 
					
						
							|  |  |  | 			    os.path.basename(dir) == sys.platform): | 
					
						
							|  |  |  | 				p.append(dir) | 
					
						
							|  |  |  | 		del sys, os, p, dir | 
					
						
							|  |  |  | 		from tkinter import tkinter | 
					
						
							|  |  |  | TclError = tkinter.TclError | 
					
						
							| 
									
										
										
										
											1995-03-17 16:21:33 +00:00
										 |  |  | from types import * | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | from Tkconstants import * | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | import string; _string = string; del string | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-05-16 17:11:27 +00:00
										 |  |  | TkVersion = _string.atof(tkinter.TK_VERSION) | 
					
						
							|  |  |  | TclVersion = _string.atof(tkinter.TCL_VERSION) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:51:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-05-16 17:11:27 +00:00
										 |  |  | ###################################################################### | 
					
						
							|  |  |  | # Since the values of file event masks changed from Tk 4.0 to Tk 4.1, | 
					
						
							|  |  |  | # they are defined here (and not in Tkconstants): | 
					
						
							|  |  |  | ###################################################################### | 
					
						
							|  |  |  | if TkVersion >= 4.1: | 
					
						
							|  |  |  |     READABLE = 2 | 
					
						
							|  |  |  |     WRITABLE = 4 | 
					
						
							|  |  |  |     EXCEPTION = 8 | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     READABLE = 1 | 
					
						
							|  |  |  |     WRITABLE = 2 | 
					
						
							|  |  |  |     EXCEPTION = 4 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | def _flatten(tuple): | 
					
						
							|  |  |  | 	res = () | 
					
						
							|  |  |  | 	for item in tuple: | 
					
						
							|  |  |  | 		if type(item) in (TupleType, ListType): | 
					
						
							|  |  |  | 			res = res + _flatten(item) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		elif item is not None: | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 			res = res + (item,) | 
					
						
							|  |  |  | 	return res | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | def _cnfmerge(cnfs): | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	if type(cnfs) is DictionaryType: | 
					
						
							|  |  |  | 		return cnfs | 
					
						
							|  |  |  | 	elif type(cnfs) in (NoneType, StringType): | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 		return cnfs | 
					
						
							|  |  |  | 	else: | 
					
						
							|  |  |  | 		cnf = {} | 
					
						
							|  |  |  | 		for c in _flatten(cnfs): | 
					
						
							|  |  |  | 			for k, v in c.items(): | 
					
						
							|  |  |  | 				cnf[k] = v | 
					
						
							|  |  |  | 		return cnf | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Event: | 
					
						
							|  |  |  | 	pass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | _default_root = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _tkerror(err): | 
					
						
							|  |  |  | 	pass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-07-07 13:12:12 +00:00
										 |  |  | def _exit(code='0'): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	raise SystemExit, code | 
					
						
							| 
									
										
										
										
											1994-07-07 13:12:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | _varnum = 0 | 
					
						
							|  |  |  | class Variable: | 
					
						
							|  |  |  | 	def __init__(self, master=None): | 
					
						
							|  |  |  | 		global _default_root | 
					
						
							|  |  |  | 		global _varnum | 
					
						
							|  |  |  | 		if master: | 
					
						
							|  |  |  | 			self._tk = master.tk | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			self._tk = _default_root.tk | 
					
						
							|  |  |  | 		self._name = 'PY_VAR' + `_varnum` | 
					
						
							|  |  |  | 		_varnum = _varnum + 1 | 
					
						
							|  |  |  | 	def __del__(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		self._tk.globalunsetvar(self._name) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 	def __str__(self): | 
					
						
							|  |  |  | 		return self._name | 
					
						
							|  |  |  | 	def set(self, value): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self._tk.globalsetvar(self._name, value) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class StringVar(Variable): | 
					
						
							|  |  |  | 	def __init__(self, master=None): | 
					
						
							|  |  |  | 		Variable.__init__(self, master) | 
					
						
							|  |  |  | 	def get(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self._tk.globalgetvar(self._name) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class IntVar(Variable): | 
					
						
							|  |  |  | 	def __init__(self, master=None): | 
					
						
							|  |  |  | 		Variable.__init__(self, master) | 
					
						
							|  |  |  | 	def get(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self._tk.getint(self._tk.globalgetvar(self._name)) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class DoubleVar(Variable): | 
					
						
							|  |  |  | 	def __init__(self, master=None): | 
					
						
							|  |  |  | 		Variable.__init__(self, master) | 
					
						
							|  |  |  | 	def get(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self._tk.getdouble(self._tk.globalgetvar(self._name)) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class BooleanVar(Variable): | 
					
						
							|  |  |  | 	def __init__(self, master=None): | 
					
						
							|  |  |  | 		Variable.__init__(self, master) | 
					
						
							|  |  |  | 	def get(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self._tk.getboolean(self._tk.globalgetvar(self._name)) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | def mainloop(n=0): | 
					
						
							|  |  |  | 	_default_root.tk.mainloop(n) | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def getint(s): | 
					
						
							|  |  |  | 	return _default_root.tk.getint(s) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def getdouble(s): | 
					
						
							|  |  |  | 	return _default_root.tk.getdouble(s) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def getboolean(s): | 
					
						
							|  |  |  | 	return _default_root.tk.getboolean(s) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | class Misc: | 
					
						
							|  |  |  | 	def tk_strictMotif(self, boolean=None): | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 		return self.tk.getboolean(self.tk.call( | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			'set', 'tk_strictMotif', boolean)) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 	def tk_menuBar(self, *args): | 
					
						
							|  |  |  | 		apply(self.tk.call, ('tk_menuBar', self._w) + args) | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 	def wait_variable(self, name='PY_VAR'): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.tk.call('tkwait', 'variable', name) | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 	waitvar = wait_variable # XXX b/w compat | 
					
						
							| 
									
										
										
										
											1994-06-27 23:15:31 +00:00
										 |  |  | 	def wait_window(self, window=None): | 
					
						
							|  |  |  | 		if window == None: | 
					
						
							|  |  |  | 			window = self | 
					
						
							|  |  |  | 		self.tk.call('tkwait', 'window', window._w) | 
					
						
							|  |  |  | 	def wait_visibility(self, window=None): | 
					
						
							|  |  |  | 		if window == None: | 
					
						
							|  |  |  | 			window = self | 
					
						
							|  |  |  | 		self.tk.call('tkwait', 'visibility', window._w) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 	def setvar(self, name='PY_VAR', value='1'): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.tk.setvar(name, value) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 	def getvar(self, name='PY_VAR'): | 
					
						
							| 
									
										
										
										
											1994-06-20 08:12:01 +00:00
										 |  |  | 		return self.tk.getvar(name) | 
					
						
							|  |  |  | 	def getint(self, s): | 
					
						
							|  |  |  | 		return self.tk.getint(s) | 
					
						
							| 
									
										
										
										
											1994-06-20 09:09:51 +00:00
										 |  |  | 	def getdouble(self, s): | 
					
						
							|  |  |  | 		return self.tk.getdouble(s) | 
					
						
							|  |  |  | 	def getboolean(self, s): | 
					
						
							|  |  |  | 		return self.tk.getboolean(s) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def focus_set(self): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.tk.call('focus', self._w) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	focus = focus_set # XXX b/w compat? | 
					
						
							|  |  |  | 	def focus_default_set(self): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.tk.call('focus', 'default', self._w) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def focus_default_none(self): | 
					
						
							|  |  |  | 		self.tk.call('focus', 'default', 'none') | 
					
						
							|  |  |  | 	focus_default = focus_default_set | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def focus_none(self): | 
					
						
							|  |  |  | 		self.tk.call('focus', 'none') | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def focus_get(self): | 
					
						
							|  |  |  | 		name = self.tk.call('focus') | 
					
						
							|  |  |  | 		if name == 'none': return None | 
					
						
							|  |  |  | 		return self._nametowidget(name) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def tk_focusNext(self): | 
					
						
							|  |  |  | 		name = self.tk.call('tk_focusNext', self._w) | 
					
						
							|  |  |  | 		if not name: return None | 
					
						
							|  |  |  | 		return self._nametowidget(name) | 
					
						
							|  |  |  | 	def tk_focusPrev(self): | 
					
						
							|  |  |  | 		name = self.tk.call('tk_focusPrev', self._w) | 
					
						
							|  |  |  | 		if not name: return None | 
					
						
							|  |  |  | 		return self._nametowidget(name) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def after(self, ms, func=None, *args): | 
					
						
							|  |  |  | 		if not func: | 
					
						
							| 
									
										
										
										
											1995-09-30 17:05:26 +00:00
										 |  |  | 			# I'd rather use time.sleep(ms*0.001) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			self.tk.call('after', ms) | 
					
						
							|  |  |  | 		else: | 
					
						
							| 
									
										
										
										
											1994-06-21 11:44:21 +00:00
										 |  |  | 			# XXX Disgusting hack to clean up after calling func | 
					
						
							|  |  |  | 			tmp = [] | 
					
						
							|  |  |  | 			def callit(func=func, args=args, tk=self.tk, tmp=tmp): | 
					
						
							|  |  |  | 				try: | 
					
						
							|  |  |  | 					apply(func, args) | 
					
						
							|  |  |  | 				finally: | 
					
						
							|  |  |  | 					tk.deletecommand(tmp[0]) | 
					
						
							|  |  |  | 			name = self._register(callit) | 
					
						
							|  |  |  | 			tmp.append(name) | 
					
						
							| 
									
										
										
										
											1995-09-30 17:05:26 +00:00
										 |  |  | 			return self.tk.call('after', ms, name) | 
					
						
							|  |  |  | 	def after_idle(self, func, *args): | 
					
						
							|  |  |  | 		return apply(self.after, ('idle', func) + args) | 
					
						
							|  |  |  | 	def after_cancel(self, id): | 
					
						
							|  |  |  | 		self.tk.call('after', 'cancel', id) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def bell(self, displayof=None): | 
					
						
							|  |  |  | 		if displayof: | 
					
						
							|  |  |  | 			self.tk.call('bell', '-displayof', displayof) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			self.tk.call('bell', '-displayof', self._w) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	# XXX grab current w/o window argument | 
					
						
							|  |  |  | 	def grab_current(self): | 
					
						
							|  |  |  | 		name = self.tk.call('grab', 'current', self._w) | 
					
						
							|  |  |  | 		if not name: return None | 
					
						
							|  |  |  | 		return self._nametowidget(name) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def grab_release(self): | 
					
						
							|  |  |  | 		self.tk.call('grab', 'release', self._w) | 
					
						
							|  |  |  | 	def grab_set(self): | 
					
						
							|  |  |  | 		self.tk.call('grab', 'set', self._w) | 
					
						
							|  |  |  | 	def grab_set_global(self): | 
					
						
							|  |  |  | 		self.tk.call('grab', 'set', '-global', self._w) | 
					
						
							|  |  |  | 	def grab_status(self): | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		status = self.tk.call('grab', 'status', self._w) | 
					
						
							|  |  |  | 		if status == 'none': status = None | 
					
						
							|  |  |  | 		return status | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def lower(self, belowThis=None): | 
					
						
							|  |  |  | 		self.tk.call('lower', self._w, belowThis) | 
					
						
							| 
									
										
										
										
											1994-10-20 22:02:27 +00:00
										 |  |  | 	def option_add(self, pattern, value, priority = None): | 
					
						
							| 
									
										
										
										
											1995-09-30 17:05:26 +00:00
										 |  |  | 		self.tk.call('option', 'add', pattern, value, priority) | 
					
						
							| 
									
										
										
										
											1994-10-20 22:02:27 +00:00
										 |  |  | 	def option_clear(self): | 
					
						
							|  |  |  | 		self.tk.call('option', 'clear') | 
					
						
							|  |  |  | 	def option_get(self, name, className): | 
					
						
							|  |  |  | 		return self.tk.call('option', 'get', self._w, name, className) | 
					
						
							|  |  |  | 	def option_readfile(self, fileName, priority = None): | 
					
						
							|  |  |  | 		self.tk.call('option', 'readfile', fileName, priority) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def selection_clear(self): | 
					
						
							|  |  |  | 		self.tk.call('selection', 'clear', self._w) | 
					
						
							|  |  |  | 	def selection_get(self, type=None): | 
					
						
							| 
									
										
										
										
											1994-07-04 10:48:25 +00:00
										 |  |  | 		return self.tk.call('selection', 'get', type) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def selection_handle(self, func, type=None, format=None): | 
					
						
							|  |  |  | 		name = self._register(func) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 		self.tk.call('selection', 'handle', self._w,  | 
					
						
							|  |  |  | 			     name, type, format) | 
					
						
							|  |  |  | 	def selection_own(self, func=None): | 
					
						
							|  |  |  | 		name = self._register(func) | 
					
						
							|  |  |  | 		self.tk.call('selection', 'own', self._w, name) | 
					
						
							|  |  |  | 	def selection_own_get(self): | 
					
						
							|  |  |  | 		return self._nametowidget(self.tk.call('selection', 'own')) | 
					
						
							|  |  |  | 	def send(self, interp, cmd, *args): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		return apply(self.tk.call, ('send', interp, cmd) + args) | 
					
						
							| 
									
										
										
										
											1994-06-20 08:12:01 +00:00
										 |  |  | 	def lower(self, belowThis=None): | 
					
						
							|  |  |  | 		self.tk.call('lift', self._w, belowThis) | 
					
						
							|  |  |  | 	def tkraise(self, aboveThis=None): | 
					
						
							|  |  |  | 		self.tk.call('raise', self._w, aboveThis) | 
					
						
							|  |  |  | 	lift = tkraise | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def colormodel(self, value=None): | 
					
						
							|  |  |  | 		return self.tk.call('tk', 'colormodel', self._w, value) | 
					
						
							|  |  |  | 	def winfo_atom(self, name): | 
					
						
							|  |  |  | 		return self.tk.getint(self.tk.call('winfo', 'atom', name)) | 
					
						
							|  |  |  | 	def winfo_atomname(self, id): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'atomname', id) | 
					
						
							|  |  |  | 	def winfo_cells(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'cells', self._w)) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def winfo_children(self): | 
					
						
							|  |  |  | 		return map(self._nametowidget, | 
					
						
							|  |  |  | 			   self.tk.splitlist(self.tk.call( | 
					
						
							|  |  |  | 				   'winfo', 'children', self._w))) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def winfo_class(self): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'class', self._w) | 
					
						
							|  |  |  | 	def winfo_containing(self, rootX, rootY): | 
					
						
							| 
									
										
										
										
											1996-05-16 17:11:27 +00:00
										 |  |  | 		return self.tk.call('winfo', 'containing', rootX, rootY) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def winfo_depth(self): | 
					
						
							|  |  |  | 		return self.tk.getint(self.tk.call('winfo', 'depth', self._w)) | 
					
						
							|  |  |  | 	def winfo_exists(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'exists', self._w)) | 
					
						
							|  |  |  | 	def winfo_fpixels(self, number): | 
					
						
							|  |  |  | 		return self.tk.getdouble(self.tk.call( | 
					
						
							|  |  |  | 			'winfo', 'fpixels', self._w, number)) | 
					
						
							|  |  |  | 	def winfo_geometry(self): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'geometry', self._w) | 
					
						
							|  |  |  | 	def winfo_height(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'height', self._w)) | 
					
						
							|  |  |  | 	def winfo_id(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'id', self._w)) | 
					
						
							|  |  |  | 	def winfo_interps(self): | 
					
						
							|  |  |  | 		return self.tk.splitlist( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'interps')) | 
					
						
							|  |  |  | 	def winfo_ismapped(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'ismapped', self._w)) | 
					
						
							|  |  |  | 	def winfo_name(self): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'name', self._w) | 
					
						
							|  |  |  | 	def winfo_parent(self): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'parent', self._w) | 
					
						
							|  |  |  | 	def winfo_pathname(self, id): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'pathname', id) | 
					
						
							|  |  |  | 	def winfo_pixels(self, number): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'pixels', self._w, number)) | 
					
						
							|  |  |  | 	def winfo_reqheight(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'reqheight', self._w)) | 
					
						
							|  |  |  | 	def winfo_reqwidth(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'reqwidth', self._w)) | 
					
						
							|  |  |  | 	def winfo_rgb(self, color): | 
					
						
							|  |  |  | 		return self._getints( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'rgb', self._w, color)) | 
					
						
							|  |  |  | 	def winfo_rootx(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'rootx', self._w)) | 
					
						
							|  |  |  | 	def winfo_rooty(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'rooty', self._w)) | 
					
						
							|  |  |  | 	def winfo_screen(self): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'screen', self._w) | 
					
						
							|  |  |  | 	def winfo_screencells(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'screencells', self._w)) | 
					
						
							|  |  |  | 	def winfo_screendepth(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'screendepth', self._w)) | 
					
						
							|  |  |  | 	def winfo_screenheight(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'screenheight', self._w)) | 
					
						
							|  |  |  | 	def winfo_screenmmheight(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'screenmmheight', self._w)) | 
					
						
							|  |  |  | 	def winfo_screenmmwidth(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'screenmmwidth', self._w)) | 
					
						
							|  |  |  | 	def winfo_screenvisual(self): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'screenvisual', self._w) | 
					
						
							|  |  |  | 	def winfo_screenwidth(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'screenwidth', self._w)) | 
					
						
							|  |  |  | 	def winfo_toplevel(self): | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 		return self._nametowidget(self.tk.call( | 
					
						
							|  |  |  | 			'winfo', 'toplevel', self._w)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def winfo_visual(self): | 
					
						
							|  |  |  | 		return self.tk.call('winfo', 'visual', self._w) | 
					
						
							|  |  |  | 	def winfo_vrootheight(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'vrootheight', self._w)) | 
					
						
							|  |  |  | 	def winfo_vrootwidth(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'vrootwidth', self._w)) | 
					
						
							|  |  |  | 	def winfo_vrootx(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'vrootx', self._w)) | 
					
						
							|  |  |  | 	def winfo_vrooty(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'vrooty', self._w)) | 
					
						
							|  |  |  | 	def winfo_width(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'width', self._w)) | 
					
						
							|  |  |  | 	def winfo_x(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'x', self._w)) | 
					
						
							|  |  |  | 	def winfo_y(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('winfo', 'y', self._w)) | 
					
						
							|  |  |  | 	def update(self): | 
					
						
							|  |  |  | 		self.tk.call('update') | 
					
						
							|  |  |  | 	def update_idletasks(self): | 
					
						
							|  |  |  | 		self.tk.call('update', 'idletasks') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def bindtags(self, tagList=None): | 
					
						
							|  |  |  | 		if tagList is None: | 
					
						
							|  |  |  | 			return self.tk.splitlist( | 
					
						
							|  |  |  | 				self.tk.call('bindtags', self._w)) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			self.tk.call('bindtags', self._w, tagList) | 
					
						
							|  |  |  | 	def _bind(self, what, sequence, func, add): | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		if func: | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 			cmd = ("%sset _tkinter_break [%s %s]\n" | 
					
						
							|  |  |  | 			       'if {"$_tkinter_break" == "break"} break\n') \ | 
					
						
							|  |  |  | 			       % (add and '+' or '', | 
					
						
							|  |  |  | 				  self._register(func, self._substitute), | 
					
						
							|  |  |  | 				  _string.join(self._subst_format)) | 
					
						
							|  |  |  | 			apply(self.tk.call, what + (sequence, cmd)) | 
					
						
							|  |  |  | 		elif func == '': | 
					
						
							|  |  |  | 			apply(self.tk.call, what + (sequence, func)) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		else: | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 			return apply(self.tk.call, what + (sequence,)) | 
					
						
							|  |  |  | 	def bind(self, sequence=None, func=None, add=None): | 
					
						
							|  |  |  | 		return self._bind(('bind', self._w), sequence, func, add) | 
					
						
							| 
									
										
										
										
											1994-08-08 12:47:33 +00:00
										 |  |  | 	def unbind(self, sequence): | 
					
						
							|  |  |  | 		self.tk.call('bind', self._w, sequence, '') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def bind_all(self, sequence=None, func=None, add=None): | 
					
						
							|  |  |  | 		return self._bind(('bind', 'all'), sequence, func, add) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def unbind_all(self, sequence): | 
					
						
							|  |  |  | 		self.tk.call('bind', 'all' , sequence, '') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def bind_class(self, className, sequence=None, func=None, add=None): | 
					
						
							|  |  |  | 		self._bind(('bind', className), sequence, func, add) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def unbind_class(self, className, sequence): | 
					
						
							|  |  |  | 		self.tk.call('bind', className , sequence, '') | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def mainloop(self, n=0): | 
					
						
							|  |  |  | 		self.tk.mainloop(n) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def quit(self): | 
					
						
							|  |  |  | 		self.tk.quit() | 
					
						
							|  |  |  | 	def _getints(self, string): | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		if not string: return None | 
					
						
							| 
									
										
										
										
											1995-03-17 16:21:33 +00:00
										 |  |  | 		return tuple(map(self.tk.getint, self.tk.splitlist(string))) | 
					
						
							|  |  |  | 	def _getdoubles(self, string): | 
					
						
							|  |  |  | 		if not string: return None | 
					
						
							|  |  |  | 		return tuple(map(self.tk.getdouble, self.tk.splitlist(string))) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def _getboolean(self, string): | 
					
						
							|  |  |  | 		if string: | 
					
						
							|  |  |  | 			return self.tk.getboolean(string) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def _options(self, cnf, kw = None): | 
					
						
							|  |  |  | 		if kw: | 
					
						
							|  |  |  | 			cnf = _cnfmerge((cnf, kw)) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			cnf = _cnfmerge(cnf) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		res = () | 
					
						
							|  |  |  | 		for k, v in cnf.items(): | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 			if k[-1] == '_': k = k[:-1] | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 			if callable(v): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 				v = self._register(v) | 
					
						
							|  |  |  | 			res = res + ('-'+k, v) | 
					
						
							|  |  |  | 		return res | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def _nametowidget(self, name): | 
					
						
							|  |  |  | 		w = self | 
					
						
							|  |  |  | 		if name[0] == '.': | 
					
						
							|  |  |  | 			w = w._root() | 
					
						
							|  |  |  | 			name = name[1:] | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		find = _string.find | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		while name: | 
					
						
							|  |  |  | 			i = find(name, '.') | 
					
						
							|  |  |  | 			if i >= 0: | 
					
						
							|  |  |  | 				name, tail = name[:i], name[i+1:] | 
					
						
							|  |  |  | 			else: | 
					
						
							|  |  |  | 				tail = '' | 
					
						
							|  |  |  | 			w = w.children[name] | 
					
						
							|  |  |  | 			name = tail | 
					
						
							|  |  |  | 		return w | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def _register(self, func, subst=None): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		f = CallWrapper(func, subst, self).__call__ | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		name = `id(f)` | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		try: | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			func = func.im_func | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		except AttributeError: | 
					
						
							|  |  |  | 			pass | 
					
						
							|  |  |  | 		try: | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 			name = name + func.__name__ | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		except AttributeError: | 
					
						
							|  |  |  | 			pass | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.tk.createcommand(name, f) | 
					
						
							|  |  |  | 		return name | 
					
						
							| 
									
										
										
										
											1994-06-27 23:15:31 +00:00
										 |  |  | 	register = _register | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def _root(self): | 
					
						
							|  |  |  | 		w = self | 
					
						
							|  |  |  | 		while w.master: w = w.master | 
					
						
							|  |  |  | 		return w | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 	_subst_format = ('%#', '%b', '%f', '%h', '%k',  | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 			 '%s', '%t', '%w', '%x', '%y', | 
					
						
							|  |  |  | 			 '%A', '%E', '%K', '%N', '%W', '%T', '%X', '%Y') | 
					
						
							|  |  |  | 	def _substitute(self, *args): | 
					
						
							|  |  |  | 		tk = self.tk | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 		if len(args) != len(self._subst_format): return args | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		nsign, b, f, h, k, s, t, w, x, y, A, E, K, N, W, T, X, Y = args | 
					
						
							|  |  |  | 		# Missing: (a, c, d, m, o, v, B, R) | 
					
						
							|  |  |  | 		e = Event() | 
					
						
							|  |  |  | 		e.serial = tk.getint(nsign) | 
					
						
							|  |  |  | 		e.num = tk.getint(b) | 
					
						
							|  |  |  | 		try: e.focus = tk.getboolean(f) | 
					
						
							|  |  |  | 		except TclError: pass | 
					
						
							|  |  |  | 		e.height = tk.getint(h) | 
					
						
							|  |  |  | 		e.keycode = tk.getint(k) | 
					
						
							| 
									
										
										
										
											1996-05-16 17:11:27 +00:00
										 |  |  | 		# For Visibility events, event state is a string and | 
					
						
							|  |  |  | 		# not an integer: | 
					
						
							|  |  |  | 		try: | 
					
						
							|  |  |  | 			e.state = tk.getint(s) | 
					
						
							|  |  |  | 		except TclError: | 
					
						
							|  |  |  | 			e.state = s | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		e.time = tk.getint(t) | 
					
						
							|  |  |  | 		e.width = tk.getint(w) | 
					
						
							|  |  |  | 		e.x = tk.getint(x) | 
					
						
							|  |  |  | 		e.y = tk.getint(y) | 
					
						
							|  |  |  | 		e.char = A | 
					
						
							|  |  |  | 		try: e.send_event = tk.getboolean(E) | 
					
						
							|  |  |  | 		except TclError: pass | 
					
						
							|  |  |  | 		e.keysym = K | 
					
						
							|  |  |  | 		e.keysym_num = tk.getint(N) | 
					
						
							|  |  |  | 		e.type = T | 
					
						
							|  |  |  | 		e.widget = self._nametowidget(W) | 
					
						
							|  |  |  | 		e.x_root = tk.getint(X) | 
					
						
							|  |  |  | 		e.y_root = tk.getint(Y) | 
					
						
							|  |  |  | 		return (e,) | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 	def _report_exception(self): | 
					
						
							|  |  |  | 		import sys | 
					
						
							|  |  |  | 		exc, val, tb = sys.exc_type, sys.exc_value, sys.exc_traceback | 
					
						
							|  |  |  | 		root = self._root() | 
					
						
							|  |  |  | 		root.report_callback_exception(exc, val, tb) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | class CallWrapper: | 
					
						
							|  |  |  | 	def __init__(self, func, subst, widget): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.func = func | 
					
						
							|  |  |  | 		self.subst = subst | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 		self.widget = widget | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def __call__(self, *args): | 
					
						
							|  |  |  | 		try: | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 			if self.subst: | 
					
						
							|  |  |  | 				args = apply(self.subst, args) | 
					
						
							|  |  |  | 			return apply(self.func, args) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		except SystemExit, msg: | 
					
						
							|  |  |  | 			raise SystemExit, msg | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		except: | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 			self.widget._report_exception() | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Wm: | 
					
						
							|  |  |  | 	def aspect(self,  | 
					
						
							|  |  |  | 		   minNumer=None, minDenom=None,  | 
					
						
							|  |  |  | 		   maxNumer=None, maxDenom=None): | 
					
						
							|  |  |  | 		return self._getints( | 
					
						
							|  |  |  | 			self.tk.call('wm', 'aspect', self._w,  | 
					
						
							|  |  |  | 				     minNumer, minDenom,  | 
					
						
							|  |  |  | 				     maxNumer, maxDenom)) | 
					
						
							|  |  |  | 	def client(self, name=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'client', self._w, name) | 
					
						
							|  |  |  | 	def command(self, value=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'command', self._w, value) | 
					
						
							|  |  |  | 	def deiconify(self): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'deiconify', self._w) | 
					
						
							|  |  |  | 	def focusmodel(self, model=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'focusmodel', self._w, model) | 
					
						
							|  |  |  | 	def frame(self): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'frame', self._w) | 
					
						
							|  |  |  | 	def geometry(self, newGeometry=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'geometry', self._w, newGeometry) | 
					
						
							|  |  |  | 	def grid(self, | 
					
						
							|  |  |  | 		 baseWidht=None, baseHeight=None,  | 
					
						
							|  |  |  | 		 widthInc=None, heightInc=None): | 
					
						
							|  |  |  | 		return self._getints(self.tk.call( | 
					
						
							|  |  |  | 			'wm', 'grid', self._w, | 
					
						
							|  |  |  | 			baseWidht, baseHeight, widthInc, heightInc)) | 
					
						
							|  |  |  | 	def group(self, pathName=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'group', self._w, pathName) | 
					
						
							|  |  |  | 	def iconbitmap(self, bitmap=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'iconbitmap', self._w, bitmap) | 
					
						
							|  |  |  | 	def iconify(self): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'iconify', self._w) | 
					
						
							|  |  |  | 	def iconmask(self, bitmap=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'iconmask', self._w, bitmap) | 
					
						
							|  |  |  | 	def iconname(self, newName=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'iconname', self._w, newName) | 
					
						
							|  |  |  | 	def iconposition(self, x=None, y=None): | 
					
						
							|  |  |  | 		return self._getints(self.tk.call( | 
					
						
							|  |  |  | 			'wm', 'iconposition', self._w, x, y)) | 
					
						
							|  |  |  | 	def iconwindow(self, pathName=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'iconwindow', self._w, pathName) | 
					
						
							|  |  |  | 	def maxsize(self, width=None, height=None): | 
					
						
							|  |  |  | 		return self._getints(self.tk.call( | 
					
						
							|  |  |  | 			'wm', 'maxsize', self._w, width, height)) | 
					
						
							|  |  |  | 	def minsize(self, width=None, height=None): | 
					
						
							|  |  |  | 		return self._getints(self.tk.call( | 
					
						
							|  |  |  | 			'wm', 'minsize', self._w, width, height)) | 
					
						
							|  |  |  | 	def overrideredirect(self, boolean=None): | 
					
						
							|  |  |  | 		return self._getboolean(self.tk.call( | 
					
						
							|  |  |  | 			'wm', 'overrideredirect', self._w, boolean)) | 
					
						
							|  |  |  | 	def positionfrom(self, who=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'positionfrom', self._w, who) | 
					
						
							|  |  |  | 	def protocol(self, name=None, func=None): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	        if callable(func): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			command = self._register(func) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			command = func | 
					
						
							|  |  |  | 		return self.tk.call( | 
					
						
							|  |  |  | 			'wm', 'protocol', self._w, name, command) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def resizable(self, width=None, height=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'resizable', self._w, width, height) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def sizefrom(self, who=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'sizefrom', self._w, who) | 
					
						
							|  |  |  | 	def state(self): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'state', self._w) | 
					
						
							|  |  |  | 	def title(self, string=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'title', self._w, string) | 
					
						
							|  |  |  | 	def transient(self, master=None): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'transient', self._w, master) | 
					
						
							|  |  |  | 	def withdraw(self): | 
					
						
							|  |  |  | 		return self.tk.call('wm', 'withdraw', self._w) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Tk(Misc, Wm): | 
					
						
							|  |  |  | 	_w = '.' | 
					
						
							|  |  |  | 	def __init__(self, screenName=None, baseName=None, className='Tk'): | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 		global _default_root | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		self.master = None | 
					
						
							|  |  |  | 		self.children = {} | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		if baseName is None: | 
					
						
							|  |  |  | 			import sys, os | 
					
						
							|  |  |  | 			baseName = os.path.basename(sys.argv[0]) | 
					
						
							|  |  |  | 			if baseName[-3:] == '.py': baseName = baseName[:-3] | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		self.tk = tkinter.create(screenName, baseName, className) | 
					
						
							|  |  |  | 		try: | 
					
						
							|  |  |  | 			# Disable event scanning except for Command-Period | 
					
						
							|  |  |  | 			import MacOS | 
					
						
							|  |  |  | 			MacOS.EnableAppswitch(0) | 
					
						
							|  |  |  | 		except ImportError: | 
					
						
							|  |  |  | 			pass | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			# Work around nasty MacTk bug | 
					
						
							|  |  |  | 			self.update() | 
					
						
							| 
									
										
										
										
											1995-10-07 19:08:37 +00:00
										 |  |  | 		# Version sanity checks | 
					
						
							|  |  |  | 		tk_version = self.tk.getvar('tk_version') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if tk_version != tkinter.TK_VERSION: | 
					
						
							| 
									
										
										
										
											1995-10-07 19:08:37 +00:00
										 |  |  | 		    raise RuntimeError, \ | 
					
						
							|  |  |  | 		    "tk.h version (%s) doesn't match libtk.a version (%s)" \ | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		    % (tkinter.TK_VERSION, tk_version) | 
					
						
							| 
									
										
										
										
											1995-10-07 19:08:37 +00:00
										 |  |  | 		tcl_version = self.tk.getvar('tcl_version') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if tcl_version != tkinter.TCL_VERSION: | 
					
						
							| 
									
										
										
										
											1995-10-07 19:08:37 +00:00
										 |  |  | 		    raise RuntimeError, \ | 
					
						
							|  |  |  | 		    "tcl.h version (%s) doesn't match libtcl.a version (%s)" \ | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		    % (tkinter.TCL_VERSION, tcl_version) | 
					
						
							| 
									
										
										
										
											1995-10-07 19:08:37 +00:00
										 |  |  | 		if TkVersion < 4.0: | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 			raise RuntimeError, \ | 
					
						
							|  |  |  | 			"Tk 4.0 or higher is required; found Tk %s" \ | 
					
						
							|  |  |  | 			% str(TkVersion) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		self.tk.createcommand('tkerror', _tkerror) | 
					
						
							| 
									
										
										
										
											1994-07-07 13:12:12 +00:00
										 |  |  | 		self.tk.createcommand('exit', _exit) | 
					
						
							| 
									
										
										
										
											1994-07-12 15:52:32 +00:00
										 |  |  | 		self.readprofile(baseName, className) | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 		if not _default_root: | 
					
						
							|  |  |  | 			_default_root = self | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def destroy(self): | 
					
						
							|  |  |  | 		for c in self.children.values(): c.destroy() | 
					
						
							|  |  |  | 		self.tk.call('destroy', self._w) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def __str__(self): | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		return self._w | 
					
						
							| 
									
										
										
										
											1994-07-12 15:52:32 +00:00
										 |  |  | 	def readprofile(self, baseName, className): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		import os | 
					
						
							| 
									
										
										
										
											1994-07-12 15:52:32 +00:00
										 |  |  | 		if os.environ.has_key('HOME'): home = os.environ['HOME'] | 
					
						
							|  |  |  | 		else: home = os.curdir | 
					
						
							|  |  |  | 		class_tcl = os.path.join(home, '.%s.tcl' % className) | 
					
						
							|  |  |  | 		class_py = os.path.join(home, '.%s.py' % className) | 
					
						
							|  |  |  | 		base_tcl = os.path.join(home, '.%s.tcl' % baseName) | 
					
						
							|  |  |  | 		base_py = os.path.join(home, '.%s.py' % baseName) | 
					
						
							|  |  |  | 		dir = {'self': self} | 
					
						
							|  |  |  | 		exec 'from Tkinter import *' in dir | 
					
						
							|  |  |  | 		if os.path.isfile(class_tcl): | 
					
						
							|  |  |  | 			print 'source', `class_tcl` | 
					
						
							|  |  |  | 			self.tk.call('source', class_tcl) | 
					
						
							|  |  |  | 		if os.path.isfile(class_py): | 
					
						
							|  |  |  | 			print 'execfile', `class_py` | 
					
						
							|  |  |  | 			execfile(class_py, dir) | 
					
						
							|  |  |  | 		if os.path.isfile(base_tcl): | 
					
						
							|  |  |  | 			print 'source', `base_tcl` | 
					
						
							|  |  |  | 			self.tk.call('source', base_tcl) | 
					
						
							|  |  |  | 		if os.path.isfile(base_py): | 
					
						
							|  |  |  | 			print 'execfile', `base_py` | 
					
						
							|  |  |  | 			execfile(base_py, dir) | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 	def report_callback_exception(self, exc, val, tb): | 
					
						
							|  |  |  | 		import traceback | 
					
						
							|  |  |  | 		print "Exception in Tkinter callback" | 
					
						
							|  |  |  | 		traceback.print_exception(exc, val, tb) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Pack: | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def config(self, cnf={}, **kw): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		apply(self.tk.call,  | 
					
						
							|  |  |  | 		      ('pack', 'configure', self._w)  | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		      + self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	configure = config | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	pack = config | 
					
						
							|  |  |  | 	def __setitem__(self, key, value): | 
					
						
							|  |  |  | 		Pack.config({key: value}) | 
					
						
							|  |  |  | 	def forget(self): | 
					
						
							|  |  |  | 		self.tk.call('pack', 'forget', self._w) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	pack_forget = forget | 
					
						
							|  |  |  | 	def info(self): | 
					
						
							| 
									
										
										
										
											1994-07-11 15:21:31 +00:00
										 |  |  | 		words = self.tk.splitlist( | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 			self.tk.call('pack', 'info', self._w)) | 
					
						
							| 
									
										
										
										
											1994-07-11 15:21:31 +00:00
										 |  |  | 		dict = {} | 
					
						
							|  |  |  | 		for i in range(0, len(words), 2): | 
					
						
							|  |  |  | 			key = words[i][1:] | 
					
						
							|  |  |  | 			value = words[i+1] | 
					
						
							| 
									
										
										
										
											1996-05-16 17:50:07 +00:00
										 |  |  | 			if value[:1] == '.': | 
					
						
							| 
									
										
										
										
											1994-07-11 15:21:31 +00:00
										 |  |  | 				value = self._nametowidget(value) | 
					
						
							|  |  |  | 			dict[key] = value | 
					
						
							|  |  |  | 		return dict | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	pack_info = info | 
					
						
							| 
									
										
										
										
											1994-12-30 17:16:35 +00:00
										 |  |  | 	_noarg_ = ['_noarg_'] | 
					
						
							|  |  |  | 	def propagate(self, flag=_noarg_): | 
					
						
							| 
									
										
										
										
											1995-09-07 19:22:00 +00:00
										 |  |  | 		if flag is Pack._noarg_: | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			return self._getboolean(self.tk.call( | 
					
						
							|  |  |  | 				'pack', 'propagate', self._w)) | 
					
						
							| 
									
										
										
										
											1994-12-30 17:16:35 +00:00
										 |  |  | 		else: | 
					
						
							|  |  |  | 			self.tk.call('pack', 'propagate', self._w, flag) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	pack_propagate = propagate | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def slaves(self): | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		return map(self._nametowidget, | 
					
						
							|  |  |  | 			   self.tk.splitlist( | 
					
						
							|  |  |  | 				   self.tk.call('pack', 'slaves', self._w))) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	pack_slaves = slaves | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Place: | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def config(self, cnf={}, **kw): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		for k in ['in_']: | 
					
						
							|  |  |  | 			if kw.has_key(k): | 
					
						
							|  |  |  | 				kw[k[:-1]] = kw[k] | 
					
						
							|  |  |  | 				del kw[k] | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		apply(self.tk.call,  | 
					
						
							|  |  |  | 		      ('place', 'configure', self._w)  | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		      + self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	configure = config | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	place = config | 
					
						
							|  |  |  | 	def __setitem__(self, key, value): | 
					
						
							|  |  |  | 		Place.config({key: value}) | 
					
						
							|  |  |  | 	def forget(self): | 
					
						
							|  |  |  | 		self.tk.call('place', 'forget', self._w) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	place_forget = forget | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def info(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 17:53:48 +00:00
										 |  |  | 		words = self.tk.splitlist( | 
					
						
							|  |  |  | 			self.tk.call('place', 'info', self._w)) | 
					
						
							|  |  |  | 		dict = {} | 
					
						
							|  |  |  | 		for i in range(0, len(words), 2): | 
					
						
							|  |  |  | 			key = words[i][1:] | 
					
						
							|  |  |  | 			value = words[i+1] | 
					
						
							|  |  |  | 			if value[:1] == '.': | 
					
						
							|  |  |  | 				value = self._nametowidget(value) | 
					
						
							|  |  |  | 			dict[key] = value | 
					
						
							|  |  |  | 		return dict | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	place_info = info | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def slaves(self): | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		return map(self._nametowidget, | 
					
						
							|  |  |  | 			   self.tk.splitlist( | 
					
						
							|  |  |  | 				   self.tk.call( | 
					
						
							|  |  |  | 					   'place', 'slaves', self._w))) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	place_slaves = slaves | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | class Grid: | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 	# Thanks to Masazumi Yoshikawa (yosikawa@isi.edu) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def config(self, cnf={}, **kw): | 
					
						
							|  |  |  | 		apply(self.tk.call,  | 
					
						
							|  |  |  | 		      ('grid', 'configure', self._w)  | 
					
						
							|  |  |  | 		      + self._options(cnf, kw)) | 
					
						
							|  |  |  | 	grid = config | 
					
						
							|  |  |  | 	def __setitem__(self, key, value): | 
					
						
							|  |  |  | 		Grid.config({key: value}) | 
					
						
							|  |  |  | 	def bbox(self, column, row): | 
					
						
							|  |  |  | 		return self._getints( | 
					
						
							|  |  |  | 			self.tk.call( | 
					
						
							|  |  |  | 				'grid', 'bbox', self._w, column, row)) or None | 
					
						
							|  |  |  | 	grid_bbox = bbox | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 	def columnconfigure(self, index, cnf={}, **kw): | 
					
						
							|  |  |  | 		if type(cnf) is not DictionaryType and not kw: | 
					
						
							|  |  |  | 			options = self._options({cnf: None}) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			options = self._options(cnf, kw) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		res = apply(self.tk.call,  | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 			      ('grid', 'columnconfigure', self._w, index)  | 
					
						
							|  |  |  | 			      + options) | 
					
						
							|  |  |  | 		if options == ('-minsize', None): | 
					
						
							|  |  |  | 			return self.tk.getint(res) or None | 
					
						
							|  |  |  | 		elif options == ('-weight', None): | 
					
						
							|  |  |  | 			return self.tk.getdouble(res) or None | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def forget(self): | 
					
						
							|  |  |  | 		self.tk.call('grid', 'forget', self._w) | 
					
						
							|  |  |  | 	grid_forget = forget | 
					
						
							|  |  |  | 	def info(self): | 
					
						
							|  |  |  | 		words = self.tk.splitlist( | 
					
						
							|  |  |  | 			self.tk.call('grid', 'info', self._w)) | 
					
						
							|  |  |  | 		dict = {} | 
					
						
							|  |  |  | 		for i in range(0, len(words), 2): | 
					
						
							|  |  |  | 			key = words[i][1:] | 
					
						
							|  |  |  | 			value = words[i+1] | 
					
						
							| 
									
										
										
										
											1996-05-16 17:50:07 +00:00
										 |  |  | 			if value[:1] == '.': | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 				value = self._nametowidget(value) | 
					
						
							|  |  |  | 			dict[key] = value | 
					
						
							|  |  |  | 		return dict | 
					
						
							|  |  |  | 	grid_info = info | 
					
						
							|  |  |  | 	def location(self, x, y): | 
					
						
							|  |  |  | 		return self._getints( | 
					
						
							|  |  |  | 			self.tk.call( | 
					
						
							|  |  |  | 				'grid', 'location', self._w, x, y)) or None | 
					
						
							|  |  |  | 	_noarg_ = ['_noarg_'] | 
					
						
							|  |  |  | 	def propagate(self, flag=_noarg_): | 
					
						
							|  |  |  | 		if flag is Grid._noarg_: | 
					
						
							|  |  |  | 			return self._getboolean(self.tk.call( | 
					
						
							|  |  |  | 				'grid', 'propagate', self._w)) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			self.tk.call('grid', 'propagate', self._w, flag) | 
					
						
							|  |  |  | 	grid_propagate = propagate | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 	def rowconfigure(self, index, cnf={}, **kw): | 
					
						
							|  |  |  | 		if type(cnf) is not DictionaryType and not kw: | 
					
						
							|  |  |  | 			options = self._options({cnf: None}) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			options = self._options(cnf, kw) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		res = apply(self.tk.call,  | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 			      ('grid', 'rowconfigure', self._w, index)  | 
					
						
							|  |  |  | 			      + options) | 
					
						
							|  |  |  | 		if options == ('-minsize', None): | 
					
						
							|  |  |  | 			return self.tk.getint(res) or None | 
					
						
							|  |  |  | 		elif options == ('-weight', None): | 
					
						
							|  |  |  | 			return self.tk.getdouble(res) or None | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def size(self): | 
					
						
							|  |  |  | 		return self._getints( | 
					
						
							|  |  |  | 			self.tk.call('grid', 'size', self._w)) or None | 
					
						
							|  |  |  | 	def slaves(self, *args): | 
					
						
							|  |  |  | 		return map(self._nametowidget, | 
					
						
							|  |  |  | 			   self.tk.splitlist( | 
					
						
							|  |  |  | 				   apply(self.tk.call, | 
					
						
							|  |  |  | 					 ('grid', 'slaves', self._w) + args))) | 
					
						
							|  |  |  | 	grid_slaves = slaves | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Widget(Misc, Pack, Place, Grid): | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 	def _setup(self, master, cnf): | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		global _default_root | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		if not master: | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 			if not _default_root: | 
					
						
							|  |  |  | 				_default_root = Tk() | 
					
						
							|  |  |  | 			master = _default_root | 
					
						
							|  |  |  | 		if not _default_root: | 
					
						
							|  |  |  | 			_default_root = master | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.master = master | 
					
						
							|  |  |  | 		self.tk = master.tk | 
					
						
							|  |  |  | 		if cnf.has_key('name'): | 
					
						
							|  |  |  | 			name = cnf['name'] | 
					
						
							|  |  |  | 			del cnf['name'] | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			name = `id(self)` | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		self._name = name | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		if master._w=='.': | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			self._w = '.' + name | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			self._w = master._w + '.' + name | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 		self.children = {} | 
					
						
							|  |  |  | 		if self.master.children.has_key(self._name): | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 			self.master.children[self._name].destroy() | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 		self.master.children[self._name] = self | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master, widgetName, cnf={}, kw={}, extra=()): | 
					
						
							|  |  |  | 		if kw: | 
					
						
							|  |  |  | 			cnf = _cnfmerge((cnf, kw)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.widgetName = widgetName | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		Widget._setup(self, master, cnf) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		apply(self.tk.call, | 
					
						
							|  |  |  | 		      (widgetName, self._w) + extra + self._options(cnf)) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def config(self, cnf=None, **kw): | 
					
						
							|  |  |  | 		# XXX ought to generalize this so tag_config etc. can use it | 
					
						
							|  |  |  | 		if kw: | 
					
						
							|  |  |  | 			cnf = _cnfmerge((cnf, kw)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		elif cnf: | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 			cnf = _cnfmerge(cnf) | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 		if cnf is None: | 
					
						
							|  |  |  | 			cnf = {} | 
					
						
							|  |  |  | 			for x in self.tk.split( | 
					
						
							|  |  |  | 				self.tk.call(self._w, 'configure')): | 
					
						
							|  |  |  | 				cnf[x[0][1:]] = (x[0][1:],) + x[1:] | 
					
						
							|  |  |  | 			return cnf | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if type(cnf) is StringType: | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 			x = self.tk.split(self.tk.call( | 
					
						
							|  |  |  | 				self._w, 'configure', '-'+cnf)) | 
					
						
							|  |  |  | 			return (x[0][1:],) + x[1:] | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		for k in cnf.keys(): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 			if type(k) is ClassType: | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 				k.config(self, cnf[k]) | 
					
						
							|  |  |  | 				del cnf[k] | 
					
						
							|  |  |  | 		apply(self.tk.call, (self._w, 'configure') | 
					
						
							|  |  |  | 		      + self._options(cnf)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	configure = config | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 	def cget(self, key): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self.tk.call(self._w, 'cget', '-' + key) | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 	__getitem__ = cget | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def __setitem__(self, key, value): | 
					
						
							|  |  |  | 		Widget.config(self, {key: value}) | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 	def keys(self): | 
					
						
							|  |  |  | 		return map(lambda x: x[0][1:], | 
					
						
							|  |  |  | 			   self.tk.split(self.tk.call(self._w, 'configure'))) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def __str__(self): | 
					
						
							|  |  |  | 		return self._w | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 	def destroy(self): | 
					
						
							|  |  |  | 		for c in self.children.values(): c.destroy() | 
					
						
							| 
									
										
										
										
											1994-08-30 12:13:44 +00:00
										 |  |  | 		if self.master.children.has_key(self._name): | 
					
						
							|  |  |  | 			del self.master.children[self._name] | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		self.tk.call('destroy', self._w) | 
					
						
							|  |  |  | 	def _do(self, name, args=()): | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		return apply(self.tk.call, (self._w, name) + args) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Toplevel(Widget, Wm): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		if kw: | 
					
						
							|  |  |  | 			cnf = _cnfmerge((cnf, kw)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		extra = () | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		for wmkey in ['screen', 'class_', 'class', 'visual', | 
					
						
							|  |  |  | 			      'colormap']: | 
					
						
							|  |  |  | 			if cnf.has_key(wmkey): | 
					
						
							|  |  |  | 				val = cnf[wmkey] | 
					
						
							|  |  |  | 				# TBD: a hack needed because some keys | 
					
						
							|  |  |  | 				# are not valid as keyword arguments | 
					
						
							|  |  |  | 				if wmkey[-1] == '_': opt = '-'+wmkey[:-1] | 
					
						
							|  |  |  | 				else: opt = '-'+wmkey | 
					
						
							|  |  |  | 				extra = extra + (opt, val) | 
					
						
							|  |  |  | 				del cnf[wmkey] | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		Widget.__init__(self, master, 'toplevel', cnf, {}, extra) | 
					
						
							| 
									
										
										
										
											1994-06-20 12:19:19 +00:00
										 |  |  | 		root = self._root() | 
					
						
							|  |  |  | 		self.iconname(root.iconname()) | 
					
						
							|  |  |  | 		self.title(root.title()) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Button(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'button', cnf, kw) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def tkButtonEnter(self, *dummy): | 
					
						
							|  |  |  | 		self.tk.call('tkButtonEnter', self._w) | 
					
						
							|  |  |  | 	def tkButtonLeave(self, *dummy): | 
					
						
							|  |  |  | 		self.tk.call('tkButtonLeave', self._w) | 
					
						
							|  |  |  | 	def tkButtonDown(self, *dummy): | 
					
						
							|  |  |  | 		self.tk.call('tkButtonDown', self._w) | 
					
						
							|  |  |  | 	def tkButtonUp(self, *dummy): | 
					
						
							|  |  |  | 		self.tk.call('tkButtonUp', self._w) | 
					
						
							| 
									
										
										
										
											1996-05-16 17:11:27 +00:00
										 |  |  | 	def tkButtonInvoke(self, *dummy): | 
					
						
							|  |  |  | 		self.tk.call('tkButtonInvoke', self._w) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def flash(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'flash') | 
					
						
							|  |  |  | 	def invoke(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'invoke') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Indices: | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | # XXX I don't like these -- take them away | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | def AtEnd(): | 
					
						
							|  |  |  | 	return 'end' | 
					
						
							| 
									
										
										
										
											1994-06-20 09:09:51 +00:00
										 |  |  | def AtInsert(*args): | 
					
						
							|  |  |  | 	s = 'insert' | 
					
						
							|  |  |  | 	for a in args: | 
					
						
							|  |  |  | 		if a: s = s + (' ' + a) | 
					
						
							|  |  |  | 	return s | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | def AtSelFirst(): | 
					
						
							|  |  |  | 	return 'sel.first' | 
					
						
							|  |  |  | def AtSelLast(): | 
					
						
							|  |  |  | 	return 'sel.last' | 
					
						
							|  |  |  | def At(x, y=None): | 
					
						
							| 
									
										
										
										
											1994-07-12 09:04:41 +00:00
										 |  |  | 	if y is None: | 
					
						
							|  |  |  | 		return '@' + `x`		 | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	else: | 
					
						
							| 
									
										
										
										
											1994-07-12 09:04:41 +00:00
										 |  |  | 		return '@' + `x` + ',' + `y` | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Canvas(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'canvas', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def addtag(self, *args): | 
					
						
							|  |  |  | 		self._do('addtag', args) | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 	def addtag_above(self, tagOrId): | 
					
						
							|  |  |  | 		self.addtag('above', tagOrId) | 
					
						
							|  |  |  | 	def addtag_all(self): | 
					
						
							|  |  |  | 		self.addtag('all') | 
					
						
							|  |  |  | 	def addtag_below(self, tagOrId): | 
					
						
							|  |  |  | 		self.addtag('below', tagOrId) | 
					
						
							|  |  |  | 	def addtag_closest(self, x, y, halo=None, start=None): | 
					
						
							|  |  |  | 		self.addtag('closest', x, y, halo, start) | 
					
						
							|  |  |  | 	def addtag_enclosed(self, x1, y1, x2, y2): | 
					
						
							|  |  |  | 		self.addtag('enclosed', x1, y1, x2, y2) | 
					
						
							|  |  |  | 	def addtag_overlapping(self, x1, y1, x2, y2): | 
					
						
							|  |  |  | 		self.addtag('overlapping', x1, y1, x2, y2) | 
					
						
							|  |  |  | 	def addtag_withtag(self, tagOrId): | 
					
						
							|  |  |  | 		self.addtag('withtag', tagOrId) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def bbox(self, *args): | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 		return self._getints(self._do('bbox', args)) or None | 
					
						
							| 
									
										
										
										
											1994-08-08 12:47:33 +00:00
										 |  |  | 	def tag_unbind(self, tagOrId, sequence): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'bind', tagOrId, sequence, '') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def tag_bind(self, tagOrId, sequence=None, func=None, add=None): | 
					
						
							|  |  |  | 		return self._bind((self._w, 'tag', 'bind', tagOrId), | 
					
						
							|  |  |  | 				  sequence, func, add) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def canvasx(self, screenx, gridspacing=None): | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		return self.tk.getdouble(self.tk.call( | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			self._w, 'canvasx', screenx, gridspacing)) | 
					
						
							|  |  |  | 	def canvasy(self, screeny, gridspacing=None): | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		return self.tk.getdouble(self.tk.call( | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			self._w, 'canvasy', screeny, gridspacing)) | 
					
						
							|  |  |  | 	def coords(self, *args): | 
					
						
							|  |  |  | 		return self._do('coords', args) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def _create(self, itemType, args, kw): # Args: (val, val, ..., cnf={}) | 
					
						
							| 
									
										
										
										
											1994-06-21 11:44:21 +00:00
										 |  |  | 		args = _flatten(args) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		cnf = args[-1] | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 		if type(cnf) in (DictionaryType, TupleType): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 			args = args[:-1] | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			cnf = {} | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 		return self.tk.getint(apply( | 
					
						
							|  |  |  | 			self.tk.call, | 
					
						
							|  |  |  | 			(self._w, 'create', itemType)  | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 			+ args + self._options(cnf, kw))) | 
					
						
							|  |  |  | 	def create_arc(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('arc', args, kw) | 
					
						
							|  |  |  | 	def create_bitmap(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('bitmap', args, kw) | 
					
						
							|  |  |  | 	def create_image(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('image', args, kw) | 
					
						
							|  |  |  | 	def create_line(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('line', args, kw) | 
					
						
							|  |  |  | 	def create_oval(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('oval', args, kw) | 
					
						
							|  |  |  | 	def create_polygon(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('polygon', args, kw) | 
					
						
							|  |  |  | 	def create_rectangle(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('rectangle', args, kw) | 
					
						
							|  |  |  | 	def create_text(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('text', args, kw) | 
					
						
							|  |  |  | 	def create_window(self, *args, **kw): | 
					
						
							|  |  |  | 		return self._create('window', args, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def dchars(self, *args): | 
					
						
							|  |  |  | 		self._do('dchars', args) | 
					
						
							|  |  |  | 	def delete(self, *args): | 
					
						
							|  |  |  | 		self._do('delete', args) | 
					
						
							|  |  |  | 	def dtag(self, *args): | 
					
						
							|  |  |  | 		self._do('dtag', args) | 
					
						
							|  |  |  | 	def find(self, *args): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self._getints(self._do('find', args)) or () | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 	def find_above(self, tagOrId): | 
					
						
							|  |  |  | 		return self.find('above', tagOrId) | 
					
						
							|  |  |  | 	def find_all(self): | 
					
						
							|  |  |  | 		return self.find('all') | 
					
						
							|  |  |  | 	def find_below(self, tagOrId): | 
					
						
							|  |  |  | 		return self.find('below', tagOrId) | 
					
						
							|  |  |  | 	def find_closest(self, x, y, halo=None, start=None): | 
					
						
							|  |  |  | 		return self.find('closest', x, y, halo, start) | 
					
						
							|  |  |  | 	def find_enclosed(self, x1, y1, x2, y2): | 
					
						
							|  |  |  | 		return self.find('enclosed', x1, y1, x2, y2) | 
					
						
							|  |  |  | 	def find_overlapping(self, x1, y1, x2, y2): | 
					
						
							|  |  |  | 		return self.find('overlapping', x1, y1, x2, y2) | 
					
						
							|  |  |  | 	def find_withtag(self, tagOrId): | 
					
						
							|  |  |  | 		return self.find('withtag', tagOrId) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def focus(self, *args): | 
					
						
							|  |  |  | 		return self._do('focus', args) | 
					
						
							|  |  |  | 	def gettags(self, *args): | 
					
						
							|  |  |  | 		return self.tk.splitlist(self._do('gettags', args)) | 
					
						
							|  |  |  | 	def icursor(self, *args): | 
					
						
							|  |  |  | 		self._do('icursor', args) | 
					
						
							|  |  |  | 	def index(self, *args): | 
					
						
							|  |  |  | 		return self.tk.getint(self._do('index', args)) | 
					
						
							|  |  |  | 	def insert(self, *args): | 
					
						
							|  |  |  | 		self._do('insert', args) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def itemcget(self, tagOrId, option): | 
					
						
							|  |  |  | 		return self._do('itemcget', (tagOrId, '-'+option)) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def itemconfig(self, tagOrId, cnf=None, **kw): | 
					
						
							|  |  |  | 		if cnf is None and not kw: | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 			cnf = {} | 
					
						
							|  |  |  | 			for x in self.tk.split( | 
					
						
							|  |  |  | 				self._do('itemconfigure', (tagOrId))): | 
					
						
							|  |  |  | 				cnf[x[0][1:]] = (x[0][1:],) + x[1:] | 
					
						
							|  |  |  | 			return cnf | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		if type(cnf) == StringType and not kw: | 
					
						
							| 
									
										
										
										
											1994-06-23 07:40:14 +00:00
										 |  |  | 			x = self.tk.split(self._do('itemconfigure', | 
					
						
							|  |  |  | 						   (tagOrId, '-'+cnf,))) | 
					
						
							|  |  |  | 			return (x[0][1:],) + x[1:] | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		self._do('itemconfigure', (tagOrId,) | 
					
						
							|  |  |  | 			 + self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	itemconfigure = itemconfig | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def lower(self, *args): | 
					
						
							|  |  |  | 		self._do('lower', args) | 
					
						
							|  |  |  | 	def move(self, *args): | 
					
						
							|  |  |  | 		self._do('move', args) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def postscript(self, cnf={}, **kw): | 
					
						
							|  |  |  | 		return self._do('postscript', self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def tkraise(self, *args): | 
					
						
							|  |  |  | 		self._do('raise', args) | 
					
						
							| 
									
										
										
										
											1994-06-20 08:12:01 +00:00
										 |  |  | 	lift = tkraise | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def scale(self, *args): | 
					
						
							|  |  |  | 		self._do('scale', args) | 
					
						
							|  |  |  | 	def scan_mark(self, x, y): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'mark', x, y) | 
					
						
							|  |  |  | 	def scan_dragto(self, x, y): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'dragto', x, y) | 
					
						
							|  |  |  | 	def select_adjust(self, tagOrId, index): | 
					
						
							| 
									
										
										
										
											1994-06-21 11:44:21 +00:00
										 |  |  | 		self.tk.call(self._w, 'select', 'adjust', tagOrId, index) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def select_clear(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		self.tk.call(self._w, 'select', 'clear') | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def select_from(self, tagOrId, index): | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		self.tk.call(self._w, 'select', 'set', tagOrId, index) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def select_item(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'select', 'item') | 
					
						
							|  |  |  | 	def select_to(self, tagOrId, index): | 
					
						
							| 
									
										
										
										
											1994-06-21 11:44:21 +00:00
										 |  |  | 		self.tk.call(self._w, 'select', 'to', tagOrId, index) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def type(self, tagOrId): | 
					
						
							| 
									
										
										
										
											1994-06-21 11:44:21 +00:00
										 |  |  | 		return self.tk.call(self._w, 'type', tagOrId) or None | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def xview(self, *args): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if not args: | 
					
						
							|  |  |  | 			return self._getdoubles(self.tk.call(self._w, 'xview')) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'xview')+args) | 
					
						
							|  |  |  | 	def yview(self, *args): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if not args: | 
					
						
							|  |  |  | 			return self._getdoubles(self.tk.call(self._w, 'yview')) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'yview')+args) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Checkbutton(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'checkbutton', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def deselect(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'deselect') | 
					
						
							|  |  |  | 	def flash(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'flash') | 
					
						
							|  |  |  | 	def invoke(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'invoke') | 
					
						
							|  |  |  | 	def select(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'select') | 
					
						
							|  |  |  | 	def toggle(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'toggle') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Entry(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'entry', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def delete(self, first, last=None): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'delete', first, last) | 
					
						
							|  |  |  | 	def get(self): | 
					
						
							|  |  |  | 		return self.tk.call(self._w, 'get') | 
					
						
							|  |  |  | 	def icursor(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'icursor', index) | 
					
						
							|  |  |  | 	def index(self, index): | 
					
						
							|  |  |  | 		return self.tk.getint(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'index', index)) | 
					
						
							|  |  |  | 	def insert(self, index, string): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'insert', index, string) | 
					
						
							|  |  |  | 	def scan_mark(self, x): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'mark', x) | 
					
						
							|  |  |  | 	def scan_dragto(self, x): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'dragto', x) | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 	def selection_adjust(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'selection', 'adjust', index) | 
					
						
							|  |  |  | 	select_adjust = selection_adjust | 
					
						
							|  |  |  | 	def selection_clear(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'selection', 'clear') | 
					
						
							|  |  |  | 	select_clear = selection_clear | 
					
						
							|  |  |  | 	def selection_from(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'selection', 'set', index) | 
					
						
							|  |  |  | 	select_from = selection_from | 
					
						
							|  |  |  | 	def selection_present(self): | 
					
						
							| 
									
										
										
										
											1995-08-11 14:21:06 +00:00
										 |  |  | 		return self.tk.getboolean( | 
					
						
							| 
									
										
										
										
											1996-05-21 20:30:07 +00:00
										 |  |  | 			self.tk.call(self._w, 'selection', 'present')) | 
					
						
							|  |  |  | 	select_present = selection_present | 
					
						
							|  |  |  | 	def selection_range(self, start, end): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'selection', 'range', start, end) | 
					
						
							|  |  |  | 	select_range = selection_range | 
					
						
							|  |  |  | 	def selection_to(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'selection', 'to', index) | 
					
						
							|  |  |  | 	select_to = selection_to | 
					
						
							|  |  |  | 	def xview(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'xview', index) | 
					
						
							|  |  |  | 	def xview_moveto(self, fraction): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'xview', 'moveto', fraction) | 
					
						
							|  |  |  | 	def xview_scroll(self, number, what): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'xview', 'scroll', number, what) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Frame(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		cnf = _cnfmerge((cnf, kw)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		extra = () | 
					
						
							|  |  |  | 		if cnf.has_key('class'): | 
					
						
							|  |  |  | 			extra = ('-class', cnf['class']) | 
					
						
							|  |  |  | 			del cnf['class'] | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		Widget.__init__(self, master, 'frame', cnf, {}, extra) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Label(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'label', cnf, kw) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | class Listbox(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'listbox', cnf, kw) | 
					
						
							| 
									
										
										
										
											1995-10-11 17:41:00 +00:00
										 |  |  | 	def activate(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'activate', index) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def bbox(self, *args): | 
					
						
							|  |  |  | 		return self._getints(self._do('bbox', args)) or None | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def curselection(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		# XXX Ought to apply self._getints()... | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		return self.tk.splitlist(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'curselection')) | 
					
						
							|  |  |  | 	def delete(self, first, last=None): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'delete', first, last) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def get(self, first, last=None): | 
					
						
							|  |  |  | 		if last: | 
					
						
							|  |  |  | 			return self.tk.splitlist(self.tk.call( | 
					
						
							|  |  |  | 				self._w, 'get', first, last)) | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			return self.tk.call(self._w, 'get', first) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def insert(self, index, *elements): | 
					
						
							|  |  |  | 		apply(self.tk.call, | 
					
						
							|  |  |  | 		      (self._w, 'insert', index) + elements) | 
					
						
							|  |  |  | 	def nearest(self, y): | 
					
						
							|  |  |  | 		return self.tk.getint(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'nearest', y)) | 
					
						
							|  |  |  | 	def scan_mark(self, x, y): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'mark', x, y) | 
					
						
							|  |  |  | 	def scan_dragto(self, x, y): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'dragto', x, y) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def see(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'see', index) | 
					
						
							|  |  |  | 	def index(self, index): | 
					
						
							|  |  |  | 		i = self.tk.call(self._w, 'index', index) | 
					
						
							|  |  |  | 		if i == 'none': return None | 
					
						
							|  |  |  | 		return self.tk.getint(i) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def select_adjust(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'select', 'adjust', index) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def select_anchor(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'selection', 'anchor', index) | 
					
						
							|  |  |  | 	def select_clear(self, first, last=None): | 
					
						
							|  |  |  | 		self.tk.call(self._w, | 
					
						
							|  |  |  | 			     'selection', 'clear', first, last) | 
					
						
							|  |  |  | 	def select_includes(self, index): | 
					
						
							|  |  |  | 		return self.tk.getboolean(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'selection', 'includes', index)) | 
					
						
							|  |  |  | 	def select_set(self, first, last=None): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'selection', 'set', first, last) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def size(self): | 
					
						
							|  |  |  | 		return self.tk.getint(self.tk.call(self._w, 'size')) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def xview(self, *what): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if not what: | 
					
						
							|  |  |  | 			return self._getdoubles(self.tk.call(self._w, 'xview')) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'xview')+what) | 
					
						
							|  |  |  | 	def yview(self, *what): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if not what: | 
					
						
							|  |  |  | 			return self._getdoubles(self.tk.call(self._w, 'yview')) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'yview')+what) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Menu(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'menu', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def tk_bindForTraversal(self): | 
					
						
							|  |  |  | 		self.tk.call('tk_bindForTraversal', self._w) | 
					
						
							|  |  |  | 	def tk_mbPost(self): | 
					
						
							|  |  |  | 		self.tk.call('tk_mbPost', self._w) | 
					
						
							|  |  |  | 	def tk_mbUnpost(self): | 
					
						
							|  |  |  | 		self.tk.call('tk_mbUnpost') | 
					
						
							|  |  |  | 	def tk_traverseToMenu(self, char): | 
					
						
							|  |  |  | 		self.tk.call('tk_traverseToMenu', self._w, char) | 
					
						
							|  |  |  | 	def tk_traverseWithinMenu(self, char): | 
					
						
							|  |  |  | 		self.tk.call('tk_traverseWithinMenu', self._w, char) | 
					
						
							|  |  |  | 	def tk_getMenuButtons(self): | 
					
						
							|  |  |  | 		return self.tk.call('tk_getMenuButtons', self._w) | 
					
						
							|  |  |  | 	def tk_nextMenu(self, count): | 
					
						
							|  |  |  | 		self.tk.call('tk_nextMenu', count) | 
					
						
							|  |  |  | 	def tk_nextMenuEntry(self, count): | 
					
						
							|  |  |  | 		self.tk.call('tk_nextMenuEntry', count) | 
					
						
							|  |  |  | 	def tk_invokeMenu(self): | 
					
						
							|  |  |  | 		self.tk.call('tk_invokeMenu', self._w) | 
					
						
							|  |  |  | 	def tk_firstMenu(self): | 
					
						
							|  |  |  | 		self.tk.call('tk_firstMenu', self._w) | 
					
						
							|  |  |  | 	def tk_mbButtonDown(self): | 
					
						
							|  |  |  | 		self.tk.call('tk_mbButtonDown', self._w) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def tk_popup(self, x, y, entry=""): | 
					
						
							|  |  |  | 		self.tk.call('tk_popup', self._w, x, y, entry) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def activate(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'activate', index) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def add(self, itemType, cnf={}, **kw): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'add', itemType)  | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		      + self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1995-10-09 22:37:28 +00:00
										 |  |  | 	def add_cascade(self, cnf={}, **kw): | 
					
						
							|  |  |  | 		self.add('cascade', cnf or kw) | 
					
						
							|  |  |  | 	def add_checkbutton(self, cnf={}, **kw): | 
					
						
							|  |  |  | 		self.add('checkbutton', cnf or kw) | 
					
						
							|  |  |  | 	def add_command(self, cnf={}, **kw): | 
					
						
							|  |  |  | 		self.add('command', cnf or kw) | 
					
						
							|  |  |  | 	def add_radiobutton(self, cnf={}, **kw): | 
					
						
							|  |  |  | 		self.add('radiobutton', cnf or kw) | 
					
						
							|  |  |  | 	def add_separator(self, cnf={}, **kw): | 
					
						
							|  |  |  | 		self.add('separator', cnf or kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def delete(self, index1, index2=None): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'delete', index1, index2) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def entryconfig(self, index, cnf=None, **kw): | 
					
						
							|  |  |  | 		if cnf is None and not kw: | 
					
						
							|  |  |  | 			cnf = {} | 
					
						
							|  |  |  | 			for x in self.tk.split(apply(self.tk.call, | 
					
						
							|  |  |  | 			    (self._w, 'entryconfigure', index))): | 
					
						
							|  |  |  | 				cnf[x[0][1:]] = (x[0][1:],) + x[1:] | 
					
						
							|  |  |  | 			return cnf | 
					
						
							|  |  |  | 		if type(cnf) == StringType and not kw: | 
					
						
							|  |  |  | 			x = self.tk.split(apply(self.tk.call, | 
					
						
							|  |  |  | 			    (self._w, 'entryconfigure', index, '-'+cnf))) | 
					
						
							|  |  |  | 			return (x[0][1:],) + x[1:] | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'entryconfigure', index) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		      + self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	entryconfigure = entryconfig | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def index(self, index): | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:59 +00:00
										 |  |  | 		i = self.tk.call(self._w, 'index', index) | 
					
						
							|  |  |  | 		if i == 'none': return None | 
					
						
							|  |  |  | 		return self.tk.getint(i) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def invoke(self, index): | 
					
						
							|  |  |  | 		return self.tk.call(self._w, 'invoke', index) | 
					
						
							|  |  |  | 	def post(self, x, y): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'post', x, y) | 
					
						
							|  |  |  | 	def unpost(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'unpost') | 
					
						
							|  |  |  | 	def yposition(self, index): | 
					
						
							|  |  |  | 		return self.tk.getint(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'yposition', index)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Menubutton(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'menubutton', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Message(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'message', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Radiobutton(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'radiobutton', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def deselect(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'deselect') | 
					
						
							|  |  |  | 	def flash(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'flash') | 
					
						
							|  |  |  | 	def invoke(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'invoke') | 
					
						
							|  |  |  | 	def select(self): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'select') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Scale(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'scale', cnf, kw) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def get(self): | 
					
						
							|  |  |  | 		return self.tk.getint(self.tk.call(self._w, 'get')) | 
					
						
							|  |  |  | 	def set(self, value): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'set', value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Scrollbar(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'scrollbar', cnf, kw) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def activate(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'activate', index) | 
					
						
							|  |  |  | 	def delta(self, deltax, deltay): | 
					
						
							|  |  |  | 		return self.getdouble(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'delta', deltax, deltay)) | 
					
						
							|  |  |  | 	def fraction(self, x, y): | 
					
						
							|  |  |  | 		return self.getdouble(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'fraction', x, y)) | 
					
						
							|  |  |  | 	def identify(self, x, y): | 
					
						
							|  |  |  | 		return self.tk.call(self._w, 'identify', x, y) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def get(self): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		return self._getdoubles(self.tk.call(self._w, 'get')) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def set(self, *args): | 
					
						
							|  |  |  | 		apply(self.tk.call, (self._w, 'set')+args) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Text(Widget): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'text', cnf, kw) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		self.bind('<Delete>', self.bspace) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def bbox(self, *args): | 
					
						
							|  |  |  | 		return self._getints(self._do('bbox', args)) or None | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def bspace(self, *args): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		self.delete('insert') | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def tk_textSelectTo(self, index): | 
					
						
							|  |  |  | 		self.tk.call('tk_textSelectTo', self._w, index) | 
					
						
							|  |  |  | 	def tk_textBackspace(self): | 
					
						
							|  |  |  | 		self.tk.call('tk_textBackspace', self._w) | 
					
						
							|  |  |  | 	def tk_textIndexCloser(self, a, b, c): | 
					
						
							|  |  |  | 		self.tk.call('tk_textIndexCloser', self._w, a, b, c) | 
					
						
							|  |  |  | 	def tk_textResetAnchor(self, index): | 
					
						
							|  |  |  | 		self.tk.call('tk_textResetAnchor', self._w, index) | 
					
						
							|  |  |  | 	def compare(self, index1, op, index2): | 
					
						
							|  |  |  | 		return self.tk.getboolean(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'compare', index1, op, index2)) | 
					
						
							|  |  |  | 	def debug(self, boolean=None): | 
					
						
							|  |  |  | 		return self.tk.getboolean(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'debug', boolean)) | 
					
						
							|  |  |  | 	def delete(self, index1, index2=None): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'delete', index1, index2) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def dlineinfo(self, index): | 
					
						
							|  |  |  | 		return self._getints(self.tk.call(self._w, 'dlineinfo', index)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def get(self, index1, index2=None): | 
					
						
							|  |  |  | 		return self.tk.call(self._w, 'get', index1, index2) | 
					
						
							|  |  |  | 	def index(self, index): | 
					
						
							|  |  |  | 		return self.tk.call(self._w, 'index', index) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def insert(self, index, chars, *args): | 
					
						
							|  |  |  | 		apply(self.tk.call, (self._w, 'insert', index, chars)+args) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def mark_gravity(self, markName, direction=None): | 
					
						
							|  |  |  | 		return apply(self.tk.call, | 
					
						
							|  |  |  | 			     (self._w, 'mark', 'gravity', markName, direction)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def mark_names(self): | 
					
						
							|  |  |  | 		return self.tk.splitlist(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'mark', 'names')) | 
					
						
							|  |  |  | 	def mark_set(self, markName, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'mark', 'set', markName, index) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def mark_unset(self, *markNames): | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'mark', 'unset') + markNames) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def scan_mark(self, x, y): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'mark', x, y) | 
					
						
							|  |  |  | 	def scan_dragto(self, x, y): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'scan', 'dragto', x, y) | 
					
						
							| 
									
										
										
										
											1995-09-30 17:05:26 +00:00
										 |  |  | 	def search(self, pattern, index, stopindex=None, | 
					
						
							|  |  |  | 		   forwards=None, backwards=None, exact=None, | 
					
						
							|  |  |  | 		   regexp=None, nocase=None, count=None): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		args = [self._w, 'search'] | 
					
						
							|  |  |  | 		if forwards: args.append('-forwards') | 
					
						
							|  |  |  | 		if backwards: args.append('-backwards') | 
					
						
							|  |  |  | 		if exact: args.append('-exact') | 
					
						
							|  |  |  | 		if regexp: args.append('-regexp') | 
					
						
							|  |  |  | 		if nocase: args.append('-nocase') | 
					
						
							|  |  |  | 		if count: args.append('-count'); args.append(count) | 
					
						
							|  |  |  | 		if pattern[0] == '-': args.append('--') | 
					
						
							|  |  |  | 		args.append(pattern) | 
					
						
							|  |  |  | 		args.append(index) | 
					
						
							|  |  |  | 		if stopindex: args.append(stopindex) | 
					
						
							|  |  |  | 		return apply(self.tk.call, tuple(args)) | 
					
						
							|  |  |  | 	def see(self, index): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'see', index) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def tag_add(self, tagName, index1, index2=None): | 
					
						
							|  |  |  | 		self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'tag', 'add', tagName, index1, index2) | 
					
						
							| 
									
										
										
										
											1994-08-08 12:47:33 +00:00
										 |  |  | 	def tag_unbind(self, tagName, sequence): | 
					
						
							|  |  |  | 		self.tk.call(self._w, 'tag', 'bind', tagName, sequence, '') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def tag_bind(self, tagName, sequence, func, add=None): | 
					
						
							|  |  |  | 		return self._bind((self._w, 'tag', 'bind', tagName), | 
					
						
							|  |  |  | 				  sequence, func, add) | 
					
						
							|  |  |  | 	def tag_cget(self, tagName, option): | 
					
						
							|  |  |  | 		return self.tk.call(self._w, 'tag', 'cget', tagName, option) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def tag_config(self, tagName, cnf={}, **kw): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if type(cnf) == StringType: | 
					
						
							|  |  |  | 			x = self.tk.split(self.tk.call( | 
					
						
							|  |  |  | 				self._w, 'tag', 'configure', tagName, '-'+cnf)) | 
					
						
							|  |  |  | 			return (x[0][1:],) + x[1:] | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 		apply(self.tk.call,  | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		      (self._w, 'tag', 'configure', tagName) | 
					
						
							|  |  |  | 		      + self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	tag_configure = tag_config | 
					
						
							| 
									
										
										
										
											1994-07-06 09:23:20 +00:00
										 |  |  | 	def tag_delete(self, *tagNames): | 
					
						
							| 
									
										
										
										
											1994-07-06 10:20:11 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'tag', 'delete') + tagNames) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def tag_lower(self, tagName, belowThis=None): | 
					
						
							| 
									
										
										
										
											1994-07-07 13:12:12 +00:00
										 |  |  | 		self.tk.call(self._w, 'tag', 'lower', tagName, belowThis) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def tag_names(self, index=None): | 
					
						
							|  |  |  | 		return self.tk.splitlist( | 
					
						
							|  |  |  | 			self.tk.call(self._w, 'tag', 'names', index)) | 
					
						
							|  |  |  | 	def tag_nextrange(self, tagName, index1, index2=None): | 
					
						
							|  |  |  | 		return self.tk.splitlist(self.tk.call( | 
					
						
							| 
									
										
										
										
											1995-03-20 15:09:13 +00:00
										 |  |  | 			self._w, 'tag', 'nextrange', tagName, index1, index2)) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 	def tag_raise(self, tagName, aboveThis=None): | 
					
						
							|  |  |  | 		self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'tag', 'raise', tagName, aboveThis) | 
					
						
							|  |  |  | 	def tag_ranges(self, tagName): | 
					
						
							|  |  |  | 		return self.tk.splitlist(self.tk.call( | 
					
						
							|  |  |  | 			self._w, 'tag', 'ranges', tagName)) | 
					
						
							|  |  |  | 	def tag_remove(self, tagName, index1, index2=None): | 
					
						
							|  |  |  | 		self.tk.call( | 
					
						
							| 
									
										
										
										
											1994-07-06 21:16:58 +00:00
										 |  |  | 			self._w, 'tag', 'remove', tagName, index1, index2) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def window_cget(self, index, option): | 
					
						
							|  |  |  | 		return self.tk.call(self._w, 'window', 'cget', index, option) | 
					
						
							|  |  |  | 	def window_config(self, index, cnf={}, **kw): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if type(cnf) == StringType: | 
					
						
							|  |  |  | 			x = self.tk.split(self.tk.call( | 
					
						
							|  |  |  | 				self._w, 'window', 'configure', | 
					
						
							|  |  |  | 				index, '-'+cnf)) | 
					
						
							|  |  |  | 			return (x[0][1:],) + x[1:] | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 		apply(self.tk.call,  | 
					
						
							|  |  |  | 		      (self._w, 'window', 'configure', index) | 
					
						
							|  |  |  | 		      + self._options(cnf, kw)) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	window_configure = window_config | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def window_create(self, index, cnf={}, **kw): | 
					
						
							|  |  |  | 		apply(self.tk.call,  | 
					
						
							|  |  |  | 		      (self._w, 'window', 'create', index) | 
					
						
							|  |  |  | 		      + self._options(cnf, kw)) | 
					
						
							|  |  |  | 	def window_names(self): | 
					
						
							|  |  |  | 		return self.tk.splitlist( | 
					
						
							|  |  |  | 			self.tk.call(self._w, 'window', 'names')) | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def xview(self, *what): | 
					
						
							|  |  |  | 		if not what: | 
					
						
							|  |  |  | 			return self._getdoubles(self.tk.call(self._w, 'xview')) | 
					
						
							|  |  |  | 		apply(self.tk.call, (self._w, 'xview')+what) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 	def yview(self, *what): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 		if not what: | 
					
						
							|  |  |  | 			return self._getdoubles(self.tk.call(self._w, 'yview')) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		apply(self.tk.call, (self._w, 'yview')+what) | 
					
						
							|  |  |  | 	def yview_pickplace(self, *what): | 
					
						
							|  |  |  | 		apply(self.tk.call, (self._w, 'yview', '-pickplace')+what) | 
					
						
							| 
									
										
										
										
											1994-06-20 07:49:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-09-01 20:35:37 +00:00
										 |  |  | class OptionMenu(Widget): | 
					
						
							|  |  |  | 	def __init__(self, master, variable, value, *values): | 
					
						
							|  |  |  | 		self.widgetName = 'tk_optionMenu' | 
					
						
							|  |  |  | 		Widget._setup(self, master, {}) | 
					
						
							|  |  |  | 		self.menuname = apply( | 
					
						
							|  |  |  | 			self.tk.call, | 
					
						
							|  |  |  | 			(self.widgetName, self._w, variable, value) + values) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | class Image: | 
					
						
							|  |  |  | 	def __init__(self, imgtype, name=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		self.name = None | 
					
						
							|  |  |  | 		master = _default_root | 
					
						
							|  |  |  | 		if not master: raise RuntimeError, 'Too early to create image' | 
					
						
							|  |  |  | 		self.tk = master.tk | 
					
						
							|  |  |  | 		if not name: name = `id(self)` | 
					
						
							|  |  |  | 		if kw and cnf: cnf = _cnfmerge((cnf, kw)) | 
					
						
							|  |  |  | 		elif kw: cnf = kw | 
					
						
							|  |  |  | 		options = () | 
					
						
							|  |  |  | 		for k, v in cnf.items(): | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 			if callable(v): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 				v = self._register(v) | 
					
						
							|  |  |  | 			options = options + ('-'+k, v) | 
					
						
							|  |  |  | 		apply(self.tk.call, | 
					
						
							|  |  |  | 		      ('image', 'create', imgtype, name,) + options) | 
					
						
							|  |  |  | 		self.name = name | 
					
						
							|  |  |  | 	def __str__(self): return self.name | 
					
						
							|  |  |  | 	def __del__(self): | 
					
						
							|  |  |  | 		if self.name: | 
					
						
							|  |  |  | 			self.tk.call('image', 'delete', self.name) | 
					
						
							| 
									
										
										
										
											1995-09-18 21:54:35 +00:00
										 |  |  | 	def __setitem__(self, key, value): | 
					
						
							|  |  |  | 		self.tk.call(self.name, 'configure', '-'+key, value) | 
					
						
							|  |  |  | 	def __getitem__(self, key): | 
					
						
							|  |  |  | 		return self.tk.call(self.name, 'configure', '-'+key) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def height(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('image', 'height', self.name)) | 
					
						
							|  |  |  | 	def type(self): | 
					
						
							|  |  |  | 		return self.tk.call('image', 'type', self.name) | 
					
						
							|  |  |  | 	def width(self): | 
					
						
							|  |  |  | 		return self.tk.getint( | 
					
						
							|  |  |  | 			self.tk.call('image', 'width', self.name)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PhotoImage(Image): | 
					
						
							|  |  |  | 	def __init__(self, name=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		apply(Image.__init__, (self, 'photo', name, cnf), kw) | 
					
						
							| 
									
										
										
										
											1995-09-30 17:05:26 +00:00
										 |  |  | 	def blank(self): | 
					
						
							|  |  |  | 		self.tk.call(self.name, 'blank') | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def cget(self, option): | 
					
						
							|  |  |  | 		return self.tk.call(self.name, 'cget', '-' + option) | 
					
						
							| 
									
										
										
										
											1995-09-30 17:05:26 +00:00
										 |  |  | 	# XXX config | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def __getitem__(self, key): | 
					
						
							|  |  |  | 		return self.tk.call(self.name, 'cget', '-' + key) | 
					
						
							|  |  |  | 	def copy(self): | 
					
						
							|  |  |  | 		destImage = PhotoImage() | 
					
						
							|  |  |  | 		self.tk.call(destImage, 'copy', self.name) | 
					
						
							|  |  |  | 		return destImage | 
					
						
							|  |  |  | 	def zoom(self,x,y=''): | 
					
						
							|  |  |  | 		destImage = PhotoImage() | 
					
						
							|  |  |  | 		if y=='': y=x | 
					
						
							|  |  |  | 		self.tk.call(destImage, 'copy', self.name, '-zoom',x,y) | 
					
						
							|  |  |  | 		return destImage | 
					
						
							|  |  |  | 	def subsample(self,x,y=''): | 
					
						
							|  |  |  | 		destImage = PhotoImage() | 
					
						
							|  |  |  | 		if y=='': y=x | 
					
						
							|  |  |  | 		self.tk.call(destImage, 'copy', self.name, '-subsample',x,y) | 
					
						
							|  |  |  | 		return destImage | 
					
						
							| 
									
										
										
										
											1995-09-30 17:05:26 +00:00
										 |  |  | 	def get(self, x, y): | 
					
						
							|  |  |  | 		return self.tk.call(self.name, 'get', x, y) | 
					
						
							|  |  |  | 	def put(self, data, to=None): | 
					
						
							|  |  |  | 		args = (self.name, 'put', data) | 
					
						
							|  |  |  | 		if to: | 
					
						
							|  |  |  | 			args = args + to | 
					
						
							|  |  |  | 		apply(self.tk.call, args) | 
					
						
							|  |  |  | 	# XXX read | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 	def write(self, filename, format=None, from_coords=None): | 
					
						
							|  |  |  | 		args = (self.name, 'write', filename) | 
					
						
							|  |  |  | 		if format: | 
					
						
							|  |  |  | 			args = args + ('-format', format) | 
					
						
							|  |  |  | 		if from_coords: | 
					
						
							|  |  |  | 			args = args + ('-from',) + tuple(from_coords) | 
					
						
							|  |  |  | 		apply(self.tk.call, args) | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class BitmapImage(Image): | 
					
						
							|  |  |  | 	def __init__(self, name=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		apply(Image.__init__, (self, 'bitmap', name, cnf), kw) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def image_names(): return _default_root.tk.call('image', 'names') | 
					
						
							|  |  |  | def image_types(): return _default_root.tk.call('image', 'types') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | ###################################################################### | 
					
						
							|  |  |  | # Extensions: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Studbutton(Button): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'studbutton', cnf, kw) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		self.bind('<Any-Enter>',       self.tkButtonEnter) | 
					
						
							|  |  |  | 		self.bind('<Any-Leave>',       self.tkButtonLeave) | 
					
						
							|  |  |  | 		self.bind('<1>',               self.tkButtonDown) | 
					
						
							|  |  |  | 		self.bind('<ButtonRelease-1>', self.tkButtonUp) | 
					
						
							| 
									
										
										
										
											1994-06-27 07:55:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Tributton(Button): | 
					
						
							| 
									
										
										
										
											1995-08-04 03:50:29 +00:00
										 |  |  | 	def __init__(self, master=None, cnf={}, **kw): | 
					
						
							|  |  |  | 		Widget.__init__(self, master, 'tributton', cnf, kw) | 
					
						
							| 
									
										
										
										
											1995-07-14 15:29:10 +00:00
										 |  |  | 		self.bind('<Any-Enter>',       self.tkButtonEnter) | 
					
						
							|  |  |  | 		self.bind('<Any-Leave>',       self.tkButtonLeave) | 
					
						
							|  |  |  | 		self.bind('<1>',               self.tkButtonDown) | 
					
						
							|  |  |  | 		self.bind('<ButtonRelease-1>', self.tkButtonUp) | 
					
						
							|  |  |  | 		self['fg']               = self['bg'] | 
					
						
							|  |  |  | 		self['activebackground'] = self['bg'] | 
					
						
							| 
									
										
										
										
											1996-05-16 16:00:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Emacs cruft | 
					
						
							|  |  |  | # Local Variables: | 
					
						
							|  |  |  | # py-indent-offset: 8 | 
					
						
							|  |  |  | # End: |