wxPython-zombie 3.1.5.8__cp313-cp313-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 (1175) hide show
  1. wx/__init__.py +22 -0
  2. wx/__version__.py +9 -0
  3. wx/_adv.cp313-win_amd64.pyd +0 -0
  4. wx/_aui.cp313-win_amd64.pyd +0 -0
  5. wx/_core.cp313-win_amd64.pyd +0 -0
  6. wx/_dataview.cp313-win_amd64.pyd +0 -0
  7. wx/_glcanvas.cp313-win_amd64.pyd +0 -0
  8. wx/_grid.cp313-win_amd64.pyd +0 -0
  9. wx/_html.cp313-win_amd64.pyd +0 -0
  10. wx/_html2.cp313-win_amd64.pyd +0 -0
  11. wx/_media.cp313-win_amd64.pyd +0 -0
  12. wx/_msw.cp313-win_amd64.pyd +0 -0
  13. wx/_propgrid.cp313-win_amd64.pyd +0 -0
  14. wx/_ribbon.cp313-win_amd64.pyd +0 -0
  15. wx/_richtext.cp313-win_amd64.pyd +0 -0
  16. wx/_stc.cp313-win_amd64.pyd +0 -0
  17. wx/_xml.cp313-win_amd64.pyd +0 -0
  18. wx/_xrc.cp313-win_amd64.pyd +0 -0
  19. wx/adv.py +124 -0
  20. wx/adv.pyi +5182 -0
  21. wx/aui.py +77 -0
  22. wx/aui.pyi +3655 -0
  23. wx/core.py +3540 -0
  24. wx/core.pyi +50592 -0
  25. wx/dataview.py +173 -0
  26. wx/dataview.pyi +3491 -0
  27. wx/demo/AUI_DockingWindowMgr.py +1154 -0
  28. wx/demo/AUI_MDI.py +117 -0
  29. wx/demo/AUI_Notebook.py +58 -0
  30. wx/demo/About.py +75 -0
  31. wx/demo/AboutBox.py +75 -0
  32. wx/demo/ActiveXWrapper_Acrobat.py +132 -0
  33. wx/demo/ActiveXWrapper_IE.py +187 -0
  34. wx/demo/ActiveX_FlashWindow.py +107 -0
  35. wx/demo/ActiveX_IEHtmlWindow.py +242 -0
  36. wx/demo/ActiveX_PDFWindow.py +204 -0
  37. wx/demo/ActivityIndicator.py +80 -0
  38. wx/demo/AddPrivateFont.py +116 -0
  39. wx/demo/AdjustChannels.py +178 -0
  40. wx/demo/AlphaDrawing.py +77 -0
  41. wx/demo/AnalogClock.py +144 -0
  42. wx/demo/AnimationCtrl.py +104 -0
  43. wx/demo/ArtProvider.py +893 -0
  44. wx/demo/BannerWindow.py +1 -0
  45. wx/demo/BitmapButton.py +87 -0
  46. wx/demo/BitmapComboBox.py +63 -0
  47. wx/demo/BitmapFromBuffer.py +140 -0
  48. wx/demo/Button.py +77 -0
  49. wx/demo/Cairo.py +197 -0
  50. wx/demo/Cairo_Snippets.py +135 -0
  51. wx/demo/Calendar.py +660 -0
  52. wx/demo/CalendarCtrl.py +122 -0
  53. wx/demo/CheckBox.py +74 -0
  54. wx/demo/CheckListBox.py +79 -0
  55. wx/demo/CheckListCtrl.py +99 -0
  56. wx/demo/Choice.py +55 -0
  57. wx/demo/Choicebook.py +80 -0
  58. wx/demo/CollapsibleHeaderCtrl.py +85 -0
  59. wx/demo/CollapsiblePane.py +126 -0
  60. wx/demo/ColorPanel.py +19 -0
  61. wx/demo/ColourDB.py +203 -0
  62. wx/demo/ColourDialog.py +76 -0
  63. wx/demo/ColourSelect.py +119 -0
  64. wx/demo/ComboBox.py +111 -0
  65. wx/demo/ComboCtrl.py +153 -0
  66. wx/demo/ComboTreeBox.py +71 -0
  67. wx/demo/CommandLinkButton.py +50 -0
  68. wx/demo/ContextHelp.py +112 -0
  69. wx/demo/Cursor.py +336 -0
  70. wx/demo/CustomDragAndDrop.py +353 -0
  71. wx/demo/DVC_CustomRenderer.py +204 -0
  72. wx/demo/DVC_DataViewModel.py +365 -0
  73. wx/demo/DVC_IndexListModel.py +257 -0
  74. wx/demo/DVC_ListCtrl.py +69 -0
  75. wx/demo/DVC_TreeCtrl.py +76 -0
  76. wx/demo/DatePickerCtrl.py +68 -0
  77. wx/demo/DelayedResult.py +239 -0
  78. wx/demo/Dialog.py +169 -0
  79. wx/demo/DialogUnits.py +128 -0
  80. wx/demo/DirDialog.py +58 -0
  81. wx/demo/DragAndDrop.py +265 -0
  82. wx/demo/DragImage.py +316 -0
  83. wx/demo/DragScroller.py +59 -0
  84. wx/demo/DrawXXXList.py +436 -0
  85. wx/demo/DynamicSashWindow.py +177 -0
  86. wx/demo/EditableListBox.py +101 -0
  87. wx/demo/Editor.py +70 -0
  88. wx/demo/EventManager.py +291 -0
  89. wx/demo/ExpandoTextCtrl.py +164 -0
  90. wx/demo/FancyText.py +83 -0
  91. wx/demo/FileBrowseButton.py +100 -0
  92. wx/demo/FileCtrl.py +97 -0
  93. wx/demo/FileDialog.py +144 -0
  94. wx/demo/FileHistory.py +140 -0
  95. wx/demo/FindReplaceDialog.py +123 -0
  96. wx/demo/FloatCanvas.py +1959 -0
  97. wx/demo/FontDialog.py +142 -0
  98. wx/demo/FontEnumerator.py +82 -0
  99. wx/demo/Frame.py +85 -0
  100. wx/demo/GLCanvas.py +371 -0
  101. wx/demo/Gauge.py +66 -0
  102. wx/demo/GenericButtons.py +185 -0
  103. wx/demo/GenericCheckBox.py +65 -0
  104. wx/demo/GenericDirCtrl.py +74 -0
  105. wx/demo/GetMouseState.py +159 -0
  106. wx/demo/GraphicsContext.py +236 -0
  107. wx/demo/GraphicsGradient.py +281 -0
  108. wx/demo/Grid.py +95 -0
  109. wx/demo/GridBagSizer.py +170 -0
  110. wx/demo/GridCustEditor.py +247 -0
  111. wx/demo/GridCustTable.py +170 -0
  112. wx/demo/GridDragAndDrop.py +102 -0
  113. wx/demo/GridDragable.py +206 -0
  114. wx/demo/GridEnterHandler.py +66 -0
  115. wx/demo/GridHugeTable.py +89 -0
  116. wx/demo/GridLabelRenderer.py +114 -0
  117. wx/demo/GridSimple.py +270 -0
  118. wx/demo/GridStdEdRend.py +186 -0
  119. wx/demo/Grid_MegaExample.py +490 -0
  120. wx/demo/HTML2_WebView.py +183 -0
  121. wx/demo/HtmlWindow.py +232 -0
  122. wx/demo/I18N.py +237 -0
  123. wx/demo/Image.py +338 -0
  124. wx/demo/ImageAlpha.py +87 -0
  125. wx/demo/ImageBrowser.py +70 -0
  126. wx/demo/ImageFromStream.py +49 -0
  127. wx/demo/Img2PyArtProvider.py +99 -0
  128. wx/demo/InfoBar.py +127 -0
  129. wx/demo/IntCtrl.py +343 -0
  130. wx/demo/ItemsPicker.py +108 -0
  131. wx/demo/Joystick.py +1083 -0
  132. wx/demo/KeyEvents.py +428 -0
  133. wx/demo/LEDNumberCtrl.py +121 -0
  134. wx/demo/LayoutAnchors.py +258 -0
  135. wx/demo/LayoutConstraints.py +149 -0
  136. wx/demo/Layoutf.py +69 -0
  137. wx/demo/ListBox.py +164 -0
  138. wx/demo/ListCtrl.py +538 -0
  139. wx/demo/ListCtrl_edit.py +155 -0
  140. wx/demo/ListCtrl_virtual.py +145 -0
  141. wx/demo/Listbook.py +104 -0
  142. wx/demo/MDIDemo.py +86 -0
  143. wx/demo/MDISashDemo.py +152 -0
  144. wx/demo/MDIWindows.py +66 -0
  145. wx/demo/Main.py +2768 -0
  146. wx/demo/Mask.py +137 -0
  147. wx/demo/MaskedEditControls.py +648 -0
  148. wx/demo/MaskedNumCtrl.py +359 -0
  149. wx/demo/MediaCtrl.py +190 -0
  150. wx/demo/Menu.py +322 -0
  151. wx/demo/MessageDialog.py +54 -0
  152. wx/demo/MimeTypesManager.py +354 -0
  153. wx/demo/MiniFrame.py +67 -0
  154. wx/demo/MouseGestures.py +198 -0
  155. wx/demo/MultiChoiceDialog.py +59 -0
  156. wx/demo/MultiSash.py +95 -0
  157. wx/demo/MultiSplitterWindow.py +168 -0
  158. wx/demo/MultipleChoiceDialog.py +101 -0
  159. wx/demo/Notebook.py +134 -0
  160. wx/demo/NotificationMessage.py +61 -0
  161. wx/demo/OGL.py +433 -0
  162. wx/demo/Overlay.py +209 -0
  163. wx/demo/OwnerDrawnComboBox.py +152 -0
  164. wx/demo/PDFViewer.py +109 -0
  165. wx/demo/PageSetupDialog.py +70 -0
  166. wx/demo/PenAndBrushStyles.py +208 -0
  167. wx/demo/Pickers.py +120 -0
  168. wx/demo/PlateButton.py +430 -0
  169. wx/demo/PopupControl.py +99 -0
  170. wx/demo/PopupMenu.py +156 -0
  171. wx/demo/PopupWindow.py +227 -0
  172. wx/demo/PrintDialog.py +60 -0
  173. wx/demo/PrintFramework.py +227 -0
  174. wx/demo/Process.py +168 -0
  175. wx/demo/ProgressDialog.py +87 -0
  176. wx/demo/PropertyGrid.py +1045 -0
  177. wx/demo/PropertySheetDialog.py +231 -0
  178. wx/demo/PseudoDC.py +350 -0
  179. wx/demo/PyColourChooser.py +60 -0
  180. wx/demo/PyCrust.py +21 -0
  181. wx/demo/PyPlot.py +83 -0
  182. wx/demo/PyShell.py +22 -0
  183. wx/demo/PythonEvents.py +109 -0
  184. wx/demo/README.txt +7 -0
  185. wx/demo/RadioBox.py +67 -0
  186. wx/demo/RadioButton.py +127 -0
  187. wx/demo/RawBitmapAccess.py +208 -0
  188. wx/demo/RearrangeDialog.py +160 -0
  189. wx/demo/RendererNative.py +170 -0
  190. wx/demo/ResizeWidget.py +76 -0
  191. wx/demo/RichMessageDialog.py +85 -0
  192. wx/demo/RichTextCtrl.py +732 -0
  193. wx/demo/RichToolTip.py +145 -0
  194. wx/demo/SVGImage_Bitmap.py +130 -0
  195. wx/demo/SVGImage_Render.py +138 -0
  196. wx/demo/SashWindow.py +151 -0
  197. wx/demo/ScrolledMessageDialog.py +52 -0
  198. wx/demo/ScrolledPanel.py +124 -0
  199. wx/demo/ScrolledWindow.py +260 -0
  200. wx/demo/SearchCtrl.py +115 -0
  201. wx/demo/ShapedWindow.py +145 -0
  202. wx/demo/Simplebook.py +202 -0
  203. wx/demo/SingleChoiceDialog.py +56 -0
  204. wx/demo/SizedControls.py +433 -0
  205. wx/demo/Sizers.py +609 -0
  206. wx/demo/Slider.py +52 -0
  207. wx/demo/Sound.py +95 -0
  208. wx/demo/SpinButton.py +63 -0
  209. wx/demo/SpinCtrl.py +56 -0
  210. wx/demo/SpinCtrlDouble.py +42 -0
  211. wx/demo/SplitTree.py +146 -0
  212. wx/demo/SplitterWindow.py +62 -0
  213. wx/demo/StandardPaths.py +113 -0
  214. wx/demo/StaticBitmap.py +55 -0
  215. wx/demo/StaticBox.py +62 -0
  216. wx/demo/StaticText.py +69 -0
  217. wx/demo/StatusBar.py +144 -0
  218. wx/demo/StockButtons.py +113 -0
  219. wx/demo/StyledTextCtrl_1.py +303 -0
  220. wx/demo/StyledTextCtrl_2.py +410 -0
  221. wx/demo/SystemSettings.py +333 -0
  222. wx/demo/TablePrint.py +215 -0
  223. wx/demo/TestTable.txt +38 -0
  224. wx/demo/TextCtrl.py +187 -0
  225. wx/demo/TextEntryDialog.py +57 -0
  226. wx/demo/Threads.py +258 -0
  227. wx/demo/Throbber.py +250 -0
  228. wx/demo/Ticker.py +147 -0
  229. wx/demo/TimeCtrl.py +240 -0
  230. wx/demo/TimePickerCtrl.py +60 -0
  231. wx/demo/Timer.py +275 -0
  232. wx/demo/ToggleButton.py +54 -0
  233. wx/demo/ToolBar.py +249 -0
  234. wx/demo/ToolTip.py +71 -0
  235. wx/demo/Toolbook.py +111 -0
  236. wx/demo/TreeCtrl.py +199 -0
  237. wx/demo/TreeListCtrl.py +121 -0
  238. wx/demo/TreeMixin.py +269 -0
  239. wx/demo/Treebook.py +117 -0
  240. wx/demo/UIActionSimulator.py +151 -0
  241. wx/demo/URLDragAndDrop.py +130 -0
  242. wx/demo/Unicode.py +146 -0
  243. wx/demo/VListBox.py +176 -0
  244. wx/demo/Validator.py +237 -0
  245. wx/demo/Wizard.py +248 -0
  246. wx/demo/WrapSizer.py +115 -0
  247. wx/demo/XmlResource.py +80 -0
  248. wx/demo/XmlResourceHandler.py +199 -0
  249. wx/demo/XmlResourceSubclass.py +119 -0
  250. wx/demo/__init__.py +9 -0
  251. wx/demo/agw/AGWInfoBar.py +175 -0
  252. wx/demo/agw/AUI.py +3058 -0
  253. wx/demo/agw/AdvancedSplash.py +59 -0
  254. wx/demo/agw/AquaButton.py +146 -0
  255. wx/demo/agw/BalloonTip.py +378 -0
  256. wx/demo/agw/ButtonPanel.py +890 -0
  257. wx/demo/agw/CubeColourDialog.py +83 -0
  258. wx/demo/agw/CustomTreeCtrl.py +2167 -0
  259. wx/demo/agw/Example1 +67 -0
  260. wx/demo/agw/Example2 +49 -0
  261. wx/demo/agw/FlatMenu.py +876 -0
  262. wx/demo/agw/FlatNotebook.py +994 -0
  263. wx/demo/agw/FloatSpin.py +475 -0
  264. wx/demo/agw/FoldPanelBar.py +953 -0
  265. wx/demo/agw/FourWaySplitter.py +300 -0
  266. wx/demo/agw/GenericMessageDialog.py +207 -0
  267. wx/demo/agw/GradientButton.py +156 -0
  268. wx/demo/agw/HyperLinkCtrl.py +144 -0
  269. wx/demo/agw/HyperTreeList.py +2660 -0
  270. wx/demo/agw/KnobCtrl.py +186 -0
  271. wx/demo/agw/LabelBook.py +567 -0
  272. wx/demo/agw/MacLargeDemo.py +360 -0
  273. wx/demo/agw/MultiDirDialog.py +117 -0
  274. wx/demo/agw/PeakMeter.py +194 -0
  275. wx/demo/agw/PersistentControls.py +589 -0
  276. wx/demo/agw/PieCtrl.py +206 -0
  277. wx/demo/agw/PyBusyInfo.py +64 -0
  278. wx/demo/agw/PyCollapsiblePane.py +308 -0
  279. wx/demo/agw/PyGauge.py +162 -0
  280. wx/demo/agw/PyProgress.py +155 -0
  281. wx/demo/agw/RibbonBar.py +925 -0
  282. wx/demo/agw/RulerCtrl.py +454 -0
  283. wx/demo/agw/ScrolledThumbnail.py +128 -0
  284. wx/demo/agw/ShapedButton.py +603 -0
  285. wx/demo/agw/ShortcutEditor.py +397 -0
  286. wx/demo/agw/SpeedMeter.py +668 -0
  287. wx/demo/agw/SuperToolTip.py +396 -0
  288. wx/demo/agw/ThumbDemoConfig.py +603 -0
  289. wx/demo/agw/ThumbnailCtrl.py +149 -0
  290. wx/demo/agw/ToasterBox.py +410 -0
  291. wx/demo/agw/UltimateListCtrl.py +80 -0
  292. wx/demo/agw/UltimateListIconDemo.py +908 -0
  293. wx/demo/agw/UltimateListListDemo.py +124 -0
  294. wx/demo/agw/UltimateReportDemo.py +1146 -0
  295. wx/demo/agw/UltimateVirtualDemo.py +207 -0
  296. wx/demo/agw/Windows7Explorer_Contents.py +368 -0
  297. wx/demo/agw/XLSGrid.py +238 -0
  298. wx/demo/agw/ZoomBar.py +230 -0
  299. wx/demo/agw/__demo__.py +183 -0
  300. wx/demo/agw/bitmaps/Explorer96.png +0 -0
  301. wx/demo/agw/bitmaps/Explorer96Flip40.png +0 -0
  302. wx/demo/agw/bitmaps/Folder96.png +0 -0
  303. wx/demo/agw/bitmaps/Folder96Flip40.png +0 -0
  304. wx/demo/agw/bitmaps/Monitor96.png +0 -0
  305. wx/demo/agw/bitmaps/Monitor96Flip40.png +0 -0
  306. wx/demo/agw/bitmaps/Music96.png +0 -0
  307. wx/demo/agw/bitmaps/Music96Flip40.png +0 -0
  308. wx/demo/agw/bitmaps/Photo96.png +0 -0
  309. wx/demo/agw/bitmaps/Photo96Flip40.png +0 -0
  310. wx/demo/agw/bitmaps/Search96.png +0 -0
  311. wx/demo/agw/bitmaps/Search96Flip40.png +0 -0
  312. wx/demo/agw/bitmaps/Wizard96.png +0 -0
  313. wx/demo/agw/bitmaps/Wizard96Flip40.png +0 -0
  314. wx/demo/agw/bitmaps/advancedsplash.png +0 -0
  315. wx/demo/agw/bitmaps/aquabutton.png +0 -0
  316. wx/demo/agw/bitmaps/aquachecked.ico +0 -0
  317. wx/demo/agw/bitmaps/aquaflagged.ico +0 -0
  318. wx/demo/agw/bitmaps/aquanotchecked.ico +0 -0
  319. wx/demo/agw/bitmaps/aquanotflagged.ico +0 -0
  320. wx/demo/agw/bitmaps/canada.gif +0 -0
  321. wx/demo/agw/bitmaps/checked.ico +0 -0
  322. wx/demo/agw/bitmaps/columns.png +0 -0
  323. wx/demo/agw/bitmaps/contexthelp-16.png +0 -0
  324. wx/demo/agw/bitmaps/contexthelp.png +0 -0
  325. wx/demo/agw/bitmaps/copy.png +0 -0
  326. wx/demo/agw/bitmaps/cut.png +0 -0
  327. wx/demo/agw/bitmaps/editcopy.png +0 -0
  328. wx/demo/agw/bitmaps/editcut.png +0 -0
  329. wx/demo/agw/bitmaps/editpaste.png +0 -0
  330. wx/demo/agw/bitmaps/empty_icon.png +0 -0
  331. wx/demo/agw/bitmaps/exit-16.png +0 -0
  332. wx/demo/agw/bitmaps/exit.ico +0 -0
  333. wx/demo/agw/bitmaps/ffwd.png +0 -0
  334. wx/demo/agw/bitmaps/ffwddisabled.png +0 -0
  335. wx/demo/agw/bitmaps/field-16.png +0 -0
  336. wx/demo/agw/bitmaps/filenew.png +0 -0
  337. wx/demo/agw/bitmaps/fileopen.png +0 -0
  338. wx/demo/agw/bitmaps/filesave.png +0 -0
  339. wx/demo/agw/bitmaps/flagged.ico +0 -0
  340. wx/demo/agw/bitmaps/folder.png +0 -0
  341. wx/demo/agw/bitmaps/folder_new.png +0 -0
  342. wx/demo/agw/bitmaps/ghost.png +0 -0
  343. wx/demo/agw/bitmaps/gradientbutton.png +0 -0
  344. wx/demo/agw/bitmaps/help-16.png +0 -0
  345. wx/demo/agw/bitmaps/help.ico +0 -0
  346. wx/demo/agw/bitmaps/italy.gif +0 -0
  347. wx/demo/agw/bitmaps/lbadd.png +0 -0
  348. wx/demo/agw/bitmaps/lbcharge.png +0 -0
  349. wx/demo/agw/bitmaps/lbdecrypted.png +0 -0
  350. wx/demo/agw/bitmaps/lbnews.png +0 -0
  351. wx/demo/agw/bitmaps/lbroll.png +0 -0
  352. wx/demo/agw/bitmaps/minus1.ico +0 -0
  353. wx/demo/agw/bitmaps/minus2.ico +0 -0
  354. wx/demo/agw/bitmaps/minus3.ico +0 -0
  355. wx/demo/agw/bitmaps/minus4.ico +0 -0
  356. wx/demo/agw/bitmaps/minus5.ico +0 -0
  357. wx/demo/agw/bitmaps/month-16.png +0 -0
  358. wx/demo/agw/bitmaps/new_file.png +0 -0
  359. wx/demo/agw/bitmaps/new_folder.png +0 -0
  360. wx/demo/agw/bitmaps/notchecked.ico +0 -0
  361. wx/demo/agw/bitmaps/notflagged.ico +0 -0
  362. wx/demo/agw/bitmaps/ok-16.png +0 -0
  363. wx/demo/agw/bitmaps/open_folder.png +0 -0
  364. wx/demo/agw/bitmaps/paste.png +0 -0
  365. wx/demo/agw/bitmaps/pause.png +0 -0
  366. wx/demo/agw/bitmaps/pausedisabled.png +0 -0
  367. wx/demo/agw/bitmaps/play.png +0 -0
  368. wx/demo/agw/bitmaps/playdisabled.png +0 -0
  369. wx/demo/agw/bitmaps/plus1.ico +0 -0
  370. wx/demo/agw/bitmaps/plus2.ico +0 -0
  371. wx/demo/agw/bitmaps/plus3.ico +0 -0
  372. wx/demo/agw/bitmaps/plus4.ico +0 -0
  373. wx/demo/agw/bitmaps/plus5.ico +0 -0
  374. wx/demo/agw/bitmaps/record.png +0 -0
  375. wx/demo/agw/bitmaps/recorddisabled.png +0 -0
  376. wx/demo/agw/bitmaps/recording.gif +0 -0
  377. wx/demo/agw/bitmaps/rewind.png +0 -0
  378. wx/demo/agw/bitmaps/rewinddisabled.png +0 -0
  379. wx/demo/agw/bitmaps/round.png +0 -0
  380. wx/demo/agw/bitmaps/save.png +0 -0
  381. wx/demo/agw/bitmaps/separator.gif +0 -0
  382. wx/demo/agw/bitmaps/separatorflip.png +0 -0
  383. wx/demo/agw/bitmaps/smfuel.ico +0 -0
  384. wx/demo/agw/bitmaps/smpi.ico +0 -0
  385. wx/demo/agw/bitmaps/smtemp.ico +0 -0
  386. wx/demo/agw/bitmaps/stop.png +0 -0
  387. wx/demo/agw/bitmaps/stopdisabled.png +0 -0
  388. wx/demo/agw/bitmaps/sttbutton.png +0 -0
  389. wx/demo/agw/bitmaps/sttfont.png +0 -0
  390. wx/demo/agw/bitmaps/sttheader.png +0 -0
  391. wx/demo/agw/bitmaps/stthelp.png +0 -0
  392. wx/demo/agw/bitmaps/view1.png +0 -0
  393. wx/demo/agw/bitmaps/view2.png +0 -0
  394. wx/demo/agw/bitmaps/view_choose.png +0 -0
  395. wx/demo/agw/bitmaps/view_detailed.png +0 -0
  396. wx/demo/agw/bitmaps/view_icon.png +0 -0
  397. wx/demo/agw/bitmaps/view_multicolumn.png +0 -0
  398. wx/demo/agw/bitmaps/viewmag-16.png +0 -0
  399. wx/demo/agw/bitmaps/viewmag-m-16.png +0 -0
  400. wx/demo/agw/bitmaps/viewmag-p-16.png +0 -0
  401. wx/demo/agw/bitmaps/viewmagfit-16.png +0 -0
  402. wx/demo/agw/data/Example_1.xls +0 -0
  403. wx/demo/agw/images.py +6714 -0
  404. wx/demo/bitmaps/AG00028_.gif +0 -0
  405. wx/demo/bitmaps/AG00039_.gif +0 -0
  406. wx/demo/bitmaps/AG00178_.gif +0 -0
  407. wx/demo/bitmaps/AG00183_.gif +0 -0
  408. wx/demo/bitmaps/AG00185_.gif +0 -0
  409. wx/demo/bitmaps/BD13656_.gif +0 -0
  410. wx/demo/bitmaps/advancedsplash.png +0 -0
  411. wx/demo/bitmaps/aquabutton.png +0 -0
  412. wx/demo/bitmaps/aquachecked.ico +0 -0
  413. wx/demo/bitmaps/aquaflagged.ico +0 -0
  414. wx/demo/bitmaps/aquanotchecked.ico +0 -0
  415. wx/demo/bitmaps/aquanotflagged.ico +0 -0
  416. wx/demo/bitmaps/canada.gif +0 -0
  417. wx/demo/bitmaps/checked.ico +0 -0
  418. wx/demo/bitmaps/columns.png +0 -0
  419. wx/demo/bitmaps/contexthelp-16.png +0 -0
  420. wx/demo/bitmaps/contexthelp.png +0 -0
  421. wx/demo/bitmaps/copy.png +0 -0
  422. wx/demo/bitmaps/cropshot24x20.png +0 -0
  423. wx/demo/bitmaps/cut.png +0 -0
  424. wx/demo/bitmaps/editcopy.png +0 -0
  425. wx/demo/bitmaps/editcut.png +0 -0
  426. wx/demo/bitmaps/editpaste.png +0 -0
  427. wx/demo/bitmaps/exit-16.png +0 -0
  428. wx/demo/bitmaps/exit.ico +0 -0
  429. wx/demo/bitmaps/ffwd.png +0 -0
  430. wx/demo/bitmaps/ffwddisabled.png +0 -0
  431. wx/demo/bitmaps/field-16.png +0 -0
  432. wx/demo/bitmaps/filenew.png +0 -0
  433. wx/demo/bitmaps/fileopen.png +0 -0
  434. wx/demo/bitmaps/filesave.png +0 -0
  435. wx/demo/bitmaps/flagged.ico +0 -0
  436. wx/demo/bitmaps/folder_new.png +0 -0
  437. wx/demo/bitmaps/ghost.png +0 -0
  438. wx/demo/bitmaps/gradientbutton.png +0 -0
  439. wx/demo/bitmaps/help-16.png +0 -0
  440. wx/demo/bitmaps/help.ico +0 -0
  441. wx/demo/bitmaps/honeycomb300.png +0 -0
  442. wx/demo/bitmaps/image.bmp +0 -0
  443. wx/demo/bitmaps/image.gif +0 -0
  444. wx/demo/bitmaps/image.ico +0 -0
  445. wx/demo/bitmaps/image.jpg +0 -0
  446. wx/demo/bitmaps/image.png +0 -0
  447. wx/demo/bitmaps/image.tif +0 -0
  448. wx/demo/bitmaps/italy.gif +0 -0
  449. wx/demo/bitmaps/lbadd.png +0 -0
  450. wx/demo/bitmaps/lbcharge.png +0 -0
  451. wx/demo/bitmaps/lbdecrypted.png +0 -0
  452. wx/demo/bitmaps/lbnews.png +0 -0
  453. wx/demo/bitmaps/lbroll.png +0 -0
  454. wx/demo/bitmaps/minus1.ico +0 -0
  455. wx/demo/bitmaps/minus2.ico +0 -0
  456. wx/demo/bitmaps/minus3.ico +0 -0
  457. wx/demo/bitmaps/minus4.ico +0 -0
  458. wx/demo/bitmaps/minus5.ico +0 -0
  459. wx/demo/bitmaps/month-16.png +0 -0
  460. wx/demo/bitmaps/new_file.png +0 -0
  461. wx/demo/bitmaps/new_folder.png +0 -0
  462. wx/demo/bitmaps/notchecked.ico +0 -0
  463. wx/demo/bitmaps/notflagged.ico +0 -0
  464. wx/demo/bitmaps/ok-16.png +0 -0
  465. wx/demo/bitmaps/open_folder.png +0 -0
  466. wx/demo/bitmaps/paste.png +0 -0
  467. wx/demo/bitmaps/pause.png +0 -0
  468. wx/demo/bitmaps/pausedisabled.png +0 -0
  469. wx/demo/bitmaps/phoenix_title.png +0 -0
  470. wx/demo/bitmaps/phoenix_top.png +0 -0
  471. wx/demo/bitmaps/play.png +0 -0
  472. wx/demo/bitmaps/playdisabled.png +0 -0
  473. wx/demo/bitmaps/plus1.ico +0 -0
  474. wx/demo/bitmaps/plus2.ico +0 -0
  475. wx/demo/bitmaps/plus3.ico +0 -0
  476. wx/demo/bitmaps/plus4.ico +0 -0
  477. wx/demo/bitmaps/plus5.ico +0 -0
  478. wx/demo/bitmaps/record.png +0 -0
  479. wx/demo/bitmaps/recorddisabled.png +0 -0
  480. wx/demo/bitmaps/rewind.png +0 -0
  481. wx/demo/bitmaps/rewinddisabled.png +0 -0
  482. wx/demo/bitmaps/round.png +0 -0
  483. wx/demo/bitmaps/save.png +0 -0
  484. wx/demo/bitmaps/smfuel.ico +0 -0
  485. wx/demo/bitmaps/smpi.ico +0 -0
  486. wx/demo/bitmaps/smtemp.ico +0 -0
  487. wx/demo/bitmaps/snakey_render.png +0 -0
  488. wx/demo/bitmaps/splash.png +0 -0
  489. wx/demo/bitmaps/stop.png +0 -0
  490. wx/demo/bitmaps/stopdisabled.png +0 -0
  491. wx/demo/bitmaps/sttbutton.png +0 -0
  492. wx/demo/bitmaps/sttfont.png +0 -0
  493. wx/demo/bitmaps/sttheader.png +0 -0
  494. wx/demo/bitmaps/stthelp.png +0 -0
  495. wx/demo/bitmaps/toucan.png +0 -0
  496. wx/demo/bitmaps/view1.png +0 -0
  497. wx/demo/bitmaps/view2.png +0 -0
  498. wx/demo/bitmaps/view_choose.png +0 -0
  499. wx/demo/bitmaps/view_detailed.png +0 -0
  500. wx/demo/bitmaps/view_icon.png +0 -0
  501. wx/demo/bitmaps/view_multicolumn.png +0 -0
  502. wx/demo/bitmaps/viewmag-16.png +0 -0
  503. wx/demo/bitmaps/viewmag-m-16.png +0 -0
  504. wx/demo/bitmaps/viewmag-p-16.png +0 -0
  505. wx/demo/bitmaps/viewmagfit-16.png +0 -0
  506. wx/demo/bmp_source/001.png +0 -0
  507. wx/demo/bmp_source/002.png +0 -0
  508. wx/demo/bmp_source/003.png +0 -0
  509. wx/demo/bmp_source/004.png +0 -0
  510. wx/demo/bmp_source/005.png +0 -0
  511. wx/demo/bmp_source/006.png +0 -0
  512. wx/demo/bmp_source/007.png +0 -0
  513. wx/demo/bmp_source/008.png +0 -0
  514. wx/demo/bmp_source/009.png +0 -0
  515. wx/demo/bmp_source/010.png +0 -0
  516. wx/demo/bmp_source/011.png +0 -0
  517. wx/demo/bmp_source/012.png +0 -0
  518. wx/demo/bmp_source/013.png +0 -0
  519. wx/demo/bmp_source/014.png +0 -0
  520. wx/demo/bmp_source/015.png +0 -0
  521. wx/demo/bmp_source/016.png +0 -0
  522. wx/demo/bmp_source/017.png +0 -0
  523. wx/demo/bmp_source/018.png +0 -0
  524. wx/demo/bmp_source/019.png +0 -0
  525. wx/demo/bmp_source/020.png +0 -0
  526. wx/demo/bmp_source/021.png +0 -0
  527. wx/demo/bmp_source/022.png +0 -0
  528. wx/demo/bmp_source/023.png +0 -0
  529. wx/demo/bmp_source/024.png +0 -0
  530. wx/demo/bmp_source/025.png +0 -0
  531. wx/demo/bmp_source/026.png +0 -0
  532. wx/demo/bmp_source/027.png +0 -0
  533. wx/demo/bmp_source/028.png +0 -0
  534. wx/demo/bmp_source/029.png +0 -0
  535. wx/demo/bmp_source/030.png +0 -0
  536. wx/demo/bmp_source/DbDec.bmp +0 -0
  537. wx/demo/bmp_source/DbInc.bmp +0 -0
  538. wx/demo/bmp_source/Dec.bmp +0 -0
  539. wx/demo/bmp_source/FRM_0.png +0 -0
  540. wx/demo/bmp_source/FRM_1.png +0 -0
  541. wx/demo/bmp_source/FRM_2.png +0 -0
  542. wx/demo/bmp_source/FRM_3.png +0 -0
  543. wx/demo/bmp_source/FRM_4.png +0 -0
  544. wx/demo/bmp_source/FRM_5.png +0 -0
  545. wx/demo/bmp_source/FRM_6.png +0 -0
  546. wx/demo/bmp_source/FRM_7.png +0 -0
  547. wx/demo/bmp_source/FRM_8.png +0 -0
  548. wx/demo/bmp_source/GridBG.gif +0 -0
  549. wx/demo/bmp_source/Inc.bmp +0 -0
  550. wx/demo/bmp_source/LB01.png +0 -0
  551. wx/demo/bmp_source/LB02.png +0 -0
  552. wx/demo/bmp_source/LB03.png +0 -0
  553. wx/demo/bmp_source/LB04.png +0 -0
  554. wx/demo/bmp_source/LB05.png +0 -0
  555. wx/demo/bmp_source/LB06.png +0 -0
  556. wx/demo/bmp_source/LB07.png +0 -0
  557. wx/demo/bmp_source/LB08.png +0 -0
  558. wx/demo/bmp_source/LB09.png +0 -0
  559. wx/demo/bmp_source/LB10.png +0 -0
  560. wx/demo/bmp_source/LB11.png +0 -0
  561. wx/demo/bmp_source/LB12.png +0 -0
  562. wx/demo/bmp_source/Pt.bmp +0 -0
  563. wx/demo/bmp_source/Vippi.png +0 -0
  564. wx/demo/bmp_source/backgrnd.png +0 -0
  565. wx/demo/bmp_source/book.png +0 -0
  566. wx/demo/bmp_source/book_blue.png +0 -0
  567. wx/demo/bmp_source/book_green.png +0 -0
  568. wx/demo/bmp_source/book_red.png +0 -0
  569. wx/demo/bmp_source/bp_btn1.png +0 -0
  570. wx/demo/bmp_source/bp_btn2.png +0 -0
  571. wx/demo/bmp_source/bp_btn3.png +0 -0
  572. wx/demo/bmp_source/bp_btn4.png +0 -0
  573. wx/demo/bmp_source/bulb1.bmp +0 -0
  574. wx/demo/bmp_source/bulb2.bmp +0 -0
  575. wx/demo/bmp_source/carrot.png +0 -0
  576. wx/demo/bmp_source/clipboard.png +0 -0
  577. wx/demo/bmp_source/code.png +0 -0
  578. wx/demo/bmp_source/core.png +0 -0
  579. wx/demo/bmp_source/custom.png +0 -0
  580. wx/demo/bmp_source/customcontrol.png +0 -0
  581. wx/demo/bmp_source/deletedocs.png +0 -0
  582. wx/demo/bmp_source/deleteperspective.png +0 -0
  583. wx/demo/bmp_source/demo.png +0 -0
  584. wx/demo/bmp_source/dialog.png +0 -0
  585. wx/demo/bmp_source/exit.png +0 -0
  586. wx/demo/bmp_source/expansion.png +0 -0
  587. wx/demo/bmp_source/find.png +0 -0
  588. wx/demo/bmp_source/findnext.png +0 -0
  589. wx/demo/bmp_source/floatcanvas.png +0 -0
  590. wx/demo/bmp_source/frame.png +0 -0
  591. wx/demo/bmp_source/images.png +0 -0
  592. wx/demo/bmp_source/inspect.png +0 -0
  593. wx/demo/bmp_source/layout.png +0 -0
  594. wx/demo/bmp_source/logo.png +0 -0
  595. wx/demo/bmp_source/miscellaneous.png +0 -0
  596. wx/demo/bmp_source/modifiedexists.png +0 -0
  597. wx/demo/bmp_source/mondrian.ico +0 -0
  598. wx/demo/bmp_source/morecontrols.png +0 -0
  599. wx/demo/bmp_source/moredialog.png +0 -0
  600. wx/demo/bmp_source/noicon.png +0 -0
  601. wx/demo/bmp_source/overview.png +0 -0
  602. wx/demo/bmp_source/pencil.png +0 -0
  603. wx/demo/bmp_source/pointy.png +0 -0
  604. wx/demo/bmp_source/process.png +0 -0
  605. wx/demo/bmp_source/pyshell.png +0 -0
  606. wx/demo/bmp_source/recent.png +0 -0
  607. wx/demo/bmp_source/rest.png +0 -0
  608. wx/demo/bmp_source/robin.jpg +0 -0
  609. wx/demo/bmp_source/rt_alignleft.xpm +24 -0
  610. wx/demo/bmp_source/rt_alignright.xpm +24 -0
  611. wx/demo/bmp_source/rt_bold.xpm +24 -0
  612. wx/demo/bmp_source/rt_centre.xpm +24 -0
  613. wx/demo/bmp_source/rt_colour.xpm +59 -0
  614. wx/demo/bmp_source/rt_copy.xpm +44 -0
  615. wx/demo/bmp_source/rt_cut.xpm +46 -0
  616. wx/demo/bmp_source/rt_font.xpm +25 -0
  617. wx/demo/bmp_source/rt_idea.xpm +47 -0
  618. wx/demo/bmp_source/rt_indentless.xpm +25 -0
  619. wx/demo/bmp_source/rt_indentmore.xpm +25 -0
  620. wx/demo/bmp_source/rt_italic.xpm +25 -0
  621. wx/demo/bmp_source/rt_open.xpm +57 -0
  622. wx/demo/bmp_source/rt_paste.xpm +46 -0
  623. wx/demo/bmp_source/rt_redo.xpm +58 -0
  624. wx/demo/bmp_source/rt_sample.xpm +44 -0
  625. wx/demo/bmp_source/rt_save.xpm +42 -0
  626. wx/demo/bmp_source/rt_smiley.xpm +42 -0
  627. wx/demo/bmp_source/rt_underline.xpm +25 -0
  628. wx/demo/bmp_source/rt_undo.xpm +58 -0
  629. wx/demo/bmp_source/rt_zebra.xpm +409 -0
  630. wx/demo/bmp_source/saveperspective.png +0 -0
  631. wx/demo/bmp_source/sm_down.bmp +0 -0
  632. wx/demo/bmp_source/sm_up.bmp +0 -0
  633. wx/demo/bmp_source/smiles2.bmp +0 -0
  634. wx/demo/bmp_source/test2.bmp +0 -0
  635. wx/demo/bmp_source/testmask.bmp +0 -0
  636. wx/demo/bmp_source/teststar.png +0 -0
  637. wx/demo/bmp_source/thekid.png +0 -0
  638. wx/demo/bmp_source/tog1.bmp +0 -0
  639. wx/demo/bmp_source/tog2.bmp +0 -0
  640. wx/demo/bmp_source/wiztest1.bmp +0 -0
  641. wx/demo/bmp_source/wiztest2.bmp +0 -0
  642. wx/demo/bmp_source/wxpdemo.ico +0 -0
  643. wx/demo/cursors/paperairplane_arrow_blue.cur +0 -0
  644. wx/demo/cursors/paperairplane_arrow_blue_fadeout80.cur +0 -0
  645. wx/demo/cursors/paperairplane_arrow_colorshift.ani +0 -0
  646. wx/demo/cursors/paperairplane_arrow_dark.cur +0 -0
  647. wx/demo/cursors/paperairplane_arrow_grey.cur +0 -0
  648. wx/demo/cursors/paperairplane_arrow_red.cur +0 -0
  649. wx/demo/cursors/paperairplane_arrow_white.cur +0 -0
  650. wx/demo/cursors/paperairplane_arrow_white24.png +0 -0
  651. wx/demo/data/0-tiger.svg +725 -0
  652. wx/demo/data/Asteroid_blaster.swf +0 -0
  653. wx/demo/data/SIL_OPEN_FONT_LICENSE.txt +97 -0
  654. wx/demo/data/SourceCodePro-Regular.ttf +0 -0
  655. wx/demo/data/accessories-calculator.svg +636 -0
  656. wx/demo/data/accessories-text-editor.svg +554 -0
  657. wx/demo/data/anykey.wav +0 -0
  658. wx/demo/data/applications-internet.svg +623 -0
  659. wx/demo/data/desktop-accessibility.svg +245 -0
  660. wx/demo/data/desktop-keyboard-shortcuts.svg +839 -0
  661. wx/demo/data/desktop-locale.svg +878 -0
  662. wx/demo/data/desktop-remote-desktop.svg +1479 -0
  663. wx/demo/data/desktop-theme.svg +882 -0
  664. wx/demo/data/desktop-wallpaper.svg +747 -0
  665. wx/demo/data/echo.py +25 -0
  666. wx/demo/data/imagemap.htm +20 -0
  667. wx/demo/data/imagemap.png +0 -0
  668. wx/demo/data/internet-group-chat.svg +312 -0
  669. wx/demo/data/internet-mail.svg +440 -0
  670. wx/demo/data/locale/af/LC_MESSAGES/wxpydemo.mo +0 -0
  671. wx/demo/data/locale/de/LC_MESSAGES/wxpydemo.mo +0 -0
  672. wx/demo/data/locale/es/LC_MESSAGES/wxpydemo.mo +0 -0
  673. wx/demo/data/locale/fr/LC_MESSAGES/wxpydemo.mo +0 -0
  674. wx/demo/data/locale/it/LC_MESSAGES/wxpydemo.mo +0 -0
  675. wx/demo/data/locale-src/af.po +23 -0
  676. wx/demo/data/locale-src/de.po +23 -0
  677. wx/demo/data/locale-src/es.po +22 -0
  678. wx/demo/data/locale-src/fr.po +22 -0
  679. wx/demo/data/locale-src/install +15 -0
  680. wx/demo/data/locale-src/it.po +23 -0
  681. wx/demo/data/locale-src/wxpydemo.po +21 -0
  682. wx/demo/data/office-calendar.svg +316 -0
  683. wx/demo/data/pic.png +0 -0
  684. wx/demo/data/pic2.bmp +0 -0
  685. wx/demo/data/plan.wav +0 -0
  686. wx/demo/data/proclamation.txt +115 -0
  687. wx/demo/data/resource.wdr +0 -0
  688. wx/demo/data/resource_wdr.xrc +146 -0
  689. wx/demo/data/romedalen.png +0 -0
  690. wx/demo/data/stc.h.html +3544 -0
  691. wx/demo/data/system-session.svg +510 -0
  692. wx/demo/data/system-users.svg +539 -0
  693. wx/demo/data/tables.htm +116 -0
  694. wx/demo/data/test-gradient-pen.svg +14 -0
  695. wx/demo/data/test-opacity.svg +7 -0
  696. wx/demo/data/test.htm +253 -0
  697. wx/demo/data/testmovie.mpg +0 -0
  698. wx/demo/data/testtable.txt +38 -0
  699. wx/demo/data/tips.txt +73 -0
  700. wx/demo/data/utilities-system-monitor.svg +435 -0
  701. wx/demo/data/utilities-terminal.svg +500 -0
  702. wx/demo/data/widgetTest.htm +70 -0
  703. wx/demo/data/world.dat +24055 -0
  704. wx/demo/demo.py +4 -0
  705. wx/demo/demo.pyw +4 -0
  706. wx/demo/demodata.py +310 -0
  707. wx/demo/encode_bitmaps.py +181 -0
  708. wx/demo/images.py +6812 -0
  709. wx/demo/infoframe.py +149 -0
  710. wx/demo/run.py +171 -0
  711. wx/demo/snippets/__init__.py +13 -0
  712. wx/demo/snippets/arc.py +21 -0
  713. wx/demo/snippets/arc_negative.py +21 -0
  714. wx/demo/snippets/clip.py +13 -0
  715. wx/demo/snippets/clip_image.py +13 -0
  716. wx/demo/snippets/curve_rectangle.py +53 -0
  717. wx/demo/snippets/curve_to.py +17 -0
  718. wx/demo/snippets/dash.py +18 -0
  719. wx/demo/snippets/ellipse.py +33 -0
  720. wx/demo/snippets/fill_and_stroke.py +12 -0
  721. wx/demo/snippets/fill_and_stroke2.py +18 -0
  722. wx/demo/snippets/fill_style.py +31 -0
  723. wx/demo/snippets/glyph_path.py +21 -0
  724. wx/demo/snippets/gradient.py +16 -0
  725. wx/demo/snippets/gradient_mask.py +12 -0
  726. wx/demo/snippets/group.py +16 -0
  727. wx/demo/snippets/image.py +14 -0
  728. wx/demo/snippets/imagepattern.py +23 -0
  729. wx/demo/snippets/path.py +7 -0
  730. wx/demo/snippets/set_line_cap.py +19 -0
  731. wx/demo/snippets/set_line_join.py +21 -0
  732. wx/demo/snippets/show_glyphs.py +15 -0
  733. wx/demo/snippets/text.py +22 -0
  734. wx/demo/snippets/text_align_center.py +26 -0
  735. wx/demo/snippets/text_extents.py +27 -0
  736. wx/demo/template.py +36 -0
  737. wx/demo/throbImages.py +1277 -0
  738. wx/demo/version.py +3 -0
  739. wx/demo/widgetTest.py +72 -0
  740. wx/demo/wxpdemo.ico +0 -0
  741. wx/glcanvas.py +10 -0
  742. wx/glcanvas.pyi +458 -0
  743. wx/grid.py +229 -0
  744. wx/grid.pyi +4959 -0
  745. wx/html.py +35 -0
  746. wx/html.pyi +2965 -0
  747. wx/html2.py +40 -0
  748. wx/html2.pyi +772 -0
  749. wx/lib/CDate.py +202 -0
  750. wx/lib/ClickableHtmlWindow.py +57 -0
  751. wx/lib/__init__.py +0 -0
  752. wx/lib/activex.py +178 -0
  753. wx/lib/activexwrapper.py +153 -0
  754. wx/lib/agw/__init__.py +128 -0
  755. wx/lib/agw/advancedsplash.py +564 -0
  756. wx/lib/agw/aquabutton.py +1127 -0
  757. wx/lib/agw/artmanager.py +2110 -0
  758. wx/lib/agw/aui/__init__.py +295 -0
  759. wx/lib/agw/aui/aui_constants.py +2628 -0
  760. wx/lib/agw/aui/aui_switcherdialog.py +1227 -0
  761. wx/lib/agw/aui/aui_utilities.py +672 -0
  762. wx/lib/agw/aui/auibar.py +4031 -0
  763. wx/lib/agw/aui/auibook.py +6289 -0
  764. wx/lib/agw/aui/dockart.py +1198 -0
  765. wx/lib/agw/aui/framemanager.py +10409 -0
  766. wx/lib/agw/aui/tabart.py +2771 -0
  767. wx/lib/agw/aui/tabmdi.py +679 -0
  768. wx/lib/agw/balloontip.py +1158 -0
  769. wx/lib/agw/buttonpanel.py +2823 -0
  770. wx/lib/agw/cubecolourdialog.py +3529 -0
  771. wx/lib/agw/customtreectrl.py +8963 -0
  772. wx/lib/agw/data/ShortcutEditor_1.png +0 -0
  773. wx/lib/agw/data/ShortcutEditor_1_thumb.png +0 -0
  774. wx/lib/agw/data/ShortcutEditor_2.png +0 -0
  775. wx/lib/agw/data/ShortcutEditor_2_thumb.png +0 -0
  776. wx/lib/agw/data/ShortcutEditor_3.png +0 -0
  777. wx/lib/agw/data/ShortcutEditor_3_thumb.png +0 -0
  778. wx/lib/agw/data/ShortcutEditor_4.png +0 -0
  779. wx/lib/agw/data/ShortcutEditor_4_thumb.png +0 -0
  780. wx/lib/agw/data/default_help_text.html +105 -0
  781. wx/lib/agw/flatmenu.py +7333 -0
  782. wx/lib/agw/flatnotebook.py +6672 -0
  783. wx/lib/agw/floatspin.py +1823 -0
  784. wx/lib/agw/fmcustomizedlg.py +540 -0
  785. wx/lib/agw/fmresources.py +407 -0
  786. wx/lib/agw/foldpanelbar.py +2282 -0
  787. wx/lib/agw/fourwaysplitter.py +1130 -0
  788. wx/lib/agw/genericmessagedialog.py +1549 -0
  789. wx/lib/agw/gradientbutton.py +732 -0
  790. wx/lib/agw/hyperlink.py +664 -0
  791. wx/lib/agw/hypertreelist.py +5374 -0
  792. wx/lib/agw/infobar.py +885 -0
  793. wx/lib/agw/knobctrl.py +945 -0
  794. wx/lib/agw/labelbook.py +3029 -0
  795. wx/lib/agw/multidirdialog.py +615 -0
  796. wx/lib/agw/peakmeter.py +1029 -0
  797. wx/lib/agw/persist/__init__.py +188 -0
  798. wx/lib/agw/persist/persist_constants.py +284 -0
  799. wx/lib/agw/persist/persist_handlers.py +2614 -0
  800. wx/lib/agw/persist/persistencemanager.py +864 -0
  801. wx/lib/agw/piectrl.py +1082 -0
  802. wx/lib/agw/pybusyinfo.py +399 -0
  803. wx/lib/agw/pycollapsiblepane.py +940 -0
  804. wx/lib/agw/pygauge.py +570 -0
  805. wx/lib/agw/pyprogress.py +917 -0
  806. wx/lib/agw/ribbon/__init__.py +198 -0
  807. wx/lib/agw/ribbon/art.py +219 -0
  808. wx/lib/agw/ribbon/art_aui.py +1284 -0
  809. wx/lib/agw/ribbon/art_default.py +81 -0
  810. wx/lib/agw/ribbon/art_internal.py +244 -0
  811. wx/lib/agw/ribbon/art_msw.py +2736 -0
  812. wx/lib/agw/ribbon/art_osx.py +52 -0
  813. wx/lib/agw/ribbon/bar.py +1261 -0
  814. wx/lib/agw/ribbon/buttonbar.py +1320 -0
  815. wx/lib/agw/ribbon/control.py +205 -0
  816. wx/lib/agw/ribbon/gallery.py +974 -0
  817. wx/lib/agw/ribbon/page.py +946 -0
  818. wx/lib/agw/ribbon/panel.py +1170 -0
  819. wx/lib/agw/ribbon/toolbar.py +1442 -0
  820. wx/lib/agw/rulerctrl.py +1887 -0
  821. wx/lib/agw/scrolledthumbnail.py +2119 -0
  822. wx/lib/agw/shapedbutton.py +1809 -0
  823. wx/lib/agw/shortcuteditor.py +2634 -0
  824. wx/lib/agw/speedmeter.py +1801 -0
  825. wx/lib/agw/supertooltip.py +1444 -0
  826. wx/lib/agw/thumbnailctrl.py +529 -0
  827. wx/lib/agw/toasterbox.py +1327 -0
  828. wx/lib/agw/ultimatelistctrl.py +13666 -0
  829. wx/lib/agw/xlsgrid.py +2113 -0
  830. wx/lib/agw/zoombar.py +1339 -0
  831. wx/lib/analogclock/__init__.py +140 -0
  832. wx/lib/analogclock/analogclock.py +631 -0
  833. wx/lib/analogclock/helpers.py +991 -0
  834. wx/lib/analogclock/lib_setup/__init__.py +0 -0
  835. wx/lib/analogclock/lib_setup/buttontreectrlpanel.py +297 -0
  836. wx/lib/analogclock/lib_setup/fontselect.py +57 -0
  837. wx/lib/analogclock/setup.py +490 -0
  838. wx/lib/analogclock/styles.py +47 -0
  839. wx/lib/anchors.py +103 -0
  840. wx/lib/art/__init__.py +4 -0
  841. wx/lib/art/flagart.py +1583 -0
  842. wx/lib/art/img2pyartprov.py +56 -0
  843. wx/lib/busy.py +146 -0
  844. wx/lib/buttons.py +1141 -0
  845. wx/lib/calendar.py +1597 -0
  846. wx/lib/checkbox.py +837 -0
  847. wx/lib/colourchooser/__init__.py +38 -0
  848. wx/lib/colourchooser/canvas.py +145 -0
  849. wx/lib/colourchooser/intl.py +24 -0
  850. wx/lib/colourchooser/pycolourbox.py +89 -0
  851. wx/lib/colourchooser/pycolourchooser.py +629 -0
  852. wx/lib/colourchooser/pycolourslider.py +100 -0
  853. wx/lib/colourchooser/pypalette.py +211 -0
  854. wx/lib/colourdb.py +740 -0
  855. wx/lib/colourselect.py +385 -0
  856. wx/lib/colourutils.py +118 -0
  857. wx/lib/combotreebox.py +944 -0
  858. wx/lib/delayedresult.py +420 -0
  859. wx/lib/dialogs.py +510 -0
  860. wx/lib/docview.py +3210 -0
  861. wx/lib/dragscroller.py +79 -0
  862. wx/lib/editor/README.txt +77 -0
  863. wx/lib/editor/__init__.py +24 -0
  864. wx/lib/editor/editor.py +974 -0
  865. wx/lib/editor/images.py +15 -0
  866. wx/lib/editor/selection.py +44 -0
  867. wx/lib/embeddedimage.py +76 -0
  868. wx/lib/eventStack.py +136 -0
  869. wx/lib/eventwatcher.py +440 -0
  870. wx/lib/evtmgr.py +521 -0
  871. wx/lib/expando.py +393 -0
  872. wx/lib/fancytext.py +505 -0
  873. wx/lib/filebrowsebutton.py +459 -0
  874. wx/lib/flashwin.py +262 -0
  875. wx/lib/flashwin_old.py +651 -0
  876. wx/lib/floatcanvas/FCEvents.py +53 -0
  877. wx/lib/floatcanvas/FCObjects.py +2923 -0
  878. wx/lib/floatcanvas/FloatCanvas.py +1027 -0
  879. wx/lib/floatcanvas/GUIMode.py +396 -0
  880. wx/lib/floatcanvas/NavCanvas.py +161 -0
  881. wx/lib/floatcanvas/Resources.py +319 -0
  882. wx/lib/floatcanvas/ScreenShot.py +1788 -0
  883. wx/lib/floatcanvas/Utilities/BBox.py +314 -0
  884. wx/lib/floatcanvas/Utilities/Colors.py +137 -0
  885. wx/lib/floatcanvas/Utilities/GUI.py +91 -0
  886. wx/lib/floatcanvas/Utilities/__init__.py +7 -0
  887. wx/lib/floatcanvas/__init__.py +124 -0
  888. wx/lib/foldmenu.py +89 -0
  889. wx/lib/gestures.py +310 -0
  890. wx/lib/gizmos/__init__.py +18 -0
  891. wx/lib/gizmos/dynamicsash.py +1202 -0
  892. wx/lib/gizmos/ledctrl.py +300 -0
  893. wx/lib/gizmos/treelistctrl.py +87 -0
  894. wx/lib/graphics.py +1939 -0
  895. wx/lib/gridmovers.py +511 -0
  896. wx/lib/iewin.py +249 -0
  897. wx/lib/iewin_old.py +894 -0
  898. wx/lib/imagebrowser.py +856 -0
  899. wx/lib/imageutils.py +163 -0
  900. wx/lib/infoframe.py +490 -0
  901. wx/lib/inspection.py +1255 -0
  902. wx/lib/intctrl.py +1001 -0
  903. wx/lib/itemspicker.py +256 -0
  904. wx/lib/langlistctrl.py +480 -0
  905. wx/lib/layoutf.py +271 -0
  906. wx/lib/masked/__init__.py +27 -0
  907. wx/lib/masked/combobox.py +839 -0
  908. wx/lib/masked/ctrl.py +108 -0
  909. wx/lib/masked/ipaddrctrl.py +242 -0
  910. wx/lib/masked/maskededit.py +7279 -0
  911. wx/lib/masked/numctrl.py +2001 -0
  912. wx/lib/masked/textctrl.py +465 -0
  913. wx/lib/masked/timectrl.py +1466 -0
  914. wx/lib/mixins/__init__.py +17 -0
  915. wx/lib/mixins/grid.py +47 -0
  916. wx/lib/mixins/gridlabelrenderer.py +251 -0
  917. wx/lib/mixins/imagelist.py +77 -0
  918. wx/lib/mixins/inspection.py +184 -0
  919. wx/lib/mixins/listctrl.py +894 -0
  920. wx/lib/mixins/rubberband.py +404 -0
  921. wx/lib/mixins/treemixin.py +678 -0
  922. wx/lib/msgpanel.py +95 -0
  923. wx/lib/multisash.py +747 -0
  924. wx/lib/myole4ax.idl +178 -0
  925. wx/lib/myole4ax.tlb +0 -0
  926. wx/lib/newevent.py +229 -0
  927. wx/lib/nvdlg.py +156 -0
  928. wx/lib/ogl/__init__.py +13 -0
  929. wx/lib/ogl/basic.py +3991 -0
  930. wx/lib/ogl/bmpshape.py +87 -0
  931. wx/lib/ogl/canvas.py +467 -0
  932. wx/lib/ogl/composit.py +1577 -0
  933. wx/lib/ogl/diagram.py +230 -0
  934. wx/lib/ogl/divided.py +483 -0
  935. wx/lib/ogl/drawn.py +900 -0
  936. wx/lib/ogl/lines.py +1811 -0
  937. wx/lib/ogl/oglmisc.py +608 -0
  938. wx/lib/pdfviewer/__init__.py +113 -0
  939. wx/lib/pdfviewer/bitmaps/ArrowLeft.png +0 -0
  940. wx/lib/pdfviewer/bitmaps/ArrowRight.png +0 -0
  941. wx/lib/pdfviewer/bitmaps/DirectionH.png +0 -0
  942. wx/lib/pdfviewer/bitmaps/DirectionV.png +0 -0
  943. wx/lib/pdfviewer/bitmaps/PlayerFirst.png +0 -0
  944. wx/lib/pdfviewer/bitmaps/PlayerLast.png +0 -0
  945. wx/lib/pdfviewer/bitmaps/PlayerNext.png +0 -0
  946. wx/lib/pdfviewer/bitmaps/PlayerPrev.png +0 -0
  947. wx/lib/pdfviewer/bitmaps/Printer.png +0 -0
  948. wx/lib/pdfviewer/bitmaps/ReadMe.txt +28 -0
  949. wx/lib/pdfviewer/bitmaps/Save.png +0 -0
  950. wx/lib/pdfviewer/bitmaps/ZoomIn.png +0 -0
  951. wx/lib/pdfviewer/bitmaps/ZoomOut.png +0 -0
  952. wx/lib/pdfviewer/bitmaps/encode_bitmaps.py +37 -0
  953. wx/lib/pdfviewer/buttonpanel.py +279 -0
  954. wx/lib/pdfviewer/images.py +240 -0
  955. wx/lib/pdfviewer/viewer.py +1077 -0
  956. wx/lib/pdfwin.py +295 -0
  957. wx/lib/pdfwin_old.py +789 -0
  958. wx/lib/platebtn.py +789 -0
  959. wx/lib/plot/CHANGELOG.md +150 -0
  960. wx/lib/plot/README.md +16 -0
  961. wx/lib/plot/__init__.py +46 -0
  962. wx/lib/plot/__main__.py +5 -0
  963. wx/lib/plot/examples/__init__.py +0 -0
  964. wx/lib/plot/examples/demo.py +1009 -0
  965. wx/lib/plot/examples/simple_example.py +54 -0
  966. wx/lib/plot/plotcanvas.py +2981 -0
  967. wx/lib/plot/polyobjects.py +1525 -0
  968. wx/lib/plot/utils.py +327 -0
  969. wx/lib/popupctl.py +250 -0
  970. wx/lib/printout.py +1157 -0
  971. wx/lib/progressindicator.py +151 -0
  972. wx/lib/pubsub/LICENSE_BSD_Simple.txt +23 -0
  973. wx/lib/pubsub/README_WxPython.txt +22 -0
  974. wx/lib/pubsub/RELEASE_NOTES.txt +71 -0
  975. wx/lib/pubsub/__init__.py +25 -0
  976. wx/lib/pubsub/core/__init__.py +92 -0
  977. wx/lib/pubsub/core/arg1/__init__.py +16 -0
  978. wx/lib/pubsub/core/arg1/listenerimpl.py +97 -0
  979. wx/lib/pubsub/core/arg1/publisher.py +40 -0
  980. wx/lib/pubsub/core/arg1/publishermixin.py +34 -0
  981. wx/lib/pubsub/core/arg1/topicargspecimpl.py +66 -0
  982. wx/lib/pubsub/core/arg1/topicmgrimpl.py +19 -0
  983. wx/lib/pubsub/core/callables.py +191 -0
  984. wx/lib/pubsub/core/imp2.py +63 -0
  985. wx/lib/pubsub/core/itopicdefnprovider.py +0 -0
  986. wx/lib/pubsub/core/kwargs/__init__.py +16 -0
  987. wx/lib/pubsub/core/kwargs/datamsg.py +27 -0
  988. wx/lib/pubsub/core/kwargs/listenerimpl.py +93 -0
  989. wx/lib/pubsub/core/kwargs/publisher.py +77 -0
  990. wx/lib/pubsub/core/kwargs/publishermixin.py +65 -0
  991. wx/lib/pubsub/core/kwargs/topicargspecimpl.py +217 -0
  992. wx/lib/pubsub/core/kwargs/topicmgrimpl.py +13 -0
  993. wx/lib/pubsub/core/listener.py +40 -0
  994. wx/lib/pubsub/core/listenerbase.py +185 -0
  995. wx/lib/pubsub/core/notificationmgr.py +185 -0
  996. wx/lib/pubsub/core/publisherbase.py +191 -0
  997. wx/lib/pubsub/core/topicargspec.py +77 -0
  998. wx/lib/pubsub/core/topicdefnprovider.py +632 -0
  999. wx/lib/pubsub/core/topicexc.py +72 -0
  1000. wx/lib/pubsub/core/topicmgr.py +456 -0
  1001. wx/lib/pubsub/core/topicobj.py +472 -0
  1002. wx/lib/pubsub/core/topictreetraverser.py +143 -0
  1003. wx/lib/pubsub/core/topicutils.py +118 -0
  1004. wx/lib/pubsub/core/treeconfig.py +21 -0
  1005. wx/lib/pubsub/core/validatedefnargs.py +29 -0
  1006. wx/lib/pubsub/core/weakmethod.py +102 -0
  1007. wx/lib/pubsub/policies.py +24 -0
  1008. wx/lib/pubsub/pub.py +199 -0
  1009. wx/lib/pubsub/py2and3.py +608 -0
  1010. wx/lib/pubsub/setuparg1.py +47 -0
  1011. wx/lib/pubsub/setupkwargs.py +29 -0
  1012. wx/lib/pubsub/utils/__init__.py +27 -0
  1013. wx/lib/pubsub/utils/exchandling.py +100 -0
  1014. wx/lib/pubsub/utils/misc.py +100 -0
  1015. wx/lib/pubsub/utils/notification.py +331 -0
  1016. wx/lib/pubsub/utils/topictreeprinter.py +195 -0
  1017. wx/lib/pubsub/utils/xmltopicdefnprovider.py +287 -0
  1018. wx/lib/pydocview.py +3300 -0
  1019. wx/lib/rcsizer.py +229 -0
  1020. wx/lib/resizewidget.py +357 -0
  1021. wx/lib/scrolledpanel.py +225 -0
  1022. wx/lib/sheet.py +350 -0
  1023. wx/lib/sized_controls.py +691 -0
  1024. wx/lib/softwareupdate.py +361 -0
  1025. wx/lib/splitter.py +925 -0
  1026. wx/lib/statbmp.py +199 -0
  1027. wx/lib/stattext.py +322 -0
  1028. wx/lib/throbber.py +425 -0
  1029. wx/lib/ticker.py +295 -0
  1030. wx/lib/ticker_xrc.py +48 -0
  1031. wx/lib/utils.py +89 -0
  1032. wx/lib/wordwrap.py +97 -0
  1033. wx/lib/wxcairo/__init__.py +124 -0
  1034. wx/lib/wxcairo/wx_cairocffi.py +200 -0
  1035. wx/lib/wxcairo/wx_pycairo.py +463 -0
  1036. wx/lib/wxpTag.py +274 -0
  1037. wx/locale/af/LC_MESSAGES/wxstd.mo +0 -0
  1038. wx/locale/an/LC_MESSAGES/wxstd.mo +0 -0
  1039. wx/locale/ar/LC_MESSAGES/wxstd.mo +0 -0
  1040. wx/locale/ca/LC_MESSAGES/wxstd.mo +0 -0
  1041. wx/locale/ca@valencia/LC_MESSAGES/wxstd.mo +0 -0
  1042. wx/locale/cs/LC_MESSAGES/wxstd.mo +0 -0
  1043. wx/locale/da/LC_MESSAGES/wxstd.mo +0 -0
  1044. wx/locale/de/LC_MESSAGES/wxstd.mo +0 -0
  1045. wx/locale/el/LC_MESSAGES/wxstd.mo +0 -0
  1046. wx/locale/es/LC_MESSAGES/wxstd.mo +0 -0
  1047. wx/locale/eu/LC_MESSAGES/wxstd.mo +0 -0
  1048. wx/locale/fa_IR/LC_MESSAGES/wxstd.mo +0 -0
  1049. wx/locale/fi/LC_MESSAGES/wxstd.mo +0 -0
  1050. wx/locale/fr/LC_MESSAGES/wxstd.mo +0 -0
  1051. wx/locale/gl_ES/LC_MESSAGES/wxstd.mo +0 -0
  1052. wx/locale/hi/LC_MESSAGES/wxstd.mo +0 -0
  1053. wx/locale/hr/LC_MESSAGES/wxstd.mo +0 -0
  1054. wx/locale/hu/LC_MESSAGES/wxstd.mo +0 -0
  1055. wx/locale/id/LC_MESSAGES/wxstd.mo +0 -0
  1056. wx/locale/it/LC_MESSAGES/wxstd.mo +0 -0
  1057. wx/locale/ja/LC_MESSAGES/wxstd.mo +0 -0
  1058. wx/locale/ka/LC_MESSAGES/wxstd.mo +0 -0
  1059. wx/locale/ko_KR/LC_MESSAGES/wxstd.mo +0 -0
  1060. wx/locale/lt/LC_MESSAGES/wxstd.mo +0 -0
  1061. wx/locale/lv/LC_MESSAGES/wxstd.mo +0 -0
  1062. wx/locale/ms/LC_MESSAGES/wxstd.mo +0 -0
  1063. wx/locale/nb/LC_MESSAGES/wxstd.mo +0 -0
  1064. wx/locale/ne/LC_MESSAGES/wxstd.mo +0 -0
  1065. wx/locale/nl/LC_MESSAGES/wxstd.mo +0 -0
  1066. wx/locale/pl/LC_MESSAGES/wxstd.mo +0 -0
  1067. wx/locale/pt/LC_MESSAGES/wxstd.mo +0 -0
  1068. wx/locale/pt_BR/LC_MESSAGES/wxstd.mo +0 -0
  1069. wx/locale/ro/LC_MESSAGES/wxstd.mo +0 -0
  1070. wx/locale/ru/LC_MESSAGES/wxstd.mo +0 -0
  1071. wx/locale/sk/LC_MESSAGES/wxstd.mo +0 -0
  1072. wx/locale/sl/LC_MESSAGES/wxstd.mo +0 -0
  1073. wx/locale/sq/LC_MESSAGES/wxstd.mo +0 -0
  1074. wx/locale/sv/LC_MESSAGES/wxstd.mo +0 -0
  1075. wx/locale/ta/LC_MESSAGES/wxstd.mo +0 -0
  1076. wx/locale/tr/LC_MESSAGES/wxstd.mo +0 -0
  1077. wx/locale/uk/LC_MESSAGES/wxstd.mo +0 -0
  1078. wx/locale/vi/LC_MESSAGES/wxstd.mo +0 -0
  1079. wx/locale/zh_CN/LC_MESSAGES/wxstd.mo +0 -0
  1080. wx/locale/zh_TW/LC_MESSAGES/wxstd.mo +0 -0
  1081. wx/media.py +27 -0
  1082. wx/media.pyi +223 -0
  1083. wx/msw.py +13 -0
  1084. wx/msw.pyi +65 -0
  1085. wx/propgrid.py +1451 -0
  1086. wx/propgrid.pyi +7914 -0
  1087. wx/py/CHANGES.txt +796 -0
  1088. wx/py/Py.ico +0 -0
  1089. wx/py/PyAlaCarte.py +34 -0
  1090. wx/py/PyAlaMode.py +34 -0
  1091. wx/py/PyAlaModeTest.py +33 -0
  1092. wx/py/PyCrust.ico +0 -0
  1093. wx/py/PyCrust.py +78 -0
  1094. wx/py/PyCrust_16.png +0 -0
  1095. wx/py/PyCrust_32.png +0 -0
  1096. wx/py/PyFilling.py +35 -0
  1097. wx/py/PyShell.py +78 -0
  1098. wx/py/PySlices.ico +0 -0
  1099. wx/py/PySlices.py +98 -0
  1100. wx/py/PySlicesShell.py +94 -0
  1101. wx/py/PySlices_16.png +0 -0
  1102. wx/py/PySlices_32.png +0 -0
  1103. wx/py/PyWrap.py +52 -0
  1104. wx/py/README.txt +77 -0
  1105. wx/py/__init__.py +20 -0
  1106. wx/py/buffer.py +136 -0
  1107. wx/py/crust.py +403 -0
  1108. wx/py/crustslices.py +403 -0
  1109. wx/py/dispatcher.py +259 -0
  1110. wx/py/document.py +37 -0
  1111. wx/py/editor.py +844 -0
  1112. wx/py/editwindow.py +299 -0
  1113. wx/py/filling.py +357 -0
  1114. wx/py/frame.py +978 -0
  1115. wx/py/images.py +212 -0
  1116. wx/py/interpreter.py +170 -0
  1117. wx/py/introspect.py +393 -0
  1118. wx/py/magic.py +98 -0
  1119. wx/py/parse.py +134 -0
  1120. wx/py/path.py +36 -0
  1121. wx/py/pseudo.py +99 -0
  1122. wx/py/shell.py +1588 -0
  1123. wx/py/sliceshell.py +3814 -0
  1124. wx/py/tests/test_interpreter.py +71 -0
  1125. wx/py/tests/test_introspect.py +862 -0
  1126. wx/py/tests/test_pseudo.py +70 -0
  1127. wx/py/tests/test_version.py +36 -0
  1128. wx/py/tests/testall.py +22 -0
  1129. wx/py/version.py +7 -0
  1130. wx/ribbon.py +45 -0
  1131. wx/ribbon.pyi +2494 -0
  1132. wx/richtext.py +142 -0
  1133. wx/richtext.pyi +12113 -0
  1134. wx/siplib.cp313-win_amd64.pyd +0 -0
  1135. wx/stc.py +58 -0
  1136. wx/stc.pyi +8463 -0
  1137. wx/svg/__init__.py +364 -0
  1138. wx/svg/_nanosvg.cp313-win_amd64.pyd +0 -0
  1139. wx/tools/__init__.py +18 -0
  1140. wx/tools/dbg.py +268 -0
  1141. wx/tools/genaxmodule.py +50 -0
  1142. wx/tools/helpviewer.py +92 -0
  1143. wx/tools/img2img.py +85 -0
  1144. wx/tools/img2png.py +54 -0
  1145. wx/tools/img2py.py +309 -0
  1146. wx/tools/img2xpm.py +54 -0
  1147. wx/tools/pywxrc.py +949 -0
  1148. wx/tools/wxget.py +254 -0
  1149. wx/tools/wxget_docs_demo.py +186 -0
  1150. wx/wxbase315u_net_vc140_x64.dll +0 -0
  1151. wx/wxbase315u_vc140_x64.dll +0 -0
  1152. wx/wxbase315u_xml_vc140_x64.dll +0 -0
  1153. wx/wxmsw315u_adv_vc140_x64.dll +0 -0
  1154. wx/wxmsw315u_aui_vc140_x64.dll +0 -0
  1155. wx/wxmsw315u_core_vc140_x64.dll +0 -0
  1156. wx/wxmsw315u_gl_vc140_x64.dll +0 -0
  1157. wx/wxmsw315u_html_vc140_x64.dll +0 -0
  1158. wx/wxmsw315u_media_vc140_x64.dll +0 -0
  1159. wx/wxmsw315u_propgrid_vc140_x64.dll +0 -0
  1160. wx/wxmsw315u_qa_vc140_x64.dll +0 -0
  1161. wx/wxmsw315u_ribbon_vc140_x64.dll +0 -0
  1162. wx/wxmsw315u_richtext_vc140_x64.dll +0 -0
  1163. wx/wxmsw315u_stc_vc140_x64.dll +0 -0
  1164. wx/wxmsw315u_webview_vc140_x64.dll +0 -0
  1165. wx/wxmsw315u_xrc_vc140_x64.dll +0 -0
  1166. wx/xml.py +15 -0
  1167. wx/xml.pyi +575 -0
  1168. wx/xrc.py +65 -0
  1169. wx/xrc.pyi +742 -0
  1170. wxPython_zombie-3.1.5.8.dist-info/LICENSE.txt +950 -0
  1171. wxPython_zombie-3.1.5.8.dist-info/METADATA +107 -0
  1172. wxPython_zombie-3.1.5.8.dist-info/RECORD +1175 -0
  1173. wxPython_zombie-3.1.5.8.dist-info/WHEEL +5 -0
  1174. wxPython_zombie-3.1.5.8.dist-info/entry_points.txt +2 -0
  1175. wxPython_zombie-3.1.5.8.dist-info/top_level.txt +1 -0
