From 05527cfc015d2a4d2cf8b14f743ec4ab0fddcabe Mon Sep 17 00:00:00 2001 From: RockChinQ <1010553892@qq.com> Date: Wed, 3 Jul 2024 17:44:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20windows=20?= =?UTF-8?q?=E4=B8=8B=E9=92=88=E5=AF=B9=E9=80=89=E6=8B=A9=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notes/n002_selection_mode_on_windows.py | 21 ++++++++++++++++ pkg/core/stages/show_notes.py | 24 ++++++++++++------- 2 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 pkg/core/notes/n002_selection_mode_on_windows.py diff --git a/pkg/core/notes/n002_selection_mode_on_windows.py b/pkg/core/notes/n002_selection_mode_on_windows.py new file mode 100644 index 00000000..961d697d --- /dev/null +++ b/pkg/core/notes/n002_selection_mode_on_windows.py @@ -0,0 +1,21 @@ +from __future__ import annotations + +import typing +import os +import sys +import logging + +from .. import note, app + + +@note.note_class("SelectionModeOnWindows", 2) +class SelectionModeOnWindows(note.LaunchNote): + """Windows 上的选择模式提示信息 + """ + + async def need_show(self) -> bool: + return os.name == 'nt' + + async def yield_note(self) -> typing.AsyncGenerator[typing.Tuple[str, int], None]: + + yield """您正在使用 Windows 系统,若窗口左上角显示处于”选择“模式,程序将被暂停运行,此时请右键窗口中空白区域退出选择模式。""", logging.INFO diff --git a/pkg/core/stages/show_notes.py b/pkg/core/stages/show_notes.py index ded35731..91cdbf01 100644 --- a/pkg/core/stages/show_notes.py +++ b/pkg/core/stages/show_notes.py @@ -1,7 +1,7 @@ from __future__ import annotations from .. import stage, app, note -from ..notes import n001_classic_msgs +from ..notes import n001_classic_msgs, n002_selection_mode_on_windows @stage.stage_class("ShowNotesStage") @@ -11,12 +11,18 @@ class ShowNotesStage(stage.BootingStage): async def run(self, ap: app.Application): + # 排序 + note.preregistered_notes.sort(key=lambda x: x.number) + for note_cls in note.preregistered_notes: - note_inst = note_cls(ap) - if await note_inst.need_show(): - async for ret in note_inst.yield_note(): - if not ret: - continue - msg, level = ret - if msg: - ap.logger.log(level, msg) + try: + note_inst = note_cls(ap) + if await note_inst.need_show(): + async for ret in note_inst.yield_note(): + if not ret: + continue + msg, level = ret + if msg: + ap.logger.log(level, msg) + except Exception as e: + continue