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.
- wx/__init__.py +22 -0
- wx/__version__.py +9 -0
- wx/_adv.cp313-win_amd64.pyd +0 -0
- wx/_aui.cp313-win_amd64.pyd +0 -0
- wx/_core.cp313-win_amd64.pyd +0 -0
- wx/_dataview.cp313-win_amd64.pyd +0 -0
- wx/_glcanvas.cp313-win_amd64.pyd +0 -0
- wx/_grid.cp313-win_amd64.pyd +0 -0
- wx/_html.cp313-win_amd64.pyd +0 -0
- wx/_html2.cp313-win_amd64.pyd +0 -0
- wx/_media.cp313-win_amd64.pyd +0 -0
- wx/_msw.cp313-win_amd64.pyd +0 -0
- wx/_propgrid.cp313-win_amd64.pyd +0 -0
- wx/_ribbon.cp313-win_amd64.pyd +0 -0
- wx/_richtext.cp313-win_amd64.pyd +0 -0
- wx/_stc.cp313-win_amd64.pyd +0 -0
- wx/_xml.cp313-win_amd64.pyd +0 -0
- wx/_xrc.cp313-win_amd64.pyd +0 -0
- wx/adv.py +124 -0
- wx/adv.pyi +5182 -0
- wx/aui.py +77 -0
- wx/aui.pyi +3655 -0
- wx/core.py +3540 -0
- wx/core.pyi +50592 -0
- wx/dataview.py +173 -0
- wx/dataview.pyi +3491 -0
- wx/demo/AUI_DockingWindowMgr.py +1154 -0
- wx/demo/AUI_MDI.py +117 -0
- wx/demo/AUI_Notebook.py +58 -0
- wx/demo/About.py +75 -0
- wx/demo/AboutBox.py +75 -0
- wx/demo/ActiveXWrapper_Acrobat.py +132 -0
- wx/demo/ActiveXWrapper_IE.py +187 -0
- wx/demo/ActiveX_FlashWindow.py +107 -0
- wx/demo/ActiveX_IEHtmlWindow.py +242 -0
- wx/demo/ActiveX_PDFWindow.py +204 -0
- wx/demo/ActivityIndicator.py +80 -0
- wx/demo/AddPrivateFont.py +116 -0
- wx/demo/AdjustChannels.py +178 -0
- wx/demo/AlphaDrawing.py +77 -0
- wx/demo/AnalogClock.py +144 -0
- wx/demo/AnimationCtrl.py +104 -0
- wx/demo/ArtProvider.py +893 -0
- wx/demo/BannerWindow.py +1 -0
- wx/demo/BitmapButton.py +87 -0
- wx/demo/BitmapComboBox.py +63 -0
- wx/demo/BitmapFromBuffer.py +140 -0
- wx/demo/Button.py +77 -0
- wx/demo/Cairo.py +197 -0
- wx/demo/Cairo_Snippets.py +135 -0
- wx/demo/Calendar.py +660 -0
- wx/demo/CalendarCtrl.py +122 -0
- wx/demo/CheckBox.py +74 -0
- wx/demo/CheckListBox.py +79 -0
- wx/demo/CheckListCtrl.py +99 -0
- wx/demo/Choice.py +55 -0
- wx/demo/Choicebook.py +80 -0
- wx/demo/CollapsibleHeaderCtrl.py +85 -0
- wx/demo/CollapsiblePane.py +126 -0
- wx/demo/ColorPanel.py +19 -0
- wx/demo/ColourDB.py +203 -0
- wx/demo/ColourDialog.py +76 -0
- wx/demo/ColourSelect.py +119 -0
- wx/demo/ComboBox.py +111 -0
- wx/demo/ComboCtrl.py +153 -0
- wx/demo/ComboTreeBox.py +71 -0
- wx/demo/CommandLinkButton.py +50 -0
- wx/demo/ContextHelp.py +112 -0
- wx/demo/Cursor.py +336 -0
- wx/demo/CustomDragAndDrop.py +353 -0
- wx/demo/DVC_CustomRenderer.py +204 -0
- wx/demo/DVC_DataViewModel.py +365 -0
- wx/demo/DVC_IndexListModel.py +257 -0
- wx/demo/DVC_ListCtrl.py +69 -0
- wx/demo/DVC_TreeCtrl.py +76 -0
- wx/demo/DatePickerCtrl.py +68 -0
- wx/demo/DelayedResult.py +239 -0
- wx/demo/Dialog.py +169 -0
- wx/demo/DialogUnits.py +128 -0
- wx/demo/DirDialog.py +58 -0
- wx/demo/DragAndDrop.py +265 -0
- wx/demo/DragImage.py +316 -0
- wx/demo/DragScroller.py +59 -0
- wx/demo/DrawXXXList.py +436 -0
- wx/demo/DynamicSashWindow.py +177 -0
- wx/demo/EditableListBox.py +101 -0
- wx/demo/Editor.py +70 -0
- wx/demo/EventManager.py +291 -0
- wx/demo/ExpandoTextCtrl.py +164 -0
- wx/demo/FancyText.py +83 -0
- wx/demo/FileBrowseButton.py +100 -0
- wx/demo/FileCtrl.py +97 -0
- wx/demo/FileDialog.py +144 -0
- wx/demo/FileHistory.py +140 -0
- wx/demo/FindReplaceDialog.py +123 -0
- wx/demo/FloatCanvas.py +1959 -0
- wx/demo/FontDialog.py +142 -0
- wx/demo/FontEnumerator.py +82 -0
- wx/demo/Frame.py +85 -0
- wx/demo/GLCanvas.py +371 -0
- wx/demo/Gauge.py +66 -0
- wx/demo/GenericButtons.py +185 -0
- wx/demo/GenericCheckBox.py +65 -0
- wx/demo/GenericDirCtrl.py +74 -0
- wx/demo/GetMouseState.py +159 -0
- wx/demo/GraphicsContext.py +236 -0
- wx/demo/GraphicsGradient.py +281 -0
- wx/demo/Grid.py +95 -0
- wx/demo/GridBagSizer.py +170 -0
- wx/demo/GridCustEditor.py +247 -0
- wx/demo/GridCustTable.py +170 -0
- wx/demo/GridDragAndDrop.py +102 -0
- wx/demo/GridDragable.py +206 -0
- wx/demo/GridEnterHandler.py +66 -0
- wx/demo/GridHugeTable.py +89 -0
- wx/demo/GridLabelRenderer.py +114 -0
- wx/demo/GridSimple.py +270 -0
- wx/demo/GridStdEdRend.py +186 -0
- wx/demo/Grid_MegaExample.py +490 -0
- wx/demo/HTML2_WebView.py +183 -0
- wx/demo/HtmlWindow.py +232 -0
- wx/demo/I18N.py +237 -0
- wx/demo/Image.py +338 -0
- wx/demo/ImageAlpha.py +87 -0
- wx/demo/ImageBrowser.py +70 -0
- wx/demo/ImageFromStream.py +49 -0
- wx/demo/Img2PyArtProvider.py +99 -0
- wx/demo/InfoBar.py +127 -0
- wx/demo/IntCtrl.py +343 -0
- wx/demo/ItemsPicker.py +108 -0
- wx/demo/Joystick.py +1083 -0
- wx/demo/KeyEvents.py +428 -0
- wx/demo/LEDNumberCtrl.py +121 -0
- wx/demo/LayoutAnchors.py +258 -0
- wx/demo/LayoutConstraints.py +149 -0
- wx/demo/Layoutf.py +69 -0
- wx/demo/ListBox.py +164 -0
- wx/demo/ListCtrl.py +538 -0
- wx/demo/ListCtrl_edit.py +155 -0
- wx/demo/ListCtrl_virtual.py +145 -0
- wx/demo/Listbook.py +104 -0
- wx/demo/MDIDemo.py +86 -0
- wx/demo/MDISashDemo.py +152 -0
- wx/demo/MDIWindows.py +66 -0
- wx/demo/Main.py +2768 -0
- wx/demo/Mask.py +137 -0
- wx/demo/MaskedEditControls.py +648 -0
- wx/demo/MaskedNumCtrl.py +359 -0
- wx/demo/MediaCtrl.py +190 -0
- wx/demo/Menu.py +322 -0
- wx/demo/MessageDialog.py +54 -0
- wx/demo/MimeTypesManager.py +354 -0
- wx/demo/MiniFrame.py +67 -0
- wx/demo/MouseGestures.py +198 -0
- wx/demo/MultiChoiceDialog.py +59 -0
- wx/demo/MultiSash.py +95 -0
- wx/demo/MultiSplitterWindow.py +168 -0
- wx/demo/MultipleChoiceDialog.py +101 -0
- wx/demo/Notebook.py +134 -0
- wx/demo/NotificationMessage.py +61 -0
- wx/demo/OGL.py +433 -0
- wx/demo/Overlay.py +209 -0
- wx/demo/OwnerDrawnComboBox.py +152 -0
- wx/demo/PDFViewer.py +109 -0
- wx/demo/PageSetupDialog.py +70 -0
- wx/demo/PenAndBrushStyles.py +208 -0
- wx/demo/Pickers.py +120 -0
- wx/demo/PlateButton.py +430 -0
- wx/demo/PopupControl.py +99 -0
- wx/demo/PopupMenu.py +156 -0
- wx/demo/PopupWindow.py +227 -0
- wx/demo/PrintDialog.py +60 -0
- wx/demo/PrintFramework.py +227 -0
- wx/demo/Process.py +168 -0
- wx/demo/ProgressDialog.py +87 -0
- wx/demo/PropertyGrid.py +1045 -0
- wx/demo/PropertySheetDialog.py +231 -0
- wx/demo/PseudoDC.py +350 -0
- wx/demo/PyColourChooser.py +60 -0
- wx/demo/PyCrust.py +21 -0
- wx/demo/PyPlot.py +83 -0
- wx/demo/PyShell.py +22 -0
- wx/demo/PythonEvents.py +109 -0
- wx/demo/README.txt +7 -0
- wx/demo/RadioBox.py +67 -0
- wx/demo/RadioButton.py +127 -0
- wx/demo/RawBitmapAccess.py +208 -0
- wx/demo/RearrangeDialog.py +160 -0
- wx/demo/RendererNative.py +170 -0
- wx/demo/ResizeWidget.py +76 -0
- wx/demo/RichMessageDialog.py +85 -0
- wx/demo/RichTextCtrl.py +732 -0
- wx/demo/RichToolTip.py +145 -0
- wx/demo/SVGImage_Bitmap.py +130 -0
- wx/demo/SVGImage_Render.py +138 -0
- wx/demo/SashWindow.py +151 -0
- wx/demo/ScrolledMessageDialog.py +52 -0
- wx/demo/ScrolledPanel.py +124 -0
- wx/demo/ScrolledWindow.py +260 -0
- wx/demo/SearchCtrl.py +115 -0
- wx/demo/ShapedWindow.py +145 -0
- wx/demo/Simplebook.py +202 -0
- wx/demo/SingleChoiceDialog.py +56 -0
- wx/demo/SizedControls.py +433 -0
- wx/demo/Sizers.py +609 -0
- wx/demo/Slider.py +52 -0
- wx/demo/Sound.py +95 -0
- wx/demo/SpinButton.py +63 -0
- wx/demo/SpinCtrl.py +56 -0
- wx/demo/SpinCtrlDouble.py +42 -0
- wx/demo/SplitTree.py +146 -0
- wx/demo/SplitterWindow.py +62 -0
- wx/demo/StandardPaths.py +113 -0
- wx/demo/StaticBitmap.py +55 -0
- wx/demo/StaticBox.py +62 -0
- wx/demo/StaticText.py +69 -0
- wx/demo/StatusBar.py +144 -0
- wx/demo/StockButtons.py +113 -0
- wx/demo/StyledTextCtrl_1.py +303 -0
- wx/demo/StyledTextCtrl_2.py +410 -0
- wx/demo/SystemSettings.py +333 -0
- wx/demo/TablePrint.py +215 -0
- wx/demo/TestTable.txt +38 -0
- wx/demo/TextCtrl.py +187 -0
- wx/demo/TextEntryDialog.py +57 -0
- wx/demo/Threads.py +258 -0
- wx/demo/Throbber.py +250 -0
- wx/demo/Ticker.py +147 -0
- wx/demo/TimeCtrl.py +240 -0
- wx/demo/TimePickerCtrl.py +60 -0
- wx/demo/Timer.py +275 -0
- wx/demo/ToggleButton.py +54 -0
- wx/demo/ToolBar.py +249 -0
- wx/demo/ToolTip.py +71 -0
- wx/demo/Toolbook.py +111 -0
- wx/demo/TreeCtrl.py +199 -0
- wx/demo/TreeListCtrl.py +121 -0
- wx/demo/TreeMixin.py +269 -0
- wx/demo/Treebook.py +117 -0
- wx/demo/UIActionSimulator.py +151 -0
- wx/demo/URLDragAndDrop.py +130 -0
- wx/demo/Unicode.py +146 -0
- wx/demo/VListBox.py +176 -0
- wx/demo/Validator.py +237 -0
- wx/demo/Wizard.py +248 -0
- wx/demo/WrapSizer.py +115 -0
- wx/demo/XmlResource.py +80 -0
- wx/demo/XmlResourceHandler.py +199 -0
- wx/demo/XmlResourceSubclass.py +119 -0
- wx/demo/__init__.py +9 -0
- wx/demo/agw/AGWInfoBar.py +175 -0
- wx/demo/agw/AUI.py +3058 -0
- wx/demo/agw/AdvancedSplash.py +59 -0
- wx/demo/agw/AquaButton.py +146 -0
- wx/demo/agw/BalloonTip.py +378 -0
- wx/demo/agw/ButtonPanel.py +890 -0
- wx/demo/agw/CubeColourDialog.py +83 -0
- wx/demo/agw/CustomTreeCtrl.py +2167 -0
- wx/demo/agw/Example1 +67 -0
- wx/demo/agw/Example2 +49 -0
- wx/demo/agw/FlatMenu.py +876 -0
- wx/demo/agw/FlatNotebook.py +994 -0
- wx/demo/agw/FloatSpin.py +475 -0
- wx/demo/agw/FoldPanelBar.py +953 -0
- wx/demo/agw/FourWaySplitter.py +300 -0
- wx/demo/agw/GenericMessageDialog.py +207 -0
- wx/demo/agw/GradientButton.py +156 -0
- wx/demo/agw/HyperLinkCtrl.py +144 -0
- wx/demo/agw/HyperTreeList.py +2660 -0
- wx/demo/agw/KnobCtrl.py +186 -0
- wx/demo/agw/LabelBook.py +567 -0
- wx/demo/agw/MacLargeDemo.py +360 -0
- wx/demo/agw/MultiDirDialog.py +117 -0
- wx/demo/agw/PeakMeter.py +194 -0
- wx/demo/agw/PersistentControls.py +589 -0
- wx/demo/agw/PieCtrl.py +206 -0
- wx/demo/agw/PyBusyInfo.py +64 -0
- wx/demo/agw/PyCollapsiblePane.py +308 -0
- wx/demo/agw/PyGauge.py +162 -0
- wx/demo/agw/PyProgress.py +155 -0
- wx/demo/agw/RibbonBar.py +925 -0
- wx/demo/agw/RulerCtrl.py +454 -0
- wx/demo/agw/ScrolledThumbnail.py +128 -0
- wx/demo/agw/ShapedButton.py +603 -0
- wx/demo/agw/ShortcutEditor.py +397 -0
- wx/demo/agw/SpeedMeter.py +668 -0
- wx/demo/agw/SuperToolTip.py +396 -0
- wx/demo/agw/ThumbDemoConfig.py +603 -0
- wx/demo/agw/ThumbnailCtrl.py +149 -0
- wx/demo/agw/ToasterBox.py +410 -0
- wx/demo/agw/UltimateListCtrl.py +80 -0
- wx/demo/agw/UltimateListIconDemo.py +908 -0
- wx/demo/agw/UltimateListListDemo.py +124 -0
- wx/demo/agw/UltimateReportDemo.py +1146 -0
- wx/demo/agw/UltimateVirtualDemo.py +207 -0
- wx/demo/agw/Windows7Explorer_Contents.py +368 -0
- wx/demo/agw/XLSGrid.py +238 -0
- wx/demo/agw/ZoomBar.py +230 -0
- wx/demo/agw/__demo__.py +183 -0
- wx/demo/agw/bitmaps/Explorer96.png +0 -0
- wx/demo/agw/bitmaps/Explorer96Flip40.png +0 -0
- wx/demo/agw/bitmaps/Folder96.png +0 -0
- wx/demo/agw/bitmaps/Folder96Flip40.png +0 -0
- wx/demo/agw/bitmaps/Monitor96.png +0 -0
- wx/demo/agw/bitmaps/Monitor96Flip40.png +0 -0
- wx/demo/agw/bitmaps/Music96.png +0 -0
- wx/demo/agw/bitmaps/Music96Flip40.png +0 -0
- wx/demo/agw/bitmaps/Photo96.png +0 -0
- wx/demo/agw/bitmaps/Photo96Flip40.png +0 -0
- wx/demo/agw/bitmaps/Search96.png +0 -0
- wx/demo/agw/bitmaps/Search96Flip40.png +0 -0
- wx/demo/agw/bitmaps/Wizard96.png +0 -0
- wx/demo/agw/bitmaps/Wizard96Flip40.png +0 -0
- wx/demo/agw/bitmaps/advancedsplash.png +0 -0
- wx/demo/agw/bitmaps/aquabutton.png +0 -0
- wx/demo/agw/bitmaps/aquachecked.ico +0 -0
- wx/demo/agw/bitmaps/aquaflagged.ico +0 -0
- wx/demo/agw/bitmaps/aquanotchecked.ico +0 -0
- wx/demo/agw/bitmaps/aquanotflagged.ico +0 -0
- wx/demo/agw/bitmaps/canada.gif +0 -0
- wx/demo/agw/bitmaps/checked.ico +0 -0
- wx/demo/agw/bitmaps/columns.png +0 -0
- wx/demo/agw/bitmaps/contexthelp-16.png +0 -0
- wx/demo/agw/bitmaps/contexthelp.png +0 -0
- wx/demo/agw/bitmaps/copy.png +0 -0
- wx/demo/agw/bitmaps/cut.png +0 -0
- wx/demo/agw/bitmaps/editcopy.png +0 -0
- wx/demo/agw/bitmaps/editcut.png +0 -0
- wx/demo/agw/bitmaps/editpaste.png +0 -0
- wx/demo/agw/bitmaps/empty_icon.png +0 -0
- wx/demo/agw/bitmaps/exit-16.png +0 -0
- wx/demo/agw/bitmaps/exit.ico +0 -0
- wx/demo/agw/bitmaps/ffwd.png +0 -0
- wx/demo/agw/bitmaps/ffwddisabled.png +0 -0
- wx/demo/agw/bitmaps/field-16.png +0 -0
- wx/demo/agw/bitmaps/filenew.png +0 -0
- wx/demo/agw/bitmaps/fileopen.png +0 -0
- wx/demo/agw/bitmaps/filesave.png +0 -0
- wx/demo/agw/bitmaps/flagged.ico +0 -0
- wx/demo/agw/bitmaps/folder.png +0 -0
- wx/demo/agw/bitmaps/folder_new.png +0 -0
- wx/demo/agw/bitmaps/ghost.png +0 -0
- wx/demo/agw/bitmaps/gradientbutton.png +0 -0
- wx/demo/agw/bitmaps/help-16.png +0 -0
- wx/demo/agw/bitmaps/help.ico +0 -0
- wx/demo/agw/bitmaps/italy.gif +0 -0
- wx/demo/agw/bitmaps/lbadd.png +0 -0
- wx/demo/agw/bitmaps/lbcharge.png +0 -0
- wx/demo/agw/bitmaps/lbdecrypted.png +0 -0
- wx/demo/agw/bitmaps/lbnews.png +0 -0
- wx/demo/agw/bitmaps/lbroll.png +0 -0
- wx/demo/agw/bitmaps/minus1.ico +0 -0
- wx/demo/agw/bitmaps/minus2.ico +0 -0
- wx/demo/agw/bitmaps/minus3.ico +0 -0
- wx/demo/agw/bitmaps/minus4.ico +0 -0
- wx/demo/agw/bitmaps/minus5.ico +0 -0
- wx/demo/agw/bitmaps/month-16.png +0 -0
- wx/demo/agw/bitmaps/new_file.png +0 -0
- wx/demo/agw/bitmaps/new_folder.png +0 -0
- wx/demo/agw/bitmaps/notchecked.ico +0 -0
- wx/demo/agw/bitmaps/notflagged.ico +0 -0
- wx/demo/agw/bitmaps/ok-16.png +0 -0
- wx/demo/agw/bitmaps/open_folder.png +0 -0
- wx/demo/agw/bitmaps/paste.png +0 -0
- wx/demo/agw/bitmaps/pause.png +0 -0
- wx/demo/agw/bitmaps/pausedisabled.png +0 -0
- wx/demo/agw/bitmaps/play.png +0 -0
- wx/demo/agw/bitmaps/playdisabled.png +0 -0
- wx/demo/agw/bitmaps/plus1.ico +0 -0
- wx/demo/agw/bitmaps/plus2.ico +0 -0
- wx/demo/agw/bitmaps/plus3.ico +0 -0
- wx/demo/agw/bitmaps/plus4.ico +0 -0
- wx/demo/agw/bitmaps/plus5.ico +0 -0
- wx/demo/agw/bitmaps/record.png +0 -0
- wx/demo/agw/bitmaps/recorddisabled.png +0 -0
- wx/demo/agw/bitmaps/recording.gif +0 -0
- wx/demo/agw/bitmaps/rewind.png +0 -0
- wx/demo/agw/bitmaps/rewinddisabled.png +0 -0
- wx/demo/agw/bitmaps/round.png +0 -0
- wx/demo/agw/bitmaps/save.png +0 -0
- wx/demo/agw/bitmaps/separator.gif +0 -0
- wx/demo/agw/bitmaps/separatorflip.png +0 -0
- wx/demo/agw/bitmaps/smfuel.ico +0 -0
- wx/demo/agw/bitmaps/smpi.ico +0 -0
- wx/demo/agw/bitmaps/smtemp.ico +0 -0
- wx/demo/agw/bitmaps/stop.png +0 -0
- wx/demo/agw/bitmaps/stopdisabled.png +0 -0
- wx/demo/agw/bitmaps/sttbutton.png +0 -0
- wx/demo/agw/bitmaps/sttfont.png +0 -0
- wx/demo/agw/bitmaps/sttheader.png +0 -0
- wx/demo/agw/bitmaps/stthelp.png +0 -0
- wx/demo/agw/bitmaps/view1.png +0 -0
- wx/demo/agw/bitmaps/view2.png +0 -0
- wx/demo/agw/bitmaps/view_choose.png +0 -0
- wx/demo/agw/bitmaps/view_detailed.png +0 -0
- wx/demo/agw/bitmaps/view_icon.png +0 -0
- wx/demo/agw/bitmaps/view_multicolumn.png +0 -0
- wx/demo/agw/bitmaps/viewmag-16.png +0 -0
- wx/demo/agw/bitmaps/viewmag-m-16.png +0 -0
- wx/demo/agw/bitmaps/viewmag-p-16.png +0 -0
- wx/demo/agw/bitmaps/viewmagfit-16.png +0 -0
- wx/demo/agw/data/Example_1.xls +0 -0
- wx/demo/agw/images.py +6714 -0
- wx/demo/bitmaps/AG00028_.gif +0 -0
- wx/demo/bitmaps/AG00039_.gif +0 -0
- wx/demo/bitmaps/AG00178_.gif +0 -0
- wx/demo/bitmaps/AG00183_.gif +0 -0
- wx/demo/bitmaps/AG00185_.gif +0 -0
- wx/demo/bitmaps/BD13656_.gif +0 -0
- wx/demo/bitmaps/advancedsplash.png +0 -0
- wx/demo/bitmaps/aquabutton.png +0 -0
- wx/demo/bitmaps/aquachecked.ico +0 -0
- wx/demo/bitmaps/aquaflagged.ico +0 -0
- wx/demo/bitmaps/aquanotchecked.ico +0 -0
- wx/demo/bitmaps/aquanotflagged.ico +0 -0
- wx/demo/bitmaps/canada.gif +0 -0
- wx/demo/bitmaps/checked.ico +0 -0
- wx/demo/bitmaps/columns.png +0 -0
- wx/demo/bitmaps/contexthelp-16.png +0 -0
- wx/demo/bitmaps/contexthelp.png +0 -0
- wx/demo/bitmaps/copy.png +0 -0
- wx/demo/bitmaps/cropshot24x20.png +0 -0
- wx/demo/bitmaps/cut.png +0 -0
- wx/demo/bitmaps/editcopy.png +0 -0
- wx/demo/bitmaps/editcut.png +0 -0
- wx/demo/bitmaps/editpaste.png +0 -0
- wx/demo/bitmaps/exit-16.png +0 -0
- wx/demo/bitmaps/exit.ico +0 -0
- wx/demo/bitmaps/ffwd.png +0 -0
- wx/demo/bitmaps/ffwddisabled.png +0 -0
- wx/demo/bitmaps/field-16.png +0 -0
- wx/demo/bitmaps/filenew.png +0 -0
- wx/demo/bitmaps/fileopen.png +0 -0
- wx/demo/bitmaps/filesave.png +0 -0
- wx/demo/bitmaps/flagged.ico +0 -0
- wx/demo/bitmaps/folder_new.png +0 -0
- wx/demo/bitmaps/ghost.png +0 -0
- wx/demo/bitmaps/gradientbutton.png +0 -0
- wx/demo/bitmaps/help-16.png +0 -0
- wx/demo/bitmaps/help.ico +0 -0
- wx/demo/bitmaps/honeycomb300.png +0 -0
- wx/demo/bitmaps/image.bmp +0 -0
- wx/demo/bitmaps/image.gif +0 -0
- wx/demo/bitmaps/image.ico +0 -0
- wx/demo/bitmaps/image.jpg +0 -0
- wx/demo/bitmaps/image.png +0 -0
- wx/demo/bitmaps/image.tif +0 -0
- wx/demo/bitmaps/italy.gif +0 -0
- wx/demo/bitmaps/lbadd.png +0 -0
- wx/demo/bitmaps/lbcharge.png +0 -0
- wx/demo/bitmaps/lbdecrypted.png +0 -0
- wx/demo/bitmaps/lbnews.png +0 -0
- wx/demo/bitmaps/lbroll.png +0 -0
- wx/demo/bitmaps/minus1.ico +0 -0
- wx/demo/bitmaps/minus2.ico +0 -0
- wx/demo/bitmaps/minus3.ico +0 -0
- wx/demo/bitmaps/minus4.ico +0 -0
- wx/demo/bitmaps/minus5.ico +0 -0
- wx/demo/bitmaps/month-16.png +0 -0
- wx/demo/bitmaps/new_file.png +0 -0
- wx/demo/bitmaps/new_folder.png +0 -0
- wx/demo/bitmaps/notchecked.ico +0 -0
- wx/demo/bitmaps/notflagged.ico +0 -0
- wx/demo/bitmaps/ok-16.png +0 -0
- wx/demo/bitmaps/open_folder.png +0 -0
- wx/demo/bitmaps/paste.png +0 -0
- wx/demo/bitmaps/pause.png +0 -0
- wx/demo/bitmaps/pausedisabled.png +0 -0
- wx/demo/bitmaps/phoenix_title.png +0 -0
- wx/demo/bitmaps/phoenix_top.png +0 -0
- wx/demo/bitmaps/play.png +0 -0
- wx/demo/bitmaps/playdisabled.png +0 -0
- wx/demo/bitmaps/plus1.ico +0 -0
- wx/demo/bitmaps/plus2.ico +0 -0
- wx/demo/bitmaps/plus3.ico +0 -0
- wx/demo/bitmaps/plus4.ico +0 -0
- wx/demo/bitmaps/plus5.ico +0 -0
- wx/demo/bitmaps/record.png +0 -0
- wx/demo/bitmaps/recorddisabled.png +0 -0
- wx/demo/bitmaps/rewind.png +0 -0
- wx/demo/bitmaps/rewinddisabled.png +0 -0
- wx/demo/bitmaps/round.png +0 -0
- wx/demo/bitmaps/save.png +0 -0
- wx/demo/bitmaps/smfuel.ico +0 -0
- wx/demo/bitmaps/smpi.ico +0 -0
- wx/demo/bitmaps/smtemp.ico +0 -0
- wx/demo/bitmaps/snakey_render.png +0 -0
- wx/demo/bitmaps/splash.png +0 -0
- wx/demo/bitmaps/stop.png +0 -0
- wx/demo/bitmaps/stopdisabled.png +0 -0
- wx/demo/bitmaps/sttbutton.png +0 -0
- wx/demo/bitmaps/sttfont.png +0 -0
- wx/demo/bitmaps/sttheader.png +0 -0
- wx/demo/bitmaps/stthelp.png +0 -0
- wx/demo/bitmaps/toucan.png +0 -0
- wx/demo/bitmaps/view1.png +0 -0
- wx/demo/bitmaps/view2.png +0 -0
- wx/demo/bitmaps/view_choose.png +0 -0
- wx/demo/bitmaps/view_detailed.png +0 -0
- wx/demo/bitmaps/view_icon.png +0 -0
- wx/demo/bitmaps/view_multicolumn.png +0 -0
- wx/demo/bitmaps/viewmag-16.png +0 -0
- wx/demo/bitmaps/viewmag-m-16.png +0 -0
- wx/demo/bitmaps/viewmag-p-16.png +0 -0
- wx/demo/bitmaps/viewmagfit-16.png +0 -0
- wx/demo/bmp_source/001.png +0 -0
- wx/demo/bmp_source/002.png +0 -0
- wx/demo/bmp_source/003.png +0 -0
- wx/demo/bmp_source/004.png +0 -0
- wx/demo/bmp_source/005.png +0 -0
- wx/demo/bmp_source/006.png +0 -0
- wx/demo/bmp_source/007.png +0 -0
- wx/demo/bmp_source/008.png +0 -0
- wx/demo/bmp_source/009.png +0 -0
- wx/demo/bmp_source/010.png +0 -0
- wx/demo/bmp_source/011.png +0 -0
- wx/demo/bmp_source/012.png +0 -0
- wx/demo/bmp_source/013.png +0 -0
- wx/demo/bmp_source/014.png +0 -0
- wx/demo/bmp_source/015.png +0 -0
- wx/demo/bmp_source/016.png +0 -0
- wx/demo/bmp_source/017.png +0 -0
- wx/demo/bmp_source/018.png +0 -0
- wx/demo/bmp_source/019.png +0 -0
- wx/demo/bmp_source/020.png +0 -0
- wx/demo/bmp_source/021.png +0 -0
- wx/demo/bmp_source/022.png +0 -0
- wx/demo/bmp_source/023.png +0 -0
- wx/demo/bmp_source/024.png +0 -0
- wx/demo/bmp_source/025.png +0 -0
- wx/demo/bmp_source/026.png +0 -0
- wx/demo/bmp_source/027.png +0 -0
- wx/demo/bmp_source/028.png +0 -0
- wx/demo/bmp_source/029.png +0 -0
- wx/demo/bmp_source/030.png +0 -0
- wx/demo/bmp_source/DbDec.bmp +0 -0
- wx/demo/bmp_source/DbInc.bmp +0 -0
- wx/demo/bmp_source/Dec.bmp +0 -0
- wx/demo/bmp_source/FRM_0.png +0 -0
- wx/demo/bmp_source/FRM_1.png +0 -0
- wx/demo/bmp_source/FRM_2.png +0 -0
- wx/demo/bmp_source/FRM_3.png +0 -0
- wx/demo/bmp_source/FRM_4.png +0 -0
- wx/demo/bmp_source/FRM_5.png +0 -0
- wx/demo/bmp_source/FRM_6.png +0 -0
- wx/demo/bmp_source/FRM_7.png +0 -0
- wx/demo/bmp_source/FRM_8.png +0 -0
- wx/demo/bmp_source/GridBG.gif +0 -0
- wx/demo/bmp_source/Inc.bmp +0 -0
- wx/demo/bmp_source/LB01.png +0 -0
- wx/demo/bmp_source/LB02.png +0 -0
- wx/demo/bmp_source/LB03.png +0 -0
- wx/demo/bmp_source/LB04.png +0 -0
- wx/demo/bmp_source/LB05.png +0 -0
- wx/demo/bmp_source/LB06.png +0 -0
- wx/demo/bmp_source/LB07.png +0 -0
- wx/demo/bmp_source/LB08.png +0 -0
- wx/demo/bmp_source/LB09.png +0 -0
- wx/demo/bmp_source/LB10.png +0 -0
- wx/demo/bmp_source/LB11.png +0 -0
- wx/demo/bmp_source/LB12.png +0 -0
- wx/demo/bmp_source/Pt.bmp +0 -0
- wx/demo/bmp_source/Vippi.png +0 -0
- wx/demo/bmp_source/backgrnd.png +0 -0
- wx/demo/bmp_source/book.png +0 -0
- wx/demo/bmp_source/book_blue.png +0 -0
- wx/demo/bmp_source/book_green.png +0 -0
- wx/demo/bmp_source/book_red.png +0 -0
- wx/demo/bmp_source/bp_btn1.png +0 -0
- wx/demo/bmp_source/bp_btn2.png +0 -0
- wx/demo/bmp_source/bp_btn3.png +0 -0
- wx/demo/bmp_source/bp_btn4.png +0 -0
- wx/demo/bmp_source/bulb1.bmp +0 -0
- wx/demo/bmp_source/bulb2.bmp +0 -0
- wx/demo/bmp_source/carrot.png +0 -0
- wx/demo/bmp_source/clipboard.png +0 -0
- wx/demo/bmp_source/code.png +0 -0
- wx/demo/bmp_source/core.png +0 -0
- wx/demo/bmp_source/custom.png +0 -0
- wx/demo/bmp_source/customcontrol.png +0 -0
- wx/demo/bmp_source/deletedocs.png +0 -0
- wx/demo/bmp_source/deleteperspective.png +0 -0
- wx/demo/bmp_source/demo.png +0 -0
- wx/demo/bmp_source/dialog.png +0 -0
- wx/demo/bmp_source/exit.png +0 -0
- wx/demo/bmp_source/expansion.png +0 -0
- wx/demo/bmp_source/find.png +0 -0
- wx/demo/bmp_source/findnext.png +0 -0
- wx/demo/bmp_source/floatcanvas.png +0 -0
- wx/demo/bmp_source/frame.png +0 -0
- wx/demo/bmp_source/images.png +0 -0
- wx/demo/bmp_source/inspect.png +0 -0
- wx/demo/bmp_source/layout.png +0 -0
- wx/demo/bmp_source/logo.png +0 -0
- wx/demo/bmp_source/miscellaneous.png +0 -0
- wx/demo/bmp_source/modifiedexists.png +0 -0
- wx/demo/bmp_source/mondrian.ico +0 -0
- wx/demo/bmp_source/morecontrols.png +0 -0
- wx/demo/bmp_source/moredialog.png +0 -0
- wx/demo/bmp_source/noicon.png +0 -0
- wx/demo/bmp_source/overview.png +0 -0
- wx/demo/bmp_source/pencil.png +0 -0
- wx/demo/bmp_source/pointy.png +0 -0
- wx/demo/bmp_source/process.png +0 -0
- wx/demo/bmp_source/pyshell.png +0 -0
- wx/demo/bmp_source/recent.png +0 -0
- wx/demo/bmp_source/rest.png +0 -0
- wx/demo/bmp_source/robin.jpg +0 -0
- wx/demo/bmp_source/rt_alignleft.xpm +24 -0
- wx/demo/bmp_source/rt_alignright.xpm +24 -0
- wx/demo/bmp_source/rt_bold.xpm +24 -0
- wx/demo/bmp_source/rt_centre.xpm +24 -0
- wx/demo/bmp_source/rt_colour.xpm +59 -0
- wx/demo/bmp_source/rt_copy.xpm +44 -0
- wx/demo/bmp_source/rt_cut.xpm +46 -0
- wx/demo/bmp_source/rt_font.xpm +25 -0
- wx/demo/bmp_source/rt_idea.xpm +47 -0
- wx/demo/bmp_source/rt_indentless.xpm +25 -0
- wx/demo/bmp_source/rt_indentmore.xpm +25 -0
- wx/demo/bmp_source/rt_italic.xpm +25 -0
- wx/demo/bmp_source/rt_open.xpm +57 -0
- wx/demo/bmp_source/rt_paste.xpm +46 -0
- wx/demo/bmp_source/rt_redo.xpm +58 -0
- wx/demo/bmp_source/rt_sample.xpm +44 -0
- wx/demo/bmp_source/rt_save.xpm +42 -0
- wx/demo/bmp_source/rt_smiley.xpm +42 -0
- wx/demo/bmp_source/rt_underline.xpm +25 -0
- wx/demo/bmp_source/rt_undo.xpm +58 -0
- wx/demo/bmp_source/rt_zebra.xpm +409 -0
- wx/demo/bmp_source/saveperspective.png +0 -0
- wx/demo/bmp_source/sm_down.bmp +0 -0
- wx/demo/bmp_source/sm_up.bmp +0 -0
- wx/demo/bmp_source/smiles2.bmp +0 -0
- wx/demo/bmp_source/test2.bmp +0 -0
- wx/demo/bmp_source/testmask.bmp +0 -0
- wx/demo/bmp_source/teststar.png +0 -0
- wx/demo/bmp_source/thekid.png +0 -0
- wx/demo/bmp_source/tog1.bmp +0 -0
- wx/demo/bmp_source/tog2.bmp +0 -0
- wx/demo/bmp_source/wiztest1.bmp +0 -0
- wx/demo/bmp_source/wiztest2.bmp +0 -0
- wx/demo/bmp_source/wxpdemo.ico +0 -0
- wx/demo/cursors/paperairplane_arrow_blue.cur +0 -0
- wx/demo/cursors/paperairplane_arrow_blue_fadeout80.cur +0 -0
- wx/demo/cursors/paperairplane_arrow_colorshift.ani +0 -0
- wx/demo/cursors/paperairplane_arrow_dark.cur +0 -0
- wx/demo/cursors/paperairplane_arrow_grey.cur +0 -0
- wx/demo/cursors/paperairplane_arrow_red.cur +0 -0
- wx/demo/cursors/paperairplane_arrow_white.cur +0 -0
- wx/demo/cursors/paperairplane_arrow_white24.png +0 -0
- wx/demo/data/0-tiger.svg +725 -0
- wx/demo/data/Asteroid_blaster.swf +0 -0
- wx/demo/data/SIL_OPEN_FONT_LICENSE.txt +97 -0
- wx/demo/data/SourceCodePro-Regular.ttf +0 -0
- wx/demo/data/accessories-calculator.svg +636 -0
- wx/demo/data/accessories-text-editor.svg +554 -0
- wx/demo/data/anykey.wav +0 -0
- wx/demo/data/applications-internet.svg +623 -0
- wx/demo/data/desktop-accessibility.svg +245 -0
- wx/demo/data/desktop-keyboard-shortcuts.svg +839 -0
- wx/demo/data/desktop-locale.svg +878 -0
- wx/demo/data/desktop-remote-desktop.svg +1479 -0
- wx/demo/data/desktop-theme.svg +882 -0
- wx/demo/data/desktop-wallpaper.svg +747 -0
- wx/demo/data/echo.py +25 -0
- wx/demo/data/imagemap.htm +20 -0
- wx/demo/data/imagemap.png +0 -0
- wx/demo/data/internet-group-chat.svg +312 -0
- wx/demo/data/internet-mail.svg +440 -0
- wx/demo/data/locale/af/LC_MESSAGES/wxpydemo.mo +0 -0
- wx/demo/data/locale/de/LC_MESSAGES/wxpydemo.mo +0 -0
- wx/demo/data/locale/es/LC_MESSAGES/wxpydemo.mo +0 -0
- wx/demo/data/locale/fr/LC_MESSAGES/wxpydemo.mo +0 -0
- wx/demo/data/locale/it/LC_MESSAGES/wxpydemo.mo +0 -0
- wx/demo/data/locale-src/af.po +23 -0
- wx/demo/data/locale-src/de.po +23 -0
- wx/demo/data/locale-src/es.po +22 -0
- wx/demo/data/locale-src/fr.po +22 -0
- wx/demo/data/locale-src/install +15 -0
- wx/demo/data/locale-src/it.po +23 -0
- wx/demo/data/locale-src/wxpydemo.po +21 -0
- wx/demo/data/office-calendar.svg +316 -0
- wx/demo/data/pic.png +0 -0
- wx/demo/data/pic2.bmp +0 -0
- wx/demo/data/plan.wav +0 -0
- wx/demo/data/proclamation.txt +115 -0
- wx/demo/data/resource.wdr +0 -0
- wx/demo/data/resource_wdr.xrc +146 -0
- wx/demo/data/romedalen.png +0 -0
- wx/demo/data/stc.h.html +3544 -0
- wx/demo/data/system-session.svg +510 -0
- wx/demo/data/system-users.svg +539 -0
- wx/demo/data/tables.htm +116 -0
- wx/demo/data/test-gradient-pen.svg +14 -0
- wx/demo/data/test-opacity.svg +7 -0
- wx/demo/data/test.htm +253 -0
- wx/demo/data/testmovie.mpg +0 -0
- wx/demo/data/testtable.txt +38 -0
- wx/demo/data/tips.txt +73 -0
- wx/demo/data/utilities-system-monitor.svg +435 -0
- wx/demo/data/utilities-terminal.svg +500 -0
- wx/demo/data/widgetTest.htm +70 -0
- wx/demo/data/world.dat +24055 -0
- wx/demo/demo.py +4 -0
- wx/demo/demo.pyw +4 -0
- wx/demo/demodata.py +310 -0
- wx/demo/encode_bitmaps.py +181 -0
- wx/demo/images.py +6812 -0
- wx/demo/infoframe.py +149 -0
- wx/demo/run.py +171 -0
- wx/demo/snippets/__init__.py +13 -0
- wx/demo/snippets/arc.py +21 -0
- wx/demo/snippets/arc_negative.py +21 -0
- wx/demo/snippets/clip.py +13 -0
- wx/demo/snippets/clip_image.py +13 -0
- wx/demo/snippets/curve_rectangle.py +53 -0
- wx/demo/snippets/curve_to.py +17 -0
- wx/demo/snippets/dash.py +18 -0
- wx/demo/snippets/ellipse.py +33 -0
- wx/demo/snippets/fill_and_stroke.py +12 -0
- wx/demo/snippets/fill_and_stroke2.py +18 -0
- wx/demo/snippets/fill_style.py +31 -0
- wx/demo/snippets/glyph_path.py +21 -0
- wx/demo/snippets/gradient.py +16 -0
- wx/demo/snippets/gradient_mask.py +12 -0
- wx/demo/snippets/group.py +16 -0
- wx/demo/snippets/image.py +14 -0
- wx/demo/snippets/imagepattern.py +23 -0
- wx/demo/snippets/path.py +7 -0
- wx/demo/snippets/set_line_cap.py +19 -0
- wx/demo/snippets/set_line_join.py +21 -0
- wx/demo/snippets/show_glyphs.py +15 -0
- wx/demo/snippets/text.py +22 -0
- wx/demo/snippets/text_align_center.py +26 -0
- wx/demo/snippets/text_extents.py +27 -0
- wx/demo/template.py +36 -0
- wx/demo/throbImages.py +1277 -0
- wx/demo/version.py +3 -0
- wx/demo/widgetTest.py +72 -0
- wx/demo/wxpdemo.ico +0 -0
- wx/glcanvas.py +10 -0
- wx/glcanvas.pyi +458 -0
- wx/grid.py +229 -0
- wx/grid.pyi +4959 -0
- wx/html.py +35 -0
- wx/html.pyi +2965 -0
- wx/html2.py +40 -0
- wx/html2.pyi +772 -0
- wx/lib/CDate.py +202 -0
- wx/lib/ClickableHtmlWindow.py +57 -0
- wx/lib/__init__.py +0 -0
- wx/lib/activex.py +178 -0
- wx/lib/activexwrapper.py +153 -0
- wx/lib/agw/__init__.py +128 -0
- wx/lib/agw/advancedsplash.py +564 -0
- wx/lib/agw/aquabutton.py +1127 -0
- wx/lib/agw/artmanager.py +2110 -0
- wx/lib/agw/aui/__init__.py +295 -0
- wx/lib/agw/aui/aui_constants.py +2628 -0
- wx/lib/agw/aui/aui_switcherdialog.py +1227 -0
- wx/lib/agw/aui/aui_utilities.py +672 -0
- wx/lib/agw/aui/auibar.py +4031 -0
- wx/lib/agw/aui/auibook.py +6289 -0
- wx/lib/agw/aui/dockart.py +1198 -0
- wx/lib/agw/aui/framemanager.py +10409 -0
- wx/lib/agw/aui/tabart.py +2771 -0
- wx/lib/agw/aui/tabmdi.py +679 -0
- wx/lib/agw/balloontip.py +1158 -0
- wx/lib/agw/buttonpanel.py +2823 -0
- wx/lib/agw/cubecolourdialog.py +3529 -0
- wx/lib/agw/customtreectrl.py +8963 -0
- wx/lib/agw/data/ShortcutEditor_1.png +0 -0
- wx/lib/agw/data/ShortcutEditor_1_thumb.png +0 -0
- wx/lib/agw/data/ShortcutEditor_2.png +0 -0
- wx/lib/agw/data/ShortcutEditor_2_thumb.png +0 -0
- wx/lib/agw/data/ShortcutEditor_3.png +0 -0
- wx/lib/agw/data/ShortcutEditor_3_thumb.png +0 -0
- wx/lib/agw/data/ShortcutEditor_4.png +0 -0
- wx/lib/agw/data/ShortcutEditor_4_thumb.png +0 -0
- wx/lib/agw/data/default_help_text.html +105 -0
- wx/lib/agw/flatmenu.py +7333 -0
- wx/lib/agw/flatnotebook.py +6672 -0
- wx/lib/agw/floatspin.py +1823 -0
- wx/lib/agw/fmcustomizedlg.py +540 -0
- wx/lib/agw/fmresources.py +407 -0
- wx/lib/agw/foldpanelbar.py +2282 -0
- wx/lib/agw/fourwaysplitter.py +1130 -0
- wx/lib/agw/genericmessagedialog.py +1549 -0
- wx/lib/agw/gradientbutton.py +732 -0
- wx/lib/agw/hyperlink.py +664 -0
- wx/lib/agw/hypertreelist.py +5374 -0
- wx/lib/agw/infobar.py +885 -0
- wx/lib/agw/knobctrl.py +945 -0
- wx/lib/agw/labelbook.py +3029 -0
- wx/lib/agw/multidirdialog.py +615 -0
- wx/lib/agw/peakmeter.py +1029 -0
- wx/lib/agw/persist/__init__.py +188 -0
- wx/lib/agw/persist/persist_constants.py +284 -0
- wx/lib/agw/persist/persist_handlers.py +2614 -0
- wx/lib/agw/persist/persistencemanager.py +864 -0
- wx/lib/agw/piectrl.py +1082 -0
- wx/lib/agw/pybusyinfo.py +399 -0
- wx/lib/agw/pycollapsiblepane.py +940 -0
- wx/lib/agw/pygauge.py +570 -0
- wx/lib/agw/pyprogress.py +917 -0
- wx/lib/agw/ribbon/__init__.py +198 -0
- wx/lib/agw/ribbon/art.py +219 -0
- wx/lib/agw/ribbon/art_aui.py +1284 -0
- wx/lib/agw/ribbon/art_default.py +81 -0
- wx/lib/agw/ribbon/art_internal.py +244 -0
- wx/lib/agw/ribbon/art_msw.py +2736 -0
- wx/lib/agw/ribbon/art_osx.py +52 -0
- wx/lib/agw/ribbon/bar.py +1261 -0
- wx/lib/agw/ribbon/buttonbar.py +1320 -0
- wx/lib/agw/ribbon/control.py +205 -0
- wx/lib/agw/ribbon/gallery.py +974 -0
- wx/lib/agw/ribbon/page.py +946 -0
- wx/lib/agw/ribbon/panel.py +1170 -0
- wx/lib/agw/ribbon/toolbar.py +1442 -0
- wx/lib/agw/rulerctrl.py +1887 -0
- wx/lib/agw/scrolledthumbnail.py +2119 -0
- wx/lib/agw/shapedbutton.py +1809 -0
- wx/lib/agw/shortcuteditor.py +2634 -0
- wx/lib/agw/speedmeter.py +1801 -0
- wx/lib/agw/supertooltip.py +1444 -0
- wx/lib/agw/thumbnailctrl.py +529 -0
- wx/lib/agw/toasterbox.py +1327 -0
- wx/lib/agw/ultimatelistctrl.py +13666 -0
- wx/lib/agw/xlsgrid.py +2113 -0
- wx/lib/agw/zoombar.py +1339 -0
- wx/lib/analogclock/__init__.py +140 -0
- wx/lib/analogclock/analogclock.py +631 -0
- wx/lib/analogclock/helpers.py +991 -0
- wx/lib/analogclock/lib_setup/__init__.py +0 -0
- wx/lib/analogclock/lib_setup/buttontreectrlpanel.py +297 -0
- wx/lib/analogclock/lib_setup/fontselect.py +57 -0
- wx/lib/analogclock/setup.py +490 -0
- wx/lib/analogclock/styles.py +47 -0
- wx/lib/anchors.py +103 -0
- wx/lib/art/__init__.py +4 -0
- wx/lib/art/flagart.py +1583 -0
- wx/lib/art/img2pyartprov.py +56 -0
- wx/lib/busy.py +146 -0
- wx/lib/buttons.py +1141 -0
- wx/lib/calendar.py +1597 -0
- wx/lib/checkbox.py +837 -0
- wx/lib/colourchooser/__init__.py +38 -0
- wx/lib/colourchooser/canvas.py +145 -0
- wx/lib/colourchooser/intl.py +24 -0
- wx/lib/colourchooser/pycolourbox.py +89 -0
- wx/lib/colourchooser/pycolourchooser.py +629 -0
- wx/lib/colourchooser/pycolourslider.py +100 -0
- wx/lib/colourchooser/pypalette.py +211 -0
- wx/lib/colourdb.py +740 -0
- wx/lib/colourselect.py +385 -0
- wx/lib/colourutils.py +118 -0
- wx/lib/combotreebox.py +944 -0
- wx/lib/delayedresult.py +420 -0
- wx/lib/dialogs.py +510 -0
- wx/lib/docview.py +3210 -0
- wx/lib/dragscroller.py +79 -0
- wx/lib/editor/README.txt +77 -0
- wx/lib/editor/__init__.py +24 -0
- wx/lib/editor/editor.py +974 -0
- wx/lib/editor/images.py +15 -0
- wx/lib/editor/selection.py +44 -0
- wx/lib/embeddedimage.py +76 -0
- wx/lib/eventStack.py +136 -0
- wx/lib/eventwatcher.py +440 -0
- wx/lib/evtmgr.py +521 -0
- wx/lib/expando.py +393 -0
- wx/lib/fancytext.py +505 -0
- wx/lib/filebrowsebutton.py +459 -0
- wx/lib/flashwin.py +262 -0
- wx/lib/flashwin_old.py +651 -0
- wx/lib/floatcanvas/FCEvents.py +53 -0
- wx/lib/floatcanvas/FCObjects.py +2923 -0
- wx/lib/floatcanvas/FloatCanvas.py +1027 -0
- wx/lib/floatcanvas/GUIMode.py +396 -0
- wx/lib/floatcanvas/NavCanvas.py +161 -0
- wx/lib/floatcanvas/Resources.py +319 -0
- wx/lib/floatcanvas/ScreenShot.py +1788 -0
- wx/lib/floatcanvas/Utilities/BBox.py +314 -0
- wx/lib/floatcanvas/Utilities/Colors.py +137 -0
- wx/lib/floatcanvas/Utilities/GUI.py +91 -0
- wx/lib/floatcanvas/Utilities/__init__.py +7 -0
- wx/lib/floatcanvas/__init__.py +124 -0
- wx/lib/foldmenu.py +89 -0
- wx/lib/gestures.py +310 -0
- wx/lib/gizmos/__init__.py +18 -0
- wx/lib/gizmos/dynamicsash.py +1202 -0
- wx/lib/gizmos/ledctrl.py +300 -0
- wx/lib/gizmos/treelistctrl.py +87 -0
- wx/lib/graphics.py +1939 -0
- wx/lib/gridmovers.py +511 -0
- wx/lib/iewin.py +249 -0
- wx/lib/iewin_old.py +894 -0
- wx/lib/imagebrowser.py +856 -0
- wx/lib/imageutils.py +163 -0
- wx/lib/infoframe.py +490 -0
- wx/lib/inspection.py +1255 -0
- wx/lib/intctrl.py +1001 -0
- wx/lib/itemspicker.py +256 -0
- wx/lib/langlistctrl.py +480 -0
- wx/lib/layoutf.py +271 -0
- wx/lib/masked/__init__.py +27 -0
- wx/lib/masked/combobox.py +839 -0
- wx/lib/masked/ctrl.py +108 -0
- wx/lib/masked/ipaddrctrl.py +242 -0
- wx/lib/masked/maskededit.py +7279 -0
- wx/lib/masked/numctrl.py +2001 -0
- wx/lib/masked/textctrl.py +465 -0
- wx/lib/masked/timectrl.py +1466 -0
- wx/lib/mixins/__init__.py +17 -0
- wx/lib/mixins/grid.py +47 -0
- wx/lib/mixins/gridlabelrenderer.py +251 -0
- wx/lib/mixins/imagelist.py +77 -0
- wx/lib/mixins/inspection.py +184 -0
- wx/lib/mixins/listctrl.py +894 -0
- wx/lib/mixins/rubberband.py +404 -0
- wx/lib/mixins/treemixin.py +678 -0
- wx/lib/msgpanel.py +95 -0
- wx/lib/multisash.py +747 -0
- wx/lib/myole4ax.idl +178 -0
- wx/lib/myole4ax.tlb +0 -0
- wx/lib/newevent.py +229 -0
- wx/lib/nvdlg.py +156 -0
- wx/lib/ogl/__init__.py +13 -0
- wx/lib/ogl/basic.py +3991 -0
- wx/lib/ogl/bmpshape.py +87 -0
- wx/lib/ogl/canvas.py +467 -0
- wx/lib/ogl/composit.py +1577 -0
- wx/lib/ogl/diagram.py +230 -0
- wx/lib/ogl/divided.py +483 -0
- wx/lib/ogl/drawn.py +900 -0
- wx/lib/ogl/lines.py +1811 -0
- wx/lib/ogl/oglmisc.py +608 -0
- wx/lib/pdfviewer/__init__.py +113 -0
- wx/lib/pdfviewer/bitmaps/ArrowLeft.png +0 -0
- wx/lib/pdfviewer/bitmaps/ArrowRight.png +0 -0
- wx/lib/pdfviewer/bitmaps/DirectionH.png +0 -0
- wx/lib/pdfviewer/bitmaps/DirectionV.png +0 -0
- wx/lib/pdfviewer/bitmaps/PlayerFirst.png +0 -0
- wx/lib/pdfviewer/bitmaps/PlayerLast.png +0 -0
- wx/lib/pdfviewer/bitmaps/PlayerNext.png +0 -0
- wx/lib/pdfviewer/bitmaps/PlayerPrev.png +0 -0
- wx/lib/pdfviewer/bitmaps/Printer.png +0 -0
- wx/lib/pdfviewer/bitmaps/ReadMe.txt +28 -0
- wx/lib/pdfviewer/bitmaps/Save.png +0 -0
- wx/lib/pdfviewer/bitmaps/ZoomIn.png +0 -0
- wx/lib/pdfviewer/bitmaps/ZoomOut.png +0 -0
- wx/lib/pdfviewer/bitmaps/encode_bitmaps.py +37 -0
- wx/lib/pdfviewer/buttonpanel.py +279 -0
- wx/lib/pdfviewer/images.py +240 -0
- wx/lib/pdfviewer/viewer.py +1077 -0
- wx/lib/pdfwin.py +295 -0
- wx/lib/pdfwin_old.py +789 -0
- wx/lib/platebtn.py +789 -0
- wx/lib/plot/CHANGELOG.md +150 -0
- wx/lib/plot/README.md +16 -0
- wx/lib/plot/__init__.py +46 -0
- wx/lib/plot/__main__.py +5 -0
- wx/lib/plot/examples/__init__.py +0 -0
- wx/lib/plot/examples/demo.py +1009 -0
- wx/lib/plot/examples/simple_example.py +54 -0
- wx/lib/plot/plotcanvas.py +2981 -0
- wx/lib/plot/polyobjects.py +1525 -0
- wx/lib/plot/utils.py +327 -0
- wx/lib/popupctl.py +250 -0
- wx/lib/printout.py +1157 -0
- wx/lib/progressindicator.py +151 -0
- wx/lib/pubsub/LICENSE_BSD_Simple.txt +23 -0
- wx/lib/pubsub/README_WxPython.txt +22 -0
- wx/lib/pubsub/RELEASE_NOTES.txt +71 -0
- wx/lib/pubsub/__init__.py +25 -0
- wx/lib/pubsub/core/__init__.py +92 -0
- wx/lib/pubsub/core/arg1/__init__.py +16 -0
- wx/lib/pubsub/core/arg1/listenerimpl.py +97 -0
- wx/lib/pubsub/core/arg1/publisher.py +40 -0
- wx/lib/pubsub/core/arg1/publishermixin.py +34 -0
- wx/lib/pubsub/core/arg1/topicargspecimpl.py +66 -0
- wx/lib/pubsub/core/arg1/topicmgrimpl.py +19 -0
- wx/lib/pubsub/core/callables.py +191 -0
- wx/lib/pubsub/core/imp2.py +63 -0
- wx/lib/pubsub/core/itopicdefnprovider.py +0 -0
- wx/lib/pubsub/core/kwargs/__init__.py +16 -0
- wx/lib/pubsub/core/kwargs/datamsg.py +27 -0
- wx/lib/pubsub/core/kwargs/listenerimpl.py +93 -0
- wx/lib/pubsub/core/kwargs/publisher.py +77 -0
- wx/lib/pubsub/core/kwargs/publishermixin.py +65 -0
- wx/lib/pubsub/core/kwargs/topicargspecimpl.py +217 -0
- wx/lib/pubsub/core/kwargs/topicmgrimpl.py +13 -0
- wx/lib/pubsub/core/listener.py +40 -0
- wx/lib/pubsub/core/listenerbase.py +185 -0
- wx/lib/pubsub/core/notificationmgr.py +185 -0
- wx/lib/pubsub/core/publisherbase.py +191 -0
- wx/lib/pubsub/core/topicargspec.py +77 -0
- wx/lib/pubsub/core/topicdefnprovider.py +632 -0
- wx/lib/pubsub/core/topicexc.py +72 -0
- wx/lib/pubsub/core/topicmgr.py +456 -0
- wx/lib/pubsub/core/topicobj.py +472 -0
- wx/lib/pubsub/core/topictreetraverser.py +143 -0
- wx/lib/pubsub/core/topicutils.py +118 -0
- wx/lib/pubsub/core/treeconfig.py +21 -0
- wx/lib/pubsub/core/validatedefnargs.py +29 -0
- wx/lib/pubsub/core/weakmethod.py +102 -0
- wx/lib/pubsub/policies.py +24 -0
- wx/lib/pubsub/pub.py +199 -0
- wx/lib/pubsub/py2and3.py +608 -0
- wx/lib/pubsub/setuparg1.py +47 -0
- wx/lib/pubsub/setupkwargs.py +29 -0
- wx/lib/pubsub/utils/__init__.py +27 -0
- wx/lib/pubsub/utils/exchandling.py +100 -0
- wx/lib/pubsub/utils/misc.py +100 -0
- wx/lib/pubsub/utils/notification.py +331 -0
- wx/lib/pubsub/utils/topictreeprinter.py +195 -0
- wx/lib/pubsub/utils/xmltopicdefnprovider.py +287 -0
- wx/lib/pydocview.py +3300 -0
- wx/lib/rcsizer.py +229 -0
- wx/lib/resizewidget.py +357 -0
- wx/lib/scrolledpanel.py +225 -0
- wx/lib/sheet.py +350 -0
- wx/lib/sized_controls.py +691 -0
- wx/lib/softwareupdate.py +361 -0
- wx/lib/splitter.py +925 -0
- wx/lib/statbmp.py +199 -0
- wx/lib/stattext.py +322 -0
- wx/lib/throbber.py +425 -0
- wx/lib/ticker.py +295 -0
- wx/lib/ticker_xrc.py +48 -0
- wx/lib/utils.py +89 -0
- wx/lib/wordwrap.py +97 -0
- wx/lib/wxcairo/__init__.py +124 -0
- wx/lib/wxcairo/wx_cairocffi.py +200 -0
- wx/lib/wxcairo/wx_pycairo.py +463 -0
- wx/lib/wxpTag.py +274 -0
- wx/locale/af/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/an/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ar/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ca/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ca@valencia/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/cs/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/da/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/de/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/el/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/es/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/eu/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/fa_IR/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/fi/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/fr/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/gl_ES/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/hi/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/hr/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/hu/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/id/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/it/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ja/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ka/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ko_KR/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/lt/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/lv/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ms/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/nb/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ne/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/nl/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/pl/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/pt/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/pt_BR/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ro/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ru/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/sk/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/sl/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/sq/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/sv/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/ta/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/tr/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/uk/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/vi/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/zh_CN/LC_MESSAGES/wxstd.mo +0 -0
- wx/locale/zh_TW/LC_MESSAGES/wxstd.mo +0 -0
- wx/media.py +27 -0
- wx/media.pyi +223 -0
- wx/msw.py +13 -0
- wx/msw.pyi +65 -0
- wx/propgrid.py +1451 -0
- wx/propgrid.pyi +7914 -0
- wx/py/CHANGES.txt +796 -0
- wx/py/Py.ico +0 -0
- wx/py/PyAlaCarte.py +34 -0
- wx/py/PyAlaMode.py +34 -0
- wx/py/PyAlaModeTest.py +33 -0
- wx/py/PyCrust.ico +0 -0
- wx/py/PyCrust.py +78 -0
- wx/py/PyCrust_16.png +0 -0
- wx/py/PyCrust_32.png +0 -0
- wx/py/PyFilling.py +35 -0
- wx/py/PyShell.py +78 -0
- wx/py/PySlices.ico +0 -0
- wx/py/PySlices.py +98 -0
- wx/py/PySlicesShell.py +94 -0
- wx/py/PySlices_16.png +0 -0
- wx/py/PySlices_32.png +0 -0
- wx/py/PyWrap.py +52 -0
- wx/py/README.txt +77 -0
- wx/py/__init__.py +20 -0
- wx/py/buffer.py +136 -0
- wx/py/crust.py +403 -0
- wx/py/crustslices.py +403 -0
- wx/py/dispatcher.py +259 -0
- wx/py/document.py +37 -0
- wx/py/editor.py +844 -0
- wx/py/editwindow.py +299 -0
- wx/py/filling.py +357 -0
- wx/py/frame.py +978 -0
- wx/py/images.py +212 -0
- wx/py/interpreter.py +170 -0
- wx/py/introspect.py +393 -0
- wx/py/magic.py +98 -0
- wx/py/parse.py +134 -0
- wx/py/path.py +36 -0
- wx/py/pseudo.py +99 -0
- wx/py/shell.py +1588 -0
- wx/py/sliceshell.py +3814 -0
- wx/py/tests/test_interpreter.py +71 -0
- wx/py/tests/test_introspect.py +862 -0
- wx/py/tests/test_pseudo.py +70 -0
- wx/py/tests/test_version.py +36 -0
- wx/py/tests/testall.py +22 -0
- wx/py/version.py +7 -0
- wx/ribbon.py +45 -0
- wx/ribbon.pyi +2494 -0
- wx/richtext.py +142 -0
- wx/richtext.pyi +12113 -0
- wx/siplib.cp313-win_amd64.pyd +0 -0
- wx/stc.py +58 -0
- wx/stc.pyi +8463 -0
- wx/svg/__init__.py +364 -0
- wx/svg/_nanosvg.cp313-win_amd64.pyd +0 -0
- wx/tools/__init__.py +18 -0
- wx/tools/dbg.py +268 -0
- wx/tools/genaxmodule.py +50 -0
- wx/tools/helpviewer.py +92 -0
- wx/tools/img2img.py +85 -0
- wx/tools/img2png.py +54 -0
- wx/tools/img2py.py +309 -0
- wx/tools/img2xpm.py +54 -0
- wx/tools/pywxrc.py +949 -0
- wx/tools/wxget.py +254 -0
- wx/tools/wxget_docs_demo.py +186 -0
- wx/wxbase315u_net_vc140_x64.dll +0 -0
- wx/wxbase315u_vc140_x64.dll +0 -0
- wx/wxbase315u_xml_vc140_x64.dll +0 -0
- wx/wxmsw315u_adv_vc140_x64.dll +0 -0
- wx/wxmsw315u_aui_vc140_x64.dll +0 -0
- wx/wxmsw315u_core_vc140_x64.dll +0 -0
- wx/wxmsw315u_gl_vc140_x64.dll +0 -0
- wx/wxmsw315u_html_vc140_x64.dll +0 -0
- wx/wxmsw315u_media_vc140_x64.dll +0 -0
- wx/wxmsw315u_propgrid_vc140_x64.dll +0 -0
- wx/wxmsw315u_qa_vc140_x64.dll +0 -0
- wx/wxmsw315u_ribbon_vc140_x64.dll +0 -0
- wx/wxmsw315u_richtext_vc140_x64.dll +0 -0
- wx/wxmsw315u_stc_vc140_x64.dll +0 -0
- wx/wxmsw315u_webview_vc140_x64.dll +0 -0
- wx/wxmsw315u_xrc_vc140_x64.dll +0 -0
- wx/xml.py +15 -0
- wx/xml.pyi +575 -0
- wx/xrc.py +65 -0
- wx/xrc.pyi +742 -0
- wxPython_zombie-3.1.5.8.dist-info/LICENSE.txt +950 -0
- wxPython_zombie-3.1.5.8.dist-info/METADATA +107 -0
- wxPython_zombie-3.1.5.8.dist-info/RECORD +1175 -0
- wxPython_zombie-3.1.5.8.dist-info/WHEEL +5 -0
- wxPython_zombie-3.1.5.8.dist-info/entry_points.txt +2 -0
- wxPython_zombie-3.1.5.8.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
#----------------------------------------------------------------------------
|
|
2
|
+
# Name: BBox.py
|
|
3
|
+
# Purpose:
|
|
4
|
+
#
|
|
5
|
+
# Author:
|
|
6
|
+
#
|
|
7
|
+
# Created:
|
|
8
|
+
# Version:
|
|
9
|
+
# Date:
|
|
10
|
+
# Licence:
|
|
11
|
+
# Tags: phoenix-port
|
|
12
|
+
# (c) 2023 - 2024 Zombie
|
|
13
|
+
#----------------------------------------------------------------------------
|
|
14
|
+
"""
|
|
15
|
+
A Bounding Box object and assorted utilities , subclassed from a numpy array
|
|
16
|
+
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import numpy as N
|
|
20
|
+
|
|
21
|
+
class BBox(N.ndarray):
|
|
22
|
+
"""
|
|
23
|
+
A Bounding Box object:
|
|
24
|
+
|
|
25
|
+
Takes Data as an array. Data is any python sequence that can be turned into a
|
|
26
|
+
2x2 numpy array of floats::
|
|
27
|
+
|
|
28
|
+
[
|
|
29
|
+
[MinX, MinY ],
|
|
30
|
+
[MaxX, MaxY ]
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
It is a subclass of numpy.ndarray, so for the most part it can be used as
|
|
34
|
+
an array, and arrays that fit the above description can be used in its place.
|
|
35
|
+
|
|
36
|
+
Usually created by the factory functions:
|
|
37
|
+
|
|
38
|
+
asBBox
|
|
39
|
+
|
|
40
|
+
and
|
|
41
|
+
|
|
42
|
+
fromPoints
|
|
43
|
+
|
|
44
|
+
"""
|
|
45
|
+
def __new__(subtype, data):
|
|
46
|
+
"""
|
|
47
|
+
Takes Data as an array. Data is any python sequence that can be turned
|
|
48
|
+
into a 2x2 numpy array of floats::
|
|
49
|
+
|
|
50
|
+
[
|
|
51
|
+
[MinX, MinY ],
|
|
52
|
+
[MaxX, MaxY ]
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
You don't usually call this directly. BBox objects are created with
|
|
56
|
+
the factory functions:
|
|
57
|
+
|
|
58
|
+
asBBox
|
|
59
|
+
|
|
60
|
+
and
|
|
61
|
+
|
|
62
|
+
fromPoints
|
|
63
|
+
|
|
64
|
+
"""
|
|
65
|
+
arr = N.array(data, float)
|
|
66
|
+
arr.shape = (2,2)
|
|
67
|
+
if arr[0,0] > arr[1,0] or arr[0,1] > arr[1,1]:
|
|
68
|
+
# note: zero sized BB OK.
|
|
69
|
+
raise ValueError("BBox values not aligned: \n minimum values must be less that maximum values")
|
|
70
|
+
return N.ndarray.__new__(subtype, shape=arr.shape, dtype=arr.dtype, buffer=arr)
|
|
71
|
+
|
|
72
|
+
def Overlaps(self, BB):
|
|
73
|
+
"""
|
|
74
|
+
Overlap(BB):
|
|
75
|
+
|
|
76
|
+
Tests if the given Bounding Box overlaps with this one.
|
|
77
|
+
Returns True is the Bounding boxes overlap, False otherwise
|
|
78
|
+
If they are just touching, returns True
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
if N.isinf(self).all() or N.isinf(BB).all():
|
|
82
|
+
return True
|
|
83
|
+
if ( (self[1,0] >= BB[0,0]) and (self[0,0] <= BB[1,0]) and
|
|
84
|
+
(self[1,1] >= BB[0,1]) and (self[0,1] <= BB[1,1]) ):
|
|
85
|
+
return True
|
|
86
|
+
else:
|
|
87
|
+
return False
|
|
88
|
+
|
|
89
|
+
def Inside(self, BB):
|
|
90
|
+
"""
|
|
91
|
+
Inside(BB):
|
|
92
|
+
|
|
93
|
+
Tests if the given Bounding Box is entirely inside this one.
|
|
94
|
+
|
|
95
|
+
Returns True if it is entirely inside, or touching the
|
|
96
|
+
border.
|
|
97
|
+
|
|
98
|
+
Returns False otherwise
|
|
99
|
+
"""
|
|
100
|
+
if ( (BB[0,0] >= self[0,0]) and (BB[1,0] <= self[1,0]) and
|
|
101
|
+
(BB[0,1] >= self[0,1]) and (BB[1,1] <= self[1,1]) ):
|
|
102
|
+
return True
|
|
103
|
+
else:
|
|
104
|
+
return False
|
|
105
|
+
|
|
106
|
+
def PointInside(self, Point):
|
|
107
|
+
"""
|
|
108
|
+
Inside(BB):
|
|
109
|
+
|
|
110
|
+
Tests if the given Point is entirely inside this one.
|
|
111
|
+
|
|
112
|
+
Returns True if it is entirely inside, or touching the
|
|
113
|
+
border.
|
|
114
|
+
|
|
115
|
+
Returns False otherwise
|
|
116
|
+
|
|
117
|
+
Point is any length-2 sequence (tuple, list, array) or two numbers
|
|
118
|
+
"""
|
|
119
|
+
if Point[0] >= self[0,0] and \
|
|
120
|
+
Point[0] <= self[1,0] and \
|
|
121
|
+
Point[1] <= self[1,1] and \
|
|
122
|
+
Point[1] >= self[0,1]:
|
|
123
|
+
return True
|
|
124
|
+
else:
|
|
125
|
+
return False
|
|
126
|
+
|
|
127
|
+
def Merge(self, BB):
|
|
128
|
+
"""
|
|
129
|
+
Joins this bounding box with the one passed in, maybe making this one bigger
|
|
130
|
+
|
|
131
|
+
"""
|
|
132
|
+
if self.IsNull():
|
|
133
|
+
self[:] = BB
|
|
134
|
+
elif N.isnan(BB).all(): ## BB may be a regular array, so I can't use IsNull
|
|
135
|
+
pass
|
|
136
|
+
else:
|
|
137
|
+
if BB[0,0] < self[0,0]: self[0,0] = BB[0,0]
|
|
138
|
+
if BB[0,1] < self[0,1]: self[0,1] = BB[0,1]
|
|
139
|
+
if BB[1,0] > self[1,0]: self[1,0] = BB[1,0]
|
|
140
|
+
if BB[1,1] > self[1,1]: self[1,1] = BB[1,1]
|
|
141
|
+
|
|
142
|
+
return None
|
|
143
|
+
|
|
144
|
+
def IsNull(self):
|
|
145
|
+
return N.isnan(self).all()
|
|
146
|
+
|
|
147
|
+
## fixme: it would be nice to add setter, too.
|
|
148
|
+
def _getLeft(self):
|
|
149
|
+
return self[0,0]
|
|
150
|
+
Left = property(_getLeft)
|
|
151
|
+
def _getRight(self):
|
|
152
|
+
return self[1,0]
|
|
153
|
+
Right = property(_getRight)
|
|
154
|
+
def _getBottom(self):
|
|
155
|
+
return self[0,1]
|
|
156
|
+
Bottom = property(_getBottom)
|
|
157
|
+
def _getTop(self):
|
|
158
|
+
return self[1,1]
|
|
159
|
+
Top = property(_getTop)
|
|
160
|
+
|
|
161
|
+
def _getWidth(self):
|
|
162
|
+
return self[1,0] - self[0,0]
|
|
163
|
+
Width = property(_getWidth)
|
|
164
|
+
|
|
165
|
+
def _getHeight(self):
|
|
166
|
+
return self[1,1] - self[0,1]
|
|
167
|
+
Height = property(_getHeight)
|
|
168
|
+
|
|
169
|
+
def _getCenter(self):
|
|
170
|
+
return self.sum(0) / 2.0
|
|
171
|
+
Center = property(_getCenter)
|
|
172
|
+
### This could be used for a make BB from a bunch of BBs
|
|
173
|
+
|
|
174
|
+
#~ def _getboundingbox(bboxarray): # lrk: added this
|
|
175
|
+
#~ # returns the bounding box of a bunch of bounding boxes
|
|
176
|
+
#~ upperleft = N.minimum.reduce(bboxarray[:,0])
|
|
177
|
+
#~ lowerright = N.maximum.reduce(bboxarray[:,1])
|
|
178
|
+
#~ return N.array((upperleft, lowerright), float)
|
|
179
|
+
#~ _getboundingbox = staticmethod(_getboundingbox)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## Save the ndarray __eq__ for internal use.
|
|
183
|
+
Array__eq__ = N.ndarray.__eq__
|
|
184
|
+
def __eq__(self, BB):
|
|
185
|
+
"""
|
|
186
|
+
__eq__(BB) The equality operator
|
|
187
|
+
|
|
188
|
+
A == B if and only if all the entries are the same
|
|
189
|
+
|
|
190
|
+
"""
|
|
191
|
+
if self.IsNull() and N.isnan(BB).all(): ## BB may be a regular array, so I can't use IsNull
|
|
192
|
+
return True
|
|
193
|
+
else:
|
|
194
|
+
return self.Array__eq__(BB).all()
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def asBBox(data):
|
|
198
|
+
"""
|
|
199
|
+
returns a BBox object.
|
|
200
|
+
|
|
201
|
+
If object is a BBox, it is returned unaltered
|
|
202
|
+
|
|
203
|
+
If object is a numpy array, a BBox object is returned that shares a
|
|
204
|
+
view of the data with that array. The numpy array should be of the correct
|
|
205
|
+
format: a 2x2 numpy array of floats::
|
|
206
|
+
|
|
207
|
+
[
|
|
208
|
+
[MinX, MinY ],
|
|
209
|
+
[MaxX, MaxY ]
|
|
210
|
+
]
|
|
211
|
+
|
|
212
|
+
"""
|
|
213
|
+
|
|
214
|
+
if isinstance(data, BBox):
|
|
215
|
+
return data
|
|
216
|
+
arr = N.asarray(data, float)
|
|
217
|
+
return N.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
|
|
218
|
+
|
|
219
|
+
def fromPoints(Points):
|
|
220
|
+
"""
|
|
221
|
+
fromPoints (Points).
|
|
222
|
+
|
|
223
|
+
reruns the bounding box of the set of points in Points. Points can
|
|
224
|
+
be any python object that can be turned into a numpy NX2 array of Floats.
|
|
225
|
+
|
|
226
|
+
If a single point is passed in, a zero-size Bounding Box is returned.
|
|
227
|
+
|
|
228
|
+
"""
|
|
229
|
+
Points = N.asarray(Points, float).reshape(-1,2)
|
|
230
|
+
|
|
231
|
+
arr = N.vstack( (Points.min(0), Points.max(0)) )
|
|
232
|
+
return N.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
|
|
233
|
+
|
|
234
|
+
def fromBBArray(BBarray):
|
|
235
|
+
"""
|
|
236
|
+
Builds a BBox object from an array of Bounding Boxes.
|
|
237
|
+
The resulting Bounding Box encompases all the included BBs.
|
|
238
|
+
|
|
239
|
+
The BBarray is in the shape: (Nx2x2) where BBarray[n] is a 2x2 array that represents a BBox
|
|
240
|
+
"""
|
|
241
|
+
|
|
242
|
+
#upperleft = N.minimum.reduce(BBarray[:,0])
|
|
243
|
+
#lowerright = N.maximum.reduce(BBarray[:,1])
|
|
244
|
+
|
|
245
|
+
# BBarray = N.asarray(BBarray, float).reshape(-1,2)
|
|
246
|
+
# arr = N.vstack( (BBarray.min(0), BBarray.max(0)) )
|
|
247
|
+
BBarray = N.asarray(BBarray, float).reshape(-1,2,2)
|
|
248
|
+
arr = N.vstack( (BBarray[:,0,:].min(0), BBarray[:,1,:].max(0)) )
|
|
249
|
+
return asBBox(arr)
|
|
250
|
+
#return asBBox( (upperleft, lowerright) ) * 2
|
|
251
|
+
|
|
252
|
+
def NullBBox():
|
|
253
|
+
"""
|
|
254
|
+
Returns a BBox object with all NaN entries.
|
|
255
|
+
|
|
256
|
+
This represents a Null BB box;
|
|
257
|
+
|
|
258
|
+
BB merged with it will return BB.
|
|
259
|
+
|
|
260
|
+
Nothing is inside it.
|
|
261
|
+
|
|
262
|
+
"""
|
|
263
|
+
|
|
264
|
+
arr = N.array(((N.nan, N.nan),(N.nan, N.nan)), float)
|
|
265
|
+
return N.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
|
|
266
|
+
|
|
267
|
+
def InfBBox():
|
|
268
|
+
"""
|
|
269
|
+
Returns a BBox object with all -inf and inf entries
|
|
270
|
+
|
|
271
|
+
"""
|
|
272
|
+
|
|
273
|
+
arr = N.array(((-N.inf, -N.inf),(N.inf, N.inf)), float)
|
|
274
|
+
return N.ndarray.__new__(BBox, shape=arr.shape, dtype=arr.dtype, buffer=arr)
|
|
275
|
+
|
|
276
|
+
class RectBBox(BBox):
|
|
277
|
+
"""
|
|
278
|
+
subclass of a BBox that can be used for a rotated Rectangle
|
|
279
|
+
|
|
280
|
+
contributed by MArco Oster (marco.oster@bioquant.uni-heidelberg.de)
|
|
281
|
+
|
|
282
|
+
"""
|
|
283
|
+
|
|
284
|
+
def __new__(self, data, edges=None):
|
|
285
|
+
return BBox.__new__(self, data)
|
|
286
|
+
|
|
287
|
+
def __init__(self, data, edges=None):
|
|
288
|
+
""" assume edgepoints are ordered such you can walk along all edges with left rotation sense
|
|
289
|
+
This may be:
|
|
290
|
+
left-top
|
|
291
|
+
left-bottom
|
|
292
|
+
right-bottom
|
|
293
|
+
right-top
|
|
294
|
+
|
|
295
|
+
or any rotation.
|
|
296
|
+
"""
|
|
297
|
+
BBox.BBox(data)
|
|
298
|
+
self.edges = np.asarray(edges)
|
|
299
|
+
|
|
300
|
+
def ac_leftOf_ab(self, a, b, c):
|
|
301
|
+
ab = np.array(b) - np.array(a)
|
|
302
|
+
ac = np.array(c) - np.array(a)
|
|
303
|
+
|
|
304
|
+
return (ac[0]*ab[1] - ac[1]*ab[0]) <= 0
|
|
305
|
+
|
|
306
|
+
def PointInside(self, point):
|
|
307
|
+
for edge in xrange(4):
|
|
308
|
+
if self.ac_leftOf_ab(self.edges[edge],
|
|
309
|
+
self.edges[(edge+1)%4],
|
|
310
|
+
point):
|
|
311
|
+
continue
|
|
312
|
+
else:
|
|
313
|
+
return False
|
|
314
|
+
return True
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#----------------------------------------------------------------------------
|
|
2
|
+
# Name: Colors.py
|
|
3
|
+
# Purpose: Contains color lists used in FloatCanvas
|
|
4
|
+
#
|
|
5
|
+
# Author:
|
|
6
|
+
#
|
|
7
|
+
# Created:
|
|
8
|
+
# Version:
|
|
9
|
+
# Date:
|
|
10
|
+
# Licence:
|
|
11
|
+
# Tags: phoenix-port, unittest, documented, py3-port
|
|
12
|
+
#----------------------------------------------------------------------------
|
|
13
|
+
|
|
14
|
+
"""
|
|
15
|
+
Colors.py
|
|
16
|
+
|
|
17
|
+
Assorted stuff for Colors support. At the moment, only a few color sets.
|
|
18
|
+
|
|
19
|
+
Many of these are from:
|
|
20
|
+
http://geography.uoregon.edu/datagraphics/color_scales.htm
|
|
21
|
+
|
|
22
|
+
They may have been modified some
|
|
23
|
+
|
|
24
|
+
CategoricalColor1: A list of colors that are distict.
|
|
25
|
+
BlueToRed11: 11 colors from blue to red
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
## Categorical 12-step scheme, after ColorBrewer 11-step Paired Scheme
|
|
31
|
+
## From: http://geography.uoregon.edu/datagraphics/color_scales.htm
|
|
32
|
+
# CategoricalColor1 = [ (255, 191, 127),
|
|
33
|
+
# (255, 127, 0),
|
|
34
|
+
# (255, 255, 153),
|
|
35
|
+
# (255, 255, 50),
|
|
36
|
+
# (178, 255, 140),
|
|
37
|
+
# ( 50, 255, 0),
|
|
38
|
+
# (165, 237, 255),
|
|
39
|
+
# (25, 178, 255),
|
|
40
|
+
# (204, 191, 255),
|
|
41
|
+
# (101, 76, 255),
|
|
42
|
+
# (255, 153, 191),
|
|
43
|
+
# (229, 25, 50),
|
|
44
|
+
# ]
|
|
45
|
+
|
|
46
|
+
CategoricalColor1 = [ (229, 25, 50),
|
|
47
|
+
(101, 76, 255),
|
|
48
|
+
( 50, 255, 0),
|
|
49
|
+
(255, 127, 0),
|
|
50
|
+
(255, 255, 50),
|
|
51
|
+
(255, 153, 191),
|
|
52
|
+
(25, 178, 255),
|
|
53
|
+
(178, 255, 140),
|
|
54
|
+
(255, 191, 127),
|
|
55
|
+
(204, 191, 255),
|
|
56
|
+
(165, 237, 255),
|
|
57
|
+
(255, 255, 153),
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
RedToBlue11 = [ (165, 0, 33),
|
|
61
|
+
(216, 38, 50),
|
|
62
|
+
(247, 109, 94),
|
|
63
|
+
(255, 173, 114),
|
|
64
|
+
(255, 224, 153),
|
|
65
|
+
(255, 255, 191),
|
|
66
|
+
(224, 255, 255),
|
|
67
|
+
(170, 247, 255),
|
|
68
|
+
(114, 216, 255),
|
|
69
|
+
( 63, 160, 255),
|
|
70
|
+
( 38, 76, 255),
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
BlueToDarkRed12 = [( 41, 10, 216),
|
|
74
|
+
( 38, 77, 255),
|
|
75
|
+
( 63, 160, 255),
|
|
76
|
+
(114, 217, 255),
|
|
77
|
+
(170, 247, 255),
|
|
78
|
+
(224, 255, 255),
|
|
79
|
+
(255, 255, 191),
|
|
80
|
+
(255, 224, 153),
|
|
81
|
+
(255, 173, 114),
|
|
82
|
+
(247, 109, 94),
|
|
83
|
+
(216, 38, 50),
|
|
84
|
+
(165, 0, 33),
|
|
85
|
+
]
|
|
86
|
+
|
|
87
|
+
BlueToDarkRed10 = [( 41, 10, 216),
|
|
88
|
+
( 38, 77, 255),
|
|
89
|
+
( 63, 160, 255),
|
|
90
|
+
(114, 217, 255),
|
|
91
|
+
(170, 247, 255),
|
|
92
|
+
(255, 224, 153),
|
|
93
|
+
(255, 173, 114),
|
|
94
|
+
(247, 109, 94),
|
|
95
|
+
(216, 38, 50),
|
|
96
|
+
(165, 0, 33),
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
BlueToDarkRed8 = [( 41, 10, 216),
|
|
100
|
+
( 38, 77, 255),
|
|
101
|
+
( 63, 160, 255),
|
|
102
|
+
(114, 217, 255),
|
|
103
|
+
(255, 173, 114),
|
|
104
|
+
(247, 109, 94),
|
|
105
|
+
(216, 38, 50),
|
|
106
|
+
(165, 0, 33),
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
if __name__ == "__main__":
|
|
112
|
+
import wx
|
|
113
|
+
# tiny test app
|
|
114
|
+
AllSchemes = [("CategoricalColor1", CategoricalColor1),
|
|
115
|
+
("RedToBlue11", RedToBlue11),
|
|
116
|
+
("BlueToDarkRed12", BlueToDarkRed12),
|
|
117
|
+
("BlueToDarkRed10", BlueToDarkRed10),
|
|
118
|
+
("BlueToDarkRed8", BlueToDarkRed8)
|
|
119
|
+
]
|
|
120
|
+
class TestFrame(wx.Frame):
|
|
121
|
+
def __init__(self, *args, **kwargs):
|
|
122
|
+
wx.Frame.__init__(self, *args, **kwargs)
|
|
123
|
+
Hsizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
124
|
+
for scheme in AllSchemes:
|
|
125
|
+
Sizer = wx.BoxSizer(wx.VERTICAL)
|
|
126
|
+
Sizer.Add(wx.StaticText(self, label=scheme[0]), 0, wx.ALL, 5)
|
|
127
|
+
for c in scheme[1]:
|
|
128
|
+
w = wx.Window(self, size=(100, 20))
|
|
129
|
+
w.SetBackgroundColour(wx.Colour(*c))
|
|
130
|
+
Sizer.Add(w, 0, wx.ALL, 5)
|
|
131
|
+
Hsizer.Add(Sizer, 0, wx.ALL, 5)
|
|
132
|
+
self.SetSizerAndFit(Hsizer)
|
|
133
|
+
self.Show()
|
|
134
|
+
|
|
135
|
+
A = wx.App(False)
|
|
136
|
+
F = TestFrame(None)
|
|
137
|
+
A.MainLoop()
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#----------------------------------------------------------------------------
|
|
2
|
+
# Name: GUI.py
|
|
3
|
+
# Purpose: Contains GUI related utilities for FloatCanvas
|
|
4
|
+
#
|
|
5
|
+
# Author:
|
|
6
|
+
#
|
|
7
|
+
# Created:
|
|
8
|
+
# Version:
|
|
9
|
+
# Date:
|
|
10
|
+
# Licence:
|
|
11
|
+
# Tags: phoenix-port, unittest, documented, py3-port
|
|
12
|
+
#----------------------------------------------------------------------------
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
Part of the floatcanvas.Utilities package.
|
|
16
|
+
|
|
17
|
+
This module contains assorted GUI-related utilities that can be used
|
|
18
|
+
with FloatCanvas
|
|
19
|
+
|
|
20
|
+
So far, they are:
|
|
21
|
+
|
|
22
|
+
RubberBandBox: used to draw a RubberBand Box on the screen
|
|
23
|
+
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
import numpy as np
|
|
27
|
+
|
|
28
|
+
import wx
|
|
29
|
+
from wx.lib.floatcanvas import FloatCanvas, GUIMode
|
|
30
|
+
|
|
31
|
+
class RubberBandBox(GUIMode.GUIBase):
|
|
32
|
+
"""
|
|
33
|
+
Class to provide a GUI Mode that makes a rubber band box that can be drawn on a Window
|
|
34
|
+
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(self, CallBack, Tol=5):
|
|
38
|
+
|
|
39
|
+
"""
|
|
40
|
+
Default class constructor.
|
|
41
|
+
|
|
42
|
+
:param `CallBack`: is the method you want called when the mouse is
|
|
43
|
+
released. That method will be called, passing in a rect
|
|
44
|
+
parameter, where rect is: (Point, WH) of the rect in
|
|
45
|
+
world coords.
|
|
46
|
+
:param `Tol`: The tolerance for the smallest rectangle allowed. defaults
|
|
47
|
+
to 5. In pixels
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
self.Canvas = None # this will be set when the mode is set on a Canvas
|
|
51
|
+
self.CallBack = CallBack
|
|
52
|
+
self.Tol = Tol
|
|
53
|
+
|
|
54
|
+
self.Drawing = False
|
|
55
|
+
self.RBRect = None
|
|
56
|
+
self.StartPointWorld = None
|
|
57
|
+
|
|
58
|
+
return None
|
|
59
|
+
|
|
60
|
+
def OnMove(self, event):
|
|
61
|
+
if self.Drawing:
|
|
62
|
+
x, y = self.StartPoint
|
|
63
|
+
Cornerx, Cornery = event.GetPosition()
|
|
64
|
+
w, h = ( Cornerx - x, Cornery - y)
|
|
65
|
+
if abs(w) > self.Tol and abs(h) > self.Tol:
|
|
66
|
+
# draw the RB box
|
|
67
|
+
dc = wx.ClientDC(self.Canvas)
|
|
68
|
+
dc.SetPen(wx.Pen('WHITE', 2, wx.SHORT_DASH))
|
|
69
|
+
dc.SetBrush(wx.TRANSPARENT_BRUSH)
|
|
70
|
+
dc.SetLogicalFunction(wx.XOR)
|
|
71
|
+
if self.RBRect:
|
|
72
|
+
dc.DrawRectangle(*self.RBRect)
|
|
73
|
+
self.RBRect = ((x, y), (w, h) )
|
|
74
|
+
dc.DrawRectangle(*self.RBRect)
|
|
75
|
+
self.Canvas._RaiseMouseEvent(event,FloatCanvas.EVT_FC_MOTION)
|
|
76
|
+
|
|
77
|
+
def OnLeftDown(self, event):
|
|
78
|
+
# Start drawing
|
|
79
|
+
self.Drawing = True
|
|
80
|
+
self.StartPoint = event.GetPosition()
|
|
81
|
+
|
|
82
|
+
def OnLeftUp(self, event):
|
|
83
|
+
# Stop Drawing
|
|
84
|
+
if self.Drawing:
|
|
85
|
+
self.Drawing = False
|
|
86
|
+
if self.RBRect:
|
|
87
|
+
world_rect = (self.Canvas.PixelToWorld(self.RBRect[0]),
|
|
88
|
+
self.Canvas.ScalePixelToWorld(self.RBRect[1])
|
|
89
|
+
)
|
|
90
|
+
wx.CallAfter(self.CallBack, world_rect)
|
|
91
|
+
self.RBRect = None
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#----------------------------------------------------------------------------
|
|
2
|
+
# Name: __init__.py
|
|
3
|
+
# Purpose: The FloatCanvas package
|
|
4
|
+
#
|
|
5
|
+
# Author:
|
|
6
|
+
#
|
|
7
|
+
# Created:
|
|
8
|
+
# Version:
|
|
9
|
+
# Date:
|
|
10
|
+
# Licence:
|
|
11
|
+
# Tags: phoenix-port, unittest, documented, py3-port
|
|
12
|
+
#----------------------------------------------------------------------------
|
|
13
|
+
"""
|
|
14
|
+
This is the floatcanvas package, the main classes are
|
|
15
|
+
:class:`~lib.floatcanvas.FloatCanvas` and
|
|
16
|
+
:class:`~lib.floatcanvas.NavCanvas`, in each class documentation there
|
|
17
|
+
is at least one sample on how to use them and many more samples are provided
|
|
18
|
+
in `wxPhoenix/samples` folder.
|
|
19
|
+
|
|
20
|
+
FloatCanvas.py contains the main :class:`~lib.floatcanvas.FloatCanvas`
|
|
21
|
+
class, and its supporting classes. NavCanvas.py contains the
|
|
22
|
+
:class:`~lib.floatcanvas.NavCanvas` wrapper for the FloatCanvas that
|
|
23
|
+
provides the canvas and a toolbar with tools that allow you to navigate
|
|
24
|
+
the canvas (zooming, panning, etc.) Resources.py is a module that
|
|
25
|
+
contains a few resources required by the FloatCanvas (icons, etc)
|
|
26
|
+
|
|
27
|
+
The FloatCanvas is a high level window for drawing maps and anything
|
|
28
|
+
else in an arbitrary coordinate system.
|
|
29
|
+
|
|
30
|
+
The goal is to provide a convenient way to draw stuff on the screen
|
|
31
|
+
without having to deal with handling OnPaint events, converting to pixel
|
|
32
|
+
coordinates, knowing about wxWindows brushes, pens, and colors, etc. It
|
|
33
|
+
also provides virtually unlimited zooming and scrolling
|
|
34
|
+
|
|
35
|
+
I am using it for two things:
|
|
36
|
+
|
|
37
|
+
1) general purpose drawing in floating point coordinates
|
|
38
|
+
2) displaying map data in Lat-long coordinates
|
|
39
|
+
|
|
40
|
+
If the projection is set to None, it will draw in general purpose
|
|
41
|
+
floating point coordinates. If the projection is set to 'FlatEarth', it
|
|
42
|
+
will draw a FlatEarth projection, centered on the part of the map that
|
|
43
|
+
you are viewing. You can also pass in your own projection function.
|
|
44
|
+
|
|
45
|
+
It is double buffered, so re-draws after the window is uncovered by
|
|
46
|
+
something else are very quick.
|
|
47
|
+
|
|
48
|
+
It relies on `NumPy <http://www.numpy.org/>`_, which is needed for speed
|
|
49
|
+
(maybe, I haven't profiled properly) and convenience.
|
|
50
|
+
|
|
51
|
+
Bugs and Limitations: Lots: patches, fixes welcome
|
|
52
|
+
|
|
53
|
+
For Map drawing: It ignores the fact that the world is, in fact, a
|
|
54
|
+
sphere, so it will do strange things if you are looking at stuff near
|
|
55
|
+
the poles or the date line. so far I don't have a need to do that, so I
|
|
56
|
+
havn't bothered to add any checks for that yet.
|
|
57
|
+
|
|
58
|
+
Zooming: I have set no zoom limits. What this means is that if you zoom
|
|
59
|
+
in really far, you can get integer overflows, and get weird results. It
|
|
60
|
+
doesn't seem to actually cause any problems other than weird output, at
|
|
61
|
+
least when I have run it.
|
|
62
|
+
|
|
63
|
+
Speed: I have done a couple of things to improve speed in this app. The
|
|
64
|
+
one thing I have done is used `NumPy <http://www.numpy.org/>`_ Arrays to
|
|
65
|
+
store the coordinates of the points of the objects. This allowed me to use
|
|
66
|
+
array oriented functions when doing transformations, and should provide some
|
|
67
|
+
speed improvement for objects with a lot of points (big polygons, polylines,
|
|
68
|
+
pointsets).
|
|
69
|
+
|
|
70
|
+
The real slowdown comes when you have to draw a lot of objects, because
|
|
71
|
+
you have to call the wx.DC.DrawSomething call each time. This is plenty
|
|
72
|
+
fast for tens of objects, OK for hundreds of objects, but pretty darn
|
|
73
|
+
slow for thousands of objects.
|
|
74
|
+
|
|
75
|
+
If you are zoomed in, it checks the Bounding box of an object before
|
|
76
|
+
drawing it. This makes it a great deal faster when there are a lot of
|
|
77
|
+
objects and you are zoomed in so that only a few are shown.
|
|
78
|
+
|
|
79
|
+
Mouse Events:
|
|
80
|
+
|
|
81
|
+
There are a full set of custom mouse events. They are just like the
|
|
82
|
+
regular mouse events, but include an extra attribute: Event.GetCoords(),
|
|
83
|
+
that returns the (x,y) position in world coordinates, as a length-2
|
|
84
|
+
`NumPy <http://www.numpy.org/>`_ vector of Floats.
|
|
85
|
+
|
|
86
|
+
There are also a full set of bindings to mouse events on objects, so
|
|
87
|
+
that you can specify a given function be called when an object is
|
|
88
|
+
clicked, mouse-over'd, etc.
|
|
89
|
+
|
|
90
|
+
See the Demo for what it can do, and how to use it.
|
|
91
|
+
|
|
92
|
+
Copyright: Christopher Barker
|
|
93
|
+
License: Same as the version of wxPython you are using it with.
|
|
94
|
+
|
|
95
|
+
TRAC site for some docs and updates:
|
|
96
|
+
|
|
97
|
+
http://trac.paulmcnett.com/floatcanvas
|
|
98
|
+
|
|
99
|
+
Mailing List:
|
|
100
|
+
|
|
101
|
+
http://mail.paulmcnett.com/cgi-bin/mailman/listinfo/floatcanvas
|
|
102
|
+
|
|
103
|
+
The latest code is in the main wx SVN:
|
|
104
|
+
|
|
105
|
+
For classic:
|
|
106
|
+
|
|
107
|
+
http://svn.wxwidgets.org/viewvc/wx/wxPython/3rdParty/FloatCanvas/
|
|
108
|
+
|
|
109
|
+
For Phoenix:
|
|
110
|
+
|
|
111
|
+
http://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk/wx/lib/floatcanvas
|
|
112
|
+
|
|
113
|
+
Check for updates or answers to questions, send me an email.
|
|
114
|
+
Please let me know if you're using this!!!
|
|
115
|
+
|
|
116
|
+
Contact me at:
|
|
117
|
+
|
|
118
|
+
Chris.Barker@noaa.gov
|
|
119
|
+
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
__version__ = "0.9.18"
|
|
123
|
+
|
|
124
|
+
|