forked from Vocab-Apps/anki-hyper-tts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
component_preferences.py
85 lines (64 loc) · 3.13 KB
/
component_preferences.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
import sys
import aqt.qt
component_common = __import__('component_common', globals(), locals(), [], sys._addon_import_level_base)
component_shortcuts = __import__('component_shortcuts', globals(), locals(), [], sys._addon_import_level_base)
config_models = __import__('config_models', globals(), locals(), [], sys._addon_import_level_base)
constants = __import__('constants', globals(), locals(), [], sys._addon_import_level_base)
errors = __import__('errors', globals(), locals(), [], sys._addon_import_level_base)
gui_utils = __import__('gui_utils', globals(), locals(), [], sys._addon_import_level_base)
logging_utils = __import__('logging_utils', globals(), locals(), [], sys._addon_import_level_base)
logger = logging_utils.get_child_logger(__name__)
class ComponentPreferences(component_common.ConfigComponentBase):
def __init__(self, hypertts, dialog):
self.hypertts = hypertts
self.dialog = dialog
self.model = config_models.Preferences()
self.shortcuts = component_shortcuts.Shortcuts(self.hypertts, self.dialog, self.shortcuts_updated)
self.save_button = aqt.qt.QPushButton('Apply')
self.cancel_button = aqt.qt.QPushButton('Cancel')
def load_model(self, model):
logger.info('load_model')
self.model = model
self.shortcuts.load_model(self.model.keyboard_shortcuts)
def get_model(self):
return self.model
def shortcuts_updated(self, model):
self.model.keyboard_shortcuts = model
self.model_part_updated_common()
def model_part_updated_common(self):
self.save_button.setEnabled(True)
self.save_button.setStyleSheet(self.hypertts.anki_utils.get_green_stylesheet())
def draw(self, layout):
vlayout = aqt.qt.QVBoxLayout()
# dialog header
# =============
hlayout = aqt.qt.QHBoxLayout()
hlayout.addStretch()
# logo header
hlayout.addLayout(gui_utils.get_hypertts_label_header(self.hypertts.hypertts_pro_enabled()))
vlayout.addLayout(hlayout)
layout.addLayout(vlayout)
# preferences tabs
# ====================
self.tabs = aqt.qt.QTabWidget()
self.tabs.addTab(self.shortcuts.draw(), 'Keyboard Shortcuts')
layout.addWidget(self.tabs)
# setup bottom buttons
# ====================
hlayout = aqt.qt.QHBoxLayout()
hlayout.addStretch()
# apply button
self.save_button.setEnabled(False)
hlayout.addWidget(self.save_button)
# cancel button
self.cancel_button.setStyleSheet(self.hypertts.anki_utils.get_red_stylesheet())
hlayout.addWidget(self.cancel_button)
self.save_button.pressed.connect(self.save_button_pressed)
self.cancel_button.pressed.connect(self.cancel_button_pressed)
layout.addLayout(hlayout)
def save_button_pressed(self):
with self.hypertts.error_manager.get_single_action_context('Saving Preferences'):
self.hypertts.save_preferences(self.model)
self.dialog.close()
def cancel_button_pressed(self):
self.dialog.close()