summaryrefslogtreecommitdiffstats
path: root/Demo/cwilib/vt100win.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1993-10-28 09:53:13 (GMT)
committerGuido van Rossum <guido@python.org>1993-10-28 09:53:13 (GMT)
commit74b3f8a9e3368ad10a8d4aebd2dbaffdd3ca3585 (patch)
tree48baa4720d284e11ed119b35c6f915c71876d394 /Demo/cwilib/vt100win.py
parentdc4b93db7097a34cee492b188ec2fd65c5b9bc4b (diff)
downloadcpython-74b3f8a9e3368ad10a8d4aebd2dbaffdd3ca3585.zip
cpython-74b3f8a9e3368ad10a8d4aebd2dbaffdd3ca3585.tar.gz
cpython-74b3f8a9e3368ad10a8d4aebd2dbaffdd3ca3585.tar.bz2
Initial revision
Diffstat (limited to 'Demo/cwilib/vt100win.py')
-rwxr-xr-xDemo/cwilib/vt100win.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/Demo/cwilib/vt100win.py b/Demo/cwilib/vt100win.py
new file mode 100755
index 0000000..dcaf17b
--- /dev/null
+++ b/Demo/cwilib/vt100win.py
@@ -0,0 +1,68 @@
+# VT100 terminal emulator in a STDWIN window.
+
+import stdwin
+from stdwinevents import *
+from vt100 import VT100
+
+class VT100win(VT100):
+
+ def __init__(self):
+ VT100.__init__(self)
+ self.window = None
+## self.last_x = -1
+## self.last_y = -1
+
+ def __del__(self):
+ self.close()
+
+ def open(self, title):
+ stdwin.setfont('7x14')
+ self.docwidth = self.width * stdwin.textwidth('m')
+ self.docheight = self.height * stdwin.lineheight()
+ stdwin.setdefwinsize(self.docwidth + 2, self.docheight + 2)
+ stdwin.setdefscrollbars(0, 0)
+ self.window = stdwin.open(title)
+ self.window.setdocsize(self.docwidth + 2, self.docheight + 2)
+
+ def close(self):
+ if self.window:
+ self.window.close()
+ self.window = None
+
+ def show(self):
+ if not self.window: return
+ self.draw(((-10, -10), (self.docwidth+10, self.docheight+10)))
+
+ def draw(self, detail):
+ d = self.window.begindrawing()
+ fg = stdwin.getfgcolor()
+ red = stdwin.fetchcolor('red')
+ d.cliprect(detail)
+ d.erase(detail)
+ lh = d.lineheight()
+ cw = d.textwidth('m')
+ for y in range(self.height):
+ d.text((0, y*lh), self.lines[y].tostring())
+ if self.attrs[y] <> self.blankattr:
+ for x in range(len(self.attrs[y])):
+ if self.attrs[y][x] == 7:
+ p1 = x*cw, y*lh
+ p2 = (x+1)*cw, (y+1)*lh
+ d.invert((p1, p2))
+ x = self.x * cw
+ y = self.y * lh
+ d.setfgcolor(red)
+ d.invert((x, y), (x+cw, y+lh))
+ d.setfgcolor(fg)
+ d.close()
+
+## def move_to(self, x, y):
+## VT100.move_to(self, x, y)
+## if self.y != self.last_y:
+## self.show()
+## self.last_x = self.x
+## self.last_y = y
+
+ def send(self, str):
+ VT100.send(self, str)
+ self.show()