forked from kaiyga/Soul-of-Waifu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
122 lines (85 loc) · 4.53 KB
/
main.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#from gulysh_lib import *
import sys
import os
from asyncio import run
sys.dont_write_bytecode = True
from gulysh_lib.config_lib import Config
from gulysh_lib.addon_lib import AddonCollection
from gulysh_lib.menu_lib import Config, Menu, Settings_Menu
from gulysh_lib.user_lib import DialogEntity, AI, User
dbg = False
addon_collection = AddonCollection()
settings_config = Config("./configs/config.yml")
ai:AI = AI(settings_config.config, addon_collection)
user:User = User(settings_config.config, addon_collection)
class Main_Menu(Menu):
def __init__(self) -> None:
self.lang = Config(str("configs/lang" + f"/{settings_config.config['lang']['file']}")).config
super().__init__(dbg)
def init_fields(self):
self = self
@self.add_fieldFunc(self.lang["main_menu_selector"]["start_runtime"])
def start_runtime():
self.clear_console()
print("Print 'quit' for exit")
while True:
try:
inpt = user.user_input_interface()
if inpt == "quit": return
ai.ai_voice_interface(ai.ai_translate_interface(ai.ai_chat_interface(user.user_translate_interface(inpt, "en")), settings_config.config['lang']['file'].split(".")[0]))
except: print('')
@self.add_fieldFunc(self.lang["main_menu_selector"]["settings"])
def start_settings():
Settings_Menu_Runtime(settings_config).start()
@self.add_fieldFunc(self.lang['interfaces_settings']['addon_settings'])
def addons_settings():
Addon_Settings_Menu(settings_config).start()
@self.add_fieldFunc(self.lang["main_menu_selector"]["stop"])
def stop():
sys.exit()
main_menu = Main_Menu()
class Settings_Menu_Runtime(Settings_Menu):
def __init__(self, config: Config) -> None:
self.lang = Config(str("configs/lang" + f"/{settings_config.config['lang']['file']}")).config
super().__init__(config, DialogEntity())
self.debug=dbg
def init_fields(self):
settings_menu_lang = self.lang['interfaces_settings']
self.add_field("Quit", None)
self.add_settings_point(settings_menu_lang['input_interface'], user, "user.input_interface", addon_collection.user_input_interface)
self.add_settings_point(settings_menu_lang['user_translate_interface'], user, "user.translate_interface", addon_collection.user_translate_interface)
self.add_settings_point(settings_menu_lang['chat_interface'], ai, "ai.chat_interface", addon_collection.ai_chat_interface)
self.add_settings_point(settings_menu_lang['ai_translate_interface'], ai, "ai.translate_interface", addon_collection.ai_translate_interface)
self.add_settings_point(settings_menu_lang['voice_interface'], ai, "ai.voice_interface", addon_collection.ai_voice_interface)
self.lang_selectinon_init()
def lang_selectinon_init(self):
lang_files = os.listdir("configs/lang/")
lang_list= {}
for langs in lang_files: lang_list.update({langs: f"configs/lang/{langs}"})
self.add_settings_point(self.lang['interfaces_settings']['lang'], user, "lang.file", lang_list)
def add_settings_point(self, field_name="", obj=None, config_path="ai.chat_interface", module_list={}):
cfp = config_path.split(".")
return super().add_settings_point(field_name, obj, config_path, module_list, self.lang[f"{cfp[0]}_selectors"][cfp[1]])
def reload_conf(self, obj):
settings_config.dump()
main_menu.__init__()
obj.reload(settings_config.config, addon_collection)
self.__init__(self.config)
class Addon_Settings_Menu(Settings_Menu):
def __init__(self, config: Config) -> None:
self.lang = Config(str("configs/lang" + f"/{settings_config.config['lang']['file']}")).config
super().__init__(config, DialogEntity())
def init_fields(self):
self.add_field("Quit", None)
self.menu_fields.update(addon_collection.settings_menus)
@self.add_fieldFunc("Download addon")
def download_addon():
while True:
try: link = input(self.lang['addon_settings']['addon_download'])
except: print("Not valid")
try: os.system(f"cd addons; git clone {link} ; cd .." )
except: print("Download Error. Check README")
addon_collection.__init__()
print("Complete!")
break
main_menu.start()