ok-script 1.0.140__tar.gz → 1.0.142__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 (305) hide show
  1. {ok_script-1.0.140 → ok_script-1.0.142}/PKG-INFO +1 -1
  2. {ok_script-1.0.140 → ok_script-1.0.142}/ok/__init__.py +39 -22
  3. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/Communicate.py +3 -1
  4. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/DebugTab.py +6 -8
  5. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/OverlayWidget.py +59 -18
  6. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/Screenshot.py +17 -12
  7. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/en_US.qm +0 -0
  8. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/en_US.ts +32 -8
  9. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/es_ES.qm +0 -0
  10. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/es_ES.ts +32 -8
  11. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/ja_JP.qm +0 -0
  12. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/ja_JP.ts +32 -8
  13. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/ko_KR.qm +0 -0
  14. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/ko_KR.ts +32 -8
  15. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/zh_CN.qm +0 -0
  16. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/zh_CN.ts +32 -8
  17. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/zh_TW.qm +0 -0
  18. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/zh_TW.ts +32 -8
  19. ok_script-1.0.142/ok/gui/overlay/OverlayWindow.py +156 -0
  20. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/resources.py +4928 -4808
  21. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/StartTab.py +10 -19
  22. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/ConfigCard.py +3 -0
  23. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TemplateTab.py +6 -3
  24. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/Tab.py +8 -4
  25. {ok_script-1.0.140 → ok_script-1.0.142}/ok/task/TaskExecutor.py +15 -3
  26. {ok_script-1.0.140 → ok_script-1.0.142}/ok/task/task.py +9 -3
  27. ok_script-1.0.142/ok/util/GlobalConfig.py +110 -0
  28. ok_script-1.0.142/ok/util/blur.py +192 -0
  29. {ok_script-1.0.140 → ok_script-1.0.142}/ok_script.egg-info/PKG-INFO +1 -1
  30. {ok_script-1.0.140 → ok_script-1.0.142}/ok_script.egg-info/SOURCES.txt +1 -0
  31. ok_script-1.0.140/ok/gui/overlay/OverlayWindow.py +0 -37
  32. ok_script-1.0.140/ok/util/GlobalConfig.py +0 -64
  33. {ok_script-1.0.140 → ok_script-1.0.142}/MANIFEST.in +0 -0
  34. {ok_script-1.0.140 → ok_script-1.0.142}/README.md +0 -0
  35. {ok_script-1.0.140 → ok_script-1.0.142}/ok/__init__.cpp +0 -0
  36. {ok_script-1.0.140 → ok_script-1.0.142}/ok/__main__.py +0 -0
  37. {ok_script-1.0.140 → ok_script-1.0.142}/ok/_geometry.cpp +0 -0
  38. {ok_script-1.0.140 → ok_script-1.0.142}/ok/alas/__init__.py +0 -0
  39. {ok_script-1.0.140 → ok_script-1.0.142}/ok/alas/emulator_base.py +0 -0
  40. {ok_script-1.0.140 → ok_script-1.0.142}/ok/alas/emulator_windows.py +0 -0
  41. {ok_script-1.0.140 → ok_script-1.0.142}/ok/alas/platform_windows.py +0 -0
  42. {ok_script-1.0.140 → ok_script-1.0.142}/ok/alas/utils.py +0 -0
  43. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/__init__.py +0 -0
  44. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/__init__.py +0 -0
  45. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/deep.py +0 -0
  46. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/minitouch.py +0 -0
  47. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/nemu_ipc.py +0 -0
  48. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/nemu_utils.py +0 -0
  49. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/pool.py +0 -0
  50. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/timer.py +0 -0
  51. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/adb/util.py +0 -0
  52. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/windows/__init__.py +0 -0
  53. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/windows/d3d11.py +0 -0
  54. {ok_script-1.0.140 → ok_script-1.0.142}/ok/capture/windows/dump.py +0 -0
  55. {ok_script-1.0.140 → ok_script-1.0.142}/ok/cli.py +0 -0
  56. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/DeviceManager.py +0 -0
  57. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/__init__.py +0 -0
  58. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture.py +0 -0
  59. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/__init__.py +0 -0
  60. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/adb.py +0 -0
  61. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/base.py +0 -0
  62. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/bitblt.py +0 -0
  63. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/bitblt_utils.py +0 -0
  64. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/browser.py +0 -0
  65. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/desktop_duplication.py +0 -0
  66. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/hwnd_window.py +0 -0
  67. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/image.py +0 -0
  68. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/nemu_ipc.py +0 -0
  69. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/types.py +0 -0
  70. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/update.py +0 -0
  71. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/capture_methods/windows_graphics.py +0 -0
  72. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction.py +0 -0
  73. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/__init__.py +0 -0
  74. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/adb.py +0 -0
  75. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/base.py +0 -0
  76. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/browser.py +0 -0
  77. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/do_nothing.py +0 -0
  78. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/foreground_post_message.py +0 -0
  79. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/genshin.py +0 -0
  80. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/keys.py +0 -0
  81. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/post_message.py +0 -0
  82. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/pydirect.py +0 -0
  83. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/pynput.py +0 -0
  84. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/interaction_methods/swipe.py +0 -0
  85. {ok_script-1.0.140 → ok_script-1.0.142}/ok/device/intercation.py +0 -0
  86. {ok_script-1.0.140 → ok_script-1.0.142}/ok/feature/Box.cpp +0 -0
  87. {ok_script-1.0.140 → ok_script-1.0.142}/ok/feature/Box.py +0 -0
  88. {ok_script-1.0.140 → ok_script-1.0.142}/ok/feature/Feature.py +0 -0
  89. {ok_script-1.0.140 → ok_script-1.0.142}/ok/feature/FeatureSet.cpp +0 -0
  90. {ok_script-1.0.140 → ok_script-1.0.142}/ok/feature/FeatureSet.py +0 -0
  91. {ok_script-1.0.140 → ok_script-1.0.142}/ok/feature/__init__.py +0 -0
  92. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/MainWindow.py +0 -0
  93. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/MessageWindow.py +0 -0
  94. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/StartController.py +0 -0
  95. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/TabTitles.py +0 -0
  96. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/__init__.py +0 -0
  97. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/about/AboutTab.py +0 -0
  98. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/about/HttpTextEdit.py +0 -0
  99. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/about/ProjectCard.py +0 -0
  100. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/about/VersionCard.py +0 -0
  101. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/about/__init__.py +0 -0
  102. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/common/OKIcon.py +0 -0
  103. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/common/__init__.py +0 -0
  104. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/common/config.py +0 -0
  105. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/common/style_sheet.py +0 -0
  106. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/DebugTab.cpp +0 -0
  107. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/FrameWidget.cpp +0 -0
  108. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/LogWindow.cpp +0 -0
  109. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/RunCodeTab.py +0 -0
  110. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/Screenshot.cpp +0 -0
  111. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/debug/__init__.py +0 -0
  112. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/GettextTranslator.cpp +0 -0
  113. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/GettextTranslator.py +0 -0
  114. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/__init__.py +0 -0
  115. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/path.cpp +0 -0
  116. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/path.py +0 -0
  117. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/update.cpp +0 -0
  118. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/i18n/update.py +0 -0
  119. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/DownloadBar.cpp +0 -0
  120. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/DownloadBar.py +0 -0
  121. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/LauncherWindow.cpp +0 -0
  122. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/LauncherWindow.py +0 -0
  123. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/LinksBar.cpp +0 -0
  124. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/LinksBar.py +0 -0
  125. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/RunBar.cpp +0 -0
  126. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/RunBar.py +0 -0
  127. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/UpdateBar.cpp +0 -0
  128. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/UpdateBar.py +0 -0
  129. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/launcher/__init__.py +0 -0
  130. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/overlay/OverlayWindow.cpp +0 -0
  131. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/overlay/__init__.py +0 -0
  132. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/__init__.py +0 -0
  133. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/card.qss +0 -0
  134. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/discord.svg +0 -0
  135. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/heart.svg +0 -0
  136. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/message_window.qss +0 -0
  137. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/setting_interface.qss +0 -0
  138. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/status_bar.qss +0 -0
  139. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/stop.svg +0 -0
  140. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/dark/tab.qss +0 -0
  141. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/card.qss +0 -0
  142. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/discord.svg +0 -0
  143. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/heart.svg +0 -0
  144. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/message_window.qss +0 -0
  145. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/setting_interface.qss +0 -0
  146. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/status_bar.qss +0 -0
  147. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/stop.svg +0 -0
  148. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qss/light/tab.qss +0 -0
  149. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/qt.qrc +0 -0
  150. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/settings/GlobalConfigCard.cpp +0 -0
  151. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/settings/GlobalConfigCard.py +0 -0
  152. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/settings/SettingTab.cpp +0 -0
  153. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/settings/SettingTab.py +0 -0
  154. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/settings/__init__.py +0 -0
  155. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/SelectCaptureListView.cpp +0 -0
  156. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/SelectCaptureListView.py +0 -0
  157. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/SelectInteractionListView.py +0 -0
  158. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/StartCard.cpp +0 -0
  159. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/StartCard.py +0 -0
  160. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/StartTab.cpp +0 -0
  161. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/start/__init__.py +0 -0
  162. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/ConfigItemFactory.py +0 -0
  163. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/ConfigLabelAndWidget.py +0 -0
  164. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/EditTaskTab.py +0 -0
  165. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndButtons.py +0 -0
  166. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndDoubleSpinBox.py +0 -0
  167. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndDropDown.py +0 -0
  168. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndGlobal.py +0 -0
  169. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndLineEdit.py +0 -0
  170. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndList.py +0 -0
  171. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndMultiSelection.py +0 -0
  172. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndSpinBox.py +0 -0
  173. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndSwitchButton.py +0 -0
  174. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndTextEdit.py +0 -0
  175. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/LabelAndWidget.py +0 -0
  176. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/MarkUpWindow.py +0 -0
  177. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/ModifyListDialog.py +0 -0
  178. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/ModifyListItem.py +0 -0
  179. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/OneTimeTaskTab.py +0 -0
  180. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/RecordScript.py +0 -0
  181. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/ScheduleTaskTab.py +0 -0
  182. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/ScriptPackager.py +0 -0
  183. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/StartButton.py +0 -0
  184. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TaskCard.py +0 -0
  185. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TaskManger.py +0 -0
  186. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TaskOpButton.py +0 -0
  187. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TaskTab.py +0 -0
  188. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TemplateFactory.py +0 -0
  189. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TooltipTableWidget.py +0 -0
  190. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/TriggerTaskTab.py +0 -0
  191. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/tasks/__init__.py +0 -0
  192. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/Alert.cpp +0 -0
  193. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/Alert.py +0 -0
  194. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/InitWorker.cpp +0 -0
  195. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/InitWorker.py +0 -0
  196. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/__init__.py +0 -0
  197. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/app.cpp +0 -0
  198. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/app.py +0 -0
  199. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/download.py +0 -0
  200. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/pip_util.cpp +0 -0
  201. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/util/pip_util.py +0 -0
  202. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/BaseLoading.py +0 -0
  203. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/BaseWindow.cpp +0 -0
  204. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/BaseWindow.py +0 -0
  205. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/Card.cpp +0 -0
  206. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/Card.py +0 -0
  207. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/CustomTab.cpp +0 -0
  208. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/CustomTab.py +0 -0
  209. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/EmptyCard.cpp +0 -0
  210. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/EmptyCard.py +0 -0
  211. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/FlowLayout.cpp +0 -0
  212. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/FlowLayout.py +0 -0
  213. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/FramelessDialog.cpp +0 -0
  214. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/FramelessDialog.py +0 -0
  215. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/ImageWidget.py +0 -0
  216. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/ListTableWidgetItem.cpp +0 -0
  217. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/ListTableWidgetItem.py +0 -0
  218. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/NumericTableWidgetItem.cpp +0 -0
  219. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/NumericTableWidgetItem.py +0 -0
  220. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/OkCompactSpinBox.cpp +0 -0
  221. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/OkCompactSpinBox.py +0 -0
  222. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/SortingTableWidgetItem.cpp +0 -0
  223. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/SortingTableWidgetItem.py +0 -0
  224. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/StartLoadingDialog.cpp +0 -0
  225. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/StartLoadingDialog.py +0 -0
  226. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/StatusBar.cpp +0 -0
  227. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/StatusBar.py +0 -0
  228. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/Tab.cpp +0 -0
  229. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/TabWidget.cpp +0 -0
  230. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/TabWidget.py +0 -0
  231. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/UpdateConfigWidgetItem.cpp +0 -0
  232. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/UpdateConfigWidgetItem.py +0 -0
  233. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/WidgetWithVLabel.cpp +0 -0
  234. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/WidgetWithVLabel.py +0 -0
  235. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/YesNonWidgetItem.cpp +0 -0
  236. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/YesNonWidgetItem.py +0 -0
  237. {ok_script-1.0.140 → ok_script-1.0.142}/ok/gui/widget/__init__.py +0 -0
  238. {ok_script-1.0.140 → ok_script-1.0.142}/ok/ocr/__init__.py +0 -0
  239. {ok_script-1.0.140 → ok_script-1.0.142}/ok/ocr/download_paddle_model.py +0 -0
  240. {ok_script-1.0.140 → ok_script-1.0.142}/ok/ok.cpp +0 -0
  241. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Foundation/Collections.cpp +0 -0
  242. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
  243. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
  244. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
  245. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
  246. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
  247. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
  248. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
  249. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
  250. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
  251. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Media/__init__.py +0 -0
  252. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
  253. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Security/__init__.py +0 -0
  254. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
  255. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/Storage/__init__.py +0 -0
  256. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/Windows/__init__.py +0 -0
  257. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/__init__.py +0 -0
  258. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/delegate.py +0 -0
  259. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/export.py +0 -0
  260. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/idldsl.py +0 -0
  261. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/inspectable.py +0 -0
  262. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/roapi.py +0 -0
  263. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/types.py +0 -0
  264. {ok_script-1.0.140 → ok_script-1.0.142}/ok/rotypes/winstring.py +0 -0
  265. {ok_script-1.0.140 → ok_script-1.0.142}/ok/task/DiagnosisTask.py +0 -0
  266. {ok_script-1.0.140 → ok_script-1.0.142}/ok/task/TaskExecutor.cpp +0 -0
  267. {ok_script-1.0.140 → ok_script-1.0.142}/ok/task/__init__.py +0 -0
  268. {ok_script-1.0.140 → ok_script-1.0.142}/ok/task/exceptions.py +0 -0
  269. {ok_script-1.0.140 → ok_script-1.0.142}/ok/task/task.cpp +0 -0
  270. {ok_script-1.0.140 → ok_script-1.0.142}/ok/test/OKTestRunner.py +0 -0
  271. {ok_script-1.0.140 → ok_script-1.0.142}/ok/test/RunTests.py +0 -0
  272. {ok_script-1.0.140 → ok_script-1.0.142}/ok/test/TaskTestCase.py +0 -0
  273. {ok_script-1.0.140 → ok_script-1.0.142}/ok/test/__init__.py +0 -0
  274. {ok_script-1.0.140 → ok_script-1.0.142}/ok/third_party/__init__.py +0 -0
  275. {ok_script-1.0.140 → ok_script-1.0.142}/ok/third_party/paperclip.py +0 -0
  276. {ok_script-1.0.140 → ok_script-1.0.142}/ok/update/GitUpdater.py +0 -0
  277. {ok_script-1.0.140 → ok_script-1.0.142}/ok/update/__init__.py +0 -0
  278. {ok_script-1.0.140 → ok_script-1.0.142}/ok/update/copy_ok_folder.py +0 -0
  279. {ok_script-1.0.140 → ok_script-1.0.142}/ok/update/gen_md5.py +0 -0
  280. {ok_script-1.0.140 → ok_script-1.0.142}/ok/update/init_launcher_env.py +0 -0
  281. {ok_script-1.0.140 → ok_script-1.0.142}/ok/update/inline_ok_requirements.py +0 -0
  282. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/Analytics.py +0 -0
  283. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/__init__.py +0 -0
  284. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/clazz.py +0 -0
  285. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/collection.py +0 -0
  286. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/color.py +0 -0
  287. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/config.py +0 -0
  288. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/file.py +0 -0
  289. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/gpu_driver_settings.py +0 -0
  290. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/handler.py +0 -0
  291. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/i18n.py +0 -0
  292. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/logger.py +0 -0
  293. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/logs/ok-script.log +0 -0
  294. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/partial_sync_repo.py +0 -0
  295. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/print_hwnd.py +0 -0
  296. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/process.py +0 -0
  297. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/window.py +0 -0
  298. {ok_script-1.0.140 → ok_script-1.0.142}/ok/util/windows_schedule.py +0 -0
  299. {ok_script-1.0.140 → ok_script-1.0.142}/ok_script.egg-info/dependency_links.txt +0 -0
  300. {ok_script-1.0.140 → ok_script-1.0.142}/ok_script.egg-info/entry_points.txt +0 -0
  301. {ok_script-1.0.140 → ok_script-1.0.142}/ok_script.egg-info/not-zip-safe +0 -0
  302. {ok_script-1.0.140 → ok_script-1.0.142}/ok_script.egg-info/requires.txt +0 -0
  303. {ok_script-1.0.140 → ok_script-1.0.142}/ok_script.egg-info/top_level.txt +0 -0
  304. {ok_script-1.0.140 → ok_script-1.0.142}/setup.cfg +0 -0
  305. {ok_script-1.0.140 → ok_script-1.0.142}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ok-script
