59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
from asciimatics.widgets import Frame, ListBox, Layout, Divider, \
|
|
Button, Widget
|
|
from asciimatics.exceptions import NextScene, StopApplication
|
|
|
|
|
|
class WelcomeView(Frame):
|
|
def __init__(self, screen, width, height, model):
|
|
super().__init__(
|
|
screen,
|
|
height,
|
|
width,
|
|
can_scroll=False,
|
|
title='CSC Electronic Office',
|
|
)
|
|
self._model = model
|
|
self._members_menu_items = [
|
|
('Add member', 'AddUser'),
|
|
('Add club rep', 'AddUser'),
|
|
('Renew member', 'RenewUser'),
|
|
('Renew club rep', 'RenewUser'),
|
|
('Get user info', 'GetUser'),
|
|
('Reset password', 'ResetPassword'),
|
|
('Change login shell', 'ChangeLoginShell'),
|
|
('Set forwarding addresses', 'SetForwardingAddresses'),
|
|
]
|
|
self._members_menu = ListBox(
|
|
Widget.FILL_FRAME,
|
|
[
|
|
(desc, i) for i, (desc, view) in
|
|
enumerate(self._members_menu_items)
|
|
],
|
|
name='members',
|
|
label='Members',
|
|
on_select=self._members_menu_select,
|
|
)
|
|
layout = Layout([100], fill_frame=True)
|
|
self.add_layout(layout)
|
|
layout.add_widget(self._members_menu)
|
|
layout.add_widget(Divider())
|
|
|
|
layout = Layout([1, 1, 1])
|
|
self.add_layout(layout)
|
|
layout.add_widget(Button("Quit", self._quit), 2)
|
|
self.fix()
|
|
|
|
def _members_menu_select(self):
|
|
self.save()
|
|
item_id = self.data['members']
|
|
desc, view = self._members_menu_items[item_id]
|
|
if desc.endswith('club rep'):
|
|
self._model.is_club_rep = True
|
|
self._model.title = desc
|
|
self._model.scene_stack.append('Welcome')
|
|
raise NextScene(view)
|
|
|
|
@staticmethod
|
|
def _quit():
|
|
raise StopApplication("User pressed quit")
|