wxPython 4.3.2__cp315-cp315-win_amd64.whl

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 (472) hide show
  1. wx/WebView2Loader.dll +0 -0
  2. wx/__init__.py +22 -0
  3. wx/__init__.pyi +10 -0
  4. wx/__version__.py +9 -0
  5. wx/__version__.pyi +15 -0
  6. wx/_adv.cp315-win_amd64.pyd +0 -0
  7. wx/_aui.cp315-win_amd64.pyd +0 -0
  8. wx/_core.cp315-win_amd64.pyd +0 -0
  9. wx/_dataview.cp315-win_amd64.pyd +0 -0
  10. wx/_glcanvas.cp315-win_amd64.pyd +0 -0
  11. wx/_grid.cp315-win_amd64.pyd +0 -0
  12. wx/_html.cp315-win_amd64.pyd +0 -0
  13. wx/_html2.cp315-win_amd64.pyd +0 -0
  14. wx/_media.cp315-win_amd64.pyd +0 -0
  15. wx/_msw.cp315-win_amd64.pyd +0 -0
  16. wx/_propgrid.cp315-win_amd64.pyd +0 -0
  17. wx/_ribbon.cp315-win_amd64.pyd +0 -0
  18. wx/_richtext.cp315-win_amd64.pyd +0 -0
  19. wx/_stc.cp315-win_amd64.pyd +0 -0
  20. wx/_xml.cp315-win_amd64.pyd +0 -0
  21. wx/_xrc.cp315-win_amd64.pyd +0 -0
  22. wx/adv.py +127 -0
  23. wx/adv.pyi +5931 -0
  24. wx/aui.py +70 -0
  25. wx/aui.pyi +4805 -0
  26. wx/core.py +3417 -0
  27. wx/core.pyi +62949 -0
  28. wx/dataview.py +176 -0
  29. wx/dataview.pyi +3828 -0
  30. wx/gizmos.py +18 -0
  31. wx/glcanvas.py +13 -0
  32. wx/glcanvas.pyi +544 -0
  33. wx/grid.py +237 -0
  34. wx/grid.pyi +5678 -0
  35. wx/html.py +38 -0
  36. wx/html.pyi +3283 -0
  37. wx/html2.py +46 -0
  38. wx/html2.pyi +1301 -0
  39. wx/include/wxPython/sip.h +1938 -0
  40. wx/include/wxPython/wxpy_api.h +418 -0
  41. wx/lib/CDate.py +201 -0
  42. wx/lib/ClickableHtmlWindow.py +57 -0
  43. wx/lib/__init__.py +0 -0
  44. wx/lib/activex.py +178 -0
  45. wx/lib/activexwrapper.py +153 -0
  46. wx/lib/agw/__init__.py +128 -0
  47. wx/lib/agw/advancedsplash.py +563 -0
  48. wx/lib/agw/aquabutton.py +1127 -0
  49. wx/lib/agw/artmanager.py +2110 -0
  50. wx/lib/agw/aui/__init__.py +295 -0
  51. wx/lib/agw/aui/aui_constants.py +2616 -0
  52. wx/lib/agw/aui/aui_switcherdialog.py +1232 -0
  53. wx/lib/agw/aui/aui_utilities.py +648 -0
  54. wx/lib/agw/aui/auibar.py +4045 -0
  55. wx/lib/agw/aui/auibook.py +6288 -0
  56. wx/lib/agw/aui/dockart.py +1198 -0
  57. wx/lib/agw/aui/framemanager.py +10485 -0
  58. wx/lib/agw/aui/tabart.py +2749 -0
  59. wx/lib/agw/aui/tabmdi.py +679 -0
  60. wx/lib/agw/balloontip.py +1157 -0
  61. wx/lib/agw/buttonpanel.py +2787 -0
  62. wx/lib/agw/cubecolourdialog.py +3529 -0
  63. wx/lib/agw/customtreectrl.py +9908 -0
  64. wx/lib/agw/data/ShortcutEditor_1.png +0 -0
  65. wx/lib/agw/data/ShortcutEditor_1_thumb.png +0 -0
  66. wx/lib/agw/data/ShortcutEditor_2.png +0 -0
  67. wx/lib/agw/data/ShortcutEditor_2_thumb.png +0 -0
  68. wx/lib/agw/data/ShortcutEditor_3.png +0 -0
  69. wx/lib/agw/data/ShortcutEditor_3_thumb.png +0 -0
  70. wx/lib/agw/data/ShortcutEditor_4.png +0 -0
  71. wx/lib/agw/data/ShortcutEditor_4_thumb.png +0 -0
  72. wx/lib/agw/data/default_help_text.html +105 -0
  73. wx/lib/agw/flatmenu.py +7392 -0
  74. wx/lib/agw/flatnotebook.py +6669 -0
  75. wx/lib/agw/floatspin.py +1820 -0
  76. wx/lib/agw/fmcustomizedlg.py +535 -0
  77. wx/lib/agw/fmresources.py +407 -0
  78. wx/lib/agw/foldpanelbar.py +2282 -0
  79. wx/lib/agw/fourwaysplitter.py +1130 -0
  80. wx/lib/agw/genericmessagedialog.py +1549 -0
  81. wx/lib/agw/gradientbutton.py +731 -0
  82. wx/lib/agw/hyperlink.py +664 -0
  83. wx/lib/agw/hypertreelist.py +5756 -0
  84. wx/lib/agw/infobar.py +885 -0
  85. wx/lib/agw/knobctrl.py +944 -0
  86. wx/lib/agw/labelbook.py +3028 -0
  87. wx/lib/agw/multidirdialog.py +581 -0
  88. wx/lib/agw/peakmeter.py +1028 -0
  89. wx/lib/agw/persist/__init__.py +188 -0
  90. wx/lib/agw/persist/persist_constants.py +283 -0
  91. wx/lib/agw/persist/persist_handlers.py +2614 -0
  92. wx/lib/agw/persist/persistencemanager.py +863 -0
  93. wx/lib/agw/piectrl.py +1082 -0
  94. wx/lib/agw/pybusyinfo.py +399 -0
  95. wx/lib/agw/pycollapsiblepane.py +940 -0
  96. wx/lib/agw/pygauge.py +570 -0
  97. wx/lib/agw/pyprogress.py +916 -0
  98. wx/lib/agw/ribbon/__init__.py +198 -0
  99. wx/lib/agw/ribbon/art.py +219 -0
  100. wx/lib/agw/ribbon/art_aui.py +1283 -0
  101. wx/lib/agw/ribbon/art_default.py +81 -0
  102. wx/lib/agw/ribbon/art_internal.py +248 -0
  103. wx/lib/agw/ribbon/art_msw.py +2735 -0
  104. wx/lib/agw/ribbon/art_osx.py +52 -0
  105. wx/lib/agw/ribbon/bar.py +1259 -0
  106. wx/lib/agw/ribbon/buttonbar.py +1317 -0
  107. wx/lib/agw/ribbon/control.py +205 -0
  108. wx/lib/agw/ribbon/gallery.py +973 -0
  109. wx/lib/agw/ribbon/page.py +946 -0
  110. wx/lib/agw/ribbon/panel.py +1170 -0
  111. wx/lib/agw/ribbon/toolbar.py +1441 -0
  112. wx/lib/agw/rulerctrl.py +1885 -0
  113. wx/lib/agw/scrolledthumbnail.py +2116 -0
  114. wx/lib/agw/shapedbutton.py +1809 -0
  115. wx/lib/agw/shortcuteditor.py +2642 -0
  116. wx/lib/agw/speedmeter.py +1800 -0
  117. wx/lib/agw/supertooltip.py +1443 -0
  118. wx/lib/agw/thumbnailctrl.py +529 -0
  119. wx/lib/agw/toasterbox.py +1327 -0
  120. wx/lib/agw/ultimatelistctrl.py +13671 -0
  121. wx/lib/agw/xlsgrid.py +2111 -0
  122. wx/lib/agw/zoombar.py +1336 -0
  123. wx/lib/analogclock/__init__.py +140 -0
  124. wx/lib/analogclock/analogclock.py +630 -0
  125. wx/lib/analogclock/helpers.py +986 -0
  126. wx/lib/analogclock/lib_setup/__init__.py +0 -0
  127. wx/lib/analogclock/lib_setup/buttontreectrlpanel.py +297 -0
  128. wx/lib/analogclock/lib_setup/fontselect.py +57 -0
  129. wx/lib/analogclock/setup.py +490 -0
  130. wx/lib/analogclock/styles.py +47 -0
  131. wx/lib/anchors.py +103 -0
  132. wx/lib/art/__init__.py +4 -0
  133. wx/lib/art/flagart.py +1583 -0
  134. wx/lib/art/img2pyartprov.py +56 -0
  135. wx/lib/busy.py +152 -0
  136. wx/lib/buttons.py +1140 -0
  137. wx/lib/calendar.py +1596 -0
  138. wx/lib/checkbox.py +837 -0
  139. wx/lib/colourchooser/__init__.py +36 -0
  140. wx/lib/colourchooser/canvas.py +145 -0
  141. wx/lib/colourchooser/intl.py +24 -0
  142. wx/lib/colourchooser/pycolourbox.py +89 -0
  143. wx/lib/colourchooser/pycolourchooser.py +626 -0
  144. wx/lib/colourchooser/pycolourslider.py +98 -0
  145. wx/lib/colourchooser/pypalette.py +208 -0
  146. wx/lib/colourdb.py +740 -0
  147. wx/lib/colourselect.py +385 -0
  148. wx/lib/colourutils.py +118 -0
  149. wx/lib/combotreebox.py +944 -0
  150. wx/lib/delayedresult.py +420 -0
  151. wx/lib/dialogs.py +510 -0
  152. wx/lib/docview.py +3210 -0
  153. wx/lib/dragscroller.py +79 -0
  154. wx/lib/editor/README.txt +77 -0
  155. wx/lib/editor/__init__.py +24 -0
  156. wx/lib/editor/editor.py +974 -0
  157. wx/lib/editor/images.py +15 -0
  158. wx/lib/editor/selection.py +44 -0
  159. wx/lib/embeddedimage.py +76 -0
  160. wx/lib/eventStack.py +136 -0
  161. wx/lib/eventwatcher.py +440 -0
  162. wx/lib/evtmgr.py +521 -0
  163. wx/lib/expando.py +393 -0
  164. wx/lib/fancytext.py +494 -0
  165. wx/lib/filebrowsebutton.py +461 -0
  166. wx/lib/flashwin.py +262 -0
  167. wx/lib/flashwin_old.py +651 -0
  168. wx/lib/floatcanvas/FCEvents.py +53 -0
  169. wx/lib/floatcanvas/FCObjects.py +2910 -0
  170. wx/lib/floatcanvas/FloatCanvas.py +1025 -0
  171. wx/lib/floatcanvas/GUIMode.py +396 -0
  172. wx/lib/floatcanvas/NavCanvas.py +162 -0
  173. wx/lib/floatcanvas/Resources.py +319 -0
  174. wx/lib/floatcanvas/ScreenShot.py +1788 -0
  175. wx/lib/floatcanvas/Utilities/BBox.py +313 -0
  176. wx/lib/floatcanvas/Utilities/Colors.py +137 -0
  177. wx/lib/floatcanvas/Utilities/GUI.py +91 -0
  178. wx/lib/floatcanvas/Utilities/__init__.py +7 -0
  179. wx/lib/floatcanvas/__init__.py +124 -0
  180. wx/lib/foldmenu.py +89 -0
  181. wx/lib/gestures.py +310 -0
  182. wx/lib/gizmos/__init__.py +18 -0
  183. wx/lib/gizmos/dynamicsash.py +1202 -0
  184. wx/lib/gizmos/ledctrl.py +299 -0
  185. wx/lib/gizmos/treelistctrl.py +87 -0
  186. wx/lib/graphics.py +1942 -0
  187. wx/lib/gridmovers.py +516 -0
  188. wx/lib/iewin.py +249 -0
  189. wx/lib/iewin_old.py +894 -0
  190. wx/lib/imagebrowser.py +853 -0
  191. wx/lib/imageutils.py +163 -0
  192. wx/lib/infoframe.py +490 -0
  193. wx/lib/inspection.py +1254 -0
  194. wx/lib/intctrl.py +990 -0
  195. wx/lib/itemspicker.py +256 -0
  196. wx/lib/langlistctrl.py +480 -0
  197. wx/lib/layoutf.py +271 -0
  198. wx/lib/masked/__init__.py +27 -0
  199. wx/lib/masked/combobox.py +839 -0
  200. wx/lib/masked/ctrl.py +108 -0
  201. wx/lib/masked/ipaddrctrl.py +241 -0
  202. wx/lib/masked/maskededit.py +7262 -0
  203. wx/lib/masked/numctrl.py +2000 -0
  204. wx/lib/masked/textctrl.py +465 -0
  205. wx/lib/masked/timectrl.py +1465 -0
  206. wx/lib/mixins/__init__.py +17 -0
  207. wx/lib/mixins/grid.py +47 -0
  208. wx/lib/mixins/gridlabelrenderer.py +277 -0
  209. wx/lib/mixins/imagelist.py +77 -0
  210. wx/lib/mixins/inspection.py +184 -0
  211. wx/lib/mixins/listctrl.py +893 -0
  212. wx/lib/mixins/rubberband.py +403 -0
  213. wx/lib/mixins/treemixin.py +678 -0
  214. wx/lib/msgpanel.py +95 -0
  215. wx/lib/multisash.py +746 -0
  216. wx/lib/myole4ax.idl +178 -0
  217. wx/lib/myole4ax.tlb +0 -0
  218. wx/lib/newevent.py +229 -0
  219. wx/lib/newevent.pyi +25 -0
  220. wx/lib/nvdlg.py +156 -0
  221. wx/lib/ogl/__init__.py +13 -0
  222. wx/lib/ogl/basic.py +3989 -0
  223. wx/lib/ogl/bmpshape.py +86 -0
  224. wx/lib/ogl/canvas.py +467 -0
  225. wx/lib/ogl/composit.py +1576 -0
  226. wx/lib/ogl/diagram.py +230 -0
  227. wx/lib/ogl/divided.py +482 -0
  228. wx/lib/ogl/drawn.py +898 -0
  229. wx/lib/ogl/lines.py +1809 -0
  230. wx/lib/ogl/oglmisc.py +607 -0
  231. wx/lib/pdfviewer/__init__.py +113 -0
  232. wx/lib/pdfviewer/bitmaps/ArrowLeft.png +0 -0
  233. wx/lib/pdfviewer/bitmaps/ArrowRight.png +0 -0
  234. wx/lib/pdfviewer/bitmaps/DirectionH.png +0 -0
  235. wx/lib/pdfviewer/bitmaps/DirectionV.png +0 -0
  236. wx/lib/pdfviewer/bitmaps/PlayerFirst.png +0 -0
  237. wx/lib/pdfviewer/bitmaps/PlayerLast.png +0 -0
  238. wx/lib/pdfviewer/bitmaps/PlayerNext.png +0 -0
  239. wx/lib/pdfviewer/bitmaps/PlayerPrev.png +0 -0
  240. wx/lib/pdfviewer/bitmaps/Printer.png +0 -0
  241. wx/lib/pdfviewer/bitmaps/ReadMe.txt +28 -0
  242. wx/lib/pdfviewer/bitmaps/Save.png +0 -0
  243. wx/lib/pdfviewer/bitmaps/ZoomIn.png +0 -0
  244. wx/lib/pdfviewer/bitmaps/ZoomOut.png +0 -0
  245. wx/lib/pdfviewer/bitmaps/encode_bitmaps.py +37 -0
  246. wx/lib/pdfviewer/buttonpanel.py +285 -0
  247. wx/lib/pdfviewer/images.py +240 -0
  248. wx/lib/pdfviewer/viewer.py +1118 -0
  249. wx/lib/pdfwin.py +295 -0
  250. wx/lib/pdfwin_old.py +789 -0
  251. wx/lib/platebtn.py +789 -0
  252. wx/lib/plot/CHANGELOG.md +150 -0
  253. wx/lib/plot/README.md +16 -0
  254. wx/lib/plot/__init__.py +46 -0
  255. wx/lib/plot/__main__.py +5 -0
  256. wx/lib/plot/examples/__init__.py +0 -0
  257. wx/lib/plot/examples/demo.py +1010 -0
  258. wx/lib/plot/examples/simple_example.py +56 -0
  259. wx/lib/plot/plotcanvas.py +2985 -0
  260. wx/lib/plot/polyobjects.py +1524 -0
  261. wx/lib/plot/utils.py +334 -0
  262. wx/lib/popupctl.py +251 -0
  263. wx/lib/printout.py +1155 -0
  264. wx/lib/progressindicator.py +151 -0
  265. wx/lib/pubsub/LICENSE_BSD_Simple.txt +23 -0
  266. wx/lib/pubsub/README_WxPython.txt +22 -0
  267. wx/lib/pubsub/RELEASE_NOTES.txt +71 -0
  268. wx/lib/pubsub/__init__.py +25 -0
  269. wx/lib/pubsub/core/__init__.py +92 -0
  270. wx/lib/pubsub/core/arg1/__init__.py +16 -0
  271. wx/lib/pubsub/core/arg1/listenerimpl.py +97 -0
  272. wx/lib/pubsub/core/arg1/publisher.py +40 -0
  273. wx/lib/pubsub/core/arg1/publishermixin.py +34 -0
  274. wx/lib/pubsub/core/arg1/topicargspecimpl.py +66 -0
  275. wx/lib/pubsub/core/arg1/topicmgrimpl.py +19 -0
  276. wx/lib/pubsub/core/callables.py +198 -0
  277. wx/lib/pubsub/core/imp2.py +62 -0
  278. wx/lib/pubsub/core/itopicdefnprovider.py +0 -0
  279. wx/lib/pubsub/core/kwargs/__init__.py +16 -0
  280. wx/lib/pubsub/core/kwargs/datamsg.py +27 -0
  281. wx/lib/pubsub/core/kwargs/listenerimpl.py +93 -0
  282. wx/lib/pubsub/core/kwargs/publisher.py +77 -0
  283. wx/lib/pubsub/core/kwargs/publishermixin.py +65 -0
  284. wx/lib/pubsub/core/kwargs/topicargspecimpl.py +216 -0
  285. wx/lib/pubsub/core/kwargs/topicmgrimpl.py +13 -0
  286. wx/lib/pubsub/core/listener.py +40 -0
  287. wx/lib/pubsub/core/listenerbase.py +185 -0
  288. wx/lib/pubsub/core/notificationmgr.py +185 -0
  289. wx/lib/pubsub/core/publisherbase.py +189 -0
  290. wx/lib/pubsub/core/topicargspec.py +77 -0
  291. wx/lib/pubsub/core/topicdefnprovider.py +631 -0
  292. wx/lib/pubsub/core/topicexc.py +72 -0
  293. wx/lib/pubsub/core/topicmgr.py +454 -0
  294. wx/lib/pubsub/core/topicobj.py +472 -0
  295. wx/lib/pubsub/core/topictreetraverser.py +143 -0
  296. wx/lib/pubsub/core/topicutils.py +119 -0
  297. wx/lib/pubsub/core/treeconfig.py +21 -0
  298. wx/lib/pubsub/core/validatedefnargs.py +29 -0
  299. wx/lib/pubsub/core/weakmethod.py +102 -0
  300. wx/lib/pubsub/policies.py +24 -0
  301. wx/lib/pubsub/pub.py +199 -0
  302. wx/lib/pubsub/setuparg1.py +47 -0
  303. wx/lib/pubsub/setupkwargs.py +29 -0
  304. wx/lib/pubsub/utils/__init__.py +27 -0
  305. wx/lib/pubsub/utils/exchandling.py +100 -0
  306. wx/lib/pubsub/utils/misc.py +99 -0
  307. wx/lib/pubsub/utils/notification.py +331 -0
  308. wx/lib/pubsub/utils/topictreeprinter.py +195 -0
  309. wx/lib/pubsub/utils/xmltopicdefnprovider.py +286 -0
  310. wx/lib/pydocview.py +3300 -0
  311. wx/lib/rcsizer.py +227 -0
  312. wx/lib/resizewidget.py +357 -0
  313. wx/lib/scrolledpanel.py +243 -0
  314. wx/lib/sheet.py +350 -0
  315. wx/lib/sized_controls.py +691 -0
  316. wx/lib/softwareupdate.py +355 -0
  317. wx/lib/splitter.py +925 -0
  318. wx/lib/statbmp.py +199 -0
  319. wx/lib/stattext.py +321 -0
  320. wx/lib/throbber.py +424 -0
  321. wx/lib/ticker.py +306 -0
  322. wx/lib/ticker_xrc.py +48 -0
  323. wx/lib/utils.py +89 -0
  324. wx/lib/wordwrap.py +97 -0
  325. wx/lib/wxcairo/__init__.py +139 -0
  326. wx/lib/wxcairo/wx_cairocffi.py +200 -0
  327. wx/lib/wxcairo/wx_pycairo.py +455 -0
  328. wx/lib/wxpTag.py +274 -0
  329. wx/libcairo-2.dll +0 -0
  330. wx/locale/af/LC_MESSAGES/wxstd.mo +0 -0
  331. wx/locale/an/LC_MESSAGES/wxstd.mo +0 -0
  332. wx/locale/ar/LC_MESSAGES/wxstd.mo +0 -0
  333. wx/locale/ca/LC_MESSAGES/wxstd.mo +0 -0
  334. wx/locale/ca@valencia/LC_MESSAGES/wxstd.mo +0 -0
  335. wx/locale/co/LC_MESSAGES/wxstd.mo +0 -0
  336. wx/locale/cs/LC_MESSAGES/wxstd.mo +0 -0
  337. wx/locale/da/LC_MESSAGES/wxstd.mo +0 -0
  338. wx/locale/de/LC_MESSAGES/wxstd.mo +0 -0
  339. wx/locale/el/LC_MESSAGES/wxstd.mo +0 -0
  340. wx/locale/es/LC_MESSAGES/wxstd.mo +0 -0
  341. wx/locale/eu/LC_MESSAGES/wxstd.mo +0 -0
  342. wx/locale/fa_IR/LC_MESSAGES/wxstd.mo +0 -0
  343. wx/locale/fi/LC_MESSAGES/wxstd.mo +0 -0
  344. wx/locale/fr/LC_MESSAGES/wxstd.mo +0 -0
  345. wx/locale/gl_ES/LC_MESSAGES/wxstd.mo +0 -0
  346. wx/locale/hi/LC_MESSAGES/wxstd.mo +0 -0
  347. wx/locale/hr/LC_MESSAGES/wxstd.mo +0 -0
  348. wx/locale/hu/LC_MESSAGES/wxstd.mo +0 -0
  349. wx/locale/id/LC_MESSAGES/wxstd.mo +0 -0
  350. wx/locale/it/LC_MESSAGES/wxstd.mo +0 -0
  351. wx/locale/ja/LC_MESSAGES/wxstd.mo +0 -0
  352. wx/locale/ka/LC_MESSAGES/wxstd.mo +0 -0
  353. wx/locale/ko_KR/LC_MESSAGES/wxstd.mo +0 -0
  354. wx/locale/lt/LC_MESSAGES/wxstd.mo +0 -0
  355. wx/locale/lv/LC_MESSAGES/wxstd.mo +0 -0
  356. wx/locale/ms/LC_MESSAGES/wxstd.mo +0 -0
  357. wx/locale/nb/LC_MESSAGES/wxstd.mo +0 -0
  358. wx/locale/ne/LC_MESSAGES/wxstd.mo +0 -0
  359. wx/locale/nl/LC_MESSAGES/wxstd.mo +0 -0
  360. wx/locale/pl/LC_MESSAGES/wxstd.mo +0 -0
  361. wx/locale/pt/LC_MESSAGES/wxstd.mo +0 -0
  362. wx/locale/pt_BR/LC_MESSAGES/wxstd.mo +0 -0
  363. wx/locale/ro/LC_MESSAGES/wxstd.mo +0 -0
  364. wx/locale/ru/LC_MESSAGES/wxstd.mo +0 -0
  365. wx/locale/sk/LC_MESSAGES/wxstd.mo +0 -0
  366. wx/locale/sl/LC_MESSAGES/wxstd.mo +0 -0
  367. wx/locale/sq/LC_MESSAGES/wxstd.mo +0 -0
  368. wx/locale/sr/LC_MESSAGES/wxstd.mo +0 -0
  369. wx/locale/sv/LC_MESSAGES/wxstd.mo +0 -0
  370. wx/locale/ta/LC_MESSAGES/wxstd.mo +0 -0
  371. wx/locale/tr/LC_MESSAGES/wxstd.mo +0 -0
  372. wx/locale/uk/LC_MESSAGES/wxstd.mo +0 -0
  373. wx/locale/vi/LC_MESSAGES/wxstd.mo +0 -0
  374. wx/locale/zh_CN/LC_MESSAGES/wxstd.mo +0 -0
  375. wx/locale/zh_TW/LC_MESSAGES/wxstd.mo +0 -0
  376. wx/media.py +30 -0
  377. wx/media.pyi +272 -0
  378. wx/msw.py +16 -0
  379. wx/msw.pyi +91 -0
  380. wx/propgrid.py +498 -0
  381. wx/propgrid.pyi +7427 -0
  382. wx/py/CHANGES.txt +796 -0
  383. wx/py/Py.ico +0 -0
  384. wx/py/PyAlaCarte.py +34 -0
  385. wx/py/PyAlaMode.py +34 -0
  386. wx/py/PyAlaModeTest.py +33 -0
  387. wx/py/PyCrust.ico +0 -0
  388. wx/py/PyCrust.py +78 -0
  389. wx/py/PyCrust_16.png +0 -0
  390. wx/py/PyCrust_32.png +0 -0
  391. wx/py/PyFilling.py +35 -0
  392. wx/py/PyShell.py +78 -0
  393. wx/py/PySlices.ico +0 -0
  394. wx/py/PySlices.py +98 -0
  395. wx/py/PySlicesShell.py +94 -0
  396. wx/py/PySlices_16.png +0 -0
  397. wx/py/PySlices_32.png +0 -0
  398. wx/py/PyWrap.py +52 -0
  399. wx/py/README.txt +77 -0
  400. wx/py/__init__.py +20 -0
  401. wx/py/buffer.py +136 -0
  402. wx/py/crust.py +403 -0
  403. wx/py/crustslices.py +403 -0
  404. wx/py/dispatcher.py +259 -0
  405. wx/py/document.py +37 -0
  406. wx/py/editor.py +844 -0
  407. wx/py/editwindow.py +316 -0
  408. wx/py/filling.py +358 -0
  409. wx/py/frame.py +976 -0
  410. wx/py/images.py +212 -0
  411. wx/py/interpreter.py +161 -0
  412. wx/py/introspect.py +402 -0
  413. wx/py/magic.py +98 -0
  414. wx/py/parse.py +134 -0
  415. wx/py/path.py +36 -0
  416. wx/py/pseudo.py +99 -0
  417. wx/py/shell.py +1579 -0
  418. wx/py/sliceshell.py +3805 -0
  419. wx/py/tests/test_interpreter.py +71 -0
  420. wx/py/tests/test_introspect.py +810 -0
  421. wx/py/tests/test_pseudo.py +70 -0
  422. wx/py/tests/test_version.py +36 -0
  423. wx/py/tests/testall.py +22 -0
  424. wx/py/version.py +7 -0
  425. wx/py.typed +0 -0
  426. wx/ribbon.py +48 -0
  427. wx/ribbon.pyi +3099 -0
  428. wx/richtext.py +141 -0
  429. wx/richtext.pyi +13581 -0
  430. wx/siplib.cp315-win_amd64.pyd +0 -0
  431. wx/siplib.pyi +19 -0
  432. wx/stc.py +59 -0
  433. wx/stc.pyi +9918 -0
  434. wx/svg/__init__.py +363 -0
  435. wx/svg/_nanosvg.cp315-win_amd64.pyd +0 -0
  436. wx/tools/__init__.py +18 -0
  437. wx/tools/dbg.py +268 -0
  438. wx/tools/genaxmodule.py +50 -0
  439. wx/tools/helpviewer.py +92 -0
  440. wx/tools/img2img.py +85 -0
  441. wx/tools/img2png.py +54 -0
  442. wx/tools/img2py.py +306 -0
  443. wx/tools/img2xpm.py +54 -0
  444. wx/tools/pywxrc.py +951 -0
  445. wx/tools/wxget.py +254 -0
  446. wx/tools/wxget_docs_demo.py +183 -0
  447. wx/wxbase334u_net_vc140_x64.dll +0 -0
  448. wx/wxbase334u_vc140_x64.dll +0 -0
  449. wx/wxbase334u_xml_vc140_x64.dll +0 -0
  450. wx/wxmsw334u_adv_vc140_x64.dll +0 -0
  451. wx/wxmsw334u_aui_vc140_x64.dll +0 -0
  452. wx/wxmsw334u_core_vc140_x64.dll +0 -0
  453. wx/wxmsw334u_gl_vc140_x64.dll +0 -0
  454. wx/wxmsw334u_html_vc140_x64.dll +0 -0
  455. wx/wxmsw334u_media_vc140_x64.dll +0 -0
  456. wx/wxmsw334u_propgrid_vc140_x64.dll +0 -0
  457. wx/wxmsw334u_qa_vc140_x64.dll +0 -0
  458. wx/wxmsw334u_ribbon_vc140_x64.dll +0 -0
  459. wx/wxmsw334u_richtext_vc140_x64.dll +0 -0
  460. wx/wxmsw334u_stc_vc140_x64.dll +0 -0
  461. wx/wxmsw334u_webview_vc140_x64.dll +0 -0
  462. wx/wxmsw334u_xrc_vc140_x64.dll +0 -0
  463. wx/xml.py +18 -0
  464. wx/xml.pyi +728 -0
  465. wx/xrc.py +68 -0
  466. wx/xrc.pyi +896 -0
  467. wxpython-4.3.2.dist-info/METADATA +71 -0
  468. wxpython-4.3.2.dist-info/RECORD +472 -0
  469. wxpython-4.3.2.dist-info/WHEEL +5 -0
  470. wxpython-4.3.2.dist-info/entry_points.txt +13 -0
  471. wxpython-4.3.2.dist-info/licenses/LICENSE.txt +610 -0
  472. wxpython-4.3.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,648 @@