wx/lib/printout.py ADDED
@@ -0,0 +1,1157 @@
1
+ #----------------------------------------------------------------------------
2
+ # Name: printout.py
3
+ # Purpose: preview and printing class -> table/grid printing
4
+ #
5
+ # Author: Lorne White (email: lorne.white@telusplanet.net)
6
+ #
7
+ # Created:
8
+ # Version 0.75
9
+ # Date: May 15, 2002
10
+ # Licence: wxWindows license
11
+ # Tags: phoenix-port
12
+ #----------------------------------------------------------------------------
13
+ # Release Notes
14
+
15
+ # fixed bug for string wider than print region
16
+ # add index to data list after parsing total pages for paging
17
+ #----------------------------------------------------------------------------
18
+ # 12/10/2003 - Jeff Grimmett (grimmtooth@softhome.net)
19
+ # o 2.5 compatibility update.
20
+ #----------------------------------------------------------------------------
21
+ # 11/23/2004 - Vernon Cole (wnvcole@peppermillcas.com)
22
+ # o Generalize for non-2-dimensional sequences and non-text data
23
+ # (can use as a simple text printer by supplying a list of strings.)
24
+ # o Add a small _main_ for self test
25
+
26
+ import copy
27
+ import types
28
+ import wx
29
+
30
+ import six
31
+
32
+ class PrintBase(object):
33
+ def SetPrintFont(self, font): # set the DC font parameters
34
+ fattr = font["Attr"]
35
+ if fattr[0] == 1:
36
+ weight = wx.FONTWEIGHT_BOLD
37
+ else:
38
+ weight = wx.FONTWEIGHT_NORMAL
39
+
40
+ if fattr[1] == 1:
41
+ set_style = wx.FONTSTYLE_ITALIC
42
+ else:
43
+ set_style = wx.FONTSTYLE_NORMAL
44
+
45
+ underline = fattr[2]
46
+ fcolour = self.GetFontColour(font)
47
+ self.DC.SetTextForeground(fcolour)
48
+
49
+ setfont = wx.Font(font["Size"], wx.FONTFAMILY_SWISS, set_style, weight, underline)
50
+ setfont.SetFaceName(font["Name"])
51
+ self.DC.SetFont(setfont)
52
+
53
+ def GetFontColour(self, font):
54
+ fcolour = font["Colour"]
55
+ return wx.Colour(fcolour[0], fcolour[1], fcolour[2])
56
+
57
+ def OutTextRegion(self, textout, txtdraw = True):
58
+ textlines = textout.split('\n')
59
+ y = copy.copy(self.y) + self.pt_space_before
60
+ for text in textlines:
61
+ remain = 'X'
62
+ while remain != "":
63
+ vout, remain = self.SetFlow(text, self.region)
64
+ if self.draw == True and txtdraw == True:
65
+ test_out = self.TestFull(vout)
66
+ if self.align == wx.ALIGN_LEFT:
67
+ self.DC.DrawText(test_out, self.indent+self.pcell_left_margin, y)
68
+
69
+ elif self.align == wx.ALIGN_CENTRE:
70
+ diff = self.GetCellDiff(test_out, self.region)
71
+ self.DC.DrawText(test_out, self.indent+diff/2, y)
72
+
73
+ elif self.align == wx.ALIGN_RIGHT:
74
+ diff = self.GetCellDiff(test_out, self.region)
75
+ self.DC.DrawText(test_out, self.indent+diff, y)
76
+
77
+ else:
78
+ self.DC.DrawText(test_out, self.indent+self.pcell_left_margin, y)
79
+ text = remain
80
+ y = y + self.space
81
+ return y - self.space + self.pt_space_after
82
+
83
+ def GetCellDiff(self, text, width): # get the remaining cell size for adjustment
84
+ w, h = self.DC.GetTextExtent(text)
85
+ diff = width - w
86
+ if diff < 0:
87
+ diff = 0
88
+ return diff
89
+
90
+ def TestFull(self, text_test):
91
+ w, h = self.DC.GetTextExtent(text_test)
92
+ if w > self.region: # trouble fitting into cell
93
+ return self.SetChar(text_test, self.region) # fit the text to the cell size
94
+ else:
95
+ return text_test
96
+
97
+ def SetFlow(self, ln_text, width):
98
+ width = width - self.pcell_right_margin
99
+ text = ""
100
+ split = ln_text.split()
101
+ if len(split) == 1:
102
+ return ln_text, ""
103
+
104
+ try:
105
+ w, h = self.DC.GetTextExtent(" " + split[0])
106
+ if w >= width:
107
+ return ln_text, ""
108
+ except:
109
+ pass
110
+
111
+ cnt = 0
112
+ for word in split:
113
+ bword = " " + word # blank + word
114
+ length = len(bword)
115
+
116
+ w, h = self.DC.GetTextExtent(text + bword)
117
+ if w < width:
118
+ text = text + bword
119
+ cnt = cnt + 1
120
+ else:
121
+ remain = ' '.join(split[cnt:])
122
+ text = text.strip()
123
+ return text, remain
124
+
125
+ remain = ' '.join(split[cnt:])
126
+ vout = text.strip()
127
+ return vout, remain
128
+
129
+ def SetChar(self, ln_text, width): # truncate string to fit into width
130
+ width = width - self.pcell_right_margin - self.pcell_left_margin
131
+ text = ""
132
+ for val in ln_text:
133
+ w, h = self.DC.GetTextExtent(text + val)
134
+ if w > width:
135
+ text = text + ".."
136
+ return text # fitted text value
137
+ text = text + val
138
+ return text
139
+
140
+ def OutTextPageWidth(self, textout, y_out, align, indent, txtdraw = True):
141
+ textlines = textout.split('\n')
142
+ y = copy.copy(y_out)
143
+
144
+ pagew = self.parent.page_width * self.pwidth # full page width
145
+ w, h = self.DC.GetTextExtent(textout)
146
+ y_line = h
147
+
148
+ for text in textlines:
149
+ remain = 'X'
150
+ while remain != "":
151
+ vout, remain = self.SetFlow(text, pagew)
152
+ if self.draw == True and txtdraw == True:
153
+ test_out = vout
154
+ if align == wx.ALIGN_LEFT:
155
+ self.DC.DrawText(test_out, indent, y)
156
+
157
+ elif align == wx.ALIGN_CENTRE:
158
+ diff = self.GetCellDiff(test_out, pagew)
159
+ self.DC.DrawText(test_out, indent+diff/2, y)
160
+
161
+ elif align == wx.ALIGN_RIGHT:
162
+ diff = self.GetCellDiff(test_out, pagew)
163
+ self.DC.DrawText(test_out, indent+diff, y)
164
+
165
+ else:
166
+ self.DC.DrawText(test_out, indent, y_out)
167
+ text = remain
168
+ y = y + y_line
169
+ return y - y_line
170
+
171
+ def GetDate(self):
172
+ date, time = self.GetNow()
173
+ return date
174
+
175
+ def GetDateTime(self):
176
+ date, time = self.GetNow()
177
+ return date + ' ' + time
178
+
179
+ def GetNow(self):
180
+ now = wx.DateTime.Now()
181
+ date = now.FormatDate()
182
+ time = now.FormatTime()
183
+ return date, time
184
+
185
+ def SetPreview(self, preview):
186
+ self.preview = preview
187
+
188
+ def SetPSize(self, width, height):
189
+ self.pwidth = width/self.scale
190
+ self.pheight = height/self.scale
191
+
192
+ def SetScale(self, scale):
193
+ self.scale = scale
194
+
195
+ def SetPTSize(self, width, height):
196
+ self.ptwidth = width
197
+ self.ptheight = height
198
+
199
+ def getWidth(self):
200
+ return self.sizew
201
+
202
+ def getHeight(self):
203
+ return self.sizeh
204
+
205
+
206
+ class PrintTableDraw(wx.ScrolledWindow, PrintBase):
207
+ def __init__(self, parent, DC, size):
208
+ self.parent = parent
209
+ self.DC = DC
210
+ self.scale = parent.scale
211
+ self.width = size[0]
212
+ self.height = size[1]
213
+ self.SetDefaults()
214
+
215
+ def SetDefaults(self):
216
+ self.page = 1
217
+ self.total_pages = None
218
+
219
+ self.page_width = self.parent.page_width
220
+ self.page_height = self.parent.page_height
221
+
222
+ self.left_margin = self.parent.left_margin
223
+ self.right_margin = self.parent.right_margin
224
+
225
+ self.top_margin = self.parent.top_margin
226
+ self.bottom_margin = self.parent.bottom_margin
227
+ self.cell_left_margin = self.parent.cell_left_margin
228
+ self.cell_right_margin = self.parent.cell_right_margin
229
+
230
+ self.label_colour = self.parent.label_colour
231
+
232
+ self.row_line_colour = self.parent.row_line_colour
233
+ self.row_line_size = self.parent.row_line_size
234
+
235
+ self.row_def_line_colour = self.parent.row_def_line_colour
236
+ self.row_def_line_size = self.parent.row_def_line_size
237
+
238
+ self.column_line_colour = self.parent.column_line_colour
239
+ self.column_line_size = self.parent.column_line_size
240
+
241
+ self.column_def_line_size = self.parent.column_def_line_size
242
+ self.column_def_line_colour = self.parent.column_def_line_colour
243
+
244
+ self.text_font = self.parent.text_font
245
+
246
+ self.label_font = self.parent.label_font
247
+
248
+ def AdjustValues(self):
249
+ self.vertical_offset = self.pheight * self.parent.vertical_offset
250
+ self.horizontal_offset = self.pheight * self.parent.horizontal_offset
251
+
252
+ self.pcell_left_margin = self.pwidth * self.cell_left_margin
253
+ self.pcell_right_margin = self.pwidth * self.cell_right_margin
254
+ self.ptop_margin = self.pheight * self.top_margin
255
+ self.pbottom_margin = self.pheight * self.bottom_margin
256
+
257
+ self.pheader_margin = self.pheight * self.parent.header_margin
258
+ self.pfooter_margin = self.pheight * self.parent.footer_margin
259
+
260
+ self.cell_colour = self.parent.set_cell_colour
261
+ self.cell_text = self.parent.set_cell_text
262
+
263
+ self.column = []
264
+ self.column_align = []
265
+ self.column_bgcolour = []
266
+ self.column_txtcolour = []
267
+
268
+ set_column_align = self.parent.set_column_align
269
+ set_column_bgcolour = self.parent.set_column_bgcolour
270
+ set_column_txtcolour = self.parent.set_column_txtcolour
271
+
272
+ pos_x = self.left_margin * self.pwidth + self.horizontal_offset # left margin
273
+ self.column.append(pos_x)
274
+
275
+ #module logic expects two dimensional data -- fix input if needed
276
+ if isinstance(self.data, six.string_types):
277
+ self.data = [[copy.copy(self.data)]] # a string becomes a single cell
278
+ try:
279
+ rows = len(self.data)
280
+ except TypeError:
281
+ self.data = [[str(self.data)]] # a non-iterable becomes a single cell
282
+ rows = 1
283
+ first_value = self.data[0]
284
+
285
+ if isinstance(first_value, six.string_types): # a sequence of strings
286
+ if self.label == [] and self.set_column == []:
287
+ data = []
288
+ for x in self.data: #becomes one column
289
+ data.append([x])
290
+ else:
291
+ data = [self.data] #becames one row
292
+ self.data = data
293
+ first_value = data[0]
294
+ try:
295
+ column_total = len(first_value)
296
+ except TypeError: # a sequence of non-iterables
297
+ if self.label == [] and self.set_column == []:
298
+ data = [] #becomes one column
299
+ for x in self.data:
300
+ data.append([str(x)])
301
+ column_total = 1
302
+ else:
303
+ data = [self.data] #becomes one row
304
+ column_total = len(self.data)
305
+ self.data = data
306
+ first_value = data[0]
307
+
308
+ if self.set_column == []:
309
+ table_width = self.page_width - self.left_margin - self.right_margin
310
+ if self.label == []:
311
+ temp = first_value
312
+ else:
313
+ temp = self.label
314
+ width = table_width/(len(temp))
315
+ for val in temp:
316
+ column_width = width * self.pwidth
317
+ pos_x = pos_x + column_width
318
+ self.column.append(pos_x) # position of each column
319
+ else:
320
+ for val in self.set_column:
321
+ column_width = val * self.pwidth
322
+ pos_x = pos_x + column_width
323
+ self.column.append(pos_x) # position of each column
324
+
325
+ if pos_x > self.page_width * self.pwidth: # check if it fits in page
326
+ print("Warning, Too Wide for Page")
327
+ return
328
+
329
+ if self.label != []:
330
+ if len(self.column) -1 != len(self.label):
331
+ print("Column Settings Incorrect", "\nColumn Value: " + str(self.column), "\nLabel Value: " + str(self.label))
332
+ return
333
+
334
+ if column_total != len(self.column) -1:
335
+ print("Cannot fit", first_value, 'in', len(self.column)-1, 'columns.')
336
+ return
337
+
338
+ for col in range(column_total):
339
+ try:
340
+ align = set_column_align[col] # check if custom column alignment
341
+ except:
342
+ align = wx.ALIGN_LEFT
343
+ self.column_align.append(align)
344
+
345
+ try:
346
+ colour = set_column_bgcolour[col] # check if custom column background colour
347
+ except:
348
+ colour = self.parent.column_colour
349
+ self.column_bgcolour.append(colour)
350
+
351
+ try:
352
+ colour = set_column_txtcolour[col] # check if custom column text colour
353
+ except:
354
+ colour = self.GetFontColour(self.parent.text_font)
355
+ self.column_txtcolour.append(colour)
356
+
357
+
358
+ def SetPointAdjust(self):
359
+ f = wx.Font(10, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) # setup using 10 point
360
+ self.DC.SetFont(f)
361
+ f.SetFaceName(self.text_font["Name"])
362
+ x, y = self.DC.GetTextExtent("W")
363
+
364
+ self.label_pt_space_before = self.parent.label_pt_adj_before * y/10 # extra spacing for label per point value
365
+ self.label_pt_space_after = self.parent.label_pt_adj_after * y/10
366
+
367
+ self.text_pt_space_before = self.parent.text_pt_adj_before * y/10 # extra spacing for row text per point value
368
+ self.text_pt_space_after = self.parent.text_pt_adj_after * y/10
369
+
370
+ def SetPage(self, page):
371
+ self.page = page
372
+
373
+ def SetColumns(self, col):
374
+ self.column = col
375
+
376
+ def OutCanvas(self):
377
+ self.AdjustValues()
378
+ self.SetPointAdjust()
379
+
380
+ self.y_start = self.ptop_margin + self.vertical_offset
381
+ self.y_end = self.parent.page_height * self.pheight - self.pbottom_margin + self.vertical_offset
382
+
383
+ self.SetPrintFont(self.label_font)
384
+
385
+ x, y = self.DC.GetTextExtent("W")
386
+ self.label_space = y
387
+
388
+ self.SetPrintFont(self.text_font)
389
+
390
+ x, y = self.DC.GetTextExtent("W")
391
+ self.space = y
392
+
393
+ if self.total_pages is None:
394
+ self.GetTotalPages() # total pages for display/printing
395
+
396
+ self.data_cnt = self.page_index[self.page-1]
397
+
398
+ self.draw = True
399
+ self.PrintHeader()
400
+ self.PrintFooter()
401
+ self.OutPage()
402
+
403
+ def GetTotalPages(self):
404
+ self.data_cnt = 0
405
+ self.draw = False
406
+ self.page_index = [0]
407
+
408
+ cnt = 0
409
+ while 1:
410
+ test = self.OutPage()
411
+ self.page_index.append(self.data_cnt)
412
+ if test == False:
413
+ break
414
+ cnt = cnt + 1
415
+
416
+ self.total_pages = cnt + 1
417
+
418
+ def OutPage(self):
419
+ self.y = self.y_start
420
+ self.end_x = self.column[-1]
421
+
422
+ if self.data_cnt < len(self.data): # if there data for display on the page
423
+ if self.label != []: # check if header defined
424
+ self.PrintLabel()
425
+ else:
426
+ return False
427
+
428
+ for val in self.data:
429
+ try:
430
+ row_val = self.data[self.data_cnt]
431
+ except:
432
+ self.FinishDraw()
433
+ return False
434
+
435
+ max_y = self.PrintRow(row_val, False) # test to see if row will fit in remaining space
436
+ test = max_y + self.space
437
+
438
+ if test > self.y_end:
439
+ break
440
+
441
+ self.ColourRowCells(max_y-self.y+self.space) # colour the row/column
442
+ max_y = self.PrintRow(row_val, True) # row fits - print text
443
+ self.DrawGridLine() # top line of cell
444
+ self.y = max_y + self.space
445
+
446
+ if self.y > self.y_end:
447
+ break
448
+
449
+ self.data_cnt = self.data_cnt + 1
450
+
451
+ self.FinishDraw()
452
+
453
+ if self.data_cnt == len(self.data): # last value in list
454
+ return False
455
+
456
+ return True
457
+
458
+
459
+ def PrintLabel(self):
460
+ self.pt_space_before = self.label_pt_space_before # set the point spacing
461
+ self.pt_space_after = self.label_pt_space_after
462
+
463
+ self.LabelColorRow(self.label_colour)
464
+ self.SetPrintFont(self.label_font)
465
+
466
+ self.col = 0
467
+ max_y = 0
468
+ for vtxt in self.label:
469
+ self.region = self.column[self.col+1] - self.column[self.col]
470
+ self.indent = self.column[self.col]
471
+
472
+ self.align = wx.ALIGN_LEFT
473
+
474
+ max_out = self.OutTextRegion(vtxt, True)
475
+ if max_out > max_y:
476
+ max_y = max_out
477
+ self.col = self.col + 1
478
+
479
+ self.DrawGridLine() # top line of label
480
+ self.y = max_y + self.label_space
481
+
482
+ def PrintHeader(self): # print the header array
483
+ if self.draw == False:
484
+ return
485
+
486
+ for val in self.parent.header:
487
+ self.SetPrintFont(val["Font"])
488
+
489
+ header_indent = val["Indent"] * self.pwidth
490
+ text = val["Text"]
491
+
492
+ htype = val["Type"]
493
+ if htype == "Date":
494
+ addtext = self.GetDate()
495
+ elif htype == "Date & Time":
496
+ addtext = self.GetDateTime()
497
+ else:
498
+ addtext = ""
499
+
500
+ self.OutTextPageWidth(text+addtext, self.pheader_margin, val["Align"], header_indent, True)
501
+
502
+ def PrintFooter(self): # print the header array
503
+ if self.draw == False:
504
+ return
505
+
506
+ footer_pos = self.parent.page_height * self.pheight - self.pfooter_margin + self.vertical_offset
507
+ for val in self.parent.footer:
508
+ self.SetPrintFont(val["Font"])
509
+
510
+ footer_indent = val["Indent"] * self.pwidth
511
+ text = val["Text"]
512
+
513
+ ftype = val["Type"]
514
+ if ftype == "Pageof":
515
+ addtext = "Page " + str(self.page) + " of " + str(self.total_pages)
516
+ elif ftype == "Page":
517
+ addtext = "Page " + str(self.page)
518
+ elif ftype == "Num":
519
+ addtext = str(self.page)
520
+ elif ftype == "Date":
521
+ addtext = self.GetDate()
522
+ elif ftype == "Date & Time":
523
+ addtext = self.GetDateTime()
524
+ else:
525
+ addtext = ""
526
+
527
+ self.OutTextPageWidth(text+addtext, footer_pos, val["Align"], footer_indent, True)
528
+
529
+
530
+ def LabelColorRow(self, colour):
531
+ brush = wx.Brush(colour, wx.BRUSHSTYLE_SOLID)
532
+ self.DC.SetBrush(brush)
533
+ height = self.label_space + self.label_pt_space_before + self.label_pt_space_after
534
+ self.DC.DrawRectangle(self.column[0], self.y,
535
+ self.end_x-self.column[0]+1, height)
536
+
537
+ def ColourRowCells(self, height):
538
+ if self.draw == False:
539
+ return
540
+
541
+ col = 0
542
+ for colour in self.column_bgcolour:
543
+ cellcolour = self.GetCellColour(self.data_cnt, col)
544
+ if cellcolour is not None:
545
+ colour = cellcolour
546
+
547
+ brush = wx.Brush(colour, wx.BRUSHSTYLE_SOLID)
548
+ self.DC.SetBrush(brush)
549
+ self.DC.SetPen(wx.Pen(wx.WHITE, 0))
550
+
551
+ start_x = self.column[col]
552
+ width = self.column[col+1] - start_x + 2
553
+ self.DC.DrawRectangle(start_x, self.y, width, height)
554
+ col = col + 1
555
+
556
+ def PrintRow(self, row_val, draw = True, align = wx.ALIGN_LEFT):
557
+ self.SetPrintFont(self.text_font)
558
+
559
+ self.pt_space_before = self.text_pt_space_before # set the point spacing
560
+ self.pt_space_after = self.text_pt_space_after
561
+
562
+ self.col = 0
563
+ max_y = 0
564
+ for vtxt in row_val:
565
+ if not isinstance(vtxt, six.string_types):
566
+ vtxt = str(vtxt)
567
+ self.region = self.column[self.col+1] - self.column[self.col]
568
+ self.indent = self.column[self.col]
569
+ self.align = self.column_align[self.col]
570
+
571
+ fcolour = self.column_txtcolour[self.col] # set font colour
572
+ celltext = self.GetCellTextColour(self.data_cnt, self.col)
573
+ if celltext is not None:
574
+ fcolour = celltext # override the column colour
575
+
576
+ self.DC.SetTextForeground(fcolour)
577
+
578
+ max_out = self.OutTextRegion(vtxt, draw)
579
+ if max_out > max_y:
580
+ max_y = max_out
581
+ self.col = self.col + 1
582
+ return max_y
583
+
584
+ def GetCellColour(self, row, col): # check if custom colour defined for the cell background
585
+ try:
586
+ set = self.cell_colour[row]
587
+ except:
588
+ return None
589
+ try:
590
+ colour = set[col]
591
+ return colour
592
+ except:
593
+ return None
594
+
595
+ def GetCellTextColour(self, row, col): # check if custom colour defined for the cell text
596
+ try:
597
+ set = self.cell_text[row]
598
+ except:
599
+ return None
600
+ try:
601
+ colour = set[col]
602
+ return colour
603
+ except:
604
+ return None
605
+
606
+ def FinishDraw(self):
607
+ self.DrawGridLine() # draw last row line
608
+ self.DrawColumns() # draw all vertical lines
609
+
610
+ def DrawGridLine(self):
611
+ if self.draw == True \
612
+ and len(self.column) > 2: #supress grid lines if only one column
613
+ try:
614
+ size = self.row_line_size[self.data_cnt]
615
+ except:
616
+ size = self.row_def_line_size
617
+
618
+ if size < 1: return
619
+
620
+ try:
621
+ colour = self.row_line_colour[self.data_cnt]
622
+ except:
623
+ colour = self.row_def_line_colour
624
+
625
+ self.DC.SetPen(wx.Pen(colour, size))
626
+
627
+ y_out = self.y
628
+ # y_out = self.y + self.pt_space_before + self.pt_space_after # adjust for extra spacing
629
+ self.DC.DrawLine(self.column[0], y_out, self.end_x, y_out)
630
+
631
+ def DrawColumns(self):
632
+ if self.draw == True \
633
+ and len(self.column) > 2: #surpress grid line if only one column
634
+ col = 0
635
+ for val in self.column:
636
+ try:
637
+ size = self.column_line_size[col]
638
+ except:
639
+ size = self.column_def_line_size
640
+
641
+ if size < 1: continue
642
+
643
+ try:
644
+ colour = self.column_line_colour[col]
645
+ except:
646
+ colour = self.column_def_line_colour
647
+
648
+ indent = val
649
+
650
+ self.DC.SetPen(wx.Pen(colour, size))
651
+ self.DC.DrawLine(indent, self.y_start, indent, self.y)
652
+ col = col + 1
653
+
654
+ def DrawText(self):
655
+ self.DoRefresh()
656
+
657
+ def DoDrawing(self, DC):
658
+ size = DC.GetSize()
659
+ self.DC = DC
660
+
661
+ self.DrawText()
662
+
663
+ self.sizew = DC.MaxY()
664
+ self.sizeh = DC.MaxX()
665
+
666
+
667
+ class PrintTable(object):
668
+ def __init__(self, parentFrame=None):
669
+ self.data = []
670
+ self.set_column = []
671
+ self.label = []
672
+ self.header = []
673
+ self.footer = []
674
+
675
+ self.set_column_align = {}
676
+ self.set_column_bgcolour = {}
677
+ self.set_column_txtcolour = {}
678
+ self.set_cell_colour = {}
679
+ self.set_cell_text = {}
680
+ self.column_line_size = {}
681
+ self.column_line_colour = {}
682
+ self.row_line_size = {}
683
+ self.row_line_colour = {}
684
+
685
+ self.parentFrame = parentFrame
686
+ if parentFrame:
687
+ self.SetPreviewSize(parentFrame.GetPosition(), parentFrame.GetSize())
688
+ else:
689
+ self.SetPreviewSize()
690
+
691
+ self.printData = wx.PrintData()
692
+ self.scale = 1.0
693
+
694
+ self.SetParms()
695
+ self.SetColors()
696
+ self.SetFonts()
697
+ self.TextSpacing()
698
+
699
+ self.SetPrinterOffset()
700
+ self.SetHeaderValue()
701
+ self.SetFooterValue()
702
+ self.SetMargins()
703
+ self.SetPortrait()
704
+
705
+ def SetPreviewSize(self, position = wx.Point(0, 0), size="Full"):
706
+ if size == "Full":
707
+ r = wx.GetClientDisplayRect()
708
+ self.preview_frame_size = r.GetSize()
709
+ self.preview_frame_pos = r.GetPosition()
710
+ else:
711
+ self.preview_frame_size = size
712
+ self.preview_frame_pos = position
713
+
714
+ def SetPaperId(self, paper):
715
+ self.printData.SetPaperId(paper)
716
+
717
+ def SetOrientation(self, orient):
718
+ self.printData.SetOrientation(orient)
719
+
720
+ def SetColors(self):
721
+ self.row_def_line_colour = wx.BLACK
722
+ self.row_def_line_size = 1
723
+
724
+ self.column_def_line_colour = wx.BLACK
725
+ self.column_def_line_size = 1
726
+ self.column_colour = wx.WHITE
727
+
728
+ self.label_colour = wx.LIGHT_GREY
729
+
730
+ def SetFonts(self):
731
+ self.label_font = { "Name": self.default_font_name, "Size": 12, "Colour": [0, 0, 0], "Attr": [0, 0, 0] }
732
+ self.text_font = { "Name": self.default_font_name, "Size": 10, "Colour": [0, 0, 0], "Attr": [0, 0, 0] }
733
+
734
+ def TextSpacing(self):
735
+ self.label_pt_adj_before = 0 # point adjustment before and after the label text
736
+ self.label_pt_adj_after = 0
737
+
738
+ self.text_pt_adj_before = 0 # point adjustment before and after the row text
739
+ self.text_pt_adj_after = 0
740
+
741
+ def SetLabelSpacing(self, before, after): # method to set the label space adjustment
742
+ self.label_pt_adj_before = before
743
+ self.label_pt_adj_after = after
744
+
745
+ def SetRowSpacing(self, before, after): # method to set the row space adjustment
746
+ self.text_pt_adj_before = before
747
+ self.text_pt_adj_after = after
748
+
749
+ def SetPrinterOffset(self): # offset to adjust for printer
750
+ self.vertical_offset = -0.1
751
+ self.horizontal_offset = -0.1
752
+
753
+ def SetHeaderValue(self):
754
+ self.header_margin = 0.25
755
+ self.header_font = { "Name": self.default_font_name, "Size": 11, "Colour": [0, 0, 0], "Attr": [0, 0, 0] }
756
+ self.header_align = wx.ALIGN_CENTRE
757
+ self.header_indent = 0
758
+ self.header_type = "Text"
759
+
760
+ def SetFooterValue(self):
761
+ self.footer_margin = 0.7
762
+ self.footer_font = { "Name": self.default_font_name, "Size": 11, "Colour": [0, 0, 0], "Attr": [0, 0, 0] }
763
+ self.footer_align = wx.ALIGN_CENTRE
764
+ self.footer_indent = 0
765
+ self.footer_type = "Pageof"
766
+
767
+ def SetMargins(self):
768
+ self.left_margin = 0.5
769
+ self.right_margin = 0.5 # only used if no column sizes
770
+
771
+ self.top_margin = 0.8
772
+ self.bottom_margin = 1.0
773
+ self.cell_left_margin = 0.1
774
+ self.cell_right_margin = 0.1
775
+
776
+ def SetPortrait(self):
777
+ self.printData.SetPaperId(wx.PAPER_LETTER)
778
+ self.printData.SetOrientation(wx.PORTRAIT)
779
+ self.page_width = 8.5
780
+ self.page_height = 11.0
781
+
782
+ def SetLandscape(self):
783
+ self.printData.SetOrientation(wx.LANDSCAPE)
784
+ self.page_width = 11.0
785
+ self.page_height = 8.5
786
+
787
+ def SetParms(self):
788
+ self.ymax = 1
789
+ self.xmax = 1
790
+ self.page = 1
791
+ self.total_pg = 100
792
+
793
+ self.preview = None
794
+ self.page = 0
795
+
796
+ self.default_font_name = "Arial"
797
+ self.default_font = { "Name": self.default_font_name, "Size": 10, "Colour": [0, 0, 0], "Attr": [0, 0, 0] }
798
+
799
+ def SetColAlignment(self, col, align=wx.ALIGN_LEFT):
800
+ self.set_column_align[col] = align
801
+
802
+ def SetColBackgroundColour(self, col, colour):
803
+ self.set_column_bgcolour[col] = colour
804
+
805
+ def SetColTextColour(self, col, colour):
806
+ self.set_column_txtcolour[col] = colour
807
+
808
+ def SetCellColour(self, row, col, colour): # cell background colour
809
+ try:
810
+ set = self.set_cell_colour[row] # test if row already exists
811
+ try:
812
+ set[col] = colour # test if column already exists
813
+ except:
814
+ set = { col: colour } # create the column value
815
+ except:
816
+ set = { col: colour } # create the column value
817
+
818
+ self.set_cell_colour[row] = set # create dictionary item for colour settings
819
+
820
+ def SetCellText(self, row, col, colour): # font colour for custom cells
821
+ try:
822
+ set = self.set_cell_text[row] # test if row already exists
823
+ try:
824
+ set[col] = colour # test if column already exists
825
+ except:
826
+ set = { col: colour } # create the column value
827
+ except:
828
+ set = { col: colour } # create the column value
829
+
830
+ self.set_cell_text[row] = set # create dictionary item for colour settings
831
+
832
+ def SetColumnLineSize(self, col, size): # column line size
833
+ self.column_line_size[col] = size # create dictionary item for column line settings
834
+
835
+ def SetColumnLineColour(self, col, colour):
836
+ self.column_line_colour[col] = colour
837
+
838
+ def SetRowLineSize(self, row, size):
839
+ self.row_line_size[row] = size
840
+
841
+ def SetRowLineColour(self, row, colour):
842
+ self.row_line_colour[row] = colour
843
+
844
+ def GetColour(self, colour): # returns colours based from wxColour value
845
+ red = colour.Red()
846
+ blue = colour.Blue()
847
+ green = colour.Green()
848
+ return [red, green, blue ]
849
+
850
+ def SetHeader(self, text = "", type = "Text", font=None, align = None, indent = None, colour = None, size = None):
851
+ set = { "Text": text }
852
+
853
+ if font is None:
854
+ set["Font"] = copy.copy(self.default_font)
855
+ else:
856
+ set["Font"] = font
857
+
858
+ if colour is not None:
859
+ setfont = set["Font"]
860
+ setfont["Colour"] = self.GetColour(colour)
861
+
862
+ if size is not None:
863
+ setfont = set["Font"]
864
+ setfont["Size"] = size
865
+
866
+ if align is None:
867
+ set["Align"] = self.header_align
868
+ else:
869
+ set["Align"] = align
870
+
871
+ if indent is None:
872
+ set["Indent"] = self.header_indent
873
+ else:
874
+ set["Indent"] = indent
875
+
876
+ if type is None:
877
+ set["Type"] = self.header_type
878
+ else:
879
+ set["Type"] = type
880
+
881
+ self.header.append(set)
882
+
883
+ def SetFooter(self, text = "", type = None, font=None, align = None, indent = None, colour = None, size = None):
884
+ set = { "Text": text }
885
+
886
+ if font is None:
887
+ set["Font"] = copy.copy(self.default_font)
888
+ else:
889
+ set["Font"] = font
890
+
891
+ if colour is not None:
892
+ setfont = set["Font"]
893
+ setfont["Colour"] = self.GetColour(colour)
894
+
895
+ if size is not None:
896
+ setfont = set["Font"]
897
+ setfont["Size"] = size
898
+
899
+ if align is None:
900
+ set["Align"] = self.footer_align
901
+ else:
902
+ set["Align"] = align
903
+
904
+ if indent is None:
905
+ set["Indent"] = self.footer_indent
906
+ else:
907
+ set["Indent"] = indent
908
+
909
+ if type is None:
910
+ set["Type"] = self.footer_type
911
+ else:
912
+ set["Type"] = type
913
+
914
+ self.footer.append(set)
915
+
916
+ def Preview(self):
917
+ data = wx.PrintDialogData(self.printData)
918
+ printout = SetPrintout(self)
919
+ printout2 = SetPrintout(self)
920
+ self.preview = wx.PrintPreview(printout, printout2, data)
921
+ if not self.preview.IsOk():
922
+ wx.MessageBox("There was a problem printing!", "Printing", wx.OK)
923
+ return
924
+
925
+ self.preview.SetZoom(60) # initial zoom value
926
+ frame = wx.PreviewFrame(self.preview, self.parentFrame, "Print preview")
927
+
928
+ frame.Initialize()
929
+ if self.parentFrame:
930
+ frame.SetPosition(self.preview_frame_pos)
931
+ frame.SetSize(self.preview_frame_size)
932
+ frame.Show(True)
933
+
934
+ def Print(self):
935
+ pdd = wx.PrintDialogData(self.printData)
936
+ printer = wx.Printer(pdd)
937
+ printout = SetPrintout(self)
938
+ if not printer.Print(self.parentFrame, printout):
939
+ if wx.Printer.GetLastError() == wx.PRINTER_ERROR:
940
+ wx.MessageBox("There was a problem printing.\n"
941
+ "Perhaps your current printer is not set correctly?",
942
+ "Printing", wx.OK)
943
+ else:
944
+ self.printData = wx.PrintData( printer.GetPrintDialogData().GetPrintData() )
945
+ printout.Destroy()
946
+
947
+ def DoDrawing(self, DC):
948
+ size = DC.GetSize()
949
+
950
+ table = PrintTableDraw(self, DC, size)
951
+ table.data = self.data
952
+ table.set_column = self.set_column
953
+ table.label = self.label
954
+ table.SetPage(self.page)
955
+
956
+ if self.preview is None:
957
+ table.SetPSize(size[0]/self.page_width, size[1]/self.page_height)
958
+ table.SetPTSize(size[0], size[1])
959
+ table.SetPreview(False)
960
+ else:
961
+ if self.preview == 1:
962
+ table.scale = self.scale
963
+ table.SetPSize(size[0]/self.page_width, size[1]/self.page_height)
964
+ else:
965
+ table.SetPSize(self.pwidth, self.pheight)
966
+
967
+ table.SetPTSize(self.ptwidth, self.ptheight)
968
+ table.SetPreview(self.preview)
969
+
970
+ table.OutCanvas()
971
+ self.page_total = table.total_pages # total display pages
972
+
973
+ self.ymax = DC.MaxY()
974
+ self.xmax = DC.MaxX()
975
+
976
+ self.sizeh = size[0]
977
+ self.sizew = size[1]
978
+
979
+ def GetTotalPages(self):
980
+ self.page_total = 100
981
+ return self.page_total
982
+
983
+ def HasPage(self, page):
984
+ if page <= self.page_total:
985
+ return True
986
+ else:
987
+ return False
988
+
989
+ def SetPage(self, page):
990
+ self.page = page
991
+
992
+ def SetPageSize(self, width, height):
993
+ self.pwidth, self.pheight = width, height
994
+
995
+ def SetTotalSize(self, width, height):
996
+ self.ptwidth, self.ptheight = width, height
997
+
998
+ def SetPreview(self, preview, scale):
999
+ self.preview = preview
1000
+ self.scale = scale
1001
+
1002
+ def SetTotalSize(self, width, height):
1003
+ self.ptwidth = width
1004
+ self.ptheight = height
1005
+
1006
+ class PrintGrid(object):
1007
+ def __init__(self, parent, grid, format = [], total_col = None, total_row = None):
1008
+ if total_row is None:
1009
+ total_row = grid.GetNumberRows()
1010
+ if total_col is None:
1011
+ total_col = grid.GetNumberCols()
1012
+
1013
+ self.total_row = total_row
1014
+ self.total_col = total_col
1015
+ self.grid = grid
1016
+
1017
+ data = []
1018
+ for row in range(total_row):
1019
+ row_val = []
1020
+ value = grid.GetRowLabelValue(row)
1021
+ row_val.append(value)
1022
+
1023
+ for col in range(total_col):
1024
+ value = grid.GetCellValue(row, col)
1025
+ row_val.append(value)
1026
+ data.append(row_val)
1027
+
1028
+ label = [""]
1029
+ for col in range(total_col):
1030
+ value = grid.GetColLabelValue(col)
1031
+ label.append(value)
1032
+
1033
+ self.table = PrintTable(parent)
1034
+ self.table.cell_left_margin = 0.0
1035
+ self.table.cell_right_margin = 0.0
1036
+
1037
+ self.table.label = label
1038
+ self.table.set_column = format
1039
+ self.table.data = data
1040
+
1041
+ def GetTable(self):
1042
+ return self.table
1043
+
1044
+ def SetAttributes(self):
1045
+ for row in range(self.total_row):
1046
+ for col in range(self.total_col):
1047
+ colour = self.grid.GetCellTextColour(row, col-1)
1048
+ self.table.SetCellText(row, col, colour)
1049
+
1050
+ colour = self.grid.GetCellBackgroundColour(row, col-1)
1051
+ self.table.SetCellColour(row, col, colour)
1052
+
1053
+ def Preview(self):
1054
+ self.table.Preview()
1055
+
1056
+ def Print(self):
1057
+ self.table.Print()
1058
+
1059
+
1060
+ class SetPrintout(wx.Printout):
1061
+ def __init__(self, canvas):
1062
+ wx.Printout.__init__(self)
1063
+ self.canvas = canvas
1064
+ self.end_pg = 1000
1065
+
1066
+ def OnBeginDocument(self, start, end):
1067
+ return super(SetPrintout, self).OnBeginDocument(start, end)
1068
+
1069
+ def OnEndDocument(self):
1070
+ super(SetPrintout, self).OnEndDocument()
1071
+
1072
+ def HasPage(self, page):
1073
+ try:
1074
+ end = self.canvas.HasPage(page)
1075
+ return end
1076
+ except:
1077
+ return True
1078
+
1079
+ def GetPageInfo(self):
1080
+ try:
1081
+ self.end_pg = self.canvas.GetTotalPages()
1082
+ except:
1083
+ pass
1084
+
1085
+ end_pg = self.end_pg
1086
+ str_pg = 1
1087
+ return (str_pg, end_pg, str_pg, end_pg)
1088
+
1089
+ def OnPreparePrinting(self):
1090
+ super(SetPrintout, self).OnPreparePrinting()
1091
+
1092
+ def OnBeginPrinting(self):
1093
+ dc = self.GetDC()
1094
+
1095
+ self.preview = self.IsPreview()
1096
+ if (self.preview):
1097
+ self.pixelsPerInch = self.GetPPIScreen()
1098
+ else:
1099
+ self.pixelsPerInch = self.GetPPIPrinter()
1100
+
1101
+ (w, h) = dc.GetSize()
1102
+ scaleX = float(w) / 1000
1103
+ scaleY = float(h) / 1000
1104
+ self.printUserScale = min(scaleX, scaleY)
1105
+
1106
+ super(SetPrintout, self).OnBeginPrinting()
1107
+
1108
+ def GetSize(self):
1109
+ self.psizew, self.psizeh = self.GetPPIPrinter()
1110
+ return self.psizew, self.psizeh
1111
+
1112
+ def GetTotalSize(self):
1113
+ self.ptsizew, self.ptsizeh = self.GetPageSizePixels()
1114
+ return self.ptsizew, self.ptsizeh
1115
+
1116
+ def OnPrintPage(self, page):
1117
+ dc = self.GetDC()
1118
+ (w, h) = dc.GetSize()
1119
+ scaleX = float(w) / 1000
1120
+ scaleY = float(h) / 1000
1121
+ self.printUserScale = min(scaleX, scaleY)
1122
+ dc.SetUserScale(self.printUserScale, self.printUserScale)
1123
+
1124
+ self.preview = self.IsPreview()
1125
+
1126
+ self.canvas.SetPreview(self.preview, self.printUserScale)
1127
+ self.canvas.SetPage(page)
1128
+
1129
+ self.ptsizew, self.ptsizeh = self.GetPageSizePixels()
1130
+ self.canvas.SetTotalSize(self.ptsizew, self.ptsizeh)
1131
+
1132
+ self.psizew, self.psizeh = self.GetPPIPrinter()
1133
+ self.canvas.SetPageSize(self.psizew, self.psizeh)
1134
+
1135
+ self.canvas.DoDrawing(dc)
1136
+ return True
1137
+
1138
+ if __name__ == '__main__':
1139
+ app = wx.App()
1140
+ frame = wx.Frame(None, -1, "Dummy wx frame for testing printout.py")
1141
+ frame.Show(True)
1142
+ ptbl = PrintTable(frame)
1143
+ ptbl.SetHeader('This is the test HEADER')
1144
+ # a single sequence will print out as a single column with no borders ...
1145
+ ptbl.data = (
1146
+ 'This is the first line of text.',
1147
+ 'This is the second line\nand the third. The fourth will be the number "4.0".',
1148
+ 04.00,
1149
+ 'This is the fifth line, but by design it is too long to fit in the width of a standard'\
1150
+ ' page, so it will be forced to wrap around in order to fit without having '\
1151
+ 'some of its verbose verbage truncated.',
1152
+ 'Here we have the final line.'
1153
+ )
1154
+ #... but, if labels or columns are defined, a single sequence will print out as a single row
1155
+ ##ptbl.label = ('One','Two','Three','Four','5')
1156
+ ptbl.Preview()
1157
+ app.MainLoop()