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
@@ -0,0 +1,1170 @@
1
+ # -*- coding: utf-8 -*-
2
+ #----------------------------------------------------------------------------
3
+ # Name: panel.py
4
+ # Purpose:
5
+ #
6
+ # Author: Andrea Gavana <andrea.gavana@gmail.com>
7
+ #
8
+ # Created:
9
+ # Version:
10
+ # Date:
11
+ # Licence: wxWindows license
12
+ # Tags: phoenix-port, unittest, documented, py3-port
13
+ #----------------------------------------------------------------------------
14
+ """
15
+ Serves as a container for a group of (ribbon) controls.
16
+
17
+
18
+ Description
19
+ ===========
20
+
21
+ A :class:`RibbonPanel` will typically have panels for children, with the controls for that
22
+ page placed on the panels. A panel adds a border and label to a group of controls,
23
+ and can be minimised (either automatically to conserve space, or manually by the user).
24
+
25
+
26
+ Window Styles
27
+ =============
28
+
29
+ This class supports the following window styles:
30
+
31
+ ================================= =========== =================================
32
+ Window Styles Hex Value Description
33
+ ================================= =========== =================================
34
+ ``RIBBON_PANEL_DEFAULT_STYLE`` 0x0 Defined as no other flags set.
35
+ ``RIBBON_PANEL_NO_AUTO_MINIMISE`` 0x1 Prevents the panel from automatically minimising to conserve screen space.
36
+ ``RIBBON_PANEL_EXT_BUTTON`` 0x8 Causes an extension button to be shown in the panel's chrome (if the bar in which it is contained has ``RIBBON_BAR_SHOW_PANEL_EXT_BUTTONS`` set). The behaviour of this button is application controlled, but typically will show an extended drop-down menu relating to the panel.
37
+ ``RIBBON_PANEL_MINIMISE_BUTTON`` 0x10 Causes a (de)minimise button to be shown in the panel's chrome (if the bar in which it is contained has the ``RIBBON_BAR_SHOW_PANEL_MINIMISE_BUTTONS`` style set). This flag is typically combined with ``RIBBON_PANEL_NO_AUTO_MINIMISE`` to make a panel which the user always has manual control over when it minimises.
38
+ ``RIBBON_PANEL_STRETCH`` 0x20 Allows a single panel to stretch to fill the parent page.
39
+ ``RIBBON_PANEL_FLEXIBLE`` 0x40 Allows toolbars to wrap, taking up the optimum amount of space when used in a vertical palette.
40
+ ================================= =========== =================================
41
+
42
+
43
+ Events Processing
44
+ =================
45
+
46
+ This class processes the following events:
47
+
48
+ ======================================= ===================================
49
+ Event Name Description
50
+ ======================================= ===================================
51
+ ``EVT_RIBBONPANEL_EXTBUTTON_ACTIVATED`` Triggered when the user activate the panel extension button.
52
+ ======================================= ===================================
53
+
54
+ See Also
55
+ ========
56
+
57
+ :class:`~wx.lib.agw.ribbon.page.RibbonPage`
58
+
59
+ """
60
+
61
+ import wx
62
+
63
+ from .control import RibbonControl
64
+
65
+ from .art import *
66
+
67
+
68
+ wxEVT_COMMAND_RIBBONPANEL_EXTBUTTON_ACTIVATED = wx.NewEventType()
69
+ EVT_RIBBONPANEL_EXTBUTTON_ACTIVATED = wx.PyEventBinder(wxEVT_COMMAND_RIBBONPANEL_EXTBUTTON_ACTIVATED, 1)
70
+
71
+
72
+ def IsAncestorOf(ancestor, window):
73
+
74
+ while window is not None:
75
+ parent = window.GetParent()
76
+ if parent == ancestor:
77
+ return True
78
+ else:
79
+ window = parent
80
+
81
+ return False
82
+
83
+
84
+ class RibbonPanelEvent(wx.PyCommandEvent):
85
+ """ Handles events related to :class:`RibbonPanel`. """
86
+
87
+ def __init__(self, command_type=None, win_id=0, panel=None):
88
+ """
89
+ Default class constructor.
90
+
91
+ :param integer `command_type`: the event type;
92
+ :param integer `win_id`: the event identifier;
93
+ :param `panel`: an instance of :class:`RibbonPanel`;
94
+ """
95
+
96
+ wx.PyCommandEvent.__init__(self, command_type, win_id)
97
+
98
+ self._panel = panel
99
+
100
+
101
+ def GetPanel(self):
102
+ """ Returns the panel which the event relates to. """
103
+
104
+ return self._panel
105
+
106
+
107
+ def SetPanel(self, panel):
108
+ """
109
+ Sets the panel relating to this event.
110
+
111
+ :param `panel`: an instance of :class:`RibbonPanel`.
112
+ """
113
+
114
+ self._panel = panel
115
+
116
+
117
+ class RibbonPanel(RibbonControl):
118
+ """ This is the main implementation of :class:`RibbonPanel`. """
119
+
120
+ def __init__(self, parent, id=wx.ID_ANY, label="", minimised_icon=wx.NullBitmap,
121
+ pos=wx.DefaultPosition, size=wx.DefaultSize, agwStyle=RIBBON_PANEL_DEFAULT_STYLE,
122
+ name="RibbonPanel"):
123
+ """
124
+ Default class constructor.
125
+
126
+ :param `parent`: pointer to a parent window, typically a :class:`~wx.lib.agw.ribbon.page.RibbonPage`, though
127
+ it can be any window;
128
+ :param `id`: window identifier. If ``wx.ID_ANY``, will automatically create
129
+ an identifier;
130
+ :param `label`: label of the new button;
131
+ :param `minimised_icon`: the bitmap to be used in place of the panel children
132
+ when it is minimised;
133
+ :param `pos`: window position. ``wx.DefaultPosition`` indicates that wxPython
134
+ should generate a default position for the window;
135
+ :param `size`: window size. ``wx.DefaultSize`` indicates that wxPython should
136
+ generate a default size for the window. If no suitable size can be found, the
137
+ window will be sized to 20x20 pixels so that the window is visible but obviously
138
+ not correctly sized;
139
+ :param `agwStyle`: the AGW-specific window style. This can be one of the following
140
+ bits:
141
+
142
+ ================================= =========== =================================
143
+ Window Styles Hex Value Description
144
+ ================================= =========== =================================
145
+ ``RIBBON_PANEL_DEFAULT_STYLE`` 0x0 Defined as no other flags set.
146
+ ``RIBBON_PANEL_NO_AUTO_MINIMISE`` 0x1 Prevents the panel from automatically minimising to conserve screen space.
147
+ ``RIBBON_PANEL_EXT_BUTTON`` 0x8 Causes an extension button to be shown in the panel's chrome (if the bar in which it is contained has ``RIBBON_BAR_SHOW_PANEL_EXT_BUTTONS`` set). The behaviour of this button is application controlled, but typically will show an extended drop-down menu relating to the panel.
148
+ ``RIBBON_PANEL_MINIMISE_BUTTON`` 0x10 Causes a (de)minimise button to be shown in the panel's chrome (if the bar in which it is contained has the ``RIBBON_BAR_SHOW_PANEL_MINIMISE_BUTTONS`` style set). This flag is typically combined with ``RIBBON_PANEL_NO_AUTO_MINIMISE`` to make a panel which the user always has manual control over when it minimises.
149
+ ``RIBBON_PANEL_STRETCH`` 0x20 Allows a single panel to stretch to fill the parent page.
150
+ ``RIBBON_PANEL_FLEXIBLE`` 0x40 Allows toolbars to wrap, taking up the optimum amount of space when used in a vertical palette.
151
+ ================================= =========== =================================
152
+
153
+ :param `name`: the window name.
154
+ """
155
+
156
+ RibbonControl.__init__(self, parent, id, pos, size, wx.BORDER_NONE, name=name)
157
+ self.CommonInit(label, minimised_icon, agwStyle)
158
+
159
+ self.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter)
160
+ self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
161
+ self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
162
+ self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave)
163
+ self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseClick)
164
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
165
+ self.Bind(wx.EVT_SIZE, self.OnSize)
166
+ self.Bind(wx.EVT_MOTION, self.OnMotion)
167
+
168
+
169
+ def __del__(self):
170
+
171
+ if self._expanded_panel:
172
+ self._expanded_panel._expanded_dummy = None
173
+ self._expanded_panel.GetParent().Destroy()
174
+
175
+
176
+ def IsExtButtonHovered(self):
177
+
178
+ return self._ext_button_hovered
179
+
180
+
181
+ def SetArtProvider(self, art):
182
+ """
183
+ Set the art provider to be used.
184
+
185
+ Normally called automatically by :class:`~wx.lib.agw.ribbon.page.RibbonPage` when the panel is created, or the
186
+ art provider changed on the page. The new art provider will be propagated to the
187
+ children of the panel.
188
+
189
+ Reimplemented from :class:`~wx.lib.agw.ribbon.control.RibbonControl`.
190
+
191
+ :param `art`: an art provider.
192
+
193
+ """
194
+
195
+ self._art = art
196
+ for child in self.GetChildren():
197
+ if isinstance(child, RibbonControl):
198
+ child.SetArtProvider(art)
199
+
200
+ if self._expanded_panel:
201
+ self._expanded_panel.SetArtProvider(art)
202
+
203
+
204
+ def CommonInit(self, label, icon, agwStyle):
205
+
206
+ self.SetName(label)
207
+ self.SetLabel(label)
208
+
209
+ self._minimised_size = wx.Size(-1, -1) # Unknown / none
210
+ self._smallest_unminimised_size = wx.Size(-1, -1) # Unknown / none
211
+ self._preferred_expand_direction = wx.SOUTH
212
+ self._expanded_dummy = None
213
+ self._expanded_panel = None
214
+ self._flags = agwStyle
215
+ self._minimised_icon = icon
216
+ self._minimised = False
217
+ self._hovered = False
218
+ self._ext_button_hovered = False
219
+ self._ext_button_rect = wx.Rect()
220
+
221
+ if self._art is None:
222
+ parent = self.GetParent()
223
+ if isinstance(parent, RibbonControl):
224
+ self._art = parent.GetArtProvider()
225
+
226
+ self.SetAutoLayout(True)
227
+ self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
228
+ self.SetMinSize(wx.Size(20, 20))
229
+
230
+
231
+ def IsMinimised(self, at_size=None):
232
+ """
233
+ Query if the panel would be minimised at a given size.
234
+
235
+ :param `at_size`: an instance of :class:`wx.Size`, giving the size at which the
236
+ panel should be tested for minimisation.
237
+ """
238
+
239
+ if at_size is None:
240
+ return self.IsMinimised1()
241
+
242
+ return self.IsMinimised2(wx.Size(*at_size))
243
+
244
+
245
+ def IsMinimised1(self):
246
+ """ Query if the panel is currently minimised. """
247
+
248
+ return self._minimised
249
+
250
+
251
+ def IsHovered(self):
252
+ """
253
+ Query is the mouse is currently hovered over the panel.
254
+
255
+ :returns: ``True`` if the cursor is within the bounds of the panel (i.e.
256
+ hovered over the panel or one of its children), ``False`` otherwise.
257
+ """
258
+
259
+ return self._hovered
260
+
261
+
262
+ def OnMouseEnter(self, event):
263
+ """
264
+ Handles the ``wx.EVT_ENTER_WINDOW`` event for :class:`RibbonPanel`.
265
+
266
+ :param `event`: a :class:`MouseEvent` event to be processed.
267
+ """
268
+
269
+ self.TestPositionForHover(event.GetPosition())
270
+
271
+
272
+ def OnMouseEnterChild(self, event):
273
+ """
274
+ Handles the ``wx.EVT_ENTER_WINDOW`` event for children of :class:`RibbonPanel`.
275
+
276
+ :param `event`: a :class:`MouseEvent` event to be processed.
277
+ """
278
+
279
+ pos = event.GetPosition()
280
+ child = event.GetEventObject()
281
+
282
+ if child:
283
+ pos += child.GetPosition()
284
+ self.TestPositionForHover(pos)
285
+
286
+ event.Skip()
287
+
288
+
289
+ def OnMouseLeave(self, event):
290
+ """
291
+ Handles the ``wx.EVT_LEAVE_WINDOW`` event for :class:`RibbonPanel`.
292
+
293
+ :param `event`: a :class:`MouseEvent` event to be processed.
294
+ """
295
+
296
+ self.TestPositionForHover(event.GetPosition())
297
+
298
+
299
+ def OnMouseLeaveChild(self, event):
300
+ """
301
+ Handles the ``wx.EVT_LEAVE_WINDOW`` event for children of :class:`RibbonPanel`.
302
+
303
+ :param `event`: a :class:`MouseEvent` event to be processed.
304
+ """
305
+
306
+ pos = event.GetPosition()
307
+ child = event.GetEventObject()
308
+
309
+ if child:
310
+ pos += child.GetPosition()
311
+ self.TestPositionForHover(pos)
312
+
313
+ event.Skip()
314
+
315
+
316
+ def TestPositionForHover(self, pos):
317
+
318
+ hovered = ext_button_hovered = False
319
+
320
+ if pos.x >= 0 and pos.y >= 0:
321
+ size = self.GetSize()
322
+ if pos.x < size.GetWidth() and pos.y < size.GetHeight():
323
+ hovered = True
324
+
325
+ if hovered:
326
+ if self.HasExtButton():
327
+ ext_button_hovered = self._ext_button_rect.Contains(pos)
328
+
329
+ if hovered != self._hovered or ext_button_hovered != self._ext_button_hovered:
330
+ self._hovered = hovered
331
+ self._ext_button_hovered = ext_button_hovered
332
+ self.Refresh(False)
333
+
334
+
335
+ def HasExtButton(self):
336
+
337
+ bar = self.GetGrandParent()
338
+ return (self._flags & RIBBON_PANEL_EXT_BUTTON) and (bar.GetAGWWindowStyleFlag() & RIBBON_BAR_SHOW_PANEL_EXT_BUTTONS)
339
+
340
+
341
+ def AddChild(self, child):
342
+
343
+ RibbonControl.AddChild(self, child)
344
+
345
+ # Window enter / leave events count for only the window in question, not
346
+ # for children of the window. The panel wants to be in the hovered state
347
+ # whenever the mouse cursor is within its boundary, so the events need to
348
+ # be attached to children too.
349
+ child.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnterChild)
350
+ child.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeaveChild)
351
+
352
+
353
+ def RemoveChild(self, child):
354
+
355
+ child.Unbind(wx.EVT_ENTER_WINDOW)
356
+ child.Unbind(wx.EVT_LEAVE_WINDOW)
357
+
358
+ RibbonControl.RemoveChild(self, child)
359
+
360
+
361
+ def OnMotion(self, event):
362
+ """
363
+ Handles the ``wx.EVT_MOTION`` event for :class:`RibbonPanel`.
364
+
365
+ :param `event`: a :class:`MouseEvent` event to be processed.
366
+ """
367
+
368
+ self.TestPositionForHover(event.GetPosition())
369
+
370
+
371
+ def OnSize(self, event):
372
+ """
373
+ Handles the ``wx.EVT_SIZE`` event for :class:`RibbonPanel`.
374
+
375
+ :param `event`: a :class:`wx.SizeEvent` event to be processed.
376
+ """
377
+
378
+ if self.GetAutoLayout():
379
+ self.Layout()
380
+
381
+ event.Skip()
382
+
383
+
384
+ def DoSetSize(self, x, y, width, height, sizeFlags=wx.SIZE_AUTO):
385
+ """
386
+ Sets the size of the window in pixels.
387
+
388
+ :param integer `x`: required `x` position in pixels, or ``wx.DefaultCoord`` to
389
+ indicate that the existing value should be used;
390
+ :param integer `y`: required `y` position in pixels, or ``wx.DefaultCoord`` to
391
+ indicate that the existing value should be used;
392
+ :param integer `width`: required width in pixels, or ``wx.DefaultCoord`` to
393
+ indicate that the existing value should be used;
394
+ :param integer `height`: required height in pixels, or ``wx.DefaultCoord`` to
395
+ indicate that the existing value should be used;
396
+ :param integer `sizeFlags`: indicates the interpretation of other parameters.
397
+ It is a bit list of the following:
398
+
399
+ * ``wx.SIZE_AUTO_WIDTH``: a ``wx.DefaultCoord`` width value is taken to indicate a
400
+ wxPython-supplied default width.
401
+ * ``wx.SIZE_AUTO_HEIGHT``: a ``wx.DefaultCoord`` height value is taken to indicate a
402
+ wxPython-supplied default height.
403
+ * ``wx.SIZE_AUTO``: ``wx.DefaultCoord`` size values are taken to indicate a wxPython-supplied
404
+ default size.
405
+ * ``wx.SIZE_USE_EXISTING``: existing dimensions should be used if ``wx.DefaultCoord`` values are supplied.
406
+ * ``wx.SIZE_ALLOW_MINUS_ONE``: allow negative dimensions (i.e. value of ``wx.DefaultCoord``)
407
+ to be interpreted as real dimensions, not default values.
408
+ * ``wx.SIZE_FORCE``: normally, if the position and the size of the window are already
409
+ the same as the parameters of this function, nothing is done. but with this flag a window
410
+ resize may be forced even in this case (supported in wx 2.6.2 and later and only implemented
411
+ for MSW and ignored elsewhere currently).
412
+ """
413
+
414
+ # At least on MSW, changing the size of a window will cause GetSize() to
415
+ # report the new size, but a size event may not be handled immediately.
416
+ # If self minimised check was performed in the OnSize handler, then
417
+ # GetSize() could return a size much larger than the minimised size while
418
+ # IsMinimised() returns True. This would then affect layout, as the panel
419
+ # will refuse to grow any larger while in limbo between minimised and non.
420
+
421
+ minimised = (self._flags & RIBBON_PANEL_NO_AUTO_MINIMISE) == 0 and self.IsMinimised(wx.Size(width, height))
422
+
423
+ if minimised != self._minimised:
424
+ self._minimised = minimised
425
+
426
+ for child in self.GetChildren():
427
+ child.Show(not minimised)
428
+
429
+ self.Refresh()
430
+
431
+ RibbonControl.DoSetSize(self, x, y, width, height, sizeFlags)
432
+
433
+
434
+ def IsMinimised2(self, at_size):
435
+ """
436
+ Query if the panel would be minimised at a given size.
437
+
438
+ :param `at_size`: an instance of :class:`wx.Size`, giving the size at which the
439
+ panel should be tested for minimisation.
440
+ """
441
+
442
+ if self.GetSizer():
443
+ # we have no information on size change direction
444
+ # so check both
445
+ size = self.GetMinNotMinimisedSize()
446
+ if size.x > at_size.x or size.y > at_size.y:
447
+ return True
448
+
449
+ return False
450
+
451
+ if not self._minimised_size.IsFullySpecified():
452
+ return False
453
+
454
+ return (at_size.x <= self._minimised_size.x and \
455
+ at_size.y <= self._minimised_size.y) or \
456
+ at_size.x < self._smallest_unminimised_size.x or \
457
+ at_size.y < self._smallest_unminimised_size.y
458
+
459
+
460
+ def OnEraseBackground(self, event):
461
+ """
462
+ Handles the ``wx.EVT_ERASE_BACKGROUND`` event for :class:`RibbonPanel`.
463
+
464
+ :param `event`: a :class:`EraseEvent` event to be processed.
465
+ """
466
+
467
+ # All painting done in main paint handler to minimise flicker
468
+ pass
469
+
470
+
471
+ def OnPaint(self, event):
472
+ """
473
+ Handles the ``wx.EVT_PAINT`` event for :class:`RibbonPanel`.
474
+
475
+ :param `event`: a :class:`PaintEvent` event to be processed.
476
+ """
477
+
478
+ dc = wx.AutoBufferedPaintDC(self)
479
+
480
+ if self._art is not None:
481
+ if self.IsMinimised():
482
+ self._art.DrawMinimisedPanel(dc, self, wx.Rect(0, 0, *self.GetSize()), self._minimised_icon_resized)
483
+ else:
484
+ self._art.DrawPanelBackground(dc, self, wx.Rect(0, 0, *self.GetSize()))
485
+
486
+
487
+ def IsSizingContinuous(self):
488
+ """
489
+ Returns ``True`` if this window can take any size (greater than its minimum size),
490
+ ``False`` if it can only take certain sizes.
491
+
492
+ :see: :meth:`RibbonControl.GetNextSmallerSize() <lib.agw.ribbon.control.RibbonControl.GetNextSmallerSize>`,
493
+ :meth:`RibbonControl.GetNextLargerSize() <lib.agw.ribbon.control.RibbonControl.GetNextLargerSize>`
494
+ """
495
+
496
+ # A panel never sizes continuously, even if all of its children can,
497
+ # as it would appear out of place along side non-continuous panels.
498
+
499
+ # JS 2012-03-09: introducing wxRIBBON_PANEL_STRETCH to allow
500
+ # the panel to fill its parent page. For example we might have
501
+ # a list of styles in one of the pages, which should stretch to
502
+ # fill available space.
503
+ return self._flags & RIBBON_PANEL_STRETCH
504
+
505
+
506
+ def GetBestSizeForParentSize(self, parentSize):
507
+ """ Finds the best width and height given the parent's width and height. """
508
+
509
+ if len(self.GetChildren()) == 1:
510
+ win = self.GetChildren()[0]
511
+
512
+ if isinstance(win, RibbonControl):
513
+ temp_dc = wx.ClientDC(self)
514
+ childSize = win.GetBestSizeForParentSize(parentSize)
515
+ clientParentSize = self._art.GetPanelClientSize(temp_dc, self, wx.Size(*parentSize), None)
516
+ overallSize = self._art.GetPanelSize(temp_dc, self, wx.Size(*clientParentSize), None)
517
+ return overallSize
518
+
519
+ return self.GetSize()
520
+
521
+
522
+ def DoGetNextSmallerSize(self, direction, relative_to):
523
+ """
524
+ Implementation of :meth:`RibbonControl.GetNextSmallerSize() <lib.agw.ribbon.control.RibbonControl.GetNextSmallerSize>`.
525
+
526
+ Controls which have non-continuous sizing must override this virtual function
527
+ rather than :meth:`RibbonControl.GetNextSmallerSize() <lib.agw.ribbon.control.RibbonControl.GetNextSmallerSize>`.
528
+ """
529
+
530
+ if self._expanded_panel is not None:
531
+ # Next size depends upon children, who are currently in the
532
+ # expanded panel
533
+ return self._expanded_panel.DoGetNextSmallerSize(direction, relative_to)
534
+
535
+ if self._art is not None:
536
+
537
+ dc = wx.ClientDC(self)
538
+ child_relative, dummy = self._art.GetPanelClientSize(dc, self, wx.Size(*relative_to), None)
539
+ smaller = wx.Size(-1, -1)
540
+ minimise = False
541
+
542
+ if self.GetSizer():
543
+
544
+ # Get smallest non minimised size
545
+ smaller = self.GetMinSize()
546
+
547
+ # and adjust to child_relative for parent page
548
+ if self._art.GetFlags() & RIBBON_BAR_FLOW_VERTICAL:
549
+ minimise = child_relative.y <= smaller.y
550
+ if smaller.x < child_relative.x:
551
+ smaller.x = child_relative.x
552
+ else:
553
+ minimise = child_relative.x <= smaller.x
554
+ if smaller.y < child_relative.y:
555
+ smaller.y = child_relative.y
556
+
557
+ elif len(self.GetChildren()) == 1:
558
+
559
+ # Simple (and common) case of single ribbon child or Sizer
560
+ ribbon_child = self.GetChildren()[0]
561
+ if isinstance(ribbon_child, RibbonControl):
562
+ smaller = ribbon_child.GetNextSmallerSize(direction, child_relative)
563
+ minimise = smaller == child_relative
564
+
565
+ if minimise:
566
+ if self.CanAutoMinimise():
567
+ minimised = wx.Size(*self._minimised_size)
568
+
569
+ if direction == wx.HORIZONTAL:
570
+ minimised.SetHeight(relative_to.GetHeight())
571
+ elif direction == wx.VERTICAL:
572
+ minimised.SetWidth(relative_to.GetWidth())
573
+
574
+ return minimised
575
+
576
+ else:
577
+ return relative_to
578
+
579
+ elif smaller.IsFullySpecified(): # Use fallback if !(sizer/child = 1)
580
+ return self._art.GetPanelSize(dc, self, wx.Size(*smaller), None)
581
+
582
+ # Fallback: Decrease by 20% (or minimum size, whichever larger)
583
+ current = wx.Size(*relative_to)
584
+ minimum = wx.Size(*self.GetMinSize())
585
+
586
+ if direction & wx.HORIZONTAL:
587
+ current.x = (current.x * 4) / 5
588
+ if current.x < minimum.x:
589
+ current.x = minimum.x
590
+
591
+ if direction & wx.VERTICAL:
592
+ current.y = (current.y * 4) / 5
593
+ if current.y < minimum.y:
594
+ current.y = minimum.y
595
+
596
+ return current
597
+
598
+
599
+ def DoGetNextLargerSize(self, direction, relative_to):
600
+ """
601
+ Implementation of :meth:`RibbonControl.GetNextLargerSize() <lib.agw.ribbon.control.RibbonControl.GetNextLargerSize>`.
602
+
603
+ Controls which have non-continuous sizing must override this virtual function
604
+ rather than :meth:`RibbonControl.GetNextLargerSize() <lib.agw.ribbon.control.RibbonControl.GetNextLargerSize>`.
605
+ """
606
+
607
+ if self._expanded_panel is not None:
608
+ # Next size depends upon children, who are currently in the
609
+ # expanded panel
610
+ return self._expanded_panel.DoGetNextLargerSize(direction, relative_to)
611
+
612
+ if self.IsMinimised(relative_to):
613
+ current = wx.Size(*relative_to)
614
+ min_size = wx.Size(*self.GetMinNotMinimisedSize())
615
+
616
+ if direction == wx.HORIZONTAL:
617
+ if min_size.x > current.x and min_size.y == current.y:
618
+ return min_size
619
+
620
+ elif direction == wx.VERTICAL:
621
+ if min_size.x == current.x and min_size.y > current.y:
622
+ return min_size
623
+
624
+ elif direction == wx.BOTH:
625
+ if min_size.x > current.x and min_size.y > current.y:
626
+ return min_size
627
+
628
+ if self._art is not None:
629
+
630
+ dc = wx.ClientDC(self)
631
+ child_relative, dummy = self._art.GetPanelClientSize(dc, self, wx.Size(*relative_to), None)
632
+ larger = wx.Size(-1, -1)
633
+
634
+ if self.GetSizer():
635
+
636
+ # We could just let the sizer expand in flow direction but see comment
637
+ # in IsSizingContinuous()
638
+ larger = self.GetPanelSizerBestSize()
639
+
640
+ # and adjust for page in non flow direction
641
+ if self._art.GetFlags() & RIBBON_BAR_FLOW_VERTICAL:
642
+ if larger.x != child_relative.x:
643
+ larger.x = child_relative.x
644
+
645
+ elif larger.y != child_relative.y:
646
+ larger.y = child_relative.y
647
+
648
+ elif len(self.GetChildren()) == 1:
649
+
650
+ # Simple (and common) case of single ribbon child
651
+ ribbon_child = self.GetChildren()[0]
652
+ if isinstance(ribbon_child, RibbonControl):
653
+ larger = ribbon_child.GetNextLargerSize(direction, child_relative)
654
+
655
+ if larger.IsFullySpecified(): # Use fallback if !(sizer/child = 1)
656
+ if larger == child_relative:
657
+ return relative_to
658
+ else:
659
+ return self._art.GetPanelSize(dc, self, wx.Size(*larger), None)
660
+
661
+
662
+ # Fallback: Increase by 25% (equal to a prior or subsequent 20% decrease)
663
+ # Note that due to rounding errors, this increase may not exactly equal a
664
+ # matching decrease - an ideal solution would not have these errors, but
665
+ # avoiding them is non-trivial unless an increase is by 100% rather than
666
+ # a fractional amount. This would then be non-ideal as the resizes happen
667
+ # at very large intervals.
668
+ current = wx.Size(*relative_to)
669
+
670
+ if direction & wx.HORIZONTAL:
671
+ current.x = (current.x * 5 + 3) / 4
672
+
673
+ if direction & wx.VERTICAL:
674
+ current.y = (current.y * 5 + 3) / 4
675
+
676
+ return current
677
+
678
+
679
+
680
+ def CanAutoMinimise(self):
681
+ """ Query if the panel can automatically minimise itself at small sizes. """
682
+
683
+ return (self._flags & RIBBON_PANEL_NO_AUTO_MINIMISE) == 0 \
684
+ and self._minimised_size.IsFullySpecified()
685
+
686
+
687
+ def GetMinSize(self):
688
+ """
689
+ Returns the minimum size of the window, an indication to the sizer layout mechanism
690
+ that this is the minimum required size.
691
+
692
+ This method normally just returns the value set by `SetMinSize`, but it can be
693
+ overridden to do the calculation on demand.
694
+ """
695
+
696
+ if self._expanded_panel is not None:
697
+ # Minimum size depends upon children, who are currently in the
698
+ # expanded panel
699
+ return self._expanded_panel.GetMinSize()
700
+
701
+ if self.CanAutoMinimise():
702
+ return wx.Size(*self._minimised_size)
703
+ else:
704
+ return self.GetMinNotMinimisedSize()
705
+
706
+
707
+ def GetMinNotMinimisedSize(self):
708
+
709
+ # Ask sizer if present
710
+ if self.GetSizer():
711
+ dc = wx.ClientDC(self)
712
+ return self._art.GetPanelSize(dc, self, wx.Size(*self.GetPanelSizerMinSize()), None)
713
+
714
+ # Common case of no sizer and single child taking up the entire panel
715
+ elif len(self.GetChildren()) == 1:
716
+ child = self.GetChildren()[0]
717
+ dc = wx.ClientDC(self)
718
+ return self._art.GetPanelSize(dc, self, wx.Size(*child.GetMinSize()), None)
719
+
720
+ return wx.Size(*RibbonControl.GetMinSize(self))
721
+
722
+
723
+ def GetPanelSizerMinSize(self):
724
+
725
+ # Called from Realize() to set self._smallest_unminimised_size and from other
726
+ # functions to get the minimum size.
727
+ # The panel will be invisible when minimised and sizer calcs will be 0
728
+ # Uses self._smallest_unminimised_size in preference to self.GetSizer().CalcMin()
729
+ # to eliminate flicker.
730
+
731
+ # Check if is visible and not previously calculated
732
+ if self.IsShown() and not self._smallest_unminimised_size.IsFullySpecified():
733
+ return self.GetSizer().CalcMin()
734
+
735
+ # else use previously calculated self._smallest_unminimised_size
736
+ dc = wx.ClientDC(self)
737
+ return self._art.GetPanelClientSize(dc, self, wx.Size(*self._smallest_unminimised_size), None)[0]
738
+
739
+
740
+ def GetPanelSizerBestSize(self):
741
+
742
+ size = self.GetPanelSizerMinSize()
743
+ # TODO allow panel to increase its size beyond minimum size
744
+ # by steps similarly to ribbon control panels (preferred for aesthetics)
745
+ # or continuously.
746
+ return size
747
+
748
+
749
+ def DoGetBestSize(self):
750
+ """
751
+ Gets the size which best suits the window: for a control, it would be the
752
+ minimal size which doesn't truncate the control, for a panel - the same size
753
+ as it would have after a call to `Fit()`.
754
+
755
+ :return: An instance of :class:`wx.Size`.
756
+
757
+ :note: Overridden from :class:`wx.Control`.
758
+ """
759
+
760
+ # Ask sizer if present
761
+ if self.GetSizer():
762
+ dc = wx.ClientDC(self)
763
+ return self._art.GetPanelSize(dc, self, wx.Size(*self.GetPanelSizerBestSize()), None)
764
+
765
+ # Common case of no sizer and single child taking up the entire panel
766
+ elif len(self.GetChildren()) == 1:
767
+ child = self.GetChildren()[0]
768
+ dc = wx.ClientDC(self)
769
+ return self._art.GetPanelSize(dc, self, wx.Size(*child.GetBestSize()), None)
770
+
771
+ return wx.Size(*RibbonControl.DoGetBestSize(self))
772
+
773
+
774
+ def Realize(self):
775
+ """
776
+ Realize all children of the panel.
777
+
778
+ :note: Reimplemented from :class:`~wx.lib.agw.ribbon.control.RibbonControl`.
779
+ """
780
+
781
+ status = True
782
+ children = self.GetChildren()
783
+
784
+ for child in children:
785
+ if not isinstance(child, RibbonControl):
786
+ continue
787
+
788
+ if not child.Realize():
789
+ status = False
790
+
791
+ minimum_children_size = wx.Size(0, 0)
792
+
793
+ # Ask sizer if there is one present
794
+ if self.GetSizer():
795
+ minimum_children_size = wx.Size(*self.GetPanelSizerMinSize())
796
+ elif len(children) == 1:
797
+ minimum_children_size = wx.Size(*children[0].GetMinSize())
798
+
799
+ if self._art is not None:
800
+ temp_dc = wx.ClientDC(self)
801
+ self._smallest_unminimised_size = self._art.GetPanelSize(temp_dc, self, wx.Size(*minimum_children_size), None)
802
+
803
+ panel_min_size = self.GetMinNotMinimisedSize()
804
+ self._minimised_size, bitmap_size, self._preferred_expand_direction = self._art.GetMinimisedPanelMinimumSize(temp_dc, self, 1, 1)
805
+
806
+ if self._minimised_icon.IsOk() and self._minimised_icon.GetSize() != bitmap_size:
807
+ img = self._minimised_icon.ConvertToImage()
808
+ img.Rescale(bitmap_size.GetWidth(), bitmap_size.GetHeight(), wx.IMAGE_QUALITY_HIGH)
809
+ self._minimised_icon_resized = wx.Bitmap(img)
810
+ else:
811
+ self._minimised_icon_resized = self._minimised_icon
812
+
813
+ if self._minimised_size.x > panel_min_size.x and self._minimised_size.y > panel_min_size.y:
814
+ # No point in having a minimised size which is larger than the
815
+ # minimum size which the children can go to.
816
+ self._minimised_size = wx.Size(-1, -1)
817
+ else:
818
+ if self._art.GetFlags() & RIBBON_BAR_FLOW_VERTICAL:
819
+ self._minimised_size.x = panel_min_size.x
820
+ else:
821
+ self._minimised_size.y = panel_min_size.y
822
+
823
+ else:
824
+ self._minimised_size = wx.Size(-1, -1)
825
+
826
+ return self.Layout() and status
827
+
828
+
829
+ def Layout(self):
830
+
831
+ if self.IsMinimised():
832
+ # Children are all invisible when minimised
833
+ return True
834
+
835
+ dc = wx.ClientDC(self)
836
+ size, position = self._art.GetPanelClientSize(dc, self, wx.Size(*self.GetSize()), wx.Point())
837
+
838
+ children = self.GetChildren()
839
+
840
+ if self.GetSizer():
841
+ self.GetSizer().SetDimension(position.x, position.y, size.x, size.y) # SetSize and Layout()
842
+ elif len(children) == 1:
843
+ # Common case of no sizer and single child taking up the entire panel
844
+ children[0].SetSize(position.x, position.y, size.GetWidth(), size.GetHeight())
845
+
846
+ if self.HasExtButton():
847
+ self._ext_button_rect = self._art.GetPanelExtButtonArea(dc, self, self.GetSize())
848
+
849
+ return True
850
+
851
+
852
+ def OnMouseClick(self, event):
853
+ """
854
+ Handles the ``wx.EVT_LEFT_DOWN`` event for :class:`RibbonPanel`.
855
+
856
+ :param `event`: a :class:`MouseEvent` event to be processed.
857
+ """
858
+
859
+ if self.IsMinimised():
860
+ if self._expanded_panel is not None:
861
+ self.HideExpanded()
862
+ else:
863
+ self.ShowExpanded()
864
+
865
+ elif self.IsExtButtonHovered():
866
+ notification = RibbonPanelEvent(wxEVT_COMMAND_RIBBONPANEL_EXTBUTTON_ACTIVATED, self.GetId())
867
+ notification.SetEventObject(self)
868
+ notification.SetPanel(self)
869
+ self.ProcessEvent(notification)
870
+
871
+
872
+ def GetExpandedDummy(self):
873
+ """
874
+ Get the dummy panel of an expanded panel.
875
+
876
+ :note: This should be called on an expanded panel to get the dummy associated
877
+ with it - it will return ``None`` when called on the dummy itself.
878
+
879
+ :see: :meth:`~RibbonPanel.ShowExpanded`, :meth:`~RibbonPanel.GetExpandedPanel`
880
+ """
881
+
882
+ return self._expanded_dummy
883
+
884
+
885
+ def GetExpandedPanel(self):
886
+ """
887
+ Get the expanded panel of a dummy panel.
888
+
889
+ :note: This should be called on a dummy panel to get the expanded panel
890
+ associated with it - it will return ``None`` when called on the expanded panel
891
+ itself.
892
+
893
+ :see: :meth:`~RibbonPanel.ShowExpanded`, :meth:`~RibbonPanel.GetExpandedDummy`
894
+ """
895
+
896
+ return self._expanded_panel
897
+
898
+
899
+ def ShowExpanded(self):
900
+ """
901
+ Show the panel externally expanded.
902
+
903
+ When a panel is minimised, it can be shown full-size in a pop-out window, which
904
+ is refered to as being (externally) expanded.
905
+
906
+ :returns: ``True`` if the panel was expanded, ``False`` if it was not (possibly
907
+ due to it not being minimised, or already being expanded).
908
+
909
+ :note: When a panel is expanded, there exist two panels - the original panel
910
+ (which is refered to as the dummy panel) and the expanded panel. The original
911
+ is termed a dummy as it sits in the ribbon bar doing nothing, while the expanded
912
+ panel holds the panel children.
913
+
914
+ :see: :meth:`~RibbonPanel.HideExpanded`, :meth:`~RibbonPanel.GetExpandedPanel`
915
+ """
916
+
917
+ if not self.IsMinimised():
918
+ return False
919
+
920
+ if self._expanded_dummy is not None or self._expanded_panel != None:
921
+ return False
922
+
923
+ size = self.GetBestSize()
924
+ pos = self.GetExpandedPosition(wx.Rect(self.GetScreenPosition(), self.GetSize()), size, self._preferred_expand_direction).GetTopLeft()
925
+
926
+ # Need a top-level frame to contain the expanded panel
927
+ container = wx.Frame(None, wx.ID_ANY, self.GetLabel(), pos, size, wx.FRAME_NO_TASKBAR | wx.BORDER_NONE)
928
+
929
+ self._expanded_panel = RibbonPanel(container, wx.ID_ANY, self.GetLabel(), self._minimised_icon, wx.Point(0, 0), size, self._flags)
930
+ self._expanded_panel.SetArtProvider(self._art)
931
+ self._expanded_panel._expanded_dummy = self
932
+
933
+ # Move all children to the new panel.
934
+ # Conceptually it might be simpler to reparent self entire panel to the
935
+ # container and create a new panel to sit in its place while expanded.
936
+ # This approach has a problem though - when the panel is reinserted into
937
+ # its original parent, it'll be at a different position in the child list
938
+ # and thus assume a new position.
939
+ # NB: Children iterators not used as behaviour is not well defined
940
+ # when iterating over a container which is being emptied
941
+
942
+ for child in self.GetChildren():
943
+ child.Reparent(self._expanded_panel)
944
+ child.Show()
945
+
946
+
947
+ # Move sizer to new panel
948
+ if self.GetSizer():
949
+ sizer = self.GetSizer()
950
+ self.SetSizer(None, False)
951
+ self._expanded_panel.SetSizer(sizer)
952
+
953
+ self._expanded_panel.Realize()
954
+ self.Refresh()
955
+ container.Show()
956
+ self._expanded_panel.SetFocus()
957
+
958
+ return True
959
+
960
+
961
+ def ShouldSendEventToDummy(self, event):
962
+
963
+ # For an expanded panel, filter events between being sent up to the
964
+ # floating top level window or to the dummy panel sitting in the ribbon
965
+ # bar.
966
+
967
+ # Child focus events should not be redirected, as the child would not be a
968
+ # child of the window the event is redirected to. All other command events
969
+ # seem to be suitable for redirecting.
970
+ return event.IsCommandEvent() and event.GetEventType() != wx.wxEVT_CHILD_FOCUS
971
+
972
+
973
+ def TryAfter(self, event):
974
+
975
+ if self._expanded_dummy and self.ShouldSendEventToDummy(event):
976
+ propagateOnce = wx.PropagateOnce(event)
977
+ return self._expanded_dummy.GetEventHandler().ProcessEvent(event)
978
+ else:
979
+ return RibbonControl.TryAfter(self, event)
980
+
981
+
982
+ def OnKillFocus(self, event):
983
+ """
984
+ Handles the ``wx.EVT_KILL_FOCUS`` event for :class:`RibbonPanel`.
985
+
986
+ :param `event`: a :class:`FocusEvent` event to be processed.
987
+ """
988
+
989
+ if self._expanded_dummy:
990
+ receiver = event.GetWindow()
991
+
992
+ if IsAncestorOf(self, receiver):
993
+ self._child_with_focus = receiver
994
+ receiver.Bind(wx.EVT_KILL_FOCUS, self.OnChildKillFocus)
995
+
996
+ elif receiver is None or receiver != self._expanded_dummy:
997
+ self.HideExpanded()
998
+
999
+
1000
+ def OnChildKillFocus(self, event):
1001
+ """
1002
+ Handles the ``wx.EVT_KILL_FOCUS`` event for children of :class:`RibbonPanel`.
1003
+
1004
+ :param `event`: a :class:`FocusEvent` event to be processed.
1005
+ """
1006
+
1007
+ if self._child_with_focus is None:
1008
+ return # Should never happen, but a check can't hurt
1009
+
1010
+ self._child_with_focus.Bind(wx.EVT_KILL_FOCUS, None)
1011
+ self._child_with_focus = None
1012
+
1013
+ receiver = event.GetWindow()
1014
+ if receiver == self or IsAncestorOf(self, receiver):
1015
+ self._child_with_focus = receiver
1016
+ receiver.Bind(wx.EVT_KILL_FOCUS, self.OnChildKillFocus)
1017
+ event.Skip()
1018
+
1019
+ elif receiver is None or receiver != self._expanded_dummy:
1020
+ self.HideExpanded()
1021
+ # Do not skip event, as the panel has been de-expanded, causing the
1022
+ # child with focus to be reparented (and hidden). If the event
1023
+ # continues propogation then bad things happen.
1024
+
1025
+ else:
1026
+ event.Skip()
1027
+
1028
+
1029
+ def HideExpanded(self):
1030
+ """
1031
+ Hide the panel's external expansion.
1032
+
1033
+ :returns: ``True`` if the panel was un-expanded, ``False`` if it was not
1034
+ (normally due to it not being expanded in the first place).
1035
+
1036
+ :see: :meth:`~RibbonPanel.HideExpanded`, :meth:`~RibbonPanel.GetExpandedPanel`
1037
+ """
1038
+
1039
+ if self._expanded_dummy is None:
1040
+ if self._expanded_panel:
1041
+ return self._expanded_panel.HideExpanded()
1042
+ else:
1043
+ return False
1044
+
1045
+ # Move children back to original panel
1046
+ # NB: Children iterators not used as behaviour is not well defined
1047
+ # when iterating over a container which is being emptied
1048
+ for child in self.GetChildren():
1049
+ child.Reparent(self._expanded_dummy)
1050
+ child.Hide()
1051
+
1052
+ # TODO: Move sizer back
1053
+ self._expanded_dummy._expanded_panel = None
1054
+ self._expanded_dummy.Realize()
1055
+ self._expanded_dummy.Refresh()
1056
+ parent = self.GetParent()
1057
+ self.Destroy()
1058
+ parent.Destroy()
1059
+
1060
+ return True
1061
+
1062
+
1063
+ def GetExpandedPosition(self, panel, expanded_size, direction):
1064
+
1065
+ # Strategy:
1066
+ # 1) Determine primary position based on requested direction
1067
+ # 2) Move the position so that it sits entirely within a display
1068
+ # (for single monitor systems, this moves it into the display region,
1069
+ # but for multiple monitors, it does so without splitting it over
1070
+ # more than one display)
1071
+ # 2.1) Move in the primary axis
1072
+ # 2.2) Move in the secondary axis
1073
+
1074
+ primary_x = False
1075
+ secondary_x = secondary_y = 0
1076
+ pos = wx.Point()
1077
+
1078
+ if direction == wx.NORTH:
1079
+ pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) / 2
1080
+ pos.y = panel.GetY() - expanded_size.GetHeight()
1081
+ primary_x = True
1082
+ secondary_y = 1
1083
+
1084
+ elif direction == wx.EAST:
1085
+ pos.x = panel.GetRight()
1086
+ pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) / 2
1087
+ secondary_x = -1
1088
+
1089
+ elif direction == wx.SOUTH:
1090
+ pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) / 2
1091
+ pos.y = panel.GetBottom()
1092
+ primary_x = True
1093
+ secondary_y = -1
1094
+
1095
+ else:
1096
+ pos.x = panel.GetX() - expanded_size.GetWidth()
1097
+ pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) / 2
1098
+ secondary_x = 1
1099
+
1100
+ expanded = wx.Rect(pos, expanded_size)
1101
+ best = wx.Rect(*expanded)
1102
+ best_distance = 10000
1103
+
1104
+ display_n = wx.Display.GetCount()
1105
+
1106
+ for display_i in range(display_n):
1107
+ display = wx.Display(display_i).GetGeometry()
1108
+ if display.Contains(expanded):
1109
+ return expanded
1110
+
1111
+ elif display.Intersects(expanded):
1112
+ new_rect = wx.Rect(*expanded)
1113
+ distance = 0
1114
+
1115
+ if primary_x:
1116
+ if expanded.GetRight() > display.GetRight():
1117
+ distance = expanded.GetRight() - display.GetRight()
1118
+ new_rect.x -= distance
1119
+
1120
+ elif expanded.GetLeft() < display.GetLeft():
1121
+ distance = display.GetLeft() - expanded.GetLeft()
1122
+ new_rect.x += distance
1123
+
1124
+ else:
1125
+ if expanded.GetBottom() > display.GetBottom():
1126
+ distance = expanded.GetBottom() - display.GetBottom()
1127
+ new_rect.y -= distance
1128
+
1129
+ elif expanded.GetTop() < display.GetTop():
1130
+ distance = display.GetTop() - expanded.GetTop()
1131
+ new_rect.y += distance
1132
+
1133
+ if not display.Contains(new_rect):
1134
+ # Tried moving in primary axis, but failed.
1135
+ # Hence try moving in the secondary axis.
1136
+ dx = secondary_x * (panel.GetWidth() + expanded_size.GetWidth())
1137
+ dy = secondary_y * (panel.GetHeight() + expanded_size.GetHeight())
1138
+ new_rect.x += dx
1139
+ new_rect.y += dy
1140
+
1141
+ # Squaring makes secondary moves more expensive (and also
1142
+ # prevents a negative cost)
1143
+ distance += dx * dx + dy * dy
1144
+
1145
+ if display.Contains(new_rect) and distance < best_distance:
1146
+ best = new_rect
1147
+ best_distance = distance
1148
+
1149
+ return best
1150
+
1151
+
1152
+ def GetMinimisedIcon(self):
1153
+ """
1154
+ Get the bitmap to be used in place of the panel children when it is minimised.
1155
+ """
1156
+
1157
+ return self._minimised_icon
1158
+
1159
+
1160
+ def GetDefaultBorder(self):
1161
+ """ Returns the default border style for :class:`RibbonPanel`. """
1162
+
1163
+ return wx.BORDER_NONE
1164
+
1165
+
1166
+ def GetFlags(self):
1167
+ """ Returns the AGW-specific window style for :class:`RibbonPanel`. """
1168
+
1169
+ return self._flags
1170
+