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,1198 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#----------------------------------------------------------------------------
|
|
3
|
+
# Name: dockart.py
|
|
4
|
+
# Purpose:
|
|
5
|
+
#
|
|
6
|
+
# Author: Andrea Gavana <andrea.gavana@gmail.com>
|
|
7
|
+
#
|
|
8
|
+
# Created:
|
|
9
|
+
# Version:
|
|
10
|
+
# Date: 31 March 2009
|
|
11
|
+
# Licence: wxWindows license
|
|
12
|
+
# Tags: phoenix-port, unittest, documented, py3-port
|
|
13
|
+
#----------------------------------------------------------------------------
|
|
14
|
+
"""
|
|
15
|
+
Dock art provider code - a dock provider provides all drawing functionality to
|
|
16
|
+
the AUI dock manager. This allows the dock manager to have a plugable look-and-feel.
|
|
17
|
+
|
|
18
|
+
By default, a :class:`~wx.lib.agw.aui.framemanager` uses an instance of this class called :mod:`~wx.lib.agw.aui.dockart`
|
|
19
|
+
which provides bitmap art and a colour scheme that is adapted to the major platforms'
|
|
20
|
+
look. You can either derive from that class to alter its behaviour or write a
|
|
21
|
+
completely new dock art class. Call :meth:`AuiManager.SetArtProvider() <lib.agw.aui.framemanager.AuiManager.SetArtProvider>`
|
|
22
|
+
to make use this new dock art.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
__author__ = "Andrea Gavana <andrea.gavana@gmail.com>"
|
|
26
|
+
__date__ = "31 March 2009"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
import wx
|
|
30
|
+
|
|
31
|
+
from .aui_utilities import BitmapFromBits, StepColour, ChopText, GetBaseColour
|
|
32
|
+
from .aui_utilities import DrawGradientRectangle, DrawMACCloseButton
|
|
33
|
+
from .aui_utilities import DarkenBitmap, LightContrastColour
|
|
34
|
+
from .aui_constants import *
|
|
35
|
+
|
|
36
|
+
optionActive = 2**14
|
|
37
|
+
""" Indicates that a pane is active and should display an active caption (if present). """
|
|
38
|
+
|
|
39
|
+
_ctypes = False
|
|
40
|
+
|
|
41
|
+
# Try to import winxptheme for ModernDockArt
|
|
42
|
+
if wx.Platform == "__WXMSW__":
|
|
43
|
+
try:
|
|
44
|
+
import ctypes
|
|
45
|
+
import winxptheme
|
|
46
|
+
_ctypes = True
|
|
47
|
+
except ImportError:
|
|
48
|
+
pass
|
|
49
|
+
|
|
50
|
+
# -- AuiDefaultDockArt class implementation --
|
|
51
|
+
|
|
52
|
+
class AuiDefaultDockArt(object):
|
|
53
|
+
"""
|
|
54
|
+
Dock art provider code - a dock provider provides all drawing functionality to the AUI dock manager.
|
|
55
|
+
This allows the dock manager to have a plugable look-and-feel.
|
|
56
|
+
|
|
57
|
+
By default, a :class:`~wx.lib.agw.aui.framemanager.AuiManager` uses an instance of this class called
|
|
58
|
+
:class:`AuiDefaultDockArt` which provides bitmap art and a colour scheme that is adapted to the major
|
|
59
|
+
platforms' look. You can either derive from that class to alter its behaviour or
|
|
60
|
+
write a completely new dock art class.
|
|
61
|
+
|
|
62
|
+
Call :meth:`AuiManager.SetArtProvider() <lib.agw.aui.framemanager.AuiManager.SetArtProvider>`
|
|
63
|
+
to make use this new dock art.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
**Metric Ordinals**
|
|
67
|
+
|
|
68
|
+
These are the possible pane dock art settings for :class:`AuiDefaultDockArt`:
|
|
69
|
+
|
|
70
|
+
================================================ ======================================
|
|
71
|
+
Metric Ordinal Constant Description
|
|
72
|
+
================================================ ======================================
|
|
73
|
+
``AUI_DOCKART_SASH_SIZE`` Customizes the sash size
|
|
74
|
+
``AUI_DOCKART_CAPTION_SIZE`` Customizes the caption size
|
|
75
|
+
``AUI_DOCKART_GRIPPER_SIZE`` Customizes the gripper size
|
|
76
|
+
``AUI_DOCKART_PANE_BORDER_SIZE`` Customizes the pane border size
|
|
77
|
+
``AUI_DOCKART_PANE_BUTTON_SIZE`` Customizes the pane button size
|
|
78
|
+
``AUI_DOCKART_BACKGROUND_COLOUR`` Customizes the background colour
|
|
79
|
+
``AUI_DOCKART_BACKGROUND_GRADIENT_COLOUR`` Customizes the background gradient colour
|
|
80
|
+
``AUI_DOCKART_SASH_COLOUR`` Customizes the sash colour
|
|
81
|
+
``AUI_DOCKART_ACTIVE_CAPTION_COLOUR`` Customizes the active caption colour
|
|
82
|
+
``AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR`` Customizes the active caption gradient colour
|
|
83
|
+
``AUI_DOCKART_INACTIVE_CAPTION_COLOUR`` Customizes the inactive caption colour
|
|
84
|
+
``AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR`` Customizes the inactive gradient caption colour
|
|
85
|
+
``AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR`` Customizes the active caption text colour
|
|
86
|
+
``AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR`` Customizes the inactive caption text colour
|
|
87
|
+
``AUI_DOCKART_BORDER_COLOUR`` Customizes the border colour
|
|
88
|
+
``AUI_DOCKART_GRIPPER_COLOUR`` Customizes the gripper colour
|
|
89
|
+
``AUI_DOCKART_CAPTION_FONT`` Customizes the caption font
|
|
90
|
+
``AUI_DOCKART_GRADIENT_TYPE`` Customizes the gradient type (no gradient, vertical or horizontal)
|
|
91
|
+
``AUI_DOCKART_DRAW_SASH_GRIP`` Draw a sash grip on the sash
|
|
92
|
+
``AUI_DOCKART_HINT_WINDOW_COLOUR`` Customizes the hint window background colour (currently light blue)
|
|
93
|
+
``AUI_DOCKART_HINT_WINDOW_BORDER_COLOUR`` Customizes the hint window border background colour (currently grey)
|
|
94
|
+
================================================ ======================================
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
**Gradient Types**
|
|
98
|
+
|
|
99
|
+
These are the possible gradient dock art settings for :class:`AuiDefaultDockArt`:
|
|
100
|
+
|
|
101
|
+
============================================ ======================================
|
|
102
|
+
Gradient Constant Description
|
|
103
|
+
============================================ ======================================
|
|
104
|
+
``AUI_GRADIENT_NONE`` No gradient on the captions
|
|
105
|
+
``AUI_GRADIENT_VERTICAL`` Vertical gradient on the captions
|
|
106
|
+
``AUI_GRADIENT_HORIZONTAL`` Horizontal gradient on the captions
|
|
107
|
+
============================================ ======================================
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
**Button States**
|
|
111
|
+
|
|
112
|
+
These are the possible pane button / :class:`~wx.lib.agw.aui.auibook.AuiNotebook` button /
|
|
113
|
+
:class:`~wx.lib.agw.aui.auibar.AuiToolBar` button states:
|
|
114
|
+
|
|
115
|
+
============================================ ======================================
|
|
116
|
+
Button State Constant Description
|
|
117
|
+
============================================ ======================================
|
|
118
|
+
``AUI_BUTTON_STATE_NORMAL`` Normal button state
|
|
119
|
+
``AUI_BUTTON_STATE_HOVER`` Hovered button state
|
|
120
|
+
``AUI_BUTTON_STATE_PRESSED`` Pressed button state
|
|
121
|
+
``AUI_BUTTON_STATE_DISABLED`` Disabled button state
|
|
122
|
+
``AUI_BUTTON_STATE_HIDDEN`` Hidden button state
|
|
123
|
+
``AUI_BUTTON_STATE_CHECKED`` Checked button state
|
|
124
|
+
============================================ ======================================
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
**Button Identifiers**
|
|
128
|
+
|
|
129
|
+
These are the possible pane button / :class:`~wx.lib.agw.aui.auibook.AuiNotebook` button /
|
|
130
|
+
:class:`~wx.lib.agw.aui.auibar.AuiToolBar` button identifiers:
|
|
131
|
+
|
|
132
|
+
============================================ ======================================
|
|
133
|
+
Button Identifier Description
|
|
134
|
+
============================================ ======================================
|
|
135
|
+
``AUI_BUTTON_CLOSE`` Shows a close button on the pane
|
|
136
|
+
``AUI_BUTTON_MAXIMIZE_RESTORE`` Shows a maximize/restore button on the pane
|
|
137
|
+
``AUI_BUTTON_MINIMIZE`` Shows a minimize button on the pane
|
|
138
|
+
``AUI_BUTTON_PIN`` Shows a pin button on the pane
|
|
139
|
+
``AUI_BUTTON_OPTIONS`` Shows an option button on the pane (not implemented)
|
|
140
|
+
``AUI_BUTTON_WINDOWLIST`` Shows a window list button on the pane (for :class:`~wx.lib.agw.aui.auibook.AuiNotebook`)
|
|
141
|
+
``AUI_BUTTON_LEFT`` Shows a left button on the pane (for :class:`~wx.lib.agw.aui.auibook.AuiNotebook`)
|
|
142
|
+
``AUI_BUTTON_RIGHT`` Shows a right button on the pane (for :class:`~wx.lib.agw.aui.auibook.AuiNotebook`)
|
|
143
|
+
``AUI_BUTTON_UP`` Shows an up button on the pane (not implemented)
|
|
144
|
+
``AUI_BUTTON_DOWN`` Shows a down button on the pane (not implemented)
|
|
145
|
+
``AUI_BUTTON_CUSTOM1`` Shows a custom button on the pane (not implemented)
|
|
146
|
+
``AUI_BUTTON_CUSTOM2`` Shows a custom button on the pane (not implemented)
|
|
147
|
+
``AUI_BUTTON_CUSTOM3`` Shows a custom button on the pane (not implemented)
|
|
148
|
+
============================================ ======================================
|
|
149
|
+
|
|
150
|
+
"""
|
|
151
|
+
|
|
152
|
+
def __init__(self):
|
|
153
|
+
""" Default class constructor. """
|
|
154
|
+
|
|
155
|
+
self.Init()
|
|
156
|
+
|
|
157
|
+
isMac = wx.Platform == "__WXMAC__"
|
|
158
|
+
|
|
159
|
+
if isMac:
|
|
160
|
+
self._caption_font = wx.SMALL_FONT
|
|
161
|
+
else:
|
|
162
|
+
self._caption_font = wx.Font(8, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
|
|
163
|
+
|
|
164
|
+
self.SetDefaultPaneBitmaps(isMac)
|
|
165
|
+
self._restore_bitmap = wx.Bitmap(restore_xpm)
|
|
166
|
+
|
|
167
|
+
# default metric values
|
|
168
|
+
self._sash_size = 4
|
|
169
|
+
|
|
170
|
+
if isMac:
|
|
171
|
+
# This really should be implemented in wx.SystemSettings
|
|
172
|
+
# There is no way to do this that I am aware outside of using
|
|
173
|
+
# the cocoa python bindings. 8 pixels looks correct on my system
|
|
174
|
+
# so hard coding it for now.
|
|
175
|
+
|
|
176
|
+
# How do I translate this?!? Not sure of the below implementation...
|
|
177
|
+
# SInt32 height;
|
|
178
|
+
# GetThemeMetric( kThemeMetricSmallPaneSplitterHeight , &height );
|
|
179
|
+
# self._sash_size = height;
|
|
180
|
+
|
|
181
|
+
self._sash_size = 8 # Carbon.Appearance.kThemeMetricPaneSplitterHeight
|
|
182
|
+
|
|
183
|
+
elif wx.Platform == "__WXGTK__":
|
|
184
|
+
self._sash_size = wx.RendererNative.Get().GetSplitterParams(wx.GetTopLevelWindows()[0]).widthSash
|
|
185
|
+
|
|
186
|
+
else:
|
|
187
|
+
self._sash_size = 4
|
|
188
|
+
|
|
189
|
+
self._caption_size = 19
|
|
190
|
+
self._border_size = 1
|
|
191
|
+
self._button_size = 14
|
|
192
|
+
self._gripper_size = 9
|
|
193
|
+
self._gradient_type = AUI_GRADIENT_VERTICAL
|
|
194
|
+
self._draw_sash = False
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def Init(self):
|
|
198
|
+
""" Initializes the dock art. """
|
|
199
|
+
|
|
200
|
+
self.SetDefaultColours()
|
|
201
|
+
|
|
202
|
+
isMac = wx.Platform == "__WXMAC__"
|
|
203
|
+
|
|
204
|
+
if isMac:
|
|
205
|
+
self._active_caption_colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT)
|
|
206
|
+
else:
|
|
207
|
+
self._active_caption_colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION)
|
|
208
|
+
|
|
209
|
+
self._active_caption_gradient_colour = LightContrastColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT))
|
|
210
|
+
self._active_caption_text_colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT)
|
|
211
|
+
self._inactive_caption_text_colour = wx.BLACK
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def SetDefaultColours(self, base_colour=None):
|
|
215
|
+
"""
|
|
216
|
+
Sets the default colours, which are calculated from the given base colour.
|
|
217
|
+
|
|
218
|
+
:param `base_colour`: an instance of :class:`wx.Colour`. If defaulted to ``None``, a colour
|
|
219
|
+
is generated accordingly to the platform and theme.
|
|
220
|
+
"""
|
|
221
|
+
|
|
222
|
+
if base_colour is None:
|
|
223
|
+
base_colour = GetBaseColour()
|
|
224
|
+
|
|
225
|
+
darker1_colour = StepColour(base_colour, 85)
|
|
226
|
+
darker2_colour = StepColour(base_colour, 75)
|
|
227
|
+
darker3_colour = StepColour(base_colour, 60)
|
|
228
|
+
darker4_colour = StepColour(base_colour, 40)
|
|
229
|
+
|
|
230
|
+
self._background_colour = base_colour
|
|
231
|
+
self._background_gradient_colour = StepColour(base_colour, 180)
|
|
232
|
+
|
|
233
|
+
self._inactive_caption_colour = darker1_colour
|
|
234
|
+
self._inactive_caption_gradient_colour = StepColour(base_colour, 97)
|
|
235
|
+
|
|
236
|
+
self._sash_brush = wx.Brush(base_colour)
|
|
237
|
+
self._background_brush = wx.Brush(base_colour)
|
|
238
|
+
self._border_pen = wx.Pen(darker2_colour)
|
|
239
|
+
self._gripper_brush = wx.Brush(base_colour)
|
|
240
|
+
self._gripper_pen1 = wx.Pen(darker4_colour)
|
|
241
|
+
self._gripper_pen2 = wx.Pen(darker3_colour)
|
|
242
|
+
self._gripper_pen3 = wx.WHITE_PEN
|
|
243
|
+
|
|
244
|
+
self._hint_background_colour = colourHintBackground
|
|
245
|
+
self._hint_border_colour = colourHintBorder
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def GetMetric(self, id):
|
|
249
|
+
"""
|
|
250
|
+
Gets the value of a certain setting.
|
|
251
|
+
|
|
252
|
+
:param integer `id`: can be one of the size values in `Metric Ordinals`.
|
|
253
|
+
"""
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
if id == AUI_DOCKART_SASH_SIZE:
|
|
257
|
+
return self._sash_size
|
|
258
|
+
elif id == AUI_DOCKART_CAPTION_SIZE:
|
|
259
|
+
return self._caption_size
|
|
260
|
+
elif id == AUI_DOCKART_GRIPPER_SIZE:
|
|
261
|
+
return self._gripper_size
|
|
262
|
+
elif id == AUI_DOCKART_PANE_BORDER_SIZE:
|
|
263
|
+
return self._border_size
|
|
264
|
+
elif id == AUI_DOCKART_PANE_BUTTON_SIZE:
|
|
265
|
+
return self._button_size
|
|
266
|
+
elif id == AUI_DOCKART_GRADIENT_TYPE:
|
|
267
|
+
return self._gradient_type
|
|
268
|
+
elif id == AUI_DOCKART_DRAW_SASH_GRIP:
|
|
269
|
+
return self._draw_sash
|
|
270
|
+
else:
|
|
271
|
+
raise Exception("Invalid Metric Ordinal.")
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
def SetMetric(self, id, new_val):
|
|
275
|
+
"""
|
|
276
|
+
Sets the value of a certain setting using `new_val`
|
|
277
|
+
|
|
278
|
+
:param integer `id`: can be one of the size values in `Metric Ordinals`;
|
|
279
|
+
:param `new_val`: the new value of the setting.
|
|
280
|
+
"""
|
|
281
|
+
|
|
282
|
+
if id == AUI_DOCKART_SASH_SIZE:
|
|
283
|
+
self._sash_size = new_val
|
|
284
|
+
elif id == AUI_DOCKART_CAPTION_SIZE:
|
|
285
|
+
self._caption_size = new_val
|
|
286
|
+
elif id == AUI_DOCKART_GRIPPER_SIZE:
|
|
287
|
+
self._gripper_size = new_val
|
|
288
|
+
elif id == AUI_DOCKART_PANE_BORDER_SIZE:
|
|
289
|
+
self._border_size = new_val
|
|
290
|
+
elif id == AUI_DOCKART_PANE_BUTTON_SIZE:
|
|
291
|
+
self._button_size = new_val
|
|
292
|
+
elif id == AUI_DOCKART_GRADIENT_TYPE:
|
|
293
|
+
self._gradient_type = new_val
|
|
294
|
+
elif id == AUI_DOCKART_DRAW_SASH_GRIP:
|
|
295
|
+
self._draw_sash = new_val
|
|
296
|
+
else:
|
|
297
|
+
raise Exception("Invalid Metric Ordinal.")
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
def GetColor(self, id):
|
|
301
|
+
"""
|
|
302
|
+
Gets the colour of a certain setting.
|
|
303
|
+
|
|
304
|
+
:param integer `id`: can be one of the colour values in `Metric Ordinals`.
|
|
305
|
+
"""
|
|
306
|
+
|
|
307
|
+
if id == AUI_DOCKART_BACKGROUND_COLOUR:
|
|
308
|
+
return self._background_brush.GetColour()
|
|
309
|
+
elif id == AUI_DOCKART_BACKGROUND_GRADIENT_COLOUR:
|
|
310
|
+
return self._background_gradient_colour
|
|
311
|
+
elif id == AUI_DOCKART_SASH_COLOUR:
|
|
312
|
+
return self._sash_brush.GetColour()
|
|
313
|
+
elif id == AUI_DOCKART_INACTIVE_CAPTION_COLOUR:
|
|
314
|
+
return self._inactive_caption_colour
|
|
315
|
+
elif id == AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR:
|
|
316
|
+
return self._inactive_caption_gradient_colour
|
|
317
|
+
elif id == AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR:
|
|
318
|
+
return self._inactive_caption_text_colour
|
|
319
|
+
elif id == AUI_DOCKART_ACTIVE_CAPTION_COLOUR:
|
|
320
|
+
return self._active_caption_colour
|
|
321
|
+
elif id == AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR:
|
|
322
|
+
return self._active_caption_gradient_colour
|
|
323
|
+
elif id == AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR:
|
|
324
|
+
return self._active_caption_text_colour
|
|
325
|
+
elif id == AUI_DOCKART_BORDER_COLOUR:
|
|
326
|
+
return self._border_pen.GetColour()
|
|
327
|
+
elif id == AUI_DOCKART_GRIPPER_COLOUR:
|
|
328
|
+
return self._gripper_brush.GetColour()
|
|
329
|
+
elif id == AUI_DOCKART_HINT_WINDOW_COLOUR:
|
|
330
|
+
return self._hint_background_colour
|
|
331
|
+
elif id == AUI_DOCKART_HINT_WINDOW_BORDER_COLOUR:
|
|
332
|
+
return self._hint_border_colour
|
|
333
|
+
else:
|
|
334
|
+
raise Exception("Invalid Colour Ordinal.")
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
def SetColor(self, id, colour):
|
|
338
|
+
"""
|
|
339
|
+
Sets the colour of a certain setting.
|
|
340
|
+
|
|
341
|
+
:param integer `id`: can be one of the colour values in `Metric Ordinals`;
|
|
342
|
+
:param `colour`: the new value of the setting.
|
|
343
|
+
:type `colour`: :class:`wx.Colour` or tuple or integer
|
|
344
|
+
"""
|
|
345
|
+
|
|
346
|
+
colour = wx.Colour(colour)
|
|
347
|
+
|
|
348
|
+
if id == AUI_DOCKART_BACKGROUND_COLOUR:
|
|
349
|
+
self._background_brush.SetColour(colour)
|
|
350
|
+
elif id == AUI_DOCKART_BACKGROUND_GRADIENT_COLOUR:
|
|
351
|
+
self._background_gradient_colour = colour
|
|
352
|
+
elif id == AUI_DOCKART_SASH_COLOUR:
|
|
353
|
+
self._sash_brush.SetColour(colour)
|
|
354
|
+
elif id == AUI_DOCKART_INACTIVE_CAPTION_COLOUR:
|
|
355
|
+
self._inactive_caption_colour = colour
|
|
356
|
+
if not self._custom_pane_bitmaps and wx.Platform == "__WXMAC__":
|
|
357
|
+
# No custom bitmaps for the pane close button
|
|
358
|
+
# Change the MAC close bitmap colour
|
|
359
|
+
self._inactive_close_bitmap = DrawMACCloseButton(wx.WHITE, colour)
|
|
360
|
+
|
|
361
|
+
elif id == AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR:
|
|
362
|
+
self._inactive_caption_gradient_colour = colour
|
|
363
|
+
elif id == AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR:
|
|
364
|
+
self._inactive_caption_text_colour = colour
|
|
365
|
+
elif id == AUI_DOCKART_ACTIVE_CAPTION_COLOUR:
|
|
366
|
+
self._active_caption_colour = colour
|
|
367
|
+
if not self._custom_pane_bitmaps and wx.Platform == "__WXMAC__":
|
|
368
|
+
# No custom bitmaps for the pane close button
|
|
369
|
+
# Change the MAC close bitmap colour
|
|
370
|
+
self._active_close_bitmap = DrawMACCloseButton(wx.WHITE, colour)
|
|
371
|
+
|
|
372
|
+
elif id == AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR:
|
|
373
|
+
self._active_caption_gradient_colour = colour
|
|
374
|
+
elif id == AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR:
|
|
375
|
+
self._active_caption_text_colour = colour
|
|
376
|
+
elif id == AUI_DOCKART_BORDER_COLOUR:
|
|
377
|
+
self._border_pen.SetColour(colour)
|
|
378
|
+
elif id == AUI_DOCKART_GRIPPER_COLOUR:
|
|
379
|
+
self._gripper_brush.SetColour(colour)
|
|
380
|
+
self._gripper_pen1.SetColour(StepColour(colour, 40))
|
|
381
|
+
self._gripper_pen2.SetColour(StepColour(colour, 60))
|
|
382
|
+
elif id == AUI_DOCKART_HINT_WINDOW_COLOUR:
|
|
383
|
+
self._hint_background_colour = colour
|
|
384
|
+
elif id == AUI_DOCKART_HINT_WINDOW_BORDER_COLOUR:
|
|
385
|
+
self._hint_border_colour = colour
|
|
386
|
+
else:
|
|
387
|
+
raise Exception("Invalid Colour Ordinal.")
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
GetColour = GetColor
|
|
391
|
+
SetColour = SetColor
|
|
392
|
+
|
|
393
|
+
def SetFont(self, id, font):
|
|
394
|
+
"""
|
|
395
|
+
Sets a font setting.
|
|
396
|
+
|
|
397
|
+
:param integer `id`: must be ``AUI_DOCKART_CAPTION_FONT``;
|
|
398
|
+
:param `font`: an instance of :class:`wx.Font`.
|
|
399
|
+
"""
|
|
400
|
+
|
|
401
|
+
if id == AUI_DOCKART_CAPTION_FONT:
|
|
402
|
+
self._caption_font = font
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
def GetFont(self, id):
|
|
406
|
+
"""
|
|
407
|
+
Gets a font setting.
|
|
408
|
+
|
|
409
|
+
:param integer `id`: must be ``AUI_DOCKART_CAPTION_FONT``, otherwise :class:`NullFont` is returned.
|
|
410
|
+
"""
|
|
411
|
+
|
|
412
|
+
if id == AUI_DOCKART_CAPTION_FONT:
|
|
413
|
+
return self._caption_font
|
|
414
|
+
|
|
415
|
+
return wx.NullFont
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def DrawSash(self, dc, window, orient, rect):
|
|
419
|
+
"""
|
|
420
|
+
Draws a sash between two windows.
|
|
421
|
+
|
|
422
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
423
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
424
|
+
:param integer `orient`: the sash orientation;
|
|
425
|
+
:param wx.Rect `rect`: the sash rectangle.
|
|
426
|
+
"""
|
|
427
|
+
|
|
428
|
+
# AG: How do we make this work?!?
|
|
429
|
+
# RendererNative does not use the sash_brush chosen by the user
|
|
430
|
+
# and the rect.GetSize() is ignored as the sash is always drawn
|
|
431
|
+
# 3 pixel wide
|
|
432
|
+
# wx.RendererNative.Get().DrawSplitterSash(window, dc, rect.GetSize(), pos, orient)
|
|
433
|
+
|
|
434
|
+
dc.SetPen(wx.TRANSPARENT_PEN)
|
|
435
|
+
dc.SetBrush(self._sash_brush)
|
|
436
|
+
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height)
|
|
437
|
+
|
|
438
|
+
draw_sash = self.GetMetric(AUI_DOCKART_DRAW_SASH_GRIP)
|
|
439
|
+
if draw_sash:
|
|
440
|
+
self.DrawSashGripper(dc, orient, rect)
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
def DrawBackground(self, dc, window, orient, rect):
|
|
444
|
+
"""
|
|
445
|
+
Draws a background.
|
|
446
|
+
|
|
447
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
448
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
449
|
+
:param integer `orient`: the gradient (if any) orientation;
|
|
450
|
+
:param wx.Rect `rect`: the background rectangle.
|
|
451
|
+
"""
|
|
452
|
+
|
|
453
|
+
dc.SetPen(wx.TRANSPARENT_PEN)
|
|
454
|
+
if wx.Platform == "__WXMAC__":
|
|
455
|
+
# we have to clear first, otherwise we are drawing a light striped pattern
|
|
456
|
+
# over an already darker striped background
|
|
457
|
+
dc.SetBrush(wx.WHITE_BRUSH)
|
|
458
|
+
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height)
|
|
459
|
+
|
|
460
|
+
DrawGradientRectangle(dc, rect, self._background_brush.GetColour(),
|
|
461
|
+
self._background_gradient_colour,
|
|
462
|
+
AUI_GRADIENT_HORIZONTAL, rect.x, 700)
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
def DrawBorder(self, dc, window, rect, pane):
|
|
466
|
+
"""
|
|
467
|
+
Draws the pane border.
|
|
468
|
+
|
|
469
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
470
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
471
|
+
:param wx.Rect `rect`: the border rectangle;
|
|
472
|
+
:param `pane`: the pane for which the border is drawn.
|
|
473
|
+
"""
|
|
474
|
+
|
|
475
|
+
drect = wx.Rect(*rect)
|
|
476
|
+
|
|
477
|
+
dc.SetPen(self._border_pen)
|
|
478
|
+
dc.SetBrush(wx.TRANSPARENT_BRUSH)
|
|
479
|
+
|
|
480
|
+
border_width = self.GetMetric(AUI_DOCKART_PANE_BORDER_SIZE)
|
|
481
|
+
|
|
482
|
+
if pane.IsToolbar():
|
|
483
|
+
|
|
484
|
+
for ii in range(0, border_width):
|
|
485
|
+
|
|
486
|
+
dc.SetPen(wx.WHITE_PEN)
|
|
487
|
+
dc.DrawLine(drect.x, drect.y, drect.x+drect.width, drect.y)
|
|
488
|
+
dc.DrawLine(drect.x, drect.y, drect.x, drect.y+drect.height)
|
|
489
|
+
dc.SetPen(self._border_pen)
|
|
490
|
+
dc.DrawLine(drect.x, drect.y+drect.height-1,
|
|
491
|
+
drect.x+drect.width, drect.y+drect.height-1)
|
|
492
|
+
dc.DrawLine(drect.x+drect.width-1, drect.y,
|
|
493
|
+
drect.x+drect.width-1, drect.y+drect.height)
|
|
494
|
+
drect.Deflate(1, 1)
|
|
495
|
+
|
|
496
|
+
else:
|
|
497
|
+
|
|
498
|
+
for ii in range(0, border_width):
|
|
499
|
+
|
|
500
|
+
dc.DrawRectangle(drect.x, drect.y, drect.width, drect.height)
|
|
501
|
+
drect.Deflate(1, 1)
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
def DrawCaptionBackground(self, dc, rect, pane):
|
|
505
|
+
"""
|
|
506
|
+
Draws the text caption background in the pane.
|
|
507
|
+
|
|
508
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
509
|
+
:param wx.Rect `rect`: the text caption rectangle;
|
|
510
|
+
:param `pane`: the pane for which the text background is drawn.
|
|
511
|
+
"""
|
|
512
|
+
|
|
513
|
+
active = pane.state & optionActive
|
|
514
|
+
|
|
515
|
+
if self._gradient_type == AUI_GRADIENT_NONE:
|
|
516
|
+
if active:
|
|
517
|
+
dc.SetBrush(wx.Brush(self._active_caption_colour))
|
|
518
|
+
else:
|
|
519
|
+
dc.SetBrush(wx.Brush(self._inactive_caption_colour))
|
|
520
|
+
|
|
521
|
+
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height)
|
|
522
|
+
|
|
523
|
+
else:
|
|
524
|
+
|
|
525
|
+
switch_gradient = pane.HasCaptionLeft()
|
|
526
|
+
gradient_type = self._gradient_type
|
|
527
|
+
if switch_gradient:
|
|
528
|
+
gradient_type = (self._gradient_type == AUI_GRADIENT_HORIZONTAL and [AUI_GRADIENT_VERTICAL] or \
|
|
529
|
+
[AUI_GRADIENT_HORIZONTAL])[0]
|
|
530
|
+
|
|
531
|
+
if active:
|
|
532
|
+
if wx.Platform == "__WXMAC__":
|
|
533
|
+
DrawGradientRectangle(dc, rect, self._active_caption_colour,
|
|
534
|
+
self._active_caption_gradient_colour,
|
|
535
|
+
gradient_type)
|
|
536
|
+
else:
|
|
537
|
+
DrawGradientRectangle(dc, rect, self._active_caption_gradient_colour,
|
|
538
|
+
self._active_caption_colour,
|
|
539
|
+
gradient_type)
|
|
540
|
+
else:
|
|
541
|
+
if wx.Platform == "__WXMAC__":
|
|
542
|
+
DrawGradientRectangle(dc, rect, self._inactive_caption_gradient_colour,
|
|
543
|
+
self._inactive_caption_colour,
|
|
544
|
+
gradient_type)
|
|
545
|
+
else:
|
|
546
|
+
DrawGradientRectangle(dc, rect, self._inactive_caption_colour,
|
|
547
|
+
self._inactive_caption_gradient_colour,
|
|
548
|
+
gradient_type)
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
def DrawIcon(self, dc, rect, pane):
|
|
552
|
+
"""
|
|
553
|
+
Draws the icon in the pane caption area.
|
|
554
|
+
|
|
555
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
556
|
+
:param wx.Rect `rect`: the pane caption rectangle;
|
|
557
|
+
:param `pane`: the pane for which the icon is drawn.
|
|
558
|
+
"""
|
|
559
|
+
|
|
560
|
+
# Draw the icon centered vertically
|
|
561
|
+
if pane.icon.IsOk():
|
|
562
|
+
if pane.HasCaptionLeft():
|
|
563
|
+
bmp = wx.Bitmap(pane.icon).ConvertToImage().Rotate90(clockwise=False)
|
|
564
|
+
dc.DrawBitmap(bmp.ConvertToBitmap(), rect.x+(rect.width-pane.icon.GetWidth())//2, rect.y+rect.height-2-pane.icon.GetHeight(), True)
|
|
565
|
+
else:
|
|
566
|
+
dc.DrawBitmap(pane.icon, rect.x+2, rect.y+(rect.height-pane.icon.GetHeight())//2, True)
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
def DrawCaption(self, dc, window, text, rect, pane):
|
|
570
|
+
"""
|
|
571
|
+
Draws the text in the pane caption.
|
|
572
|
+
|
|
573
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
574
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
575
|
+
:param string `text`: the text to be displayed;
|
|
576
|
+
:param wx.Rect `rect`: the pane caption rectangle;
|
|
577
|
+
:param `pane`: the pane for which the text is drawn.
|
|
578
|
+
"""
|
|
579
|
+
|
|
580
|
+
dc.SetPen(wx.TRANSPARENT_PEN)
|
|
581
|
+
dc.SetFont(self._caption_font)
|
|
582
|
+
|
|
583
|
+
self.DrawCaptionBackground(dc, rect, pane)
|
|
584
|
+
|
|
585
|
+
if pane.state & optionActive:
|
|
586
|
+
dc.SetTextForeground(self._active_caption_text_colour)
|
|
587
|
+
else:
|
|
588
|
+
dc.SetTextForeground(self._inactive_caption_text_colour)
|
|
589
|
+
|
|
590
|
+
w, h = dc.GetTextExtent("ABCDEFHXfgkj")
|
|
591
|
+
|
|
592
|
+
clip_rect = wx.Rect(*rect)
|
|
593
|
+
btns = pane.CountButtons()
|
|
594
|
+
|
|
595
|
+
captionLeft = pane.HasCaptionLeft()
|
|
596
|
+
variable = (captionLeft and [rect.height] or [rect.width])[0]
|
|
597
|
+
|
|
598
|
+
variable -= 3 # text offset
|
|
599
|
+
variable -= 2 # button padding
|
|
600
|
+
|
|
601
|
+
caption_offset = 0
|
|
602
|
+
if pane.icon:
|
|
603
|
+
if captionLeft:
|
|
604
|
+
caption_offset += pane.icon.GetHeight() + 3
|
|
605
|
+
else:
|
|
606
|
+
caption_offset += pane.icon.GetWidth() + 3
|
|
607
|
+
|
|
608
|
+
self.DrawIcon(dc, rect, pane)
|
|
609
|
+
|
|
610
|
+
variable -= caption_offset
|
|
611
|
+
variable -= btns*(self._button_size + self._border_size)
|
|
612
|
+
draw_text = ChopText(dc, text, variable)
|
|
613
|
+
|
|
614
|
+
if captionLeft:
|
|
615
|
+
dc.DrawRotatedText(draw_text, rect.x+(rect.width/2)-(h/2)-1, rect.y+rect.height-3-caption_offset, 90)
|
|
616
|
+
else:
|
|
617
|
+
dc.DrawText(draw_text, rect.x+3+caption_offset, rect.y+(rect.height//2)-(h//2)-1)
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
def RequestUserAttention(self, dc, window, text, rect, pane):
|
|
621
|
+
"""
|
|
622
|
+
Requests the user attention by intermittently highlighting the pane caption.
|
|
623
|
+
|
|
624
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
625
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
626
|
+
:param string `text`: the text to be displayed;
|
|
627
|
+
:param wx.Rect `rect`: the pane caption rectangle;
|
|
628
|
+
:param `pane`: the pane for which we want to attract the user attention.
|
|
629
|
+
"""
|
|
630
|
+
|
|
631
|
+
state = pane.state
|
|
632
|
+
pane.state &= ~optionActive
|
|
633
|
+
|
|
634
|
+
for indx in range(6):
|
|
635
|
+
active = (indx%2 == 0 and [True] or [False])[0]
|
|
636
|
+
if active:
|
|
637
|
+
pane.state |= optionActive
|
|
638
|
+
else:
|
|
639
|
+
pane.state &= ~optionActive
|
|
640
|
+
|
|
641
|
+
self.DrawCaptionBackground(dc, rect, pane)
|
|
642
|
+
self.DrawCaption(dc, window, text, rect, pane)
|
|
643
|
+
wx.SafeYield()
|
|
644
|
+
wx.MilliSleep(350)
|
|
645
|
+
|
|
646
|
+
pane.state = state
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
def DrawGripper(self, dc, window, rect, pane):
|
|
650
|
+
"""
|
|
651
|
+
Draws a gripper on the pane.
|
|
652
|
+
|
|
653
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
654
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
655
|
+
:param wx.Rect `rect`: the pane caption rectangle;
|
|
656
|
+
:param `pane`: the pane for which the gripper is drawn.
|
|
657
|
+
"""
|
|
658
|
+
|
|
659
|
+
dc.SetPen(wx.TRANSPARENT_PEN)
|
|
660
|
+
dc.SetBrush(self._gripper_brush)
|
|
661
|
+
|
|
662
|
+
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height)
|
|
663
|
+
|
|
664
|
+
if not pane.HasGripperTop():
|
|
665
|
+
y = 4
|
|
666
|
+
while 1:
|
|
667
|
+
dc.SetPen(self._gripper_pen1)
|
|
668
|
+
dc.DrawPoint(rect.x+3, rect.y+y)
|
|
669
|
+
dc.SetPen(self._gripper_pen2)
|
|
670
|
+
dc.DrawPoint(rect.x+3, rect.y+y+1)
|
|
671
|
+
dc.DrawPoint(rect.x+4, rect.y+y)
|
|
672
|
+
dc.SetPen(self._gripper_pen3)
|
|
673
|
+
dc.DrawPoint(rect.x+5, rect.y+y+1)
|
|
674
|
+
dc.DrawPoint(rect.x+5, rect.y+y+2)
|
|
675
|
+
dc.DrawPoint(rect.x+4, rect.y+y+2)
|
|
676
|
+
y = y + 4
|
|
677
|
+
if y > rect.GetHeight() - 4:
|
|
678
|
+
break
|
|
679
|
+
else:
|
|
680
|
+
x = 4
|
|
681
|
+
while 1:
|
|
682
|
+
dc.SetPen(self._gripper_pen1)
|
|
683
|
+
dc.DrawPoint(rect.x+x, rect.y+3)
|
|
684
|
+
dc.SetPen(self._gripper_pen2)
|
|
685
|
+
dc.DrawPoint(rect.x+x+1, rect.y+3)
|
|
686
|
+
dc.DrawPoint(rect.x+x, rect.y+4)
|
|
687
|
+
dc.SetPen(self._gripper_pen3)
|
|
688
|
+
dc.DrawPoint(rect.x+x+1, rect.y+5)
|
|
689
|
+
dc.DrawPoint(rect.x+x+2, rect.y+5)
|
|
690
|
+
dc.DrawPoint(rect.x+x+2, rect.y+4)
|
|
691
|
+
x = x + 4
|
|
692
|
+
if x > rect.GetWidth() - 4:
|
|
693
|
+
break
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
def DrawPaneButton(self, dc, window, button, button_state, _rect, pane):
|
|
697
|
+
"""
|
|
698
|
+
Draws a pane button in the pane caption area.
|
|
699
|
+
|
|
700
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
701
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
702
|
+
:param integer `button`: the button to be drawn;
|
|
703
|
+
:param integer `button_state`: the pane button state;
|
|
704
|
+
:param wx.Rect `_rect`: the pane caption rectangle;
|
|
705
|
+
:param `pane`: the pane for which the button is drawn.
|
|
706
|
+
"""
|
|
707
|
+
|
|
708
|
+
if not pane:
|
|
709
|
+
return
|
|
710
|
+
|
|
711
|
+
if button == AUI_BUTTON_CLOSE:
|
|
712
|
+
if pane.state & optionActive:
|
|
713
|
+
bmp = self._active_close_bitmap
|
|
714
|
+
else:
|
|
715
|
+
bmp = self._inactive_close_bitmap
|
|
716
|
+
|
|
717
|
+
elif button == AUI_BUTTON_PIN:
|
|
718
|
+
if pane.state & optionActive:
|
|
719
|
+
bmp = self._active_pin_bitmap
|
|
720
|
+
else:
|
|
721
|
+
bmp = self._inactive_pin_bitmap
|
|
722
|
+
|
|
723
|
+
elif button == AUI_BUTTON_MAXIMIZE_RESTORE:
|
|
724
|
+
if pane.IsMaximized():
|
|
725
|
+
if pane.state & optionActive:
|
|
726
|
+
bmp = self._active_restore_bitmap
|
|
727
|
+
else:
|
|
728
|
+
bmp = self._inactive_restore_bitmap
|
|
729
|
+
else:
|
|
730
|
+
if pane.state & optionActive:
|
|
731
|
+
bmp = self._active_maximize_bitmap
|
|
732
|
+
else:
|
|
733
|
+
bmp = self._inactive_maximize_bitmap
|
|
734
|
+
|
|
735
|
+
elif button == AUI_BUTTON_MINIMIZE:
|
|
736
|
+
if pane.state & optionActive:
|
|
737
|
+
bmp = self._active_minimize_bitmap
|
|
738
|
+
else:
|
|
739
|
+
bmp = self._inactive_minimize_bitmap
|
|
740
|
+
|
|
741
|
+
isVertical = pane.HasCaptionLeft()
|
|
742
|
+
|
|
743
|
+
rect = wx.Rect(*_rect)
|
|
744
|
+
|
|
745
|
+
if isVertical:
|
|
746
|
+
old_x = rect.x
|
|
747
|
+
rect.x = rect.x + (rect.width//2) - (bmp.GetWidth()//2)
|
|
748
|
+
rect.width = old_x + rect.width - rect.x - 1
|
|
749
|
+
else:
|
|
750
|
+
rect.y = rect.y + (rect.height//2) - (bmp.GetHeight()//2)
|
|
751
|
+
|
|
752
|
+
if button_state == AUI_BUTTON_STATE_PRESSED:
|
|
753
|
+
rect.x += 1
|
|
754
|
+
rect.y += 1
|
|
755
|
+
|
|
756
|
+
if button_state in [AUI_BUTTON_STATE_HOVER, AUI_BUTTON_STATE_PRESSED]:
|
|
757
|
+
|
|
758
|
+
if pane.state & optionActive:
|
|
759
|
+
|
|
760
|
+
dc.SetBrush(wx.Brush(StepColour(self._active_caption_colour, 120)))
|
|
761
|
+
dc.SetPen(wx.Pen(StepColour(self._active_caption_colour, 70)))
|
|
762
|
+
|
|
763
|
+
else:
|
|
764
|
+
|
|
765
|
+
dc.SetBrush(wx.Brush(StepColour(self._inactive_caption_colour, 120)))
|
|
766
|
+
dc.SetPen(wx.Pen(StepColour(self._inactive_caption_colour, 70)))
|
|
767
|
+
|
|
768
|
+
if wx.Platform != "__WXMAC__":
|
|
769
|
+
# draw the background behind the button
|
|
770
|
+
dc.DrawRectangle(rect.x, rect.y, 15, 15)
|
|
771
|
+
else:
|
|
772
|
+
# Darker the bitmap a bit
|
|
773
|
+
bmp = DarkenBitmap(bmp, self._active_caption_colour, StepColour(self._active_caption_colour, 110))
|
|
774
|
+
|
|
775
|
+
if isVertical:
|
|
776
|
+
bmp = wx.Bitmap(bmp).ConvertToImage().Rotate90(clockwise=False).ConvertToBitmap()
|
|
777
|
+
|
|
778
|
+
# draw the button itself
|
|
779
|
+
dc.DrawBitmap(bmp, rect.x, rect.y, True)
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
def DrawSashGripper(self, dc, orient, rect):
|
|
783
|
+
"""
|
|
784
|
+
Draws a sash gripper on a sash between two windows.
|
|
785
|
+
|
|
786
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
787
|
+
:param integer `orient`: the sash orientation;
|
|
788
|
+
:param wx.Rect `rect`: the sash rectangle.
|
|
789
|
+
"""
|
|
790
|
+
|
|
791
|
+
dc.SetBrush(self._gripper_brush)
|
|
792
|
+
|
|
793
|
+
if orient == wx.HORIZONTAL: # horizontal sash
|
|
794
|
+
|
|
795
|
+
x = rect.x + int((1.0/4.0)*rect.width)
|
|
796
|
+
xend = rect.x + int((3.0/4.0)*rect.width)
|
|
797
|
+
y = rect.y + (rect.height//2) - 1
|
|
798
|
+
|
|
799
|
+
while 1:
|
|
800
|
+
dc.SetPen(self._gripper_pen3)
|
|
801
|
+
dc.DrawRectangle(x, y, 2, 2)
|
|
802
|
+
dc.SetPen(self._gripper_pen2)
|
|
803
|
+
dc.DrawPoint(x+1, y+1)
|
|
804
|
+
x = x + 5
|
|
805
|
+
|
|
806
|
+
if x >= xend:
|
|
807
|
+
break
|
|
808
|
+
|
|
809
|
+
else:
|
|
810
|
+
|
|
811
|
+
y = rect.y + int((1.0/4.0)*rect.height)
|
|
812
|
+
yend = rect.y + int((3.0/4.0)*rect.height)
|
|
813
|
+
x = rect.x + (rect.width//2) - 1
|
|
814
|
+
|
|
815
|
+
while 1:
|
|
816
|
+
dc.SetPen(self._gripper_pen3)
|
|
817
|
+
dc.DrawRectangle(x, y, 2, 2)
|
|
818
|
+
dc.SetPen(self._gripper_pen2)
|
|
819
|
+
dc.DrawPoint(x+1, y+1)
|
|
820
|
+
y = y + 5
|
|
821
|
+
|
|
822
|
+
if y >= yend:
|
|
823
|
+
break
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
def SetDefaultPaneBitmaps(self, isMac):
|
|
827
|
+
"""
|
|
828
|
+
Assigns the default pane bitmaps.
|
|
829
|
+
|
|
830
|
+
:param bool `isMac`: whether we are on wxMAC or not.
|
|
831
|
+
"""
|
|
832
|
+
|
|
833
|
+
if isMac:
|
|
834
|
+
self._inactive_close_bitmap = DrawMACCloseButton(wx.WHITE, self._inactive_caption_colour)
|
|
835
|
+
self._active_close_bitmap = DrawMACCloseButton(wx.WHITE, self._active_caption_colour)
|
|
836
|
+
else:
|
|
837
|
+
self._inactive_close_bitmap = BitmapFromBits(close_bits, 16, 16, self._inactive_caption_text_colour)
|
|
838
|
+
self._active_close_bitmap = BitmapFromBits(close_bits, 16, 16, self._active_caption_text_colour)
|
|
839
|
+
|
|
840
|
+
if isMac:
|
|
841
|
+
self._inactive_maximize_bitmap = BitmapFromBits(max_bits, 16, 16, wx.WHITE)
|
|
842
|
+
self._active_maximize_bitmap = BitmapFromBits(max_bits, 16, 16, wx.WHITE)
|
|
843
|
+
else:
|
|
844
|
+
self._inactive_maximize_bitmap = BitmapFromBits(max_bits, 16, 16, self._inactive_caption_text_colour)
|
|
845
|
+
self._active_maximize_bitmap = BitmapFromBits(max_bits, 16, 16, self._active_caption_text_colour)
|
|
846
|
+
|
|
847
|
+
if isMac:
|
|
848
|
+
self._inactive_restore_bitmap = BitmapFromBits(restore_bits, 16, 16, wx.WHITE)
|
|
849
|
+
self._active_restore_bitmap = BitmapFromBits(restore_bits, 16, 16, wx.WHITE)
|
|
850
|
+
else:
|
|
851
|
+
self._inactive_restore_bitmap = BitmapFromBits(restore_bits, 16, 16, self._inactive_caption_text_colour)
|
|
852
|
+
self._active_restore_bitmap = BitmapFromBits(restore_bits, 16, 16, self._active_caption_text_colour)
|
|
853
|
+
|
|
854
|
+
if isMac:
|
|
855
|
+
self._inactive_minimize_bitmap = BitmapFromBits(minimize_bits, 16, 16, wx.WHITE)
|
|
856
|
+
self._active_minimize_bitmap = BitmapFromBits(minimize_bits, 16, 16, wx.WHITE)
|
|
857
|
+
else:
|
|
858
|
+
self._inactive_minimize_bitmap = BitmapFromBits(minimize_bits, 16, 16, self._inactive_caption_text_colour)
|
|
859
|
+
self._active_minimize_bitmap = BitmapFromBits(minimize_bits, 16, 16, self._active_caption_text_colour)
|
|
860
|
+
|
|
861
|
+
self._inactive_pin_bitmap = BitmapFromBits(pin_bits, 16, 16, self._inactive_caption_text_colour)
|
|
862
|
+
self._active_pin_bitmap = BitmapFromBits(pin_bits, 16, 16, self._active_caption_text_colour)
|
|
863
|
+
|
|
864
|
+
self._custom_pane_bitmaps = False
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
def SetCustomPaneBitmap(self, bmp, button, active, maximize=False):
|
|
868
|
+
"""
|
|
869
|
+
Sets a custom button bitmap for the pane button.
|
|
870
|
+
|
|
871
|
+
:param wx.Bitmap `bmp`: the actual bitmap to set;
|
|
872
|
+
:param integer `button`: the button identifier;
|
|
873
|
+
:param bool `active`: whether it is the bitmap for the active button or not;
|
|
874
|
+
:param bool `maximize`: used to distinguish between the maximize and restore bitmaps.
|
|
875
|
+
"""
|
|
876
|
+
|
|
877
|
+
if bmp.GetWidth() > 16 or bmp.GetHeight() > 16:
|
|
878
|
+
raise Exception("The input bitmap is too big")
|
|
879
|
+
|
|
880
|
+
if button == AUI_BUTTON_CLOSE:
|
|
881
|
+
if active:
|
|
882
|
+
self._active_close_bitmap = bmp
|
|
883
|
+
else:
|
|
884
|
+
self._inactive_close_bitmap = bmp
|
|
885
|
+
|
|
886
|
+
if wx.Platform == "__WXMAC__":
|
|
887
|
+
self._custom_pane_bitmaps = True
|
|
888
|
+
|
|
889
|
+
elif button == AUI_BUTTON_PIN:
|
|
890
|
+
if active:
|
|
891
|
+
self._active_pin_bitmap = bmp
|
|
892
|
+
else:
|
|
893
|
+
self._inactive_pin_bitmap = bmp
|
|
894
|
+
|
|
895
|
+
elif button == AUI_BUTTON_MAXIMIZE_RESTORE:
|
|
896
|
+
if maximize:
|
|
897
|
+
if active:
|
|
898
|
+
self._active_maximize_bitmap = bmp
|
|
899
|
+
else:
|
|
900
|
+
self._inactive_maximize_bitmap = bmp
|
|
901
|
+
else:
|
|
902
|
+
if active:
|
|
903
|
+
self._active_restore_bitmap = bmp
|
|
904
|
+
else:
|
|
905
|
+
self._inactive_restore_bitmap = bmp
|
|
906
|
+
|
|
907
|
+
elif button == AUI_BUTTON_MINIMIZE:
|
|
908
|
+
if active:
|
|
909
|
+
self._active_minimize_bitmap = bmp
|
|
910
|
+
else:
|
|
911
|
+
self._inactive_minimize_bitmap = bmp
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
if _ctypes:
|
|
915
|
+
class RECT(ctypes.Structure):
|
|
916
|
+
""" Used to handle :class:`ModernDockArt` on Windows XP/Vista/7. """
|
|
917
|
+
_fields_ = [('left', ctypes.c_ulong),('top', ctypes.c_ulong),('right', ctypes.c_ulong),('bottom', ctypes.c_ulong)]
|
|
918
|
+
|
|
919
|
+
def dump(self):
|
|
920
|
+
""" Dumps `self` as a :class:`wx.Rect`. """
|
|
921
|
+
return list(map(int, (self.left, self.top, self.right, self.bottom)))
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
class SIZE(ctypes.Structure):
|
|
925
|
+
""" Used to handle :class:`ModernDockArt` on Windows XP/Vista/7. """
|
|
926
|
+
_fields_ = [('x', ctypes.c_long),('y', ctypes.c_long)]
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
class ModernDockArt(AuiDefaultDockArt):
|
|
930
|
+
"""
|
|
931
|
+
ModernDockArt is a custom `AuiDockArt` class, that implements a look similar to Firefox and other recents applications.
|
|
932
|
+
|
|
933
|
+
Is uses the `winxptheme <https://sourceforge.net/projects/pywin32/>`_ module and
|
|
934
|
+
XP themes whenever possible, so it should look good even if the user has a custom theme.
|
|
935
|
+
|
|
936
|
+
:note: This dock art is Windows only and will only work if you have installed
|
|
937
|
+
Mark Hammond's `pywin32` module (https://sourceforge.net/projects/pywin32/).
|
|
938
|
+
"""
|
|
939
|
+
|
|
940
|
+
def __init__(self, win):
|
|
941
|
+
"""
|
|
942
|
+
Default class constructor.
|
|
943
|
+
|
|
944
|
+
:param wx.Window `win`: the window managed by :class:`~wx.lib.agw.aui.framemanager.AuiManager`.
|
|
945
|
+
"""
|
|
946
|
+
|
|
947
|
+
AuiDefaultDockArt.__init__(self)
|
|
948
|
+
|
|
949
|
+
self.win = win
|
|
950
|
+
|
|
951
|
+
# Get the size of a small close button (themed)
|
|
952
|
+
hwnd = self.win.GetHandle()
|
|
953
|
+
self.usingTheme = False
|
|
954
|
+
|
|
955
|
+
if _ctypes:
|
|
956
|
+
self.hTheme1 = winxptheme.OpenThemeData(hwnd, "Window")
|
|
957
|
+
self.usingTheme = True
|
|
958
|
+
|
|
959
|
+
if not self.hTheme1:
|
|
960
|
+
self.usingTheme = False
|
|
961
|
+
|
|
962
|
+
self._button_size = 13
|
|
963
|
+
|
|
964
|
+
self._button_border_size = 3
|
|
965
|
+
self._caption_text_indent = 6
|
|
966
|
+
self._caption_size = 22
|
|
967
|
+
|
|
968
|
+
# We only highlight the active pane with the caption text being in bold.
|
|
969
|
+
# So we do not want a special colour for active elements.
|
|
970
|
+
self._active_close_bitmap = self._inactive_close_bitmap
|
|
971
|
+
|
|
972
|
+
self.Init()
|
|
973
|
+
|
|
974
|
+
|
|
975
|
+
def Init(self):
|
|
976
|
+
""" Initializes the dock art. """
|
|
977
|
+
|
|
978
|
+
AuiDefaultDockArt.Init(self)
|
|
979
|
+
|
|
980
|
+
self._active_caption_colour = self._inactive_caption_colour
|
|
981
|
+
self._active_caption_text_colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_CAPTIONTEXT)
|
|
982
|
+
self._inactive_caption_text_colour = self._active_caption_text_colour
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
def DrawCaption(self, dc, window, text, rect, pane):
|
|
986
|
+
"""
|
|
987
|
+
Draws the text in the pane caption.
|
|
988
|
+
|
|
989
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
990
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
991
|
+
:param string `text`: the text to be displayed;
|
|
992
|
+
:param wx.Rect `rect`: the pane caption rectangle;
|
|
993
|
+
:param `pane`: the pane for which the text is drawn.
|
|
994
|
+
"""
|
|
995
|
+
|
|
996
|
+
dc.SetPen(wx.TRANSPARENT_PEN)
|
|
997
|
+
self.DrawCaptionBackground(dc, rect, pane)
|
|
998
|
+
|
|
999
|
+
active = ((pane.state & optionActive) and [True] or [False])[0]
|
|
1000
|
+
|
|
1001
|
+
self._caption_font.SetWeight(wx.FONTWEIGHT_BOLD)
|
|
1002
|
+
dc.SetFont(self._caption_font)
|
|
1003
|
+
|
|
1004
|
+
if active:
|
|
1005
|
+
dc.SetTextForeground(self._active_caption_text_colour)
|
|
1006
|
+
else:
|
|
1007
|
+
dc.SetTextForeground(self._inactive_caption_text_colour)
|
|
1008
|
+
|
|
1009
|
+
w, h = dc.GetTextExtent("ABCDEFHXfgkj")
|
|
1010
|
+
|
|
1011
|
+
clip_rect = wx.Rect(*rect)
|
|
1012
|
+
btns = pane.CountButtons()
|
|
1013
|
+
|
|
1014
|
+
captionLeft = pane.HasCaptionLeft()
|
|
1015
|
+
variable = (captionLeft and [rect.height] or [rect.width])[0]
|
|
1016
|
+
|
|
1017
|
+
variable -= 3 # text offset
|
|
1018
|
+
variable -= 2 # button padding
|
|
1019
|
+
|
|
1020
|
+
caption_offset = 0
|
|
1021
|
+
if pane.icon:
|
|
1022
|
+
if captionLeft:
|
|
1023
|
+
caption_offset += pane.icon.GetHeight() + 3
|
|
1024
|
+
else:
|
|
1025
|
+
caption_offset += pane.icon.GetWidth() + 3
|
|
1026
|
+
|
|
1027
|
+
self.DrawIcon(dc, rect, pane)
|
|
1028
|
+
|
|
1029
|
+
diff = -2
|
|
1030
|
+
if self.usingTheme:
|
|
1031
|
+
diff = -1
|
|
1032
|
+
|
|
1033
|
+
variable -= caption_offset
|
|
1034
|
+
variable -= btns*(self._button_size + self._button_border_size)
|
|
1035
|
+
draw_text = ChopText(dc, text, variable)
|
|
1036
|
+
|
|
1037
|
+
if captionLeft:
|
|
1038
|
+
dc.DrawRotatedText(draw_text, rect.x+(rect.width/2)-(h/2)-diff, rect.y+rect.height-3-caption_offset, 90)
|
|
1039
|
+
else:
|
|
1040
|
+
dc.DrawText(draw_text, rect.x+3+caption_offset, rect.y+(rect.height/2)-(h/2)-diff)
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
def DrawCaptionBackground(self, dc, rect, pane):
|
|
1044
|
+
"""
|
|
1045
|
+
Draws the text caption background in the pane.
|
|
1046
|
+
|
|
1047
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
1048
|
+
:param wx.Rect `rect`: the text caption rectangle;
|
|
1049
|
+
:param `pane`: the pane for which we are drawing the caption background.
|
|
1050
|
+
"""
|
|
1051
|
+
|
|
1052
|
+
dc.SetBrush(self._background_brush)
|
|
1053
|
+
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height)
|
|
1054
|
+
|
|
1055
|
+
active = ((pane.state & optionActive) and [True] or [False])[0]
|
|
1056
|
+
|
|
1057
|
+
if self.usingTheme:
|
|
1058
|
+
|
|
1059
|
+
rectangle = wx.Rect()
|
|
1060
|
+
|
|
1061
|
+
rc = RECT(rectangle.x, rectangle.y, rectangle.width, rectangle.height)
|
|
1062
|
+
|
|
1063
|
+
# If rect x/y values are negative rc.right/bottom values will overflow and winxptheme.DrawThemeBackground
|
|
1064
|
+
# will raise a TypeError. Ensure they are never negative.
|
|
1065
|
+
rect.x = max(0, rect.x)
|
|
1066
|
+
rect.y = max(0, rect.y)
|
|
1067
|
+
|
|
1068
|
+
rc.top = rect.x
|
|
1069
|
+
rc.left = rect.y
|
|
1070
|
+
rc.right = rect.x + rect.width
|
|
1071
|
+
rc.bottom = rect.y + rect.height
|
|
1072
|
+
|
|
1073
|
+
if active:
|
|
1074
|
+
winxptheme.DrawThemeBackground(self.hTheme1, int(dc.GetHandle()), 5, 1, (rc.top, rc.left, rc.right, rc.bottom), None)
|
|
1075
|
+
else:
|
|
1076
|
+
winxptheme.DrawThemeBackground(self.hTheme1, int(dc.GetHandle()), 5, 2, (rc.top, rc.left, rc.right, rc.bottom), None)
|
|
1077
|
+
|
|
1078
|
+
else:
|
|
1079
|
+
|
|
1080
|
+
AuiDefaultDockArt.DrawCaptionBackground(self, dc, rect, pane)
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
def RequestUserAttention(self, dc, window, text, rect, pane):
|
|
1084
|
+
"""
|
|
1085
|
+
Requests the user attention by intermittently highlighting the pane caption.
|
|
1086
|
+
|
|
1087
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
1088
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
1089
|
+
:param string `text`: the text to be displayed;
|
|
1090
|
+
:param wx.Rect `rect`: the pane caption rectangle;
|
|
1091
|
+
:param `pane`: the pane for which the text is drawn.
|
|
1092
|
+
"""
|
|
1093
|
+
|
|
1094
|
+
state = pane.state
|
|
1095
|
+
pane.state &= ~optionActive
|
|
1096
|
+
|
|
1097
|
+
for indx in range(6):
|
|
1098
|
+
active = (indx%2 == 0 and [True] or [False])[0]
|
|
1099
|
+
if active:
|
|
1100
|
+
pane.state |= optionActive
|
|
1101
|
+
else:
|
|
1102
|
+
pane.state &= ~optionActive
|
|
1103
|
+
|
|
1104
|
+
self.DrawCaptionBackground(dc, rect, pane)
|
|
1105
|
+
self.DrawCaption(dc, window, text, rect, pane)
|
|
1106
|
+
wx.SafeYield()
|
|
1107
|
+
wx.MilliSleep(350)
|
|
1108
|
+
|
|
1109
|
+
pane.state = state
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
def DrawPaneButton(self, dc, window, button, button_state, rect, pane):
|
|
1113
|
+
"""
|
|
1114
|
+
Draws a pane button in the pane caption area.
|
|
1115
|
+
|
|
1116
|
+
:param `dc`: a :class:`wx.DC` device context;
|
|
1117
|
+
:param `window`: an instance of :class:`wx.Window`;
|
|
1118
|
+
:param integer `button`: the button to be drawn;
|
|
1119
|
+
:param integer `button_state`: the pane button state;
|
|
1120
|
+
:param wx.Rect `rect`: the pane caption rectangle;
|
|
1121
|
+
:param `pane`: the pane for which the button is drawn.
|
|
1122
|
+
"""
|
|
1123
|
+
|
|
1124
|
+
if self.usingTheme:
|
|
1125
|
+
|
|
1126
|
+
hTheme = self.hTheme1
|
|
1127
|
+
|
|
1128
|
+
# Get the real button position (compensating for borders)
|
|
1129
|
+
drect = wx.Rect(rect.x, rect.y, self._button_size, self._button_size)
|
|
1130
|
+
|
|
1131
|
+
# Draw the themed close button
|
|
1132
|
+
rc = RECT(0, 0, 0, 0)
|
|
1133
|
+
if pane.HasCaptionLeft():
|
|
1134
|
+
rc.top = rect.x + self._button_border_size
|
|
1135
|
+
rc.left = int(rect.y + 1.5*self._button_border_size)
|
|
1136
|
+
rc.right = rect.x + self._button_size + self._button_border_size
|
|
1137
|
+
rc.bottom = int(rect.y + self._button_size + 1.5*self._button_border_size)
|
|
1138
|
+
else:
|
|
1139
|
+
rc.top = rect.x - self._button_border_size
|
|
1140
|
+
rc.left = int(rect.y + 1.5*self._button_border_size)
|
|
1141
|
+
rc.right = rect.x + self._button_size- self._button_border_size
|
|
1142
|
+
rc.bottom = int(rect.y + self._button_size + 1.5*self._button_border_size)
|
|
1143
|
+
|
|
1144
|
+
if button == AUI_BUTTON_CLOSE:
|
|
1145
|
+
btntype = 19
|
|
1146
|
+
|
|
1147
|
+
elif button == AUI_BUTTON_PIN:
|
|
1148
|
+
btntype = 23
|
|
1149
|
+
|
|
1150
|
+
elif button == AUI_BUTTON_MAXIMIZE_RESTORE:
|
|
1151
|
+
if not pane.IsMaximized():
|
|
1152
|
+
btntype = 17
|
|
1153
|
+
else:
|
|
1154
|
+
btntype = 21
|
|
1155
|
+
else:
|
|
1156
|
+
btntype = 15
|
|
1157
|
+
|
|
1158
|
+
state = 4 # CBS_DISABLED
|
|
1159
|
+
|
|
1160
|
+
if pane.state & optionActive:
|
|
1161
|
+
|
|
1162
|
+
if button_state == AUI_BUTTON_STATE_NORMAL:
|
|
1163
|
+
state = 1 # CBS_NORMAL
|
|
1164
|
+
|
|
1165
|
+
elif button_state == AUI_BUTTON_STATE_HOVER:
|
|
1166
|
+
state = 2 # CBS_HOT
|
|
1167
|
+
|
|
1168
|
+
elif button_state == AUI_BUTTON_STATE_PRESSED:
|
|
1169
|
+
state = 3 # CBS_PUSHED
|
|
1170
|
+
|
|
1171
|
+
else:
|
|
1172
|
+
raise Exception("ERROR: Unknown State.")
|
|
1173
|
+
|
|
1174
|
+
else: # inactive pane
|
|
1175
|
+
|
|
1176
|
+
if button_state == AUI_BUTTON_STATE_NORMAL:
|
|
1177
|
+
state = 5 # CBS_NORMAL
|
|
1178
|
+
|
|
1179
|
+
elif button_state == AUI_BUTTON_STATE_HOVER:
|
|
1180
|
+
state = 6 # CBS_HOT
|
|
1181
|
+
|
|
1182
|
+
elif button_state == AUI_BUTTON_STATE_PRESSED:
|
|
1183
|
+
state = 7 # CBS_PUSHED
|
|
1184
|
+
|
|
1185
|
+
else:
|
|
1186
|
+
raise Exception("ERROR: Unknown State.")
|
|
1187
|
+
|
|
1188
|
+
try:
|
|
1189
|
+
winxptheme.DrawThemeBackground(hTheme, int(dc.GetHandle()), btntype, state, (rc.top, rc.left, rc.right, rc.bottom), None)
|
|
1190
|
+
except TypeError:
|
|
1191
|
+
return
|
|
1192
|
+
|
|
1193
|
+
else:
|
|
1194
|
+
|
|
1195
|
+
# Fallback to default closebutton if themes are not enabled
|
|
1196
|
+
rect2 = wx.Rect(rect.x-4, rect.y+2, rect.width, rect.height)
|
|
1197
|
+
AuiDefaultDockArt.DrawPaneButton(self, dc, window, button, button_state, rect2, pane)
|
|
1198
|
+
|