ok-script 1.0.149__tar.gz → 1.0.151__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 (251) hide show
  1. {ok_script-1.0.149 → ok_script-1.0.151}/PKG-INFO +1 -1
  2. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/browser.py +18 -7
  3. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/hwnd_window.py +21 -6
  4. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/windows_graphics.py +49 -44
  5. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/MainWindow.py +26 -13
  6. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/StartController.py +17 -17
  7. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/en_US.qm +0 -0
  8. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/en_US.ts +7 -0
  9. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/es_ES.qm +0 -0
  10. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/es_ES.ts +7 -0
  11. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/ja_JP.qm +0 -0
  12. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/ja_JP.ts +7 -0
  13. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/ko_KR.qm +0 -0
  14. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/ko_KR.ts +7 -0
  15. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/zh_CN.qm +0 -0
  16. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/zh_CN.ts +7 -0
  17. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/zh_TW.qm +0 -0
  18. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/zh_TW.ts +7 -0
  19. ok_script-1.0.151/ok/gui/resources.py +13865 -0
  20. ok_script-1.0.151/ok/gui/settings/GlobalConfigTab.py +63 -0
  21. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/settings/SettingTab.py +8 -6
  22. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/ConfigCard.py +27 -12
  23. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/config.py +12 -11
  24. {ok_script-1.0.149 → ok_script-1.0.151}/ok_script.egg-info/PKG-INFO +1 -1
  25. {ok_script-1.0.149 → ok_script-1.0.151}/ok_script.egg-info/SOURCES.txt +1 -0
  26. ok_script-1.0.149/ok/gui/resources.py +0 -13847
  27. {ok_script-1.0.149 → ok_script-1.0.151}/MANIFEST.in +0 -0
  28. {ok_script-1.0.149 → ok_script-1.0.151}/README.md +0 -0
  29. {ok_script-1.0.149 → ok_script-1.0.151}/ok/__init__.py +0 -0
  30. {ok_script-1.0.149 → ok_script-1.0.151}/ok/__main__.py +0 -0
  31. {ok_script-1.0.149 → ok_script-1.0.151}/ok/alas/__init__.py +0 -0
  32. {ok_script-1.0.149 → ok_script-1.0.151}/ok/alas/emulator_base.py +0 -0
  33. {ok_script-1.0.149 → ok_script-1.0.151}/ok/alas/emulator_windows.py +0 -0
  34. {ok_script-1.0.149 → ok_script-1.0.151}/ok/alas/platform_windows.py +0 -0
  35. {ok_script-1.0.149 → ok_script-1.0.151}/ok/alas/utils.py +0 -0
  36. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/__init__.py +0 -0
  37. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/__init__.py +0 -0
  38. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/deep.py +0 -0
  39. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/minitouch.py +0 -0
  40. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/nemu_ipc.py +0 -0
  41. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/nemu_utils.py +0 -0
  42. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/pool.py +0 -0
  43. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/timer.py +0 -0
  44. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/adb/util.py +0 -0
  45. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/windows/__init__.py +0 -0
  46. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/windows/d3d11.py +0 -0
  47. {ok_script-1.0.149 → ok_script-1.0.151}/ok/capture/windows/dump.py +0 -0
  48. {ok_script-1.0.149 → ok_script-1.0.151}/ok/cli.py +0 -0
  49. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/DeviceManager.py +0 -0
  50. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/__init__.py +0 -0
  51. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture.py +0 -0
  52. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/__init__.py +0 -0
  53. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/adb.py +0 -0
  54. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/base.py +0 -0
  55. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/bitblt.py +0 -0
  56. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/bitblt_utils.py +0 -0
  57. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/desktop_duplication.py +0 -0
  58. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/image.py +0 -0
  59. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/nemu_ipc.py +0 -0
  60. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/types.py +0 -0
  61. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/capture_methods/update.py +0 -0
  62. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction.py +0 -0
  63. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/__init__.py +0 -0
  64. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/adb.py +0 -0
  65. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/base.py +0 -0
  66. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/browser.py +0 -0
  67. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/do_nothing.py +0 -0
  68. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/foreground_post_message.py +0 -0
  69. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/genshin.py +0 -0
  70. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/keys.py +0 -0
  71. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/post_message.py +0 -0
  72. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/pydirect.py +0 -0
  73. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/pynput.py +0 -0
  74. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/interaction_methods/swipe.py +0 -0
  75. {ok_script-1.0.149 → ok_script-1.0.151}/ok/device/intercation.py +0 -0
  76. {ok_script-1.0.149 → ok_script-1.0.151}/ok/feature/Box.py +0 -0
  77. {ok_script-1.0.149 → ok_script-1.0.151}/ok/feature/Feature.py +0 -0
  78. {ok_script-1.0.149 → ok_script-1.0.151}/ok/feature/FeatureSet.py +0 -0
  79. {ok_script-1.0.149 → ok_script-1.0.151}/ok/feature/__init__.py +0 -0
  80. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/Communicate.py +0 -0
  81. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/MessageWindow.py +0 -0
  82. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/TabTitles.py +0 -0
  83. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/__init__.py +0 -0
  84. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/about/AboutTab.py +0 -0
  85. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/about/HttpTextEdit.py +0 -0
  86. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/about/LinksBar.py +0 -0
  87. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/about/ProjectCard.py +0 -0
  88. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/about/VersionCard.py +0 -0
  89. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/about/__init__.py +0 -0
  90. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/common/OKIcon.py +0 -0
  91. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/common/__init__.py +0 -0
  92. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/common/config.py +0 -0
  93. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/common/style_sheet.py +0 -0
  94. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/debug/DebugTab.py +0 -0
  95. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/debug/OverlayWidget.py +0 -0
  96. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/debug/RunCodeTab.py +0 -0
  97. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/debug/Screenshot.py +0 -0
  98. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/debug/__init__.py +0 -0
  99. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/GettextTranslator.py +0 -0
  100. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/__init__.py +0 -0
  101. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/path.py +0 -0
  102. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/i18n/update.py +0 -0
  103. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/overlay/OverlayWindow.py +0 -0
  104. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/overlay/__init__.py +0 -0
  105. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/__init__.py +0 -0
  106. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/card.qss +0 -0
  107. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/discord.svg +0 -0
  108. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/heart.svg +0 -0
  109. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/message_window.qss +0 -0
  110. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/setting_interface.qss +0 -0
  111. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/status_bar.qss +0 -0
  112. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/stop.svg +0 -0
  113. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/dark/tab.qss +0 -0
  114. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/card.qss +0 -0
  115. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/discord.svg +0 -0
  116. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/heart.svg +0 -0
  117. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/message_window.qss +0 -0
  118. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/setting_interface.qss +0 -0
  119. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/status_bar.qss +0 -0
  120. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/stop.svg +0 -0
  121. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qss/light/tab.qss +0 -0
  122. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/qt.qrc +0 -0
  123. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/settings/GlobalConfigCard.py +0 -0
  124. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/settings/__init__.py +0 -0
  125. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/start/LogWindow.py +0 -0
  126. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/start/SelectCaptureListView.py +0 -0
  127. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/start/SelectInteractionListView.py +0 -0
  128. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/start/StartCard.py +0 -0
  129. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/start/StartTab.py +0 -0
  130. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/start/__init__.py +0 -0
  131. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/ConfigItemFactory.py +0 -0
  132. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/ConfigLabelAndWidget.py +0 -0
  133. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/EditTaskTab.py +0 -0
  134. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndButtons.py +0 -0
  135. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndDoubleSpinBox.py +0 -0
  136. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndDropDown.py +0 -0
  137. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndGlobal.py +0 -0
  138. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndLineEdit.py +0 -0
  139. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndList.py +0 -0
  140. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndMultiSelection.py +0 -0
  141. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndSpinBox.py +0 -0
  142. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndSwitchButton.py +0 -0
  143. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndTextEdit.py +0 -0
  144. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/LabelAndWidget.py +0 -0
  145. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/MarkUpWindow.py +0 -0
  146. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/ModifyListDialog.py +0 -0
  147. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/ModifyListItem.py +0 -0
  148. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/OneTimeTaskTab.py +0 -0
  149. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/RecordScript.py +0 -0
  150. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/ScheduleTaskTab.py +0 -0
  151. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/ScriptPackager.py +0 -0
  152. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/StartButton.py +0 -0
  153. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TaskCard.py +0 -0
  154. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TaskManger.py +0 -0
  155. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TaskOpButton.py +0 -0
  156. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TaskTab.py +0 -0
  157. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TemplateFactory.py +0 -0
  158. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TemplateTab.py +0 -0
  159. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TooltipTableWidget.py +0 -0
  160. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/TriggerTaskTab.py +0 -0
  161. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/tasks/__init__.py +0 -0
  162. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/util/Alert.py +0 -0
  163. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/util/InitWorker.py +0 -0
  164. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/util/__init__.py +0 -0
  165. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/util/app.py +0 -0
  166. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/util/download.py +0 -0
  167. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/util/pip_util.py +0 -0
  168. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/util/pyappify_startup.py +0 -0
  169. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/BaseLoading.py +0 -0
  170. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/BaseWindow.py +0 -0
  171. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/Card.py +0 -0
  172. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/CustomTab.py +0 -0
  173. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/EmptyCard.py +0 -0
  174. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/FlowLayout.py +0 -0
  175. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/FramelessDialog.py +0 -0
  176. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/ImageWidget.py +0 -0
  177. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/ListTableWidgetItem.py +0 -0
  178. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/NumericTableWidgetItem.py +0 -0
  179. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/OkCompactSpinBox.py +0 -0
  180. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/SortingTableWidgetItem.py +0 -0
  181. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/StartLoadingDialog.py +0 -0
  182. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/StatusBar.py +0 -0
  183. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/Tab.py +0 -0
  184. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/TabWidget.py +0 -0
  185. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/UpdateConfigWidgetItem.py +0 -0
  186. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/WidgetWithVLabel.py +0 -0
  187. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/YesNonWidgetItem.py +0 -0
  188. {ok_script-1.0.149 → ok_script-1.0.151}/ok/gui/widget/__init__.py +0 -0
  189. {ok_script-1.0.149 → ok_script-1.0.151}/ok/ocr/__init__.py +0 -0
  190. {ok_script-1.0.149 → ok_script-1.0.151}/ok/ocr/download_paddle_model.py +0 -0
  191. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
  192. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
  193. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
  194. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
  195. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
  196. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
  197. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
  198. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
  199. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
  200. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Media/__init__.py +0 -0
  201. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
  202. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Security/__init__.py +0 -0
  203. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
  204. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/Storage/__init__.py +0 -0
  205. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/Windows/__init__.py +0 -0
  206. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/__init__.py +0 -0
  207. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/delegate.py +0 -0
  208. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/export.py +0 -0
  209. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/idldsl.py +0 -0
  210. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/inspectable.py +0 -0
  211. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/roapi.py +0 -0
  212. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/types.py +0 -0
  213. {ok_script-1.0.149 → ok_script-1.0.151}/ok/rotypes/winstring.py +0 -0
  214. {ok_script-1.0.149 → ok_script-1.0.151}/ok/task/DiagnosisTask.py +0 -0
  215. {ok_script-1.0.149 → ok_script-1.0.151}/ok/task/TaskExecutor.py +0 -0
  216. {ok_script-1.0.149 → ok_script-1.0.151}/ok/task/__init__.py +0 -0
  217. {ok_script-1.0.149 → ok_script-1.0.151}/ok/task/exceptions.py +0 -0
  218. {ok_script-1.0.149 → ok_script-1.0.151}/ok/task/task.py +0 -0
  219. {ok_script-1.0.149 → ok_script-1.0.151}/ok/test/OKTestRunner.py +0 -0
  220. {ok_script-1.0.149 → ok_script-1.0.151}/ok/test/RunTests.py +0 -0
  221. {ok_script-1.0.149 → ok_script-1.0.151}/ok/test/TaskTestCase.py +0 -0
  222. {ok_script-1.0.149 → ok_script-1.0.151}/ok/test/__init__.py +0 -0
  223. {ok_script-1.0.149 → ok_script-1.0.151}/ok/third_party/__init__.py +0 -0
  224. {ok_script-1.0.149 → ok_script-1.0.151}/ok/third_party/paperclip.py +0 -0
  225. {ok_script-1.0.149 → ok_script-1.0.151}/ok/update/__init__.py +0 -0
  226. {ok_script-1.0.149 → ok_script-1.0.151}/ok/update/copy_ok_folder.py +0 -0
  227. {ok_script-1.0.149 → ok_script-1.0.151}/ok/update/inline_ok_requirements.py +0 -0
  228. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/Analytics.py +0 -0
  229. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/GlobalConfig.py +0 -0
  230. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/__init__.py +0 -0
  231. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/blur.py +0 -0
  232. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/clazz.py +0 -0
  233. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/collection.py +0 -0
  234. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/color.py +0 -0
  235. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/file.py +0 -0
  236. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/gpu_driver_settings.py +0 -0
  237. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/handler.py +0 -0
  238. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/i18n.py +0 -0
  239. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/logger.py +0 -0
  240. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/partial_sync_repo.py +0 -0
  241. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/print_hwnd.py +0 -0
  242. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/process.py +0 -0
  243. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/window.py +0 -0
  244. {ok_script-1.0.149 → ok_script-1.0.151}/ok/util/windows_schedule.py +0 -0
  245. {ok_script-1.0.149 → ok_script-1.0.151}/ok_script.egg-info/dependency_links.txt +0 -0
  246. {ok_script-1.0.149 → ok_script-1.0.151}/ok_script.egg-info/entry_points.txt +0 -0
  247. {ok_script-1.0.149 → ok_script-1.0.151}/ok_script.egg-info/not-zip-safe +0 -0
  248. {ok_script-1.0.149 → ok_script-1.0.151}/ok_script.egg-info/requires.txt +0 -0
  249. {ok_script-1.0.149 → ok_script-1.0.151}/ok_script.egg-info/top_level.txt +0 -0
  250. {ok_script-1.0.149 → ok_script-1.0.151}/setup.cfg +0 -0
  251. {ok_script-1.0.149 → ok_script-1.0.151}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ok-script
