-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMenu.py
More file actions
50 lines (47 loc) · 1.71 KB
/
CMenu.py
File metadata and controls
50 lines (47 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/python
import curses
from curses import KEY_UP as UP, KEY_DOWN as DOWN
class Menu:
def __init__(self):
#Initialize Screen
stdscr = curses.initscr()
curses.curs_set(0)
curses.noecho()
curses.cbreak()
stdscr.keypad(True)
self.scr = stdscr
#Get Screen Size
self.xy = list(stdscr.getmaxyx())
self.xy.reverse()
#Initialize Class Variables
self.option = 0
self.selection = -1
self.title = 'NO TITLE INPUTTED'
self.message = ['No Options']*3
def DoMenu(self):
while self.selection < 0:
#Prep Screen
self.scr.clear()
#Start Option Choosing Mechanism
g = [0]*len(self.message)
g[self.option] = curses.A_REVERSE | curses.A_BOLD | curses.A_BLINK
#Add Title to Screen
self.scr.addstr(0, int(self.xy[0]/2-(len(self.title)/2)), self.title)
#Add All Given Options to Screen
for msg in range(0,len(self.message)):
self.scr.addstr(int(self.xy[1]/2+msg), int(self.xy[0]/2-(len(self.message[msg])/2)), self.message[msg], g[msg])
#Display Screen
self.scr.refresh()
#Get Key Input
event = self.scr.getch()
#Display Navigation and Get Selection
if event == UP:
self.option = (self.option - 1) % len(self.message)
elif event == DOWN:
self.option = (self.option + 1) % len(self.message)
elif event == ord('\n'):
self.selection = self.option
def GetMenu(self, t, m):
#Initialize Menu Variables
self.title = t
self.message = m