fix #295 and tab for #296

This commit is contained in:
Sander Land committed 2020-12-26 21:12:38 +01:00
1 parent 769623973a
commit d4fd8817a2
3 files changed
+27 -11

No files matched your search

+10 -5
View File
@@ -114,7 +114,7 @@ class KaTrainGui(Screen, KaTrainBase):
self.message_queue = Queue() self.message_queue = Queue()
self._keyboard = Window.request_keyboard(None, self, "") self._keyboard = Window.request_keyboard(None, self, "")
self._keyboard.bind(on_key_down=self._on_keyboard_down) self._keyboard.bind(on_key_down=self._on_keyboard_down,on_key_up=self._on_keyboard_up)
Clock.schedule_interval(self.animate_pondering, 0.1) Clock.schedule_interval(self.animate_pondering, 0.1)
def log(self, message, level=OUTPUT_INFO): def log(self, message, level=OUTPUT_INFO):
@@ -549,11 +549,10 @@ class KaTrainGui(Screen, KaTrainBase):
else: else:
return return
shift_pressed = "shift" in modifiers shift_pressed = "shift" in modifiers
alt_pressed = "alt" in modifiers
shortcuts = self.shortcuts shortcuts = self.shortcuts
if keycode[1] == "tab": if keycode[1] == "tab" and not alt_pressed:
self.play_mode.switch_ui_mode() self.play_mode.switch_ui_mode()
elif keycode[1] == "alt":
self.nav_drawer.set_state("toggle")
elif keycode[1] == "spacebar": elif keycode[1] == "spacebar":
self.toggle_continuous_analysis() self.toggle_continuous_analysis()
elif keycode[1] == "k": elif keycode[1] == "k":
@@ -611,7 +610,13 @@ class KaTrainGui(Screen, KaTrainBase):
filename = f"callgrind.{int(time.time())}.prof" filename = f"callgrind.{int(time.time())}.prof"
stats.save(filename, type="callgrind") stats.save(filename, type="callgrind")
self.log(f"wrote profiling results to {filename}", OUTPUT_ERROR) self.log(f"wrote profiling results to {filename}", OUTPUT_ERROR)
return True
def _on_keyboard_up(self, _keyboard, keycode):
if self.controls.note.focus or self.popup_open:
return # when making notes, don't allow keyboard shortcuts
if keycode[1] == "alt":
self.nav_drawer.set_state("toggle")
class KaTrainApp(MDApp): class KaTrainApp(MDApp):
+9 -4
View File
@@ -24,9 +24,9 @@ class PlayAnalyzeSelect(MDFloatLayout):
self.katrain._config["ui_state"] = self.katrain._config.get("ui_state", {}) self.katrain._config["ui_state"] = self.katrain._config.get("ui_state", {})
self.katrain._config["ui_state"][self.mode] = { self.katrain._config["ui_state"][self.mode] = {
"analysis_controls": { "analysis_controls": {
id: checkbox.active id: toggle.active if not toggle.checkbox.slashed else None # troolean ftw
for id, checkbox in self.katrain.analysis_controls.ids.items() for id, toggle in self.katrain.analysis_controls.ids.items()
if isinstance(checkbox, AnalysisToggle) if isinstance(toggle, AnalysisToggle)
}, },
"panels": { "panels": {
id: (panel.state, panel.option_state) id: (panel.state, panel.option_state)
@@ -39,7 +39,12 @@ class PlayAnalyzeSelect(MDFloatLayout):
def load_ui_state(self, _dt=None): def load_ui_state(self, _dt=None):
state = self.katrain.config(f"ui_state/{self.mode}", {}) state = self.katrain.config(f"ui_state/{self.mode}", {})
for id, active in state.get("analysis_controls", {}).items(): for id, active in state.get("analysis_controls", {}).items():
self.katrain.analysis_controls.ids[id].checkbox.active = active cb = self.katrain.analysis_controls.ids[id].checkbox
cb.active = bool(active)
print(cb,cb.tri_state,active)
if cb.tri_state:
cb.slashed = active is None
cb.set_icon()
for id, (panel_state, button_state) in state.get("panels", {}).items(): for id, (panel_state, button_state) in state.get("panels", {}).items():
self.katrain.controls.ids[id].set_option_state(button_state) self.katrain.controls.ids[id].set_option_state(button_state)
self.katrain.controls.ids[id].state = panel_state self.katrain.controls.ids[id].state = panel_state
+8 -2
View File
@@ -392,15 +392,21 @@ class TriStateMDCheckbox(MDCheckbox):
if self.slashed: if self.slashed:
self.state = "normal" self.state = "normal"
self.slashed = False self.slashed = False
self.icon = "checkbox-blank-outline"
elif self.state == "down": elif self.state == "down":
self.state = "normal" self.state = "normal"
self.slashed = True self.slashed = True
self.icon = "checkbox-blank-off-outline"
else: else:
self.state = "down" self.state = "down"
self.slashed = False self.slashed = False
self.set_icon()
def set_icon(self):
if self.slashed:
self.icon = "checkbox-blank-off-outline"
elif self.state == "down":
self.icon = "checkbox-marked-outline" self.icon = "checkbox-marked-outline"
else:
self.icon = "checkbox-blank-outline"
class AnalysisToggle(MDBoxLayout): class AnalysisToggle(MDBoxLayout):