[Python-checkins] r64591 - sandbox/trunk/ttk-gsoc/samples/theming.py

guilherme.polo python-checkins at python.org
Sun Jun 29 16:36:36 CEST 2008


Author: guilherme.polo
Date: Sun Jun 29 16:36:36 2008
New Revision: 64591

Log:
Added support for element options;
Labels on NewElement Dialog are right-aligned now.


Modified:
   sandbox/trunk/ttk-gsoc/samples/theming.py

Modified: sandbox/trunk/ttk-gsoc/samples/theming.py
==============================================================================
--- sandbox/trunk/ttk-gsoc/samples/theming.py	(original)
+++ sandbox/trunk/ttk-gsoc/samples/theming.py	Sun Jun 29 16:36:36 2008
@@ -5,8 +5,7 @@
 -- Guilherme Polo, 2008.
 """
 
-# ToDO: Support element options.
-#       Add a way to remove options.
+# ToDO: Add a way to remove options.
 #       Add a way to edit images/elements.
 #       Add pre-defined elements for the current theme.
 #       ...
@@ -343,15 +342,15 @@
         self.sspec = ttk.Entry(master)
 
         # place the widgets
-        name.grid(row=0, column=0, sticky='w', padx=6, pady=3)
+        name.grid(row=0, column=0, sticky='e', padx=6, pady=3)
         self.name.grid(row=0, column=1, pady=3, sticky='ew')
-        etype.grid(row=0, column=2, sticky='w', padx=6, pady=3)
+        etype.grid(row=0, column=2, sticky='e', padx=6, pady=3)
         self.etype.grid(row=0, column=3, pady=3)
-        defimg.grid(row=1, column=0, sticky='w', padx=6, pady=3)
+        defimg.grid(row=1, column=0, sticky='e', padx=6, pady=3)
         self.defimg.grid(row=1, column=1, pady=3, sticky='ew')
-        opts.grid(row=1, column=2, sticky='w', padx=6, pady=3)
+        opts.grid(row=1, column=2, sticky='e', padx=6, pady=3)
         self.opts.grid(row=1, column=3, pady=3)
-        sspec.grid(row=2, column=0, sticky='w', padx=6, pady=3)
+        sspec.grid(row=2, column=0, sticky='e', padx=6, pady=3)
         self.sspec.grid(row=2, column=1, columnspan=3, sticky='ew', pady=3)
 
         self.resizable(False, False)
@@ -371,6 +370,26 @@
                 "at least.", parent=self)
             return False
 
+        if values['opts']:
+            try:
+                # XXX Warning: eval usage!
+                values['opts'] = eval(values['opts'])
+                if not isinstance(values['opts'], dict):
+                    raise ValueError
+            except (NameError, SyntaxError), err:
+                showwarning("Invalid options specification",
+                    "Options should be formatted according to a dict.\n\n"
+                    "Error: %s" % err,
+                    parent=self)
+                return False
+            except ValueError:
+                showwarning("Invalid options specification",
+                    "Options should be formatted according to a dict.",
+                    parent=self)
+                return False
+        else:
+            values['opts'] = {}
+
         self.result = values
         return True
 
@@ -569,13 +588,10 @@
                 sspec = ()
             args = (dlg.result['def'], ) + sspec
 
-            # format opts (XXX Not done)
-            #if dlg.result['opts']:
-            #    print dlg.result['opts']
-            
             # create element
             try:
-                self._style.element_create(name, dlg.result['etype'], *args)
+                self._style.element_create(name, dlg.result['etype'], *args,
+                    **dlg.result['opts'])
             except Tkinter.TclError, err:
                 showwarning("Element couldn't be created",
                     "The specified element couldn'be created, reason: "


More information about the Python-checkins mailing list