3
- Version: 1.0.140
3
+ Version: 1.0.142
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
@@ -23,7 +23,7 @@ from ok.gui.Communicate import communicate
23
23
  from ok.gui.MainWindow import MainWindow
24
24
  from ok.task.TaskExecutor import TaskExecutor
25
25
  from ok.util.Analytics import Analytics
26
- from ok.util.GlobalConfig import GlobalConfig, basic_options
26
+ from ok.util.GlobalConfig import GlobalConfig, register_basic_options
27
27
  from ok.util.clazz import init_class_by_name
28
28
  from ok.util.config import Config, ConfigOption
29
29
  from ok.util.handler import Handler, ExitEvent
@@ -97,7 +97,7 @@ class App:
97
97
  logger.debug(f'locale name {self.locale.name()}')
98
98
 
99
99
  self.loading_window = None
100
- self.overlay_window = None
100
+ self.overlay_window = None
101
101
  self.main_window = None
102
102
  self.exit_event = exit_event
103
103
  self.icon = QIcon(get_path_relative_to_exe(config.get('gui_icon')) or ":/icon/icon.ico")
@@ -109,11 +109,7 @@ class App:
109
109
  else:
110
110
  self.to_translate = None
111
111
 
112
- if self.ok_config.get('use_overlay', False):
113
- logger.debug('init overlay')
114
- from ok.gui.overlay.OverlayWindow import OverlayWindow
115
- self.overlay_window = OverlayWindow(og.device_manager.hwnd_window)
116
- self.po_translation = None
112
+ self.po_translation = None
117
113
  if not config.get('window_size'):