3
- Version: 1.0.149
3
+ Version: 1.0.151
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
@@ -282,13 +282,24 @@ class BrowserWindowAdapter:
282
282
  def height(self):
283
283
  return self.capture.height
284
284
 
285
- @property
286
- def exe_full_path(self):
287
- return self.capture.exe_full_path
288
-
289
- def get_abs_cords(self, x, y):
290
- try:
291
- rect = win32gui.GetWindowRect(self.capture.hwnd)
285
+ @property
286
+ def exe_full_path(self):
287
+ return self.capture.exe_full_path
288
+
289
+ @property
290
+ def capture_target_signature(self):
291
+ return (
292
+ self.hwnd,
293
+ self.width,
294
+ self.height,
295
+ self.capture.x_offset,
296
+ self.capture.y_offset,
297
+ self.capture.exe_full_path,
298
+ )
299
+
300
+ def get_abs_cords(self, x, y):
301
+ try:
302
+ rect = win32gui.GetWindowRect(self.capture.hwnd)
292
303
  return rect[0] + self.capture.x_offset + x, rect[1] + self.capture.y_offset + y
293
304
  except:
294
305
  return x, y
@@ -190,12 +190,27 @@ class HwndWindow:
190
190
  def get_abs_cords(self, x, y):
191
191
  return self.x + x, self.y + y
