1
0
This commit is contained in:
david-ajax
2025-12-16 21:28:53 +08:00
parent 11d130c3fd
commit 1e534e5fe5
37 changed files with 428 additions and 207 deletions

View File

@@ -18,8 +18,10 @@ class AtomState(Enum):
FAILED = auto()
NORMAL = auto()
logger = get_logger(__name__)
class MemScreen(Screen):
BINDINGS = [
("q", "pop_screen", "返回"),
@@ -45,6 +47,7 @@ class MemScreen(Screen):
self.phaser = Phaser(atoms)
# logger.debug(self.phaser.state)
self.procession: Procession = self.phaser.current_procession() # type: ignore
self.atom: pt.Atom = self.procession.current_atom
# logger.debug(self.phaser.state)
# self.procession.forward(1)
for i in atoms:
@@ -58,12 +61,12 @@ class MemScreen(Screen):
try:
logger.debug(self.phaser.state)
logger.debug(self.procession.cursor)
logger.debug(self.procession.current_atom)
self.fission = Fission(self.procession.current_atom, self.phaser.state)
logger.debug(self.atom)
self.fission = Fission(self.atom, self.phaser.state)
puzzle_debug = next(self.fission.generate())
#logger.debug(puzzle_debug)
# logger.debug(puzzle_debug)
return shim.puzzle2widget[puzzle_debug["puzzle"]](
atom=self.procession.current_atom, alia=puzzle_debug["alia"]
atom=self.atom, alia=puzzle_debug["alia"]
)
except (KeyError, StopIteration, AttributeError) as e:
logger.debug(f"调度展开出错: {e}")
@@ -74,7 +77,7 @@ class MemScreen(Screen):
yield Header(show_clock=True)
with ScrollableContainer():
yield Label(self._get_progress_text(), id="progress")
# self.mount(self.current_widget()) # type: ignore
yield ScrollableContainer(id="puzzle-container")
# yield Button("重新学习此单元", id="re-recognize", variant="warning")
@@ -85,7 +88,7 @@ class MemScreen(Screen):
def update_display(self):
progress_widget = self.query_one("#progress")
progress_widget.update(self._get_progress_text()) # type: ignore
progress_widget.update(self._get_progress_text()) # type: ignore
def load_puzzle(self):
container = self.query_one("#puzzle-container")
@@ -98,6 +101,7 @@ class MemScreen(Screen):
for i in container.children:
i.remove()
from heurams.interface.widgets.finished import Finished
container.mount(Finished())
def on_button_pressed(self, event):
@@ -108,11 +112,12 @@ class MemScreen(Screen):
return
forwards = 1 if new_rating >= 4 else 0
self.rating = -1
logger.debug(f"试图前进: {"允许" if forwards else "禁止"}")
if forwards:
ret = self.procession.forward(1)
if ret == 0:
if ret == 0: # 若结束了此次队列
self.procession = self.phaser.current_procession() # type: ignore
if self.procession == 0:
if self.procession == 0: # 若所有队列都结束了
logger.debug(f"记忆进程结束")
for i in self.atoms:
i: pt.Atom
@@ -121,10 +126,10 @@ class MemScreen(Screen):
return
else:
logger.debug(f"建立新队列 {self.procession.phase}")
else:
self.load_puzzle()
else: # 若不通过
self.procession.append()
self.update_display()
self.load_puzzle()
def action_play_voice(self):
"""朗读当前内容"""