[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/gnuef/src UIcurses.py
From: |
James Thompson |
Subject: |
gnue/gnuef/src UIcurses.py |
Date: |
Sun, 14 Jan 2001 20:19:26 -0800 |
CVSROOT: /cvs
Module name: gnue
Changes by: James Thompson <address@hidden> 01/01/14 20:19:26
Modified files:
gnuef/src : UIcurses.py
Log message:
Converted from python 2.0 curses to python 1.5.2 (should still work on
2.0)
Fixed cursor positioning bug
CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIcurses.py.diff?r1=1.2&r2=1.3
Patches:
Index: gnue/gnuef/src/UIcurses.py
diff -u gnue/gnuef/src/UIcurses.py:1.2 gnue/gnuef/src/UIcurses.py:1.3
--- gnue/gnuef/src/UIcurses.py:1.2 Sat Dec 30 02:25:53 2000
+++ gnue/gnuef/src/UIcurses.py Sun Jan 14 20:19:26 2001
@@ -15,12 +15,10 @@
import GFDebug
import sys
-import ncurses.form
-import ncurses.curses
import curses
-from curses import ascii
-from curses.wrapper import wrapper
-from ncurses.panel import *
+import string
+#from curses import ascii
+#from curses.wrapper import wrapper
def COLOR_PAIR(pair):
return pair<<8
@@ -63,41 +61,6 @@
def __del__(self):
curses.endwin()
sys.exitclean=TRUE
-
-## def addField(self,x,y,w,text,new_page, object, type="entry"):
-## GFDebug.printMesg(3,'%d %d %d %s\r' % (x,y,w,text))
-## if x+w>79 or y>24:
-## return
-## field=ncurses.form.FIELD(1,w,y,x)
-## field.field_opts_off(ncurses.form.O_STATIC)
-## field.set_field_buffer(text)
-## field.set_field_pad('_')
-## field.set_new_page(new_page)
-## field.fld_userptr = (type, object)
-## self.fields.append(field)
-## return field
-
-## def addChoice(self,x,y,w,choices,new_page, object, type="choice"):
-## GFDebug.printMesg(3,'%d %d %d %s\r' % (x,y,w,choices[0]))
-## if x+w>79 or y>24:
-## return
-## field=ncurses.form.FIELD(1,w,y,x)
-## field.field_opts_off(ncurses.form.O_STATIC)
-## field.TYPE_ENUM(choices, TRUE, TRUE)
-## field.set_field_pad('.')
-## field.set_new_page(new_page)
-## field.fld_userptr = (type, object)
-## self.fields.append(field)
-## return field
-
-## def addLabel(self,x,y,text,new_page):
-## GFDebug.printMesg(3, '%d %d %s\r' % (x,y,text))
-## if x+len(text)>79 or y>24:
-## return
-## field=ncurses.form.LABEL(y,x,text)
-## field.set_new_page(new_page)
-## self.fields.append(field)
-## return field
def handle(self,c):
if self.kbdFuncs.has_key(c):
@@ -172,7 +135,6 @@
self.uiEventTrap(ev)
def uiEventTrap(self, event):
-# action = self.panel.handleEvent(event)
try:
GFDebug.printMesg(2, "%d"%event)
action = self.keyEvents[event]
@@ -191,6 +153,8 @@
object = self.currentObject[0]
container = self.currentWidget[0]
+ print object.width, object.height
+
self.frame = NCMain()
return self.frame
@@ -199,16 +163,11 @@
object = self.currentObject[0]
container = self.currentWidget[0]
- # Need to set height and width = to form height and width
- page = NCPage( container, 200, 200 )
+ print self.form.width
+ page = NCPage( container, self.form.height, self.form.width )
return page
-# def pageHandler(self):
-# self.newPage=1
-# self.currentPage = self.currentPage + 1
-# return self.currentPage
-
def boxHandler(self):
object = self.currentObject[0]
self.panel.addBox( int(object.height), int(object.width),
@@ -332,6 +291,7 @@
ncfield = self.formToUI[event.data][0][index]
self.frame.setFocus(ncfield)
self.frame.refresh()
+ ncfield.window.refresh()
curses.doupdate()
def updateEntry(self,event):
@@ -345,6 +305,7 @@
else:
style = 'text'
+ # Fill the prior spots
for count in range(index):
value = block.dataSourceLink.getField(currentRecord-(index-count),
event.data.field)
@@ -354,6 +315,7 @@
ncfield = self.formToUI[event.data][0][count]
ncfield.set_field_buffer(value)
+ # fill currently indexed spot
if style == 'dropdown':
value = event.data.allowedValues()[event.data.getValue()]
else:
@@ -363,8 +325,12 @@
ncfield.setText(value)
positionx = event.data.cursorPosition
positiony = 0
- ncfield.window.move(positiony, positionx)
+ # Fill trailing spots
+ #
+ # You must skip the matching index but
+ # you do not want to just add 1 to count
+ # as the formulas would then be off
count = index
while count < int(event.data.visibleCount):
if count != index:
@@ -378,6 +344,11 @@
count = count +1
self.frame.refresh()
curses.doupdate()
+
+ # move the cursor to where it should be on the screen
+ ncfield.window.move(positiony, positionx)
+ ncfield.window.refresh ()
+ curses.doupdate()
def updateStatus(self, event):
GFDebug.printMesg(1, "%s"%event.data)
@@ -446,7 +417,7 @@
focus.move(0, len(focus.getText()))
elif key == ord('\r'): # return key
break # leave loop on return
- elif (ascii.isalnum(key)) or (key == ord(' ')):
+ elif chr(key) in string.letters+string.digits+" ":
text = focus.getText()
newtext = text + chr(key)
focus.setText(newtext)
@@ -521,7 +492,7 @@
widget.refresh()
self.draw()
if not isinstance(self, NCPage) and not self.subwin:
- self.window.noutrefresh()
+ self.window.nooutrefresh()
if hasattr(self, 'getBook'):
for page in self.pages:
if page.visible:
@@ -529,9 +500,8 @@
sminy, sminx = book.window.getbegyx()
smaxy, smaxc = book.window.getmaxyx()
pminrow, pmincol = ( 0, 0)
- page.window.noutrefresh( pminrow, pmincol,
- sminy, sminx,
- smaxy, smaxc )
+ page.window.nooutrefresh()
+
if (self.parent == None):
widget = self
while (widget.focus != None):
@@ -555,7 +525,7 @@
self.window = curses.newwin( lines, cols, by, bx )
else:
self.subwin = 1
- self.window = parent.window.derwin( lines, cols, by, bx )
+ self.window = parent.window.subwin( lines, cols, by, bx )
def draw(self):
pass
@@ -572,8 +542,11 @@
#
def __init__(self, parent, lines, cols):
NCWidget.__init__(self, parent)
- self.window = curses.newpad( lines, cols )
-
+ #self.window = curses.newpad( lines, cols )
+
+ parentY, parentX = parent.window.getbegyx()
+ self.window = parent.window.subwin(parentY, parentX)
+
self.visible = 0
self.ispad = 1
if len(parent.pages):
@@ -598,7 +571,12 @@
def __init__(self, parent, line, col, text, attr=curses.A_BOLD):
NCWidget.__init__(self, parent)
- self.window = parent.window.derwin( 1, len(text), line, col)
+ #print parent.window.getbegyx ()
+ #print parent.window.getmaxyx ()
+ #print 1, len(text), line+ , col
+
+ parentY, parentX = parent.window.getbegyx ()
+ self.window = parent.window.subwin( 1, len(text), parentY+line,
parentX+col)
self.subwin = 1
self.realx = line
@@ -613,7 +591,10 @@
def draw(self):
self.window.clear()
- self.window.insstr( 0, 0, self.text, self.attr )
+ for index in range(len(self.text)-1,-1,-1):
+ self.window.insch(0, 0, ord(self.text[index]), self.attr )
+
+ #self.window.insstr( 0, 0, self.text, self.attr )
class NCEntry(NCWidget):
#
@@ -626,8 +607,9 @@
self.height = height
self.width = width
self.password = password
-
- self.window = parent.window.derwin( height, width, line, col )
+
+ parentY, parentX = parent.window.getbegyx ()
+ self.window = parent.window.subwin( height, width, parentY+line,
parentX+col )
self.subwin = 1
self.pad = '_'
@@ -646,7 +628,14 @@
text = '*'*len(lines[line]) + self.pad*numspace
else:
text = lines[line] + self.pad*numspace
- self.window.insstr( line, 0, text)
+
+ for index in range(len(text)-1,-1,-1):
+ self.window.insch(line, 0, ord(text[index]))
+
+ #for character in self.text:
+ # self.window.insch(line,0, character)
+
+ #self.window.insstr( line, 0, text)
def setText(self, text):
self.text = text
@@ -685,15 +674,15 @@
# ncurses statusbar
self.bottom = NCForm( self, 3, cols, lines-4, 0)
- self.bottommsg1 = NCLabel(self.bottom, 0, 2, bottommsg1, attr=A_NORMAL)
- self.bottommsg2 = NCLabel(self.bottom, 1, 2, bottommsg2, attr=A_NORMAL)
- self.bottommsg3 = NCLabel(self.bottom, 2, 2, bottommsg3, attr=A_NORMAL)
+ self.bottommsg1 = NCLabel(self.bottom, 0, 2, bottommsg1,
attr=curses.A_NORMAL)
+ self.bottommsg2 = NCLabel(self.bottom, 1, 2, bottommsg2,
attr=curses.A_NORMAL)
+ self.bottommsg3 = NCLabel(self.bottom, 2, 2, bottommsg3,
attr=curses.A_NORMAL)
# GNUef statusbar
self.status = NCForm( self, 1, cols, lines-1, 0)
# self.status.attrset(A_REVERSE)
- self.statusmesg = NCLabel(self.status, 0, 2, statusmsg, attr=A_NORMAL)
-# self.status.chgat(COLS(), A_REVERSE, 0)
+ self.statusmesg = NCLabel(self.status, 0, 2, statusmsg,
attr=curses.A_NORMAL)
+# self.status.chgat(COLS(), curses.A_REVERSE, 0)
self.refresh()
def getBook(self):
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/gnuef/src UIcurses.py,
James Thompson <=