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,200 @@
1
+ #----------------------------------------------------------------------
2
+ # Name: wx_cairocffi
3
+ # Purpose: wx.lib.wxcairo implementation functions for cairocffi
4
+ #
5
+ # Author: Robin Dunn
6
+ #
7
+ # Created: 19-July-2016
8
+ # Copyright: (c) 2016-2020 by Total Control Software
9
+ # Licence: wxWindows license
10
+ #
11
+ # Tags: phoenix-port, py3-port
12
+ #----------------------------------------------------------------------
13
+
14
+ """
15
+ wx.lib.wxcairo implementation functions using cairocffi.
16
+ """
17
+
18
+ import os
19
+ import os.path as op
20
+ import wx
21
+
22
+ # On Windows try to get cairocffi to import the Cairo DLLs included with
23
+ # wxPython instead of the first ones found on the system's PATH. Otherwise, if
24
+ # CAIRO is set in the environment then use that one instead. This hack is
25
+ # accomplished by temporarily altering the PATH and then restoring it after
26
+ # cairocffi has initialized.
27
+ if os.name == 'nt':
28
+ _save_path = os.environ.get('PATH')
29
+ _cairo_path = os.environ.get('CAIRO')
30
+ if not _cairo_path:
31
+ _cairo_path = op.abspath(op.dirname(wx.__file__))
32
+ os.environ['PATH'] = _cairo_path + os.pathsep + _save_path
33
+
34
+ import cairocffi
35
+ from cairocffi import cairo as cairo_c
36
+ from cairocffi import ffi
37
+
38
+ # Make it so subsequent `import cairo` statements still work as if it
39
+ # was really PyCairo
40
+ cairocffi.install_as_pycairo()
41
+
42
+ # Now restore the original PATH
43
+ if os.name == 'nt':
44
+ os.environ['PATH'] = _save_path
45
+
46
+
47
+ #----------------------------------------------------------------------------
48
+
49
+ # convenience functions, just to save a bit of typing below
50
+ def voidp(ptr):
51
+ """Convert a SIP void* type to a ffi cdata"""
52
+ if isinstance(ptr, ffi.CData):
53
+ return ptr
54
+ return ffi.cast('void *', int(ptr))
55
+
56
+ def ct_voidp(ptr):
57
+ """Convert a SIP void* type to a ctypes c_void_p"""
58
+ import ctypes
59
+ return ctypes.c_void_p(int(ptr))
60
+
61
+ #----------------------------------------------------------------------------
62
+
63
+ def _ContextFromDC(dc):
64
+ if not isinstance(dc, wx.WindowDC) and not isinstance(dc, wx.MemoryDC):
65
+ raise TypeError("Only window and memory DC's are supported at this time.")
66
+
67
+ if 'wxMac' in wx.PlatformInfo:
68
+ width, height = dc.GetSize()
69
+
70
+ # use the CGContextRef of the DC to make the cairo surface
71
+ cgc = dc.GetHandle()
72
+ assert cgc is not None and int(cgc) != 0, "Unable to get CGContext from DC."
73
+ ptr = voidp(cgc)
74
+ surfaceptr = cairo_c.cairo_quartz_surface_create_for_cg_context(
75
+ ptr, width, height)
76
+ surface = cairocffi.Surface._from_pointer(surfaceptr, False)
77
+
78
+ # Now create a cairo context for that surface
79
+ ctx = cairocffi.Context(surface)
80
+
81
+ elif 'wxMSW' in wx.PlatformInfo:
82
+ # Similarly, get the HDC and create a surface from it
83
+ hdc = voidp(dc.GetHandle())
84
+ surfaceptr = cairo_c.cairo_win32_surface_create(hdc)
85
+ surface = cairocffi.Surface._from_pointer(surfaceptr, False)
86
+
87
+ # Now create a cairo context for that surface
88
+ ctx = cairocffi.Context(surface)
89
+
90
+ elif 'wxGTK' in wx.PlatformInfo:
91
+ if 'gtk3' in wx.PlatformInfo:
92
+ # With wxGTK3, GetHandle() returns a cairo context directly
93
+ ctxptr = voidp( dc.GetHandle() )
94
+ ctx = cairocffi.Context._from_pointer(ctxptr, True)
95
+
96
+ else:
97
+ # Get the GdkDrawable from the dc
98
+ drawable = ct_voidp( dc.GetHandle() )
99
+
100
+ # Call a GDK API to create a cairo context
101
+ ctxptr = gdkLib.gdk_cairo_create(drawable)
102
+
103
+ # Turn it into a Cairo context object
104
+ ctx = cairocffi.Context._from_pointer(voidp(ctxptr), False)
105
+
106
+ else:
107
+ raise NotImplementedError("Help me, I'm lost...")
108
+
109
+ return ctx
110
+
111
+
112
+ #----------------------------------------------------------------------------
113
+
114
+ def _FontFaceFromFont(font):
115
+ if 'wxMac' in wx.PlatformInfo:
116
+ cgFont = voidp(font.OSXGetCGFont())
117
+ fontfaceptr = cairo_c.cairo_quartz_font_face_create_for_cgfont(cgFont)
118
+ fontface = cairocffi.FontFace._from_pointer(fontfaceptr, False)
119
+
120
+ elif 'wxMSW' in wx.PlatformInfo:
121
+ hfont = voidp(font.GetHFONT())
122
+ fontfaceptr = cairo_c.cairo_win32_font_face_create_for_hfont(hfont)
123
+ fontface = cairocffi.FontFace._from_pointer(fontfaceptr, False)
124
+
125
+ elif 'wxGTK' in wx.PlatformInfo:
126
+ # wow, this is a hell of a lot of steps...
127
+ desc = ct_voidp( font.GetPangoFontDescription() )
128
+
129
+ pcfm = ct_voidp(pcLib.pango_cairo_font_map_get_default())
130
+
131
+ pctx = ct_voidp(gdkLib.gdk_pango_context_get())
132
+
133
+ pfnt = ct_voidp( pcLib.pango_font_map_load_font(pcfm, pctx, desc) )
134
+
135
+ scaledfontptr = ct_voidp( pcLib.pango_cairo_font_get_scaled_font(pfnt) )
136
+
137
+ fontfaceptr = cairo_c.cairo_scaled_font_get_font_face(voidp(scaledfontptr.value))
138
+ fontface = cairocffi.FontFace._from_pointer(fontfaceptr, True)
139
+
140
+ gdkLib.g_object_unref(pctx)
141
+
142
+ else:
143
+ raise NotImplementedError("Help me, I'm lost...")
144
+
145
+ return fontface
146
+
147
+
148
+ #----------------------------------------------------------------------------
149
+ # GTK platforms we need to load some other shared libraries to help us get
150
+ # from wx objects to cairo objects. This is using ctypes mainly because it
151
+ # was already working this way in wx_pycairo.py and so it required fewer brain
152
+ # cells to be sacrificed to port it to this module.
153
+ #
154
+ # TODO: consider moving this code to use cffi instead, for consistency.
155
+
156
+ if 'wxGTK' in wx.PlatformInfo:
157
+ import ctypes
158
+ _dlls = dict()
159
+
160
+ def _findHelper(names, key, msg):
161
+ dll = _dlls.get(key, None)
162
+ if dll is not None:
163
+ return dll
164
+ location = None
165
+ for name in names:
166
+ location = ctypes.util.find_library(name)
167
+ if location:
168
+ break
169
+ if not location:
170
+ raise RuntimeError(msg)
171
+ dll = ctypes.CDLL(location)
172
+ _dlls[key] = dll
173
+ return dll
174
+
175
+
176
+ def _findGDKLib():
177
+ if 'gtk3' in wx.PlatformInfo:
178
+ libname = 'gdk-3'
179
+ else:
180
+ libname = 'gdk-x11-2.0'
181
+ return _findHelper([libname], 'gdk',
182
+ "Unable to find the GDK shared library")
183
+
184
+ def _findPangoCairoLib():
185
+ return _findHelper(['pangocairo-1.0'], 'pangocairo',
186
+ "Unable to find the pangocairo shared library")
187
+
188
+
189
+ gdkLib = _findGDKLib()
190
+ pcLib = _findPangoCairoLib()
191
+
192
+ gdkLib.gdk_cairo_create.restype = ctypes.c_void_p
193
+ gdkLib.gdk_pango_context_get.restype = ctypes.c_void_p
194
+
195
+ pcLib.pango_cairo_font_map_get_default.restype = ctypes.c_void_p
196
+ pcLib.pango_font_map_load_font.restype = ctypes.c_void_p
197
+ pcLib.pango_cairo_font_get_scaled_font.restype = ctypes.c_void_p
198
+
199
+
200
+ #----------------------------------------------------------------------------
@@ -0,0 +1,455 @@
1
+ #----------------------------------------------------------------------
2
+ # Name: wx_pycairo
3
+ # Purpose: wx.lib.wxcairo implementation functions for PyCairo
4
+ #
5
+ # Author: Robin Dunn
6
+ #
7
+ # Created: 3-Sept-2008
8
+ # Copyright: (c) 2008-2020 by Total Control Software
9
+ # Licence: wxWindows license
10
+ #
11
+ # Tags: phoenix-port, py3-port
12
+ #----------------------------------------------------------------------
13
+
14
+ """
15
+ wx.lib.wxcairo implementation functions using PyCairo.
16
+ """
17
+
18
+ import wx
19
+
20
+ import cairo
21
+ import ctypes
22
+ import ctypes.util
23
+
24
+
25
+ #----------------------------------------------------------------------------
26
+
27
+ # A reference to the cairo shared lib via ctypes.CDLL
28
+ cairoLib = None
29
+
30
+ # A reference to the pycairo C API structure
31
+ pycairoAPI = None
32
+
33
+
34
+ # a convenience function, just to save a bit of typing below
35
+ def voidp(ptr):
36
+ """Convert a SIP void* type to a ctypes c_void_p"""
37
+ return ctypes.c_void_p(int(ptr))
38
+
39
+ #----------------------------------------------------------------------------
40
+
41
+ def _ContextFromDC(dc):
42
+ """
43
+ Creates and returns a Cairo context object using the wxDC as the
44
+ surface. (Only window, client, paint and memory DC's are allowed
45
+ at this time.)
46
+ """
47
+ if not isinstance(dc, wx.WindowDC) and not isinstance(dc, wx.MemoryDC):
48
+ raise TypeError("Only window and memory DC's are supported at this time.")
49
+
50
+ if 'wxMac' in wx.PlatformInfo:
51
+ width, height = dc.GetSize()
52
+
53
+ # use the CGContextRef of the DC to make the cairo surface
54
+ cgc = dc.GetHandle()
55
+ assert cgc is not None, "Unable to get CGContext from DC."
56
+ cgref = voidp( cgc )
57
+ surfaceptr = voidp(surface_create(cgref, width, height))
58
+
59
+ # create a cairo context for that surface
60
+ ctxptr = voidp(cairo_create(surfaceptr))
61
+
62
+ # Turn it into a pycairo context object
63
+ ctx = pycairoAPI.Context_FromContext(ctxptr, pycairoAPI.Context_Type, None)
64
+
65
+ # The context keeps its own reference to the surface
66
+ cairoLib.cairo_surface_destroy(surfaceptr)
67
+
68
+ elif 'wxMSW' in wx.PlatformInfo:
69
+ # This one is easy, just fetch the HDC and use PyCairo to make
70
+ # the surface and context.
71
+ hdc = dc.GetHandle()
72
+ # Ensure the pointer value is clampped into the range of a C signed long
73
+ hdc = ctypes.c_long(hdc)
74
+ surface = cairo.Win32Surface(hdc.value)
75
+ ctx = cairo.Context(surface)
76
+
77
+ elif 'wxGTK' in wx.PlatformInfo:
78
+ if 'gtk3' in wx.PlatformInfo:
79
+ # With wxGTK3, GetHandle() returns a cairo context directly
80
+ ctxptr = voidp( dc.GetHandle() )
81
+
82
+ # pyCairo will try to destroy it so we need to increase ref count
83
+ cairoLib.cairo_reference(ctxptr)
84
+ else:
85
+ # Get the GdkDrawable from the dc
86
+ drawable = voidp( dc.GetHandle() )
87
+
88
+ # Call a GDK API to create a cairo context
89
+ ctxptr = gdkLib.gdk_cairo_create(drawable)
90
+
91
+ # Turn it into a pycairo context object
92
+ ctx = pycairoAPI.Context_FromContext(ctxptr, pycairoAPI.Context_Type, None)
93
+
94
+ else:
95
+ raise NotImplementedError("Help me, I'm lost...")
96
+
97
+ return ctx
98
+
99
+
100
+ #----------------------------------------------------------------------------
101
+
102
+ def _FontFaceFromFont(font):
103
+ """
104
+ Creates and returns a cairo.FontFace object from the native
105
+ information in a wx.Font.
106
+ """
107
+
108
+ if 'wxMac' in wx.PlatformInfo:
109
+ fontfaceptr = font_face_create(voidp(font.OSXGetCGFont()))
110
+ fontface = pycairoAPI.FontFace_FromFontFace(fontfaceptr)
111
+
112
+ elif 'wxMSW' in wx.PlatformInfo:
113
+ fontfaceptr = voidp( cairoLib.cairo_win32_font_face_create_for_hfont(
114
+ ctypes.c_ulong(int(font.GetHFONT()))) )
115
+ fontface = pycairoAPI.FontFace_FromFontFace(fontfaceptr)
116
+
117
+ elif 'wxGTK' in wx.PlatformInfo:
118
+ # wow, this is a hell of a lot of steps...
119
+ desc = voidp( font.GetPangoFontDescription() )
120
+
121
+ pcfm = voidp(pcLib.pango_cairo_font_map_get_default())
122
+
123
+ pctx = voidp(gdkLib.gdk_pango_context_get())
124
+
125
+ pfnt = voidp( pcLib.pango_font_map_load_font(pcfm, pctx, desc) )
126
+
127
+ scaledfontptr = voidp( pcLib.pango_cairo_font_get_scaled_font(pfnt) )
128
+
129
+ fontfaceptr = voidp(cairoLib.cairo_scaled_font_get_font_face(scaledfontptr))
130
+ cairoLib.cairo_font_face_reference(fontfaceptr)
131
+
132
+ fontface = pycairoAPI.FontFace_FromFontFace(fontfaceptr)
133
+
134
+ gdkLib.g_object_unref(pctx)
135
+
136
+ else:
137
+ raise NotImplementedError("Help me, I'm lost...")
138
+
139
+ return fontface
140
+
141
+
142
+ #----------------------------------------------------------------------------
143
+ # Only implementation helpers after this point
144
+ #----------------------------------------------------------------------------
145
+
146
+ def _findCairoLib():
147
+ """
148
+ Try to locate the Cairo shared library and make a CDLL for it.
149
+ """
150
+ global cairoLib
151
+ if cairoLib is not None:
152
+ return
153
+
154
+ names = ['cairo', 'cairo-2', 'libcairo', 'libcairo-2']
155
+
156
+ # first look using just the base name
157
+ for name in names:
158
+ try:
159
+ cairoLib = ctypes.CDLL(name)
160
+ return
161
+ except:
162
+ pass
163
+
164
+ # if that didn't work then use the ctypes util to search the paths
165
+ # appropriate for the system
166
+ for name in names:
167
+ location = ctypes.util.find_library(name)
168
+ if location:
169
+ try:
170
+ cairoLib = ctypes.CDLL(location)
171
+ return
172
+ except:
173
+ pass
174
+
175
+ # If the above didn't find it on OS X then we still have a
176
+ # trick up our sleeve...
177
+ if 'wxMac' in wx.PlatformInfo:
178
+ # look at the libs linked to by the pycairo extension module
179
+ import macholib.MachO
180
+ m = macholib.MachO.MachO(cairo._cairo.__file__)
181
+ for h in m.headers:
182
+ for idx, name, path in h.walkRelocatables():
183
+ if 'libcairo' in path:
184
+ try:
185
+ cairoLib = ctypes.CDLL(path)
186
+ return
187
+ except:
188
+ pass
189
+
190
+ if not cairoLib:
191
+ raise RuntimeError("Unable to find the Cairo shared library")
192
+
193
+
194
+
195
+ #----------------------------------------------------------------------------
196
+
197
+ # For other DLLs we'll just use a dictionary to track them, as there
198
+ # probably isn't any need to use them outside of this module.
199
+ _dlls = dict()
200
+
201
+ def _findHelper(names, key, msg):
202
+ dll = _dlls.get(key, None)
203
+ if dll is not None:
204
+ return dll
205
+ location = None
206
+ for name in names:
207
+ location = ctypes.util.find_library(name)
208
+ if location:
209
+ break
210
+ if not location:
211
+ raise RuntimeError(msg)
212
+ dll = ctypes.CDLL(location)
213
+ _dlls[key] = dll
214
+ return dll
215
+
216
+
217
+ def _findGDKLib():
218
+ if 'gtk3' in wx.PlatformInfo:
219
+ libname = 'gdk-3'
220
+ else:
221
+ libname = 'gdk-x11-2.0'
222
+ return _findHelper([libname], 'gdk',
223
+ "Unable to find the GDK shared library")
224
+
225
+ def _findPangoCairoLib():
226
+ return _findHelper(['pangocairo-1.0'], 'pangocairo',
227
+ "Unable to find the pangocairo shared library")
228
+ def _findAppSvcLib():
229
+ return _findHelper(['ApplicationServices'], 'appsvc',
230
+ "Unable to find the ApplicationServices Framework")
231
+
232
+
233
+ #----------------------------------------------------------------------------
234
+
235
+ # PyCairo exports a C API in a structure via a PyCObject. Using
236
+ # ctypes will let us use that API from Python too. We'll use it to
237
+ # convert a C pointer value to pycairo objects. The information about
238
+ # this API structure is gleaned from pycairo.h.
239
+
240
+ class Pycairo_CAPI(ctypes.Structure):
241
+ if cairo.version_info < (1,8): # This structure is known good with pycairo 1.6.4
242
+ _fields_ = [
243
+ ('Context_Type', ctypes.py_object),
244
+ ('Context_FromContext', ctypes.PYFUNCTYPE(ctypes.py_object,
245
+ ctypes.c_void_p,
246
+ ctypes.py_object,
247
+ ctypes.py_object)),
248
+ ('FontFace_Type', ctypes.py_object),
249
+ ('FontFace_FromFontFace', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
250
+ ('FontOptions_Type', ctypes.py_object),
251
+ ('FontOptions_FromFontOptions', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
252
+ ('Matrix_Type', ctypes.py_object),
253
+ ('Matrix_FromMatrix', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
254
+ ('Path_Type', ctypes.py_object),
255
+ ('Path_FromPath', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
256
+ ('Pattern_Type', ctypes.py_object),
257
+ ('SolidPattern_Type', ctypes.py_object),
258
+ ('SurfacePattern_Type', ctypes.py_object),
259
+ ('Gradient_Type', ctypes.py_object),
260
+ ('LinearGradient_Type', ctypes.py_object),
261
+ ('RadialGradient_Type', ctypes.py_object),
262
+ ('Pattern_FromPattern', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
263
+ ('ScaledFont_Type', ctypes.py_object),
264
+ ('ScaledFont_FromScaledFont', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
265
+ ('Surface_Type', ctypes.py_object),
266
+ ('ImageSurface_Type', ctypes.py_object),
267
+ ('PDFSurface_Type', ctypes.py_object),
268
+ ('PSSurface_Type', ctypes.py_object),
269
+ ('SVGSurface_Type', ctypes.py_object),
270
+ ('Win32Surface_Type', ctypes.py_object),
271
+ ('XlibSurface_Type', ctypes.py_object),
272
+ ('Surface_FromSurface', ctypes.PYFUNCTYPE(ctypes.py_object,
273
+ ctypes.c_void_p,
274
+ ctypes.py_object)),
275
+ ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int))]
276
+
277
+ # This structure is known good with pycairo 1.8.4.
278
+ # We have to also test for (1,10,8) because pycairo 1.8.10 has an
279
+ # incorrect version_info value
280
+ elif cairo.version_info < (1,9) or cairo.version_info == (1,10,8):
281
+ _fields_ = [
282
+ ('Context_Type', ctypes.py_object),
283
+ ('Context_FromContext', ctypes.PYFUNCTYPE(ctypes.py_object,
284
+ ctypes.c_void_p,
285
+ ctypes.py_object,
286
+ ctypes.py_object)),
287
+ ('FontFace_Type', ctypes.py_object),
288
+ ('ToyFontFace_Type', ctypes.py_object), #** new in 1.8.4
289
+ ('FontFace_FromFontFace', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
290
+ ('FontOptions_Type', ctypes.py_object),
291
+ ('FontOptions_FromFontOptions', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
292
+ ('Matrix_Type', ctypes.py_object),
293
+ ('Matrix_FromMatrix', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
294
+ ('Path_Type', ctypes.py_object),
295
+ ('Path_FromPath', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
296
+ ('Pattern_Type', ctypes.py_object),
297
+ ('SolidPattern_Type', ctypes.py_object),
298
+ ('SurfacePattern_Type', ctypes.py_object),
299
+ ('Gradient_Type', ctypes.py_object),
300
+ ('LinearGradient_Type', ctypes.py_object),
301
+ ('RadialGradient_Type', ctypes.py_object),
302
+ ('Pattern_FromPattern', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p,
303
+ ctypes.py_object)), #** changed in 1.8.4
304
+ ('ScaledFont_Type', ctypes.py_object),
305
+ ('ScaledFont_FromScaledFont', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
306
+ ('Surface_Type', ctypes.py_object),
307
+ ('ImageSurface_Type', ctypes.py_object),
308
+ ('PDFSurface_Type', ctypes.py_object),
309
+ ('PSSurface_Type', ctypes.py_object),
310
+ ('SVGSurface_Type', ctypes.py_object),
311
+ ('Win32Surface_Type', ctypes.py_object),
312
+ ('XlibSurface_Type', ctypes.py_object),
313
+ ('Surface_FromSurface', ctypes.PYFUNCTYPE(ctypes.py_object,
314
+ ctypes.c_void_p,
315
+ ctypes.py_object)),
316
+ ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int))]
317
+
318
+ # This structure is known good with pycairo 1.10.0. They keep adding stuff
319
+ # to the middle of the structure instead of only adding to the end!
320
+ elif cairo.version_info < (1,11):
321
+ _fields_ = [
322
+ ('Context_Type', ctypes.py_object),
323
+ ('Context_FromContext', ctypes.PYFUNCTYPE(ctypes.py_object,
324
+ ctypes.c_void_p,
325
+ ctypes.py_object,
326
+ ctypes.py_object)),
327
+ ('FontFace_Type', ctypes.py_object),
328
+ ('ToyFontFace_Type', ctypes.py_object),
329
+ ('FontFace_FromFontFace', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
330
+ ('FontOptions_Type', ctypes.py_object),
331
+ ('FontOptions_FromFontOptions', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
332
+ ('Matrix_Type', ctypes.py_object),
333
+ ('Matrix_FromMatrix', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
334
+ ('Path_Type', ctypes.py_object),
335
+ ('Path_FromPath', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
336
+ ('Pattern_Type', ctypes.py_object),
337
+ ('SolidPattern_Type', ctypes.py_object),
338
+ ('SurfacePattern_Type', ctypes.py_object),
339
+ ('Gradient_Type', ctypes.py_object),
340
+ ('LinearGradient_Type', ctypes.py_object),
341
+ ('RadialGradient_Type', ctypes.py_object),
342
+ ('Pattern_FromPattern', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p,
343
+ ctypes.py_object)), #** changed in 1.8.4
344
+ ('ScaledFont_Type', ctypes.py_object),
345
+ ('ScaledFont_FromScaledFont', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
346
+ ('Surface_Type', ctypes.py_object),
347
+ ('ImageSurface_Type', ctypes.py_object),
348
+ ('PDFSurface_Type', ctypes.py_object),
349
+ ('PSSurface_Type', ctypes.py_object),
350
+ ('SVGSurface_Type', ctypes.py_object),
351
+ ('Win32Surface_Type', ctypes.py_object),
352
+ ('Win32PrintingSurface_Type', ctypes.py_object), #** new
353
+ ('XCBSurface_Type', ctypes.py_object), #** new
354
+ ('XlibSurface_Type', ctypes.py_object),
355
+ ('Surface_FromSurface', ctypes.PYFUNCTYPE(ctypes.py_object,
356
+ ctypes.c_void_p,
357
+ ctypes.py_object)),
358
+ ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int))]
359
+
360
+ # This structure is known good with pycairo 1.11.1+.
361
+ else:
362
+ _fields_ = [
363
+ ('Context_Type', ctypes.py_object),
364
+ ('Context_FromContext', ctypes.PYFUNCTYPE(ctypes.py_object,
365
+ ctypes.c_void_p,
366
+ ctypes.py_object,
367
+ ctypes.py_object)),
368
+ ('FontFace_Type', ctypes.py_object),
369
+ ('ToyFontFace_Type', ctypes.py_object),
370
+ ('FontFace_FromFontFace', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
371
+ ('FontOptions_Type', ctypes.py_object),
372
+ ('FontOptions_FromFontOptions', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
373
+ ('Matrix_Type', ctypes.py_object),
374
+ ('Matrix_FromMatrix', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
375
+ ('Path_Type', ctypes.py_object),
376
+ ('Path_FromPath', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
377
+ ('Pattern_Type', ctypes.py_object),
378
+ ('SolidPattern_Type', ctypes.py_object),
379
+ ('SurfacePattern_Type', ctypes.py_object),
380
+ ('Gradient_Type', ctypes.py_object),
381
+ ('LinearGradient_Type', ctypes.py_object),
382
+ ('RadialGradient_Type', ctypes.py_object),
383
+ ('Pattern_FromPattern', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p,
384
+ ctypes.py_object)), #** changed in 1.8.4
385
+ ('ScaledFont_Type', ctypes.py_object),
386
+ ('ScaledFont_FromScaledFont', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
387
+ ('Surface_Type', ctypes.py_object),
388
+ ('ImageSurface_Type', ctypes.py_object),
389
+ ('PDFSurface_Type', ctypes.py_object),
390
+ ('PSSurface_Type', ctypes.py_object),
391
+ ('SVGSurface_Type', ctypes.py_object),
392
+ ('Win32Surface_Type', ctypes.py_object),
393
+ ('Win32PrintingSurface_Type', ctypes.py_object), #** new
394
+ ('XCBSurface_Type', ctypes.py_object), #** new
395
+ ('XlibSurface_Type', ctypes.py_object),
396
+ ('Surface_FromSurface', ctypes.PYFUNCTYPE(ctypes.py_object,
397
+ ctypes.c_void_p,
398
+ ctypes.py_object)),
399
+ ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int)),
400
+ ('RectangleInt_Type', ctypes.py_object),
401
+ ('RectangleInt_FromRectangleInt', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
402
+ ('Region_Type', ctypes.py_object),
403
+ ('Region_FromRegion', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
404
+ ('RecordingSurface_Type', ctypes.py_object)]
405
+
406
+
407
+ def _loadPycairoAPI():
408
+ global pycairoAPI
409
+ if pycairoAPI is not None:
410
+ return
411
+
412
+ if not hasattr(cairo, 'CAPI'):
413
+ return
414
+
415
+ PyCapsule_GetPointer = ctypes.pythonapi.PyCapsule_GetPointer
416
+ PyCapsule_GetPointer.argtypes = [ctypes.py_object, ctypes.c_char_p]
417
+ PyCapsule_GetPointer.restype = ctypes.c_void_p
418
+ ptr = PyCapsule_GetPointer(cairo.CAPI, b'cairo.CAPI')
419
+ pycairoAPI = ctypes.cast(ptr, ctypes.POINTER(Pycairo_CAPI)).contents
420
+
421
+ #----------------------------------------------------------------------------
422
+
423
+ # Load these at import time. That seems a bit better than doing it at
424
+ # first use...
425
+ _findCairoLib()
426
+ _loadPycairoAPI()
427
+
428
+ if 'wxMac' in wx.PlatformInfo:
429
+ surface_create = cairoLib.cairo_quartz_surface_create_for_cg_context
430
+ surface_create.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int]
431
+ surface_create.restype = ctypes.c_void_p
432
+
433
+ cairo_create = cairoLib.cairo_create
434
+ cairo_create.argtypes = [ctypes.c_void_p]
435
+ cairo_create.restype = ctypes.c_void_p
436
+
437
+ font_face_create = cairoLib.cairo_quartz_font_face_create_for_cgfont
438
+ font_face_create.argtypes = [ctypes.c_void_p]
439
+ font_face_create.restype = ctypes.c_void_p
440
+
441
+ elif 'wxMSW' in wx.PlatformInfo:
442
+ cairoLib.cairo_win32_font_face_create_for_hfont.restype = ctypes.c_void_p
443
+
444
+ elif 'wxGTK' in wx.PlatformInfo:
445
+ gdkLib = _findGDKLib()
446
+ pcLib = _findPangoCairoLib()
447
+
448
+ gdkLib.gdk_cairo_create.restype = ctypes.c_void_p
449
+ pcLib.pango_cairo_font_map_get_default.restype = ctypes.c_void_p
450
+ gdkLib.gdk_pango_context_get.restype = ctypes.c_void_p
451
+ pcLib.pango_font_map_load_font.restype = ctypes.c_void_p
452
+ pcLib.pango_cairo_font_get_scaled_font.restype = ctypes.c_void_p
453
+ cairoLib.cairo_scaled_font_get_font_face.restype = ctypes.c_void_p
454
+
455
+ #----------------------------------------------------------------------------