ok-script 0.0.37__tar.gz → 0.0.38__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ok-script-0.0.37 → ok-script-0.0.38}/PKG-INFO +1 -1
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/OK.py +12 -3
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/BaseCaptureMethod.py +3 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/ADBCaptureMethod.py +0 -1
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/WindowsGraphicsCaptureMethod.py +20 -6
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/App.py +14 -1
- ok-script-0.0.38/ok/gui/MessageWindow.py +45 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/style_sheet.py +1 -6
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/resources.py +429 -338
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/StartCard.py +20 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/StatusBar.py +1 -1
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/TaskExecutor.py +22 -1
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/path.py +8 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/PKG-INFO +1 -1
- {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/SOURCES.txt +1 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/setup.py +1 -1
- {ok-script-0.0.37 → ok-script-0.0.38}/README.md +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/HwndWindow.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/DeviceManager.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/bin/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/targets.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/vbox.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/d3d11.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/dump.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/utils.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/window.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/color/Color.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/color/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/config/Config.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/config/InfoDict.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/config/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/Box.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/Feature.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/FeatureSet.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/FindFeature.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/Communicate.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/MainWindow.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/TabTitles.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/about/AboutTab.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/about/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/OKIcon.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/config.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/AspectRatioWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/DebugTab.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/FrameWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/InfoWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/LoggerWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/Screenshot.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/i18n/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/i18n/path.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/i18n/update.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/icon/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/icon/icon.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/overlay/OverlayWindow.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/overlay/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/qss/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/settings/SettingTab.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/settings/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/SelectCaptureListView.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/SelectHwndWindow.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/StartTab.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ConfigItemFactory.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ConfigLabelAndWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndDoubleSpinBox.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndDropDown.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndLineEdit.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndList.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndSpinBox.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndSwitchButton.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ModifyListDialog.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ModifyListItem.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/OneTimeTaskTab.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/StartButton.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TaskCard.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TaskOpButton.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TooltipTableWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TriggerTaskTab.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/util/Alert.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/util/InitWorker.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/util/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/Card.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/FramelessDialog.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/ListTableWidgetItem.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/NumericTableWidgetItem.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/Tab.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/TabWidget.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/UpdateConfigWidgetItem.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/YesNonWidgetItem.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/ADBInteraction.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/BaseInteraction.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/Win32Interaction.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/logging/Logger.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/logging/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/ocr/OCR.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/ocr/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Media/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Security/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Storage/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/delegate.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/export.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/idldsl.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/inspectable.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/roapi.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/types.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/winstring.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/BlackBarProcessor.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/PostProcessor.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/SaveByInterval.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/SaveByKeyPress.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/SaveMethodBase.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/scene/FeatureScene.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/scene/Scene.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/scene/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/stats/StreamStats.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/stats/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/BaseTask.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/ExecutorOperation.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/OneTimeTask.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/TriggerTask.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/__init__.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/exit_event.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/json.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/list.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/thread.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/win32_process.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/yaml.py +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/dependency_links.txt +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/requires.txt +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/top_level.txt +0 -0
- {ok-script-0.0.37 → ok-script-0.0.38}/setup.cfg +0 -0
|
@@ -8,6 +8,7 @@ from PySide6.QtWidgets import QApplication
|
|
|
8
8
|
import ok
|
|
9
9
|
from ok.logging.Logger import get_logger, config_logger
|
|
10
10
|
from ok.util.exit_event import ExitEvent
|
|
11
|
+
from ok.util.path import install_path_isascii
|
|
11
12
|
|
|
12
13
|
logger = get_logger(__name__)
|
|
13
14
|
|
|
@@ -49,8 +50,8 @@ class OK:
|
|
|
49
50
|
def start(self):
|
|
50
51
|
try:
|
|
51
52
|
if self.config.get("use_gui"):
|
|
52
|
-
self.do_init()
|
|
53
|
-
|
|
53
|
+
if self.do_init():
|
|
54
|
+
self.app.show_main_window()
|
|
54
55
|
self.app.exec()
|
|
55
56
|
else:
|
|
56
57
|
self.task_executor.start()
|
|
@@ -80,11 +81,15 @@ class OK:
|
|
|
80
81
|
logger.error("start error", e)
|
|
81
82
|
self.exit_event.set()
|
|
82
83
|
if self.app:
|
|
83
|
-
self.
|
|
84
|
+
self.quit()
|
|
84
85
|
|
|
85
86
|
def do_init(self):
|
|
86
87
|
logger.info(f"initializing {self.__class__.__name__}, config: {self.config}")
|
|
87
88
|
if self.config.get('ocr'):
|
|
89
|
+
isascii, path = install_path_isascii()
|
|
90
|
+
if not isascii:
|
|
91
|
+
self.app.show_path_ascii_error(path)
|
|
92
|
+
return False
|
|
88
93
|
from rapidocr_openvino import RapidOCR
|
|
89
94
|
self.ocr = RapidOCR()
|
|
90
95
|
|
|
@@ -109,6 +114,8 @@ class OK:
|
|
|
109
114
|
if self.app:
|
|
110
115
|
ok.gui.executor = self.task_executor
|
|
111
116
|
|
|
117
|
+
return True
|
|
118
|
+
|
|
112
119
|
def wait_task(self):
|
|
113
120
|
while not self.exit_event.is_set():
|
|
114
121
|
time.sleep(1)
|
|
@@ -117,6 +124,8 @@ class OK:
|
|
|
117
124
|
logger.debug('quit app')
|
|
118
125
|
self.exit_event.set()
|
|
119
126
|
self.device_manager.stop()
|
|
127
|
+
if self.app:
|
|
128
|
+
self.app.quit()
|
|
120
129
|
|
|
121
130
|
def init_device_manager(self):
|
|
122
131
|
if self.device_manager is None:
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import numpy as np
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
class CaptureException(Exception):
|
|
4
5
|
pass
|
|
5
6
|
|
|
7
|
+
|
|
6
8
|
class BaseCaptureMethod:
|
|
7
9
|
name = "None"
|
|
8
10
|
description = ""
|
|
@@ -13,6 +15,7 @@ class BaseCaptureMethod:
|
|
|
13
15
|
right_cut = 0
|
|
14
16
|
width = 0
|
|
15
17
|
height = 0
|
|
18
|
+
_size = (0, 0)
|
|
16
19
|
|
|
17
20
|
def __init__(self):
|
|
18
21
|
# Some capture methods don't need an initialization process
|
|
@@ -16,7 +16,6 @@ class ADBCaptureMethod(BaseCaptureMethod):
|
|
|
16
16
|
def __init__(self, device_manager, exit_event, width=0, height=0):
|
|
17
17
|
super().__init__()
|
|
18
18
|
self.exit_event = exit_event
|
|
19
|
-
self._size = (width, height)
|
|
20
19
|
self._connected = (width != 0 and height != 0)
|
|
21
20
|
self.device_manager = device_manager
|
|
22
21
|
|
|
@@ -43,6 +43,7 @@ class WindowsGraphicsCaptureMethod(BaseCaptureMethod):
|
|
|
43
43
|
def __init__(self, hwnd_window: HwndWindow):
|
|
44
44
|
super().__init__()
|
|
45
45
|
self.hwnd_window = hwnd_window
|
|
46
|
+
self.start_or_stop()
|
|
46
47
|
|
|
47
48
|
def frame_arrived_callback(self, x, y):
|
|
48
49
|
try:
|
|
@@ -180,9 +181,7 @@ class WindowsGraphicsCaptureMethod(BaseCaptureMethod):
|
|
|
180
181
|
self.last_frame = None
|
|
181
182
|
latency = time.time() - self.last_frame_time
|
|
182
183
|
self.last_frame_time = time.time()
|
|
183
|
-
|
|
184
|
-
logger.warning(f"latency too large return None frame: {latency}")
|
|
185
|
-
return None
|
|
184
|
+
|
|
186
185
|
if frame is not None:
|
|
187
186
|
x, y = self.hwnd_window.get_top_left_frame_offset()
|
|
188
187
|
if x > 0 or y > 0:
|
|
@@ -194,11 +193,26 @@ class WindowsGraphicsCaptureMethod(BaseCaptureMethod):
|
|
|
194
193
|
logger.warning(f"get_frame size <=0 {new_width}x{new_height}")
|
|
195
194
|
frame = None
|
|
196
195
|
else:
|
|
197
|
-
self.
|
|
198
|
-
self.height = new_height
|
|
196
|
+
self._size = (new_width, new_height)
|
|
199
197
|
if frame.shape[2] == 4:
|
|
200
198
|
frame = frame[:, :, :3]
|
|
201
|
-
|
|
199
|
+
if latency > 1:
|
|
200
|
+
logger.warning(f"latency too large return None frame: {latency}")
|
|
201
|
+
return None
|
|
202
|
+
else:
|
|
203
|
+
return frame
|
|
204
|
+
|
|
205
|
+
@property
|
|
206
|
+
def width(self):
|
|
207
|
+
if self._size[0] == 0:
|
|
208
|
+
self.do_get_frame()
|
|
209
|
+
return self._size[0]
|
|
210
|
+
|
|
211
|
+
@property
|
|
212
|
+
def height(self):
|
|
213
|
+
if self._size[1] == 0:
|
|
214
|
+
self.do_get_frame()
|
|
215
|
+
return self._size[1]
|
|
202
216
|
|
|
203
217
|
def reset_framepool(self, size, reset_device=False):
|
|
204
218
|
if reset_device:
|
|
@@ -9,6 +9,7 @@ from qfluentwidgets import FluentTranslator, qconfig, Theme
|
|
|
9
9
|
import ok
|
|
10
10
|
import ok.gui.resources
|
|
11
11
|
from ok.gui.MainWindow import MainWindow
|
|
12
|
+
from ok.gui.MessageWindow import MessageWindow
|
|
12
13
|
from ok.gui.i18n.path import i18n_path
|
|
13
14
|
from ok.gui.overlay.OverlayWindow import OverlayWindow
|
|
14
15
|
from ok.logging.Logger import get_logger
|
|
@@ -60,9 +61,18 @@ class App:
|
|
|
60
61
|
# Calculate half the screen size
|
|
61
62
|
half_screen_width = size.width() / 2
|
|
62
63
|
half_screen_height = size.height() / 2
|
|
63
|
-
|
|
64
64
|
window.move(half_screen_width / 2, half_screen_height / 2)
|
|
65
65
|
|
|
66
|
+
def show_message_window(self, title, message):
|
|
67
|
+
message_window = MessageWindow(self.icon, title, message, exit_event=self.exit_event)
|
|
68
|
+
message_window.show()
|
|
69
|
+
|
|
70
|
+
def show_path_ascii_error(self, path):
|
|
71
|
+
title = self.app.tr('Error')
|
|
72
|
+
content = self.app.tr(
|
|
73
|
+
"Install dir ") + path + self.app.tr(" must be an English path, move to another path.")
|
|
74
|
+
self.show_message_window(title, content)
|
|
75
|
+
|
|
66
76
|
def show_main_window(self):
|
|
67
77
|
self.main_window = MainWindow(self.icon, self.overlay, self.about, exit_event=self.exit_event)
|
|
68
78
|
self.main_window.setWindowTitle(f'{self.title} {self.version}') # Set the window title here
|
|
@@ -92,3 +102,6 @@ class App:
|
|
|
92
102
|
|
|
93
103
|
def exec(self):
|
|
94
104
|
sys.exit(self.app.exec())
|
|
105
|
+
|
|
106
|
+
def quit(self):
|
|
107
|
+
self.app.quit()
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
|
|
3
|
+
from PySide6.QtCore import Qt
|
|
4
|
+
from PySide6.QtWidgets import QVBoxLayout
|
|
5
|
+
from qfluentwidgets import BodyLabel, PushButton
|
|
6
|
+
from qframelesswindow import FramelessWindow, StandardTitleBar
|
|
7
|
+
|
|
8
|
+
import ok.gui
|
|
9
|
+
from ok.gui.common.style_sheet import StyleSheet
|
|
10
|
+
from ok.logging.Logger import get_logger
|
|
11
|
+
|
|
12
|
+
logger = get_logger(__name__)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class MessageWindow(FramelessWindow):
|
|
16
|
+
def __init__(self, icon, title, message, exit_event=None):
|
|
17
|
+
super().__init__()
|
|
18
|
+
self.exit_event = exit_event
|
|
19
|
+
self.message = message
|
|
20
|
+
self.title_bar = StandardTitleBar(self)
|
|
21
|
+
self.title_bar.maxBtn.hide()
|
|
22
|
+
self.title_bar.minBtn.hide()
|
|
23
|
+
self.setTitleBar(self.title_bar)
|
|
24
|
+
self.setFixedSize(500, 200)
|
|
25
|
+
self.setWindowTitle(title)
|
|
26
|
+
self.setWindowIcon(icon)
|
|
27
|
+
self.message_label = BodyLabel(message)
|
|
28
|
+
self.message_label.setWordWrap(True)
|
|
29
|
+
self.vBoxLayout = QVBoxLayout(self)
|
|
30
|
+
self.setLayout(self.vBoxLayout)
|
|
31
|
+
self.vBoxLayout.addWidget(self.message_label, 0, Qt.AlignVCenter)
|
|
32
|
+
self.confirm_button = PushButton(self.tr('Confirm'))
|
|
33
|
+
self.vBoxLayout.addWidget(self.confirm_button, 0, Qt.AlignCenter)
|
|
34
|
+
self.confirm_button.clicked.connect(self.quit)
|
|
35
|
+
self.confirm_button.setMaximumWidth(150)
|
|
36
|
+
|
|
37
|
+
StyleSheet.MESSAGE_WINDOW.apply(self)
|
|
38
|
+
self.activateWindow()
|
|
39
|
+
|
|
40
|
+
def closeEvent(self, event):
|
|
41
|
+
ok.gui.ok.quit()
|
|
42
|
+
event.accept()
|
|
43
|
+
|
|
44
|
+
def quit(self):
|
|
45
|
+
ok.gui.ok.quit()
|
|
@@ -10,13 +10,8 @@ class StyleSheet(StyleSheetBase, Enum):
|
|
|
10
10
|
LINK_CARD = "link_card"
|
|
11
11
|
CARD = "card"
|
|
12
12
|
STATUS_BAR = "status_bar"
|
|
13
|
-
HOME_INTERFACE = "home_interface"
|
|
14
|
-
ICON_INTERFACE = "icon_interface"
|
|
15
|
-
VIEW_INTERFACE = "view_interface"
|
|
16
|
-
SETTING_INTERFACE = "setting_interface"
|
|
17
13
|
TAB = "tab"
|
|
18
|
-
|
|
19
|
-
NAVIGATION_VIEW_INTERFACE = "navigation_view_interface"
|
|
14
|
+
MESSAGE_WINDOW = "message_window"
|
|
20
15
|
|
|
21
16
|
def path(self, theme=Theme.AUTO):
|
|
22
17
|
theme = qconfig.theme if theme == Theme.AUTO else theme
|