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.
Files changed (158) hide show
  1. {ok-script-0.0.37 → ok-script-0.0.38}/PKG-INFO +1 -1
  2. {ok-script-0.0.37 → ok-script-0.0.38}/ok/OK.py +12 -3
  3. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/BaseCaptureMethod.py +3 -0
  4. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/ADBCaptureMethod.py +0 -1
  5. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/WindowsGraphicsCaptureMethod.py +20 -6
  6. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/App.py +14 -1
  7. ok-script-0.0.38/ok/gui/MessageWindow.py +45 -0
  8. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/style_sheet.py +1 -6
  9. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/resources.py +429 -338
  10. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/StartCard.py +20 -0
  11. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/StatusBar.py +1 -1
  12. {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/TaskExecutor.py +22 -1
  13. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/path.py +8 -0
  14. {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/PKG-INFO +1 -1
  15. {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/SOURCES.txt +1 -0
  16. {ok-script-0.0.37 → ok-script-0.0.38}/setup.py +1 -1
  17. {ok-script-0.0.37 → ok-script-0.0.38}/README.md +0 -0
  18. {ok-script-0.0.37 → ok-script-0.0.38}/ok/__init__.py +0 -0
  19. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/HwndWindow.py +0 -0
  20. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/__init__.py +0 -0
  21. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/DeviceManager.py +0 -0
  22. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/__init__.py +0 -0
  23. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/bin/__init__.py +0 -0
  24. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/targets.py +0 -0
  25. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/adb/vbox.py +0 -0
  26. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/__init__.py +0 -0
  27. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/d3d11.py +0 -0
  28. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/dump.py +0 -0
  29. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/utils.py +0 -0
  30. {ok-script-0.0.37 → ok-script-0.0.38}/ok/capture/windows/window.py +0 -0
  31. {ok-script-0.0.37 → ok-script-0.0.38}/ok/color/Color.py +0 -0
  32. {ok-script-0.0.37 → ok-script-0.0.38}/ok/color/__init__.py +0 -0
  33. {ok-script-0.0.37 → ok-script-0.0.38}/ok/config/Config.py +0 -0
  34. {ok-script-0.0.37 → ok-script-0.0.38}/ok/config/InfoDict.py +0 -0
  35. {ok-script-0.0.37 → ok-script-0.0.38}/ok/config/__init__.py +0 -0
  36. {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/Box.py +0 -0
  37. {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/Feature.py +0 -0
  38. {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/FeatureSet.py +0 -0
  39. {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/FindFeature.py +0 -0
  40. {ok-script-0.0.37 → ok-script-0.0.38}/ok/feature/__init__.py +0 -0
  41. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/Communicate.py +0 -0
  42. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/MainWindow.py +0 -0
  43. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/TabTitles.py +0 -0
  44. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/__init__.py +0 -0
  45. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/about/AboutTab.py +0 -0
  46. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/about/__init__.py +0 -0
  47. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/OKIcon.py +0 -0
  48. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/__init__.py +0 -0
  49. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/common/config.py +0 -0
  50. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/AspectRatioWidget.py +0 -0
  51. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/DebugTab.py +0 -0
  52. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/FrameWidget.py +0 -0
  53. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/InfoWidget.py +0 -0
  54. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/LoggerWidget.py +0 -0
  55. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/Screenshot.py +0 -0
  56. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/debug/__init__.py +0 -0
  57. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/i18n/__init__.py +0 -0
  58. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/i18n/path.py +0 -0
  59. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/i18n/update.py +0 -0
  60. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/icon/__init__.py +0 -0
  61. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/icon/icon.py +0 -0
  62. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/overlay/OverlayWindow.py +0 -0
  63. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/overlay/__init__.py +0 -0
  64. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/qss/__init__.py +0 -0
  65. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/settings/SettingTab.py +0 -0
  66. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/settings/__init__.py +0 -0
  67. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/SelectCaptureListView.py +0 -0
  68. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/SelectHwndWindow.py +0 -0
  69. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/StartTab.py +0 -0
  70. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/start/__init__.py +0 -0
  71. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ConfigItemFactory.py +0 -0
  72. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ConfigLabelAndWidget.py +0 -0
  73. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndDoubleSpinBox.py +0 -0
  74. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndDropDown.py +0 -0
  75. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndLineEdit.py +0 -0
  76. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndList.py +0 -0
  77. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndSpinBox.py +0 -0
  78. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndSwitchButton.py +0 -0
  79. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/LabelAndWidget.py +0 -0
  80. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ModifyListDialog.py +0 -0
  81. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/ModifyListItem.py +0 -0
  82. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/OneTimeTaskTab.py +0 -0
  83. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/StartButton.py +0 -0
  84. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TaskCard.py +0 -0
  85. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TaskOpButton.py +0 -0
  86. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TooltipTableWidget.py +0 -0
  87. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/TriggerTaskTab.py +0 -0
  88. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/tasks/__init__.py +0 -0
  89. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/util/Alert.py +0 -0
  90. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/util/InitWorker.py +0 -0
  91. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/util/__init__.py +0 -0
  92. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/Card.py +0 -0
  93. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/FramelessDialog.py +0 -0
  94. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/ListTableWidgetItem.py +0 -0
  95. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/NumericTableWidgetItem.py +0 -0
  96. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/Tab.py +0 -0
  97. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/TabWidget.py +0 -0
  98. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/UpdateConfigWidgetItem.py +0 -0
  99. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/YesNonWidgetItem.py +0 -0
  100. {ok-script-0.0.37 → ok-script-0.0.38}/ok/gui/widget/__init__.py +0 -0
  101. {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/ADBInteraction.py +0 -0
  102. {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/BaseInteraction.py +0 -0
  103. {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/Win32Interaction.py +0 -0
  104. {ok-script-0.0.37 → ok-script-0.0.38}/ok/interaction/__init__.py +0 -0
  105. {ok-script-0.0.37 → ok-script-0.0.38}/ok/logging/Logger.py +0 -0
  106. {ok-script-0.0.37 → ok-script-0.0.38}/ok/logging/__init__.py +0 -0
  107. {ok-script-0.0.37 → ok-script-0.0.38}/ok/ocr/OCR.py +0 -0
  108. {ok-script-0.0.37 → ok-script-0.0.38}/ok/ocr/__init__.py +0 -0
  109. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
  110. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
  111. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
  112. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
  113. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
  114. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
  115. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
  116. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
  117. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
  118. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Media/__init__.py +0 -0
  119. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
  120. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Security/__init__.py +0 -0
  121. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
  122. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/Storage/__init__.py +0 -0
  123. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/Windows/__init__.py +0 -0
  124. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/__init__.py +0 -0
  125. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/delegate.py +0 -0
  126. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/export.py +0 -0
  127. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/idldsl.py +0 -0
  128. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/inspectable.py +0 -0
  129. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/roapi.py +0 -0
  130. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/types.py +0 -0
  131. {ok-script-0.0.37 → ok-script-0.0.38}/ok/rotypes/winstring.py +0 -0
  132. {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/BlackBarProcessor.py +0 -0
  133. {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/PostProcessor.py +0 -0
  134. {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/SaveByInterval.py +0 -0
  135. {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/SaveByKeyPress.py +0 -0
  136. {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/SaveMethodBase.py +0 -0
  137. {ok-script-0.0.37 → ok-script-0.0.38}/ok/save/__init__.py +0 -0
  138. {ok-script-0.0.37 → ok-script-0.0.38}/ok/scene/FeatureScene.py +0 -0
  139. {ok-script-0.0.37 → ok-script-0.0.38}/ok/scene/Scene.py +0 -0
  140. {ok-script-0.0.37 → ok-script-0.0.38}/ok/scene/__init__.py +0 -0
  141. {ok-script-0.0.37 → ok-script-0.0.38}/ok/stats/StreamStats.py +0 -0
  142. {ok-script-0.0.37 → ok-script-0.0.38}/ok/stats/__init__.py +0 -0
  143. {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/BaseTask.py +0 -0
  144. {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/ExecutorOperation.py +0 -0
  145. {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/OneTimeTask.py +0 -0
  146. {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/TriggerTask.py +0 -0
  147. {ok-script-0.0.37 → ok-script-0.0.38}/ok/task/__init__.py +0 -0
  148. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/__init__.py +0 -0
  149. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/exit_event.py +0 -0
  150. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/json.py +0 -0
  151. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/list.py +0 -0
  152. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/thread.py +0 -0
  153. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/win32_process.py +0 -0
  154. {ok-script-0.0.37 → ok-script-0.0.38}/ok/util/yaml.py +0 -0
  155. {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/dependency_links.txt +0 -0
  156. {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/requires.txt +0 -0
  157. {ok-script-0.0.37 → ok-script-0.0.38}/ok_script.egg-info/top_level.txt +0 -0
  158. {ok-script-0.0.37 → ok-script-0.0.38}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ok-script
3
- Version: 0.0.37
3
+ Version: 0.0.38
4
4
  Summary: Automation with Computer Vision for Python
5
5
  Home-page: https://github.com/ok-oldking/ok-script
6
6
  Author: ok-oldking
@@ -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
- self.app.show_main_window()
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.app.quit()
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
- if latency > 1:
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.width = new_width
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
- return frame
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
- GALLERY_INTERFACE = "gallery_interface"
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