192
192
 
193
- def get_top_window_cords(self, x, y):
194
- return x - self.top_offset_x, y - self.top_offset_y
195
-
196
- def do_update_window_size(self):
197
- if self.device_manager and getattr(self.device_manager, 'capture_method', None):
198
- from ok.device.capture_methods.browser import BrowserCaptureMethod
193
+ def get_top_window_cords(self, x, y):
194
+ return x - self.top_offset_x, y - self.top_offset_y
195
+
196
+ @property
197
+ def capture_target_signature(self):
198
+ hwnds = tuple(hwnd_info[0] for hwnd_info in (self.hwnds or []))
199
+ return (
200
+ self.hwnd,
201
+ self.top_hwnd,
202
+ self.width,
203
+ self.height,
204
+ self.real_x_offset,
205
+ self.real_y_offset,
206
+ self.real_width,
207
+ self.real_height,
208
+ hwnds,
209
+ )
210
+
211
+ def do_update_window_size(self):
212
+ if self.device_manager and getattr(self.device_manager, 'capture_method', None):
213
+ from ok.device.capture_methods.browser import BrowserCaptureMethod
199
214
  if isinstance(self.device_manager.capture_method, BrowserCaptureMethod):
200
215
  return
201
216
  try:
@@ -3,18 +3,18 @@ import threading
3
3
  import time
