summaryrefslogtreecommitdiffstats
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
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...)
-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