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,17 @@
1
+ #----------------------------------------------------------------------
2
+ # Name: wx.lib.mixins
3
+ # Purpose: A package for helpful wxPython mix-in classes
4
+ #
5
+ # Author: Robin Dunn
6
+ #
7
+ # Created: 15-May-2001
8
+ # Copyright: (c) 2001-2020 by Total Control Software
9
+ # Licence: wxWindows license
10
+ #----------------------------------------------------------------------
11
+ # 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net)
12
+ #
13
+ # o 2.5 compatibility update.
14
+ #
15
+
16
+
17
+
wx/lib/mixins/grid.py ADDED
@@ -0,0 +1,47 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: wx.lib.mixins.grid
3
+ # Purpose: Helpful mix-in classes for wx.Grid
4
+ #
5
+ # Author: Robin Dunn
6
+ #
7
+ # Created: 5-June-2001
8
+ # Copyright: (c) 2001-2020 by Total Control Software
9
+ # Licence: wxWindows license
10
+ #----------------------------------------------------------------------------
11
+ # 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net)
12
+ #
13
+ # o 2.5 compatibility update.
14
+ # o Untested
15
+ #
16
+ # 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
17
+ #
18
+ # o wxGridAutoEditMixin -> GridAutoEditMixin
19
+ #
20
+
21
+ import wx
22
+ import wx.grid
23
+
24
+ #----------------------------------------------------------------------------
25
+
26
+
27
+ class GridAutoEditMixin:
28
+ """A mix-in class that automatically enables the grid edit control when
29
+ a cell is selected.
30
+
31
+ If your class hooks EVT_GRID_SELECT_CELL be sure to call event.Skip so
32
+ this handler will be called too.
33
+ """
34
+
35
+ def __init__(self):
36
+ self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.__OnSelectCell)
37
+
38
+
39
+ def __DoEnableEdit(self):
40
+ if self.CanEnableCellControl():
41
+ self.EnableCellEditControl()
42
+
43
+
44
+ def __OnSelectCell(self, evt):
45
+ wx.CallAfter(self.__DoEnableEdit)
46
+ evt.Skip()
47
+
@@ -0,0 +1,277 @@
1
+ #----------------------------------------------------------------------
2
+ # Name: wx.lib.mixins.gridlabelrenderer
3
+ # Purpose: A Grid mixin that enables renderers to be plugged in
4
+ # for drawing the row and col labels, similar to how the
5
+ # cell renderers work.
6
+ #
7
+ # Author: Robin Dunn
8
+ #
9
+ # Created: 20-Mar-2009
10
+ # Copyright: (c) 2009-2020 by Total Control Software
11
+ # Licence: wxWindows license
12
+ #----------------------------------------------------------------------
13
+
14
+ """
15
+ A Grid mixin that enables renderers to be plugged in for drawing the
16
+ row and col labels, similar to how the cell renderers work.
17
+ """
18
+
19
+ import wx
20
+
21
+
22
+ class GridWithLabelRenderersMixin(object):
23
+ """
24
+ This class can be mixed with wx.grid.Grid to add the ability to plugin
25
+ label renderer objects for the row, column and corner labels, similar to
26
+ how the cell renderers work in the main Grid class.
27
+ """
28
+ def __init__(self):
29
+ # Cache the label windows instead of relying on evt.GetEventObject() in the paint
30
+ # handlers below. Each handler is bound to exactly one of these windows, so the
31
+ # window is already known and there is no need to ask SIP to resolve the event's
32
+ # wxObject* back to a Python wrapper. That resolution is a lookup by C++ pointer
33
+ # address in SIP's object map, and the map can hand back a stale wrapper of the
34
+ # wrong Python type if some other, unrelated wxObject was deleted without SIP
35
+ # being told and a new C++ object happens to be allocated at the same freed
36
+ # address. Confirmed at least one concrete source of such stale wrappers: unlike
37
+ # wx.Frame, wx.MenuBar and wx.Menu, a wx.MenuItem's SIP wrapper is not marked
38
+ # deleted when the item is destroyed as part of its owning wxMenuBar's teardown
39
+ # (~wxMenuBase's wxClearList()) -- touching the stale wrapper afterwards
40
+ # dereferences freed memory and crashes the process outright. See
41
+ # https://discuss.wxpython.org/t/typeerror-when-using-gridwithlabelrenderersmixin/35137
42
+ self._rowLabelWindow = self.GetGridRowLabelWindow()
43
+ self._colLabelWindow = self.GetGridColLabelWindow()
44
+ self._cornerLabelWindow = self.GetGridCornerLabelWindow()
45
+ self._rowLabelWindow.Bind(wx.EVT_PAINT, self._onPaintRowLabels)
46
+ self._colLabelWindow.Bind(wx.EVT_PAINT, self._onPaintColLabels)
47
+ self._cornerLabelWindow.Bind(wx.EVT_PAINT, self._onPaintCornerLabel)
48
+
49
+ self._rowRenderers = dict()
50
+ self._colRenderers = dict()
51
+ self._cornderRenderer = None
52
+ self._defRowRenderer = None
53
+ self._defColRenderer = None
54
+
55
+
56
+ def SetRowLabelRenderer(self, row, renderer):
57
+ """
58
+ Register a renderer to be used for drawing the label for the
59
+ given row.
60
+ """
61
+ if renderer is None:
62
+ if row in self._rowRenderers:
63
+ del self._rowRenderers[row]
64
+ else:
65
+ self._rowRenderers[row] = renderer
66
+
67
+
68
+ def SetDefaultRowLabelRenderer(self, renderer):
69
+ """
70
+ Set the row label renderer that should be used for any row
71
+ that does not have an explicitly set renderer. Defaults to
72
+ an instance of `GridDefaultRowLabelRenderer`.
73
+ """
74
+ self._defRowRenderer = renderer
75
+
76
+
77
+ def SetColLabelRenderer(self, col, renderer):
78
+ """
79
+ Register a renderer to be used for drawing the label for the
80
+ given column.
81
+ """
82
+ if renderer is None:
83
+ if col in self._colRenderers:
84
+ del self._colRenderers[col]
85
+ else:
86
+ self._colRenderers[col] = renderer
87
+
88
+
89
+ def SetDefaultColLabelRenderer(self, renderer):
90
+ """
91
+ Set the column label renderer that should be used for any
92
+ column that does not have an explicitly set renderer.
93
+ Defaults to an instance of `GridDefaultColLabelRenderer`.
94
+ """
95
+ self._defColRenderer = renderer
96
+
97
+
98
+
99
+ def SetCornerLabelRenderer(self, renderer):
100
+ """
101
+ Sets the renderer that should be used for drawing the area in
102
+ the upper left corner of the Grid, between the row labels and
103
+ the column labels. Defaults to an instance of
104
+ `GridDefaultCornerLabelRenderer`
105
+ """
106
+ self._cornderRenderer = renderer
107
+
108
+
109
+ #----------------------------------------------------------------
110
+
111
+ def _onPaintRowLabels(self, evt):
112
+ # Deliberately using the cached window instead of evt.GetEventObject(); see the
113
+ # comment in __init__.
114
+ window = self._rowLabelWindow
115
+ dc = wx.PaintDC(window)
116
+ gridWindow = self.GetGridWindow()
117
+
118
+ rows = self.CalcRowLabelsExposed(window.GetUpdateRegion(), gridWindow)
119
+ if rows == [-1]:
120
+ return
121
+
122
+ offset = self.GetGridWindowOffset(gridWindow)
123
+ x, y = self.CalcUnscrolledPosition(offset)
124
+ pt = dc.GetDeviceOrigin()
125
+ dc.SetDeviceOrigin(pt.x, pt.y-y)
126
+ for row in rows:
127
+ top, bottom = self._getRowTopBottom(row)
128
+ rect = wx.Rect()
129
+ rect.top = top
130
+ rect.bottom = bottom
131
+ rect.x = 0
132
+ rect.width = self.GetRowLabelSize()
133
+
134
+ renderer = self._rowRenderers.get(row, None) or \
135
+ self._defRowRenderer or GridDefaultRowLabelRenderer()
136
+ renderer.Draw(self, dc, rect, row)
137
+
138
+
139
+ def _onPaintColLabels(self, evt):
140
+ # Deliberately using the cached window instead of evt.GetEventObject(); see the
141
+ # comment in __init__.
142
+ window = self._colLabelWindow
143
+ dc = wx.PaintDC(window)
144
+ gridWindow = self.GetGridWindow()
145
+
146
+ cols = self.CalcColLabelsExposed(window.GetUpdateRegion(), gridWindow)
147
+ if cols == [-1]:
148
+ return
149
+
150
+ offset = self.GetGridWindowOffset(gridWindow)
151
+ x, y = self.CalcUnscrolledPosition(offset)
152
+ pt = dc.GetDeviceOrigin()
153
+ dc.SetDeviceOrigin(pt.x-x, pt.y)
154
+ for col in cols:
155
+ left, right = self._getColLeftRight(col)
156
+ rect = wx.Rect()
157
+ rect.left = left
158
+ rect.right = right
159
+ rect.y = 0
160
+ rect.height = self.GetColLabelSize()
161
+
162
+ renderer = self._colRenderers.get(col, None) or \
163
+ self._defColRenderer or GridDefaultColLabelRenderer()
164
+ renderer.Draw(self, dc, rect, col)
165
+
166
+
167
+ def _onPaintCornerLabel(self, evt):
168
+ # Deliberately using the cached window instead of evt.GetEventObject(); see the
169
+ # comment in __init__.
170
+ window = self._cornerLabelWindow
171
+ dc = wx.PaintDC(window)
172
+ w, h = window.GetSize()
173
+ rect = wx.Rect(0, 0, w, h)
174
+
175
+ renderer = self._cornderRenderer or GridDefaultCornerLabelRenderer()
176
+ renderer.Draw(self, dc, rect, -1)
177
+
178
+
179
+
180
+ # NOTE: These helpers or something like them should probably be publicly
181
+ # available in the C++ wxGrid class, but they are currently protected so
182
+ # for now we will have to calculate them ourselves.
183
+ def _getColLeftRight(self, col):
184
+ c = 0
185
+ left = -1
186
+ while c < col:
187
+ left += self.GetColSize(c)
188
+ c += 1
189
+ right = left + self.GetColSize(col)
190
+ return left, right
191
+
192
+ def _getRowTopBottom(self, row):
193
+ r = 0
194
+ top = -1
195
+ while r < row:
196
+ top += self.GetRowSize(r)
197
+ r += 1
198
+ bottom = top + self.GetRowSize(row)
199
+ return top, bottom
200
+
201
+
202
+
203
+
204
+ class GridLabelRenderer(object):
205
+ """
206
+ Base class for row, col or corner label renderers.
207
+ """
208
+
209
+ def Draw(self, grid, dc, rect, row_or_col):
210
+ """
211
+ Override this method in derived classes to do the actual
212
+ drawing of the label.
213
+ """
214
+ raise NotImplementedError
215
+
216
+
217
+ # These two can be used to duplicate the default wxGrid label drawing
218
+ def DrawBorder(self, grid, dc, rect):
219
+ """
220
+ Draw a standard border around the label, to give a simple 3D
221
+ effect like the stock wx.grid.Grid labels do.
222
+ """
223
+ top = rect.top
224
+ bottom = rect.bottom
225
+ left = rect.left
226
+ right = rect.right
227
+ dc.SetPen(wx.Pen(wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DSHADOW)))
228
+ dc.DrawLine(right, top, right, bottom)
229
+ dc.DrawLine(left, top, left, bottom)
230
+ dc.DrawLine(left, bottom, right, bottom)
231
+ dc.SetPen(wx.WHITE_PEN)
232
+ if top == 0:
233
+ dc.DrawLine(left + 1, top, left + 1, bottom)
234
+ dc.DrawLine(left + 1, top, right, top)
235
+ else:
236
+ dc.DrawLine(left + 1, top + 1, left + 1, bottom)
237
+ dc.DrawLine(left + 1, top + 1, right - 1, top + 1)
238
+
239
+
240
+ def DrawText(self, grid, dc, rect, text, hAlign, vAlign):
241
+ """
242
+ Draw the label's text in the rectangle, using the alignment
243
+ flags, and the grid's specified label font and color.
244
+ """
245
+ dc.SetBackgroundMode(wx.TRANSPARENT)
246
+ dc.SetTextForeground(grid.GetLabelTextColour())
247
+ dc.SetFont(grid.GetLabelFont())
248
+ rect = wx.Rect(*rect)
249
+ rect.Deflate(2,2)
250
+ grid.DrawTextRectangle(dc, text, rect, hAlign, vAlign)
251
+
252
+
253
+
254
+ # These classes draw approximately the same things that the built-in
255
+ # label windows do in C++, but are adapted to fit into this label
256
+ # renderer scheme.
257
+
258
+ class GridDefaultRowLabelRenderer(GridLabelRenderer):
259
+ def Draw(self, grid, dc, rect, row):
260
+ hAlign, vAlign = grid.GetRowLabelAlignment()
261
+ text = grid.GetRowLabelValue(row)
262
+ self.DrawBorder(grid, dc, rect)
263
+ self.DrawText(grid, dc, rect, text, hAlign, vAlign)
264
+
265
+ class GridDefaultColLabelRenderer(GridLabelRenderer):
266
+ def Draw(self, grid, dc, rect, col):
267
+ hAlign, vAlign = grid.GetColLabelAlignment()
268
+ text = grid.GetColLabelValue(col)
269
+ self.DrawBorder(grid, dc, rect)
270
+ self.DrawText(grid, dc, rect, text, hAlign, vAlign)
271
+
272
+ class GridDefaultCornerLabelRenderer(GridLabelRenderer):
273
+ def Draw(self, grid, dc, rect, row_or_col):
274
+ self.DrawBorder(grid, dc, rect)
275
+
276
+
277
+ #---------------------------------------------------------------------------
@@ -0,0 +1,77 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: wx.lib.mixins.imagelist
3
+ # Purpose: Helpful mix-in classes for using a wxImageList
4
+ #
5
+ # Author: Robin Dunn
6
+ #
7
+ # Created: 15-May-2001
8
+ # Copyright: (c) 2001-2020 by Total Control Software
9
+ # Licence: wxWindows license
10
+ #----------------------------------------------------------------------------
11
+ # 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net)
12
+ #
13
+ # o 2.5 compatibility update.
14
+ # o Untested.
15
+ #
16
+
17
+ import wx
18
+
19
+ #----------------------------------------------------------------------------
20
+
21
+ class MagicImageList:
22
+ '''
23
+ Mix-in to provide "magic" growing image lists
24
+ By Mike Fletcher
25
+ '''
26
+
27
+ ### LAZYTREE and LISTCONTROL Methods
28
+ DEFAULTICONSIZE = 16
29
+
30
+ def SetupIcons(self, images=(), size=None):
31
+ self.__size = size or self.DEFAULTICONSIZE
32
+ self.__magicImageList = wx.ImageList (self.__size,self.__size)
33
+ self.__magicImageListMapping = {}
34
+ self.SetImageList (
35
+ self.__magicImageList, {
36
+ 16:wx.IMAGE_LIST_SMALL,
37
+ 32:wx.IMAGE_LIST_NORMAL,
38
+ }[self.__size]
39
+ )
40
+ for image in images:
41
+ self.AddIcon (image)
42
+
43
+ def GetIcons (self, node):
44
+ '''Get icon indexes for a given node, or None if no associated icon'''
45
+ icon = self.GetIcon( node )
46
+ if icon:
47
+ index = self.AddIcon (icon)
48
+ return index, index
49
+ return None
50
+
51
+
52
+ ### Local methods...
53
+ def AddIcon(self, icon, mask = wx.NullBitmap):
54
+ '''Add an icon to the image list, or get the index if already there'''
55
+ index = self.__magicImageListMapping.get (id (icon))
56
+ if index is None:
57
+ if isinstance( icon, wxIconPtr ):
58
+ index = self.__magicImageList.AddIcon( icon )
59
+ elif isinstance( icon, wx.BitmapPtr ):
60
+ if isinstance( mask, wx.Colour ):
61
+ index = self.__magicImageList.AddWithColourMask( icon, mask )
62
+ else:
63
+ index = self.__magicImageList.Add( icon, mask )
64
+ else:
65
+ raise ValueError("Unexpected icon object %s, "
66
+ "expected wx.Icon or wx.Bitmap" % (icon))
67
+ self.__magicImageListMapping [id (icon)] = index
68
+ return index
69
+
70
+ ### Customisation point...
71
+ def GetIcon( self, node ):
72
+ '''Get the actual icon object for a node'''
73
+ if hasattr (node,"DIAGRAMICON"):
74
+ return node.DIAGRAMICON
75
+
76
+
77
+
@@ -0,0 +1,184 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: wx.lib.mixins.inspection
3
+ # Purpose: A mix-in class that can add PyCrust-based inspection of the
4
+ # app's widgets and sizers.
5
+ #
6
+ # Author: Robin Dunn
7
+ #
8
+ # Created: 21-Nov-2006
9
+ # Copyright: (c) 2006-2020 by Total Control Software
10
+ # Licence: wxWindows license
11
+ #
12
+ # Tags: phoenix-port, documented, unittest
13
+ #----------------------------------------------------------------------------
14
+ #
15
+ # NOTE: This class was originally based on ideas sent to the
16
+ # wxPython-users mail list by Dan Eloff.
17
+ """
18
+ This module provides the :class:`~lib.mixins.inspection.InspectableApp` and
19
+ :class:`~lib.mixins.inspection.InspectionMixin` which make it easy to use the Widget
20
+ Inspection Tool (WIT).
21
+
22
+
23
+ Description
24
+ ===========
25
+
26
+ The Widget Inspection Tool (WIT) is very useful debugging tool provided with
27
+ wxPython, especially useful to debug layout issues when using :class:`wx.Sizer`.
28
+
29
+ The :class:`InspectableApp` is a "pre-mixed" :class:`App` and the
30
+ :class:`InspectionMixin` allows you to mix it with your custom :class:`App`
31
+ class.
32
+
33
+
34
+ Usage
35
+ =====
36
+
37
+ The following samples assume the default key sequence :kbd:`Ctrl-Alt-i` to start
38
+ the WIT, additional information can be found on the following wiki page.
39
+
40
+ `How to use the Widget Inspection Tool <https://wiki.wxpython.org/How%20to%20use%20Widget%20Inspection%20Tool%20-%20WIT%20%28Phoenix%29>`_
41
+
42
+ InspectableApp usage::
43
+
44
+ import wx
45
+ import wx.lib.sized_controls as sc
46
+ import wx.lib.mixins.inspection as wit
47
+
48
+ app = wit.InspectableApp()
49
+
50
+ frame = sc.SizedFrame(None, -1, "WIT InspectableApp")
51
+
52
+ pane = frame.GetContentsPane()
53
+ pane.SetSizerType("horizontal")
54
+
55
+ b1 = wx.Button(pane, wx.ID_ANY)
56
+ t1 = wx.TextCtrl(pane, -1)
57
+ t1.SetSizerProps(expand=True)
58
+
59
+ frame.Show()
60
+
61
+ app.MainLoop()
62
+
63
+
64
+ InspectionMixin usage::
65
+
66
+ import wx
67
+ import wx.lib.sized_controls as sc
68
+ import wx.lib.mixins.inspection as wit
69
+
70
+ class MyApp(wx.App, wit.InspectionMixin):
71
+ def OnInit(self):
72
+ self.Init() # initialize the inspection tool
73
+ return True
74
+
75
+ app = MyApp()
76
+
77
+ frame = sc.SizedFrame(None, -1, "WIT InspectionMixin")
78
+
79
+ pane = frame.GetContentsPane()
80
+ pane.SetSizerType("horizontal")
81
+
82
+ b1 = wx.Button(pane, wx.ID_ANY)
83
+ t1 = wx.TextCtrl(pane, -1)
84
+ t1.SetSizerProps(expand=True)
85
+
86
+ frame.Show()
87
+
88
+ app.MainLoop()
89
+
90
+ """
91
+
92
+
93
+ import wx
94
+ from wx.lib.inspection import InspectionTool
95
+
96
+
97
+ #----------------------------------------------------------------------------
98
+
99
+ class InspectionMixin(object):
100
+ """
101
+ This class is intended to be used as a mix-in with the :class:`App`.
102
+ When used it will add the ability to popup a
103
+ :class:`~lib.inspection.InspectionFrame` window
104
+ where the widget under the mouse cursor will be selected in the tree and
105
+ loaded into the shell's namespace as 'obj'. The default key sequence to
106
+ activate the inspector is Ctrl-Alt-I (or Cmd-Alt-I on Mac) but this can be
107
+ changed via parameters to the `Init` method, or the application can call
108
+ :meth:`~lib.mixins.inspection.InspectionMixin.ShowInspectionTool` from other
109
+ event handlers if desired.
110
+
111
+ To use this class simply derive a class from :class:`App` and
112
+ :class:`InspectionMixin` and then call the
113
+ :meth:`InspectionMixin.Init` method from the app's
114
+ :meth:`AppConsole.OnInit` method.
115
+ """
116
+ def InitInspection(self, pos=wx.DefaultPosition, size=wx.Size(850,700),
117
+ config=None, locals=None,
118
+ alt=True, cmd=True, shift=False, keyCode=ord('I')):
119
+ """
120
+ Make the event binding that will activate the InspectionFrame window.
121
+
122
+ :param `pos`: the control position. A value of (-1, -1) indicates a default position,
123
+ chosen by either the windowing system or wxPython, depending on platform;
124
+ :param `size`: the control size. A value of (-1, -1) indicates a default size,
125
+ chosen by either the windowing system or wxPython, depending on platform;
126
+ :param `config`: A :class:`Config` object to be used to store layout
127
+ and other info to when the inspection frame is closed.
128
+ This info will be restored the next time the inspection
129
+ frame is used.
130
+ :param `locals`: A dictionary of names to be added to the PyCrust
131
+ namespace.
132
+ :param boolean `alt`: use alt in the short cut sequence
133
+ :param boolean `cmd`: use ctrl/cmd in the short cut sequence
134
+ :param boolean `shift`: use shift in the short cut sequence
135
+ :param string `keyCode`: the key code for the short cut sequence
136
+
137
+ """
138
+ self.Bind(wx.EVT_KEY_DOWN, self._OnKeyPress)
139
+ self._alt = alt
140
+ self._cmd = cmd
141
+ self._shift = shift
142
+ self._keyCode = keyCode
143
+ InspectionTool().Init(pos, size, config, locals, self)
144
+
145
+ def _OnKeyPress(self, evt):
146
+ """
147
+ Event handler, check for our hot-key. Normally it is
148
+ Ctrl-Alt-I but that can be changed by what is passed to the
149
+ Init method.
150
+ """
151
+ if evt.AltDown() == self._alt and \
152
+ evt.CmdDown() == self._cmd and \
153
+ evt.ShiftDown() == self._shift and \
154
+ evt.GetKeyCode() == self._keyCode:
155
+ self.ShowInspectionTool()
156
+ else:
157
+ evt.Skip()
158
+
159
+ Init = InitInspection # compatibility alias
160
+
161
+ def ShowInspectionTool(self):
162
+ """
163
+ Show the Inspection tool, creating it if necessary, setting it
164
+ to display the widget under the cursor.
165
+ """
166
+ # get the current widget under the mouse
167
+ wnd, pt = wx.FindWindowAtPointer()
168
+ InspectionTool().Show(wnd)
169
+
170
+
171
+ #---------------------------------------------------------------------------
172
+
173
+ class InspectableApp(wx.App, InspectionMixin):
174
+ """
175
+ A simple mix of :class:`App` and :class:`InspectionMixin` that can be used
176
+ stand-alone.
177
+ """
178
+
179
+ def OnInit(self):
180
+ self.InitInspection()
181
+ return True
182
+
183
+ #---------------------------------------------------------------------------
184
+