4
4
 
5
5
  import numpy as np
6
- import win32gui
7
-
8
- from ok.util.logger import Logger
9
- from ok.util.window import WINDOWS_BUILD_NUMBER, WGC_NO_BORDER_MIN_BUILD
6
+ import win32gui
7
+
8
+ from ok.util.logger import Logger
9
+ from ok.util.window import WINDOWS_BUILD_NUMBER, WGC_NO_BORDER_MIN_BUILD
10
10
 
11
11
  from ok.device.capture_methods import bitblt
12
12
  from ok.device.capture_methods.base import BaseWindowsCaptureMethod
13
13
  from ok.device.capture_methods.bitblt_utils import PBYTE, composite_hwnds, get_crop_point
14
14
 
15
- logger = Logger.get_logger(__name__)
16
-
17
- class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
15
+ logger = Logger.get_logger(__name__)
16
+
17
+ class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
18
18
  name = "Windows Graphics Capture"
19
19
  description = "fast, most compatible, capped at 60fps"
20
20
 
@@ -34,10 +34,11 @@ class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
34
34
  self.dxdevice = None
35
35
  self.immediatedc = None
36
36
  self.last_frame = None
37
- self.last_size = None
38
- self.last_start_failure_key = None
39
- self.last_start_failure_time = 0
40
- self.start_or_stop()
37
+ self.last_size = None
38
+ self.last_start_failure_key = None
39
+ self.last_start_failure_time = 0
40
+ self.capture_target_signature = None
41
+ self.start_or_stop()
41
42
 
