From 146745cff07564c1211d642d74bd40d0c45f5dd2 Mon Sep 17 00:00:00 2001 From: David Bartley Date: Fri, 15 Feb 2008 19:30:43 -0500 Subject: [PATCH] Add library stubs and refactor menu creation --- ceo/urwid/groups.py | 11 +++-------- ceo/urwid/library.py | 31 +++++++++++++++++++++++++++++++ ceo/urwid/main.py | 41 +++++++++++++++++++---------------------- ceo/urwid/widgets.py | 5 +++-- 4 files changed, 56 insertions(+), 32 deletions(-) create mode 100644 ceo/urwid/library.py diff --git a/ceo/urwid/groups.py b/ceo/urwid/groups.py index 6245f19..1b27d9b 100644 --- a/ceo/urwid/groups.py +++ b/ceo/urwid/groups.py @@ -4,9 +4,6 @@ from ceo.urwid import search from ceo.urwid.widgets import * from ceo.urwid.window import * -def menu_items(items): - return [ urwid.AttrWrap( ButtonText( cb, data, txt ), 'menu', 'selected') for (txt, cb, data) in items ] - def change_group_member(data): push_wizard("%s %s Member" % (data["action"], data["name"]), [ (ChangeMember, data), @@ -22,17 +19,15 @@ def group_members(data): add_data['action'] = 'Add' remove_data = data.copy() remove_data['action'] = 'Remove' - menu = [ + menu = make_menu([ ("Add %s member" % data["name"].lower(), change_group_member, add_data), ("Remove %s member" % data["name"].lower(), change_group_member, remove_data), ("List %s members" % data["name"].lower(), list_group_members, data), ("Back", raise_back, None), - ] - - listbox = urwid.ListBox( menu_items( menu ) ) - push_window(listbox, "Manage %s" % data["name"]) + ]) + push_window(menu, "Manage %s" % data["name"]) class IntroPage(WizardPanel): def init_widgets(self): diff --git a/ceo/urwid/library.py b/ceo/urwid/library.py new file mode 100644 index 0000000..eeae52d --- /dev/null +++ b/ceo/urwid/library.py @@ -0,0 +1,31 @@ +import urwid +from ceo import members +from ceo.urwid import search +from ceo.urwid.widgets import * +from ceo.urwid.window import * + +def library(data): + menu = make_menu([ + ("Checkout Book", checkout_book, None), + ("Return Book", return_book, None), + ("Search Books", search_books, None), + ("Add Book", add_book, None), + ("Remove Book", remove_book, None), + ("Back", raise_back, None), + ]) + push_window(menu, "Library") + +def checkout_book(data): + pass + +def return_book(data): + pass + +def search_books(data): + pass + +def add_book(data): + pass + +def remove_book(data): + pass diff --git a/ceo/urwid/main.py b/ceo/urwid/main.py index d604073..e852dfa 100644 --- a/ceo/urwid/main.py +++ b/ceo/urwid/main.py @@ -1,7 +1,8 @@ import sys, random, urwid.curses_display from ceo.urwid.widgets import * from ceo.urwid.window import * -from ceo.urwid import newmember, renew, info, search, positions, groups, shell +from ceo.urwid import newmember, renew, info, search, positions, groups, \ + shell, library ui = urwid.curses_display.Screen() @@ -51,26 +52,6 @@ syscom_data = { "groups" : [ "office", "staff", "adm", "src" ], } -def main_menu(): - menu = [ - ("New Member", new_member, None), - ("New Club Rep", new_club_user, None), - ("Renew Membership", renew_member, None), - ("Renew Club Rep", renew_club_user, None), - ("New Club", new_club, None), - ("Display Member", display_member, None), - ("Change Shell", change_shell, None), - ("Search", search_members, None), - ("Manage Club or Group Members", manage_group, None), - ("Manage Positions", manage_positions, None), - ("Manage Office Staff", groups.group_members, office_data), - ("Manage Systems Committee", groups.group_members, syscom_data), - ("Exit", raise_abort, None), - ] - - listbox = urwid.ListBox( menu_items( menu ) ) - return listbox - def new_member(*args, **kwargs): push_wizard("New Member", [ newmember.IntroPage, @@ -161,7 +142,23 @@ def change_shell(data): ], (50, 20)) def run(): - push_window( main_menu(), program_name() ) + menu = make_menu([ + ("New Member", new_member, None), + ("New Club Rep", new_club_user, None), + ("Renew Membership", renew_member, None), + ("Renew Club Rep", renew_club_user, None), + ("New Club", new_club, None), + ("Display Member", display_member, None), + ("Change Shell", change_shell, None), + ("Search", search_members, None), + ("Manage Club or Group Members", manage_group, None), + ("Manage Positions", manage_positions, None), + ("Manage Office Staff", groups.group_members, office_data), + ("Manage Systems Committee", groups.group_members, syscom_data), + ("Library", library.library, None), + ("Exit", raise_abort, None), + ]) + push_window( menu, program_name() ) event_loop( ui ) def start(): diff --git a/ceo/urwid/widgets.py b/ceo/urwid/widgets.py index bcd4032..438078c 100644 --- a/ceo/urwid/widgets.py +++ b/ceo/urwid/widgets.py @@ -5,8 +5,9 @@ import ceo.ldapi as ldapi csclub_uri = "ldap://ldap1.csclub.uwaterloo.ca/ ldap://ldap2.csclub.uwaterloo.ca" csclub_base = "dc=csclub,dc=uwaterloo,dc=ca" -def menu_items(items): - return [ urwid.AttrWrap( ButtonText( cb, data, txt ), 'menu', 'selected') for (txt, cb, data) in items ] +def make_menu(items): + items = [ urwid.AttrWrap( ButtonText( cb, data, txt ), 'menu', 'selected') for (txt, cb, data) in items ] + return urwid.ListBox( items ) def push_wizard(name, pages, dimensions=(50, 10)): state = {}