118
114
  logger.info(f'no config.window_size was set use default')
119
115
  config['window_size'] = {
@@ -127,10 +123,12 @@ class App:
127
123
  if task_executor:
128
124
  og.device_manager = task_executor.device_manager
129
125
 
130
- if my_app := self.config.get('my_app'):
131
- og.my_app = init_class_by_name(my_app[0], my_app[1], exit_event)
132
-
133
- if self.config.get('analytics'):
126
+ if my_app := self.config.get('my_app'):
127
+ og.my_app = init_class_by_name(my_app[0], my_app[1], exit_event)
128
+ if not hasattr(og.my_app, 'get_overlay_view'):
129
+ og.my_app.get_overlay_view = self.get_overlay_view
130
+
131
+ if self.config.get('analytics'):
134
132
  self.fire_base_analytics = Analytics(self.config, self.exit_event, og.handler, og.device_manager)
135
133
  logger.debug('init app end')
136
134
 
@@ -188,16 +186,25 @@ class App:
188
186
  path=path)
189
187
  self.show_message_window(title, content)
190
188
 
191
- def update_overlay(self, visible, x, y, window_width, window_height, width, height, scaling):
192
-
193
- self.overlay_window.update_overlay(visible, x, y, window_width, window_height, width, height, scaling)
189
+ def update_overlay(self, visible, x, y, window_width, window_height, width, height, scaling):
190
+ overlay_view = self.get_overlay_view()
191
+ if overlay_view:
192
+ overlay_view.update_overlay(visible, x, y, window_width, window_height, width, height, scaling)
193
+
194
+ def get_overlay_view(self):
195
+ """Return the overlay widget exposed to tasks, custom tabs, and my_app."""
196
+ if self.overlay_window is None:
197
+ from ok.gui.overlay.OverlayWindow import OverlayWindow
198
+ self.overlay_window = OverlayWindow(og.device_manager.hwnd_window)
199
+ communicate.window.connect(self.overlay_window.update_overlay)
200
+ self.overlay_window.set_boxes_enabled(self.ok_config.get('use_overlay', False))
201
+ return self.overlay_window
194
202
 