42
43
  def frame_arrived_callback(self, *args):
43
44
  next_frame = None
@@ -133,12 +134,12 @@ class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
133
134
  try:
134
135
  if hwnd and win32gui.IsWindow(hwnd):
135
136
  return hwnd
136
- except Exception:
137
- pass
138
- return 0
139
-
140
- def start_or_stop(self, capture_cursor=False):
141
- with self.lock:
137
+ except Exception:
138
+ pass
139
+ return 0
140
+
141
+ def start_or_stop(self, capture_cursor=False):
142
+ with self.lock:
142
143
  if self.exit_event.is_set():
143
144
  logger.warning('start_or_stop exit_event.is_set() return')
144
145
  self.close()
@@ -149,16 +150,18 @@ class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
149
150
  return False
150
151
 
151
152
  capture_hwnd = self.get_capture_hwnd()
152
- if not capture_hwnd:
153
- logger.warning(f'start_or_stop no valid hwnd: {self.hwnd_window}')
154
- self.close()
155
- return False
156
-
157
- if self.frame_pool is not None and self.capture_hwnd != capture_hwnd:
158
- logger.info(f'start_or_stop hwnd changed from {self.capture_hwnd} to {capture_hwnd}')
159
- self.close()
160
-
161
- failure_key = capture_hwnd
153
+ if not capture_hwnd:
154
+ logger.warning(f'start_or_stop no valid hwnd: {self.hwnd_window}')
155
+ self.close()
156
+ return False
157
+
158
+ target_signature = self.hwnd_window.capture_target_signature
159
+ if self.frame_pool is not None and self.capture_target_signature != target_signature:
160
+ logger.info(
161
+ f'start_or_stop WGC target changed from {self.capture_target_signature} to {target_signature}')
162
+ self.close()
163
+
164
+ failure_key = capture_hwnd
162
165
  if self.frame_pool is None and self.last_start_failure_key == failure_key and time.time() - self.last_start_failure_time < 5:
