wxPython 4.3.2__cp315-cp315-win_arm64.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 (471) 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_arm64.pyd +0 -0
  7. wx/_aui.cp315-win_arm64.pyd +0 -0
  8. wx/_core.cp315-win_arm64.pyd +0 -0
  9. wx/_dataview.cp315-win_arm64.pyd +0 -0
  10. wx/_glcanvas.cp315-win_arm64.pyd +0 -0
  11. wx/_grid.cp315-win_arm64.pyd +0 -0
  12. wx/_html.cp315-win_arm64.pyd +0 -0
  13. wx/_html2.cp315-win_arm64.pyd +0 -0
  14. wx/_media.cp315-win_arm64.pyd +0 -0
  15. wx/_msw.cp315-win_arm64.pyd +0 -0
  16. wx/_propgrid.cp315-win_arm64.pyd +0 -0
  17. wx/_ribbon.cp315-win_arm64.pyd +0 -0
  18. wx/_richtext.cp315-win_arm64.pyd +0 -0
  19. wx/_stc.cp315-win_arm64.pyd +0 -0
  20. wx/_xml.cp315-win_arm64.pyd +0 -0
  21. wx/_xrc.cp315-win_arm64.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/locale/af/LC_MESSAGES/wxstd.mo +0 -0
  330. wx/locale/an/LC_MESSAGES/wxstd.mo +0 -0
  331. wx/locale/ar/LC_MESSAGES/wxstd.mo +0 -0
  332. wx/locale/ca/LC_MESSAGES/wxstd.mo +0 -0
  333. wx/locale/ca@valencia/LC_MESSAGES/wxstd.mo +0 -0
  334. wx/locale/co/LC_MESSAGES/wxstd.mo +0 -0
  335. wx/locale/cs/LC_MESSAGES/wxstd.mo +0 -0
  336. wx/locale/da/LC_MESSAGES/wxstd.mo +0 -0
  337. wx/locale/de/LC_MESSAGES/wxstd.mo +0 -0
  338. wx/locale/el/LC_MESSAGES/wxstd.mo +0 -0
  339. wx/locale/es/LC_MESSAGES/wxstd.mo +0 -0
  340. wx/locale/eu/LC_MESSAGES/wxstd.mo +0 -0
  341. wx/locale/fa_IR/LC_MESSAGES/wxstd.mo +0 -0
  342. wx/locale/fi/LC_MESSAGES/wxstd.mo +0 -0
  343. wx/locale/fr/LC_MESSAGES/wxstd.mo +0 -0
  344. wx/locale/gl_ES/LC_MESSAGES/wxstd.mo +0 -0
  345. wx/locale/hi/LC_MESSAGES/wxstd.mo +0 -0
  346. wx/locale/hr/LC_MESSAGES/wxstd.mo +0 -0
  347. wx/locale/hu/LC_MESSAGES/wxstd.mo +0 -0
  348. wx/locale/id/LC_MESSAGES/wxstd.mo +0 -0
  349. wx/locale/it/LC_MESSAGES/wxstd.mo +0 -0
  350. wx/locale/ja/LC_MESSAGES/wxstd.mo +0 -0
  351. wx/locale/ka/LC_MESSAGES/wxstd.mo +0 -0
  352. wx/locale/ko_KR/LC_MESSAGES/wxstd.mo +0 -0
  353. wx/locale/lt/LC_MESSAGES/wxstd.mo +0 -0
  354. wx/locale/lv/LC_MESSAGES/wxstd.mo +0 -0
  355. wx/locale/ms/LC_MESSAGES/wxstd.mo +0 -0
  356. wx/locale/nb/LC_MESSAGES/wxstd.mo +0 -0
  357. wx/locale/ne/LC_MESSAGES/wxstd.mo +0 -0
  358. wx/locale/nl/LC_MESSAGES/wxstd.mo +0 -0
  359. wx/locale/pl/LC_MESSAGES/wxstd.mo +0 -0
  360. wx/locale/pt/LC_MESSAGES/wxstd.mo +0 -0
  361. wx/locale/pt_BR/LC_MESSAGES/wxstd.mo +0 -0
  362. wx/locale/ro/LC_MESSAGES/wxstd.mo +0 -0
  363. wx/locale/ru/LC_MESSAGES/wxstd.mo +0 -0
  364. wx/locale/sk/LC_MESSAGES/wxstd.mo +0 -0
  365. wx/locale/sl/LC_MESSAGES/wxstd.mo +0 -0
  366. wx/locale/sq/LC_MESSAGES/wxstd.mo +0 -0
  367. wx/locale/sr/LC_MESSAGES/wxstd.mo +0 -0
  368. wx/locale/sv/LC_MESSAGES/wxstd.mo +0 -0
  369. wx/locale/ta/LC_MESSAGES/wxstd.mo +0 -0
  370. wx/locale/tr/LC_MESSAGES/wxstd.mo +0 -0
  371. wx/locale/uk/LC_MESSAGES/wxstd.mo +0 -0
  372. wx/locale/vi/LC_MESSAGES/wxstd.mo +0 -0
  373. wx/locale/zh_CN/LC_MESSAGES/wxstd.mo +0 -0
  374. wx/locale/zh_TW/LC_MESSAGES/wxstd.mo +0 -0
  375. wx/media.py +30 -0
  376. wx/media.pyi +272 -0
  377. wx/msw.py +16 -0
  378. wx/msw.pyi +91 -0
  379. wx/propgrid.py +498 -0
  380. wx/propgrid.pyi +7427 -0
  381. wx/py/CHANGES.txt +796 -0
  382. wx/py/Py.ico +0 -0
  383. wx/py/PyAlaCarte.py +34 -0
  384. wx/py/PyAlaMode.py +34 -0
  385. wx/py/PyAlaModeTest.py +33 -0
  386. wx/py/PyCrust.ico +0 -0
  387. wx/py/PyCrust.py +78 -0
  388. wx/py/PyCrust_16.png +0 -0
  389. wx/py/PyCrust_32.png +0 -0
  390. wx/py/PyFilling.py +35 -0
  391. wx/py/PyShell.py +78 -0
  392. wx/py/PySlices.ico +0 -0
  393. wx/py/PySlices.py +98 -0
  394. wx/py/PySlicesShell.py +94 -0
  395. wx/py/PySlices_16.png +0 -0
  396. wx/py/PySlices_32.png +0 -0
  397. wx/py/PyWrap.py +52 -0
  398. wx/py/README.txt +77 -0
  399. wx/py/__init__.py +20 -0
  400. wx/py/buffer.py +136 -0
  401. wx/py/crust.py +403 -0
  402. wx/py/crustslices.py +403 -0
  403. wx/py/dispatcher.py +259 -0
  404. wx/py/document.py +37 -0
  405. wx/py/editor.py +844 -0
  406. wx/py/editwindow.py +316 -0
  407. wx/py/filling.py +358 -0
  408. wx/py/frame.py +976 -0
  409. wx/py/images.py +212 -0
  410. wx/py/interpreter.py +161 -0
  411. wx/py/introspect.py +402 -0
  412. wx/py/magic.py +98 -0
  413. wx/py/parse.py +134 -0
  414. wx/py/path.py +36 -0
  415. wx/py/pseudo.py +99 -0
  416. wx/py/shell.py +1579 -0
  417. wx/py/sliceshell.py +3805 -0
  418. wx/py/tests/test_interpreter.py +71 -0
  419. wx/py/tests/test_introspect.py +810 -0
  420. wx/py/tests/test_pseudo.py +70 -0
  421. wx/py/tests/test_version.py +36 -0
  422. wx/py/tests/testall.py +22 -0
  423. wx/py/version.py +7 -0
  424. wx/py.typed +0 -0
  425. wx/ribbon.py +48 -0
  426. wx/ribbon.pyi +3099 -0
  427. wx/richtext.py +141 -0
  428. wx/richtext.pyi +13581 -0
  429. wx/siplib.cp315-win_arm64.pyd +0 -0
  430. wx/siplib.pyi +19 -0
  431. wx/stc.py +59 -0
  432. wx/stc.pyi +9918 -0
  433. wx/svg/__init__.py +363 -0
  434. wx/svg/_nanosvg.cp315-win_arm64.pyd +0 -0
  435. wx/tools/__init__.py +18 -0
  436. wx/tools/dbg.py +268 -0
  437. wx/tools/genaxmodule.py +50 -0
  438. wx/tools/helpviewer.py +92 -0
  439. wx/tools/img2img.py +85 -0
  440. wx/tools/img2png.py +54 -0
  441. wx/tools/img2py.py +306 -0
  442. wx/tools/img2xpm.py +54 -0
  443. wx/tools/pywxrc.py +951 -0
  444. wx/tools/wxget.py +254 -0
  445. wx/tools/wxget_docs_demo.py +183 -0
  446. wx/wxbase334u_net_vc140_arm64.dll +0 -0
  447. wx/wxbase334u_vc140_arm64.dll +0 -0
  448. wx/wxbase334u_xml_vc140_arm64.dll +0 -0
  449. wx/wxmsw334u_adv_vc140_arm64.dll +0 -0
  450. wx/wxmsw334u_aui_vc140_arm64.dll +0 -0
  451. wx/wxmsw334u_core_vc140_arm64.dll +0 -0
  452. wx/wxmsw334u_gl_vc140_arm64.dll +0 -0
  453. wx/wxmsw334u_html_vc140_arm64.dll +0 -0
  454. wx/wxmsw334u_media_vc140_arm64.dll +0 -0
  455. wx/wxmsw334u_propgrid_vc140_arm64.dll +0 -0
  456. wx/wxmsw334u_qa_vc140_arm64.dll +0 -0
  457. wx/wxmsw334u_ribbon_vc140_arm64.dll +0 -0
  458. wx/wxmsw334u_richtext_vc140_arm64.dll +0 -0
  459. wx/wxmsw334u_stc_vc140_arm64.dll +0 -0
  460. wx/wxmsw334u_webview_vc140_arm64.dll +0 -0
  461. wx/wxmsw334u_xrc_vc140_arm64.dll +0 -0
  462. wx/xml.py +18 -0
  463. wx/xml.pyi +728 -0
  464. wx/xrc.py +68 -0
  465. wx/xrc.pyi +896 -0
  466. wxpython-4.3.2.dist-info/METADATA +71 -0
  467. wxpython-4.3.2.dist-info/RECORD +471 -0
  468. wxpython-4.3.2.dist-info/WHEEL +5 -0
  469. wxpython-4.3.2.dist-info/entry_points.txt +13 -0
  470. wxpython-4.3.2.dist-info/licenses/LICENSE.txt +610 -0
  471. wxpython-4.3.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,313 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: BBox.py