1
+ # -*- coding: utf-8 -*-
2
+ #----------------------------------------------------------------------------
3
+ # Name: aui_utilities.py
4
+ # Purpose:
5
+ #
6
+ # Author: Andrea Gavana <andrea.gavana@gmail.com>
7
+ #
8
+ # Created:
9
+ # Version:
10
+ # Date: 31 March 2009
11
+ # Licence: wxWindows license
12
+ # Tags: phoenix-port, unittest, documented, py3-port
13
+ #----------------------------------------------------------------------------
14
+ """
15
+ This module contains some common functions used by :mod:`lib.agw.aui` to
16
+ manipulate colours, bitmaps, text, gradient shadings and custom dragging images
17
+ for :class:`~wx.lib.agw.aui.auibook.AuiNotebook` tabs.
18
+ """
19
+
20
+ __author__ = "Andrea Gavana <andrea.gavana@gmail.com>"
21
+ __date__ = "31 March 2009"
22
+
23
+
24
+ import wx
25
+
26
+ from .aui_constants import *
27
+
28
+
29
+ def BlendColour(fg, bg, alpha):
30
+ """
31
+ Blends the two colour component `fg` and `bg` into one colour component, adding
32
+ an optional alpha channel.
33
+
34
+ :param wx.Colour `fg`: the first colour component;
35
+ :param wx.Colour `bg`: the second colour component;
36
+ :param integer `alpha`: an optional transparency value.
37
+ """
38
+
39
+ result = bg + (alpha*(fg - bg))
40
+
41
+ if result < 0.0:
42
+ result = 0.0
43
+ if result > 255:
44
+ result = 255
45
+
46
+ return result
47
+
48
+
49
+ def StepColour(c, ialpha):
50
+ """
51
+ Darken/lighten the input colour `c`.
52
+
53
+ :param wx.Colour `c`: a colour to darken/lighten;
54
+ :param integer `ialpha`: a transparency value.
55
+ """
56
+
57
+ if ialpha == 100:
58
+ return c
59
+
60
+ r, g, b, a = c.Red(), c.Green(), c.Blue(), c.Alpha()
61
+
62
+ # ialpha is 0..200 where 0 is completely black
63
+ # and 200 is completely white and 100 is the same
64
+ # convert that to normal alpha 0.0 - 1.0
65
+ ialpha = min(ialpha, 200)
66
+ ialpha = max(ialpha, 0)
67
+ alpha = (ialpha - 100.0)/100.0
68
+
69
+ if ialpha > 100:
70
+
71
+ # blend with white
72
+ bg = 255
73
+ alpha = 1.0 - alpha # 0 = transparent fg 1 = opaque fg
74
+
75
+ else:
76
+
77
+ # blend with black
78
+ bg = 0
79
+ alpha = 1.0 + alpha # 0 = transparent fg 1 = opaque fg
80
+
81
+ r = BlendColour(r, bg, alpha)
82
+ g = BlendColour(g, bg, alpha)
83
+ b = BlendColour(b, bg, alpha)
84
+
85
+ return wx.Colour(int(r), int(g), int(b), int(a))
86
+
87
+
88
+ def LightContrastColour(c):
89
+ """
90
+ Creates a new, lighter colour based on the input colour `c`.
91
+
92
+ :param wx.Colour `c`: the input colour to analyze.
93
+ """
94
+
95
+ amount = 120
96
+
97
+ # if the colour is especially dark, then
98
+ # make the contrast even lighter
99
+ if c.Red() < 128 and c.Green() < 128 and c.Blue() < 128:
100
+ amount = 160
101
+
102
+ return StepColour(c, amount)
103
+
104
+
105
+ def ChopText(dc, text, max_size):
106
+ """
107
+ Chops the input `text` if its size does not fit in `max_size`, by cutting the
108
+ text and adding ellipsis at the end.
109
+
110
+ :param `dc`: a :class:`wx.DC` device context;
111
+ :param string `text`: the text to chop;
112
+ :param integer `max_size`: the maximum size in which the text should fit.
113
+ """
114
+
115
+ # first check if the text fits with no problems
116
+ x, y, dummy = dc.GetFullMultiLineTextExtent(text)
117
+
118
+ if x <= max_size:
119
+ return text
120
+
121
+ textLen = len(text)
122
+ last_good_length = 0
123
+
124
+ for i in range(textLen, -1, -1):
125
+ s = text[0:i]
126
+ s += "..."
127
+
128
+ x, y = dc.GetTextExtent(s)
129
+ last_good_length = i
130
+
131
+ if x < max_size:
132
+ break
133
+
134
+ ret = text[0:last_good_length] + "..."
135
+ return ret
136
+
137
+
138
+ def BitmapFromBits(bits, w, h, colour):
139
+ """
140
+ A utility function that creates a masked bitmap from raw bits (XBM format).
141
+
142
+ :param string `bits`: the raw bits of the bitmap;
143
+ :param integer `w`: the bitmap width;
144
+ :param integer `h`: the bitmap height;
145
+ :param wx.Colour `colour`: the colour which will replace all white pixels in the
146
+ raw bitmap.
147
+ """
148
+
149
+ img = wx.Bitmap(bits, w, h).ConvertToImage()
150
+ img.Replace(0, 0, 0, 123, 123, 123)
151
+ img.Replace(255, 255, 255, colour.Red(), colour.Green(), colour.Blue())
152
+ img.SetMaskColour(123, 123, 123)
153
+ return wx.Bitmap(img)
154
+
155
+
156
+ def IndentPressedBitmap(rect, button_state):
157
+ """
158
+ Indents the input rectangle `rect` based on the value of `button_state`.
159
+
160
+ :param wx.Rect `rect`: the button bitmap rectangle;
161
+ :param integer `button_state`: the button state.
162
+ """
163
+
164
+ if button_state == AUI_BUTTON_STATE_PRESSED:
165
+ rect.x += 1
166
+ rect.y += 1
167
+
168
+ return rect
169
+
170
+
171
+ def GetBaseColour():
172
+ """
173
+ Returns the face shading colour on push buttons/backgrounds,
174
+ mimicking as closely as possible the platform UI colours.
175
+ """
176
+
177
+ base_colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE)
178
+
179
+ # the base_colour is too pale to use as our base colour,
180
+ # so darken it a bit
181
+ if ((255-base_colour.Red()) +
182
+ (255-base_colour.Green()) +
183
+ (255-base_colour.Blue()) < 60):
184
+
185
+ base_colour = StepColour(base_colour, 92)
186
+
187
+ return base_colour
188
+
189
+
190
+ def MakeDisabledBitmap(bitmap):
191
+ """
192
+ Convert the given image (in place) to a grayed-out version, appropriate for a 'disabled' appearance.
193
+
194
+ :param wx.Bitmap `bitmap`: the bitmap to gray-out.
195
+ """
196
+
197
+ return bitmap.ConvertToDisabled()
198
+
199
+
200
+ def Clip(a, b, c):
201
+ """
202
+ Clips the value in `a` based on the extremes `b` and `c`.
203
+
204
+ :param `a`: the value to analyze;
205
+ :param `b`: a minimum value;
206
+ :param `c`: a maximum value.
207
+ """
208
+
209
+ return ((a < b and [b]) or [(a > c and [c] or [a])[0]])[0]
210
+
211
+
212
+ def LightColour(colour, percent):
213
+ """
214
+ Brighten input `colour` by `percent`.
215
+
216
+ :param wx.Colour `colour`: the colour to be brightened;
217
+ :param integer `percent`: brightening percentage.
218
+ """
219
+
220
+ end_colour = wx.WHITE
221
+
222
+ rd = end_colour.Red() - colour.Red()
223
+ gd = end_colour.Green() - colour.Green()
224
+ bd = end_colour.Blue() - colour.Blue()
225
+
226
+ high = 100
227
+
228
+ # We take the percent way of the colour from colour -. white
229
+ i = percent
230
+ r = colour.Red() + ((i*rd*100)/high)/100
231
+ g = colour.Green() + ((i*gd*100)/high)/100
232
+ b = colour.Blue() + ((i*bd*100)/high)/100
233
+ a = colour.Alpha()
234
+ return wx.Colour(int(r), int(g), int(b), int(a))
235
+
236
+
237
+ def PaneCreateStippleBitmap():
238
+ """
239
+ Creates a stipple bitmap to be used in a :class:`wx.Brush`.
240
+
241
+ This is used to draw sash resize hints.
242
+ """
243
+
244
+ data = [0, 0, 0, 192, 192, 192, 192, 192, 192, 0, 0, 0]
245
+ img = wx.Image(2, 2)
246
+ counter = 0
247
+
248
+ for ii in range(2):
249
+ for jj in range(2):
250
+ img.SetRGB(ii, jj, data[counter], data[counter+1], data[counter+2])
251
+ counter = counter + 3
252
+
253
+ return img.ConvertToBitmap()
254
+
255
+
256
+ def DrawMACCloseButton(colour, backColour=None):
257
+ """
258
+ Draws the wxMAC tab close button using :class:`GraphicsContext`.
259
+
260
+ :param wx.Colour `colour`: the colour to use to draw the circle;
261
+ :param wx.Colour `backColour`: the optional background colour for the circle.
262
+ """
263
+
264
+ bmp = wx.Bitmap.FromRGBA(16, 16)
265
+ dc = wx.MemoryDC()
266
+ dc.SelectObject(bmp)
267
+
268
+ gc = wx.GraphicsContext.Create(dc)
269
+ gc.SetBrush(wx.Brush(colour))
270
+ path = gc.CreatePath()
271
+ path.AddCircle(6.5, 7, 6.5)
272
+ path.CloseSubpath()
273
+ gc.FillPath(path)
274
+
275
+ path = gc.CreatePath()
276
+ if backColour is not None:
277
+ pen = wx.Pen(backColour, 2)
278
+ else:
279
+ pen = wx.Pen("white", 2)
280
+
281
+ pen.SetCap(wx.CAP_BUTT)
282
+ pen.SetJoin(wx.JOIN_BEVEL)
283
+ gc.SetPen(pen)
284
+ path.MoveToPoint(3.5, 4)
285
+ path.AddLineToPoint(9.5, 10)
286
+ path.MoveToPoint(3.5, 10)
287
+ path.AddLineToPoint(9.5, 4)
288
+ path.CloseSubpath()
289
+ gc.DrawPath(path)
290
+
291
+ dc.SelectObject(wx.NullBitmap)
292
+ return bmp
293
+
294
+
295
+ def DarkenBitmap(bmp, caption_colour, new_colour):
296
+ """
297
+ Darkens the input bitmap on wxMAC using the input colour.
298
+
299
+ :param wx.Bitmap `bmp`: the bitmap to be manipulated;
300
+ :param wx.Colour `caption_colour`: the colour of the pane caption;
301
+ :param wx.Colour `new_colour`: the colour used to darken the bitmap.
302
+ """
303
+
304
+ image = bmp.ConvertToImage()
305
+ red = caption_colour.Red()/new_colour.Red()
306
+ green = caption_colour.Green()/new_colour.Green()
307
+ blue = caption_colour.Blue()/new_colour.Blue()
308
+ image = image.AdjustChannels(red, green, blue)
309
+ return image.ConvertToBitmap()
310
+
311
+
312
+ def DrawGradientRectangle(dc, rect, start_colour, end_colour, direction, offset=0, length=0):
313
+ """
314
+ Draws a gradient-shaded rectangle.
315
+
316
+ :param `dc`: a :class:`wx.DC` device context;
317
+ :param wx.Rect `rect`: the rectangle in which to draw the gradient;
318
+ :param wx.Colour `start_colour`: the first colour of the gradient;
319
+ :param wx.Colour `end_colour`: the second colour of the gradient;
320
+ :param integer `direction`: the gradient direction (horizontal or vertical).
321
+ """
322
+
323
+ if direction == AUI_GRADIENT_VERTICAL:
324
+ dc.GradientFillLinear(rect, start_colour, end_colour, wx.SOUTH)
325
+ else:
326
+ dc.GradientFillLinear(rect, start_colour, end_colour, wx.EAST)
327
+
328
+
329
+ def FindFocusDescendant(ancestor):
330
+ """
331
+ Find a window with the focus, that is also a descendant of the given window.
332
+ This is used to determine the window to initially send commands to.
333
+
334
+ :param wx.Window `ancestor`: the window to check for ancestry.
335
+ """
336
+
337
+ # Process events starting with the window with the focus, if any.
338
+ focusWin = wx.Window.FindFocus()
339
+ win = focusWin
340
+
341
+ # Check if this is a descendant of this frame.
342
+ # If not, win will be set to NULL.
343
+ while win:
344
+ if win == ancestor:
345
+ break
346
+ else:
347
+ win = win.GetParent()
348
+
349
+ if win is None:
350
+ focusWin = None
351
+
352
+ return focusWin
353
+
354
+
355
+ def GetLabelSize(dc, label, vertical):
356
+ """
357
+ Returns the :class:`~wx.lib.agw.aui.auibar.AuiToolBar` item label size.
358
+
359
+ :param string `label`: the toolbar tool label;
360
+ :param bool `vertical`: whether the toolbar tool orientation is vertical or not.
361
+ """
362
+
363
+ text_width = text_height = 0
364
+
365
+ # get the text height
366
+ dummy, text_height = dc.GetTextExtent("ABCDHgj")
367
+ # get the text width
368
+ if label.strip():
369
+ text_width, dummy = dc.GetTextExtent(label)
370
+
371
+ if vertical:
372
+ tmp = text_height
373
+ text_height = text_width
374
+ text_width = tmp
375
+
376
+ return wx.Size(text_width, text_height)
377
+
378
+
379
+ #---------------------------------------------------------------------------
380
+ # TabDragImage implementation
381
+ # This class handles the creation of a custom image when dragging
382
+ # AuiNotebook tabs
383
+ #---------------------------------------------------------------------------
384
+
385
+ class TabDragImage(wx.DragImage):
386
+ """
387
+ This class handles the creation of a custom image in case of drag and drop of a notebook tab.
388
+ """
389
+
390
+ def __init__(self, notebook, page, button_state, tabArt):
391
+ """
392
+ Default class constructor.
393
+
394
+ For internal use: do not call it in your code!
395
+
396
+ :param `notebook`: an instance of :class:`~wx.lib.agw.aui.auibook.AuiNotebook`;
397
+ :param `page`: the dragged :class:`~wx.lib.agw.aui.auibook.AuiNotebookPage` page;
398
+ :param integer `button_state`: the state of the close button on the tab;
399
+ :param `tabArt`: an instance of :class:`~wx.lib.agw.aui.tabart.AuiDefaultTabArt` or one of its derivations.
400
+ """
401
+
402
+ self._backgroundColour = wx.Colour("pink")
403
+ self._bitmap = self.CreateBitmap(notebook, page, button_state, tabArt)
404
+ wx.DragImage.__init__(self, self._bitmap)
405
+
406
+
407
+ def CreateBitmap(self, notebook, page, button_state, tabArt):
408
+ """
409
+ Actually creates the drag and drop bitmap.
410
+
411
+ :param `notebook`: an instance of :class:`~wx.lib.agw.aui.auibook.AuiNotebook`;
412
+ :param `page`: the dragged :class:`~wx.lib.agw.aui.auibook.AuiNotebookPage` page;
413
+ :param integer `button_state`: the state of the close button on the tab;
414
+ :param `tabArt`: an instance of :class:`~wx.lib.agw.aui.tabart.AuiDefaultTabArt` or one of its derivations.
415
+ """
416
+
417
+ control = page.control
418
+ memory = wx.MemoryDC(wx.Bitmap(1, 1))
419
+
420
+ tab_size, x_extent = tabArt.GetTabSize(memory, notebook, page.caption, page.bitmap, page.active,
421
+ button_state, control)
422
+
423
+ tab_width, tab_height = tab_size
424
+ rect = wx.Rect(0, 0, tab_width, tab_height)
425
+
426
+ bitmap = wx.Bitmap(tab_width+1, tab_height+1)
427
+ memory.SelectObject(bitmap)
428
+
429
+ if wx.Platform == "__WXMAC__":
430
+ memory.SetBackground(wx.TRANSPARENT_BRUSH)
431
+ else:
432
+ memory.SetBackground(wx.Brush(self._backgroundColour))
433
+
434
+ memory.SetBackgroundMode(wx.TRANSPARENT)
435
+ memory.Clear()
436
+
437
+ paint_control = wx.Platform != "__WXMAC__"
438
+ tabArt.DrawTab(memory, notebook, page, rect, button_state, paint_control=paint_control)
439
+
440
+ memory.SetBrush(wx.TRANSPARENT_BRUSH)
441
+ memory.SetPen(wx.BLACK_PEN)
442
+ memory.DrawRoundedRectangle(0, 0, tab_width+1, tab_height+1, 2)
443
+
444
+ memory.SelectObject(wx.NullBitmap)
445
+
446
+ # Gtk and Windows unfortunately don't do so well with transparent
447
+ # drawing so this hack corrects the image to have a transparent
448
+ # background.
449
+ if wx.Platform != '__WXMAC__':
450
+ timg = bitmap.ConvertToImage()
451
+ if not timg.HasAlpha():
452
+ timg.InitAlpha()
453
+ ## for y in range(timg.GetHeight()):
454
+ ## for x in range(timg.GetWidth()):
455
+ ## pix = wx.Colour(timg.GetRed(x, y),
456
+ ## timg.GetGreen(x, y),
457
+ ## timg.GetBlue(x, y))
458
+ ## if pix == self._backgroundColour:
459
+ ## timg.SetAlpha(x, y, 0)
460
+ # local opt list comprehension
461
+ wxColour = wx.Colour
462
+ GetRed = timg.GetRed
463
+ GetGreen = timg.GetGreen
464
+ GetBlue = timg.GetBlue
465
+ SetAlpha = timg.SetAlpha
466
+ _backgroundColour = self._backgroundColour
467
+ [SetAlpha(x, y, 0)
468
+ for x in range(timg.GetWidth())
469
+ for y in range(timg.GetHeight())
470
+ if wxColour(GetRed(x, y), GetGreen(x, y), GetBlue(x, y)) == _backgroundColour]
471
+ bitmap = timg.ConvertToBitmap()
472
+ return bitmap
473
+
474
+
475
+ def GetDockingImage(direction, useAero, center):
476
+ """
477
+ Returns the correct name of the docking bitmap depending on the input parameters.
478
+
479
+ :param bool `useAero`: whether :class:`~wx.lib.agw.aui.framemanager.AuiManager` is using
480
+ Aero-style or Whidbey-style docking images or not;
481
+ :param bool `center`: whether we are looking for the center diamond-shaped bitmap or not.
482
+ """
483
+
484
+ suffix = (center and [""] or ["_single"])[0]
485
+ prefix = ""
486
+ if useAero == 2:
487
+ # Whidbey docking guides
488
+ prefix = "whidbey_"
489
+ elif useAero == 1:
490
+ # Aero docking style
491
+ prefix = "aero_"
492
+
493
+ if direction == wx.TOP:
494
+ bmp_unfocus = eval("%sup%s"%(prefix, suffix)).GetBitmap()
495
+ bmp_focus = eval("%sup_focus%s"%(prefix, suffix)).GetBitmap()
496
+ elif direction == wx.BOTTOM:
497
+ bmp_unfocus = eval("%sdown%s"%(prefix, suffix)).GetBitmap()
498
+ bmp_focus = eval("%sdown_focus%s"%(prefix, suffix)).GetBitmap()
499
+ elif direction == wx.LEFT:
500
+ bmp_unfocus = eval("%sleft%s"%(prefix, suffix)).GetBitmap()
501
+ bmp_focus = eval("%sleft_focus%s"%(prefix, suffix)).GetBitmap()
502
+ elif direction == wx.RIGHT:
503
+ bmp_unfocus = eval("%sright%s"%(prefix, suffix)).GetBitmap()
504
+ bmp_focus = eval("%sright_focus%s"%(prefix, suffix)).GetBitmap()
505
+ else:
506
+ bmp_unfocus = eval("%stab%s"%(prefix, suffix)).GetBitmap()
507
+ bmp_focus = eval("%stab_focus%s"%(prefix, suffix)).GetBitmap()
508
+
509
+ return bmp_unfocus, bmp_focus
510
+
511
+
512
+ def TakeScreenShot(rect):
513
+ """
514
+ Takes a screenshot of the screen at given position and size (`rect`).
515
+
516
+ :param wx.Rect `rect`: the screen rectangle for which we want to take a screenshot.
517
+ """
518
+
519
+ # Create a DC for the whole screen area
520
+ dcScreen = wx.ScreenDC()
521
+
522
+ # Create a Bitmap that will later on hold the screenshot image
523
+ # Note that the Bitmap must have a size big enough to hold the screenshot
524
+ # -1 means using the current default colour depth
525
+ bmp = wx.Bitmap(rect.width, rect.height)
526
+
527
+ # Create a memory DC that will be used for actually taking the screenshot
528
+ memDC = wx.MemoryDC()
529
+
530
+ # Tell the memory DC to use our Bitmap
531
+ # all drawing action on the memory DC will go to the Bitmap now
532
+ memDC.SelectObject(bmp)
533
+
534
+ # Blit (in this case copy) the actual screen on the memory DC
535
+ # and thus the Bitmap
536
+ memDC.Blit( 0, # Copy to this X coordinate
537
+ 0, # Copy to this Y coordinate
538
+ rect.width, # Copy this width
539
+ rect.height, # Copy this height
540
+ dcScreen, # From where do we copy?
541
+ rect.x, # What's the X offset in the original DC?
542
+ rect.y # What's the Y offset in the original DC?
543
+ )
544
+
545
+ # Select the Bitmap out of the memory DC by selecting a new
546
+ # uninitialized Bitmap
547
+ memDC.SelectObject(wx.NullBitmap)
548
+
549
+ return bmp
550
+
551
+
552
+ def RescaleScreenShot(bmp, thumbnail_size=200):
553
+ """
554
+ Rescales a bitmap to be `thumbnail_size` pixels wide (or tall) at maximum.
555
+
556
+ :param wx.Bitmap `bmp`: the bitmap to rescale;
557
+ :param integer `thumbnail_size`: the maximum size of every page thumbnail.
558
+ """
559
+
560
+ bmpW, bmpH = bmp.GetWidth(), bmp.GetHeight()
561
+ img = bmp.ConvertToImage()
562
+
563
+ newW, newH = bmpW, bmpH
564
+
565
+ if bmpW > bmpH:
566
+ if bmpW > thumbnail_size:
567
+ ratio = bmpW/thumbnail_size
568
+ newW, newH = int(bmpW//ratio), int(bmpH//ratio)
569
+ img.Rescale(newW, newH, wx.IMAGE_QUALITY_HIGH)
570
+ else:
571
+ if bmpH > thumbnail_size:
572
+ ratio = bmpH/thumbnail_size
573
+ newW, newH = int(bmpW//ratio), int(bmpH//ratio)
574
+ img.Rescale(newW, newH, wx.IMAGE_QUALITY_HIGH)
575
+
576
+ newBmp = img.ConvertToBitmap()
577
+ otherBmp = wx.Bitmap(newW+5, newH+5)
578
+
579
+ memDC = wx.MemoryDC()
580
+ memDC.SelectObject(otherBmp)
581
+ memDC.SetBackground(wx.WHITE_BRUSH)
582
+ memDC.Clear()
583
+
584
+ memDC.SetPen(wx.TRANSPARENT_PEN)
585
+
586
+ pos = 0
587
+ for i in range(5, 0, -1):
588
+ brush = wx.Brush(wx.Colour(50*i, 50*i, 50*i))
589
+ memDC.SetBrush(brush)
590
+ memDC.DrawRoundedRectangle(0, 0, newW+5-pos, newH+5-pos, 2)
591
+ pos += 1
592
+
593
+ memDC.DrawBitmap(newBmp, 0, 0, True)
594
+
595
+ # Select the Bitmap out of the memory DC by selecting a new
596
+ # uninitialized Bitmap
597
+ memDC.SelectObject(wx.NullBitmap)
598
+
599
+ return otherBmp
600
+
601
+
602
+ def GetSlidingPoints(rect, size, direction):
603
+ """
604
+ Returns the point at which the sliding in and out of a minimized pane begins.
605
+
606
+ :param wx.Rect `rect`: the :class:`~wx.lib.agw.aui.auibar.AuiToolBar` tool screen rectangle;
607
+ :param wx.Size `size`: the pane window size;
608
+ :param integer `direction`: the pane docking direction.
609
+ """
610
+
611
+ if direction == AUI_DOCK_LEFT:
612
+ startX, startY = rect.x + rect.width + 2, rect.y
613
+ elif direction == AUI_DOCK_TOP:
614
+ startX, startY = rect.x, rect.y + rect.height + 2
615
+ elif direction == AUI_DOCK_RIGHT:
616
+ startX, startY = rect.x - size.x - 2, rect.y
617
+ elif direction == AUI_DOCK_BOTTOM:
618
+ startX, startY = rect.x, rect.y - size.y - 2
619
+ else:
620
+ raise Exception("How did we get here?")
621
+
622
+ caption_height = wx.SystemSettings.GetMetric(wx.SYS_CAPTION_Y)
623
+ frame_border_x = wx.SystemSettings.GetMetric(wx.SYS_FRAMESIZE_X)
624
+ frame_border_y = wx.SystemSettings.GetMetric(wx.SYS_FRAMESIZE_Y)
625
+
626
+ stopX = size.x + caption_height + frame_border_x
627
+ stopY = size.x + frame_border_y
628
+
629
+ return startX, startY, stopX, stopY
630
+
631
+
632
+ def CopyAttributes(newArt, oldArt):
633
+ """
634
+ Copies pens, brushes, colours and fonts from the old tab art to the new one.
635
+
636
+ :param `newArt`: the new instance of :class:`~wx.lib.agw.aui.tabart.AuiDefaultTabArt`;
637
+ :param `oldArt`: the old instance of :class:`~wx.lib.agw.aui.tabart.AuiDefaultTabArt`.
638
+ """
639
+
640
+ attrs = dir(oldArt)
641
+
642
+ for attr in attrs:
643
+ if attr.startswith("_") and (attr.endswith("_colour") or attr.endswith("_font") or \
644
+ attr.endswith("_font") or attr.endswith("_brush") or \
645
+ attr.endswith("Pen") or attr.endswith("_pen")):
646
+ setattr(newArt, attr, getattr(oldArt, attr))
647
+
648
+ return newArt