]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added activate/deactivate.
authorGuido van Rossum <guido@python.org>
Fri, 16 Aug 1991 13:19:43 +0000 (13:19 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 16 Aug 1991 13:19:43 +0000 (13:19 +0000)
minsize --> getminsize.
Added 'boxed' option.
Added lost of code to realize (?)

Lib/lib-stdwin/TextEdit.py
Lib/stdwin/TextEdit.py

index f70fba16a88622f3b66c5ecdc0dda9024c079bfb..5473f2b5a53b98375874cbe6eb32519c05faead0 100644 (file)
@@ -1,5 +1,8 @@
 # Text editing widget
 
+# NB: this always assumes fixed bounds.
+# For auto-growing TextEdit windows, different code would be needed.
+
 from stdwinevents import *
 
 class TextEdit():
@@ -11,7 +14,14 @@ class TextEdit():
                self.rows = rows
                self.text = ''
                # Creation of the editor is done in realize()
-               self.editor = 0
+               self.editor = None
+               self.dh = self.dv = 0
+               return self
+       #
+       def createboxed(self, (parent, (cols, rows), (dh, dv))):
+               self = self.create(parent, (cols, rows))
+               self.dh = max(0, dh)
+               self.dv = max(0, dv)
                return self
        #
        def settext(self, text):
@@ -24,26 +34,69 @@ class TextEdit():
                del self.editor
                del self.window
        #
-       def minsize(self, m):
-               return self.cols*m.textwidth('in')/2, self.rows*m.lineheight()
+       def getminsize(self, (m, (width, height))):
+               width = max(0, width - 2*self.dh)
+               height = max(0, height - 2*self.dv)
+               if width > 0 and self.editor:
+                       (left, top), (right, bottom) = self.editor.getrect()
+                       act_width, act_height = right - left, bottom - top
+                       if width >= act_width:
+                               width = width + 2*self.dh
+                               height = max(height, act_height) + 2*self.dv
+                               return width, height
+               width = max(width, self.cols*m.textwidth('in')/2) + 2*self.dh
+               height = max(height, self.rows*m.lineheight()) + 2*self.dv
+               return width, height
+       #
        def setbounds(self, bounds):
                self.bounds = bounds
                if self.editor:
-                       self.editor.move(bounds)
-       def getbounds(self, bounds):
-               if self.editor:
-                       return self.editor.getrect()
-               else:
-                       return self.bounds
+                       (left, top), (right, bottom) = bounds
+                       left = left + self.dh
+                       top = top + self.dv
+                       right = right - self.dh
+                       bottom = bottom - self.dv
+                       self.editor.move((left, top), (right, bottom))
+                       if self.dh and self.dv:
+                               (left, top), (right, bottom) = bounds
+                               left = left + 1
+                               top = top + 1
+                               right = right - 1
+                               bottom = bottom - 1
+                               bounds = (left, top), (right, bottom)
+                       self.editor.setview(bounds)
+       #
+       def getbounds(self):
+               return self.bounds
+       #
        def realize(self):
                self.window = self.parent.getwindow()
-               self.editor = self.window.textcreate(self.bounds)
+               (left, top), (right, bottom) = self.bounds
+               left = left + self.dh
+               top = top + self.dv
+               right = right - self.dh
+               bottom = bottom - self.dv
+               self.editor = \
+                       self.window.textcreate((left, top), (right, bottom))
+               self.editor.setactive(0)
+               bounds = self.bounds
+               if self.dh and self.dv:
+                       (left, top), (right, bottom) = bounds
+                       left = left + 1
+                       top = top + 1
+                       right = right - 1
+                       bottom = bottom - 1
+                       bounds = (left, top), (right, bottom)
+               self.editor.setview(bounds)
                self.editor.settext(self.text)
                self.parent.need_mouse(self)
                self.parent.need_keybd(self)
                self.parent.need_altdraw(self)
+       #
        def draw(self, (d, area)):
-               pass
+               if self.dh and self.dv:
+                       d.box(self.bounds)
+       #
        def altdraw(self, area):
                self.editor.draw(area)
        #
@@ -51,11 +104,20 @@ class TextEdit():
        #
        def mouse_down(self, detail):
                x = self.editor.event(WE_MOUSE_DOWN, self.window, detail)
+       #
        def mouse_move(self, detail):
                x = self.editor.event(WE_MOUSE_MOVE, self.window, detail)
+       #
        def mouse_up(self, detail):
                x = self.editor.event(WE_MOUSE_UP, self.window, detail)
        #
        def keybd(self, (type, detail)):
                x = self.editor.event(type, self.window, detail)
        #
+       def activate(self):
+               self.editor.setfocus(0, 30000)
+               self.editor.setactive(1)
+       #
+       def deactivate(self):
+               self.editor.setactive(0)
+       #
index f70fba16a88622f3b66c5ecdc0dda9024c079bfb..5473f2b5a53b98375874cbe6eb32519c05faead0 100755 (executable)
@@ -1,5 +1,8 @@
 # Text editing widget
 
+# NB: this always assumes fixed bounds.
+# For auto-growing TextEdit windows, different code would be needed.
+
 from stdwinevents import *
 
 class TextEdit():
@@ -11,7 +14,14 @@ class TextEdit():
                self.rows = rows
                self.text = ''
                # Creation of the editor is done in realize()
-               self.editor = 0
+               self.editor = None
+               self.dh = self.dv = 0
+               return self
+       #
+       def createboxed(self, (parent, (cols, rows), (dh, dv))):
+               self = self.create(parent, (cols, rows))
+               self.dh = max(0, dh)
+               self.dv = max(0, dv)
                return self
        #
        def settext(self, text):
@@ -24,26 +34,69 @@ class TextEdit():
                del self.editor
                del self.window
        #
-       def minsize(self, m):
-               return self.cols*m.textwidth('in')/2, self.rows*m.lineheight()
+       def getminsize(self, (m, (width, height))):
+               width = max(0, width - 2*self.dh)
+               height = max(0, height - 2*self.dv)
+               if width > 0 and self.editor:
+                       (left, top), (right, bottom) = self.editor.getrect()
+                       act_width, act_height = right - left, bottom - top
+                       if width >= act_width:
+                               width = width + 2*self.dh
+                               height = max(height, act_height) + 2*self.dv
+                               return width, height
+               width = max(width, self.cols*m.textwidth('in')/2) + 2*self.dh
+               height = max(height, self.rows*m.lineheight()) + 2*self.dv
+               return width, height
+       #
        def setbounds(self, bounds):
                self.bounds = bounds
                if self.editor:
-                       self.editor.move(bounds)
-       def getbounds(self, bounds):
-               if self.editor:
-                       return self.editor.getrect()
-               else:
-                       return self.bounds
+                       (left, top), (right, bottom) = bounds
+                       left = left + self.dh
+                       top = top + self.dv
+                       right = right - self.dh
+                       bottom = bottom - self.dv
+                       self.editor.move((left, top), (right, bottom))
+                       if self.dh and self.dv:
+                               (left, top), (right, bottom) = bounds
+                               left = left + 1
+                               top = top + 1
+                               right = right - 1
+                               bottom = bottom - 1
+                               bounds = (left, top), (right, bottom)
+                       self.editor.setview(bounds)
+       #
+       def getbounds(self):
+               return self.bounds
+       #
        def realize(self):
                self.window = self.parent.getwindow()
-               self.editor = self.window.textcreate(self.bounds)
+               (left, top), (right, bottom) = self.bounds
+               left = left + self.dh
+               top = top + self.dv
+               right = right - self.dh
+               bottom = bottom - self.dv
+               self.editor = \
+                       self.window.textcreate((left, top), (right, bottom))
+               self.editor.setactive(0)
+               bounds = self.bounds
+               if self.dh and self.dv:
+                       (left, top), (right, bottom) = bounds
+                       left = left + 1
+                       top = top + 1
+                       right = right - 1
+                       bottom = bottom - 1
+                       bounds = (left, top), (right, bottom)
+               self.editor.setview(bounds)
                self.editor.settext(self.text)
                self.parent.need_mouse(self)
                self.parent.need_keybd(self)
                self.parent.need_altdraw(self)
+       #
        def draw(self, (d, area)):
-               pass
+               if self.dh and self.dv:
+                       d.box(self.bounds)
+       #
        def altdraw(self, area):
                self.editor.draw(area)
        #
@@ -51,11 +104,20 @@ class TextEdit():
        #
        def mouse_down(self, detail):
                x = self.editor.event(WE_MOUSE_DOWN, self.window, detail)
+       #
        def mouse_move(self, detail):
                x = self.editor.event(WE_MOUSE_MOVE, self.window, detail)
+       #
        def mouse_up(self, detail):
                x = self.editor.event(WE_MOUSE_UP, self.window, detail)
        #
        def keybd(self, (type, detail)):
                x = self.editor.event(type, self.window, detail)
        #
+       def activate(self):
+               self.editor.setfocus(0, 30000)
+               self.editor.setactive(1)
+       #
+       def deactivate(self):
+               self.editor.setactive(0)
+       #