Add library stubs and refactor menu creation

This commit is contained in:
David Bartley 2008-02-15 19:30:43 -05:00
parent aabb7616b1
commit 146745cff0
4 changed files with 56 additions and 32 deletions

View File

@ -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):

31
ceo/urwid/library.py Normal file
View File

@ -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

View File

@ -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():

View File

@ -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 = {}