summaryrefslogtreecommitdiffstats
path: root/Demo/tkinter
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1994-07-12 09:00:42 (GMT)
committerGuido van Rossum <guido@python.org>1994-07-12 09:00:42 (GMT)
commitc618ed986897fdbeeea6e1d68dcbed604b8d3bd0 (patch)
treeeadcd624c85ef5e594ef887adf3fb5be150418f9 /Demo/tkinter
parent3e395be1ee33eefbafeed97bc9c732351cc88dce (diff)
downloadcpython-c618ed986897fdbeeea6e1d68dcbed604b8d3bd0.zip
cpython-c618ed986897fdbeeea6e1d68dcbed604b8d3bd0.tar.gz
cpython-c618ed986897fdbeeea6e1d68dcbed604b8d3bd0.tar.bz2
Use disabled state to enforce read-only state (bit painful since it means
switching states each time we insert some text but has to be done this way since else class bindings might allow editing...)
Diffstat (limited to 'Demo/tkinter')
-rwxr-xr-xDemo/tkinter/guido/ManPage.py46
1 files changed, 19 insertions, 27 deletions
diff --git a/Demo/tkinter/guido/ManPage.py b/Demo/tkinter/guido/ManPage.py
index b6ade64..2c3371e 100755
--- a/Demo/tkinter/guido/ManPage.py
+++ b/Demo/tkinter/guido/ManPage.py
@@ -81,7 +81,10 @@ class EditableManPage(ScrolledText):
self.ok = 0
self.empty = 0
self.buffer = None
+ savestate = self['state']
+ self['state'] = 'normal'
self.delete('1.0', 'end')
+ self['state'] = savestate
# End parsing -- must be busy, need not be at EOF
def _endparser(self):
@@ -128,6 +131,8 @@ class EditableManPage(ScrolledText):
self.ok = 0
self.empty = 0
return
+ savestate = self['state']
+ self['state'] = 'normal'
if self.empty:
# One or more previous lines were empty
# -- insert one blank line in the text
@@ -137,19 +142,19 @@ class EditableManPage(ScrolledText):
if not propline:
# No properties
self._insert_prop(textline)
- self.lineno = self.lineno + 1
- return
- # Search for properties
- p = ''
- j = 0
- for i in range(min(len(propline), len(textline))):
- if propline[i] != p:
- if j < i:
- self._insert_prop(textline[j:i], p)
- j = i
- p = propline[i]
- self._insert_prop(textline[j:])
+ else:
+ # Search for properties
+ p = ''
+ j = 0
+ for i in range(min(len(propline), len(textline))):
+ if propline[i] != p:
+ if j < i:
+ self._insert_prop(textline[j:i], p)
+ j = i
+ p = propline[i]
+ self._insert_prop(textline[j:])
self.lineno = self.lineno + 1
+ self['state'] = savestate
# Insert a string at the end, with at most one property (tag)
def _insert_prop(self, str, prop = ' '):
@@ -166,21 +171,8 @@ class ReadonlyManPage(EditableManPage):
# Initialize instance
def __init__(self, master=None, cnf={}):
- # Initialize base class
- EditableManPage.__init__(self, master, cnf)
-
- # Make the text readonly
- self.bind('<Any-KeyPress>', self.modify_cb)
- self.bind('<Return>', self.modify_cb)
- self.bind('<BackSpace>', self.modify_cb)
- self.bind('<Delete>', self.modify_cb)
- self.bind('<Control-h>', self.modify_cb)
- self.bind('<Control-d>', self.modify_cb)
- self.bind('<Control-v>', self.modify_cb)
-
- # You could override this to ring the bell, etc.
- def modify_cb(self, e):
- pass
+ EditableManPage.__init__(self, master,
+ (cnf, {'state': 'disabled'}))
# Alias
ManPage = ReadonlyManPage