-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathfahrgastrechte.py
75 lines (64 loc) · 2.25 KB
/
fahrgastrechte.py
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import argparse
import functools
import html
import json
import os
import random
import shlex
import subprocess
import sys
import time
import xml.etree.ElementTree as ET
from datetime import datetime
import re
import npyscreen
import functions
import textwrap
import shutil
def main(*args):
args, defaults = functions.get_args()
return npyscreen.wrapper_basic(functools.partial(run_menu, defaults, args))
def run_menu(defaults, args, *arg, **kwargs):
field_fields = []
fields, fieldnames = functions.get_form_fields(**vars(args))
F = npyscreen.FormMultiPage()
terminal_size = shutil.get_terminal_size((80, 20))
for n in sorted(fieldnames, key=functions.db_fieldname_sort):
title = ""
if 'FieldNameAlt' in fields[n]:
title = fields[n]['FieldNameAlt']
if n in defaults:
value = defaults[n]
else:
value = None
title = title[:terminal_size.columns-5]
if 'FieldStateOption' in fields[n]:
if value is not None:
i = fields[n]['FieldStateOption'].index(value)
else:
i = fields[n]['FieldStateOption'].index('Off')
if title:
field_fields.append((n, F.add_widget_intelligent(
npyscreen.TitleMultiLine, values=fields[n]['FieldStateOption'], name=title, value=i)))
else:
field_fields.append((n, F.add_widget_intelligent(
npyscreen.MultiLine, values=fields[n]['FieldStateOption'], value=i)))
else:
field_fields.append((n, F.add_widget_intelligent(
npyscreen.TitleText, name=title, value=value)))
F.add_widget_intelligent(npyscreen.ButtonPress, name="Generate Form",
when_pressed_function=functools.partial(setattr, F, 'editing', False))
F.switch_page(0)
F.edit()
fields = [(n, get_value(x)) for n, x in field_fields]
return functions.generate_form(fields, **vars(args))
def get_value(w):
if isinstance(w, npyscreen.MultiLine) or isinstance(w, npyscreen.TitleMultiLine):
if w.value == None:
return "Off"
else:
return w.values[w.value]
else:
return w.value
if __name__ == '__main__':
print(main())