@ -10,9 +10,7 @@ import library.interface.sendemails as sendemails
from library import book_data
class SmallScreenException(Exception):
def __init__(self, *args, **kwargs):
Exception.__init__(self, *args, **kwargs)
stdscr=0
hb=0
@ -38,16 +36,11 @@ def menutest(s, l):
try:
menu(w, l)
except SystemExit: pass
except SmallScreenException:
text = """That's a small screen!
This librarian program won't work with a small screen.
Make your terminal window bigger and try again."""
form.error_form(text, stdscr, hb)
raise
except:
text = """An unexpected error occured.
Email the librarian (librarian@csclub.uwaterloo.ca)
with python's output after this program quits.
You can contact the librarian (librarian@csclub.uwaterloo.ca),
but given the history of the library system, it seems unlikely
that somebody will be around to care.
The program will now quit."""
form.error_form(text, stdscr, hb)
raise
@ -108,10 +101,7 @@ def addForm():
(my,mx)=stdscr.getmaxyx()
bf = form.BookForm(w,hb,width=mx-20)
(r,c)=w.getmaxyx()
try:
w.mvwin((my-r)//2,(mx-c)//2)
except curses.error as exc:
raise SmallScreenException("Terminal screen too small. Try again with a bigger terminal.") from exc
w.mvwin((my-r)//2,(mx-c)//2)
bf.lookup_isbn=book_data.openLibrary_isbn
bf.lookup_lccn=book_data.openLibrary_lccn
bf.caption='Add a Book'
@ -126,10 +116,7 @@ def browseMenu():
b = browser.bookBrowser(w,hb)
(r,c) = w.getmaxyx()
(my,mx)=stdscr.getmaxyx()
try:
w.mvwin((my-r)//2 -2, (mx-c)//2)
except curses.error as exc:
raise SmallScreenException("Terminal screen too small. Try again with a bigger terminal.") from exc
w.mvwin((my-r)//2 -2, (mx-c)//2)
b.refreshBooks()
b.eventLoop()
b.clear()
@ -139,10 +126,7 @@ def trashMenu():
b = browser.trashBrowser(w,hb)
(r,c) = w.getmaxyx()
(my,mx)=stdscr.getmaxyx()
try:
w.mvwin((my-r)//2 -2, (mx-c)//2)
except curses.error as exc:
raise SmallScreenException("Terminal screen too small. Try again with a bigger terminal.") from exc
w.mvwin((my-r)//2 -2, (mx-c)//2)
b.refreshBooks()
b.eventLoop()
b.clear()
@ -152,10 +136,7 @@ def uncategorizedMenu():
b = browser.bookBrowser(w,hb)
(r,c) = w.getmaxyx()
(my,mx)=stdscr.getmaxyx()
try:
w.mvwin((my-r)//2 -2, (mx-c)//2)
except curses.error as exc:
raise SmallScreenException("Terminal screen too small. Try again with a bigger terminal.") from exc
w.mvwin((my-r)//2 -2, (mx-c)//2)
b.refreshBooksUncategorized()
b.eventLoop()
b.clear()
@ -165,10 +146,7 @@ def checkedout_menu():
b = browser.bookBrowser(w,hb)
(r,c) = w.getmaxyx()
(my,mx)=stdscr.getmaxyx()
try:
w.mvwin((my-r)//2 -2, (mx-c)//2)
except curses.error as exc:
raise SmallScreenException("Terminal screen too small. Try again with a bigger terminal.") from exc
w.mvwin((my-r)//2 -2, (mx-c)//2)
b.refreshBooksCheckedout()
b.columnDefs = [("id",0,3),
("uwid",0,8),
@ -183,10 +161,7 @@ def onshelf_menu():
b = browser.bookBrowser(w,hb)
(r,c) = w.getmaxyx()
(my,mx)=stdscr.getmaxyx()
try:
w.mvwin((my-r)//2 -2, (mx-c)//2)
except curses.error as exc:
raise SmallScreenException("Terminal screen too small. Try again with a bigger terminal.") from exc
w.mvwin((my-r)//2 -2, (mx-c)//2)
b.refreshBooksOnshelf()
b.eventLoop()
b.clear()
@ -206,10 +181,7 @@ def catMenu():
w=curses.newwin(3,5)
cat = browser.categoryBrowser(w,hb)
(r,c) = w.getmaxyx()
try:
w.mvwin((my-r)//2 -2, (mx-c)//2)
except curses.error as exc:
raise SmallScreenException("Terminal screen too small. Try again with a bigger terminal.") from exc
w.mvwin((my-r)//2 -2, (mx-c)//2)
cat.refreshCategories()
cat.sortByColumn('category')
cat.eventLoop()