diff options
author | Guido van Rossum <guido@python.org> | 1994-07-12 09:00:42 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1994-07-12 09:00:42 (GMT) |
commit | c618ed986897fdbeeea6e1d68dcbed604b8d3bd0 (patch) | |
tree | eadcd624c85ef5e594ef887adf3fb5be150418f9 | |
parent | 3e395be1ee33eefbafeed97bc9c732351cc88dce (diff) | |
download | cpython-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-x | Demo/tkinter/guido/ManPage.py | 46 |
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 |