]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Patch #612602: Streamline configure methods.
authorMartin v. Löwis <martin@v.loewis.de>
Thu, 10 Oct 2002 14:36:13 +0000 (14:36 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Thu, 10 Oct 2002 14:36:13 +0000 (14:36 +0000)
Lib/lib-tk/Tkinter.py
Misc/ACKS
Misc/NEWS

index 573d71da2eb27e886c5f01e330a6b0037bd540ea..f2c9a91c72224ed243e05233c3ede121f9f640b3 100644 (file)
@@ -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."""
index cffe25de9050c31ca6f1384cee05f05ab57bd35f..5c0d241cc0eb5aef96218db6a9f4a8a3c5c8d715 100644 (file)
--- 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
index 7321f604e8f910df478503bd5469c3d38c941f43..849bd882795bdc10fc7c6bac215c3b6403615a53 100644 (file)
--- 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