From 6ce1315bd35b6114abf8a59d0e9b9f7dce0bcd7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 10 Oct 2002 14:36:13 +0000 Subject: Patch #612602: Streamline configure methods. --- Lib/lib-tk/Tkinter.py | 103 ++++++++++++-------------------------------------- Misc/ACKS | 1 + Misc/NEWS | 4 ++ 3 files changed, 29 insertions(+), 79 deletions(-) diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py index 573d71d..f2c9a91 100644 --- a/Lib/lib-tk/Tkinter.py +++ b/Lib/lib-tk/Tkinter.py @@ -1067,15 +1067,8 @@ class Misc: exc, val, tb = sys.exc_type, sys.exc_value, sys.exc_traceback root = self._root() root.report_callback_exception(exc, val, tb) - # These used to be defined in Widget: - def configure(self, cnf=None, **kw): - """Configure resources of a widget. - - The values for resources are specified as keyword - arguments. To get an overview about - the allowed keyword arguments call the method keys. - """ - # XXX ought to generalize this so tag_config etc. can use it + def _configure(self, cmd, cnf, kw): + """Internal function.""" if kw: cnf = _cnfmerge((cnf, kw)) elif cnf: @@ -1083,15 +1076,23 @@ class Misc: if cnf is None: cnf = {} for x in self.tk.split( - self.tk.call(self._w, 'configure')): + self.tk.call(_flatten((self._w, cmd)))): cnf[x[0][1:]] = (x[0][1:],) + x[1:] return cnf if type(cnf) is StringType: - x = self.tk.split(self.tk.call( - self._w, 'configure', '-'+cnf)) + x = self.tk.split( + self.tk.call(_flatten((self._w, cmd, '-'+cnf)))) return (x[0][1:],) + x[1:] - self.tk.call((self._w, 'configure') - + self._options(cnf)) + self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) + # These used to be defined in Widget: + def configure(self, cnf=None, **kw): + """Configure resources of a widget. + + The values for resources are specified as keyword + arguments. To get an overview about + the allowed keyword arguments call the method keys. + """ + return self._configure('configure', cnf, kw) config = configure def cget(self, key): """Return the resource value for a KEY given as string.""" @@ -2043,19 +2044,7 @@ class Canvas(Widget): arguments. To get an overview about the allowed keyword arguments call the method without arguments. """ - if cnf is None and not kw: - cnf = {} - for x in self.tk.split( - self.tk.call(self._w, - 'itemconfigure', tagOrId)): - cnf[x[0][1:]] = (x[0][1:],) + x[1:] - return cnf - if type(cnf) == StringType and not kw: - x = self.tk.split(self.tk.call( - self._w, 'itemconfigure', tagOrId, '-'+cnf)) - return (x[0][1:],) + x[1:] - self.tk.call((self._w, 'itemconfigure', tagOrId) + - self._options(cnf, kw)) + return self._configure(('itemconfigure', tagOrId), cnf, kw) itemconfig = itemconfigure # lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift, # so the preferred name for them is tag_lower, tag_raise @@ -2383,18 +2372,7 @@ class Listbox(Widget): call the method without arguments. Valid resource names: background, bg, foreground, fg, selectbackground, selectforeground.""" - if cnf is None and not kw: - cnf = {} - for x in self.tk.split( - self.tk.call(self._w, 'itemconfigure', index)): - cnf[x[0][1:]] = (x[0][1:],) + x[1:] - return cnf - if type(cnf) == StringType and not kw: - x = self.tk.split(self.tk.call( - self._w, 'itemconfigure', index, '-'+cnf)) - return (x[0][1:],) + x[1:] - self.tk.call((self._w, 'itemconfigure', index) + - self._options(cnf, kw)) + return self._configure(('itemconfigure', index), cnf, kw) itemconfig = itemconfigure class Menu(Widget): @@ -2481,18 +2459,7 @@ class Menu(Widget): return self.tk.call(self._w, 'entrycget', index, '-' + option) def entryconfigure(self, index, cnf=None, **kw): """Configure a menu item at INDEX.""" - if cnf is None and not kw: - cnf = {} - for x in self.tk.split(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(self.tk.call( - (self._w, 'entryconfigure', index, '-'+cnf))) - return (x[0][1:],) + x[1:] - self.tk.call((self._w, 'entryconfigure', index) - + self._options(cnf, kw)) + return self._configure(('entryconfigure', index), cnf, kw) entryconfig = entryconfigure def index(self, index): """Return the index of a menu item identified by INDEX.""" @@ -2719,18 +2686,9 @@ class Text(Widget): if option[-1:] == "_": option = option[:-1] return self.tk.call(self._w, "image", "cget", index, option) - def image_configure(self, index, cnf={}, **kw): + def image_configure(self, index, cnf=None, **kw): """Configure an embedded image at INDEX.""" - if not cnf and not kw: - cnf = {} - for x in self.tk.split( - self.tk.call( - self._w, "image", "configure", index)): - cnf[x[0][1:]] = (x[0][1:],) + x[1:] - return cnf - apply(self.tk.call, - (self._w, "image", "configure", index) - + self._options(cnf, kw)) + return self._configure(('image', 'configure', index), cnf, kw) def image_create(self, index, cnf={}, **kw): """Create an embedded image at INDEX.""" return apply(self.tk.call, @@ -2821,15 +2779,9 @@ class Text(Widget): if option[-1:] == '_': option = option[:-1] return self.tk.call(self._w, 'tag', 'cget', tagName, option) - def tag_configure(self, tagName, cnf={}, **kw): + def tag_configure(self, tagName, cnf=None, **kw): """Configure a tag TAGNAME.""" - if type(cnf) == StringType: - x = self.tk.split(self.tk.call( - self._w, 'tag', 'configure', tagName, '-'+cnf)) - return (x[0][1:],) + x[1:] - self.tk.call( - (self._w, 'tag', 'configure', tagName) - + self._options(cnf, kw)) + return self._configure(('tag', 'configure', tagName), cnf, kw) tag_config = tag_configure def tag_delete(self, *tagNames): """Delete all tags in TAGNAMES.""" @@ -2874,16 +2826,9 @@ class Text(Widget): if option[-1:] == '_': option = option[:-1] return self.tk.call(self._w, 'window', 'cget', index, option) - def window_configure(self, index, cnf={}, **kw): + def window_configure(self, index, cnf=None, **kw): """Configure an embedded window at INDEX.""" - if type(cnf) == StringType: - x = self.tk.split(self.tk.call( - self._w, 'window', 'configure', - index, '-'+cnf)) - return (x[0][1:],) + x[1:] - self.tk.call( - (self._w, 'window', 'configure', index) - + self._options(cnf, kw)) + return self._configure(('window', 'configure', index), cnf, kw) window_config = window_configure def window_create(self, index, cnf={}, **kw): """Create a window at INDEX.""" diff --git a/Misc/ACKS b/Misc/ACKS index cffe25d..5c0d241 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -414,6 +414,7 @@ Edward K. Ream Marc Recht John Redford Terry Reedy +Steve Reeves Ofir Reichenberg Sean Reifschneider Michael P. Reilly diff --git a/Misc/NEWS b/Misc/NEWS index 7321f60..849bd88 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -354,6 +354,10 @@ Extension modules Library ------- +- Various configure methods of Tkinter have been stream-lined, so + that tag_configure, image_configure, window_configure now return + a dictionary when invoked with no argument. + - Importing the readline module now no longer has the side effect of calling setlocale(LC_CTYPE, ""). The initial "C" locale, or whatever locale is explicitly set by the user, is preserved. If you -- cgit v0.12