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/lib/plot/utils.py ADDED
@@ -0,0 +1,334 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=E1101, C0330, C0103
3
+ # E1101: Module X has no Y member
4
+ # C0330: Wrong continued indentation
5
+ # C0103: Invalid attribute/variable/method name
6
+ """
7
+ utils.py
8
+ =========
9
+
10
+ This is a collection of utilities used by the :mod:`wx.lib.plot` package.
11
+
12
+ """
13
+ __docformat__ = "restructuredtext en"
14
+
15
+ # Standard Library
16
+ import sys
17
+ import functools
18
+ import inspect
19
+ import itertools
20
+ from warnings import warn as _warn
21
+
22
+ # Third Party
23
+ import wx
24
+ import numpy as np
25
+
26
+ if sys.version_info >= (3, 11):
27
+ from typing import Self
28
+ else:
29
+ from typing_extensions import Self
30
+
31
+
32
+ class PlotPendingDeprecation(wx.wxPyDeprecationWarning):
33
+ pass
34
+
35
+ class DisplaySide(object):
36
+ """
37
+ Generic class for describing which sides of a box are displayed.
38
+
39
+ Used for fine-tuning the axis, ticks, and values of a graph.
40
+
41
+ This class somewhat mimics a collections.namedtuple factory function in
42
+ that it is an iterable and can have individual elements accessible by name.
43
+ It differs from a namedtuple in a few ways:
44
+
45
+ - it's mutable
46
+ - it's not a factory function but a full-fledged class
47
+ - it contains type checking, only allowing boolean values
48
+ - it contains name checking, only allowing valid_names as attributes
49
+
50
+ :param bottom: Display the bottom side
51
+ :type bottom: bool
52
+ :param left: Display the left side
53
+ :type left: bool
54
+ :param top: Display the top side
55
+ :type top: bool
56
+ :param right: Display the right side
57
+ :type right: bool
58
+ """
59
+ # TODO: Do I want to replace with __slots__?
60
+ # Not much memory gain because this class is only called a small
61
+ # number of times, but it would remove the need for part of
62
+ # __setattr__...
63
+ valid_names = ("bottom", "left", "right", "top")
64
+
65
+ def __init__(self, bottom, left, top, right):
66
+ if not all([isinstance(x, bool) for x in [bottom, left, top, right]]):
67
+ raise TypeError("All args must be bools")
68
+ self.bottom = bottom
69
+ self.left = left
70
+ self.top = top
71
+ self.right = right
72
+
73
+ def __str__(self):
74
+ s = "{}(bottom={}, left={}, top={}, right={})"
75
+ s = s.format(self.__class__.__name__,
76
+ self.bottom,
77
+ self.left,
78
+ self.top,
79
+ self.right,
80
+ )
81
+ return s
82
+
83
+ def __repr__(self):
84
+ # for now, just return the str representation
85
+ return self.__str__()
86
+
87
+ def __setattr__(self, name, value):
88
+ """
89
+ Override __setattr__ to implement some type checking and prevent
90
+ other attributes from being created.
91
+ """
92
+ if name not in self.valid_names:
93
+ err_str = "attribute must be one of {}"
94
+ raise NameError(err_str.format(self.valid_names))
95
+ if not isinstance(value, bool):
96
+ raise TypeError("'{}' must be a boolean".format(name))
97
+ self.__dict__[name] = value
98
+
99
+ def __len__(self):
100
+ return 4
101
+
102
+ def __hash__(self):
103
+ return hash(tuple(self))
104
+
105
+ def __getitem__(self, key):
106
+ return (self.bottom, self.left, self.top, self.right)[key]
107
+
108
+ def __setitem__(self, key, value):
109
+ if key == 0:
110
+ self.bottom = value
111
+ elif key == 1:
112
+ self.left = value
113
+ elif key == 2:
114
+ self.top = value
115
+ elif key == 3:
116
+ self.right = value
117
+ else:
118
+ raise IndexError("list index out of range")
119
+
120
+ def __iter__(self):
121
+ return iter([self.bottom, self.left, self.top, self.right])
122
+
123
+
124
+ # TODO: replace with wx.DCPenChanger/wx.DCBrushChanger, etc.
125
+ # Alternatively, replace those with this function...
126
+ class TempStyle(object):
127
+ """
128
+ Decorator / Context Manager to revert pen or brush changes.
129
+
130
+ Will revert pen, brush, or both to their previous values after a method
131
+ call or block finish.
132
+
133
+ :param which: The item to save and revert after execution. Can be
134
+ one of ``{'both', 'pen', 'brush'}``.
135
+ :type which: str
136
+ :param dc: The DC to get brush/pen info from.
137
+ :type dc: :class:`wx.DC`
138
+
139
+ ::
140
+
141
+ # Using as a method decorator:
142
+ @TempStyle() # same as @TempStyle('both')
143
+ def func(self, dc, a, b, c): # dc must be 1st arg (beside self)
144
+ # edit pen and brush here
145
+
146
+ # Or as a context manager:
147
+ with TempStyle('both', dc):
148
+ # do stuff
149
+
150
+ .. Note::
151
+
152
+ As of 2016-06-15, this can only be used as a decorator for **class
153
+ methods**, not standard functions. There is a plan to try and remove
154
+ this restriction, but I don't know when that will happen...
155
+
156
+ .. epigraph::
157
+
158
+ *Combination Decorator and Context Manager! Also makes Julienne fries!
159
+ Will not break! Will not... It broke!*
160
+
161
+ -- The Genie
162
+ """
163
+ _valid_types = {'both', 'pen', 'brush'}
164
+ _err_str = (
165
+ "No DC provided and unable to determine DC from context for function "
166
+ "`{func_name}`. When `{cls_name}` is used as a decorator, the "
167
+ "decorated function must have a wx.DC as a keyword arg 'dc=' or "
168
+ "as the first arg."
169
+ )
170
+
171
+ def __init__(self, which='both', dc=None):
172
+ if which not in self._valid_types:
173
+ raise ValueError(
174
+ "`which` must be one of {}".format(self._valid_types)
175
+ )
176
+ self.which = which
177
+ self.dc = dc
178
+ self.prevPen = None
179
+ self.prevBrush = None
180
+
181
+ def __call__(self, func):
182
+
183
+ @functools.wraps(func)
184
+ def wrapper(instance, dc, *args, **kwargs):
185
+ # fake the 'with' block. This solves:
186
+ # 1. plots only being shown on 2nd menu selection in demo
187
+ # 2. self.dc compalaining about not having a super called when
188
+ # trying to get or set the pen/brush values in __enter__ and
189
+ # __exit__:
190
+ # RuntimeError: super-class __init__() of type
191
+ # BufferedDC was never called
192
+ self._save_items(dc)
193
+ func(instance, dc, *args, **kwargs)
194
+ self._revert_items(dc)
195
+
196
+ #import copy # copy solves issue #1 above, but
197
+ #self.dc = copy.copy(dc) # possibly causes issue #2.
198
+
199
+ #with self:
200
+ # print('in with')
201
+ # func(instance, dc, *args, **kwargs)
202
+
203
+ return wrapper
204
+
205
+ def __enter__(self) -> Self:
206
+ self._save_items(self.dc)
207
+ return self
208
+
209
+ def __exit__(self, *exc):
210
+ self._revert_items(self.dc)
211
+ return False # True means exceptions *are* suppressed.
212
+
213
+ def _save_items(self, dc):
214
+ if self.which == 'both':
215
+ self._save_pen(dc)
216
+ self._save_brush(dc)
217
+ elif self.which == 'pen':
218
+ self._save_pen(dc)
219
+ elif self.which == 'brush':
220
+ self._save_brush(dc)
221
+ else:
222
+ err_str = ("How did you even get here?? This class forces "
223
+ "correct values for `which` at instancing..."
224
+ )
225
+ raise ValueError(err_str)
226
+
227
+ def _revert_items(self, dc):
228
+ if self.which == 'both':
229
+ self._revert_pen(dc)
230
+ self._revert_brush(dc)
231
+ elif self.which == 'pen':
232
+ self._revert_pen(dc)
233
+ elif self.which == 'brush':
234
+ self._revert_brush(dc)
235
+ else:
236
+ err_str = ("How did you even get here?? This class forces "
237
+ "correct values for `which` at instancing...")
238
+ raise ValueError(err_str)
239
+
240
+ def _save_pen(self, dc):
241
+ self.prevPen = dc.GetPen()
242
+
243
+ def _save_brush(self, dc):
244
+ self.prevBrush = dc.GetBrush()
245
+
246
+ def _revert_pen(self, dc):
247
+ dc.SetPen(self.prevPen)
248
+
249
+ def _revert_brush(self, dc):
250
+ dc.SetBrush(self.prevBrush)
251
+
252
+
253
+ def pendingDeprecation(new_func):
254
+ """
255
+ Raise `PendingDeprecationWarning` and display a message.
256
+
257
+ Uses inspect.stack() to determine the name of the item that this
258
+ is called from.
259
+
260
+ :param new_func: The name of the function that should be used instead.
261
+ :type new_func: string.
262
+ """
263
+ warn_txt = "`{}` is pending deprecation. Please use `{}` instead."
264
+ _warn(warn_txt.format(inspect.stack()[1][3], new_func),
265
+ PlotPendingDeprecation)
266
+
267
+
268
+ def scale_and_shift_point(x, y, scale=1, shift=0):
269
+ """
270
+ Creates a scaled and shifted 2x1 numpy array of [x, y] values.
271
+
272
+ The shift value must be in the scaled units.
273
+
274
+ :param float `x`: The x value of the unscaled, unshifted point
275
+ :param float `y`: The y valye of the unscaled, unshifted point
276
+ :param np.array `scale`: The scale factor to use ``[x_sacle, y_scale]``
277
+ :param np.array `shift`: The offset to apply ``[x_shift, y_shift]``.
278
+ Must be in scaled units
279
+
280
+ :returns: a numpy array of 2 elements
281
+ :rtype: np.array
282
+
283
+ .. note::
284
+
285
+ :math:`new = (scale * old) + shift`
286
+ """
287
+ point = scale * np.array([x, y]) + shift
288
+ return point
289
+
290
+
291
+ def set_displayside(value):
292
+ """
293
+ Wrapper around :class:`~wx.lib.plot._DisplaySide` that allows for "overloaded" calls.
294
+
295
+ If ``value`` is a boolean: all 4 sides are set to ``value``
296
+
297
+ If ``value`` is a 2-tuple: the bottom and left sides are set to ``value``
298
+ and the other sides are set to False.
299
+
300
+ If ``value`` is a 4-tuple, then each item is set individually: ``(bottom,
301
+ left, top, right)``
302
+
303
+ :param value: Which sides to display.
304
+ :type value: bool, 2-tuple of bool, or 4-tuple of bool
305
+ :raises: `TypeError` if setting an invalid value.
306
+ :raises: `ValueError` if the tuple has incorrect length.
307
+ :rtype: :class:`~wx.lib.plot._DisplaySide`
308
+ """
309
+ err_txt = ("value must be a bool or a 2- or 4-tuple of bool")
310
+
311
+ # TODO: for 2-tuple, do not change other sides? rather than set to False.
312
+ if isinstance(value, bool):
313
+ # turns on or off all axes
314
+ _value = (value, value, value, value)
315
+ elif isinstance(value, tuple):
316
+ if len(value) == 2:
317
+ _value = (value[0], value[1], False, False)
318
+ elif len(value) == 4:
319
+ _value = value
320
+ else:
321
+ raise ValueError(err_txt)
322
+ else:
323
+ raise TypeError(err_txt)
324
+ return DisplaySide(*_value)
325
+
326
+
327
+ def pairwise(iterable):
328
+ "s -> (s0,s1), (s1,s2), (s2, s3), ..."
329
+ a, b = itertools.tee(iterable)
330
+ next(b, None)
331
+ return zip(a, b)
332
+
333
+ if __name__ == "__main__":
334
+ raise RuntimeError("This module is not intended to be run by itself.")
wx/lib/popupctl.py ADDED
@@ -0,0 +1,251 @@
1
+ #----------------------------------------------------------------------
2
+ # Name: popup
3
+ # Purpose: Generic popup control
4
+ #
5
+ # Author: Gerrit van Dyk
6
+ #
7
+ # Created: 2002/11/20
8
+ # Version: 0.1
9
+ # License: wxWindows license
10
+ # Tags: phoenix-port
11
+ #----------------------------------------------------------------------
12
+ # 11/24/2007 - Cody Precord
13
+ #
14
+ # o Use RendererNative to draw button
15
+ #
16
+ # 12/09/2003 - Jeff Grimmett (grimmtooth@softhome.net)
17
+ #
18
+ # o 2.5 compatibility update.
19
+ #
20
+ # 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
21
+ #
22
+ # o wxPopupDialog -> PopupDialog
23
+ # o wxPopupControl -> PopupControl
24
+ #
25
+
26
+ import wx
27
+ from wx.lib.buttons import GenButtonEvent
28
+
29
+
30
+ class PopButton(wx.Control):
31
+ def __init__(self,*_args,**_kwargs):
32
+ wx.Control.__init__(self, *_args, **_kwargs)
33
+
34
+ self.up = True
35
+ self.didDown = False
36
+
37
+ self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
38
+ self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
39
+ self.Bind(wx.EVT_MOTION, self.OnMotion)
40
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
41
+
42
+ def Notify(self):
43
+ evt = GenButtonEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, self.GetId())
44
+ evt.SetIsDown(not self.up)
45
+ evt.SetButtonObj(self)
46
+ evt.SetEventObject(self)
47
+ self.GetEventHandler().ProcessEvent(evt)
48
+
49
+ def OnEraseBackground(self, event):
50
+ pass
51
+
52
+ def OnLeftDown(self, event):
53
+ if not self.IsEnabled():
54
+ return
55
+ self.didDown = True
56
+ self.up = False
57
+ self.CaptureMouse()
58
+ self.GetParent().textCtrl.SetFocus()
59
+ self.Refresh()
60
+ event.Skip()
61
+
62
+ def OnLeftUp(self, event):
63
+ if not self.IsEnabled():
64
+ return
65
+ if self.didDown:
66
+ self.ReleaseMouse()
67
+ if not self.up:
68
+ self.Notify()
69
+ self.up = True
70
+ self.Refresh()
71
+ self.didDown = False
72
+ event.Skip()
73
+
74
+ def OnMotion(self, event):
75
+ if not self.IsEnabled():
76
+ return
77
+ if event.LeftIsDown():
78
+ if self.didDown:
79
+ x,y = event.GetPosition()
80
+ w,h = self.GetClientSize()
81
+ if self.up and x<w and x>=0 and y<h and y>=0:
82
+ self.up = False
83
+ self.Refresh()
84
+ return
85
+ if not self.up and (x<0 or y<0 or x>=w or y>=h):
86
+ self.up = True
87
+ self.Refresh()
88
+ return
89
+ event.Skip()
90
+
91
+ def OnPaint(self, event):
92
+ dc = wx.BufferedPaintDC(self)
93
+ if self.up:
94
+ flag = wx.CONTROL_CURRENT
95
+ else:
96
+ flag = wx.CONTROL_PRESSED
97
+ wx.RendererNative.Get().DrawComboBoxDropButton(self, dc, self.GetClientRect(), flag)
98
+
99
+
100
+ #---------------------------------------------------------------------------
101
+
102
+
103
+ # Tried to use wxPopupWindow but the control misbehaves on MSW
104
+ class PopupDialog(wx.Dialog):
105
+ def __init__(self,parent,content = None):
106
+ wx.Dialog.__init__(self,parent,-1,'', style = wx.BORDER_SIMPLE|wx.STAY_ON_TOP)
107
+
108
+ self.ctrl = parent
109
+ self.win = wx.Window(self,-1,pos = (0,0),style = 0)
110
+
111
+ if content:
112
+ self.SetContent(content)
113
+
114
+ def SetContent(self,content):
115
+ self.content = content
116
+ self.content.Reparent(self.win)
117
+ self.content.Show(True)
118
+ self.win.SetClientSize(self.content.GetSize())
119
+ self.SetSize(self.win.GetSize())
120
+
121
+ def Display(self, align=wx.ALIGN_CENTER):
122
+ pos = self.ctrl.ClientToScreen( (0,0) )
123
+ dSize = wx.GetDisplaySize()
124
+ selfSize = self.GetSize()
125
+ tcSize = self.ctrl.GetSize()
126
+
127
+ if align == wx.ALIGN_CENTER:
128
+ pos.x -= (selfSize.width - tcSize.width) // 2
129
+ elif align == wx.ALIGN_RIGHT:
130
+ pos.x -= (selfSize.width - tcSize.width)
131
+ if pos.x + selfSize.width > dSize.width:
132
+ pos.x = dSize.width - selfSize.width
133
+ if pos.x < 0:
134
+ pos.x = 0
135
+
136
+ pos.y += tcSize.height
137
+ if pos.y + selfSize.height > dSize.height:
138
+ pos.y = dSize.height - selfSize.height
139
+ if pos.y < 0:
140
+ pos.y = 0
141
+
142
+ self.Move(pos)
143
+
144
+ self.ctrl.FormatContent()
145
+
146
+ self.ShowModal()
147
+
148
+
149
+ #---------------------------------------------------------------------------
150
+
151
+
152
+ class PopupControl(wx.Control):
153
+ def __init__(self,*_args,**_kwargs):
154
+ wx.Control.__init__(self, *_args, **_kwargs)
155
+
156
+ self.textCtrl = wx.TextCtrl(self, wx.ID_ANY, '', pos = (0,0))
157
+ self.bCtrl = PopButton(self, wx.ID_ANY, style=wx.BORDER_NONE)
158
+ self.pop = None
159
+ self.content = None
160
+ self.align = wx.ALIGN_CENTER
161
+
162
+ self.Bind(wx.EVT_SIZE, self.OnSize)
163
+ self.bCtrl.Bind(wx.EVT_BUTTON, self.OnButton, self.bCtrl)
164
+ self.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
165
+
166
+ self.SetInitialSize(_kwargs.get('size', wx.DefaultSize))
167
+ self.SendSizeEvent()
168
+
169
+ def SetPopupAlignment(self, align):
170
+ # Whether the pop dialog should align center, light or right
171
+ self.align = align
172
+
173
+
174
+ def OnFocus(self,evt):
175
+ # embedded control should get focus on TAB keypress
176
+ self.textCtrl.SetFocus()
177
+ evt.Skip()
178
+
179
+
180
+ def OnSize(self, evt):
181
+ # layout the child widgets
182
+ w,h = self.GetClientSize()
183
+ self.textCtrl.SetSize(0, 0, w - self.marginWidth - self.buttonWidth, h)
184
+ self.bCtrl.SetSize(w - self.buttonWidth, 0, self.buttonWidth, h)
185
+
186
+ def DoGetBestSize(self):
187
+ # calculate the best size of the combined control based on the
188
+ # needs of the child widgets.
189
+ tbs = self.textCtrl.GetBestSize()
190
+ return wx.Size(tbs.width + self.marginWidth + self.buttonWidth,
191
+ tbs.height)
192
+
193
+
194
+ def OnButton(self, evt):
195
+ if not self.pop:
196
+ if self.content:
197
+ self.pop = PopupDialog(self,self.content)
198
+ del self.content
199
+ else:
200
+ print('No Content to pop')
201
+ if self.pop:
202
+ self.pop.Display(self.align)
203
+
204
+
205
+ def Enable(self, flag):
206
+ wx.Control.Enable(self,flag)
207
+ self.textCtrl.Enable(flag)
208
+ self.bCtrl.Enable(flag)
209
+
210
+
211
+ def SetPopupContent(self, content):
212
+ if not self.pop:
213
+ self.content = content
214
+ self.content.Show(False)
215
+ else:
216
+ self.pop.SetContent(content)
217
+
218
+ def FormatContent(self):
219
+ pass
220
+
221
+ def PopDown(self):
222
+ if self.pop:
223
+ self.pop.EndModal(1)
224
+
225
+ def SetValue(self, value):
226
+ self.textCtrl.SetValue(value)
227
+
228
+ def GetValue(self):
229
+ return self.textCtrl.GetValue()
230
+
231
+ def SetFont(self, font):
232
+ self.textCtrl.SetFont(font)
233
+
234
+ def GetFont(self):
235
+ return self.textCtrl.GetFont()
236
+
237
+
238
+ def _get_marginWidth(self):
239
+ if 'wxMac' in wx.PlatformInfo:
240
+ return 6
241
+ else:
242
+ return 3
243
+ marginWidth = property(_get_marginWidth)
244
+
245
+ def _get_buttonWidth(self):
246
+ return 20
247
+ buttonWidth = property(_get_buttonWidth)
248
+
249
+
250
+ # an alias
251
+ PopupCtrl = PopupControl