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/calendar.py ADDED
@@ -0,0 +1,1597 @@
1
+ # -*- coding: utf-8 -*-
2
+ # #----------------------------------------------------------------------------
3
+ # Name: calendar.py
4
+ # Purpose: Calendar display control
5
+ #
6
+ # Author: Lorne White (email: lorne.white@telusplanet.net)
7
+ #
8
+ # Created:
9
+ # Version: 0.92
10
+ # Date: Nov 26, 2001
11
+ # Licence: wxWindows license
12
+ # Tags: phoenix-port, documented, unittest, py3-port
13
+ # (c) 2021 Zombie
14
+ #----------------------------------------------------------------------------
15
+ # 12/01/2003 - Jeff Grimmett (grimmtooth@softhome.net)
16
+ #
17
+ # o Updated for wx namespace
18
+ # o Tested with updated demo
19
+ # o Added new event type EVT_CALENDAR. The reason for this is that the original
20
+ # library used a hardcoded ID of 2100 for generating events. This makes it
21
+ # very difficult to fathom when trying to decode the code since there's no
22
+ # published API. Creating the new event binder might seem like overkill -
23
+ # after all, you might ask, why not just use a new event ID and be done with
24
+ # it? However, a consistent interface is very useful at times; also it makes
25
+ # it clear that we're not just hunting for mouse clicks -- we're hunting
26
+ # wabbit^H^H^H^H (sorry bout that) for calender-driven mouse clicks. So
27
+ # that's my sad story. Shoot me if you must :-)
28
+ # o There's still one deprecation warning buried in here somewhere, but I
29
+ # haven't been able to find it yet. It only occurs when displaying a
30
+ # print preview, and only the first time. It *could* be an error in the
31
+ # demo, I suppose.
32
+ #
33
+ # Here's the traceback:
34
+ #
35
+ # C:\Python\lib\site-packages\wx\core.py:949: DeprecationWarning:
36
+ # integer argument expected, got float
37
+ # newobj = _core.new_Rect(*args, **kwargs)
38
+ #
39
+ # 12/17/2003 - Jeff Grimmett (grimmtooth@softhome.net)
40
+ #
41
+ # o A few style-guide nips and tucks
42
+ # o Renamed wxCalendar to Calendar
43
+ # o Couple of bugfixes
44
+ #
45
+ # 06/02/2004 - Joerg "Adi" Sieker adi@sieker.info
46
+ #
47
+ # o Changed color handling, use dictionary instead of members.
48
+ # This causes all color changes to be ignored if they manipluate the members directly.
49
+ # SetWeekColor and other method color methods were adapted to use the new dictionary.
50
+ # o Added COLOR_* constants
51
+ # o Added SetColor method for Calendar class
52
+ # o Added 3D look of week header
53
+ # o Added colors for 3D look of header
54
+ # o Fixed width calculation.
55
+ # Because of rounding difference the total width and height of the
56
+ # calendar could be up to 6 pixels to small. The last column and row
57
+ # are now wider/taller by the missing amount.
58
+ # o Added SetTextAlign method to wxCalendar. This exposes logic
59
+ # which was already there.
60
+ # o Fixed CalDraw.SetMarg which set set_x_st and set_y_st which don't get used anywhere.
61
+ # Instead set set_x_mrg and set_y_mrg
62
+ # o Changed default X and Y Margin to 0.
63
+ # o Added wxCalendar.SetMargin.
64
+ #
65
+ # 17/03/2004 - Joerg "Adi" Sieker adi@sieker.info
66
+ # o Added keyboard navigation to the control.
67
+ # Use the cursor keys to navigate through the ages. :)
68
+ # The Home key function as go to today
69
+ # o select day is now a filled rect instead of just an outline
70
+ #
71
+ # 15/04/2005 - Joe "shmengie" Brown joebrown@podiatryfl.com
72
+ # o Adjusted spin control size/placement (On Windows ctrls were overlapping).
73
+ # o Set Ok/Cancel buttons to wx.ID_OK & wx.ID_CANCEL to provide default dialog
74
+ # behaviour.
75
+ # o If no date has been clicked clicked, OnOk set the result to calend's date,
76
+ # important if keyboard only navigation is used.
77
+ #
78
+ # 12/10/2006 - Walter Barnes walter_barnes05@yahoo.com
79
+ # o Fixed CalDraw to properly render months that start on a Sunday.
80
+ #
81
+ # 21/10/2006 - Walter Barnes walter_barnes05@yahoo.com
82
+ # o Fixed a bug in Calendar: Shift and Control key status was only recorded for
83
+ # left-down events.
84
+ # o Added handlers for wxEVT_MIDDLE_DOWN and wxEVT_MIDDLE_DCLICK to generate
85
+ # EVT_CALENDAR for these mouse events.
86
+ """A module with a calendar control and a calendar dialog and some utility
87
+ methods and classes.
88
+ """
89
+
90
+ import wx
91
+ _ = wx.GetTranslation
92
+
93
+ import datetime
94
+
95
+ CalDays = [6, 0, 1, 2, 3, 4, 5]
96
+ AbrWeekday = {6: _("Sun"), 0: _("Mon"), 1: _("Tue"), 2: _("Wed"), 3: _("Thu"),
97
+ 4: _("Fri"), 5: _("Sat")}
98
+ Month = {0: None,
99
+ 1: _('January'), 2: _('February'), 3: _('March'),
100
+ 4: _('April'), 5: _('May'), 6: _('June'),
101
+ 7: _('July'), 8: _('August'), 9: _('September'),
102
+ 10: _('October'), 11: _('November'), 12: _('December')}
103
+ _MIDSIZE = 180
104
+
105
+ COLOR_GRID_LINES = "grid_lines"
106
+ COLOR_BACKGROUND = "background"
107
+ COLOR_SELECTION_FONT = "selection_font"
108
+ COLOR_SELECTION_BACKGROUND = "selection_background"
109
+ COLOR_BORDER = "border"
110
+ COLOR_HEADER_BACKGROUND = "header_background"
111
+ COLOR_HEADER_FONT = "header_font"
112
+ COLOR_WEEKEND_BACKGROUND = "weekend_background"
113
+ COLOR_WEEKEND_FONT = "weekend_font"
114
+ COLOR_FONT = "font"
115
+ COLOR_3D_LIGHT = "3d_light"
116
+ COLOR_3D_DARK = "3d_dark"
117
+ COLOR_HIGHLIGHT_FONT = "highlight_font"
118
+ COLOR_HIGHLIGHT_BACKGROUND = "highlight_background"
119
+
120
+ BusCalDays = [0, 1, 2, 3, 4, 5, 6]
121
+
122
+ # Calendar click event - added 12/1/03 by jmg (see above)
123
+ wxEVT_COMMAND_PYCALENDAR_DAY_CLICKED = wx.NewEventType()
124
+ EVT_CALENDAR = wx.PyEventBinder(wxEVT_COMMAND_PYCALENDAR_DAY_CLICKED, 1)
125
+
126
+
127
+ def GetMonthList():
128
+ """
129
+ Get a list of the defined month names.
130
+
131
+ rtype: `list`
132
+ """
133
+
134
+ monthlist = []
135
+ for i in range(13):
136
+ name = Month[i]
137
+ if name is not None:
138
+ monthlist.append(name)
139
+ return monthlist
140
+
141
+
142
+ def MakeColor(in_color):
143
+ """
144
+ Try and create a :class:`wx.Colour`.
145
+
146
+ :returns: a :class:`wx.Colour` instance to `in_colour`
147
+ """
148
+ try:
149
+ color = wx.Colour(in_color)
150
+ except Exception:
151
+ color = in_color
152
+ return color
153
+
154
+
155
+ def DefaultColors():
156
+ """Define some default colors."""
157
+ colors = {}
158
+ colors[COLOR_GRID_LINES] = 'BLACK'
159
+ colors[COLOR_BACKGROUND] = 'WHITE'
160
+ colors[COLOR_SELECTION_FONT] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)
161
+ colors[COLOR_SELECTION_BACKGROUND] = wx.Colour(255, 255, 225)
162
+ colors[COLOR_BORDER] = 'BLACK'
163
+ colors[COLOR_HEADER_BACKGROUND] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE)
164
+ colors[COLOR_HEADER_FONT] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)
165
+ colors[COLOR_WEEKEND_BACKGROUND] = 'LIGHT GREY'
166
+ colors[COLOR_WEEKEND_FONT] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)
167
+ colors[COLOR_FONT] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)
168
+ colors[COLOR_3D_LIGHT] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNHIGHLIGHT)
169
+ colors[COLOR_3D_DARK] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNSHADOW)
170
+ colors[COLOR_HIGHLIGHT_FONT] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT)
171
+ colors[COLOR_HIGHLIGHT_BACKGROUND] = wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT)
172
+ return colors
173
+
174
+
175
+ class CalDraw:
176
+ """A class to draw a calendar."""
177
+ def __init__(self, parent):
178
+ """
179
+ Default class constructor
180
+
181
+ :param wx.Window `parent`: parent window.
182
+
183
+ """
184
+ self.pwidth = 1
185
+ self.pheight = 1
186
+ try:
187
+ self.scale = parent.scale
188
+ except Exception:
189
+ self.scale = 1
190
+
191
+ self.gridx = []
192
+ self.gridy = []
193
+
194
+ self.DefParms()
195
+
196
+ def DefParms(self):
197
+ """Setup the default parameters."""
198
+ self.num_auto = True # auto scale of the cal number day size
199
+ self.num_size = 12 # default size of calendar if no auto size
200
+ self.max_num_size = 12 # maximum size for calendar number
201
+
202
+ self.num_align_horz = wx.ALIGN_CENTRE # alignment of numbers
203
+ self.num_align_vert = wx.ALIGN_CENTRE
204
+ self.num_indent_horz = 0 # points indent from position, used to offset if not centered
205
+ self.num_indent_vert = 0
206
+
207
+ self.week_auto = True # auto scale of week font text
208
+ self.week_size = 10
209
+ self.max_week_size = 12
210
+
211
+ self.colors = DefaultColors()
212
+
213
+ self.fontfamily = wx.FONTFAMILY_SWISS
214
+ self.fontstyle = wx.FONTSTYLE_NORMAL
215
+ self.fontweight = wx.FONTWEIGHT_NORMAL
216
+
217
+ self.hide_title = False
218
+ self.hide_grid = False
219
+ self.outer_border = True
220
+
221
+ self.title_offset = 0
222
+ self.cal_week_scale = 0.7
223
+ self.show_weekend = False
224
+ self.cal_type = "NORMAL"
225
+
226
+ def SetWeekColor(self, font_color, week_color):
227
+ """
228
+ Set the font and background color of the week title.
229
+
230
+ :param `font_color`: the font color, a value as is accepted by :class:`wx.Colour`
231
+ :param `week_color`: the week color, a value as is accepted by :class:`wx.Colour`
232
+ """
233
+ self.colors[COLOR_HEADER_FONT] = MakeColor(font_color)
234
+ self.colors[COLOR_HEADER_BACKGROUND] = MakeColor(week_color)
235
+ self.colors[COLOR_3D_LIGHT] = MakeColor(week_color)
236
+ self.colors[COLOR_3D_DARK] = MakeColor(week_color)
237
+
238
+ def SetSize(self, size):
239
+ """
240
+ Set the size.
241
+
242
+ :param `size`: a tuple/list with width and height
243
+
244
+ """
245
+ self.set_sizew = size[0]
246
+ self.set_sizeh = size[1]
247
+
248
+ def InitValues(self):
249
+ """Default dimensions of various elements of the calendar."""
250
+ self.rg = {}
251
+ self.cal_sel = {}
252
+ self.set_cy_st = 0 # start position
253
+ self.set_cx_st = 0
254
+
255
+ self.set_y_mrg = 1 # start of vertical draw default
256
+ self.set_x_mrg = 1
257
+ self.set_y_end = 1
258
+
259
+ def SetPos(self, xpos, ypos):
260
+ """
261
+ Set the position.
262
+
263
+ :param int `xpos`: the x position
264
+ :param int `ypos`: the y position
265
+
266
+ """
267
+ self.set_cx_st = xpos
268
+ self.set_cy_st = ypos
269
+
270
+ def SetMarg(self, xmarg, ymarg):
271
+ """
272
+ Set the margins.
273
+
274
+ :param `xmarg`: the x margin
275
+ :param `ymarg`: the y margin, also used for the end margin
276
+
277
+ """
278
+ self.set_x_mrg = xmarg
279
+ self.set_y_mrg = ymarg
280
+ self.set_y_end = ymarg
281
+
282
+ def InitScale(self):
283
+ """Set the default scale values."""
284
+ self.sizew = int(self.set_sizew * self.pwidth)
285
+ self.sizeh = int(self.set_sizeh * self.pheight)
286
+
287
+ self.cx_st = int(self.set_cx_st * self.pwidth) # draw start position
288
+ self.cy_st = int(self.set_cy_st * self.pheight)
289
+
290
+ self.x_mrg = int(self.set_x_mrg * self.pwidth) # calendar draw margins
291
+ self.y_mrg = int(self.set_y_mrg * self.pheight)
292
+ self.y_end = int(self.set_y_end * self.pheight)
293
+
294
+ def DrawCal(self, DC, sel_lst=[]):
295
+ """
296
+ Draw the calendar.
297
+
298
+ :param `DC`: the :class:`wx.DC` to use to draw upon.
299
+ :param `sel_list`: a list of days to override the weekend highlight.
300
+ """
301
+ self.InitScale()
302
+
303
+ self.DrawBorder(DC)
304
+
305
+ if self.hide_title is False:
306
+ self.DrawMonth(DC)
307
+
308
+ self.Center()
309
+
310
+ self.DrawGrid(DC)
311
+ self.GetRect()
312
+ if self.show_weekend is True: # highlight weekend dates
313
+ self.SetWeekEnd()
314
+
315
+ self.AddSelect(sel_lst) # overrides the weekend highlight
316
+
317
+ self.DrawSel(DC) # highlighted days
318
+ self.DrawWeek(DC)
319
+ self.DrawNum(DC)
320
+
321
+ def AddSelect(self, list, cfont=None, cbackgrd=None):
322
+ """
323
+ Add a selection of days.
324
+
325
+ :param `list`: a list of days to select
326
+ :param `cfont`: the font color to use
327
+ :param `cbackgrd`: the background color to use
328
+
329
+ """
330
+ if cfont is None:
331
+ cfont = self.colors[COLOR_SELECTION_FONT] # font digit color
332
+ if cbackgrd is None:
333
+ cbackgrd = self.colors[COLOR_SELECTION_BACKGROUND] # select background color
334
+
335
+ for val in list:
336
+ self.cal_sel[val] = (cfont, cbackgrd)
337
+
338
+ def DrawBorder(self, DC, transparent=False):
339
+ """
340
+ Draw a border around the outside of the main display rectangle.
341
+
342
+ :param `DC`: the :class:`wx.DC` to use
343
+ :param `transparent`: use a transparent brush, default is ``False``.
344
+
345
+ """
346
+ if self.outer_border is True:
347
+ if transparent is False:
348
+ brush = wx.Brush(MakeColor(self.colors[COLOR_BACKGROUND]), wx.BRUSHSTYLE_SOLID)
349
+ else:
350
+ brush = wx.TRANSPARENT_BRUSH
351
+ DC.SetBrush(brush)
352
+ DC.SetPen(wx.Pen(MakeColor(self.colors[COLOR_BORDER])))
353
+ # full display window area
354
+ rect = wx.Rect(self.cx_st, self.cy_st, self.sizew, self.sizeh)
355
+ DC.DrawRectangle(rect)
356
+
357
+ def DrawFocusIndicator(self, DC):
358
+ """
359
+ Draw the focus indicator
360
+
361
+ :param `DC`: the :class:`wx.DC` to use
362
+
363
+ """
364
+ if self.outer_border is True:
365
+ DC.SetBrush(wx.TRANSPARENT_BRUSH)
366
+ DC.SetPen(wx.Pen(MakeColor(self.colors[COLOR_HIGHLIGHT_BACKGROUND]), style=wx.PENSTYLE_DOT))
367
+ # full display window area
368
+ rect = wx.Rect(self.cx_st, self.cy_st, self.sizew, self.sizeh)
369
+ DC.DrawRectangle(rect)
370
+
371
+ def DrawNumVal(self):
372
+ """Draw the numeric values."""
373
+ self.DrawNum()
374
+
375
+ def SetCal(self, year, month):
376
+ """
377
+ Calculate the calendar days and offset position.
378
+
379
+ :param int `year`: the year to calculate.
380
+ :param int `month`: the month to calculate.
381
+
382
+ """
383
+ self.InitValues() # reset initial values
384
+
385
+ self.year = year
386
+ self.month = month
387
+
388
+ # first day of week (Mon->0), number of days in month
389
+ self.dow = dow = datetime.date(year, month, 1).weekday()
390
+ self.dim = dim = wx.DateTime().GetLastMonthDay(month-1, year).GetDay()
391
+
392
+ if self.cal_type == "NORMAL":
393
+ start_pos = dow + 1
394
+ else:
395
+ start_pos = dow
396
+
397
+ if start_pos > 6:
398
+ start_pos = 0
399
+
400
+ self.st_pos = start_pos
401
+
402
+ self.cal_days = []
403
+ for i in range(start_pos):
404
+ self.cal_days.append('')
405
+
406
+ i = 1
407
+ while i <= dim:
408
+ self.cal_days.append(str(i))
409
+ i = i + 1
410
+
411
+ self.end_pos = start_pos + dim - 1
412
+
413
+ return start_pos
414
+
415
+ def SetWeekEnd(self, font_color=None, backgrd=None):
416
+ """
417
+ Set the weekend backgrounds.
418
+
419
+ :param `font_color`: the font color to use, if ``None`` the default is used.
420
+ :param `backgrd`: the background color to use, if ``None`` the default is used.
421
+
422
+ """
423
+ if font_color is not None:
424
+ self.SetColor(COLOR_WEEKEND_FONT, MakeColor(font_color))
425
+ if backgrd is not None:
426
+ self.SetColor(COLOR_WEEKEND_BACKGROUND, MakeColor(backgrd))
427
+
428
+ date = 6 - int(self.dow) # start day of first saturday
429
+ if date == 0: # ...unless we start on Sunday
430
+ self.cal_sel[1] = (self.GetColor(COLOR_WEEKEND_FONT), self.GetColor(COLOR_WEEKEND_BACKGROUND))
431
+ date = 7
432
+
433
+ while date <= self.dim:
434
+ self.cal_sel[date] = (self.GetColor(COLOR_WEEKEND_FONT), self.GetColor(COLOR_WEEKEND_BACKGROUND)) # Saturday
435
+ date = date + 1
436
+
437
+ if date <= self.dim:
438
+ self.cal_sel[date] = (self.GetColor(COLOR_WEEKEND_FONT), self.GetColor(COLOR_WEEKEND_BACKGROUND)) # Sunday
439
+ date = date + 6
440
+ else:
441
+ date = date + 7
442
+
443
+ def GetRect(self):
444
+ """Get the display rectange list of the day grid."""
445
+ cnt = 0
446
+ h = 0
447
+ w = 0
448
+ for y in self.gridy[1:-1]:
449
+ if y == self.gridy[-2]:
450
+ h = h + self.restH
451
+
452
+ for x in self.gridx[:-1]:
453
+ assert type(y) == int
454
+ assert type(x) == int
455
+
456
+ w = self.cellW
457
+ h = self.cellH
458
+
459
+ if x == self.gridx[-2]:
460
+ w = w + self.restW
461
+
462
+ rect = wx.Rect(x, y, w + 1, h + 1) # create rect region
463
+
464
+ self.rg[cnt] = rect
465
+ cnt = cnt + 1
466
+
467
+ return self.rg
468
+
469
+ def GetCal(self):
470
+ """Get the calendar days."""
471
+ return self.cal_days
472
+
473
+ def GetOffset(self):
474
+ """Get the offset position."""
475
+ return self.st_pos
476
+
477
+ def DrawMonth(self, DC):
478
+ """
479
+ Draw the month and year titles.
480
+
481
+ :param `DC`: the :class:`wx.DC` to use.
482
+
483
+ """
484
+ month = Month[self.month]
485
+
486
+ sizef = 11
487
+ if self.sizeh < _MIDSIZE:
488
+ sizef = 10
489
+
490
+ f = wx.Font(sizef, self.fontfamily, self.fontstyle, self.fontweight)
491
+ DC.SetFont(f)
492
+
493
+ tw, th = DC.GetTextExtent(month)
494
+ adjust = self.cx_st + (self.sizew - tw) // 2
495
+ DC.DrawText(month, adjust, self.cy_st + th)
496
+
497
+ year = str(self.year)
498
+ tw, th = DC.GetTextExtent(year)
499
+ adjust = self.sizew - tw - self.x_mrg
500
+
501
+ self.title_offset = th * 2
502
+
503
+ f = wx.Font(sizef, self.fontfamily, self.fontstyle, self.fontweight)
504
+ DC.SetFont(f)
505
+ DC.DrawText(year, self.cx_st + adjust, self.cy_st + th)
506
+
507
+ def DrawWeek(self, DC):
508
+ """
509
+ Draw the week days.
510
+
511
+ :param `DC`: the :class:`wx.DC` to use.
512
+
513
+ """
514
+ # increase by 1 to include all gridlines
515
+ width = self.gridx[1] - self.gridx[0] + 1
516
+ height = self.gridy[1] - self.gridy[0] + 1
517
+ rect_w = self.gridx[-1] - self.gridx[0]
518
+
519
+ f = wx.Font(10, self.fontfamily, self.fontstyle, self.fontweight) # initial font setting
520
+
521
+ if self.week_auto is True:
522
+ test_size = self.max_week_size # max size
523
+ test_day = ' Sun '
524
+ while test_size > 2:
525
+ f.SetPointSize(test_size)
526
+ DC.SetFont(f)
527
+ tw, th = DC.GetTextExtent(test_day)
528
+
529
+ if tw < width and th < height:
530
+ break
531
+
532
+ test_size = test_size - 1
533
+ else:
534
+ f.SetPointSize(self.week_size) # set fixed size
535
+ DC.SetFont(f)
536
+
537
+ DC.SetTextForeground(MakeColor(self.colors[COLOR_HEADER_FONT]))
538
+
539
+ cnt_x = 0
540
+ cnt_y = 0
541
+
542
+ brush = wx.Brush(MakeColor(self.colors[COLOR_HEADER_BACKGROUND]), wx.BRUSHSTYLE_SOLID)
543
+ DC.SetBrush(brush)
544
+
545
+ if self.cal_type == "NORMAL":
546
+ cal_days = CalDays
547
+ else:
548
+ cal_days = BusCalDays
549
+
550
+ for val in cal_days:
551
+ if val == cal_days[-1]:
552
+ width = width + self.restW
553
+
554
+ day = AbrWeekday[val]
555
+
556
+ if self.sizew < 200:
557
+ day = day[0]
558
+
559
+ dw, dh = DC.GetTextExtent(day)
560
+
561
+ diffx = (width - dw) / 2
562
+ diffy = (height - dh) / 2
563
+
564
+ x = self.gridx[cnt_x]
565
+ y = self.gridy[cnt_y]
566
+ pointXY = (x, y)
567
+ pointWH = (width, height)
568
+ if self.hide_grid is False:
569
+ pen = wx.Pen(MakeColor(self.GetColor(COLOR_GRID_LINES)), 1, wx.PENSTYLE_SOLID)
570
+ else:
571
+ pen = wx.Pen(MakeColor(self.GetColor(COLOR_BACKGROUND)), 1, wx.PENSTYLE_SOLID)
572
+ DC.SetPen(pen)
573
+ DC.DrawRectangle(pointXY, pointWH)
574
+
575
+ old_pen = DC.GetPen()
576
+
577
+ pen = wx.Pen(MakeColor(self.colors[COLOR_3D_LIGHT]), 1, wx.PENSTYLE_SOLID)
578
+ DC.SetPen(pen)
579
+ # draw the horizontal hilight
580
+ startPoint = wx.Point(x + 1, y + 1)
581
+ endPoint = wx.Point(x + width - 1, y + 1)
582
+ DC.DrawLine(startPoint, endPoint)
583
+
584
+ # draw the vertical hilight
585
+ startPoint = wx.Point(x + 1, y + 1)
586
+ endPoint = wx.Point(x + 1, y + height - 2)
587
+ DC.DrawLine(startPoint, endPoint)
588
+
589
+ pen = wx.Pen(MakeColor(self.colors[COLOR_3D_DARK]), 1, wx.PENSTYLE_SOLID)
590
+ DC.SetPen(pen)
591
+
592
+ # draw the horizontal lowlight
593
+ startPoint = wx.Point(x + 1, y + height - 2)
594
+ endPoint = wx.Point(x + width - 1, y + height - 2)
595
+ DC.DrawLine(startPoint, endPoint)
596
+
597
+ # draw the vertical lowlight
598
+ startPoint = wx.Point(x + width - 2, y + 2)
599
+ endPoint = wx.Point(x + width - 2, y + height - 2)
600
+ DC.DrawLine(startPoint, endPoint)
601
+
602
+ pen = wx.Pen(MakeColor(self.colors[COLOR_FONT]), 1, wx.PENSTYLE_SOLID)
603
+
604
+ DC.SetPen(pen)
605
+
606
+ point = (int(x + diffx), int(y + diffy))
607
+ DC.DrawText(day, *point)
608
+ cnt_x = cnt_x + 1
609
+
610
+ def _CalcFontSize(self, DC, f):
611
+ if self.num_auto is True:
612
+ test_size = self.max_num_size # max size
613
+ test_day = ' 99 '
614
+
615
+ while test_size > 2:
616
+ f.SetPointSize(test_size)
617
+ DC.SetFont(f)
618
+ tw, th = DC.GetTextExtent(test_day)
619
+
620
+ if tw < self.cellW and th < self.cellH:
621
+ sizef = test_size
622
+ break
623
+ test_size = test_size - 1
624
+ else:
625
+ f.SetPointSize(self.num_size) # set fixed size
626
+ DC.SetFont(f)
627
+
628
+ def DrawNum(self, DC):
629
+ """
630
+ Draw the day numbers
631
+
632
+ :param `DC`: the :class:`wx.DC` to use.
633
+
634
+ """
635
+ f = wx.Font(10, self.fontfamily, self.fontstyle, self.fontweight) # initial font setting
636
+ self._CalcFontSize(DC, f)
637
+
638
+ cnt_x = 0
639
+ cnt_y = 1
640
+ for val in self.cal_days:
641
+ x = self.gridx[cnt_x]
642
+ y = self.gridy[cnt_y]
643
+
644
+ self._DrawDayText(x, y, val, f, DC)
645
+
646
+ if cnt_x < 6:
647
+ cnt_x = cnt_x + 1
648
+ else:
649
+ cnt_x = 0
650
+ cnt_y = cnt_y + 1
651
+
652
+ def _DrawDayText(self, x, y, text, font, DC):
653
+
654
+ try:
655
+ num_val = int(text)
656
+ num_color = self.cal_sel[num_val][0]
657
+ except Exception:
658
+ num_color = self.colors[COLOR_FONT]
659
+
660
+ DC.SetTextForeground(MakeColor(num_color))
661
+ DC.SetFont(font)
662
+
663
+ tw, th = DC.GetTextExtent(text)
664
+
665
+ if self.num_align_horz == wx.ALIGN_CENTRE:
666
+ adj_h = (self.cellW - tw) / 2
667
+ elif self.num_align_horz == wx.ALIGN_RIGHT:
668
+ adj_h = self.cellW - tw
669
+ else:
670
+ adj_h = 0 # left alignment
671
+
672
+ adj_h = adj_h + self.num_indent_horz
673
+
674
+ if self.num_align_vert == wx.ALIGN_CENTRE:
675
+ adj_v = (self.cellH - th) / 2
676
+ elif self.num_align_vert == wx.ALIGN_BOTTOM:
677
+ adj_v = self.cellH - th
678
+ else:
679
+ adj_v = 0 # left alignment
680
+
681
+ adj_v = adj_v + self.num_indent_vert
682
+
683
+ DC.DrawText(text, int(x + adj_h), int(y + adj_v))
684
+
685
+ def DrawDayText(self, DC, key):
686
+ """
687
+ Draw the day text.
688
+
689
+ :param `DC`: the :class:`wx.DC` to use.
690
+ :param `key`: the day to draw
691
+
692
+ """
693
+
694
+ f = wx.Font(10, self.fontfamily, self.fontstyle, self.fontweight) # initial font setting
695
+ self._CalcFontSize(DC, f)
696
+
697
+ if key > self.end_pos:
698
+ key = self.end_pos
699
+
700
+ val = self.cal_days[key]
701
+ cnt_x = key % 7
702
+ cnt_y = int(key / 7) + 1
703
+ x = self.gridx[cnt_x]
704
+ y = self.gridy[cnt_y]
705
+ self._DrawDayText(x, y, val, f, DC)
706
+
707
+ def Center(self):
708
+ """Calculate the dimensions in the center of the drawing area."""
709
+ borderW = self.x_mrg * 2
710
+ borderH = self.y_mrg + self.y_end + self.title_offset
711
+
712
+ self.cellW = int((self.sizew - borderW) / 7)
713
+ self.cellH = int((self.sizeh - borderH) / 7)
714
+
715
+ self.restW = ((self.sizew - borderW) % 7) - 1
716
+
717
+ # week title adjustment
718
+ self.weekHdrCellH = int(self.cellH * self.cal_week_scale)
719
+ # recalculate the cell height exkl. the week header and
720
+ # subtracting the size
721
+ self.cellH = int((self.sizeh - borderH - self.weekHdrCellH) / 6)
722
+
723
+ self.restH = ((self.sizeh - borderH - self.weekHdrCellH) % 6) - 1
724
+ self.calW = self.cellW * 7
725
+ self.calH = self.cellH * 6 + self.weekHdrCellH
726
+
727
+ # highlighted selected days
728
+ def DrawSel(self, DC):
729
+ """
730
+ Highlight selected days.
731
+
732
+ :param `DC`: the :class:`wx.DC` to use
733
+
734
+ """
735
+ for key in self.cal_sel:
736
+ sel_color = self.cal_sel[key][1]
737
+ brush = wx.Brush(MakeColor(sel_color), wx.BRUSHSTYLE_SOLID)
738
+ DC.SetBrush(brush)
739
+
740
+ if self.hide_grid is False:
741
+ DC.SetPen(wx.Pen(MakeColor(self.colors[COLOR_GRID_LINES]), 0))
742
+ else:
743
+ DC.SetPen(wx.Pen(MakeColor(self.colors[COLOR_BACKGROUND]), 0))
744
+
745
+ nkey = key + self.st_pos - 1
746
+ rect = self.rg[nkey]
747
+
748
+ DC.DrawRectangle(rect)
749
+
750
+ def DrawGrid(self, DC):
751
+ """
752
+ Calculate and draw the grid lines.
753
+
754
+ :param `DC`: the :class:`wx.DC` to use
755
+
756
+ """
757
+ DC.SetPen(wx.Pen(MakeColor(self.colors[COLOR_GRID_LINES]), 0))
758
+
759
+ self.gridx = []
760
+ self.gridy = []
761
+
762
+ self.x_st = self.cx_st + self.x_mrg
763
+ # start postion of draw
764
+ self.y_st = self.cy_st + self.y_mrg + self.title_offset
765
+
766
+ x1 = self.x_st
767
+ y1 = self.y_st
768
+ y2 = y1 + self.calH + self.restH
769
+
770
+ for i in range(8):
771
+ if i == 7:
772
+ x1 = x1 + self.restW
773
+
774
+ if self.hide_grid is False:
775
+ DC.DrawLine((x1, y1), (x1, y2))
776
+
777
+ self.gridx.append(x1)
778
+
779
+ x1 = x1 + self.cellW
780
+
781
+ x1 = self.x_st
782
+ y1 = self.y_st
783
+ x2 = x1 + self.calW + self.restW
784
+
785
+ for i in range(8):
786
+ if i == 7:
787
+ y1 = y1 + self.restH
788
+
789
+ if self.hide_grid is False:
790
+ DC.DrawLine((x1, y1), (x2, y1))
791
+
792
+ self.gridy.append(y1)
793
+
794
+ if i == 0:
795
+ y1 = y1 + self.weekHdrCellH
796
+ else:
797
+ y1 = y1 + self.cellH
798
+
799
+ def GetColor(self, name):
800
+ """
801
+ Get a color.
802
+
803
+ :param `name`: one of the defined color names.
804
+
805
+ """
806
+ return MakeColor(self.colors[name])
807
+
808
+ def SetColor(self, name, value):
809
+ """
810
+ Set a color.
811
+
812
+ :param `name`: the name to assign the color too.
813
+ :param `value`: the color to use, see :class:`wx.Colour`
814
+
815
+ """
816
+ self.colors[name] = MakeColor(value)
817
+
818
+
819
+ class PrtCalDraw(CalDraw):
820
+ """A class to optimize :class:`CalDraw` for printing."""
821
+ def InitValues(self):
822
+ """Set initial values."""
823
+ self.rg = {}
824
+ self.cal_sel = {}
825
+ # start draw border location
826
+ self.set_cx_st = 1.0
827
+ self.set_cy_st = 1.0
828
+
829
+ # draw offset position
830
+ self.set_y_mrg = 0.2
831
+ self.set_x_mrg = 0.2
832
+ self.set_y_end = 0.2
833
+
834
+ def SetPSize(self, pwidth, pheight):
835
+ """Calculate the dimensions in the center of the drawing area."""
836
+ self.pwidth = int(pwidth) / self.scale
837
+ self.pheight = int(pheight) / self.scale
838
+
839
+ def SetPreview(self, preview):
840
+ """
841
+ Set the preview.
842
+
843
+ :param `preview`: set the preview state???
844
+
845
+ """
846
+ self.preview = preview
847
+
848
+
849
+ class Calendar(wx.Control):
850
+ """A calendar control class."""
851
+ def __init__(self, parent, id=-1, pos=wx.DefaultPosition,
852
+ size=wx.Size(200, 200), style=0, validator=wx.DefaultValidator,
853
+ name="calendar"):
854
+ """
855
+ Default class constructor.
856
+
857
+ :param wx.Window `parent`: parent window. Must not be ``None``;
858
+ :param integer `id`: window identifier. A value of -1 indicates a default value;
859
+ :param `pos`: the control position. A value of (-1, -1) indicates a default position,
860
+ chosen by either the windowing system or wxPython, depending on platform;
861
+ :type `pos`: tuple or :class:`wx.Point`
862
+ :param `size`: the control size. A value of (-1, -1) indicates a default size,
863
+ chosen by either the windowing system or wxPython, depending on platform;
864
+ :type `size`: tuple or :class:`wx.Size`
865
+ :param integer `style`: the button style (unused);
866
+ :param wx.Validator `validator`: the validator associated to the button;
867
+ :param string `name`: the calendar name.
868
+
869
+ """
870
+ wx.Control.__init__(self, parent, id, pos, size, style | wx.WANTS_CHARS, validator, name)
871
+
872
+ self.hasFocus = False
873
+ # set the calendar control attributes
874
+
875
+ self.hide_grid = False
876
+ self.hide_title = False
877
+ self.show_weekend = False
878
+ self.cal_type = "NORMAL"
879
+ self.outer_border = True
880
+ self.num_align_horz = wx.ALIGN_CENTRE
881
+ self.num_align_vert = wx.ALIGN_CENTRE
882
+ self.colors = DefaultColors()
883
+ self.set_x_mrg = 1
884
+ self.set_y_mrg = 1
885
+ self.set_y_end = 1
886
+
887
+ self.select_list = []
888
+
889
+ self.SetBackgroundColour(MakeColor(self.colors[COLOR_BACKGROUND]))
890
+ self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftEvent)
891
+ self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDEvent)
892
+ self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightEvent)
893
+ self.Bind(wx.EVT_RIGHT_DCLICK, self.OnRightDEvent)
894
+ self.Bind(wx.EVT_MIDDLE_DOWN, self.OnMiddleEvent)
895
+ self.Bind(wx.EVT_MIDDLE_DCLICK, self.OnMiddleDEvent)
896
+ self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus)
897
+ self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
898
+ self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
899
+
900
+ self.sel_key = None # last used by
901
+ self.sel_lst = [] # highlighted selected days
902
+
903
+ # default calendar for current month
904
+ self.SetNow()
905
+
906
+ self.size = None
907
+
908
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
909
+ self.Bind(wx.EVT_SIZE, self.OnSize)
910
+
911
+ def AcceptsFocus(self):
912
+ """Can it accept focus?"""
913
+ return self.IsShown() and self.IsEnabled()
914
+
915
+ def GetColor(self, name):
916
+ """
917
+ Get a color.
918
+
919
+ :param `name`: a valid color name, can be defined using :meth:`SetColor`
920
+
921
+ """
922
+ return MakeColor(self.colors[name])
923
+
924
+ def SetColor(self, name, value):
925
+ """
926
+ Set a color.
927
+
928
+ :param `name`: the name to be assigned to the color.
929
+ :param `value`: the color value, see :class:`wx.Colour` for valid values
930
+
931
+ """
932
+ self.colors[name] = MakeColor(value)
933
+
934
+ def HideTitle(self):
935
+ """Hide the calendar title."""
936
+ self.hide_title = True
937
+
938
+ def HideGrid(self):
939
+ """Hide the calendar grid."""
940
+ self.hide_grid = True
941
+
942
+ def ProcessClick(self, event):
943
+ """Determine the calendar rectangle click area and draw a selection."""
944
+ self.SetFocus()
945
+ self.x, self.y = event.GetX(), event.GetY()
946
+ self.shiftkey = event.ShiftDown()
947
+ self.ctrlkey = event.ControlDown()
948
+ key = self.GetDayHit(self.x, self.y)
949
+ self.SelectDay(key)
950
+
951
+ def OnLeftEvent(self, event):
952
+ """Left mouse click event handler."""
953
+ self.click = 'LEFT'
954
+ self.ProcessClick(event)
955
+
956
+ def OnLeftDEvent(self, event):
957
+ """Left double mouse click event handler."""
958
+ self.click = 'DLEFT'
959
+ self.ProcessClick(event)
960
+
961
+ def OnRightEvent(self, event):
962
+ """Right mouse click event handler."""
963
+ self.click = 'RIGHT'
964
+ self.ProcessClick(event)
965
+
966
+ def OnRightDEvent(self, event):
967
+ """Right double mouse click event handler."""
968
+ self.click = 'DRIGHT'
969
+ self.ProcessClick(event)
970
+
971
+ def OnMiddleEvent(self, event):
972
+ """Middle mouse click event handler."""
973
+ self.click = 'MIDDLE'
974
+ self.ProcessClick(event)
975
+
976
+ def OnMiddleDEvent(self, event):
977
+ """Middle double mouse click event handler."""
978
+ self.click = 'DMIDDLE'
979
+ self.ProcessClick(event)
980
+
981
+ def OnSetFocus(self, event):
982
+ """Set focus event handler."""
983
+ self.hasFocus = True
984
+ self.DrawFocusIndicator(True)
985
+
986
+ def OnKillFocus(self, event):
987
+ """Kill focus event handler."""
988
+ self.hasFocus = False
989
+ self.DrawFocusIndicator(False)
990
+
991
+ def OnKeyDown(self, event):
992
+ """Key down event handler."""
993
+ if not self.hasFocus:
994
+ event.Skip()
995
+ return
996
+
997
+ key_code = event.GetKeyCode()
998
+
999
+ if key_code == wx.WXK_TAB:
1000
+ forward = not event.ShiftDown()
1001
+ ne = wx.NavigationKeyEvent()
1002
+ ne.SetDirection(forward)
1003
+ ne.SetCurrentFocus(self)
1004
+ ne.SetEventObject(self)
1005
+ self.GetParent().GetEventHandler().ProcessEvent(ne)
1006
+ event.Skip()
1007
+ return
1008
+
1009
+ self.shiftkey = event.ShiftDown()
1010
+ self.ctrlkey = event.ControlDown()
1011
+ self.click = 'KEY'
1012
+ delta = None
1013
+
1014
+ if key_code == wx.WXK_UP:
1015
+ delta = -7
1016
+ elif key_code == wx.WXK_DOWN:
1017
+ delta = 7
1018
+ elif key_code == wx.WXK_LEFT:
1019
+ delta = -1
1020
+ elif key_code == wx.WXK_RIGHT:
1021
+ delta = 1
1022
+ elif key_code == wx.WXK_HOME:
1023
+ curDate = wx.DateTime.FromDMY(int(self.cal_days[self.sel_key]), self.month - 1, self.year)
1024
+ curDate.SetHour(12) # leave a margin for the occasional DST crossing
1025
+ newDate = wx.DateTime.Today().SetHour(12)
1026
+ ts = newDate - curDate
1027
+ delta = ts.GetDays()
1028
+
1029
+ if delta is not None:
1030
+ curDate = wx.DateTime.FromDMY(int(self.cal_days[self.sel_key]), self.month - 1, self.year)
1031
+ curDate.SetHour(12) # leave a margin for the occasional DST crossing
1032
+ timeSpan = wx.TimeSpan.Days(delta)
1033
+ newDate = curDate + timeSpan
1034
+
1035
+ if curDate.GetMonth() == newDate.GetMonth():
1036
+ self.set_day = self.day = newDate.GetDay()
1037
+ key = self.sel_key + delta
1038
+ self.SelectDay(key)
1039
+ else:
1040
+ self.month = newDate.GetMonth() + 1
1041
+ self.year = newDate.GetYear()
1042
+ self.set_day = self.day = newDate.GetDay()
1043
+ self.sel_key = None
1044
+ self.Refresh()
1045
+ self._EmitCalendarEvent()
1046
+ event.Skip()
1047
+
1048
+ def SetSize(self, set_size):
1049
+ """
1050
+ Set the size.
1051
+
1052
+ :param `set_size`: the control size. A value of (-1, -1) indicates a default size,
1053
+ chosen by either the windowing system or wxPython, depending on platform;
1054
+ :type `set_size`: tuple or :class:`wx.Size`
1055
+
1056
+ """
1057
+ self.size = set_size
1058
+
1059
+ def SetSelDay(self, sel):
1060
+ """
1061
+ Set the days to highlight.
1062
+
1063
+ :param list `sel`: the list of days to highlight
1064
+
1065
+ """
1066
+ self.sel_lst = sel
1067
+
1068
+ def SetNow(self):
1069
+ """Set the current day."""
1070
+ dt = datetime.date.today()
1071
+ self.SetDate(dt.day, dt.month, dt.year)
1072
+
1073
+ def SetCurrentDay(self): # legacy, this is now an alias for SetNow
1074
+ """Set the current day to today."""
1075
+ self.SetNow()
1076
+
1077
+ # get the date, day, month, year set in calendar
1078
+
1079
+ def GetDate(self):
1080
+ """
1081
+ Get the set calendar date.
1082
+
1083
+ :returns: the day, the month and the year
1084
+
1085
+ """
1086
+ return self.day, self.month, self.year
1087
+
1088
+ def SetDate(self, day, month, year):
1089
+ """
1090
+ Set a calendar date.
1091
+
1092
+ :param int `day`: the day
1093
+ :param int `month`: the month
1094
+ :param int `year`: the year
1095
+ :raises: `ValueError` when setting an invalid month/year
1096
+ :returns: the new date set.
1097
+
1098
+ """
1099
+ datetime.date(year, month, 1) # let the possible ValueError propagate
1100
+ try:
1101
+ datetime.date(year, month, day)
1102
+ except ValueError:
1103
+ day = wx.DateTime().GetLastMonthDay(month-1, year).GetDay()
1104
+ self.year = year
1105
+ self.month = month
1106
+ self.set_day = self.day = day
1107
+ self.sel_key = None
1108
+ self.Refresh()
1109
+ return self.GetDate()
1110
+
1111
+ def GetDay(self):
1112
+ """
1113
+ Get the set calendar day.
1114
+
1115
+ :returns: the day
1116
+
1117
+ """
1118
+ return self.day
1119
+
1120
+ def GetMonth(self):
1121
+ """
1122
+ Get the set calendar month.
1123
+
1124
+ :returns: the month
1125
+
1126
+ """
1127
+ return self.month
1128
+
1129
+ def GetYear(self):
1130
+ """
1131
+ Get the set calendar year.
1132
+
1133
+ :returns: the year
1134
+
1135
+ """
1136
+ return self.year
1137
+
1138
+ def SetDayValue(self, day):
1139
+ """
1140
+ Set the day.
1141
+
1142
+ :param int `day`: the day
1143
+ :raises: `ValueError` if the resulting date is invalid.
1144
+
1145
+ """
1146
+ self.SetDate(day, self.month, self.year)
1147
+
1148
+ def SetMonth(self, month):
1149
+ """
1150
+ Set the Month.
1151
+
1152
+ :param int `month`: the month
1153
+ :raises: `ValueError` if the resulting date is invalid.
1154
+
1155
+ """
1156
+ self.SetDate(self.day, month, self.year)
1157
+
1158
+ def SetYear(self, year):
1159
+ """
1160
+ Set the year.
1161
+
1162
+ :param int `year`: the year
1163
+ :raises: `ValueError` if the resulting date is invalid.
1164
+
1165
+ """
1166
+ self.SetDate(self.day, self.month, year)
1167
+
1168
+ def MoveDate(self, months=0, years=0):
1169
+ """
1170
+ Move the current date by a given interval of months/years.
1171
+
1172
+ :param int `months`: months to add (can be negative)
1173
+ :param int `years`: years to add (can be negative)
1174
+ :returns: the new date set.
1175
+
1176
+ """
1177
+ cur_date = wx.DateTime.FromDMY(self.day, self.month-1, self.year)
1178
+ new_date = cur_date + wx.DateSpan(years=years, months=months)
1179
+ self.SetDate(new_date.GetDay(), new_date.GetMonth()+1, new_date.GetYear())
1180
+ return self.GetDate()
1181
+
1182
+ def IncYear(self):
1183
+ """Increment the year by 1."""
1184
+ return self.MoveDate(years=1)
1185
+
1186
+ def DecYear(self):
1187
+ """Decrement the year by 1."""
1188
+ return self.MoveDate(years=-1)
1189
+
1190
+ def IncMonth(self):
1191
+ """Increment the month by 1."""
1192
+ return self.MoveDate(months=1)
1193
+
1194
+ def DecMonth(self):
1195
+ """Decrement the month by 1."""
1196
+ return self.MoveDate(months=-1)
1197
+
1198
+ def TestDay(self, key):
1199
+ """
1200
+ Test to see if the selection has a date and create event.
1201
+
1202
+ :param `key`: the day to test
1203
+
1204
+ """
1205
+ try:
1206
+ self.day = int(self.cal_days[key])
1207
+ except Exception:
1208
+ return None
1209
+
1210
+ if self.day == "":
1211
+ return None
1212
+ else:
1213
+ self._EmitCalendarEvent()
1214
+ self.set_day = self.day
1215
+ return key
1216
+
1217
+ def GetDayHit(self, mx, my):
1218
+ """
1219
+ Find the clicked area rectangle.
1220
+
1221
+ :param `mx`: the x position
1222
+ :param `my`: the y positon
1223
+
1224
+ """
1225
+ for key in self.rg:
1226
+ val = self.rg[key]
1227
+ ms_rect = wx.Rect(mx, my, 1, 1)
1228
+ if wx.IntersectRect(ms_rect, val) is not None:
1229
+ result = self.TestDay(key)
1230
+ return result
1231
+
1232
+ return None
1233
+
1234
+ def SetWeekColor(self, font_color, week_color):
1235
+ """
1236
+ Set the week title color.
1237
+
1238
+ :param `font_color`: the font color to use.
1239
+ :param `week_color`: the week color to use for the background.
1240
+ """
1241
+ self.colors[COLOR_HEADER_FONT] = MakeColor(font_color)
1242
+ self.colors[COLOR_HEADER_BACKGROUND] = MakeColor(week_color)
1243
+ self.colors[COLOR_3D_LIGHT] = MakeColor(week_color)
1244
+ self.colors[COLOR_3D_DARK] = MakeColor(week_color)
1245
+
1246
+ def SetTextAlign(self, vert, horz):
1247
+ """
1248
+ Set the text allignment.
1249
+
1250
+ :param `vert`: the vertical allignment
1251
+ :param `horz`: the horizontal allignment
1252
+
1253
+ """
1254
+ self.num_align_horz = horz
1255
+ self.num_align_vert = vert
1256
+
1257
+ def AddSelect(self, list, font_color, back_color):
1258
+ """
1259
+ Add a selection.
1260
+
1261
+ :param `list`: list of days to select
1262
+ :param `font_color`: the font color to use
1263
+ :param `back_color`: the back color to use
1264
+
1265
+ """
1266
+ list_val = [list, font_color, back_color]
1267
+ self.select_list.append(list_val)
1268
+
1269
+ def ShowWeekEnd(self):
1270
+ """Highlight the weekend."""
1271
+ self.show_weekend = True
1272
+
1273
+ def SetBusType(self):
1274
+ """Set the calendar type to 'BUS'."""
1275
+ self.cal_type = "BUS"
1276
+
1277
+ def OnSize(self, evt):
1278
+ """The on size event handler."""
1279
+ self.Refresh(False)
1280
+ evt.Skip()
1281
+
1282
+ def OnPaint(self, event):
1283
+ """The on paint event handler."""
1284
+ DC = wx.PaintDC(self)
1285
+ self.DoDrawing(DC)
1286
+
1287
+ def DoDrawing(self, DC):
1288
+ """
1289
+ Do the drawing.
1290
+
1291
+ :param `DC`: the :class:`wx.DC` to draw
1292
+
1293
+ """
1294
+ try:
1295
+ cal = self.caldraw
1296
+ except Exception:
1297
+ self.caldraw = CalDraw(self)
1298
+ cal = self.caldraw
1299
+
1300
+ cal.hide_grid = self.hide_grid
1301
+ cal.hide_title = self.hide_title
1302
+ cal.show_weekend = self.show_weekend
1303
+ cal.cal_type = self.cal_type
1304
+ cal.outer_border = self.outer_border
1305
+ cal.num_align_horz = self.num_align_horz
1306
+ cal.num_align_vert = self.num_align_vert
1307
+ cal.colors = self.colors
1308
+
1309
+ if self.size is None:
1310
+ size = self.GetClientSize()
1311
+ else:
1312
+ size = self.size
1313
+
1314
+ # drawing attributes
1315
+
1316
+ cal.SetSize(size)
1317
+ cal.SetCal(self.year, self.month)
1318
+
1319
+ # these have to set after SetCal as SetCal would overwrite them again.
1320
+ cal.set_x_mrg = self.set_x_mrg
1321
+ cal.set_y_mrg = self.set_y_mrg
1322
+ cal.set_y_end = self.set_y_end
1323
+
1324
+ for val in self.select_list:
1325
+ cal.AddSelect(val[0], val[1], val[2])
1326
+
1327
+ cal.DrawCal(DC, self.sel_lst)
1328
+
1329
+ self.rg = cal.GetRect()
1330
+ self.cal_days = cal.GetCal()
1331
+ self.st_pos = cal.GetOffset()
1332
+ self.ymax = DC.MaxY()
1333
+
1334
+ if self.set_day is not None:
1335
+ self.SetDay(self.set_day)
1336
+
1337
+ def DrawFocusIndicator(self, draw):
1338
+ """
1339
+ Draw the focus indicator or a border.
1340
+
1341
+ :param `draw`: True draws the focus indicator, False a border
1342
+
1343
+ """
1344
+ DC = wx.ClientDC(self)
1345
+ try:
1346
+ if draw is True:
1347
+ self.caldraw.DrawFocusIndicator(DC)
1348
+ else:
1349
+ self.caldraw.DrawBorder(DC, True)
1350
+ except Exception:
1351
+ pass
1352
+
1353
+ def DrawRect(self, key, bgcolor='WHITE', fgcolor='PINK', width=0):
1354
+ """
1355
+ Draw a rectangle.
1356
+
1357
+ :param `key`: the day to draw the rectangle on
1358
+ :param `bgcolor`: the background color
1359
+
1360
+ """
1361
+ if key is None:
1362
+ return
1363
+
1364
+ DC = wx.ClientDC(self)
1365
+
1366
+ brush = wx.Brush(MakeColor(bgcolor))
1367
+ DC.SetBrush(brush)
1368
+
1369
+ DC.SetPen(wx.TRANSPARENT_PEN)
1370
+
1371
+ rect = self.rg[key]
1372
+ DC.DrawRectangle(rect.x + 1, rect.y + 1, rect.width - 2, rect.height - 2)
1373
+
1374
+ self.caldraw.DrawDayText(DC, key)
1375
+
1376
+ def DrawRectOrg(self, key, fgcolor='BLACK', width=0):
1377
+ """
1378
+ Draw a rectangle.
1379
+
1380
+ :param `key`: the day to draw the rectangle on
1381
+ :param `fgcolor`: the color for the pen
1382
+ :param `width`: the width for the pen
1383
+
1384
+ """
1385
+ if key is None:
1386
+ return
1387
+
1388
+ DC = wx.ClientDC(self)
1389
+
1390
+ brush = wx.Brush(wx.Colour(0, 0xFF, 0x80), wx.TRANSPARENT)
1391
+ DC.SetBrush(brush)
1392
+
1393
+ try:
1394
+ DC.SetPen(wx.Pen(MakeColor(fgcolor), width))
1395
+ except Exception:
1396
+ DC.SetPen(wx.Pen(MakeColor(self.GetColor(COLOR_GRID_LINES)), width))
1397
+
1398
+ rect = self.rg[key]
1399
+ DC.DrawRectangle(rect)
1400
+
1401
+ def SetDay(self, day):
1402
+ """
1403
+ Set the day.
1404
+
1405
+ :param `day`: the day to select
1406
+
1407
+ """
1408
+ d = day + self.st_pos - 1
1409
+ self.SelectDay(d)
1410
+
1411
+ def IsDayInWeekend(self, key):
1412
+ """
1413
+ Is the day in the weekend
1414
+
1415
+ :param `key`: the day to check
1416
+
1417
+ """
1418
+ try:
1419
+ day = self.cal_days[key]
1420
+ day = int(day) + wx.DateTime.FromDMY(day, self.month-1, self.year).GetWeekDay()
1421
+
1422
+ if day % 7 == 6 or day % 7 == 0:
1423
+ return True
1424
+ except Exception:
1425
+ return False
1426
+
1427
+ def SelectDay(self, key):
1428
+ """
1429
+ Select the day.
1430
+
1431
+ :param `key`: The day to select
1432
+
1433
+ """
1434
+ sel_size = 1
1435
+ # clear large selection
1436
+
1437
+ if self.sel_key is not None:
1438
+ (cfont, bgcolor) = self.__GetColorsForDay(self.sel_key)
1439
+ self.DrawRect(self.sel_key, bgcolor, cfont, sel_size)
1440
+
1441
+ self.DrawRect(key, self.GetColor(COLOR_HIGHLIGHT_BACKGROUND), self.GetColor(COLOR_HIGHLIGHT_FONT), sel_size)
1442
+ # store last used by
1443
+ self.sel_key = key
1444
+
1445
+ def SetMargin(self, xmarg, ymarg):
1446
+ """
1447
+ Set the margins
1448
+
1449
+ :param `xmarg`: the 'x' margin
1450
+ :param `ymarg`: the 'y' margin
1451
+
1452
+ """
1453
+ self.set_x_mrg = xmarg
1454
+ self.set_y_mrg = ymarg
1455
+ self.set_y_end = ymarg
1456
+
1457
+ def __GetColorsForDay(self, key):
1458
+ cfont = self.GetColor(COLOR_FONT)
1459
+ bgcolor = self.GetColor(COLOR_BACKGROUND)
1460
+
1461
+ if self.IsDayInWeekend(key) is True and self.show_weekend is True:
1462
+ cfont = self.GetColor(COLOR_WEEKEND_FONT)
1463
+ bgcolor = self.GetColor(COLOR_WEEKEND_BACKGROUND)
1464
+
1465
+ try:
1466
+ dayIdx = int(self.cal_days[key])
1467
+ (cfont, bgcolor) = self.caldraw.cal_sel[dayIdx]
1468
+ except Exception:
1469
+ pass
1470
+
1471
+ return (cfont, bgcolor)
1472
+
1473
+ def _EmitCalendarEvent(self):
1474
+ evt = wx.PyCommandEvent(wxEVT_COMMAND_PYCALENDAR_DAY_CLICKED, self.GetId())
1475
+ evt.click, evt.day, evt.month, evt.year = self.click, self.day, self.month, self.year
1476
+ evt.shiftkey = self.shiftkey
1477
+ evt.ctrlkey = self.ctrlkey
1478
+ self.GetEventHandler().ProcessEvent(evt)
1479
+
1480
+
1481
+ class CalenDlg(wx.Dialog):
1482
+ """A dialog with a calendar control."""
1483
+ def __init__(self, parent, month=None, day=None, year=None):
1484
+ """
1485
+ Default class constructor.
1486
+
1487
+ :param wx.Window `parent`: parent window. Must not be ``None``;
1488
+ :param integer `month`: the month, if None the current day will be used
1489
+ :param integer `day`: the day
1490
+ :param integer `year`: the year
1491
+
1492
+ """
1493
+ wx.Dialog.__init__(self, parent, -1, "Event Calendar", wx.DefaultPosition, (280, 360))
1494
+ self.result = None
1495
+
1496
+ # set the calendar and attributes
1497
+ self.calend = Calendar(self, -1, (20, 60), (240, 200))
1498
+ self.calend.HideTitle()
1499
+ today = datetime.date.today()
1500
+ d = day or today.day
1501
+ m = month or today.month
1502
+ y = year or today.year
1503
+ try:
1504
+ date = datetime.date(y, m, d)
1505
+ except ValueError:
1506
+ date = today
1507
+ self.calend.SetDate(date.day, date.month, date.year)
1508
+
1509
+ # get month list from DateTime
1510
+ monthlist = GetMonthList()
1511
+
1512
+ # select the month
1513
+ self.m_date = wx.ComboBox(self, pos=(20, 20), size=(90, -1),
1514
+ style=wx.CB_DROPDOWN|wx.TE_READONLY)
1515
+ for n, month_name in enumerate(monthlist):
1516
+ self.m_date.Append(month_name, n+1)
1517
+ self.m_date.SetSelection(date.month-1)
1518
+ self.Bind(wx.EVT_COMBOBOX, self.EvtComboBox, self.m_date)
1519
+
1520
+ # alternate spin button to control the month
1521
+ h = self.m_date.GetSize().height
1522
+ self.m_spin = wx.SpinButton(self, -1, (115, 20), (h * 1.5, h), wx.SP_VERTICAL)
1523
+ self.m_spin.SetRange(1, 12)
1524
+ self.m_spin.SetValue(date.month)
1525
+ self.Bind(wx.EVT_SPIN, self.OnMonthSpin, self.m_spin)
1526
+
1527
+ # spin button to control the year
1528
+ self.y_date = wx.TextCtrl(self, -1, str(date.year), (160, 20), (60, -1))
1529
+ h = self.y_date.GetSize().height
1530
+
1531
+ self.y_spin = wx.SpinButton(self, -1, (225, 20), (h * 1.5, h), wx.SP_VERTICAL)
1532
+ self.y_spin.SetRange(date.year-100, date.year+100)
1533
+ self.y_spin.SetValue(date.year)
1534
+
1535
+ self.Bind(wx.EVT_SPIN, self.OnYrSpin, self.y_spin)
1536
+ self.Bind(EVT_CALENDAR, self.MouseClick, self.calend)
1537
+
1538
+ x_pos = 50
1539
+ y_pos = 280
1540
+ but_size = (60, 25)
1541
+
1542
+ btn = wx.Button(self, wx.ID_OK, ' Ok ', (x_pos, y_pos), but_size)
1543
+ self.Bind(wx.EVT_BUTTON, self.OnOk, btn)
1544
+
1545
+ btn = wx.Button(self, wx.ID_CANCEL, ' Close ', (x_pos + 120, y_pos), but_size)
1546
+ self.Bind(wx.EVT_BUTTON, self.OnCancel, btn)
1547
+
1548
+ self.current_month = date.month
1549
+ self.current_year = date.year
1550
+
1551
+ def OnOk(self, evt):
1552
+ """The OK event handler."""
1553
+ self.result = ['None', str(self.calend.day), Month[self.calend.month], str(self.calend.year)]
1554
+ self.EndModal(wx.ID_OK)
1555
+
1556
+ def OnCancel(self, event):
1557
+ """The Cancel event handler."""
1558
+ self.EndModal(wx.ID_CANCEL)
1559
+
1560
+ def MouseClick(self, evt):
1561
+ """The mouse click event handler."""
1562
+ # result click type and date
1563
+ self.result = [evt.click, str(evt.day), Month[evt.month], str(evt.year)]
1564
+ if evt.click == 'DLEFT':
1565
+ self.EndModal(wx.ID_OK)
1566
+ if evt.month != self.current_month or evt.year != self.current_year:
1567
+ self.m_date.SetSelection(evt.month-1)
1568
+ self.m_spin.SetValue(evt.month)
1569
+ self.y_date.SetValue(str(evt.year))
1570
+ self.y_spin.SetValue(evt.year)
1571
+ self.current_month = evt.month
1572
+ self.current_year = evt.year
1573
+
1574
+ def OnMonthSpin(self, event):
1575
+ """The month spin control event handler."""
1576
+ month = self.m_spin.GetValue()
1577
+ self.m_date.SetSelection(month-1)
1578
+ self.calend.SetMonth(month)
1579
+ self.current_month = month
1580
+
1581
+ def OnYrSpin(self, event):
1582
+ """The year spin control event handler."""
1583
+ year = self.y_spin.GetValue()
1584
+ self.y_date.SetValue(str(year))
1585
+ self.calend.SetYear(year)
1586
+ self.current_year = year
1587
+
1588
+ def EvtComboBox(self, event):
1589
+ """The month combobox event handler."""
1590
+ month = event.GetClientData()
1591
+ self.m_spin.SetValue(month)
1592
+ self.calend.SetMonth(month)
1593
+ self.current_month = month
1594
+
1595
+ def ResetDisplay(self):
1596
+ """Reset the display."""
1597
+ self.calend.Refresh()