wxPython 4.3.2__cp315-cp315-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. wx/WebView2Loader.dll +0 -0
  2. wx/__init__.py +22 -0
  3. wx/__init__.pyi +10 -0
  4. wx/__version__.py +9 -0
  5. wx/__version__.pyi +15 -0
  6. wx/_adv.cp315-win_amd64.pyd +0 -0
  7. wx/_aui.cp315-win_amd64.pyd +0 -0
  8. wx/_core.cp315-win_amd64.pyd +0 -0
  9. wx/_dataview.cp315-win_amd64.pyd +0 -0
  10. wx/_glcanvas.cp315-win_amd64.pyd +0 -0
  11. wx/_grid.cp315-win_amd64.pyd +0 -0
  12. wx/_html.cp315-win_amd64.pyd +0 -0
  13. wx/_html2.cp315-win_amd64.pyd +0 -0
  14. wx/_media.cp315-win_amd64.pyd +0 -0
  15. wx/_msw.cp315-win_amd64.pyd +0 -0
  16. wx/_propgrid.cp315-win_amd64.pyd +0 -0
  17. wx/_ribbon.cp315-win_amd64.pyd +0 -0
  18. wx/_richtext.cp315-win_amd64.pyd +0 -0
  19. wx/_stc.cp315-win_amd64.pyd +0 -0
  20. wx/_xml.cp315-win_amd64.pyd +0 -0
  21. wx/_xrc.cp315-win_amd64.pyd +0 -0
  22. wx/adv.py +127 -0
  23. wx/adv.pyi +5931 -0
  24. wx/aui.py +70 -0
  25. wx/aui.pyi +4805 -0
  26. wx/core.py +3417 -0
  27. wx/core.pyi +62949 -0
  28. wx/dataview.py +176 -0
  29. wx/dataview.pyi +3828 -0
  30. wx/gizmos.py +18 -0
  31. wx/glcanvas.py +13 -0
  32. wx/glcanvas.pyi +544 -0
  33. wx/grid.py +237 -0
  34. wx/grid.pyi +5678 -0
  35. wx/html.py +38 -0
  36. wx/html.pyi +3283 -0
  37. wx/html2.py +46 -0
  38. wx/html2.pyi +1301 -0
  39. wx/include/wxPython/sip.h +1938 -0
  40. wx/include/wxPython/wxpy_api.h +418 -0
  41. wx/lib/CDate.py +201 -0
  42. wx/lib/ClickableHtmlWindow.py +57 -0
  43. wx/lib/__init__.py +0 -0
  44. wx/lib/activex.py +178 -0
  45. wx/lib/activexwrapper.py +153 -0
  46. wx/lib/agw/__init__.py +128 -0
  47. wx/lib/agw/advancedsplash.py +563 -0
  48. wx/lib/agw/aquabutton.py +1127 -0
  49. wx/lib/agw/artmanager.py +2110 -0
  50. wx/lib/agw/aui/__init__.py +295 -0
  51. wx/lib/agw/aui/aui_constants.py +2616 -0
  52. wx/lib/agw/aui/aui_switcherdialog.py +1232 -0
  53. wx/lib/agw/aui/aui_utilities.py +648 -0
  54. wx/lib/agw/aui/auibar.py +4045 -0
  55. wx/lib/agw/aui/auibook.py +6288 -0
  56. wx/lib/agw/aui/dockart.py +1198 -0
  57. wx/lib/agw/aui/framemanager.py +10485 -0
  58. wx/lib/agw/aui/tabart.py +2749 -0
  59. wx/lib/agw/aui/tabmdi.py +679 -0
  60. wx/lib/agw/balloontip.py +1157 -0
  61. wx/lib/agw/buttonpanel.py +2787 -0
  62. wx/lib/agw/cubecolourdialog.py +3529 -0
  63. wx/lib/agw/customtreectrl.py +9908 -0
  64. wx/lib/agw/data/ShortcutEditor_1.png +0 -0
  65. wx/lib/agw/data/ShortcutEditor_1_thumb.png +0 -0
  66. wx/lib/agw/data/ShortcutEditor_2.png +0 -0
  67. wx/lib/agw/data/ShortcutEditor_2_thumb.png +0 -0
  68. wx/lib/agw/data/ShortcutEditor_3.png +0 -0
  69. wx/lib/agw/data/ShortcutEditor_3_thumb.png +0 -0
  70. wx/lib/agw/data/ShortcutEditor_4.png +0 -0
  71. wx/lib/agw/data/ShortcutEditor_4_thumb.png +0 -0
  72. wx/lib/agw/data/default_help_text.html +105 -0
  73. wx/lib/agw/flatmenu.py +7392 -0
  74. wx/lib/agw/flatnotebook.py +6669 -0
  75. wx/lib/agw/floatspin.py +1820 -0
  76. wx/lib/agw/fmcustomizedlg.py +535 -0
  77. wx/lib/agw/fmresources.py +407 -0
  78. wx/lib/agw/foldpanelbar.py +2282 -0
  79. wx/lib/agw/fourwaysplitter.py +1130 -0
  80. wx/lib/agw/genericmessagedialog.py +1549 -0
  81. wx/lib/agw/gradientbutton.py +731 -0
  82. wx/lib/agw/hyperlink.py +664 -0
  83. wx/lib/agw/hypertreelist.py +5756 -0
  84. wx/lib/agw/infobar.py +885 -0
  85. wx/lib/agw/knobctrl.py +944 -0
  86. wx/lib/agw/labelbook.py +3028 -0
  87. wx/lib/agw/multidirdialog.py +581 -0
  88. wx/lib/agw/peakmeter.py +1028 -0
  89. wx/lib/agw/persist/__init__.py +188 -0
  90. wx/lib/agw/persist/persist_constants.py +283 -0
  91. wx/lib/agw/persist/persist_handlers.py +2614 -0
  92. wx/lib/agw/persist/persistencemanager.py +863 -0
  93. wx/lib/agw/piectrl.py +1082 -0
  94. wx/lib/agw/pybusyinfo.py +399 -0
  95. wx/lib/agw/pycollapsiblepane.py +940 -0
  96. wx/lib/agw/pygauge.py +570 -0
  97. wx/lib/agw/pyprogress.py +916 -0
  98. wx/lib/agw/ribbon/__init__.py +198 -0
  99. wx/lib/agw/ribbon/art.py +219 -0
  100. wx/lib/agw/ribbon/art_aui.py +1283 -0
  101. wx/lib/agw/ribbon/art_default.py +81 -0
  102. wx/lib/agw/ribbon/art_internal.py +248 -0
  103. wx/lib/agw/ribbon/art_msw.py +2735 -0
  104. wx/lib/agw/ribbon/art_osx.py +52 -0
  105. wx/lib/agw/ribbon/bar.py +1259 -0
  106. wx/lib/agw/ribbon/buttonbar.py +1317 -0
  107. wx/lib/agw/ribbon/control.py +205 -0
  108. wx/lib/agw/ribbon/gallery.py +973 -0
  109. wx/lib/agw/ribbon/page.py +946 -0
  110. wx/lib/agw/ribbon/panel.py +1170 -0
  111. wx/lib/agw/ribbon/toolbar.py +1441 -0
  112. wx/lib/agw/rulerctrl.py +1885 -0
  113. wx/lib/agw/scrolledthumbnail.py +2116 -0
  114. wx/lib/agw/shapedbutton.py +1809 -0
  115. wx/lib/agw/shortcuteditor.py +2642 -0
  116. wx/lib/agw/speedmeter.py +1800 -0
  117. wx/lib/agw/supertooltip.py +1443 -0
  118. wx/lib/agw/thumbnailctrl.py +529 -0
  119. wx/lib/agw/toasterbox.py +1327 -0
  120. wx/lib/agw/ultimatelistctrl.py +13671 -0
  121. wx/lib/agw/xlsgrid.py +2111 -0
  122. wx/lib/agw/zoombar.py +1336 -0
  123. wx/lib/analogclock/__init__.py +140 -0
  124. wx/lib/analogclock/analogclock.py +630 -0
  125. wx/lib/analogclock/helpers.py +986 -0
  126. wx/lib/analogclock/lib_setup/__init__.py +0 -0
  127. wx/lib/analogclock/lib_setup/buttontreectrlpanel.py +297 -0
  128. wx/lib/analogclock/lib_setup/fontselect.py +57 -0
  129. wx/lib/analogclock/setup.py +490 -0
  130. wx/lib/analogclock/styles.py +47 -0
  131. wx/lib/anchors.py +103 -0
  132. wx/lib/art/__init__.py +4 -0
  133. wx/lib/art/flagart.py +1583 -0
  134. wx/lib/art/img2pyartprov.py +56 -0
  135. wx/lib/busy.py +152 -0
  136. wx/lib/buttons.py +1140 -0
  137. wx/lib/calendar.py +1596 -0
  138. wx/lib/checkbox.py +837 -0
  139. wx/lib/colourchooser/__init__.py +36 -0
  140. wx/lib/colourchooser/canvas.py +145 -0
  141. wx/lib/colourchooser/intl.py +24 -0
  142. wx/lib/colourchooser/pycolourbox.py +89 -0
  143. wx/lib/colourchooser/pycolourchooser.py +626 -0
  144. wx/lib/colourchooser/pycolourslider.py +98 -0
  145. wx/lib/colourchooser/pypalette.py +208 -0
  146. wx/lib/colourdb.py +740 -0
  147. wx/lib/colourselect.py +385 -0
  148. wx/lib/colourutils.py +118 -0
  149. wx/lib/combotreebox.py +944 -0
  150. wx/lib/delayedresult.py +420 -0
  151. wx/lib/dialogs.py +510 -0
  152. wx/lib/docview.py +3210 -0
  153. wx/lib/dragscroller.py +79 -0
  154. wx/lib/editor/README.txt +77 -0
  155. wx/lib/editor/__init__.py +24 -0
  156. wx/lib/editor/editor.py +974 -0
  157. wx/lib/editor/images.py +15 -0
  158. wx/lib/editor/selection.py +44 -0
  159. wx/lib/embeddedimage.py +76 -0
  160. wx/lib/eventStack.py +136 -0
  161. wx/lib/eventwatcher.py +440 -0
  162. wx/lib/evtmgr.py +521 -0
  163. wx/lib/expando.py +393 -0
  164. wx/lib/fancytext.py +494 -0
  165. wx/lib/filebrowsebutton.py +461 -0
  166. wx/lib/flashwin.py +262 -0
  167. wx/lib/flashwin_old.py +651 -0
  168. wx/lib/floatcanvas/FCEvents.py +53 -0
  169. wx/lib/floatcanvas/FCObjects.py +2910 -0
  170. wx/lib/floatcanvas/FloatCanvas.py +1025 -0
  171. wx/lib/floatcanvas/GUIMode.py +396 -0
  172. wx/lib/floatcanvas/NavCanvas.py +162 -0
  173. wx/lib/floatcanvas/Resources.py +319 -0
  174. wx/lib/floatcanvas/ScreenShot.py +1788 -0
  175. wx/lib/floatcanvas/Utilities/BBox.py +313 -0
  176. wx/lib/floatcanvas/Utilities/Colors.py +137 -0
  177. wx/lib/floatcanvas/Utilities/GUI.py +91 -0
  178. wx/lib/floatcanvas/Utilities/__init__.py +7 -0
  179. wx/lib/floatcanvas/__init__.py +124 -0
  180. wx/lib/foldmenu.py +89 -0
  181. wx/lib/gestures.py +310 -0
  182. wx/lib/gizmos/__init__.py +18 -0
  183. wx/lib/gizmos/dynamicsash.py +1202 -0
  184. wx/lib/gizmos/ledctrl.py +299 -0
  185. wx/lib/gizmos/treelistctrl.py +87 -0
  186. wx/lib/graphics.py +1942 -0
  187. wx/lib/gridmovers.py +516 -0
  188. wx/lib/iewin.py +249 -0
  189. wx/lib/iewin_old.py +894 -0
  190. wx/lib/imagebrowser.py +853 -0
  191. wx/lib/imageutils.py +163 -0
  192. wx/lib/infoframe.py +490 -0
  193. wx/lib/inspection.py +1254 -0
  194. wx/lib/intctrl.py +990 -0
  195. wx/lib/itemspicker.py +256 -0
  196. wx/lib/langlistctrl.py +480 -0
  197. wx/lib/layoutf.py +271 -0
  198. wx/lib/masked/__init__.py +27 -0
  199. wx/lib/masked/combobox.py +839 -0
  200. wx/lib/masked/ctrl.py +108 -0
  201. wx/lib/masked/ipaddrctrl.py +241 -0
  202. wx/lib/masked/maskededit.py +7262 -0
  203. wx/lib/masked/numctrl.py +2000 -0
  204. wx/lib/masked/textctrl.py +465 -0
  205. wx/lib/masked/timectrl.py +1465 -0
  206. wx/lib/mixins/__init__.py +17 -0
  207. wx/lib/mixins/grid.py +47 -0
  208. wx/lib/mixins/gridlabelrenderer.py +277 -0
  209. wx/lib/mixins/imagelist.py +77 -0
  210. wx/lib/mixins/inspection.py +184 -0
  211. wx/lib/mixins/listctrl.py +893 -0
  212. wx/lib/mixins/rubberband.py +403 -0
  213. wx/lib/mixins/treemixin.py +678 -0
  214. wx/lib/msgpanel.py +95 -0
  215. wx/lib/multisash.py +746 -0
  216. wx/lib/myole4ax.idl +178 -0
  217. wx/lib/myole4ax.tlb +0 -0
  218. wx/lib/newevent.py +229 -0
  219. wx/lib/newevent.pyi +25 -0
  220. wx/lib/nvdlg.py +156 -0
  221. wx/lib/ogl/__init__.py +13 -0
  222. wx/lib/ogl/basic.py +3989 -0
  223. wx/lib/ogl/bmpshape.py +86 -0
  224. wx/lib/ogl/canvas.py +467 -0
  225. wx/lib/ogl/composit.py +1576 -0
  226. wx/lib/ogl/diagram.py +230 -0
  227. wx/lib/ogl/divided.py +482 -0
  228. wx/lib/ogl/drawn.py +898 -0
  229. wx/lib/ogl/lines.py +1809 -0
  230. wx/lib/ogl/oglmisc.py +607 -0
  231. wx/lib/pdfviewer/__init__.py +113 -0
  232. wx/lib/pdfviewer/bitmaps/ArrowLeft.png +0 -0
  233. wx/lib/pdfviewer/bitmaps/ArrowRight.png +0 -0
  234. wx/lib/pdfviewer/bitmaps/DirectionH.png +0 -0
  235. wx/lib/pdfviewer/bitmaps/DirectionV.png +0 -0
  236. wx/lib/pdfviewer/bitmaps/PlayerFirst.png +0 -0
  237. wx/lib/pdfviewer/bitmaps/PlayerLast.png +0 -0
  238. wx/lib/pdfviewer/bitmaps/PlayerNext.png +0 -0
  239. wx/lib/pdfviewer/bitmaps/PlayerPrev.png +0 -0
  240. wx/lib/pdfviewer/bitmaps/Printer.png +0 -0
  241. wx/lib/pdfviewer/bitmaps/ReadMe.txt +28 -0
  242. wx/lib/pdfviewer/bitmaps/Save.png +0 -0
  243. wx/lib/pdfviewer/bitmaps/ZoomIn.png +0 -0
  244. wx/lib/pdfviewer/bitmaps/ZoomOut.png +0 -0
  245. wx/lib/pdfviewer/bitmaps/encode_bitmaps.py +37 -0
  246. wx/lib/pdfviewer/buttonpanel.py +285 -0
  247. wx/lib/pdfviewer/images.py +240 -0
  248. wx/lib/pdfviewer/viewer.py +1118 -0
  249. wx/lib/pdfwin.py +295 -0
  250. wx/lib/pdfwin_old.py +789 -0
  251. wx/lib/platebtn.py +789 -0
  252. wx/lib/plot/CHANGELOG.md +150 -0
  253. wx/lib/plot/README.md +16 -0
  254. wx/lib/plot/__init__.py +46 -0
  255. wx/lib/plot/__main__.py +5 -0
  256. wx/lib/plot/examples/__init__.py +0 -0
  257. wx/lib/plot/examples/demo.py +1010 -0
  258. wx/lib/plot/examples/simple_example.py +56 -0
  259. wx/lib/plot/plotcanvas.py +2985 -0
  260. wx/lib/plot/polyobjects.py +1524 -0
  261. wx/lib/plot/utils.py +334 -0
  262. wx/lib/popupctl.py +251 -0
  263. wx/lib/printout.py +1155 -0
  264. wx/lib/progressindicator.py +151 -0
  265. wx/lib/pubsub/LICENSE_BSD_Simple.txt +23 -0
  266. wx/lib/pubsub/README_WxPython.txt +22 -0
  267. wx/lib/pubsub/RELEASE_NOTES.txt +71 -0
  268. wx/lib/pubsub/__init__.py +25 -0
  269. wx/lib/pubsub/core/__init__.py +92 -0
  270. wx/lib/pubsub/core/arg1/__init__.py +16 -0
  271. wx/lib/pubsub/core/arg1/listenerimpl.py +97 -0
  272. wx/lib/pubsub/core/arg1/publisher.py +40 -0
  273. wx/lib/pubsub/core/arg1/publishermixin.py +34 -0
  274. wx/lib/pubsub/core/arg1/topicargspecimpl.py +66 -0
  275. wx/lib/pubsub/core/arg1/topicmgrimpl.py +19 -0
  276. wx/lib/pubsub/core/callables.py +198 -0
  277. wx/lib/pubsub/core/imp2.py +62 -0
  278. wx/lib/pubsub/core/itopicdefnprovider.py +0 -0
  279. wx/lib/pubsub/core/kwargs/__init__.py +16 -0
  280. wx/lib/pubsub/core/kwargs/datamsg.py +27 -0
  281. wx/lib/pubsub/core/kwargs/listenerimpl.py +93 -0
  282. wx/lib/pubsub/core/kwargs/publisher.py +77 -0
  283. wx/lib/pubsub/core/kwargs/publishermixin.py +65 -0
  284. wx/lib/pubsub/core/kwargs/topicargspecimpl.py +216 -0
  285. wx/lib/pubsub/core/kwargs/topicmgrimpl.py +13 -0
  286. wx/lib/pubsub/core/listener.py +40 -0
  287. wx/lib/pubsub/core/listenerbase.py +185 -0
  288. wx/lib/pubsub/core/notificationmgr.py +185 -0
  289. wx/lib/pubsub/core/publisherbase.py +189 -0
  290. wx/lib/pubsub/core/topicargspec.py +77 -0
  291. wx/lib/pubsub/core/topicdefnprovider.py +631 -0
  292. wx/lib/pubsub/core/topicexc.py +72 -0
  293. wx/lib/pubsub/core/topicmgr.py +454 -0
  294. wx/lib/pubsub/core/topicobj.py +472 -0
  295. wx/lib/pubsub/core/topictreetraverser.py +143 -0
  296. wx/lib/pubsub/core/topicutils.py +119 -0
  297. wx/lib/pubsub/core/treeconfig.py +21 -0
  298. wx/lib/pubsub/core/validatedefnargs.py +29 -0
  299. wx/lib/pubsub/core/weakmethod.py +102 -0
  300. wx/lib/pubsub/policies.py +24 -0
  301. wx/lib/pubsub/pub.py +199 -0
  302. wx/lib/pubsub/setuparg1.py +47 -0
  303. wx/lib/pubsub/setupkwargs.py +29 -0
  304. wx/lib/pubsub/utils/__init__.py +27 -0
  305. wx/lib/pubsub/utils/exchandling.py +100 -0
  306. wx/lib/pubsub/utils/misc.py +99 -0
  307. wx/lib/pubsub/utils/notification.py +331 -0
  308. wx/lib/pubsub/utils/topictreeprinter.py +195 -0
  309. wx/lib/pubsub/utils/xmltopicdefnprovider.py +286 -0
  310. wx/lib/pydocview.py +3300 -0
  311. wx/lib/rcsizer.py +227 -0
  312. wx/lib/resizewidget.py +357 -0
  313. wx/lib/scrolledpanel.py +243 -0
  314. wx/lib/sheet.py +350 -0
  315. wx/lib/sized_controls.py +691 -0
  316. wx/lib/softwareupdate.py +355 -0
  317. wx/lib/splitter.py +925 -0
  318. wx/lib/statbmp.py +199 -0
  319. wx/lib/stattext.py +321 -0
  320. wx/lib/throbber.py +424 -0
  321. wx/lib/ticker.py +306 -0
  322. wx/lib/ticker_xrc.py +48 -0
  323. wx/lib/utils.py +89 -0
  324. wx/lib/wordwrap.py +97 -0
  325. wx/lib/wxcairo/__init__.py +139 -0
  326. wx/lib/wxcairo/wx_cairocffi.py +200 -0
  327. wx/lib/wxcairo/wx_pycairo.py +455 -0
  328. wx/lib/wxpTag.py +274 -0
  329. wx/libcairo-2.dll +0 -0
  330. wx/locale/af/LC_MESSAGES/wxstd.mo +0 -0
  331. wx/locale/an/LC_MESSAGES/wxstd.mo +0 -0
  332. wx/locale/ar/LC_MESSAGES/wxstd.mo +0 -0
  333. wx/locale/ca/LC_MESSAGES/wxstd.mo +0 -0
  334. wx/locale/ca@valencia/LC_MESSAGES/wxstd.mo +0 -0
  335. wx/locale/co/LC_MESSAGES/wxstd.mo +0 -0
  336. wx/locale/cs/LC_MESSAGES/wxstd.mo +0 -0
  337. wx/locale/da/LC_MESSAGES/wxstd.mo +0 -0
  338. wx/locale/de/LC_MESSAGES/wxstd.mo +0 -0
  339. wx/locale/el/LC_MESSAGES/wxstd.mo +0 -0
  340. wx/locale/es/LC_MESSAGES/wxstd.mo +0 -0
  341. wx/locale/eu/LC_MESSAGES/wxstd.mo +0 -0
  342. wx/locale/fa_IR/LC_MESSAGES/wxstd.mo +0 -0
  343. wx/locale/fi/LC_MESSAGES/wxstd.mo +0 -0
  344. wx/locale/fr/LC_MESSAGES/wxstd.mo +0 -0
  345. wx/locale/gl_ES/LC_MESSAGES/wxstd.mo +0 -0
  346. wx/locale/hi/LC_MESSAGES/wxstd.mo +0 -0
  347. wx/locale/hr/LC_MESSAGES/wxstd.mo +0 -0
  348. wx/locale/hu/LC_MESSAGES/wxstd.mo +0 -0
  349. wx/locale/id/LC_MESSAGES/wxstd.mo +0 -0
  350. wx/locale/it/LC_MESSAGES/wxstd.mo +0 -0
  351. wx/locale/ja/LC_MESSAGES/wxstd.mo +0 -0
  352. wx/locale/ka/LC_MESSAGES/wxstd.mo +0 -0
  353. wx/locale/ko_KR/LC_MESSAGES/wxstd.mo +0 -0
  354. wx/locale/lt/LC_MESSAGES/wxstd.mo +0 -0
  355. wx/locale/lv/LC_MESSAGES/wxstd.mo +0 -0
  356. wx/locale/ms/LC_MESSAGES/wxstd.mo +0 -0
  357. wx/locale/nb/LC_MESSAGES/wxstd.mo +0 -0
  358. wx/locale/ne/LC_MESSAGES/wxstd.mo +0 -0
  359. wx/locale/nl/LC_MESSAGES/wxstd.mo +0 -0
  360. wx/locale/pl/LC_MESSAGES/wxstd.mo +0 -0
  361. wx/locale/pt/LC_MESSAGES/wxstd.mo +0 -0
  362. wx/locale/pt_BR/LC_MESSAGES/wxstd.mo +0 -0
  363. wx/locale/ro/LC_MESSAGES/wxstd.mo +0 -0
  364. wx/locale/ru/LC_MESSAGES/wxstd.mo +0 -0
  365. wx/locale/sk/LC_MESSAGES/wxstd.mo +0 -0
  366. wx/locale/sl/LC_MESSAGES/wxstd.mo +0 -0
  367. wx/locale/sq/LC_MESSAGES/wxstd.mo +0 -0
  368. wx/locale/sr/LC_MESSAGES/wxstd.mo +0 -0
  369. wx/locale/sv/LC_MESSAGES/wxstd.mo +0 -0
  370. wx/locale/ta/LC_MESSAGES/wxstd.mo +0 -0
  371. wx/locale/tr/LC_MESSAGES/wxstd.mo +0 -0
  372. wx/locale/uk/LC_MESSAGES/wxstd.mo +0 -0
  373. wx/locale/vi/LC_MESSAGES/wxstd.mo +0 -0
  374. wx/locale/zh_CN/LC_MESSAGES/wxstd.mo +0 -0
  375. wx/locale/zh_TW/LC_MESSAGES/wxstd.mo +0 -0
  376. wx/media.py +30 -0
  377. wx/media.pyi +272 -0
  378. wx/msw.py +16 -0
  379. wx/msw.pyi +91 -0
  380. wx/propgrid.py +498 -0
  381. wx/propgrid.pyi +7427 -0
  382. wx/py/CHANGES.txt +796 -0
  383. wx/py/Py.ico +0 -0
  384. wx/py/PyAlaCarte.py +34 -0
  385. wx/py/PyAlaMode.py +34 -0
  386. wx/py/PyAlaModeTest.py +33 -0
  387. wx/py/PyCrust.ico +0 -0
  388. wx/py/PyCrust.py +78 -0
  389. wx/py/PyCrust_16.png +0 -0
  390. wx/py/PyCrust_32.png +0 -0
  391. wx/py/PyFilling.py +35 -0
  392. wx/py/PyShell.py +78 -0
  393. wx/py/PySlices.ico +0 -0
  394. wx/py/PySlices.py +98 -0
  395. wx/py/PySlicesShell.py +94 -0
  396. wx/py/PySlices_16.png +0 -0
  397. wx/py/PySlices_32.png +0 -0
  398. wx/py/PyWrap.py +52 -0
  399. wx/py/README.txt +77 -0
  400. wx/py/__init__.py +20 -0
  401. wx/py/buffer.py +136 -0
  402. wx/py/crust.py +403 -0
  403. wx/py/crustslices.py +403 -0
  404. wx/py/dispatcher.py +259 -0
  405. wx/py/document.py +37 -0
  406. wx/py/editor.py +844 -0
  407. wx/py/editwindow.py +316 -0
  408. wx/py/filling.py +358 -0
  409. wx/py/frame.py +976 -0
  410. wx/py/images.py +212 -0
  411. wx/py/interpreter.py +161 -0
  412. wx/py/introspect.py +402 -0
  413. wx/py/magic.py +98 -0
  414. wx/py/parse.py +134 -0
  415. wx/py/path.py +36 -0
  416. wx/py/pseudo.py +99 -0
  417. wx/py/shell.py +1579 -0
  418. wx/py/sliceshell.py +3805 -0
  419. wx/py/tests/test_interpreter.py +71 -0
  420. wx/py/tests/test_introspect.py +810 -0
  421. wx/py/tests/test_pseudo.py +70 -0
  422. wx/py/tests/test_version.py +36 -0
  423. wx/py/tests/testall.py +22 -0
  424. wx/py/version.py +7 -0
  425. wx/py.typed +0 -0
  426. wx/ribbon.py +48 -0
  427. wx/ribbon.pyi +3099 -0
  428. wx/richtext.py +141 -0
  429. wx/richtext.pyi +13581 -0
  430. wx/siplib.cp315-win_amd64.pyd +0 -0
  431. wx/siplib.pyi +19 -0
  432. wx/stc.py +59 -0
  433. wx/stc.pyi +9918 -0
  434. wx/svg/__init__.py +363 -0
  435. wx/svg/_nanosvg.cp315-win_amd64.pyd +0 -0
  436. wx/tools/__init__.py +18 -0
  437. wx/tools/dbg.py +268 -0
  438. wx/tools/genaxmodule.py +50 -0
  439. wx/tools/helpviewer.py +92 -0
  440. wx/tools/img2img.py +85 -0
  441. wx/tools/img2png.py +54 -0
  442. wx/tools/img2py.py +306 -0
  443. wx/tools/img2xpm.py +54 -0
  444. wx/tools/pywxrc.py +951 -0
  445. wx/tools/wxget.py +254 -0
  446. wx/tools/wxget_docs_demo.py +183 -0
  447. wx/wxbase334u_net_vc140_x64.dll +0 -0
  448. wx/wxbase334u_vc140_x64.dll +0 -0
  449. wx/wxbase334u_xml_vc140_x64.dll +0 -0
  450. wx/wxmsw334u_adv_vc140_x64.dll +0 -0
  451. wx/wxmsw334u_aui_vc140_x64.dll +0 -0
  452. wx/wxmsw334u_core_vc140_x64.dll +0 -0
  453. wx/wxmsw334u_gl_vc140_x64.dll +0 -0
  454. wx/wxmsw334u_html_vc140_x64.dll +0 -0
  455. wx/wxmsw334u_media_vc140_x64.dll +0 -0
  456. wx/wxmsw334u_propgrid_vc140_x64.dll +0 -0
  457. wx/wxmsw334u_qa_vc140_x64.dll +0 -0
  458. wx/wxmsw334u_ribbon_vc140_x64.dll +0 -0
  459. wx/wxmsw334u_richtext_vc140_x64.dll +0 -0
  460. wx/wxmsw334u_stc_vc140_x64.dll +0 -0
  461. wx/wxmsw334u_webview_vc140_x64.dll +0 -0
  462. wx/wxmsw334u_xrc_vc140_x64.dll +0 -0
  463. wx/xml.py +18 -0
  464. wx/xml.pyi +728 -0
  465. wx/xrc.py +68 -0
  466. wx/xrc.pyi +896 -0
  467. wxpython-4.3.2.dist-info/METADATA +71 -0
  468. wxpython-4.3.2.dist-info/RECORD +472 -0
  469. wxpython-4.3.2.dist-info/WHEEL +5 -0
  470. wxpython-4.3.2.dist-info/entry_points.txt +13 -0
  471. wxpython-4.3.2.dist-info/licenses/LICENSE.txt +610 -0
  472. wxpython-4.3.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,529 @@