3
+ # Purpose:
4
+ #
5
+ # Author:
6
+ #
7
+ # Created:
8
+ # Version:
9
+ # Date:
10
+ # Licence:
11
+ # Tags: phoenix-port
12
+ #----------------------------------------------------------------------------
13
+ """
14
+ A Bounding Box object and assorted utilities , subclassed from a numpy array
15
+
16
+ """
17
+
18
+ import numpy as np
19
+
20
+ class BBox(np.ndarray):
21
+ """
22
+ A Bounding Box object:
23
+
24
+ Takes Data as an array. Data is any python sequence that can be turned into a
25
+ 2x2 numpy array of floats::
26
+
27
+ [
28
+ [MinX, MinY ],
29
+ [MaxX, MaxY ]
30
+ ]
31
+
32
+ It is a subclass of numpy.ndarray, so for the most part it can be used as
33
+ an array, and arrays that fit the above description can be used in its place.
34
+
35
+ Usually created by the factory functions:
36
+
37
+ asBBox
38
+
39
+ and
40
+
41
+ fromPoints
42
+
43
+ """
44
+ def __new__(subtype, data):
45
+ """
46
+ Takes Data as an array. Data is any python sequence that can be turned
47
+ into a 2x2 numpy array of floats::
48
+
49
+ [
50
+ [MinX, MinY ],
51
+ [MaxX, MaxY ]
52
+ ]
53
+
54
+ You don't usually call this directly. BBox objects are created with
55
+ the factory functions:
56
+
57
+ asBBox
58
+
59
+ and
60
+
61
+ fromPoints
62
+
63
+ """
64
+ arr = np.array(data, float)
65
+ arr = arr.reshape(2, 2)
66
+ if arr[0,0] > arr[1,0] or arr[0,1] > arr[1,1]:
67
+ # note: zero sized BB OK.
68
+ raise ValueError("BBox values not aligned: \n minimum values must be less that maximum values")
69
+ return np.ndarray.__new__(subtype, shape=arr.shape, dtype=arr.dtype, buffer=arr)
70
+
71
+ def Overlaps(self, BB):
72
+ """
73
+ Overlap(BB):
74
+
75
+ Tests if the given Bounding Box overlaps with this one.
76
+ Returns True is the Bounding boxes overlap, False otherwise
77
+ If they are just touching, returns True
78
+ """
79
+
80
+ if np.isinf(self).all() or np.isinf(BB).all():
81
+ return True
82
+ if ( (self[1,0] >= BB[0,0]) and (self[0,0] <= BB[1,0]) and
83
+ (self[1,1] >= BB[0,1]) and (self[0,1] <= BB[1,1]) ):
84
+ return True
85
+ else:
86
+ return False
87
+
88
+ def Inside(self, BB):
89
+ """
90
+ Inside(BB):
91
+
92
+ Tests if the given Bounding Box is entirely inside this one.
93
+
94
+ Returns True if it is entirely inside, or touching the
95
+ border.
96
+
97
+ Returns False otherwise
98
+ """
99
+ if ( (BB[0,0] >= self[0,0]) and (BB[1,0] <= self[1,0]) and
100
+ (BB[0,1] >= self[0,1]) and (BB[1,1] <= self[1,1]) ):
101
+ return True
102
+ else:
103
+ return False
104
+
105
+ def PointInside(self, Point):
106
+ """
107
+ Inside(BB):
108
+
109
+ Tests if the given Point is entirely inside this one.
110
+
111
+ Returns True if it is entirely inside, or touching the
112
+ border.
113
+
114
+ Returns False otherwise
115
+
116
+ Point is any length-2 sequence (tuple, list, array) or two numbers
117
+ """
118
+ if Point[0] >= self[0,0] and \
119
+ Point[0] <= self[1,0] and \
120
+ Point[1] <= self[1,1] and \
121
+ Point[1] >= self[0,1]:
122
+ return True
123
+ else:
124
+ return False
125
+
126
+ def Merge(self, BB):
127
+ """
128
+ Joins this bounding box with the one passed in, maybe making this one bigger
129
+
130
+ """
131
+ if self.IsNull():
132
+ self[:] = BB
133
+ elif np.isnan(BB).all(): ## BB may be a regular array, so I can't use IsNull
134
+ pass
135
+ else:
136
+ if BB[0,0] < self[0,0]: self[0,0] = BB[0,0]
137
+ if BB[0,1] < self[0,1]: self[0,1] = BB[0,1]
138
+ if BB[1,0] > self[1,0]: self[1,0] = BB[1,0]
139
+ if BB[1,1] > self[1,1]: self[1,1] = BB[1,1]
140
+
141
+ return None
142
+
143
+ def IsNull(self):
144
+ return np.isnan(self).all()
145
+
146
+ ## fixme: it would be nice to add setter, too.
147
+ def _getLeft(self):
148
+ return self[0,0]
149
+ Left = property(_getLeft)
150
+ def _getRight(self):
151
+ return self[1,0]
152
+ Right = property(_getRight)
153
+ def _getBottom(self):
154
+ return self[0,1]
155
+ Bottom = property(_getBottom)
156
+ def _getTop(self):
157
+ return self[1,1]
158
+ Top = property(_getTop)
159
+
160
+ def _getWidth(self):
161
+ return self[1,0] - self[0,0]
162
+ Width = property(_getWidth)
163
+
164
+ def _getHeight(self):
165
+ return self[1,1] - self[0,1]
166
+ Height = property(_getHeight)
167
+
168
+ def _getCenter(self):
169
+ return self.sum(0) / 2.0
170
+ Center = property(_getCenter)
171
+ ### This could be used for a make BB from a bunch of BBs
172
+
173
+ #~ def _getboundingbox(bboxarray): # lrk: added this
174
+ #~ # returns the bounding box of a bunch of bounding boxes
175
+ #~ upperleft = N.minimum.reduce(bboxarray[:,0])
176
+ #~ lowerright = N.maximum.reduce(bboxarray[:,1])
177
+ #~ return N.array((upperleft, lowerright), float)
178
+ #~ _getboundingbox = staticmethod(_getboundingbox)
179
+
180
+
181
+ ## Save the ndarray __eq__ for internal use.
182
+ Array__eq__ = np.ndarray.__eq__
183
+ def __eq__(self, BB):
184
+ """
185
+ __eq__(BB) The equality operator
186
+
187
+ A == B if and only if all the entries are the same
188
+
189
+ """
190
+ if self.IsNull() and np.isnan(BB).all(): ## BB may be a regular array, so I can't use IsNull
191
+ return True
192
+ else:
193
+ return self.Array__eq__(BB).all()
194
+
195
+
196
+ def asBBox(data):
197
+ """
198
+ returns a BBox object.
199
+
200
+ If object is a BBox, it is returned unaltered
201
+
202
+ If object is a numpy array, a BBox object is returned that shares a
203
+ view of the data with that array. The numpy array should be of the correct
204
+ format: a 2x2 numpy array of floats::
205
+
206
+ [
207
+ [MinX, MinY ],
208
+ [MaxX, MaxY ]
209
+ ]
210
+
211
+ """
212
+
213
+ if isinstance(data, BBox):
214
+ return data
215
+ arr = np.asarray(data, float)
216
+ return np.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
217
+
218
+ def fromPoints(Points):
219
+ """
220
+ fromPoints (Points).
221
+
222
+ reruns the bounding box of the set of points in Points. Points can
223
+ be any python object that can be turned into a numpy NX2 array of Floats.
224
+
225
+ If a single point is passed in, a zero-size Bounding Box is returned.
226
+
227
+ """
228
+ Points = np.asarray(Points, float).reshape(-1,2)
229
+
230
+ arr = np.vstack( (Points.min(0), Points.max(0)) )
231
+ return np.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
232
+
233
+ def fromBBArray(BBarray):
234
+ """
235
+ Builds a BBox object from an array of Bounding Boxes.
236
+ The resulting Bounding Box encompases all the included BBs.
237
+
238
+ The BBarray is in the shape: (Nx2x2) where BBarray[n] is a 2x2 array that represents a BBox
239
+ """
240
+
241
+ #upperleft = N.minimum.reduce(BBarray[:,0])
242
+ #lowerright = N.maximum.reduce(BBarray[:,1])
243
+
244
+ # BBarray = N.asarray(BBarray, float).reshape(-1,2)
245
+ # arr = N.vstack( (BBarray.min(0), BBarray.max(0)) )
246
+ BBarray = np.asarray(BBarray, float).reshape(-1,2,2)
247
+ arr = np.vstack( (BBarray[:,0,:].min(0), BBarray[:,1,:].max(0)) )
248
+ return asBBox(arr)
249
+ #return asBBox( (upperleft, lowerright) ) * 2
250
+
251
+ def NullBBox():
252
+ """
253
+ Returns a BBox object with all NaN entries.
254
+
255
+ This represents a Null BB box;
256
+
257
+ BB merged with it will return BB.
258
+
259
+ Nothing is inside it.
260
+
261
+ """
262
+
263
+ arr = np.array(((np.nan, np.nan),(np.nan, np.nan)), float)
264
+ return np.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
265
+
266
+ def InfBBox():
267
+ """
268
+ Returns a BBox object with all -inf and inf entries
269
+
270
+ """
271
+
272
+ arr = np.array(((-np.inf, -np.inf),(np.inf, np.inf)), float)
273
+ return np.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
274
+
275
+ class RectBBox(BBox):
276
+ """
277
+ subclass of a BBox that can be used for a rotated Rectangle
278
+
279
+ contributed by MArco Oster (marco.oster@bioquant.uni-heidelberg.de)
280
+
281
+ """
282
+
283
+ def __new__(self, data, edges=None):
284
+ return BBox.__new__(self, data)
285
+
286
+ def __init__(self, data, edges=None):
287
+ """ assume edgepoints are ordered such you can walk along all edges with left rotation sense
288
+ This may be:
289
+ left-top
290
+ left-bottom
291
+ right-bottom
292
+ right-top
293
+
294
+ or any rotation.
295
+ """
296
+ BBox.BBox(data)
297
+ self.edges = np.asarray(edges)
298
+
299
+ def ac_leftOf_ab(self, a, b, c):
300
+ ab = np.array(b) - np.array(a)
301
+ ac = np.array(c) - np.array(a)
302
+
303
+ return (ac[0]*ab[1] - ac[1]*ab[0]) <= 0
304
+
305
+ def PointInside(self, point):
306
+ for edge in xrange(4):
307
+ if self.ac_leftOf_ab(self.edges[edge],
308
+ self.edges[(edge+1)%4],
309
+ point):
310
+ continue
311
+ else:
312
+ return False
313
+ return True
@@ -0,0 +1,137 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: Colors.py
3
+ # Purpose: Contains color lists used in FloatCanvas
4
+ #
5
+ # Author:
6
+ #
7
+ # Created:
8
+ # Version:
9
+ # Date:
10
+ # Licence:
11
+ # Tags: phoenix-port, unittest, documented, py3-port
12
+ #----------------------------------------------------------------------------
13
+
14
+ """
15
+ Colors.py
16
+
17
+ Assorted stuff for Colors support. At the moment, only a few color sets.
18
+
19
+ Many of these are from:
20
+ http://geography.uoregon.edu/datagraphics/color_scales.htm
21
+
22
+ They may have been modified some
23
+
24
+ CategoricalColor1: A list of colors that are distict.
25
+ BlueToRed11: 11 colors from blue to red
26
+
27
+
28
+ """
29
+
30
+ ## Categorical 12-step scheme, after ColorBrewer 11-step Paired Scheme
31
+ ## From: http://geography.uoregon.edu/datagraphics/color_scales.htm
32
+ # CategoricalColor1 = [ (255, 191, 127),
33
+ # (255, 127, 0),
34
+ # (255, 255, 153),
35
+ # (255, 255, 50),
36
+ # (178, 255, 140),
37
+ # ( 50, 255, 0),
38
+ # (165, 237, 255),
39
+ # (25, 178, 255),
40
+ # (204, 191, 255),
41
+ # (101, 76, 255),
42
+ # (255, 153, 191),
43
+ # (229, 25, 50),
44
+ # ]
45
+
46
+ CategoricalColor1 = [ (229, 25, 50),
47
+ (101, 76, 255),
48
+ ( 50, 255, 0),
49
+ (255, 127, 0),
50
+ (255, 255, 50),
51
+ (255, 153, 191),
52
+ (25, 178, 255),
53
+ (178, 255, 140),
54
+ (255, 191, 127),
55
+ (204, 191, 255),
56
+ (165, 237, 255),
57
+ (255, 255, 153),
58
+ ]
59
+
60
+ RedToBlue11 = [ (165, 0, 33),
61
+ (216, 38, 50),
62
+ (247, 109, 94),
63
+ (255, 173, 114),
64
+ (255, 224, 153),
65
+ (255, 255, 191),
66
+ (224, 255, 255),
67
+ (170, 247, 255),
68
+ (114, 216, 255),
69
+ ( 63, 160, 255),
70
+ ( 38, 76, 255),
71
+ ]
72
+
73
+ BlueToDarkRed12 = [( 41, 10, 216),
74
+ ( 38, 77, 255),
75
+ ( 63, 160, 255),
76
+ (114, 217, 255),
77
+ (170, 247, 255),
78
+ (224, 255, 255),
79
+ (255, 255, 191),
80
+ (255, 224, 153),
81
+ (255, 173, 114),
82
+ (247, 109, 94),
83
+ (216, 38, 50),
84
+ (165, 0, 33),
85
+ ]
86
+
87
+ BlueToDarkRed10 = [( 41, 10, 216),
88
+ ( 38, 77, 255),
89
+ ( 63, 160, 255),
90
+ (114, 217, 255),
91
+ (170, 247, 255),
92
+ (255, 224, 153),
93
+ (255, 173, 114),
94
+ (247, 109, 94),
95
+ (216, 38, 50),
96
+ (165, 0, 33),
97
+ ]
98
+
99
+ BlueToDarkRed8 = [( 41, 10, 216),
100
+ ( 38, 77, 255),
101
+ ( 63, 160, 255),
102
+ (114, 217, 255),
103
+ (255, 173, 114),
104
+ (247, 109, 94),
105
+ (216, 38, 50),
106
+ (165, 0, 33),
107
+ ]
108
+
109
+
110
+
111
+ if __name__ == "__main__":
112
+ import wx
113
+ # tiny test app
114
+ AllSchemes = [("CategoricalColor1", CategoricalColor1),
115
+ ("RedToBlue11", RedToBlue11),
116
+ ("BlueToDarkRed12", BlueToDarkRed12),
117
+ ("BlueToDarkRed10", BlueToDarkRed10),
118
+ ("BlueToDarkRed8", BlueToDarkRed8)
119
+ ]
120
+ class TestFrame(wx.Frame):
121
+ def __init__(self, *args, **kwargs):
122
+ wx.Frame.__init__(self, *args, **kwargs)
123
+ Hsizer = wx.BoxSizer(wx.HORIZONTAL)
124
+ for scheme in AllSchemes:
125
+ Sizer = wx.BoxSizer(wx.VERTICAL)
126
+ Sizer.Add(wx.StaticText(self, label=scheme[0]), 0, wx.ALL, 5)
127
+ for c in scheme[1]:
128
+ w = wx.Window(self, size=(100, 20))
129
+ w.SetBackgroundColour(wx.Colour(*c))
130
+ Sizer.Add(w, 0, wx.ALL, 5)
131
+ Hsizer.Add(Sizer, 0, wx.ALL, 5)
132
+ self.SetSizerAndFit(Hsizer)
133
+ self.Show()
134
+
135
+ A = wx.App(False)
136
+ F = TestFrame(None)
137
+ A.MainLoop()
@@ -0,0 +1,91 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: GUI.py
3
+ # Purpose: Contains GUI related utilities for FloatCanvas
4
+ #
5
+ # Author:
6
+ #
7
+ # Created:
8
+ # Version:
9
+ # Date:
10
+ # Licence:
11
+ # Tags: phoenix-port, unittest, documented, py3-port
12
+ #----------------------------------------------------------------------------
13
+ """
14
+
15
+ Part of the floatcanvas.Utilities package.
16
+
17
+ This module contains assorted GUI-related utilities that can be used
18
+ with FloatCanvas
19
+
20
+ So far, they are:
21
+
22
+ RubberBandBox: used to draw a RubberBand Box on the screen
23
+
24
+ """
25
+
26
+ import numpy as np
27
+
28
+ import wx
29
+ from wx.lib.floatcanvas import FloatCanvas, GUIMode
30
+
31
+ class RubberBandBox(GUIMode.GUIBase):
32
+ """
33
+ Class to provide a GUI Mode that makes a rubber band box that can be drawn on a Window
34
+
35
+ """
36
+
37
+ def __init__(self, CallBack, Tol=5):
38
+
39
+ """
40
+ Default class constructor.
41
+
42
+ :param `CallBack`: is the method you want called when the mouse is
43
+ released. That method will be called, passing in a rect
44
+ parameter, where rect is: (Point, WH) of the rect in
45
+ world coords.
46
+ :param `Tol`: The tolerance for the smallest rectangle allowed. defaults
47
+ to 5. In pixels
48
+ """
49
+
50
+ self.Canvas = None # this will be set when the mode is set on a Canvas
51
+ self.CallBack = CallBack
52
+ self.Tol = Tol
53
+
54
+ self.Drawing = False
55
+ self.RBRect = None
56
+ self.StartPointWorld = None
57
+
58
+ return None
59
+
60
+ def OnMove(self, event):
61
+ if self.Drawing:
62
+ x, y = self.StartPoint
63
+ Cornerx, Cornery = event.GetPosition()
64
+ w, h = ( Cornerx - x, Cornery - y)
65
+ if abs(w) > self.Tol and abs(h) > self.Tol:
66
+ # draw the RB box
67
+ dc = wx.ClientDC(self.Canvas)
68
+ dc.SetPen(wx.Pen('WHITE', 2, wx.SHORT_DASH))
69
+ dc.SetBrush(wx.TRANSPARENT_BRUSH)
70
+ dc.SetLogicalFunction(wx.XOR)
71
+ if self.RBRect:
72
+ dc.DrawRectangle(*self.RBRect)
73
+ self.RBRect = ((x, y), (w, h) )
74
+ dc.DrawRectangle(*self.RBRect)
75
+ self.Canvas._RaiseMouseEvent(event,FloatCanvas.EVT_FC_MOTION)
76
+
77
+ def OnLeftDown(self, event):
78
+ # Start drawing
79
+ self.Drawing = True
80
+ self.StartPoint = event.GetPosition()
81
+
82
+ def OnLeftUp(self, event):
83
+ # Stop Drawing
84
+ if self.Drawing:
85
+ self.Drawing = False
86
+ if self.RBRect:
87
+ world_rect = (self.Canvas.PixelToWorld(self.RBRect[0]),
88
+ self.Canvas.ScalePixelToWorld(self.RBRect[1])
89
+ )
90
+ wx.CallAfter(self.CallBack, world_rect)
91
+ self.RBRect = None
@@ -0,0 +1,7 @@
1
+ """
2
+ __init__ for the floatcanvas Utilities package
3
+
4
+ """
5
+ pass
6
+
7
+
@@ -0,0 +1,124 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: __init__.py
3
+ # Purpose: The FloatCanvas package
4
+ #
5
+ # Author:
6
+ #
7
+ # Created:
8
+ # Version:
9
+ # Date:
10
+ # Licence:
11
+ # Tags: phoenix-port, unittest, documented, py3-port
12
+ #----------------------------------------------------------------------------
13
+ """
14
+ This is the floatcanvas package, the main classes are
15
+ :class:`~lib.floatcanvas.FloatCanvas` and
16
+ :class:`~lib.floatcanvas.NavCanvas`, in each class documentation there
17
+ is at least one sample on how to use them and many more samples are provided
18
+ in `wxPhoenix/samples` folder.
19
+
20
+ FloatCanvas.py contains the main :class:`~lib.floatcanvas.FloatCanvas`
21
+ class, and its supporting classes. NavCanvas.py contains the
22
+ :class:`~lib.floatcanvas.NavCanvas` wrapper for the FloatCanvas that
23
+ provides the canvas and a toolbar with tools that allow you to navigate
24
+ the canvas (zooming, panning, etc.) Resources.py is a module that
25
+ contains a few resources required by the FloatCanvas (icons, etc)
26
+
27
+ The FloatCanvas is a high level window for drawing maps and anything
28
+ else in an arbitrary coordinate system.
29
+
30
+ The goal is to provide a convenient way to draw stuff on the screen
31
+ without having to deal with handling OnPaint events, converting to pixel
32
+ coordinates, knowing about wxWindows brushes, pens, and colors, etc. It
33
+ also provides virtually unlimited zooming and scrolling
34
+
35
+ I am using it for two things:
36
+
37
+ 1) general purpose drawing in floating point coordinates
38
+ 2) displaying map data in Lat-long coordinates
39
+
40
+ If the projection is set to None, it will draw in general purpose
41
+ floating point coordinates. If the projection is set to 'FlatEarth', it
42
+ will draw a FlatEarth projection, centered on the part of the map that
43
+ you are viewing. You can also pass in your own projection function.
44
+
45
+ It is double buffered, so re-draws after the window is uncovered by
46
+ something else are very quick.
47
+
48
+ It relies on `NumPy <http://www.numpy.org/>`_, which is needed for speed
49
+ (maybe, I haven't profiled properly) and convenience.
50
+
51
+ Bugs and Limitations: Lots: patches, fixes welcome
52
+
53
+ For Map drawing: It ignores the fact that the world is, in fact, a
54
+ sphere, so it will do strange things if you are looking at stuff near
55
+ the poles or the date line. so far I don't have a need to do that, so I
56
+ haven't bothered to add any checks for that yet.
57
+
58
+ Zooming: I have set no zoom limits. What this means is that if you zoom
59
+ in really far, you can get integer overflows, and get weird results. It
60
+ doesn't seem to actually cause any problems other than weird output, at
61
+ least when I have run it.
62
+
63
+ Speed: I have done a couple of things to improve speed in this app. The
64
+ one thing I have done is used `NumPy <http://www.numpy.org/>`_ Arrays to
65
+ store the coordinates of the points of the objects. This allowed me to use
66
+ array oriented functions when doing transformations, and should provide some
67
+ speed improvement for objects with a lot of points (big polygons, polylines,
68
+ pointsets).
69
+
70
+ The real slowdown comes when you have to draw a lot of objects, because
71
+ you have to call the wx.DC.DrawSomething call each time. This is plenty
72
+ fast for tens of objects, OK for hundreds of objects, but pretty darn
73
+ slow for thousands of objects.
74
+
75
+ If you are zoomed in, it checks the Bounding box of an object before
76
+ drawing it. This makes it a great deal faster when there are a lot of
77
+ objects and you are zoomed in so that only a few are shown.
78
+
79
+ Mouse Events:
80
+
81
+ There are a full set of custom mouse events. They are just like the
82
+ regular mouse events, but include an extra attribute: Event.GetCoords(),
83
+ that returns the (x,y) position in world coordinates, as a length-2
84
+ `NumPy <http://www.numpy.org/>`_ vector of Floats.
85
+
86
+ There are also a full set of bindings to mouse events on objects, so
87
+ that you can specify a given function be called when an object is
88
+ clicked, mouse-over'd, etc.
89
+
90
+ See the Demo for what it can do, and how to use it.
91
+
92
+ Copyright: Christopher Barker
93
+ License: Same as the version of wxPython you are using it with.
94
+
95
+ TRAC site for some docs and updates:
96
+
97
+ http://trac.paulmcnett.com/floatcanvas
98
+
99
+ Mailing List:
100
+
101
+ http://mail.paulmcnett.com/cgi-bin/mailman/listinfo/floatcanvas
102
+
103
+ The latest code is in the main wx SVN:
104
+
105
+ For classic:
106
+
107
+ http://svn.wxwidgets.org/viewvc/wx/wxPython/3rdParty/FloatCanvas/
108
+
109
+ For Phoenix:
110
+
111
+ http://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk/wx/lib/floatcanvas
112
+
113
+ Check for updates or answers to questions, send me an email.
114
+ Please let me know if you're using this!!!
115
+
116
+ Contact me at:
117
+
118
+ Chris.Barker@noaa.gov
119
+
120
+ """
121
+
122
+ __version__ = "0.9.18"
123
+
124
+