Index: third_party/twisted_8_1/twisted/conch/ui/tkvt100.py |
diff --git a/third_party/twisted_8_1/twisted/conch/ui/tkvt100.py b/third_party/twisted_8_1/twisted/conch/ui/tkvt100.py |
deleted file mode 100644 |
index 88e4120be9c2720c8bd3e79cc4d478d9a3bd821e..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/conch/ui/tkvt100.py |
+++ /dev/null |
@@ -1,197 +0,0 @@ |
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
-# |
- |
-"""Module to emulate a VT100 terminal in Tkinter. |
- |
-Maintainer: U{Paul Swartz <mailto:z3p@twistedmatrix.com>} |
-""" |
- |
-import Tkinter, tkFont |
-import ansi |
-import string |
- |
-ttyFont = None#tkFont.Font(family = 'Courier', size = 10) |
-fontWidth, fontHeight = None,None#max(map(ttyFont.measure, string.letters+string.digits)), int(ttyFont.metrics()['linespace']) |
- |
-colorKeys = ( |
- 'b', 'r', 'g', 'y', 'l', 'm', 'c', 'w', |
- 'B', 'R', 'G', 'Y', 'L', 'M', 'C', 'W' |
-) |
- |
-colorMap = { |
- 'b': '#000000', 'r': '#c40000', 'g': '#00c400', 'y': '#c4c400', |
- 'l': '#000080', 'm': '#c400c4', 'c': '#00c4c4', 'w': '#c4c4c4', |
- 'B': '#626262', 'R': '#ff0000', 'G': '#00ff00', 'Y': '#ffff00', |
- 'L': '#0000ff', 'M': '#ff00ff', 'C': '#00ffff', 'W': '#ffffff', |
-} |
- |
-class VT100Frame(Tkinter.Frame): |
- def __init__(self, *args, **kw): |
- global ttyFont, fontHeight, fontWidth |
- ttyFont = tkFont.Font(family = 'Courier', size = 10) |
- fontWidth, fontHeight = max(map(ttyFont.measure, string.letters+string.digits)), int(ttyFont.metrics()['linespace']) |
- self.width = kw.get('width', 80) |
- self.height = kw.get('height', 25) |
- self.callback = kw['callback'] |
- del kw['callback'] |
- kw['width'] = w = fontWidth * self.width |
- kw['height'] = h = fontHeight * self.height |
- Tkinter.Frame.__init__(self, *args, **kw) |
- self.canvas = Tkinter.Canvas(bg='#000000', width=w, height=h) |
- self.canvas.pack(side=Tkinter.TOP, fill=Tkinter.BOTH, expand=1) |
- self.canvas.bind('<Key>', self.keyPressed) |
- self.canvas.bind('<1>', lambda x: 'break') |
- self.canvas.bind('<Up>', self.upPressed) |
- self.canvas.bind('<Down>', self.downPressed) |
- self.canvas.bind('<Left>', self.leftPressed) |
- self.canvas.bind('<Right>', self.rightPressed) |
- self.canvas.focus() |
- |
- self.ansiParser = ansi.AnsiParser(ansi.ColorText.WHITE, ansi.ColorText.BLACK) |
- self.ansiParser.writeString = self.writeString |
- self.ansiParser.parseCursor = self.parseCursor |
- self.ansiParser.parseErase = self.parseErase |
- #for (a, b) in colorMap.items(): |
- # self.canvas.tag_config(a, foreground=b) |
- # self.canvas.tag_config('b'+a, background=b) |
- #self.canvas.tag_config('underline', underline=1) |
- |
- self.x = 0 |
- self.y = 0 |
- self.cursor = self.canvas.create_rectangle(0,0,fontWidth-1,fontHeight-1,fill='green',outline='green') |
- |
- def _delete(self, sx, sy, ex, ey): |
- csx = sx*fontWidth + 1 |
- csy = sy*fontHeight + 1 |
- cex = ex*fontWidth + 3 |
- cey = ey*fontHeight + 3 |
- items = self.canvas.find_overlapping(csx,csy, cex,cey) |
- for item in items: |
- self.canvas.delete(item) |
- |
- def _write(self, ch, fg, bg): |
- if self.x == self.width: |
- self.x = 0 |
- self.y+=1 |
- if self.y == self.height: |
- [self.canvas.move(x,0,-fontHeight) for x in self.canvas.find_all()] |
- self.y-=1 |
- canvasX = self.x*fontWidth + 1 |
- canvasY = self.y*fontHeight + 1 |
- items = self.canvas.find_overlapping(canvasX, canvasY, canvasX+2, canvasY+2) |
- if items: |
- [self.canvas.delete(item) for item in items] |
- if bg: |
- self.canvas.create_rectangle(canvasX, canvasY, canvasX+fontWidth-1, canvasY+fontHeight-1, fill=bg, outline=bg) |
- self.canvas.create_text(canvasX, canvasY, anchor=Tkinter.NW, font=ttyFont, text=ch, fill=fg) |
- self.x+=1 |
- |
- def write(self, data): |
- #print self.x,self.y,repr(data) |
- #if len(data)>5: raw_input() |
- self.ansiParser.parseString(data) |
- self.canvas.delete(self.cursor) |
- canvasX = self.x*fontWidth + 1 |
- canvasY = self.y*fontHeight + 1 |
- self.cursor = self.canvas.create_rectangle(canvasX,canvasY,canvasX+fontWidth-1,canvasY+fontHeight-1, fill='green', outline='green') |
- self.canvas.lower(self.cursor) |
- |
- def writeString(self, i): |
- if not i.display: |
- return |
- fg = colorMap[i.fg] |
- bg = i.bg != 'b' and colorMap[i.bg] |
- for ch in i.text: |
- b = ord(ch) |
- if b == 7: # bell |
- self.bell() |
- elif b == 8: # BS |
- if self.x: |
- self.x-=1 |
- elif b == 9: # TAB |
- [self._write(' ',fg,bg) for i in range(8)] |
- elif b == 10: |
- if self.y == self.height-1: |
- self._delete(0,0,self.width,0) |
- [self.canvas.move(x,0,-fontHeight) for x in self.canvas.find_all()] |
- else: |
- self.y+=1 |
- elif b == 13: |
- self.x = 0 |
- elif 32 <= b < 127: |
- self._write(ch, fg, bg) |
- |
- def parseErase(self, erase): |
- if ';' in erase: |
- end = erase[-1] |
- parts = erase[:-1].split(';') |
- [self.parseErase(x+end) for x in parts] |
- return |
- start = 0 |
- x,y = self.x, self.y |
- if len(erase) > 1: |
- start = int(erase[:-1]) |
- if erase[-1] == 'J': |
- if start == 0: |
- self._delete(x,y,self.width,self.height) |
- else: |
- self._delete(0,0,self.width,self.height) |
- self.x = 0 |
- self.y = 0 |
- elif erase[-1] == 'K': |
- if start == 0: |
- self._delete(x,y,self.width,y) |
- elif start == 1: |
- self._delete(0,y,x,y) |
- self.x = 0 |
- else: |
- self._delete(0,y,self.width,y) |
- self.x = 0 |
- elif erase[-1] == 'P': |
- self._delete(x,y,x+start,y) |
- |
- def parseCursor(self, cursor): |
- #if ';' in cursor and cursor[-1]!='H': |
- # end = cursor[-1] |
- # parts = cursor[:-1].split(';') |
- # [self.parseCursor(x+end) for x in parts] |
- # return |
- start = 1 |
- if len(cursor) > 1 and cursor[-1]!='H': |
- start = int(cursor[:-1]) |
- if cursor[-1] == 'C': |
- self.x+=start |
- elif cursor[-1] == 'D': |
- self.x-=start |
- elif cursor[-1]=='d': |
- self.y=start-1 |
- elif cursor[-1]=='G': |
- self.x=start-1 |
- elif cursor[-1]=='H': |
- if len(cursor)>1: |
- y,x = map(int, cursor[:-1].split(';')) |
- y-=1 |
- x-=1 |
- else: |
- x,y=0,0 |
- self.x = x |
- self.y = y |
- |
- def keyPressed(self, event): |
- if self.callback and event.char: |
- self.callback(event.char) |
- return 'break' |
- |
- def upPressed(self, event): |
- self.callback('\x1bOA') |
- |
- def downPressed(self, event): |
- self.callback('\x1bOB') |
- |
- def rightPressed(self, event): |
- self.callback('\x1bOC') |
- |
- def leftPressed(self, event): |
- self.callback('\x1bOD') |