1
+ # --------------------------------------------------------------------------- #
2
+ # THUMBNAILCTRL Control wxPython IMPLEMENTATION
3
+ # Python Code By:
4
+ #
5
+ # Andrea Gavana And Peter Damoc, @ 12 Dec 2005
6
+ # Latest Revision: 27 Dec 2012, 21.00 GMT
7
+ # andrea.gavana@gmail.com
8
+ # andrea.gavana@maerskoil.com
9
+ #
10
+ # Refactored and reorganized: Michael Eager (eager@eagercon.com), 26 Sep 2020
11
+ #
12
+ # Tags: phoenix-port, documented, unittest, py3-port
13
+ #
14
+ # End Of Comments
15
+ # --------------------------------------------------------------------------- #
16
+
17
+
18
+ """
19
+ :class:`~wx.lib.agw.thumbnailctrl.ThumbnailCtrl` is a widget that can be used to display a series of images in
20
+ a "thumbnail" format.
21
+
22
+
23
+ Description
24
+ ===========
25
+
26
+ :class:`ThumbnailCtrl` is a widget that can be used to display a series of images in
27
+ a "thumbnail" format; it mimics, for example, the windows explorer behavior
28
+ when you select the "view thumbnails" option.
29
+ Basically, by specifying a folder that contains some image files, the files
30
+ in the folder are displayed as miniature versions of the actual images in
31
+ a :class:`ScrolledWindow`.
32
+
33
+ The code is partly based on `wxVillaLib`, a wxWidgets implementation of this
34
+ control. However, :class:`ThumbnailCtrl` wouldn't have been so fast and complete
35
+ without the suggestions and hints from Peter Damoc. So, if he accepts the
36
+ mention, this control is his as much as mine.
37
+
38
+ :class:`ThumbnailCtrl` is more of a demo application than a widget.
39
+ The :class:`ScrolledThumbnail` is a freestanding widget, accepting a list of
40
+ :class:`Thumb` objects which represent files and which returns a thumbnail
41
+ on request. :class:`Thumb` can be extended by the user to provide thumbnails
42
+ for other data types, such as text, audio, video, or PDF files.
43
+
44
+ Usage
45
+ =====
46
+
47
+ Usage example::
48
+
49
+ import os
50
+
51
+ import wx
52
+ import wx.lib.agw.thumbnailctrl as TC
53
+
54
+ class MyFrame(wx.Frame):
55
+
56
+ def __init__(self, parent):
57
+
58
+ wx.Frame.__init__(self, parent, -1, "ThumbnailCtrl Demo")
59
+
60
+ panel = wx.Panel(self)
61
+
62
+ sizer = wx.BoxSizer(wx.VERTICAL)
63
+
64
+ thumbnail = TC.ThumbnailCtrl(panel, imagehandler=TC.NativeImageHandler)
65
+ sizer.Add(thumbnail, 1, wx.EXPAND | wx.ALL, 10)
66
+
67
+ thumbnail.ShowDir(os.getcwd())
68
+ panel.SetSizer(sizer)
69
+
70
+
71
+ # our normal wxApp-derived class, as usual
72
+
73
+ app = wx.App(0)
74
+
75
+ frame = MyFrame(None)
76
+ app.SetTopWindow(frame)
77
+ frame.Show()
78
+
79
+ app.MainLoop()
80
+
81
+
82
+
83
+ Methods and Settings
84
+ ====================
85
+
86
+ With :class:`ThumbnailCtrl` you can:
87
+
88
+ - Create different thumbnail outlines (none, images only, full, etc...);
89
+ - Highlight thumbnails on mouse hovering;
90
+ - Show/hide file names below thumbnails;
91
+ - Change thumbnail caption font;
92
+ - Zoom in/out thumbnails (done via ``Ctrl`` key + mouse wheel or with ``+`` and ``-`` chars,
93
+ with zoom factor value customizable);
94
+ - Rotate thumbnails with these specifications:
95
+
96
+ a) ``d`` key rotates 90 degrees clockwise;
97
+ b) ``s`` key rotates 90 degrees counter-clockwise;
98
+ c) ``a`` key rotates 180 degrees.
99
+
100
+ - Delete files/thumbnails (via the ``del`` key);
101
+ - Drag and drop thumbnails from :class:`ThumbnailCtrl` to whatever application you want;
102
+ - Use local (when at least one thumbnail is selected) or global (no need for
103
+ thumbnail selection) popup menus;
104
+ - Show/hide a :class:`ComboBox` at the top of :class:`ThumbnailCtrl`: this combobox contains
105
+ working directory information and it has history entries;
106
+ - possibility to show tooltips on thumbnails, which display file information
107
+ (like file name, size, last modification date and thumbnail size).
108
+
109
+
110
+ :note: Using highlight thumbnails on mouse hovering may be slow on slower
111
+ computers.
112
+
113
+
114
+ Window Styles
115
+ =============
116
+
117
+ `No particular window styles are available for this class.`
118
+
119
+
120
+ Events Processing
121
+ =================
122
+
123
+ This class processes the following events:
124
+
125
+ ================================== ==================================================
126
+ Event Name Description
127
+ ================================== ==================================================
128
+ ``EVT_THUMBNAILS_DCLICK`` The user has double-clicked on a thumbnail.
129
+ ``EVT_THUMBNAILS_POINTED`` The mouse cursor is hovering over a thumbnail.
130
+ ``EVT_THUMBNAILS_SEL_CHANGED`` The user has changed the selected thumbnail.
131
+ ``EVT_THUMBNAILS_THUMB_CHANGED`` The thumbnail of an image has changed. Used internally.
132
+ ``EVT_THUMBNAILS_CHAR`` A key was typed in the widget
133
+ ================================== ==================================================
134
+
135
+
136
+ License And Version
137
+ ===================
138
+
139
+ :class:`ThumbnailCtrl` is distributed under the wxPython license.
140
+
141
+ Latest revision: Michael Eager @ 26 Sep 2020
142
+
143
+ Version 1.0
144
+
145
+ """
146
+
147
+
148
+ #----------------------------------------------------------------------
149
+ # Beginning Of ThumbnailCtrl wxPython Code
150
+ #----------------------------------------------------------------------
151
+
152
+ import wx
153
+ import os
154
+ import time
155
+
156
+ from wx.lib.agw.scrolledthumbnail import (ScrolledThumbnail, EVT_THUMBNAILS_CHAR,
157
+ PILImageHandler, NativeImageHandler, Thumb)
158
+
159
+ # Image File Name Extensions: Am I Missing Some Extensions Here?
160
+ extensions = [".jpeg", ".jpg", ".bmp", ".png", ".ico", ".tiff", ".ani", ".cur", ".gif",
161
+ ".iff", ".icon", ".pcx", ".tif", ".xpm", ".xbm", ".mpeg", ".mpg", ".mov"]
162
+
163
+ #-----------------------------------------------------------------------------
164
+ # PATH & FILE FILLING (OS INDEPENDENT)
165
+ #-----------------------------------------------------------------------------
166
+
167
+ def opj(path):
168
+ """
169
+ Convert paths to the platform-specific separator.
170
+
171
+ :param `path`: the path to convert.
172
+ """
173
+
174
+ strs = os.path.join(*tuple(path.split('/')))
175
+ # HACK: on Linux, a leading / gets lost...
176
+ if path.startswith('/'):
177
+ strs = '/' + strs
178
+
179
+ return strs
180
+
181
+ #-----------------------------------------------------------------------------
182
+
183
+ # Different Outline On Thumb Selection:
184
+ # THUMB_OUTLINE_NONE: No Outline Drawn On Selection
185
+ # THUMB_OUTLINE_FULL: Full Outline Drawn On Selection
186
+ # THUMB_OUTLINE_RECT: Only Maximum Image Rect Outlined On Selection
187
+ # THUMB_OUTLINE_IMAGE: Only Image Rect Outlined On Selection
188
+
189
+ THUMB_OUTLINE_NONE = 0
190
+ """ No outline drawn on selection. """
191
+ THUMB_OUTLINE_FULL = 1
192
+ """ Full outline drawn on selection. """
193
+ THUMB_OUTLINE_RECT = 2
194
+ """ Only the maximum image rectangle outlined on selection. """
195
+ THUMB_OUTLINE_IMAGE = 4
196
+ """ Only the image rectangle outlined on selection. """
197
+
198
+ # Options For Filtering Files -- Not used, provided for backward-compatiblity
199
+ THUMB_FILTER_IMAGES = 1
200
+
201
+ TIME_FMT = '%d %b %Y, %H:%M:%S'
202
+ """ Time format string for the :class:`Thumb` representation on screen. """
203
+
204
+
205
+ # ---------------------------------------------------------------------------- #
206
+ # Class ScrolledTextDialog
207
+ # Create dialog with scrolling text box
208
+ # ---------------------------------------------------------------------------- #
209
+
210
+ class ScrolledTextDialog(wx.Dialog):
211
+ """
212
+ :class:`ScrolledTextDialog` is a dialog widget which displays a scrolled
213
+ text box and OK/CANCEL buttons.
214
+ """
215
+
216
+ def __init__(self, parent, title="Title", msg="Message"):
217
+ wx.Dialog.__init__(self, parent, title=title)
218
+
219
+ text = wx.TextCtrl(self, -1, msg, size=(600,240),
220
+ style=wx.TE_MULTILINE|wx.TE_DONTWRAP|wx.TE_READONLY)
221
+ sizer = wx.BoxSizer(wx.VERTICAL)
222
+ buttonsizer = wx.BoxSizer()
223
+ OKbutton = wx.Button(self, wx.ID_OK)
224
+ buttonsizer.Add(OKbutton, 0, wx.ALL, 5)
225
+ buttonsizer.Add((5,-1), 0, wx.ALL, 5)
226
+ CANCELbutton = wx.Button(self, wx.ID_CANCEL)
227
+ buttonsizer.Add(CANCELbutton, 0, wx.ALL, 5)
228
+ sizer.Add(text, 0, wx.EXPAND|wx.ALL, 5)
229
+ sizer.Add(buttonsizer, 0, wx.ALIGN_CENTER|wx.ALL, 5)
230
+ self.SetSizerAndFit(sizer)
231
+
232
+
233
+
234
+ # ---------------------------------------------------------------------------- #
235
+ # Class ThumbnailCtrl
236
+ # Auxiliary Class, All Useful Methods Are Defined On ScrolledThumbnail Class.
237
+ # ---------------------------------------------------------------------------- #
238
+
239
+ class ThumbnailCtrl(wx.Panel):
240
+ """
241
+ :class:`ThumbnailCtrl` is a widget that can be used to display a series of images in
242
+ a "thumbnail" format.
243
+ """
244
+
245
+ def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
246
+ size=wx.DefaultSize, thumboutline=THUMB_OUTLINE_IMAGE,
247
+ thumbfilter=None, # Ignored, included for backward compatibility
248
+ imagehandler=PILImageHandler):
249
+ """
250
+ Default class constructor.
251
+
252
+ :param `parent`: parent window. Must not be ``None``;
253
+ :param `id`: window identifier. A value of -1 indicates a default value;
254
+ :param `pos`: the control position. A value of (-1, -1) indicates a default position,
255
+ chosen by either the windowing system or wxPython, depending on platform;
256
+ :param `size`: the control size. A value of (-1, -1) indicates a default size,
257
+ chosen by either the windowing system or wxPython, depending on platform;
258
+ :param `thumboutline`: outline style for :class:`ThumbnailCtrl`, which may be:
259
+
260
+ =========================== ======= ==================================
261
+ Outline Flag Value Description
262
+ =========================== ======= ==================================
263
+ ``THUMB_OUTLINE_NONE`` 0 No outline is drawn on selection
264
+ ``THUMB_OUTLINE_FULL`` 1 Full outline (image+caption) is drawn on selection
265
+ ``THUMB_OUTLINE_RECT`` 2 Only thumbnail bounding rectangle is drawn on selection (default)
266
+ ``THUMB_OUTLINE_IMAGE`` 4 Only image bounding rectangle is drawn.
267
+ =========================== ======= ==================================
268
+
269
+ :param `thumbfilter`: filter for image/video/audio files. Ignored.
270
+ :param `imagehandler`: can be :class:`PILImageHandler` if PIL is installed (faster), or
271
+ :class:`NativeImageHandler` which only uses wxPython image methods.
272
+ """
273
+
274
+ wx.Panel.__init__(self, parent, id, pos, size)
275
+
276
+ self._sizer = wx.BoxSizer(wx.VERTICAL)
277
+
278
+ self._combo = wx.ComboBox(self, -1, style=wx.CB_DROPDOWN | wx.CB_READONLY)
279
+ self._scrolled = ScrolledThumbnail(self, -1, thumboutline=thumboutline,
280
+ imagehandler = imagehandler)
281
+
282
+ subsizer = wx.BoxSizer(wx.HORIZONTAL)
283
+ subsizer.Add((3, 0), 0)
284
+ subsizer.Add(self._combo, 0, wx.EXPAND | wx.TOP, 3)
285
+ subsizer.Add((3, 0), 0)
286
+ self._sizer.Add(subsizer, 0, wx.EXPAND | wx.ALL, 3)
287
+ self._sizer.Add(self._scrolled, 1, wx.EXPAND)
288
+
289
+ self.SetSizer(self._sizer)
290
+
291
+ self._sizer.Show(0, False)
292
+ self._sizer.Layout()
293
+
294
+ methods = ["GetSelectedItem", "GetPointed", "GetHighlightPointed", "SetHighlightPointed",
295
+ "SetThumbOutline", "GetThumbOutline", "GetPointedItem", "GetItem",
296
+ "GetItemCount", "GetThumbWidth", "GetThumbHeight", "GetThumbBorder",
297
+ "SetPopupMenu", "GetPopupMenu", "SetGlobalPopupMenu",
298
+ "GetGlobalPopupMenu", "SetSelectionColour", "GetSelectionColour",
299
+ "EnableDragging", "SetThumbSize", "GetThumbSize", "ShowThumbs",
300
+ "SetSelection", "GetSelection", "SetZoomFactor",
301
+ "GetZoomFactor", "SetCaptionFont", "GetCaptionFont", "GetItemIndex",
302
+ "InsertItem", "RemoveItemAt", "IsSelected", "Rotate", "ZoomIn", "ZoomOut",
303
+ "EnableToolTips", "GetThumbInfo", "SetDropShadow", "GetDropShadow"]
304
+
305
+ for method in methods:
306
+ setattr(self, method, getattr(self._scrolled, method))
307
+
308
+ self._combochoices = []
309
+ self._showcombo = False
310
+ self._subsizer = subsizer
311
+
312
+ self._combo.Bind(wx.EVT_COMBOBOX, self.OnComboBox)
313
+ self.Bind(EVT_THUMBNAILS_CHAR, self.OnThumbChar)
314
+
315
+ self._imagehandler = imagehandler
316
+
317
+
318
+ def ShowComboBox(self, show=True):
319
+ """
320
+ Shows/Hide the top folder :class:`ComboBox`.
321
+
322
+ :param `show`: ``True`` to show the combobox, ``False`` otherwise.
323
+ """
324
+
325
+ if show:
326
+ self._showcombo = True
327
+ self._sizer.Show(0, True)
328
+ self._sizer.Layout()
329
+ else:
330
+ self._showcombo = False
331
+ self._sizer.Show(0, False)
332
+ self._sizer.Layout()
333
+
334
+ self._scrolled.Refresh()
335
+
336
+
337
+ def GetShowComboBox(self):
338
+ """ Returns whether the folder combobox is shown. """
339
+
340
+ return self._showcombo
341
+
342
+
343
+ def OnComboBox(self, event):
344
+ """
345
+ Handles the ``wx.EVT_COMBOBOX`` for the folder combobox.
346
+
347
+ :param `event`: a :class:`CommandEvent` event to be processed.
348
+ """
349
+
350
+ dirs = self._combo.GetValue()
351
+
352
+ if os.path.isdir(opj(dirs)):
353
+ self._scrolled.ShowDir(opj(dirs))
354
+
355
+ event.Skip()
356
+
357
+
358
+ def RecreateComboBox(self, newdir):
359
+ """
360
+ Recreates the folder combobox every time a new directory is explored.
361
+
362
+ :param `newdir`: the new folder to be explored.
363
+ """
364
+
365
+ newdir = newdir.strip()
366
+
367
+ if opj(newdir) in self._combochoices:
368
+ return
369
+
370
+ self.Freeze()
371
+
372
+ self._sizer.Detach(0)
373
+ self._subsizer.Detach(1)
374
+ self._subsizer.Destroy()
375
+ self._combo.Destroy()
376
+
377
+ subsizer = wx.BoxSizer(wx.HORIZONTAL)
378
+
379
+ self._combochoices.insert(0, opj(newdir))
380
+
381
+ self._combo = wx.ComboBox(self, -1, value=newdir, choices=self._combochoices,
382
+ style=wx.CB_DROPDOWN | wx.CB_READONLY)
383
+
384
+ subsizer.Add((3, 0), 0)
385
+ subsizer.Add(self._combo, 1, wx.EXPAND | wx.TOP, 3)
386
+ subsizer.Add((3, 0), 0)
387
+ self._sizer.Insert(0, subsizer, 0, wx.EXPAND | wx.ALL, 3)
388
+
389
+ self._subsizer = subsizer
390
+
391
+ self._subsizer.Layout()
392
+
393
+ if not self.GetShowComboBox():
394
+ self._sizer.Show(0, False)
395
+
396
+ self._sizer.Layout()
397
+
398
+ self._combo.Bind(wx.EVT_COMBOBOX, self.OnComboBox)
399
+
400
+ self.Thaw()
401
+
402
+
403
+ def SetBackgroundColour(self, colour):
404
+ """
405
+ Set the background color of the widget.
406
+
407
+ :param `colour`: the color to which the background is set.
408
+ """
409
+ return self.thumbnail_ctrl._scrolled.SetBackgroundColour(colour)
410
+
411
+
412
+ def ShowDir(self, folder):
413
+ """
414
+ Shows thumbnails for a particular folder.
415
+
416
+ :param `folder`: a directory containing the images to thumbnail;
417
+ """
418
+
419
+ self._dir = folder
420
+
421
+ self.RecreateComboBox(folder)
422
+
423
+ # update items
424
+ thumbs = []
425
+
426
+ filenames = self.ListDirectory(self._dir, extensions)
427
+
428
+ filenames.sort()
429
+ for files in filenames:
430
+
431
+ caption = (self._showfilenames and [files] or [""])[0]
432
+ fullfile = opj(self._dir + "/" + files)
433
+ if not os.path.isfile(fullfile):
434
+ continue
435
+
436
+ stats = os.stat(fullfile)
437
+ size = stats[6]
438
+
439
+ lastmod = time.strftime(TIME_FMT, time.localtime(stats[8]))
440
+
441
+ thumbs.append(Thumb(folder, files, caption, size, lastmod,
442
+ imagehandler=self._imagehandler))
443
+
444
+ return self.ShowThumbs(thumbs)
445
+
446
+
447
+ def GetShowDir(self):
448
+ """ Returns the working directory with images. """
449
+
450
+ return self._dir
451
+
452
+ def ListDirectory(self, directory, fileExtList):
453
+ """
454
+ Returns list of file info objects for files of particular extensions.
455
+
456
+ :param `directory`: the folder containing the images to thumbnail;
457
+ :param `fileExtList`: a Python list of file extensions to consider.
458
+ """
459
+
460
+ lSplitExt = os.path.splitext
461
+ return [f for f in os.listdir(directory) if lSplitExt(f)[1].lower() in fileExtList]
462
+
463
+
464
+ def ShowFileNames(self, show=True):
465
+ """
466
+ Sets whether the user wants to show file names under the thumbnails or not.
467
+
468
+ :param `show`: ``True`` to show file names under the thumbnails, ``False`` otherwise.
469
+ """
470
+
471
+ self._showfilenames = show
472
+ self._scrolled.ShowFileNames(show)
473
+
474
+
475
+ def OnThumbChar(self, ev):
476
+ for th in ev.thumbs:
477
+ thumb = self._scrolled.GetItem(th)
478
+
479
+ if ev.keycode == wx.WXK_DELETE:
480
+ self.DeleteFiles(ev.thumbs)
481
+
482
+ def DeleteFiles(self, thumbs):
483
+ """
484
+ Deletes the selected thumbnails and their associated files.
485
+ .. warning:: This method deletes the original files too.
486
+
487
+ :param `thumbs`: List of indexes to thumbnails.
488
+
489
+ """
490
+
491
+ msg = ""
492
+ for index in thumbs:
493
+ thumb = self._scrolled.GetItem(index)
494
+ msg += thumb.GetFileName() + '\n'
495
+
496
+ dlg = ScrolledTextDialog(self, 'Delete these files?', msg)
497
+
498
+ if dlg.ShowModal() == wx.ID_OK:
499
+ errordelete = []
500
+ count = 0
501
+
502
+ dlg.Destroy()
503
+
504
+ wx.BeginBusyCursor()
505
+
506
+ # Delete thumbnails & files from highest index to lowest
507
+ for index in reversed(thumbs):
508
+ thumb = self._scrolled.GetItem(index)
509
+ filename = thumb.GetFullFileName()
510
+ try:
511
+ os.remove(filename)
512
+ self._scrolled.RemoveItemAt(index)
513
+ count = count + 1
514
+ except:
515
+ errordelete.append(self._scrolled.GetFileName(index))
516
+
517
+ wx.EndBusyCursor()
518
+
519
+ if errordelete:
520
+ strs = "Unable to remove the following files:\n\n"
521
+ for fil in errordelete:
522
+ strs = strs + fil + "\n"
523
+ strs = strs + "\n"
524
+ strs = strs + "Please check your privileges and file permissions."
525
+ dlg = wx.MessageDialog(self, strs,
526
+ 'Error in removing files',
527
+ wx.OK | wx.ICON_ERROR)
528
+ dlg.ShowModal()
529
+ dlg.Destroy()