163
166
  return False
164
167
 
@@ -204,9 +207,10 @@ class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
204
207
  self.session.IsCursorCaptureEnabled = capture_cursor
205
208
  if WINDOWS_BUILD_NUMBER >= WGC_NO_BORDER_MIN_BUILD:
206
209
  self.session.IsBorderRequired = False
207
- self.session.StartCapture()
208
- self.last_start_failure_key = None
209
- return True
210
+ self.session.StartCapture()
211
+ self.last_start_failure_key = None
212
+ self.capture_target_signature = target_signature
213
+ return True
210
214
  except Exception as e:
211
215
  self.last_start_failure_key = failure_key
212
216
  self.last_start_failure_time = time.time()
@@ -251,10 +255,11 @@ class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
251
255
  if self.immediatedc:
252
256
  self.immediatedc.Release()
253
257
  self.immediatedc = None
254
- if self.cputex:
255
- self.cputex.Release()
256
- self.cputex = None
257
- self.capture_hwnd = 0
258
+ if self.cputex:
259
+ self.cputex.Release()
260
+ self.cputex = None
261
+ self.capture_hwnd = 0
262
+ self.capture_target_signature = None
258
263
 
259
264
  def do_get_frame(self):
260
265
 
@@ -298,16 +303,16 @@ class WindowsGraphicsCaptureMethod(BaseWindowsCaptureMethod):
298
303
 
299
304
  frame = composite_hwnds(frame, self.hwnd_window, self.contexts, bitblt.render_full)
300
305
 
301
- if frame is not None:
302
- new_height = frame.shape[0]
303
- new_width = frame.shape[1]
304
- if new_width <= 0 or new_height <= 0:
305
- logger.warning(f"get_frame size <=0 {new_width}x{new_height}")
306
- return None
307
-
308
- return frame
309
-
310
- def reset_framepool(self, size, reset_device=False):
306
+ if frame is not None:
307
+ new_height = frame.shape[0]
308
+ new_width = frame.shape[1]
309
+ if new_width <= 0 or new_height <= 0:
310
+ logger.warning(f"get_frame size <=0 {new_width}x{new_height}")
311
+ return None
312
+
313
+ return frame
314
+
315
+ def reset_framepool(self, size, reset_device=False):
311
316
  logger.info(f'reset_framepool')
312
317
  from ok.rotypes.Windows.Graphics.DirectX import DirectXPixelFormat
313
318
  if self.cputex:
@@ -85,9 +85,10 @@ class MainWindow(FluentWindow):
85
85
 
86
86
  self.addSubInterface(self.start_tab, FluentIcon.PLAY, self.tr('Capture'))
87
87
 
88
- self.first_task_tab = None
89
- self.grouped_task_tabs = []
90
- self.schedule_tab = None
88
+ self.first_task_tab = None
89
+ self.grouped_task_tabs = []
90
+ self.schedule_tab = None
91
+ self.global_config_tabs = []
91
92
 
92
93
  # Prepare custom tabs and separate them by add_after_default_tabs
93
94
  before_custom_tabs = []
@@ -176,13 +177,21 @@ class MainWindow(FluentWindow):
176
177
 
177
178
  # 添加计划任务Tab
