summaryrefslogtreecommitdiffstats
path: root/Demo/tkinter/guido/AttrDialog.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/tkinter/guido/AttrDialog.py')
-rwxr-xr-xDemo/tkinter/guido/AttrDialog.py88
1 files changed, 79 insertions, 9 deletions
diff --git a/Demo/tkinter/guido/AttrDialog.py b/Demo/tkinter/guido/AttrDialog.py
index d9ad82a..05da37d 100755
--- a/Demo/tkinter/guido/AttrDialog.py
+++ b/Demo/tkinter/guido/AttrDialog.py
@@ -148,6 +148,7 @@ class PackDialog(Dialog):
def refresh(self):
self.current = self.widget.newinfo()
self.current['.class'] = self.widget.winfo_class()
+ self.current['.name'] = self.widget._w
class packoption: # Mix-in class
def set(self, e=None):
@@ -165,7 +166,8 @@ class PackDialog(Dialog):
options = {
'.class': (None, 'Class'),
- 'after': (None, 'Widet'),
+ '.name': (None, 'Name'),
+ 'after': (None, 'Widget'),
'anchor': ('center', 'Anchor'),
'before': (None, 'Widget'),
'expand': ('no', 'Boolean'),
@@ -184,6 +186,7 @@ class PackDialog(Dialog):
'Class': 'readonly',
'Expand': 'boolean',
'Fill': ('none', 'x', 'y', 'both'),
+ 'Name': 'readonly',
'Pad': 'pixel',
'Side': ('top', 'right', 'bottom', 'left'),
'Widget': 'readonly',
@@ -197,8 +200,8 @@ class RemotePackDialog(PackDialog):
self.widget = widget
self.refresh()
self.top = Toplevel(self.master)
- self.top.title('Remote %s Pack: %s' % (self.app, self.widget))
- self.top.minsize(1, 1) # XXX
+ self.top.title(self.app + ' PackDialog')
+ self.top.minsize(1, 1)
self.addchoices()
def refresh(self):
@@ -220,6 +223,7 @@ class RemotePackDialog(PackDialog):
'winfo',
'class',
self.widget)
+ dict['.name'] = self.widget
self.current = dict
class remotepackoption: # Mix-in class
@@ -254,14 +258,19 @@ class WidgetDialog(Dialog):
def refresh(self):
self.configuration = self.widget.config()
+ self.update()
+ self.current['.class'] = self.widget.winfo_class()
+ self.current['.name'] = self.widget._w
+
+ def update(self):
self.current = {}
self.options = {}
- self.options['.class'] = (None, 'Class')
- self.current['.class'] = self.widget.winfo_class()
for k, v in self.configuration.items():
if len(v) > 4:
self.current[k] = v[4]
self.options[k] = v[3], v[2] # default, klass
+ self.options['.class'] = (None, 'Class')
+ self.options['.name'] = (None, 'Name')
class widgetoption: # Mix-in class
def set(self, e=None):
@@ -301,6 +310,7 @@ class WidgetDialog(Dialog):
'Label': 'string',
'Length': 'pixel',
'MenuName': 'widget',
+ 'Name': 'readonly',
'OffTime': 'time',
'OnTime': 'time',
'Orient': ('horizontal', 'vertical'),
@@ -337,7 +347,60 @@ class WidgetDialog(Dialog):
'menubutton': _tristate,
'slider': _bistate,
}
-
+
+class RemoteWidgetDialog(WidgetDialog):
+
+ def __init__(self, master, app, widget):
+ self.master = master
+ self.app = app
+ self.widget = widget
+ self.refresh()
+ self.top = Toplevel(self.master)
+ self.top.title(self.app + ' WidgetDialog')
+ self.top.minsize(1, 1)
+ self.addchoices()
+
+ def refresh(self):
+ try:
+ items = self.master.tk.splitlist(
+ self.master.send(self.app,
+ self.widget,
+ 'config'))
+ except TclError, msg:
+ print 'send widget config', self.widget, ':', msg
+ return
+ dict = {}
+ for item in items:
+ words = self.master.tk.splitlist(item)
+ key = words[0][1:]
+ value = (key,) + words[1:]
+ dict[key] = value
+ self.configuration = dict
+ self.update()
+ self.current['.class'] = self.master.send(self.app,
+ 'winfo',
+ 'class',
+ self.widget)
+ self.current['.name'] = self.widget
+
+ class remotewidgetoption: # Mix-in class
+ def set(self, e=None):
+ self.current = self.var.get()
+ try:
+ self.dialog.master.send(
+ self.dialog.app,
+ self.dialog.widget,
+ 'config',
+ '-'+self.option,
+ self.current)
+ except TclError, msg:
+ print 'send widget config :', msg
+ self.refresh()
+
+ class booleanoption(remotewidgetoption, BooleanOption): pass
+ class enumoption(remotewidgetoption, EnumOption): pass
+ class stringoption(remotewidgetoption, StringOption): pass
+ class readonlyoption(remotewidgetoption, ReadonlyOption): pass
def test():
import sys
@@ -345,11 +408,18 @@ def test():
root.minsize(1, 1)
if sys.argv[2:]:
pd = RemotePackDialog(root, sys.argv[1], sys.argv[2])
+ wd = RemoteWidgetDialog(root, sys.argv[1], sys.argv[2])
else:
- frame = Frame(root, {Pack: {'expand': 1, 'fill': 'both'}})
- button = Button(frame, {'text': 'button',
+ frame = Frame(root, {'name': 'frame',
+ Pack: {'expand': 1, 'fill': 'both'},
+ })
+ button = Button(frame, {'name': 'button',
+ 'text': 'button',
Pack: {'expand': 1}})
- canvas = Canvas(frame, {Pack: {}})
+ canvas = Canvas(frame, {'name': 'canvas',
+ Pack: {}})
+ fpd = PackDialog(frame)
+ fwd = WidgetDialog(frame)
bpd = PackDialog(button)
bwd = WidgetDialog(button)
cpd = PackDialog(canvas)