195
203
  def show_main_window(self):
196
204
  self.do_show_main()
197
205
 
198
- def do_show_main(self):
199
- if self.overlay_window:
200
- communicate.window.connect(self.overlay_window.update_overlay)
206
+ def do_show_main(self):
207
+ self.get_overlay_view()
201
208
 
202
209
  self.main_window = MainWindow(self, self.config, self.ok_config, self.icon, self.title, self.version,
203
210
  self.debug,
@@ -263,6 +270,8 @@ class HeadlessApp:
263
270
  og.app = self
264
271
  if my_app := self.config.get('my_app'):
265
272
  og.my_app = init_class_by_name(my_app[0], my_app[1], exit_event)
273
+ if not hasattr(og.my_app, 'get_overlay_view'):
274
+ og.my_app.get_overlay_view = self.get_overlay_view
266
275
  logger.debug('init headless app end')
267
276
 
268
277
  def tr(self, key):
@@ -289,6 +298,9 @@ class HeadlessApp:
289
298
  if self.exit_event:
290
299
  self.exit_event.set()
291
300
 
301
+ def get_overlay_view(self):
302
+ return None
303
+
292
304
 
293
305
  def get_my_id():
294
306
  mac = uuid.getnode()
@@ -365,8 +377,8 @@ class OK:
365
377
  else:
366
378
  available_methods.append(method)
367
379
 
368
- self.global_config.get_config(basic_options)
369
- og.global_config = self.global_config
380
+ register_basic_options(self.global_config, enable_blur=callable(config.get('blur_area')))
381
+ og.global_config = self.global_config
370
382
  og.set_use_dml()
371
383
  try:
372
384
  import ctypes
@@ -718,7 +730,7 @@ class BaseScene:
718
730
 
719
731
 
720
732
  ## globals.py
721
- class OkGlobals:
733
+ class OkGlobals:
722
734
 
723
735
  def __init__(self):
724
736
  super().__init__()
@@ -741,7 +753,7 @@ class OkGlobals:
741
753
  self.global_config = None
742
754
  logger.info(f'app path {self.app_path}')
743
755
 
744
- def set_use_dml(self):
756
+ def set_use_dml(self):
745
757
  use_dml_txt_option = self.global_config.get_config('Basic Options').get('Use DirectML')
746
758
  use_dml = False
747
759
  if use_dml_txt_option == 'Auto':
@@ -756,7 +768,12 @@ class OkGlobals:
756
768
  window_build_number = int(window_build_number_str) if window_build_number_str.isdigit() else 0
757
769
  use_dml = window_build_number >= 18362
758
770
  logger.info(f'use_dml result is {use_dml}')
759
- self.use_dml = use_dml
771
+ self.use_dml = use_dml
772
+
773
+ def get_overlay_view(self):
774
+ if self.app and hasattr(self.app, 'get_overlay_view'):
775
+ return self.app.get_overlay_view()
776
+ return None
760
777
 
761
778
  def get_trial_expire_util_str(self):
762
779
  # Convert the timestamp to a datetime object
@@ -15,7 +15,9 @@ class Communicate(QObject):
15
15
  loading_progress = Signal(str)
16
16
  notification = Signal(str, str, bool, bool, str, object)
17
17
  executor_paused: Signal = Signal(bool)
18
- screenshot = Signal(object, str, bool, object)
18
+ screenshot = Signal(object, str, bool, object)
19
+ blur_overlay = Signal(object)
20
+ clear_blur_overlay = Signal()
19
21
  adb_devices: Signal = Signal(bool)
20
22
  config_validation: Signal = Signal(str)
21
23
  tab = Signal(str)
@@ -215,14 +215,12 @@ def capture(processor=None):
215
215
  if og.device_manager.capture_method is not None:
216
216
  logger.info(f'og.device_manager.capture_method {og.device_manager.capture_method}')
217
217
  try:
218
- frame = og.device_manager.capture_method.get_frame()
219
- if frame is not None:
220
- if processor:
221
- frame = processor(frame.copy())
222
- current_capture = str(og.device_manager.capture_method) + '_' + str(time.time() * 1000)
223
- file_path = og.ok.screenshot.generate_screen_shot(frame, og.ok.screenshot.ui_dict,
224
- og.ok.screenshot.screenshot_folder,
225
- current_capture, True, None)
218
+ frame = og.device_manager.capture_method.get_frame()
219
+ if frame is not None:
220
+ current_capture = str(og.device_manager.capture_method) + '_' + str(time.time() * 1000)
221
+ file_path = og.ok.screenshot.generate_screen_shot(frame, og.ok.screenshot.ui_dict,
222
+ og.ok.screenshot.screenshot_folder,
223
+ current_capture, True, None, processor=processor)
226
224
 
227
225
  # Use subprocess.Popen to open the file explorer and select the file
228
226
  subprocess.Popen(r'explorer /select,"{}"'.format(file_path))
@@ -1,6 +1,6 @@
1
- import win32api
2
- from PySide6.QtCore import Qt, QPoint, QTimer, QRectF, QRect
3
- from PySide6.QtGui import QPainter, QColor, QPen, QFont, QGuiApplication, QBrush
1
+ import win32api
2
+ from PySide6.QtCore import Qt, QPoint, QTimer, QRectF, QRect
3
+ from PySide6.QtGui import QPainter, QColor, QPen, QFont, QGuiApplication, QBrush, QImage
4
4
  from PySide6.QtWidgets import QWidget
5
5
 
6
6
  from ok import Logger
@@ -37,8 +37,9 @@ class OverlayWidget(QWidget):
37
37
  self.log_font.setPointSize(10)
38
38
  screen = QGuiApplication.primaryScreen()
39
39
  self.scaling = screen.devicePixelRatio()
40
- self.logs = []
41
- communicate.log.connect(self.add_log)
40
+ self.logs = []
41
+ self.blur_images = []
42
+ communicate.log.connect(self.add_log)
42
43
 
43
44
  def add_log(self, level_no, message):
44
45
  for log in self.black_list_logs:
@@ -155,19 +156,59 @@ class OverlayWidget(QWidget):
155
156
  return 1
156
157
  return self.width() / og.device_manager.width
157
158
 
158
- def paintEvent(self, event):
159
- if not self.isVisible():
160
- return
161
- painter = QPainter(self)
162
- self.paint_border(painter)
163
- self.paint_boxes(painter)
164
- self.paint_mouse_position(painter)
165
- self.paint_logs(painter)
166
- self.paint_alt_overlay(painter)
167
- if og.config.get('debug_cover_uid'):
168
- self.paint_uid_cover(painter)
169
-
170
- def paint_alt_overlay(self, painter):
159
+ def paintEvent(self, event):
160
+ if not self.isVisible():
161
+ return
162
+ painter = QPainter(self)
163
+ self.paint_blur(painter)
164
+ boxes_active = getattr(self, '_boxes_enabled', True) and getattr(self, '_boxes_active', False)
165
+ if boxes_active:
166
+ self.paint_boxes(painter)
167
+ self.paint_border(painter)
168
+ self.paint_mouse_position(painter)
169
+ self.paint_logs(painter)
170
+ self.paint_alt_overlay(painter)
171
+ if og.config.get('debug_cover_uid'):
172
+ self.paint_uid_cover(painter)
173
+ self.paint_custom(painter)
174
+
175
+ def set_blur_patches(self, patches):
176
+ images = []
177
+ for x, y, width, height, patch in patches:
178
+ if patch is None or patch.size == 0:
179
+ continue
180
+ if len(patch.shape) == 2:
181
+ image_data = patch.copy()
182
+ image_format = QImage.Format_Grayscale8
183
+ else:
184
+ image_data = patch[:, :, :3][:, :, ::-1].copy()
185
+ image_format = QImage.Format_RGB888
186
+ image = QImage(image_data.data, width, height, image_data.strides[0], image_format).copy()
187
+ images.append((x, y, width, height, image))
188
+ self.blur_images = images
189
+ self.update()
190
+
191
+ def clear_blur_patches(self):
192
+ self.blur_images = []
193
+ self.update()
194
+
195
+ def paint_blur(self, painter):
196
+ frame_ratio = self.frame_ratio()
197
+ for x, y, width, height, image in self.blur_images:
198
+ painter.drawImage(QRectF(x * frame_ratio, y * frame_ratio,
199
+ width * frame_ratio, height * frame_ratio), image)
200
+
201
+ def paint_custom(self, painter):
202
+ for key, callback in list(getattr(self, 'custom_painters', {}).items()):
203
+ painter.save()
204
+ try:
205
+ callback(painter, self)
206
+ except Exception as e:
207
+ logger.warning(f'custom overlay painter {key} failed: {e}')
208
+ finally:
209
+ painter.restore()
210
+
211
+ def paint_alt_overlay(self, painter):
171
212
  if not getattr(self, '_is_alt_down', False):
172
213
  return
173
214
 
@@ -11,7 +11,8 @@ from PySide6.QtGui import QColor
11
11
 
12
12
  from ok import Box, og
13
13
  from ok import Logger
14
- from ok.gui.Communicate import communicate
14
+ from ok.gui.Communicate import communicate
15
+ from ok.util.blur import apply_blur_areas, get_blur_algorithm
15
16
  from ok.util.file import find_first_existing_file, clear_folder, sanitize_filename, \
16
17
  get_relative_path
17
18
 
@@ -126,10 +127,10 @@ class Screenshot(QObject):
126
127
  self.generate_screen_shot(task[0], task[1], task[2], task[3], task[4], task[5])
127
128
  self.task_queue.task_done()
128
129
 
129
- def generate_screen_shot(self, frame, ui_dict, folder, name, show_box, frame_box):
130
- if folder is None:
131
- return
132
- pil_image = self.to_pil_image(frame)
130
+ def generate_screen_shot(self, frame, ui_dict, folder, name, show_box, frame_box, processor=None):
131
+ if folder is None:
132
+ return
133
+ pil_image = self.to_pil_image(frame, processor=processor)
133
134
  if pil_image is None:
134
135
  return
135
136
 
@@ -180,13 +181,17 @@ class Screenshot(QObject):
180
181
  if self.task_queue is not None:
181
182
  self.task_queue.put(None)
182
183
 
183
- def to_pil_image(self, frame):
184
- if frame is None:
185
- return None
186
- if processor := og.config.get('screenshot_processor'):
187
- frame = processor(frame.copy())
188
- if len(frame.shape) == 2:
189
- frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
184
+ def to_pil_image(self, frame, processor=None):
185
+ if frame is None:
186
+ return None
187
+ frame = apply_blur_areas(frame, og.config.get('blur_area'),
188
+ get_blur_algorithm(getattr(og, 'global_config', None)))
189
+ if processor is None:
190
+ processor = og.config.get('screenshot_processor')
191
+ if processor:
192
+ frame = processor(frame.copy())
193
+ if len(frame.shape) == 2:
194
+ frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
190
195
  return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
191
196
 
192
197
 
@@ -819,12 +819,12 @@
819
819
  <translation>Choose Interaction</translation>
820
820
  </message>
821
821
  <message>
822
- <source>Show Overlay</source>
823
- <translation>Show Overlay</translation>
822
+ <source>Enable Boxes</source>
823
+ <translation>Enable Boxes</translation>
824
824
  </message>
825
825
  <message>
826
- <source>Hide Overlay</source>
827
- <translation>Hide Overlay</translation>
826
+ <source>Disable Boxes</source>
827
+ <translation>Disable Boxes</translation>
828
828
  </message>
829
829
  <message>
830
830
  <source>Show Log on Overlay</source>
@@ -1167,10 +1167,34 @@
1167
1167
  <source>Switch between different Windows capture methods</source>
1168
1168
  <translation>Switch between different Windows capture methods</translation>
1169
1169
  </message>
1170
- <message>
1171
- <source>Basic Options</source>
1172
- <translation>Basic Options</translation>
1173
- </message>
1170
+ <message>
1171
+ <source>Basic Options</source>
1172
+ <translation>Basic Options</translation>
1173
+ </message>
1174
+ <message>
1175
+ <source>Enable Blur</source>
1176
+ <translation>Enable Blur</translation>
1177
+ </message>
1178
+ <message>
1179
+ <source>Blur Game UID etc to enhance OLED life</source>
1180
+ <translation>Blur Game UID etc to enhance OLED life</translation>
1181
+ </message>
1182
+ <message>
1183
+ <source>Blur Algorithm</source>
1184
+ <translation>Blur Algorithm</translation>
1185
+ </message>
1186
+ <message>
1187
+ <source>Method used to obscure configured areas</source>
1188
+ <translation>Method used to obscure configured areas</translation>
1189
+ </message>
1190
+ <message>
1191
+ <source>Blur</source>
1192
+ <translation>Blur</translation>
1193
+ </message>
1194
+ <message>
1195
+ <source>Inpaint</source>
1196
+ <translation>Inpaint</translation>
1197
+ </message>
1174
1198
  <message>
1175
1199
  <source>Use DirectML</source>
1176
1200
  <translation>Use DirectML</translation>
@@ -817,12 +817,12 @@
817
817
  <translation>Elegir interacción</translation>
818
818
  </message>
819
819
  <message>
820
- <source>Show Overlay</source>
821
- <translation>Mostrar superposición de depuración</translation>
820
+ <source>Enable Boxes</source>
821
+ <translation>Activar cuadros</translation>
822
822
  </message>
823
823
  <message>
824
- <source>Hide Overlay</source>
825
- <translation>Ocultar superposición de depuración</translation>
824
+ <source>Disable Boxes</source>
825
+ <translation>Desactivar cuadros</translation>
826
826
  </message>
827
827
  <message>
828
828
  <source>Show Log on Overlay</source>
@@ -1165,10 +1165,34 @@
1165
1165
  <source>Switch between different Windows capture methods</source>
1166
1166
  <translation>Cambiar entre diferentes métodos de captura de Windows</translation>
1167
1167
  </message>
1168
- <message>
1169
- <source>Basic Options</source>
1170
- <translation>Opciones básicas</translation>
1171
- </message>
1168
+ <message>
1169
+ <source>Basic Options</source>
1170
+ <translation>Opciones básicas</translation>
1171
+ </message>
1172
+ <message>
1173
+ <source>Enable Blur</source>
1174
+ <translation>Activar desenfoque</translation>
1175
+ </message>
1176
+ <message>
1177
+ <source>Blur Game UID etc to enhance OLED life</source>
1178
+ <translation>Desenfoca el UID del juego y otros elementos para prolongar la vida del OLED</translation>
1179
+ </message>
1180
+ <message>
1181
+ <source>Blur Algorithm</source>
1182
+ <translation>Algoritmo de ocultación</translation>
1183
+ </message>
1184
+ <message>
1185
+ <source>Method used to obscure configured areas</source>
1186
+ <translation>Método utilizado para ocultar las áreas configuradas</translation>
1187
+ </message>
1188
+ <message>
1189
+ <source>Blur</source>
1190
+ <translation>Desenfoque</translation>
1191
+ </message>
1192
+ <message>
1193
+ <source>Inpaint</source>
1194
+ <translation>Relleno inteligente</translation>
1195
+ </message>
1172
1196
  <message>
1173
1197
  <source>Use DirectML</source>
1174
1198
  <translation>Usar DirectML</translation>
@@ -813,12 +813,12 @@
813
813
  <translation>操作方法の選択</translation>
814
814
  </message>
815
815
  <message>
816
- <source>Show Overlay</source>
817
- <translation>デバッグオーバーレイを表示</translation>
816
+ <source>Enable Boxes</source>
817
+ <translation>ボックスを有効化</translation>
818
818
  </message>
819
819
  <message>
820
- <source>Hide Overlay</source>
821
- <translation>デバッグオーバーレイを隠す</translation>
820
+ <source>Disable Boxes</source>
821
+ <translation>ボックスを無効化</translation>
822
822
  </message>
823
823
  <message>
824
824
  <source>Show Log on Overlay</source>
@@ -1157,10 +1157,34 @@
1157
1157
  <source>Switch between different Windows capture methods</source>
1158
1158
  <translation>異なる Windows キャプチャ方式を切り替える</translation>
1159
1159
  </message>
1160
- <message>
1161
- <source>Basic Options</source>
1162
- <translation>基本オプション</translation>
1163
- </message>
1160
+ <message>
1161
+ <source>Basic Options</source>
1162
+ <translation>基本オプション</translation>
1163
+ </message>
1164
+ <message>
1165
+ <source>Enable Blur</source>
1166
+ <translation>ぼかしを有効化</translation>
1167
+ </message>
1168
+ <message>
1169
+ <source>Blur Game UID etc to enhance OLED life</source>
1170
+ <translation>ゲーム UID などをぼかして OLED の寿命を延ばします</translation>
1171
+ </message>
1172
+ <message>
1173
+ <source>Blur Algorithm</source>
1174
+ <translation>マスク処理方式</translation>
1175
+ </message>
1176
+ <message>
1177
+ <source>Method used to obscure configured areas</source>
1178
+ <translation>設定領域を隠すための処理方式</translation>
1179
+ </message>
1180
+ <message>
1181
+ <source>Blur</source>
1182
+ <translation>ぼかし</translation>
1183
+ </message>
1184
+ <message>
1185
+ <source>Inpaint</source>
1186
+ <translation>インペイント</translation>
1187
+ </message>
1164
1188
  <message>
1165
1189
  <source>Use DirectML</source>
1166
1190
  <translation>DirectMLを使用</translation>
@@ -818,12 +818,12 @@
818
818
  <translation>상호 작용 선택</translation>
819
819
  </message>
820
820
  <message>
821
- <source>Show Overlay</source>
822
- <translation>디버그 오버레이 표시</translation>
821
+ <source>Enable Boxes</source>
822
+ <translation>박스 사용</translation>
823
823
  </message>
824
824
  <message>
825
- <source>Hide Overlay</source>
826
- <translation>디버그 오버레이 숨기기</translation>
825
+ <source>Disable Boxes</source>
826
+ <translation>박스 사용 안 함</translation>
827
827
  </message>
828
828
  <message>
829
829
  <source>Show Log on Overlay</source>
@@ -1166,10 +1166,34 @@
1166
1166
  <source>Switch between different Windows capture methods</source>
1167
1167
  <translation>다양한 Windows 캡처 방식 간에 전환</translation>
1168
1168
  </message>
1169
- <message>
1170
- <source>Basic Options</source>
1171
- <translation>기본 옵션</translation>
1172
- </message>
1169
+ <message>
1170
+ <source>Basic Options</source>
1171
+ <translation>기본 옵션</translation>
1172
+ </message>
1173
+ <message>
1174
+ <source>Enable Blur</source>
1175
+ <translation>블러 사용</translation>
1176
+ </message>
1177
+ <message>
1178
+ <source>Blur Game UID etc to enhance OLED life</source>
1179
+ <translation>게임 UID 등을 흐리게 표시하여 OLED 수명을 늘립니다</translation>
1180
+ </message>
1181
+ <message>
1182
+ <source>Blur Algorithm</source>
1183
+ <translation>가림 알고리즘</translation>
1184
+ </message>
1185
+ <message>
1186
+ <source>Method used to obscure configured areas</source>
1187
+ <translation>설정된 영역을 가리는 처리 방법</translation>
1188
+ </message>
1189
+ <message>
1190
+ <source>Blur</source>
1191
+ <translation>블러</translation>
1192
+ </message>
1193
+ <message>
1194
+ <source>Inpaint</source>
1195
+ <translation>인페인트</translation>
1196
+ </message>
1173
1197
  <message>
1174
1198
  <source>Use DirectML</source>
1175
1199
  <translation>DirectML 사용</translation>
@@ -819,12 +819,12 @@
819
819
  <translation>选择交互方式</translation>
820
820
  </message>
821
821
  <message>
822
- <source>Show Overlay</source>
823
- <translation>显示调试悬浮窗</translation>
822
+ <source>Enable Boxes</source>
823
+ <translation>启用标记框</translation>
824
824
  </message>
825
825
  <message>
826
- <source>Hide Overlay</source>
827
- <translation>隐藏调试悬浮窗</translation>
826
+ <source>Disable Boxes</source>
827
+ <translation>禁用标记框</translation>
828
828
  </message>
829
829
  <message>
830
830
  <source>Show Log on Overlay</source>
@@ -1163,10 +1163,34 @@
1163
1163
  <source>Switch between different Windows capture methods</source>
1164
1164
  <translation>切换不同的 Windows 截图方式</translation>
1165
1165
  </message>
1166
- <message>
1167
- <source>Basic Options</source>
1168
- <translation>基本设置</translation>
1169
- </message>
1166
+ <message>
1167
+ <source>Basic Options</source>
1168
+ <translation>基本设置</translation>
1169
+ </message>
1170
+ <message>
1171
+ <source>Enable Blur</source>
1172
+ <translation>启用模糊遮挡</translation>
1173
+ </message>
1174
+ <message>
1175
+ <source>Blur Game UID etc to enhance OLED life</source>
1176
+ <translation>模糊游戏 UID 等固定内容以延长 OLED 屏幕寿命</translation>
1177
+ </message>
1178
+ <message>
1179
+ <source>Blur Algorithm</source>
1180
+ <translation>遮挡算法</translation>
1181
+ </message>
1182
+ <message>
1183
+ <source>Method used to obscure configured areas</source>
1184
+ <translation>用于遮挡配置区域的处理方式</translation>
1185
+ </message>
1186
+ <message>
1187
+ <source>Blur</source>
1188
+ <translation>模糊</translation>
1189
+ </message>
1190
+ <message>
1191
+ <source>Inpaint</source>
1192
+ <translation>内容填充</translation>
1193
+ </message>
1170
1194
  <message>
1171
1195
  <source>Use DirectML</source>
1172
1196
  <translation>使用DirectML</translation>