browser window displays properly

jessie
John Ladan 2012-03-19 22:50:09 -04:00
parent d7c871485e
commit 548d09234c
2 changed files with 51 additions and 9 deletions

View File

@ -2,23 +2,63 @@ import curses
import dbLayer as db
class browserWindow:
highlight = 0
hl = 0
books = []
topline = 0
columns = [('Title',20),
('Authors',10)]
mx = my = 0
def __init__(self,window):
self.w = window
self.updateGeometry()
self.refreshBooks()
self.sortByColumn('title')
def refreshBooks(self):
self.books = db.getBooks()
def sortByColumn(self, col):
self.books.sort(key=get(col))
self.books.sort() # key=dict.get(col))
def updateGeometry(self):
(self.my,self.mx)=self.w.getmaxyx()
# maybe recalculate column widths here.
def refresh(self):
(my,mx) = w.getmaxyx()
self.displayHeader()
for r in range(2,my):
self.displayRow(my)
for r in range(0,self.my-2):
self.displayRow(r)
self.highlight(self.hl)
self.w.refresh()
def displayHeader(self):
cursor = 0
for header,width in self.columns:
self.w.addnstr(0,cursor,header,width)
self.w.addstr(1,cursor,"-"*width)
cursor += width+1
def displayRow(self,row):
self.w.addstr(row,1,"Row to be updated")
if self.topline+row < len(self.books):
book = self.books[self.topline+row]
cursor = 0
for k,width in self.columns:
if k.lower() in book:
self.w.addnstr(row+2,cursor,book[k.lower()],width)
cursor += width+1
else:
self.w.addstr(row,0," "*self.mx)
def highlight(self,row):
self.w.chgat(self.hl+2,0,self.mx,curses.A_NORMAL)
self.hl=row
self.w.chgat(self.hl+2,0,self.mx,curses.A_REVERSE)
def startBrowser(self):
self.refresh()
self.w.getch()

View File

@ -2,6 +2,7 @@
import curses
import dbLayer as db
import browser
stdscr=0
@ -271,9 +272,10 @@ def deleteMenu():
w.refresh()
def browseMenu():
w=curses.newwin(1,50,10,10)
w.addstr("I will be used to browse book records")
w.refresh()
w=curses.newwin(50,50,10,10)
b = browser.browserWindow(w)
b.startBrowser()
m = [("Browse Library", browseMenu),
("Add Book or other item", addForm),