summaryrefslogtreecommitdiffstats
path: root/cholerab/cholerab-live/view.py
diff options
context:
space:
mode:
Diffstat (limited to 'cholerab/cholerab-live/view.py')
-rw-r--r--cholerab/cholerab-live/view.py112
1 files changed, 0 insertions, 112 deletions
diff --git a/cholerab/cholerab-live/view.py b/cholerab/cholerab-live/view.py
deleted file mode 100644
index 6a75f655..00000000
--- a/cholerab/cholerab-live/view.py
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/usr/bin/python2
-
-from curses import *
-import socket
-import threading
-import logging
-log = logging.getLogger('cholerab-curses')
-
-class CursesView(threading.Thread):
- def addch(self,char):
- """
- adds a char at the current cursor position
- abstraction to the curses win.addch()
- """
- try: self.win.addch(char)
- except: pass
- self.cholerab.send_char(self.x,self.y,chr(char))
- def stop(self):
- #TODO setting back the whole terminal currently does not work correctly, fix me harder
- self.running = False
- self.clear()
- self.win.refresh()
- nocbreak(); self.scr.keypad(0); echo()
- #endwin()
-
- def run(self):
- """
- input loop
-
- TODO add Unicode Input Support
- """
- self.running = True
- def try_move(x,y):
- if x >= self.width: x = 0;y = y+1
- if x < 0 : x = self.width-1; y= y-1
- if y >= self.height : x = x+1;y = 0
- if y < 0 : x = x-1; y = self.height-1
- self.win.move(y,x); return x,y
-
- while self.running:
- c = self.scr.getch() #get_char(self.scr)
- #TODO UTF8 here, get_wch not yet implemented
- log.debug("Pressed : %d" % c)
- if c == KEY_LEFT : self.x -=1
- elif c == KEY_RIGHT : self.x +=1
- elif c == KEY_UP : self.y -=1
- elif c == KEY_DOWN : self.y +=1
- elif c == ord('q') : self.stop()
- elif c == 127 or c == KEY_BACKSPACE:
- log.info('backspace pressed')
- self.x -=1;
- self.x,self.y = try_move(self.x,self.y)
- self.addch(ord(' '))
- elif c == ord('\n'):
- log.info('enter pressed')
- self.y +=1;
- self.x,self.y = try_move(self.x,self.y)
- else :
- self.addch(c)
- self.x +=1
- self.x,self.y = try_move(self.x,self.y)
- self.refresh()
-
- def write_char(self,x,y,char,user=1):
- user = user % 3 + 1
- self.win.addch(y,x,char,color_pair(user))
- self.win.move(self.y,self.x)
- self.refresh()
- def write_str(self,x,y,string,user=1):
- self.win.addstr(y,x,string,color_pair(user))
- self.win.move(self.y,self.x)
- self.refresh()
- def refresh(self):
- self.scr.refresh()
- self.win.refresh()
- def clear(self):
- self.win.clear()
- pass
- def write_field(self,ar):
- """
- writes the whole field with given 2-dimensional array
- """
- self.clear()
- pass
-
- def __init__(self,height=24,width=80,cholerab=None,scr=None):
- # TODO handle sessions somehow
- if scr:
- self.scr = scr
- else:
- self.scr = initscr()
- start_color()
- init_pair(1,COLOR_WHITE,COLOR_BLACK)
- init_pair(2,COLOR_RED,COLOR_BLACK)
- init_pair(3,COLOR_GREEN,COLOR_BLACK)
- init_pair(3,COLOR_CYAN,COLOR_BLACK)
- threading.Thread.__init__(self)
- self.cholerab = cholerab
-
- noecho()
- cbreak()
- self.scr.keypad(1)
- try: curs_set(2)
- except: pass # go home with your non-standard terminals!
-
- begin_x = 0;begin_y = 0
- self.height = height
- self.width = width
- self.x = 0 ; self.y = 0
-
- self.win = newwin(height,width,begin_y,begin_x)
- self.clear()