178
179
  any_support_schedule = any(task.support_schedule_task for task in visible_onetime_tasks)
179
- if any_support_schedule:
180
- from ok.gui.tasks.ScheduleTaskTab import ScheduleTaskTab
181
- self.schedule_tab = ScheduleTaskTab(config=self.config)
182
- self.addSubInterface(self.schedule_tab, FluentIcon.CALENDAR, self.tr('Schedule'))
183
- from ok.gui.about.AboutTab import AboutTab
184
- self.about_tab = AboutTab(config)
185
- self.addSubInterface(self.about_tab, FluentIcon.QUESTION, self.tr('About'),
180
+ if any_support_schedule:
181
+ from ok.gui.tasks.ScheduleTaskTab import ScheduleTaskTab
182
+ self.schedule_tab = ScheduleTaskTab(config=self.config)
183
+ self.addSubInterface(self.schedule_tab, FluentIcon.CALENDAR, self.tr('Schedule'))
184
+
185
+ for name, config_obj, option in global_config.get_all_visible_configs():
186
+ if getattr(option, 'show_at_tab', False):
187
+ from ok.gui.settings.GlobalConfigTab import GlobalConfigTab
188
+ config_tab = GlobalConfigTab(config_obj, option)
189
+ self.global_config_tabs.append(config_tab)
190
+ self.addSubInterface(config_tab, option.icon or FluentIcon.INFO, self.app.tr(option.name))
191
+
192
+ from ok.gui.about.AboutTab import AboutTab
193
+ self.about_tab = AboutTab(config)
194
+ self.addSubInterface(self.about_tab, FluentIcon.QUESTION, self.tr('About'),
186
195
  position=NavigationItemPosition.BOTTOM)
187
196
 
188
197
  from ok.gui.settings.SettingTab import SettingTab
@@ -307,9 +316,13 @@ class MainWindow(FluentWindow):
307
316
  except Exception as e:
308
317
  logger.debug(f'bring_to_front native activation failed: {e}')
309
318
 
310
- def goto_global_config(self, key):
311
- self.switchTo(self.setting_tab)
312
- self.setting_tab.goto_config(key)
319
+ def goto_global_config(self, key):
320
+ for config_tab in self.global_config_tabs:
321
+ if config_tab.has_key(key):
322
+ self.switchTo(config_tab)
323
+ return
324
+ self.switchTo(self.setting_tab)
325
+ self.setting_tab.goto_config(key)
313
326
 
314
327
  def tray_quit(self):
315
328
  logger.info('main window tray_quit')
@@ -123,10 +123,10 @@ class StartController(QObject):
123
123
  time.sleep(2)
124
124
  return False
125
125
 
126
- def _wait_until_started_window_stable(self):
127
- wait_until = time.monotonic() + self.start_timeout
128
- stable_size = None
129
- stable_since = None
126
+ def _wait_until_started_window_stable(self):
127
+ wait_until = time.monotonic() + self.start_timeout
128
+ stable_size = None
129
+ stable_since = None
130
130
  min_width, min_height = self.STARTED_WINDOW_MIN_SIZE
131
131
 
132
132
  while not self.exit_event.is_set():
@@ -151,12 +151,12 @@ class StartController(QObject):
151
151
  if remaining_time <= 0:
152
152
  communicate.starting_emulator.emit(True, self.tr('Start game timeout!'), 0)
153
153
  return False
154
- time.sleep(self.STARTED_WINDOW_POLL_INTERVAL)
155
- return False
156
-
157
- def start_device(self):
158
- device = og.device_manager.get_preferred_device()
159
- logger.info(f'start_device: {device}')
154
+ time.sleep(self.STARTED_WINDOW_POLL_INTERVAL)
155
+ return False
156
+
157
+ def start_device(self):
158
+ device = og.device_manager.get_preferred_device()
159
+ logger.info(f'start_device: {device}')
160
160
 
161
161
  if device and not device['connected']:
162
162
  if device['device'] == "windows" and not is_admin():
@@ -172,13 +172,13 @@ class StartController(QObject):
172
172
  dx11_config = og.global_config.get_config('Launch with DX11')
173
173
  if dx11_config and dx11_config.get('Launch with DX11'):
174
174
  args = "-dx11 -d3d11 -force-d3d11"
175
- if not execute(path, arguments=args):
176
- communicate.starting_emulator.emit(True, self.tr("Start game failed, please start game first"), 0)
177
- return False
178
- if device['device'] == "windows" and not self._wait_until_started_window_stable():
179
- return False
180
- if not self._wait_until_device_ready():
181
- return False
175
+ if not execute(path, arguments=args):
176
+ communicate.starting_emulator.emit(True, self.tr("Start game failed, please start game first"), 0)
177
+ return False
178
+ if device['device'] == "windows" and not self._wait_until_started_window_stable():
179
+ return False
180
+ if not self._wait_until_device_ready():
181
+ return False
182
182
  else:
183
183
  communicate.starting_emulator.emit(True,
184
184
  self.tr('Game path does not exist, Please open game manually!'), 0)
@@ -2620,4 +2620,11 @@
2620
2620
  <translation>NPU inferring Error, you might need to update the Intel NPU driver!</translation>
2621
2621
  </message>
2622
2622
  </context>
2623
+ <context>
2624
+ <name>GlobalConfigTab</name>
2625
+ <message>
2626
+ <source>Reset Config</source>
2627
+ <translation>Reset Config</translation>
2628
+ </message>
2629
+ </context>
2623
2630
  </TS>
@@ -2618,4 +2618,11 @@
2618
2618
  <translation>¡Error de inferencia de la NPU, es posible que necesite actualizar el controlador de la NPU de Intel!</translation>
2619
2619
  </message>
2620
2620
  </context>
2621
+ <context>
2622
+ <name>GlobalConfigTab</name>
2623
+ <message>
2624
+ <source>Reset Config</source>
2625
+ <translation>Restablecer configuración</translation>
2626
+ </message>
2627
+ </context>
2621
2628
  </TS>
@@ -2610,4 +2610,11 @@
2610
2610
  <translation>NPU推論エラー。Intel NPUドライバーを更新する必要があるかもしれません。</translation>
2611
2611
  </message>
2612
2612
  </context>
2613
+ <context>
2614
+ <name>GlobalConfigTab</name>
2615
+ <message>
2616
+ <source>Reset Config</source>
2617
+ <translation>設定をリセット</translation>
2618
+ </message>
2619
+ </context>
2613
2620
  </TS>
@@ -2619,4 +2619,11 @@
2619
2619
  <translation>NPU 추론 오류, Intel NPU 드라이버를 업데이트해야 할 수 있습니다!</translation>
2620
2620
  </message>
2621
2621
  </context>
2622
+ <context>
2623
+ <name>GlobalConfigTab</name>
2624
+ <message>
2625
+ <source>Reset Config</source>
2626
+ <translation>설정 초기화</translation>
2627
+ </message>
2628
+ </context>
2622
2629
  </TS>
@@ -2616,4 +2616,11 @@
2616
2616
  <translation>NPU推理错误,您可能需要更新Intel NPU驱动!</translation>
2617
2617
  </message>
2618
2618
  </context>
2619
+ <context>
2620
+ <name>GlobalConfigTab</name>
2621
+ <message>
2622
+ <source>Reset Config</source>
2623
+ <translation>重置配置</translation>
2624
+ </message>
2625
+ </context>
2619
2626
  </TS>
@@ -2614,4 +2614,11 @@
2614
2614
  <translation>NPU推理錯誤,您可能需要更新Intel NPU驅動程式!</translation>
2615
2615
  </message>
2616
2616
  </context>
2617
+ <context>
2618
+ <name>GlobalConfigTab</name>
2619
+ <message>
2620
+ <source>Reset Config</source>
2621
+ <translation>重設設定</translation>
2622
+ </message>
2623
+ </context>
2617
2624
  </TS>