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
wx/py/buffer.py ADDED
@@ -0,0 +1,136 @@
1
+ """Buffer class."""
2
+
3
+ __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
4
+
5
+ from .interpreter import Interpreter
6
+ import types
7
+ import os
8
+ import sys
9
+
10
+ from . import document
11
+
12
+
13
+ class Buffer:
14
+ """Buffer class."""
15
+
16
+ id = 0
17
+
18
+ def __init__(self, filename=None):
19
+ """Create a Buffer instance."""
20
+ Buffer.id += 1
21
+ self.id = Buffer.id
22
+ self.interp = Interpreter(locals={})
23
+ self.name = ''
24
+ self.editors = {}
25
+ self.editor = None
26
+ self.modules = list(sys.modules)
27
+ self.syspath = sys.path[:]
28
+ while True:
29
+ try:
30
+ self.syspath.remove('')
31
+ except ValueError:
32
+ break
33
+ while True:
34
+ try:
35
+ self.syspath.remove('.')
36
+ except ValueError:
37
+ break
38
+ self.open(filename)
39
+
40
+ def addEditor(self, editor):
41
+ """Add an editor."""
42
+ self.editor = editor
43
+ self.editors[editor.id] = editor
44
+
45
+ def hasChanged(self):
46
+ """Return True if text in editor has changed since last save."""
47
+ if self.editor:
48
+ return self.editor.hasChanged()
49
+ else:
50
+ return False
51
+
52
+ def new(self, filepath):
53
+ """New empty buffer."""
54
+ if not filepath:
55
+ return
56
+ if os.path.exists(filepath):
57
+ self.confirmed = self.overwriteConfirm(filepath)
58
+ else:
59
+ self.confirmed = True
60
+
61
+ def open(self, filename):
62
+ """Open file into buffer."""
63
+ self.doc = document.Document(filename)
64
+ self.name = self.doc.filename or ('Untitled:' + str(self.id))
65
+ self.modulename = self.doc.filebase
66
+ # XXX This should really make sure filedir is first item in syspath.
67
+ # XXX Or maybe this should be moved to the update namespace method.
68
+ if self.doc.filedir and self.doc.filedir not in self.syspath:
69
+ # To create the proper context for updateNamespace.
70
+ self.syspath.insert(0, self.doc.filedir)
71
+ if self.doc.filepath and os.path.exists(self.doc.filepath):
72
+ self.confirmed = True
73
+ if self.editor:
74
+ text = self.doc.read()
75
+ self.editor._setBuffer(buffer=self, text=text)
76
+
77
+ def overwriteConfirm(self, filepath):
78
+ """Confirm overwriting an existing file."""
79
+ return False
80
+
81
+ def save(self):
82
+ """Save buffer."""
83
+ filepath = self.doc.filepath
84
+ if not filepath:
85
+ return # XXX Get filename
86
+ if not os.path.exists(filepath):
87
+ self.confirmed = True
88
+ if not self.confirmed:
89
+ self.confirmed = self.overwriteConfirm(filepath)
90
+ if self.confirmed:
91
+ self.doc.write(self.editor.getText())
92
+ if self.editor:
93
+ self.editor.setSavePoint()
94
+
95
+ def saveAs(self, filename):
96
+ """Save buffer."""
97
+ self.doc = document.Document(filename)
98
+ self.name = self.doc.filename
99
+ self.modulename = self.doc.filebase
100
+ self.save()
101
+
102
+ def updateNamespace(self):
103
+ """Update the namespace for autocompletion and calltips.
104
+
105
+ Return True if updated, False if there was an error."""
106
+ if not self.interp or not hasattr(self.editor, 'getText'):
107
+ return False
108
+ syspath = sys.path
109
+ sys.path = self.syspath
110
+ text = self.editor.getText()
111
+ text = text.replace('\r\n', '\n')
112
+ text = text.replace('\r', '\n')
113
+ name = self.modulename or self.name
114
+ module = types.ModuleType(name)
115
+ newspace = module.__dict__.copy()
116
+ try:
117
+ try:
118
+ code = compile(text, name, 'exec')
119
+ except:
120
+ raise
121
+ # return False
122
+ try:
123
+ exec(code, newspace)
124
+ except:
125
+ raise
126
+ # return False
127
+ else:
128
+ # No problems, so update the namespace.
129
+ self.interp.locals.clear()
130
+ self.interp.locals.update(newspace)
131
+ return True
132
+ finally:
133
+ sys.path = syspath
134
+ for m in sys.modules:
135
+ if m not in self.modules:
136
+ del sys.modules[m]
wx/py/crust.py ADDED
@@ -0,0 +1,403 @@
1
+ """Crust combines the shell and filling into one control."""
2
+
3
+ __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
4
+
5
+ import wx
6
+
7
+ import os
8
+ import pprint
9
+ import re
10
+ import sys
11
+
12
+ from . import dispatcher
13
+ from . import editwindow
14
+ from .filling import Filling
15
+ from . import frame
16
+ from .shell import Shell
17
+ from .version import VERSION
18
+
19
+
20
+ class Crust(wx.SplitterWindow):
21
+ """Crust based on SplitterWindow."""
22
+
23
+ name = 'Crust'
24
+ sashoffset = 300
25
+
26
+ def __init__(self, parent, id=-1, pos=wx.DefaultPosition,
27
+ size=wx.DefaultSize, style=wx.SP_3D|wx.SP_LIVE_UPDATE,
28
+ name='Crust Window', rootObject=None, rootLabel=None,
29
+ rootIsNamespace=True, intro='', locals=None,
30
+ InterpClass=None,
31
+ startupScript=None, execStartupScript=True,
32
+ *args, **kwds):
33
+ """Create Crust instance."""
34
+ wx.SplitterWindow.__init__(self, parent, id, pos, size, style, name)
35
+
36
+ # Turn off the tab-traversal style that is automatically
37
+ # turned on by wx.SplitterWindow. We do this because on
38
+ # Windows the event for Ctrl-Enter is stolen and used as a
39
+ # navigation key, but the Shell window uses it to insert lines.
40
+ style = self.GetWindowStyle()
41
+ self.SetWindowStyle(style & ~wx.TAB_TRAVERSAL)
42
+
43
+ self.shell = Shell(parent=self, introText=intro,
44
+ locals=locals, InterpClass=InterpClass,
45
+ startupScript=startupScript,
46
+ execStartupScript=execStartupScript,
47
+ *args, **kwds)
48
+
49
+ self.editor = self.shell
50
+ if rootObject is None:
51
+ rootObject = self.shell.interp.locals
52
+ self.notebook = wx.Notebook(parent=self, id=-1)
53
+ self.shell.interp.locals['notebook'] = self.notebook
54
+ self.filling = Filling(parent=self.notebook,
55
+ rootObject=rootObject,
56
+ rootLabel=rootLabel,
57
+ rootIsNamespace=rootIsNamespace)
58
+ # Add 'filling' to the interpreter's locals.
59
+ self.shell.interp.locals['filling'] = self.filling
60
+ self.notebook.AddPage(page=self.filling, text='Namespace', select=True)
61
+
62
+ self.display = Display(parent=self.notebook)
63
+ self.notebook.AddPage(page=self.display, text='Display')
64
+ # Add 'pp' (pretty print) to the interpreter's locals.
65
+ self.shell.interp.locals['pp'] = self.display.setItem
66
+ self.display.nbTab = self.notebook.GetPageCount()-1
67
+
68
+ self.calltip = Calltip(parent=self.notebook)
69
+ self.notebook.AddPage(page=self.calltip, text='Calltip')
70
+
71
+ self.sessionlisting = SessionListing(parent=self.notebook)
72
+ self.notebook.AddPage(page=self.sessionlisting, text='History')
73
+
74
+ self.dispatcherlisting = DispatcherListing(parent=self.notebook)
75
+ self.notebook.AddPage(page=self.dispatcherlisting, text='Dispatcher')
76
+
77
+
78
+ # Initialize in an unsplit mode, and check later after loading
79
+ # settings if we should split or not.
80
+ self.shell.Hide()
81
+ self.notebook.Hide()
82
+ self.Initialize(self.shell)
83
+ self._shouldsplit = True
84
+ wx.CallAfter(self._CheckShouldSplit)
85
+ self.SetMinimumPaneSize(100)
86
+
87
+ self.Bind(wx.EVT_SIZE, self.SplitterOnSize)
88
+ self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED, self.OnChanged)
89
+ self.Bind(wx.EVT_SPLITTER_DCLICK, self.OnSashDClick)
90
+
91
+ def _CheckShouldSplit(self):
92
+ if self._shouldsplit:
93
+ self.SplitHorizontally(self.shell, self.notebook, -self.sashoffset)
94
+ self.lastsashpos = self.GetSashPosition()
95
+ else:
96
+ self.lastsashpos = -1
97
+ self.issplit = self.IsSplit()
98
+
99
+ def ToggleTools(self):
100
+ """Toggle the display of the filling and other tools"""
101
+ if self.issplit:
102
+ self.Unsplit()
103
+ else:
104
+ self.SplitHorizontally(self.shell, self.notebook, -self.sashoffset)
105
+ self.lastsashpos = self.GetSashPosition()
106
+ self.issplit = self.IsSplit()
107
+
108
+ def ToolsShown(self):
109
+ return self.issplit
110
+
111
+ def OnChanged(self, event):
112
+ """update sash offset from the bottom of the window"""
113
+ self.sashoffset = self.GetSize().height - event.GetSashPosition()
114
+ self.lastsashpos = event.GetSashPosition()
115
+ event.Skip()
116
+
117
+ def OnSashDClick(self, event):
118
+ self.Unsplit()
119
+ self.issplit = False
120
+
121
+ # Make the splitter expand the top window when resized
122
+ def SplitterOnSize(self, event):
123
+ splitter = event.GetEventObject()
124
+ sz = splitter.GetSize()
125
+ splitter.SetSashPosition(sz.height - self.sashoffset, True)
126
+ event.Skip()
127
+
128
+
129
+ def LoadSettings(self, config):
130
+ self.shell.LoadSettings(config)
131
+ self.filling.LoadSettings(config)
132
+
133
+ pos = config.ReadInt('Sash/CrustPos', 400)
134
+ wx.CallAfter(self.SetSashPosition, pos)
135
+ def _updateSashPosValue():
136
+ sz = self.GetSize()
137
+ self.sashoffset = sz.height - self.GetSashPosition()
138
+ wx.CallAfter(_updateSashPosValue)
139
+ zoom = config.ReadInt('View/Zoom/Display', -99)
140
+ if zoom != -99:
141
+ self.display.SetZoom(zoom)
142
+ self.issplit = config.ReadInt('Sash/IsSplit', True)
143
+ if not self.issplit:
144
+ self._shouldsplit = False
145
+
146
+ def SaveSettings(self, config):
147
+ self.shell.SaveSettings(config)
148
+ self.filling.SaveSettings(config)
149
+
150
+ if self.lastsashpos != -1:
151
+ config.WriteInt('Sash/CrustPos', self.lastsashpos)
152
+ config.WriteInt('Sash/IsSplit', self.issplit)
153
+ config.WriteInt('View/Zoom/Display', self.display.GetZoom())
154
+
155
+ class Display(editwindow.EditWindow):
156
+ """STC used to display an object using Pretty Print."""
157
+
158
+ def __init__(self, parent, id=-1, pos=wx.DefaultPosition,
159
+ size=wx.DefaultSize,
160
+ style=wx.CLIP_CHILDREN | wx.SUNKEN_BORDER,
161
+ static=False):
162
+ """Create Display instance."""
163
+ editwindow.EditWindow.__init__(self, parent, id, pos, size, style)
164
+ # Configure various defaults and user preferences.
165
+ self.SetReadOnly(True)
166
+ self.SetWrapMode(False)
167
+ if not static:
168
+ dispatcher.connect(receiver=self.push, signal='Interpreter.push')
169
+
170
+ def push(self, command, more):
171
+ """Receiver for Interpreter.push signal."""
172
+ if not self:
173
+ dispatcher.disconnect(receiver=self.push, signal='Interpreter.push')
174
+ return
175
+ self.Refresh()
176
+
177
+ def Refresh(self):
178
+ if not hasattr(self, "item"):
179
+ return
180
+ self.SetReadOnly(False)
181
+ text = pprint.pformat(self.item)
182
+ self.SetText(text)
183
+ self.SetReadOnly(True)
184
+
185
+ def setItem(self, item):
186
+ """Set item to pretty print in the notebook Display tab."""
187
+ self.item = item
188
+ self.Refresh()
189
+ if self.GetParent().GetSelection() != self.nbTab:
190
+ focus = wx.Window.FindFocus()
191
+ self.GetParent().SetSelection(self.nbTab)
192
+ wx.CallAfter(focus.SetFocus)
193
+
194
+
195
+ # TODO: Switch this to a editwindow.EditWindow
196
+ class Calltip(wx.TextCtrl):
197
+ """Text control containing the most recent shell calltip."""
198
+
199
+ def __init__(self, parent=None, id=-1,ShellClassName='Shell'):
200
+ style = (wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2)
201
+ wx.TextCtrl.__init__(self, parent, id, style=style)
202
+ self.SetBackgroundColour(wx.Colour(255, 255, 208))
203
+ self.ShellClassName=ShellClassName
204
+ dispatcher.connect(receiver=self.display, signal=self.ShellClassName+'.calltip')
205
+
206
+ df = self.GetFont()
207
+ font = wx.Font(df.GetPointSize(), wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
208
+ self.SetFont(font)
209
+
210
+ def display(self, calltip):
211
+ """Receiver for this.calltip signal."""
212
+ if not self:
213
+ dispatcher.disconnect(receiver=self.display, signal=self.ShellClassName+'.calltip')
214
+ return
215
+
216
+ ## self.SetValue(calltip) # Caused refresh problem on Windows.
217
+ self.Clear()
218
+ self.AppendText(calltip)
219
+ self.SetInsertionPoint(0)
220
+
221
+
222
+ # TODO: Switch this to a editwindow.EditWindow
223
+ class SessionListing(wx.TextCtrl):
224
+ """Text control containing all commands for session."""
225
+
226
+ def __init__(self, parent=None, id=-1,ShellClassName='Shell'):
227
+ style = (wx.TE_MULTILINE | wx.TE_READONLY |
228
+ wx.TE_RICH2 | wx.TE_DONTWRAP)
229
+ wx.TextCtrl.__init__(self, parent, id, style=style)
230
+ self.ShellClassName = ShellClassName
231
+ dispatcher.connect(receiver=self.addHistory,
232
+ signal=self.ShellClassName+".addHistory")
233
+ dispatcher.connect(receiver=self.clearHistory,
234
+ signal=self.ShellClassName+".clearHistory")
235
+ dispatcher.connect(receiver=self.loadHistory,
236
+ signal=self.ShellClassName+".loadHistory")
237
+
238
+ df = self.GetFont()
239
+ font = wx.Font(df.GetPointSize(), wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
240
+ self.SetFont(font)
241
+
242
+
243
+ def _disconnect(self):
244
+ dispatcher.disconnect(receiver=self.addHistory,
245
+ signal=self.ShellClassName+".addHistory")
246
+ dispatcher.disconnect(receiver=self.clearHistory,
247
+ signal=self.ShellClassName+".clearHistory")
248
+ dispatcher.disconnect(receiver=self.loadHistory,
249
+ signal=self.ShellClassName+".loadHistory")
250
+
251
+
252
+ def loadHistory(self, history):
253
+ # preload the existing history, if any
254
+ if not self:
255
+ self._disconnect()
256
+ return
257
+ hist = history[:]
258
+ hist.reverse()
259
+ self.SetValue('\n'.join(hist) + '\n')
260
+ self.SetInsertionPointEnd()
261
+
262
+ def addHistory(self, command):
263
+ if not self:
264
+ self._disconnect()
265
+ return
266
+ if command:
267
+ self.SetInsertionPointEnd()
268
+ self.AppendText(command + '\n')
269
+
270
+ def clearHistory(self):
271
+ if not self:
272
+ self._disconnect()
273
+ return
274
+ self.SetValue("")
275
+
276
+
277
+ class DispatcherListing(wx.TextCtrl):
278
+ """Text control containing all dispatches for session."""
279
+
280
+ def __init__(self, parent=None, id=-1):
281
+ style = (wx.TE_MULTILINE | wx.TE_READONLY |
282
+ wx.TE_RICH2 | wx.TE_DONTWRAP)
283
+ wx.TextCtrl.__init__(self, parent, id, style=style)
284
+ dispatcher.connect(receiver=self.spy)
285
+
286
+ df = self.GetFont()
287
+ font = wx.Font(df.GetPointSize(), wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
288
+ self.SetFont(font)
289
+
290
+ def spy(self, signal, sender):
291
+ """Receiver for Any signal from Any sender."""
292
+ if not self:
293
+ dispatcher.disconnect(receiver=self.spy)
294
+ return
295
+ text = '%r from %s' % (signal, sender)
296
+ self.SetInsertionPointEnd()
297
+ start, end = self.GetSelection()
298
+ if start != end:
299
+ self.SetSelection(0, 0)
300
+ self.AppendText(text + '\n')
301
+
302
+
303
+
304
+ class CrustFrame(frame.Frame, frame.ShellFrameMixin):
305
+ """Frame containing all the PyCrust components."""
306
+
307
+ name = 'CrustFrame'
308
+
309
+
310
+ def __init__(self, parent=None, id=-1, title='PyCrust',
311
+ pos=wx.DefaultPosition, size=wx.DefaultSize,
312
+ style=wx.DEFAULT_FRAME_STYLE,
313
+ rootObject=None, rootLabel=None, rootIsNamespace=True,
314
+ locals=None, InterpClass=None,
315
+ config=None, dataDir=None,
316
+ *args, **kwds):
317
+ """Create CrustFrame instance."""
318
+ frame.Frame.__init__(self, parent, id, title, pos, size, style,
319
+ shellName='PyCrust')
320
+ frame.ShellFrameMixin.__init__(self, config, dataDir)
321
+
322
+ if size == wx.DefaultSize:
323
+ self.SetSize((800, 600))
324
+
325
+ intro = 'PyCrust %s - The Flakiest Python Shell' % VERSION
326
+
327
+ self.SetStatusText(intro.replace('\n', ', '))
328
+ self.crust = Crust(parent=self, intro=intro,
329
+ rootObject=rootObject,
330
+ rootLabel=rootLabel,
331
+ rootIsNamespace=rootIsNamespace,
332
+ locals=locals,
333
+ InterpClass=InterpClass,
334
+ startupScript=self.startupScript,
335
+ execStartupScript=self.execStartupScript,
336
+ *args, **kwds)
337
+ self.shell = self.crust.shell
338
+
339
+ # Override the filling so that status messages go to the status bar.
340
+ self.crust.filling.tree.setStatusText = self.SetStatusText
341
+
342
+ # Override the shell so that status messages go to the status bar.
343
+ self.shell.setStatusText = self.SetStatusText
344
+
345
+ self.shell.SetFocus()
346
+ self.LoadSettings()
347
+
348
+
349
+ def OnClose(self, event):
350
+ """Event handler for closing."""
351
+ self.SaveSettings()
352
+ self.crust.shell.destroy()
353
+ self.Destroy()
354
+
355
+
356
+ def OnAbout(self, event):
357
+ """Display an About window."""
358
+ title = 'About PyCrust'
359
+ text = 'PyCrust %s\n\n' % VERSION + \
360
+ 'Yet another Python shell, only flakier.\n\n' + \
361
+ 'Half-baked by Patrick K. O\'Brien,\n' + \
362
+ 'the other half is still in the oven.\n\n' + \
363
+ 'Platform: %s\n' % sys.platform + \
364
+ 'Python Version: %s\n' % sys.version.split()[0] + \
365
+ 'wxPython Version: %s\n' % wx.VERSION_STRING + \
366
+ ('\t(%s)\n' % ", ".join(wx.PlatformInfo[1:]))
367
+ dialog = wx.MessageDialog(self, text, title,
368
+ wx.OK | wx.ICON_INFORMATION)
369
+ dialog.ShowModal()
370
+ dialog.Destroy()
371
+
372
+
373
+ def ToggleTools(self):
374
+ """Toggle the display of the filling and other tools"""
375
+ return self.crust.ToggleTools()
376
+
377
+ def ToolsShown(self):
378
+ return self.crust.ToolsShown()
379
+
380
+ def OnHelp(self, event):
381
+ """Show a help dialog."""
382
+ frame.ShellFrameMixin.OnHelp(self, event)
383
+
384
+ def LoadSettings(self):
385
+ if self.config is not None:
386
+ frame.ShellFrameMixin.LoadSettings(self)
387
+ frame.Frame.LoadSettings(self, self.config)
388
+ self.crust.LoadSettings(self.config)
389
+
390
+
391
+ def SaveSettings(self, force=False):
392
+ if self.config is not None:
393
+ frame.ShellFrameMixin.SaveSettings(self,force)
394
+ if self.autoSaveSettings or force:
395
+ frame.Frame.SaveSettings(self, self.config)
396
+ self.crust.SaveSettings(self.config)
397
+
398
+
399
+ def DoSaveSettings(self):
400
+ if self.config is not None:
401
+ self.SaveSettings(force=True)
402
+ self.config.Flush()
403
+