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
wx/lib/checkbox.py
ADDED
|
@@ -0,0 +1,837 @@
|
|
|
1
|
+
#----------------------------------------------------------------------
|
|
2
|
+
# Name: wx.lib.checkbox
|
|
3
|
+
# Purpose: Various kinds of generic checkbox stuff, (not native controls
|
|
4
|
+
# but self-drawn.)
|
|
5
|
+
#
|
|
6
|
+
# Author: wxPython Team and wxPyWiki Contributers
|
|
7
|
+
#
|
|
8
|
+
# Created: 22-June-2020
|
|
9
|
+
# Copyright: (c) 2020 by Total Control Software
|
|
10
|
+
# Licence: wxWindows license
|
|
11
|
+
# Tags: phoenix-port, py3-port, documented
|
|
12
|
+
#----------------------------------------------------------------------
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
"""
|
|
16
|
+
This module implements various forms of generic checkboxes, meaning that
|
|
17
|
+
they are not built on native controls but are self-drawn.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Description
|
|
21
|
+
===========
|
|
22
|
+
|
|
23
|
+
This module implements various forms of generic checkboxes, meaning that
|
|
24
|
+
they are not built on native controls but are self-drawn.
|
|
25
|
+
They should act like normal checkboxes but you are able to better control how they look, etc...
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Usage
|
|
29
|
+
=====
|
|
30
|
+
|
|
31
|
+
Sample usage::
|
|
32
|
+
|
|
33
|
+
app = wx.App(redirect=False)
|
|
34
|
+
class MyFrame(wx.Frame, DefineNativeCheckBoxBitmapsMixin):
|
|
35
|
+
def __init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString,
|
|
36
|
+
pos=wx.DefaultPosition, size=wx.DefaultSize,
|
|
37
|
+
style=wx.DEFAULT_FRAME_STYLE, name='frame'):
|
|
38
|
+
wx.Frame.__init__(self, parent, id, title, pos, size, style, name)
|
|
39
|
+
## self.DefineNativeCheckBoxBitmaps()
|
|
40
|
+
## self.checkbox_bitmaps = self.GetNativeCheckBoxBitmaps()
|
|
41
|
+
cb1 = GenCheckBox(self, label="PurePython Checkbox1", pos=(10, 10))
|
|
42
|
+
cb2 = GenCheckBox(self, label="PurePython Checkbox2", pos=(10, 50))
|
|
43
|
+
cb1.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)
|
|
44
|
+
cb2.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)
|
|
45
|
+
cb2.SetForegroundColour(wx.GREEN)
|
|
46
|
+
cb2.SetBackgroundColour(wx.BLACK)
|
|
47
|
+
sizer = wx.BoxSizer()
|
|
48
|
+
sizer.Add(cb1, 0, wx.ALL, 5)
|
|
49
|
+
sizer.Add(cb2, 0, wx.ALL, 5)
|
|
50
|
+
self.SetSizer(sizer)
|
|
51
|
+
|
|
52
|
+
def OnCheckBox(self, event):
|
|
53
|
+
evtObj = event.GetEventObject()
|
|
54
|
+
print(evtObj.GetLabel(), evtObj.IsChecked())
|
|
55
|
+
|
|
56
|
+
frame = MyFrame(None, wx.ID_ANY, "Test Pure-Py Checkbox")
|
|
57
|
+
frame.Show()
|
|
58
|
+
app.MainLoop()
|
|
59
|
+
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
# Imports.---------------------------------------------------------------------
|
|
63
|
+
|
|
64
|
+
# -wxPython Imports.
|
|
65
|
+
import wx
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class GenCheckBox(wx.Control):
|
|
69
|
+
"""
|
|
70
|
+
A generic class that replicates some of the functionalities of :class:`wx.Checkbox`,
|
|
71
|
+
while being completely owner-drawn with a nice check bitmaps.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
def __init__(self, parent, id=wx.ID_ANY, label="", pos=wx.DefaultPosition,
|
|
75
|
+
size=wx.DefaultSize, style=wx.NO_BORDER, validator=wx.DefaultValidator,
|
|
76
|
+
name="GenCheckBox"):
|
|
77
|
+
"""
|
|
78
|
+
Default class constructor.
|
|
79
|
+
|
|
80
|
+
:param `parent`: Pointer to a parent window. Must not be ``None``.
|
|
81
|
+
:type `parent`: `wx.Window`
|
|
82
|
+
:param `id`: Window identifier. ``wx.ID_ANY`` indicates a default value.
|
|
83
|
+
:type `id`: int
|
|
84
|
+
:param `label`: Text to be displayed next to the checkbox.
|
|
85
|
+
:type `label`: str
|
|
86
|
+
:param `pos`: Window position. The value ``wx.DefaultPosition`` indicates
|
|
87
|
+
a default position, chosen by either the windowing system or wxWidgets, depending on platform.
|
|
88
|
+
:type `pos`: `wx.Point`
|
|
89
|
+
:param `size`: Window size. The value ``wx.DefaultSize`` indicates a default size,
|
|
90
|
+
chosen by either the windowing system or wxWidgets, depending on platform.
|
|
91
|
+
:type `size`: `wx.Size`
|
|
92
|
+
:param `style`: Window style. Not used in this widget, GenCheckBox has only 2 state.
|
|
93
|
+
:type `style`: long
|
|
94
|
+
:param `validator`: Window validator.
|
|
95
|
+
:type `validator`: `wx.Validator`
|
|
96
|
+
:param `name`: Window name.
|
|
97
|
+
:type `name`: str
|
|
98
|
+
"""
|
|
99
|
+
wx.Control.__init__(self, parent, id, pos, size, style, validator, name)
|
|
100
|
+
|
|
101
|
+
self.SYS_DEFAULT_GUI_FONT = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
|
|
102
|
+
|
|
103
|
+
# Initialize our cool bitmaps.
|
|
104
|
+
self.InitializeBitmaps()
|
|
105
|
+
|
|
106
|
+
# Initialize the focus pen colour/dashes, for faster drawing later.
|
|
107
|
+
self.InitializeColours()
|
|
108
|
+
|
|
109
|
+
# By default, we start unchecked.
|
|
110
|
+
self._checked = False
|
|
111
|
+
|
|
112
|
+
# Set the spacing between the check bitmap and the label to 3 by default.
|
|
113
|
+
# This can be changed using SetSpacing later.
|
|
114
|
+
self._spacing = 3
|
|
115
|
+
self._hasFocus = False
|
|
116
|
+
|
|
117
|
+
# Ok, set the wx.PyControl label, its initial size (formerly known an
|
|
118
|
+
# SetBestFittingSize), and inherit the attributes from the standard
|
|
119
|
+
# wx.CheckBox .
|
|
120
|
+
self.SetLabel(label)
|
|
121
|
+
self.SetInitialSize(size)
|
|
122
|
+
self.InheritAttributes()
|
|
123
|
+
|
|
124
|
+
# Bind the events related to our control: first of all, we use a
|
|
125
|
+
# combination of wx.BufferedPaintDC and an empty handler for
|
|
126
|
+
# wx.EVT_ERASE_BACKGROUND (see later) to reduce flicker.
|
|
127
|
+
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
|
128
|
+
# Since the paint event draws the whole widget, we will use
|
|
129
|
+
# SetBackgroundStyle(wx.BG_STYLE_PAINT) and then
|
|
130
|
+
# implementing an erase-background handler is not neccessary.
|
|
131
|
+
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
|
|
132
|
+
# Add a size handler to refresh so the paint wont smear when resizing.
|
|
133
|
+
self.Bind(wx.EVT_SIZE, self.OnSize)
|
|
134
|
+
|
|
135
|
+
# Then we want to monitor user clicks, so that we can switch our
|
|
136
|
+
# state between checked and unchecked.
|
|
137
|
+
self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseClick)
|
|
138
|
+
if wx.Platform == '__WXMSW__':
|
|
139
|
+
# MSW Sometimes does strange things...
|
|
140
|
+
self.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseClick)
|
|
141
|
+
|
|
142
|
+
# We want also to react to keyboard keys, namely the space bar that can
|
|
143
|
+
# toggle our checked state. Whether key-up or key-down is used is based
|
|
144
|
+
# on platform.
|
|
145
|
+
if 'wxMSW' in wx.PlatformInfo:
|
|
146
|
+
self.Bind(wx.EVT_KEY_UP, self.OnKeyEvent)
|
|
147
|
+
else:
|
|
148
|
+
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyEvent)
|
|
149
|
+
|
|
150
|
+
# Then, we react to focus event, because we want to draw a small
|
|
151
|
+
# dotted rectangle around the text if we have focus.
|
|
152
|
+
# This might be improved!!!
|
|
153
|
+
self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus)
|
|
154
|
+
self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def InitializeBitmaps(self):
|
|
158
|
+
""" Initializes the check bitmaps. """
|
|
159
|
+
|
|
160
|
+
# We keep 4 bitmaps for GenCheckBox, depending on the
|
|
161
|
+
# checking state (Checked/UnChecked) and the control
|
|
162
|
+
# state (Enabled/Disabled).
|
|
163
|
+
|
|
164
|
+
self._bitmaps = {
|
|
165
|
+
"CheckedEnable": _GetCheckedBitmap(self),
|
|
166
|
+
"UnCheckedEnable": _GetNotCheckedBitmap(self),
|
|
167
|
+
"CheckedDisable": _GetCheckedImage(self).ConvertToDisabled().ConvertToBitmap(),
|
|
168
|
+
"UnCheckedDisable": _GetNotCheckedImage(self).ConvertToDisabled().ConvertToBitmap()}
|
|
169
|
+
|
|
170
|
+
def InitializeColours(self):
|
|
171
|
+
""" Initializes the focus indicator pen. """
|
|
172
|
+
|
|
173
|
+
textClr = self.GetForegroundColour()
|
|
174
|
+
self._focusIndPen = wx.Pen(textClr, 1, wx.USER_DASH)
|
|
175
|
+
self._focusIndPen.SetDashes([1, 1])
|
|
176
|
+
self._focusIndPen.SetCap(wx.CAP_BUTT)
|
|
177
|
+
self.SYS_COLOUR_GRAYTEXT = wx.SystemSettings.GetColour(wx.SYS_COLOUR_GRAYTEXT)
|
|
178
|
+
|
|
179
|
+
def GetBitmap(self):
|
|
180
|
+
"""
|
|
181
|
+
Returns the appropriated bitmap depending on the checking state
|
|
182
|
+
(Checked/UnChecked) and the control state (Enabled/Disabled).
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
if self.IsEnabled():
|
|
186
|
+
# So we are Enabled.
|
|
187
|
+
if self.IsChecked():
|
|
188
|
+
# We are Checked.
|
|
189
|
+
return self._bitmaps["CheckedEnable"]
|
|
190
|
+
else:
|
|
191
|
+
# We are UnChecked.
|
|
192
|
+
return self._bitmaps["UnCheckedEnable"]
|
|
193
|
+
else:
|
|
194
|
+
# Poor GenCheckBox, Disabled and ignored!
|
|
195
|
+
if self.IsChecked():
|
|
196
|
+
return self._bitmaps["CheckedDisable"]
|
|
197
|
+
else:
|
|
198
|
+
return self._bitmaps["UnCheckedDisable"]
|
|
199
|
+
|
|
200
|
+
def SetLabel(self, label):
|
|
201
|
+
"""
|
|
202
|
+
Sets the :class:`GenCheckBox` text label and updates the control's
|
|
203
|
+
size to exactly fit the label plus the bitmap.
|
|
204
|
+
|
|
205
|
+
:param `label`: Text to be displayed next to the checkbox.
|
|
206
|
+
:type `label`: str
|
|
207
|
+
"""
|
|
208
|
+
|
|
209
|
+
wx.Control.SetLabel(self, label)
|
|
210
|
+
|
|
211
|
+
# The text label has changed, so we must recalculate our best size
|
|
212
|
+
# and refresh ourselves.
|
|
213
|
+
self.InvalidateBestSize()
|
|
214
|
+
self.Refresh()
|
|
215
|
+
|
|
216
|
+
def SetFont(self, font):
|
|
217
|
+
"""
|
|
218
|
+
Sets the :class:`GenCheckBox` text font and updates the control's
|
|
219
|
+
size to exactly fit the label plus the bitmap.
|
|
220
|
+
|
|
221
|
+
:param `font`: Font to be used to render the checkboxs label.
|
|
222
|
+
:type `font`: `wx.Font`
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
wx.Control.SetFont(self, font)
|
|
226
|
+
|
|
227
|
+
# The font for text label has changed, so we must recalculate our best
|
|
228
|
+
# size and refresh ourselves.
|
|
229
|
+
self.InvalidateBestSize()
|
|
230
|
+
self.Refresh()
|
|
231
|
+
|
|
232
|
+
def DoGetBestSize(self):
|
|
233
|
+
"""
|
|
234
|
+
Overridden base class virtual. Determines the best size of the control
|
|
235
|
+
based on the label size, the bitmap size and the current font.
|
|
236
|
+
"""
|
|
237
|
+
|
|
238
|
+
# Retrieve our properties: the text label, the font and the check
|
|
239
|
+
# bitmap.
|
|
240
|
+
label = self.GetLabel()
|
|
241
|
+
font = self.GetFont()
|
|
242
|
+
bitmap = self.GetBitmap()
|
|
243
|
+
|
|
244
|
+
if not font:
|
|
245
|
+
# No font defined? So use the default GUI font provided by the system.
|
|
246
|
+
font = self.SYS_DEFAULT_GUI_FONT
|
|
247
|
+
|
|
248
|
+
# Set up a wx.ClientDC. When you don't have a dc available (almost
|
|
249
|
+
# always you don't have it if you are not inside a wx.EVT_PAINT event),
|
|
250
|
+
# use a wx.ClientDC (or a wx.MemoryDC) to measure text extents.
|
|
251
|
+
dc = wx.ClientDC(self)
|
|
252
|
+
dc.SetFont(font)
|
|
253
|
+
|
|
254
|
+
# Measure our label.
|
|
255
|
+
textWidth, textHeight = dc.GetTextExtent(label)
|
|
256
|
+
|
|
257
|
+
# Retrieve the check bitmap dimensions.
|
|
258
|
+
bitmapWidth, bitmapHeight = bitmap.GetWidth(), bitmap.GetHeight()
|
|
259
|
+
|
|
260
|
+
# Get the spacing between the check bitmap and the text.
|
|
261
|
+
spacing = self.GetSpacing()
|
|
262
|
+
|
|
263
|
+
# Ok, we're almost done: the total width of the control is simply
|
|
264
|
+
# the sum of the bitmap width, the spacing and the text width,
|
|
265
|
+
# while the height is the maximum value between the text width and
|
|
266
|
+
# the bitmap width.
|
|
267
|
+
totalWidth = bitmapWidth + spacing + textWidth
|
|
268
|
+
totalHeight = max(textHeight, bitmapHeight)
|
|
269
|
+
|
|
270
|
+
best = wx.Size(totalWidth, totalHeight)
|
|
271
|
+
|
|
272
|
+
# Cache the best size so it doesn't need to be calculated again,
|
|
273
|
+
# at least until some properties of the window change.
|
|
274
|
+
self.CacheBestSize(best)
|
|
275
|
+
|
|
276
|
+
return best
|
|
277
|
+
|
|
278
|
+
def AcceptsFocusFromKeyboard(self):
|
|
279
|
+
""" Overridden base class virtual. """
|
|
280
|
+
|
|
281
|
+
# We can accept focus from keyboard, obviously.
|
|
282
|
+
return True
|
|
283
|
+
|
|
284
|
+
def AcceptsFocus(self):
|
|
285
|
+
""" Overridden base class virtual. """
|
|
286
|
+
|
|
287
|
+
# If it seems that wx.CheckBox does not accept focus with mouse, It does.
|
|
288
|
+
# You just can't see the focus rectangle until there's
|
|
289
|
+
# another keypress or navigation event (at least on some platforms.)
|
|
290
|
+
return True # This will draw focus rectangle always on mouse click.
|
|
291
|
+
|
|
292
|
+
def HasFocus(self):
|
|
293
|
+
""" Returns whether or not we have the focus. """
|
|
294
|
+
|
|
295
|
+
# We just returns the _hasFocus property that has been set in the
|
|
296
|
+
# wx.EVT_SET_FOCUS and wx.EVT_KILL_FOCUS event handlers.
|
|
297
|
+
return self._hasFocus
|
|
298
|
+
|
|
299
|
+
def SetForegroundColour(self, colour):
|
|
300
|
+
"""
|
|
301
|
+
Overridden base class virtual.
|
|
302
|
+
|
|
303
|
+
:param `colour`: Set the foreground colour of the checkboxs label.
|
|
304
|
+
:type `colour`: `wx.Colour`
|
|
305
|
+
"""
|
|
306
|
+
|
|
307
|
+
wx.Control.SetForegroundColour(self, colour)
|
|
308
|
+
|
|
309
|
+
# We have to re-initialize the focus indicator per colour as it should
|
|
310
|
+
# always be the same as the foreground colour.
|
|
311
|
+
self.InitializeColours()
|
|
312
|
+
self.Refresh()
|
|
313
|
+
|
|
314
|
+
def SetBackgroundColour(self, colour):
|
|
315
|
+
"""
|
|
316
|
+
Overridden base class virtual.
|
|
317
|
+
|
|
318
|
+
:param `colour`: Set the background colour of the checkbox.
|
|
319
|
+
:type `colour`: `wx.Colour`
|
|
320
|
+
"""
|
|
321
|
+
|
|
322
|
+
wx.Control.SetBackgroundColour(self, colour)
|
|
323
|
+
|
|
324
|
+
# We have to refresh ourselves.
|
|
325
|
+
self.Refresh()
|
|
326
|
+
|
|
327
|
+
def Enable(self, enable=True):
|
|
328
|
+
"""
|
|
329
|
+
Enables/Disables :class:`GenCheckBox`.
|
|
330
|
+
|
|
331
|
+
:param `enable`: Set the enabled state of the checkbox.
|
|
332
|
+
:type `enable`: bool
|
|
333
|
+
"""
|
|
334
|
+
|
|
335
|
+
wx.Control.Enable(self, enable)
|
|
336
|
+
|
|
337
|
+
# We have to refresh ourselves, as our state changed.
|
|
338
|
+
self.Refresh()
|
|
339
|
+
|
|
340
|
+
def GetDefaultAttributes(self):
|
|
341
|
+
"""
|
|
342
|
+
Overridden base class virtual. By default we should use
|
|
343
|
+
the same font/colour attributes as the native wx.CheckBox.
|
|
344
|
+
"""
|
|
345
|
+
|
|
346
|
+
return wx.CheckBox.GetClassDefaultAttributes()
|
|
347
|
+
|
|
348
|
+
def ShouldInheritColours(self):
|
|
349
|
+
"""
|
|
350
|
+
Overridden base class virtual. If the parent has non-default
|
|
351
|
+
colours then we want this control to inherit them.
|
|
352
|
+
"""
|
|
353
|
+
|
|
354
|
+
return True
|
|
355
|
+
|
|
356
|
+
def SetSpacing(self, spacing):
|
|
357
|
+
"""
|
|
358
|
+
Sets a new spacing between the check bitmap and the text.
|
|
359
|
+
|
|
360
|
+
:param `spacing`: Set the amount of space between the checkboxs bitmap and text.
|
|
361
|
+
:type `spacing`: int
|
|
362
|
+
"""
|
|
363
|
+
|
|
364
|
+
self._spacing = spacing
|
|
365
|
+
|
|
366
|
+
# The spacing between the check bitmap and the text has changed,
|
|
367
|
+
# so we must recalculate our best size and refresh ourselves.
|
|
368
|
+
self.InvalidateBestSize()
|
|
369
|
+
self.Refresh()
|
|
370
|
+
|
|
371
|
+
def GetSpacing(self):
|
|
372
|
+
""" Returns the spacing between the check bitmap and the text. """
|
|
373
|
+
|
|
374
|
+
return self._spacing
|
|
375
|
+
|
|
376
|
+
def GetValue(self):
|
|
377
|
+
"""
|
|
378
|
+
Returns the state of :class:`GenCheckBox`, True if checked, False
|
|
379
|
+
otherwise.
|
|
380
|
+
"""
|
|
381
|
+
|
|
382
|
+
return self._checked
|
|
383
|
+
|
|
384
|
+
def IsChecked(self):
|
|
385
|
+
"""
|
|
386
|
+
This is just a maybe more readable synonym for GetValue: just as the
|
|
387
|
+
latter, it returns True if the :class:`GenCheckBox` is checked and False
|
|
388
|
+
otherwise.
|
|
389
|
+
"""
|
|
390
|
+
|
|
391
|
+
return self._checked
|
|
392
|
+
|
|
393
|
+
def SetValue(self, state):
|
|
394
|
+
"""
|
|
395
|
+
Sets the :class:`GenCheckBox` to the given state. This does not cause a
|
|
396
|
+
``wx.wxEVT_COMMAND_CHECKBOX_CLICKED`` event to get emitted.
|
|
397
|
+
|
|
398
|
+
:param `state`: Set the value of the checkbox. True or False.
|
|
399
|
+
:type `state`: bool
|
|
400
|
+
"""
|
|
401
|
+
|
|
402
|
+
self._checked = state
|
|
403
|
+
|
|
404
|
+
# Refresh ourselves: the bitmap has changed.
|
|
405
|
+
self.Refresh()
|
|
406
|
+
|
|
407
|
+
def OnKeyEvent(self, event):
|
|
408
|
+
"""
|
|
409
|
+
Handles the ``wx.EVT_KEY_UP`` or ``wx.EVT_KEY_UP`` event (depending on
|
|
410
|
+
platform) for :class:`GenCheckBox`.
|
|
411
|
+
|
|
412
|
+
:param `event`: A `wx.KeyEvent` to be processed.
|
|
413
|
+
:type `event`: `wx.KeyEvent`
|
|
414
|
+
"""
|
|
415
|
+
|
|
416
|
+
if event.GetKeyCode() == wx.WXK_SPACE:
|
|
417
|
+
# The spacebar has been pressed: toggle our state.
|
|
418
|
+
self.SendCheckBoxEvent()
|
|
419
|
+
else:
|
|
420
|
+
event.Skip()
|
|
421
|
+
|
|
422
|
+
def OnSetFocus(self, event):
|
|
423
|
+
"""
|
|
424
|
+
Handles the ``wx.EVT_SET_FOCUS`` event for :class:`GenCheckBox`.
|
|
425
|
+
|
|
426
|
+
:param `event`: A `wx.FocusEvent` to be processed.
|
|
427
|
+
:type `event`: `wx.FocusEvent`
|
|
428
|
+
"""
|
|
429
|
+
|
|
430
|
+
self._hasFocus = True
|
|
431
|
+
|
|
432
|
+
# We got focus, and we want a dotted rectangle to be painted
|
|
433
|
+
# around the checkbox label, so we refresh ourselves.
|
|
434
|
+
self.Refresh()
|
|
435
|
+
|
|
436
|
+
def OnKillFocus(self, event):
|
|
437
|
+
"""
|
|
438
|
+
Handles the ``wx.EVT_KILL_FOCUS`` event for :class:`GenCheckBox`.
|
|
439
|
+
|
|
440
|
+
:param `event`: A `wx.FocusEvent` to be processed.
|
|
441
|
+
:type `event`: `wx.FocusEvent`
|
|
442
|
+
"""
|
|
443
|
+
|
|
444
|
+
self._hasFocus = False
|
|
445
|
+
|
|
446
|
+
# We lost focus, and we want a dotted rectangle to be cleared
|
|
447
|
+
# around the checkbox label, so we refresh ourselves.
|
|
448
|
+
self.Refresh()
|
|
449
|
+
|
|
450
|
+
def OnSize(self, event):
|
|
451
|
+
"""
|
|
452
|
+
Handles the ``wx.EVT_SIZE`` event for :class:`GenCheckBox`.
|
|
453
|
+
|
|
454
|
+
:param `event`: A `wx.SizeEvent` to be processed.
|
|
455
|
+
:type `event`: `wx.SizeEvent`
|
|
456
|
+
"""
|
|
457
|
+
self.Refresh()
|
|
458
|
+
|
|
459
|
+
def OnPaint(self, event):
|
|
460
|
+
"""
|
|
461
|
+
Handles the ``wx.EVT_PAINT`` event for :class:`GenCheckBox`.
|
|
462
|
+
|
|
463
|
+
:param `event`: A `wx.PaintEvent` to be processed.
|
|
464
|
+
:type `event`: `wx.PaintEvent`
|
|
465
|
+
"""
|
|
466
|
+
|
|
467
|
+
# If you want to reduce flicker, a good starting point is to
|
|
468
|
+
# use wx.BufferedPaintDC .
|
|
469
|
+
# wx.AutoBufferedPaintDC would be marginally better.
|
|
470
|
+
dc = wx.AutoBufferedPaintDC(self)
|
|
471
|
+
|
|
472
|
+
# Is is advisable that you don't overcrowd the OnPaint event
|
|
473
|
+
# (or any other event) with a lot of code, so let's do the
|
|
474
|
+
# actual drawing in the Draw() method, passing the newly
|
|
475
|
+
# initialized wx.AutoBufferedPaintDC .
|
|
476
|
+
self.Draw(dc)
|
|
477
|
+
|
|
478
|
+
def Draw(self, dc):
|
|
479
|
+
"""
|
|
480
|
+
Actually performs the drawing operations, for the bitmap and
|
|
481
|
+
for the text, positioning them centered vertically.
|
|
482
|
+
|
|
483
|
+
:param `dc`: device context to use.
|
|
484
|
+
:type `dc`: `wx.DC`
|
|
485
|
+
"""
|
|
486
|
+
|
|
487
|
+
# Get the actual client size of ourselves.
|
|
488
|
+
width, height = self.GetClientSize()
|
|
489
|
+
|
|
490
|
+
if not width or not height:
|
|
491
|
+
# Nothing to do, we still don't have dimensions!
|
|
492
|
+
return
|
|
493
|
+
|
|
494
|
+
# Initialize the wx.BufferedPaintDC, assigning a background
|
|
495
|
+
# colour and a foreground colour (to draw the text).
|
|
496
|
+
backColour = self.GetBackgroundColour()
|
|
497
|
+
backBrush = wx.Brush(backColour, wx.SOLID)
|
|
498
|
+
dc.SetBackground(backBrush)
|
|
499
|
+
dc.Clear()
|
|
500
|
+
|
|
501
|
+
if self.IsEnabled():
|
|
502
|
+
dc.SetTextForeground(self.GetForegroundColour())
|
|
503
|
+
else:
|
|
504
|
+
dc.SetTextForeground(self.SYS_COLOUR_GRAYTEXT)
|
|
505
|
+
|
|
506
|
+
dc.SetFont(self.GetFont())
|
|
507
|
+
|
|
508
|
+
# Get the text label for the checkbox, the associated check bitmap
|
|
509
|
+
# and the spacing between the check bitmap and the text.
|
|
510
|
+
label = self.GetLabel()
|
|
511
|
+
bitmap = self.GetBitmap()
|
|
512
|
+
spacing = self.GetSpacing()
|
|
513
|
+
|
|
514
|
+
# Measure the text extent and get the check bitmap dimensions.
|
|
515
|
+
textWidth, textHeight = dc.GetTextExtent(label)
|
|
516
|
+
bitmapWidth, bitmapHeight = bitmap.GetWidth(), bitmap.GetHeight()
|
|
517
|
+
|
|
518
|
+
# Position the bitmap centered vertically.
|
|
519
|
+
bitmapXpos = 0
|
|
520
|
+
bitmapYpos = (height - bitmapHeight) // 2
|
|
521
|
+
|
|
522
|
+
# Position the text centered vertically.
|
|
523
|
+
textXpos = bitmapWidth + spacing
|
|
524
|
+
textYpos = (height - textHeight) // 2
|
|
525
|
+
|
|
526
|
+
# Draw the bitmap on the DC.
|
|
527
|
+
try:
|
|
528
|
+
dc.DrawBitmap(bitmap, bitmapXpos, bitmapYpos, True)
|
|
529
|
+
except Exception as exc: # bitmap might be image and need converted. Ex: if disabled.
|
|
530
|
+
dc.DrawBitmap(bitmap.ConvertToBitmap(), bitmapXpos, bitmapYpos, True)
|
|
531
|
+
|
|
532
|
+
# Draw the text
|
|
533
|
+
dc.DrawText(label, textXpos, textYpos)
|
|
534
|
+
|
|
535
|
+
# Let's see if we have keyboard focus and, if this is the case,
|
|
536
|
+
# we draw a dotted rectangle around the text (Windows behavior,
|
|
537
|
+
# I don't know on other platforms...).
|
|
538
|
+
if self.HasFocus():
|
|
539
|
+
# Yes, we are focused! So, now, use a transparent brush with
|
|
540
|
+
# a dotted black pen to draw a rectangle around the text.
|
|
541
|
+
dc.SetBrush(wx.TRANSPARENT_BRUSH)
|
|
542
|
+
dc.SetPen(self._focusIndPen)
|
|
543
|
+
dc.DrawRectangle(textXpos, textYpos, textWidth, textHeight)
|
|
544
|
+
|
|
545
|
+
def OnMouseClick(self, event):
|
|
546
|
+
"""
|
|
547
|
+
Handles the ``wx.EVT_LEFT_DOWN`` event for :class:`GenCheckBox`.
|
|
548
|
+
|
|
549
|
+
:param `event`: A `wx.MouseEvent` to be processed.
|
|
550
|
+
:type `event`: `wx.MouseEvent`
|
|
551
|
+
"""
|
|
552
|
+
|
|
553
|
+
if not self.IsEnabled():
|
|
554
|
+
# Nothing to do, we are disabled.
|
|
555
|
+
return
|
|
556
|
+
|
|
557
|
+
self.SendCheckBoxEvent()
|
|
558
|
+
event.Skip()
|
|
559
|
+
|
|
560
|
+
def SendCheckBoxEvent(self):
|
|
561
|
+
""" Actually sends the wx.wxEVT_COMMAND_CHECKBOX_CLICKED event. """
|
|
562
|
+
|
|
563
|
+
# This part of the code may be reduced to a 3-liner code
|
|
564
|
+
# but it is kept for better understanding the event handling.
|
|
565
|
+
# If you can, however, avoid code duplication; in this case,
|
|
566
|
+
# I could have done:
|
|
567
|
+
#
|
|
568
|
+
# self._checked = not self.IsChecked()
|
|
569
|
+
# checkEvent = wx.CommandEvent(wx.wxEVT_COMMAND_CHECKBOX_CLICKED,
|
|
570
|
+
# self.GetId())
|
|
571
|
+
# checkEvent.SetInt(int(self._checked))
|
|
572
|
+
if self.IsChecked():
|
|
573
|
+
|
|
574
|
+
# We were checked, so we should become unchecked.
|
|
575
|
+
self._checked = False
|
|
576
|
+
|
|
577
|
+
# Fire a wx.CommandEvent: this generates a
|
|
578
|
+
# wx.wxEVT_COMMAND_CHECKBOX_CLICKED event that can be caught by the
|
|
579
|
+
# developer by doing something like:
|
|
580
|
+
# MyCheckBox.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)
|
|
581
|
+
checkEvent = wx.CommandEvent(wx.wxEVT_COMMAND_CHECKBOX_CLICKED,
|
|
582
|
+
self.GetId())
|
|
583
|
+
|
|
584
|
+
# Set the integer event value to 0 (we are switching to unchecked state).
|
|
585
|
+
checkEvent.SetInt(0)
|
|
586
|
+
|
|
587
|
+
else:
|
|
588
|
+
|
|
589
|
+
# We were unchecked, so we should become checked.
|
|
590
|
+
self._checked = True
|
|
591
|
+
|
|
592
|
+
checkEvent = wx.CommandEvent(wx.wxEVT_COMMAND_CHECKBOX_CLICKED,
|
|
593
|
+
self.GetId())
|
|
594
|
+
|
|
595
|
+
# Set the integer event value to 1 (we are switching to checked state).
|
|
596
|
+
checkEvent.SetInt(1)
|
|
597
|
+
|
|
598
|
+
# Set the originating object for the event (ourselves).
|
|
599
|
+
checkEvent.SetEventObject(self)
|
|
600
|
+
|
|
601
|
+
# Watch for a possible listener of this event that will catch it and
|
|
602
|
+
# eventually process it.
|
|
603
|
+
self.GetEventHandler().ProcessEvent(checkEvent)
|
|
604
|
+
|
|
605
|
+
# Refresh ourselves: the bitmap has changed.
|
|
606
|
+
self.Refresh()
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
# -----------------------------------------------------------------------------
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
class DefineNativeCheckBoxBitmapsMixin():
|
|
613
|
+
"""
|
|
614
|
+
Inherit this mixin in your :class:`wx.Window` based subclass to easily
|
|
615
|
+
define the native CheckBox Bitmaps as attributes which can then be used
|
|
616
|
+
to customize a widgets appearance/functionality with.
|
|
617
|
+
|
|
618
|
+
Sample example usage::
|
|
619
|
+
|
|
620
|
+
class MyCheckListBoxSTC(wx.stc.StyledTextCtrl, DefineNativeCheckBoxBitmapsMixin):
|
|
621
|
+
'''Customized StyledTextCtrl Setup like a CheckListBox.'''
|
|
622
|
+
def __init__(self, parent, id=wx.ID_ANY,
|
|
623
|
+
pos=wx.DefaultPosition, size=wx.DefaultSize,
|
|
624
|
+
style=0, name='styledtextctrl'):
|
|
625
|
+
wx.stc.StyledTextCtrl.__init__(self, parent, id, pos, size, style, name)
|
|
626
|
+
|
|
627
|
+
# Define the checkbox bitmaps as attributes.
|
|
628
|
+
self.DefineNativeCheckBoxBitmaps()
|
|
629
|
+
# After the bitmaps have become attributes you can easily snag
|
|
630
|
+
# them all later on from inside a method with this inherited method.
|
|
631
|
+
## self.checkbox_bitmaps = self.GetNativeCheckBoxBitmaps()
|
|
632
|
+
|
|
633
|
+
# Setup a margin to hold bookmarks.
|
|
634
|
+
self.SetMarginType(1, wx.stc.STC_MARGIN_SYMBOL)
|
|
635
|
+
self.SetMarginSensitive(1, True)
|
|
636
|
+
self.SetMarginWidth(1, 16)
|
|
637
|
+
# Define the bookmark images.
|
|
638
|
+
self.MarkerDefineBitmap(0, self.native_checkbox_unchecked_bmp)
|
|
639
|
+
self.MarkerDefineBitmap(1, self.native_checkbox_checked_bmp)
|
|
640
|
+
|
|
641
|
+
# ... do something with the bitmaps when you click the margin event.
|
|
642
|
+
|
|
643
|
+
"""
|
|
644
|
+
def DefineNativeCheckBoxBitmaps(self):
|
|
645
|
+
"""
|
|
646
|
+
Define native checkbox bitmaps as attributes. Returns True if all bitmaps was defined Ok.
|
|
647
|
+
|
|
648
|
+
bitmaps defined::
|
|
649
|
+
|
|
650
|
+
self.native_checkbox_unchecked_bmp
|
|
651
|
+
self.native_checkbox_unchecked_disabled_bmp
|
|
652
|
+
self.native_checkbox_checked_bmp
|
|
653
|
+
self.native_checkbox_checked_disabled_bmp
|
|
654
|
+
self.native_checkbox_3state_bmp
|
|
655
|
+
self.native_checkbox_3state_disabled_bmp
|
|
656
|
+
self.native_checkbox_current_bmp
|
|
657
|
+
self.native_checkbox_pressed_bmp
|
|
658
|
+
|
|
659
|
+
:rtype: bool
|
|
660
|
+
"""
|
|
661
|
+
render = wx.RendererNative.Get()
|
|
662
|
+
cbX, cbY = render.GetCheckBoxSize(self)
|
|
663
|
+
bmp = wx.Bitmap(cbX, cbY)
|
|
664
|
+
dc = wx.MemoryDC(bmp)
|
|
665
|
+
DrawCheckBox = render.DrawCheckBox
|
|
666
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_ISDEFAULT)
|
|
667
|
+
self.native_checkbox_unchecked_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
668
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_ISDEFAULT | wx.CONTROL_DISABLED)
|
|
669
|
+
self.native_checkbox_unchecked_disabled_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
670
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_CHECKED)
|
|
671
|
+
self.native_checkbox_checked_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
672
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_CHECKED | wx.CONTROL_DISABLED)
|
|
673
|
+
self.native_checkbox_checked_disabled_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
674
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_CHECKABLE)
|
|
675
|
+
self.native_checkbox_3state_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
676
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_CHECKABLE | wx.CONTROL_DISABLED)
|
|
677
|
+
self.native_checkbox_3state_disabled_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
678
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_CURRENT)
|
|
679
|
+
self.native_checkbox_current_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
680
|
+
DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_PRESSED)
|
|
681
|
+
self.native_checkbox_pressed_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
682
|
+
if (self.native_checkbox_unchecked_bmp.IsOk() and
|
|
683
|
+
self.native_checkbox_unchecked_disabled_bmp.IsOk() and
|
|
684
|
+
self.native_checkbox_checked_bmp.IsOk() and
|
|
685
|
+
self.native_checkbox_checked_disabled_bmp.IsOk() and
|
|
686
|
+
self.native_checkbox_3state_bmp.IsOk() and
|
|
687
|
+
self.native_checkbox_3state_disabled_bmp.IsOk() and
|
|
688
|
+
self.native_checkbox_current_bmp.IsOk() and
|
|
689
|
+
self.native_checkbox_pressed_bmp.IsOk()
|
|
690
|
+
):
|
|
691
|
+
return True
|
|
692
|
+
return False
|
|
693
|
+
|
|
694
|
+
def GetNativeCheckBoxBitmaps(self):
|
|
695
|
+
"""
|
|
696
|
+
Get a tuple of the defined checkbox bitmaps.
|
|
697
|
+
|
|
698
|
+
:rtype: tuple
|
|
699
|
+
"""
|
|
700
|
+
return (self.native_checkbox_unchecked_bmp,
|
|
701
|
+
self.native_checkbox_unchecked_disabled_bmp,
|
|
702
|
+
self.native_checkbox_checked_bmp,
|
|
703
|
+
self.native_checkbox_checked_disabled_bmp,
|
|
704
|
+
self.native_checkbox_3state_bmp,
|
|
705
|
+
self.native_checkbox_3state_disabled_bmp,
|
|
706
|
+
self.native_checkbox_current_bmp,
|
|
707
|
+
self.native_checkbox_pressed_bmp,
|
|
708
|
+
)
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
# -----------------------------------------------------------------------------
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
def _GetCheckedBitmap(self):
|
|
715
|
+
"""
|
|
716
|
+
Get a native checkbox(Checked) bitmap.
|
|
717
|
+
|
|
718
|
+
:rtype: `wx.Bitmap`
|
|
719
|
+
"""
|
|
720
|
+
render = wx.RendererNative.Get()
|
|
721
|
+
cbX, cbY = render.GetCheckBoxSize(self)
|
|
722
|
+
bmp = wx.Bitmap(cbX, cbY)
|
|
723
|
+
dc = wx.MemoryDC(bmp)
|
|
724
|
+
render.DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_CHECKED)
|
|
725
|
+
native_checkbox_checked_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
726
|
+
return native_checkbox_checked_bmp
|
|
727
|
+
|
|
728
|
+
def _GetCheckedImage(self):
|
|
729
|
+
"""
|
|
730
|
+
Get a native checkbox(Checked) image.
|
|
731
|
+
|
|
732
|
+
:rtype: `wx.Image`
|
|
733
|
+
"""
|
|
734
|
+
return _GetCheckedBitmap(self).ConvertToImage()
|
|
735
|
+
|
|
736
|
+
def _GetNotCheckedBitmap(self):
|
|
737
|
+
"""
|
|
738
|
+
Get a native checkbox(Unchecked) bitmap.
|
|
739
|
+
|
|
740
|
+
:rtype: `wx.Bitmap`
|
|
741
|
+
"""
|
|
742
|
+
render = wx.RendererNative.Get()
|
|
743
|
+
cbX, cbY = render.GetCheckBoxSize(self)
|
|
744
|
+
bmp = wx.Bitmap(cbX, cbY)
|
|
745
|
+
dc = wx.MemoryDC(bmp)
|
|
746
|
+
render.DrawCheckBox(self, dc, (0, 0, cbX, cbY), wx.CONTROL_ISDEFAULT)
|
|
747
|
+
native_checkbox_unchecked_bmp = dc.GetAsBitmap((0, 0, cbX, cbY))
|
|
748
|
+
return native_checkbox_unchecked_bmp
|
|
749
|
+
|
|
750
|
+
def _GetNotCheckedImage(self):
|
|
751
|
+
"""
|
|
752
|
+
Get a native checkbox(Unchecked) image.
|
|
753
|
+
|
|
754
|
+
:rtype: `wx.Image`
|
|
755
|
+
"""
|
|
756
|
+
return _GetNotCheckedBitmap(self).ConvertToImage()
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
# -----------------------------------------------------------------------------
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
def _GrayOut(anImage):
|
|
763
|
+
"""
|
|
764
|
+
Convert the given image (in place) to a grayed-out version,
|
|
765
|
+
appropriate for a 'disabled' appearance.
|
|
766
|
+
|
|
767
|
+
:param `anImage`: A `wx.Image` to gray out.
|
|
768
|
+
:type `anImage`: `wx.Image`
|
|
769
|
+
:rtype: `wx.Bitmap`
|
|
770
|
+
"""
|
|
771
|
+
|
|
772
|
+
factor = 0.7 # 0 < f < 1. Higher Is Grayer
|
|
773
|
+
|
|
774
|
+
if anImage.HasMask():
|
|
775
|
+
maskColor = (anImage.GetMaskRed(), anImage.GetMaskGreen(), anImage.GetMaskBlue())
|
|
776
|
+
else:
|
|
777
|
+
maskColor = None
|
|
778
|
+
|
|
779
|
+
data = map(ord, list(anImage.GetData()))
|
|
780
|
+
|
|
781
|
+
for i in range(0, len(data), 3):
|
|
782
|
+
pixel = (data[i], data[i + 1], data[i + 2])
|
|
783
|
+
pixel = _MakeGray(pixel, factor, maskColor)
|
|
784
|
+
|
|
785
|
+
for x in range(3):
|
|
786
|
+
data[i + x] = pixel[x]
|
|
787
|
+
|
|
788
|
+
anImage.SetData(''.join(map(chr, data)))
|
|
789
|
+
|
|
790
|
+
return anImage.ConvertToBitmap()
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
def _MakeGray(rgbTuple, factor, maskColor):
|
|
794
|
+
"""
|
|
795
|
+
Make a pixel grayed-out. If the pixel matches the maskcolor, it won't be
|
|
796
|
+
changed.
|
|
797
|
+
|
|
798
|
+
:type `rgbTuple`: red, green, blue 3-tuple
|
|
799
|
+
:type `factor`: float
|
|
800
|
+
:type `maskColor`: red, green, blue 3-tuple
|
|
801
|
+
"""
|
|
802
|
+
r, g, b = rgbTuple
|
|
803
|
+
if (r, g, b) != maskColor:
|
|
804
|
+
return map(lambda x: int((230 - x) * factor) + x, (r, g, b))
|
|
805
|
+
else:
|
|
806
|
+
return (r, g, b)
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
if __name__ == '__main__':
|
|
810
|
+
# Small sample program to test.
|
|
811
|
+
app = wx.App(redirect=False)
|
|
812
|
+
class MyFrame(wx.Frame, DefineNativeCheckBoxBitmapsMixin):
|
|
813
|
+
def __init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString,
|
|
814
|
+
pos=wx.DefaultPosition, size=wx.DefaultSize,
|
|
815
|
+
style=wx.DEFAULT_FRAME_STYLE, name='frame'):
|
|
816
|
+
wx.Frame.__init__(self, parent, id, title, pos, size, style, name)
|
|
817
|
+
## self.DefineNativeCheckBoxBitmaps()
|
|
818
|
+
## self.checkbox_bitmaps = self.GetNativeCheckBoxBitmaps()
|
|
819
|
+
cb1 = GenCheckBox(self, label="PurePython Checkbox1", pos=(10, 10))
|
|
820
|
+
cb2 = GenCheckBox(self, label="PurePython Checkbox2", pos=(10, 50))
|
|
821
|
+
cb1.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)
|
|
822
|
+
cb2.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)
|
|
823
|
+
cb2.SetForegroundColour(wx.GREEN)
|
|
824
|
+
cb2.SetBackgroundColour(wx.BLACK)
|
|
825
|
+
sizer = wx.BoxSizer()
|
|
826
|
+
sizer.Add(cb1, 0, wx.ALL, 5)
|
|
827
|
+
sizer.Add(cb2, 0, wx.ALL, 5)
|
|
828
|
+
self.SetSizer(sizer)
|
|
829
|
+
|
|
830
|
+
def OnCheckBox(self, event):
|
|
831
|
+
evtObj = event.GetEventObject()
|
|
832
|
+
print(evtObj.GetLabel(), evtObj.IsChecked())
|
|
833
|
+
|
|
834
|
+
frame = MyFrame(None, wx.ID_ANY, "Test Pure-Py Checkbox")
|
|
835
|
+
frame.Show()
|
|
836
|
+
app.MainLoop()
|
|
837
|
+
|