Merge pull request #189 from RobinD42/add-wxaui

WIP: Add wxaui
This commit is contained in:
Robin Dunn
2016-11-23 22:07:30 -08:00
committed by GitHub
27 changed files with 1140 additions and 90 deletions

View File

@@ -143,8 +143,6 @@ Other Dev Stuff
* [] New activex classes in wx/msw/ole/activex.h ?
* Any others?
* Add _aui module ?? (or go with only agw aui?)
* Add the UTF8 PyMethods from classic (see _stc_utf8_methods.py) to StyledTextCtrl
* Reimplement the classes in the valgen, valnum and valtext headers as

View File

@@ -7,11 +7,7 @@
import wx
import wx.grid
import wx.html
try:
from agw import aui
except ImportError: # if it's not there locally, try the wxPython lib.
import wx.lib.agw.aui as aui
import wx.aui as aui
from six import BytesIO
@@ -163,69 +159,69 @@ class PyAUIFrame(wx.Frame):
tb1 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER)
tb1.SetToolBitmapSize(wx.Size(48,48))
tb1.AddLabelTool(101, "Test", wx.ArtProvider.GetBitmap(wx.ART_ERROR))
tb1.AddTool(101, "Test", wx.ArtProvider.GetBitmap(wx.ART_ERROR))
tb1.AddSeparator()
tb1.AddLabelTool(102, "Test", wx.ArtProvider.GetBitmap(wx.ART_QUESTION))
tb1.AddLabelTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_INFORMATION))
tb1.AddLabelTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_WARNING))
tb1.AddLabelTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_MISSING_IMAGE))
tb1.AddTool(102, "Test", wx.ArtProvider.GetBitmap(wx.ART_QUESTION))
tb1.AddTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_INFORMATION))
tb1.AddTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_WARNING))
tb1.AddTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_MISSING_IMAGE))
tb1.Realize()
tb2 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER)
tb2.SetToolBitmapSize(wx.Size(16,16))
tb2_bmp1 = wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_OTHER, wx.Size(16, 16))
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddSeparator()
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddSeparator()
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.AddTool(101, "Test", tb2_bmp1)
tb2.Realize()
tb3 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER)
tb3.SetToolBitmapSize(wx.Size(16,16))
tb3_bmp1 = wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16, 16))
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddTool(101, "Test", tb3_bmp1)
tb3.AddTool(101, "Test", tb3_bmp1)
tb3.AddTool(101, "Test", tb3_bmp1)
tb3.AddTool(101, "Test", tb3_bmp1)
tb3.AddSeparator()
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddTool(101, "Test", tb3_bmp1)
tb3.AddTool(101, "Test", tb3_bmp1)
tb3.Realize()
tb4 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER | wx.TB_HORZ_TEXT)
tb4.SetToolBitmapSize(wx.Size(16,16))
tb4_bmp1 = wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16, 16))
tb4.AddLabelTool(101, "Item 1", tb4_bmp1)
tb4.AddLabelTool(101, "Item 2", tb4_bmp1)
tb4.AddLabelTool(101, "Item 3", tb4_bmp1)
tb4.AddLabelTool(101, "Item 4", tb4_bmp1)
tb4.AddTool(101, "Item 1", tb4_bmp1)
tb4.AddTool(101, "Item 2", tb4_bmp1)
tb4.AddTool(101, "Item 3", tb4_bmp1)
tb4.AddTool(101, "Item 4", tb4_bmp1)
tb4.AddSeparator()
tb4.AddLabelTool(101, "Item 5", tb4_bmp1)
tb4.AddLabelTool(101, "Item 6", tb4_bmp1)
tb4.AddLabelTool(101, "Item 7", tb4_bmp1)
tb4.AddLabelTool(101, "Item 8", tb4_bmp1)
tb4.AddTool(101, "Item 5", tb4_bmp1)
tb4.AddTool(101, "Item 6", tb4_bmp1)
tb4.AddTool(101, "Item 7", tb4_bmp1)
tb4.AddTool(101, "Item 8", tb4_bmp1)
tb4.Realize()
tb5 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER | wx.TB_VERTICAL)
tb5.SetToolBitmapSize(wx.Size(48, 48))
tb5.AddLabelTool(101, "Test", wx.ArtProvider.GetBitmap(wx.ART_ERROR))
tb5.AddTool(101, "Test", wx.ArtProvider.GetBitmap(wx.ART_ERROR))
tb5.AddSeparator()
tb5.AddLabelTool(102, "Test", wx.ArtProvider.GetBitmap(wx.ART_QUESTION))
tb5.AddLabelTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_INFORMATION))
tb5.AddLabelTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_WARNING))
tb5.AddLabelTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_MISSING_IMAGE))
tb5.AddTool(102, "Test", wx.ArtProvider.GetBitmap(wx.ART_QUESTION))
tb5.AddTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_INFORMATION))
tb5.AddTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_WARNING))
tb5.AddTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_MISSING_IMAGE))
tb5.Realize()
# add a bunch of panes
@@ -451,10 +447,10 @@ class PyAUIFrame(wx.Frame):
def OnAbout(self, event):
msg = "aui Demo\n" + \
msg = "wx.aui Demo\n" + \
"An advanced window management library for wxWidgets\n" + \
"(c) Copyright 2005-2006, Kirix Corporation"
dlg = wx.MessageDialog(self, msg, "About aui Demo",
dlg = wx.MessageDialog(self, msg, "About wx.aui Demo",
wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
@@ -743,12 +739,12 @@ class PyAUIFrame(wx.Frame):
# -- wx.SizeReportCtrl --
# (a utility control that always reports it's client size)
class SizeReportCtrl(wx.PyControl):
class SizeReportCtrl(wx.Control):
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
size=wx.DefaultSize, mgr=None):
wx.PyControl.__init__(self, parent, id, pos, size, wx.NO_BORDER)
wx.Control.__init__(self, parent, id, pos, size, wx.NO_BORDER)
self._mgr = mgr

View File

@@ -39,7 +39,7 @@
<span class="linkdescr">A generic, ground-up implementation of a text control capable of showing multiple text styles and images.</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("wx.ribbon.1moduleindex") }}">wx.ribbon</a><br/>
<span class="linkdescr">A tabbed generic, ground-up implementation of a text control capable of showing multiple text styles and images.</span></p>
<span class="linkdescr">A set of classes for writing a ribbon-based UI, typically a combonation of tabs and toolbar, similar to the UI in MS Office and Windows 10.</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("wx.html.1moduleindex") }}">wx.html</a><br/>
<span class="linkdescr">Widget and supporting classes for a generic html renderer</span></p>
@@ -47,6 +47,9 @@
<p class="biglink"><a class="biglink" href="{{ pathto("wx.html2.1moduleindex") }}">wx.html2</a><br/>
<span class="linkdescr">Widget and supporting classes for a native html renderer, with CSS and javascript support</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("wx.aui.1moduleindex") }}">wx.aui</a><br/>
<span class="linkdescr">Docking/floating window panes, draggable notebook tabs, etc.</span></p>
</td>
<td valign="top" width="50%" style="margin-left: 5px">

View File

@@ -106,6 +106,96 @@
"ART_TOOLBAR":"wx.",
"ART_UNDO":"wx.",
"ART_WARNING":"wx.",
"AUI_BUTTON_CLOSE":"wx.aui.",
"AUI_BUTTON_CUSTOM1":"wx.aui.",
"AUI_BUTTON_CUSTOM2":"wx.aui.",
"AUI_BUTTON_CUSTOM3":"wx.aui.",
"AUI_BUTTON_DOWN":"wx.aui.",
"AUI_BUTTON_LEFT":"wx.aui.",
"AUI_BUTTON_MAXIMIZE_RESTORE":"wx.aui.",
"AUI_BUTTON_MINIMIZE":"wx.aui.",
"AUI_BUTTON_OPTIONS":"wx.aui.",
"AUI_BUTTON_PIN":"wx.aui.",
"AUI_BUTTON_RIGHT":"wx.aui.",
"AUI_BUTTON_STATE_CHECKED":"wx.aui.",
"AUI_BUTTON_STATE_DISABLED":"wx.aui.",
"AUI_BUTTON_STATE_HIDDEN":"wx.aui.",
"AUI_BUTTON_STATE_HOVER":"wx.aui.",
"AUI_BUTTON_STATE_NORMAL":"wx.aui.",
"AUI_BUTTON_STATE_PRESSED":"wx.aui.",
"AUI_BUTTON_UP":"wx.aui.",
"AUI_BUTTON_WINDOWLIST":"wx.aui.",
"AUI_DOCKART_ACTIVE_CAPTION_COLOUR":"wx.aui.",
"AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR":"wx.aui.",
"AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR":"wx.aui.",
"AUI_DOCKART_BACKGROUND_COLOUR":"wx.aui.",
"AUI_DOCKART_BORDER_COLOUR":"wx.aui.",
"AUI_DOCKART_CAPTION_FONT":"wx.aui.",
"AUI_DOCKART_CAPTION_SIZE":"wx.aui.",
"AUI_DOCKART_GRADIENT_TYPE":"wx.aui.",
"AUI_DOCKART_GRIPPER_COLOUR":"wx.aui.",
"AUI_DOCKART_GRIPPER_SIZE":"wx.aui.",
"AUI_DOCKART_INACTIVE_CAPTION_COLOUR":"wx.aui.",
"AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR":"wx.aui.",
"AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR":"wx.aui.",
"AUI_DOCKART_PANE_BORDER_SIZE":"wx.aui.",
"AUI_DOCKART_PANE_BUTTON_SIZE":"wx.aui.",
"AUI_DOCKART_SASH_COLOUR":"wx.aui.",
"AUI_DOCKART_SASH_SIZE":"wx.aui.",
"AUI_DOCK_BOTTOM":"wx.aui.",
"AUI_DOCK_CENTER":"wx.aui.",
"AUI_DOCK_CENTRE":"wx.aui.",
"AUI_DOCK_LEFT":"wx.aui.",
"AUI_DOCK_NONE":"wx.aui.",
"AUI_DOCK_RIGHT":"wx.aui.",
"AUI_DOCK_TOP":"wx.aui.",
"AUI_GRADIENT_HORIZONTAL":"wx.aui.",
"AUI_GRADIENT_NONE":"wx.aui.",
"AUI_GRADIENT_VERTICAL":"wx.aui.",
"AUI_MGR_ALLOW_ACTIVE_PANE":"wx.aui.",
"AUI_MGR_ALLOW_FLOATING":"wx.aui.",
"AUI_MGR_DEFAULT":"wx.aui.",
"AUI_MGR_HINT_FADE":"wx.aui.",
"AUI_MGR_LIVE_RESIZE":"wx.aui.",
"AUI_MGR_NO_VENETIAN_BLINDS_FADE":"wx.aui.",
"AUI_MGR_RECTANGLE_HINT":"wx.aui.",
"AUI_MGR_TRANSPARENT_DRAG":"wx.aui.",
"AUI_MGR_TRANSPARENT_HINT":"wx.aui.",
"AUI_MGR_VENETIAN_BLINDS_HINT":"wx.aui.",
"AUI_NB_BOTTOM":"wx.aui.",
"AUI_NB_CLOSE_BUTTON":"wx.aui.",
"AUI_NB_CLOSE_ON_ACTIVE_TAB":"wx.aui.",
"AUI_NB_CLOSE_ON_ALL_TABS":"wx.aui.",
"AUI_NB_DEFAULT_STYLE":"wx.aui.",
"AUI_NB_LEFT":"wx.aui.",
"AUI_NB_MIDDLE_CLICK_CLOSE":"wx.aui.",
"AUI_NB_RIGHT":"wx.aui.",
"AUI_NB_SCROLL_BUTTONS":"wx.aui.",
"AUI_NB_TAB_EXTERNAL_MOVE":"wx.aui.",
"AUI_NB_TAB_FIXED_WIDTH":"wx.aui.",
"AUI_NB_TAB_MOVE":"wx.aui.",
"AUI_NB_TAB_SPLIT":"wx.aui.",
"AUI_NB_TOP":"wx.aui.",
"AUI_NB_WINDOWLIST_BUTTON":"wx.aui.",
"AUI_ORIENTATION_MASK":"wx.aui.",
"AUI_TBART_GRIPPER_SIZE":"wx.aui.",
"AUI_TBART_OVERFLOW_SIZE":"wx.aui.",
"AUI_TBART_SEPARATOR_SIZE":"wx.aui.",
"AUI_TBTOOL_TEXT_BOTTOM":"wx.aui.",
"AUI_TBTOOL_TEXT_LEFT":"wx.aui.",
"AUI_TBTOOL_TEXT_RIGHT":"wx.aui.",
"AUI_TBTOOL_TEXT_TOP":"wx.aui.",
"AUI_TB_DEFAULT_STYLE":"wx.aui.",
"AUI_TB_GRIPPER":"wx.aui.",
"AUI_TB_HORIZONTAL":"wx.aui.",
"AUI_TB_HORZ_LAYOUT":"wx.aui.",
"AUI_TB_HORZ_TEXT":"wx.aui.",
"AUI_TB_NO_AUTORESIZE":"wx.aui.",
"AUI_TB_NO_TOOLTIPS":"wx.aui.",
"AUI_TB_OVERFLOW":"wx.aui.",
"AUI_TB_PLAIN_BACKGROUND":"wx.aui.",
"AUI_TB_TEXT":"wx.aui.",
"AUI_TB_VERTICAL":"wx.aui.",
"Abort":"wx.",
"AboutBox":"wx.adv.",
"AboutDialogInfo":"wx.adv.",
@@ -139,6 +229,40 @@
"AsIs":"wx.",
"AssertHandler_t":"wx.",
"AttrKind":"wx.grid.GridCellAttr.",
"AuiButtonId":"wx.aui.",
"AuiDefaultDockArt":"wx.aui.",
"AuiDefaultTabArt":"wx.aui.",
"AuiDefaultToolBarArt":"wx.aui.",
"AuiDockArt":"wx.aui.",
"AuiDockInfo":"wx.aui.",
"AuiDockUIPart":"wx.aui.",
"AuiMDIChildFrame":"wx.aui.",
"AuiMDIClientWindow":"wx.aui.",
"AuiMDIParentFrame":"wx.aui.",
"AuiManager":"wx.aui.",
"AuiManagerDock":"wx.aui.",
"AuiManagerEvent":"wx.aui.",
"AuiManagerOption":"wx.aui.",
"AuiNotebook":"wx.aui.",
"AuiNotebookEvent":"wx.aui.",
"AuiNotebookOption":"wx.aui.",
"AuiNotebookPage":"wx.aui.",
"AuiPaneButton":"wx.aui.",
"AuiPaneButtonState":"wx.aui.",
"AuiPaneDockArtGradients":"wx.aui.",
"AuiPaneDockArtSetting":"wx.aui.",
"AuiPaneInfo":"wx.aui.",
"AuiSimpleTabArt":"wx.aui.",
"AuiTabArt":"wx.aui.",
"AuiTabContainer":"wx.aui.",
"AuiTabContainerButton":"wx.aui.",
"AuiToolBar":"wx.aui.",
"AuiToolBarArt":"wx.aui.",
"AuiToolBarArtSetting":"wx.aui.",
"AuiToolBarEvent":"wx.aui.",
"AuiToolBarItem":"wx.aui.",
"AuiToolBarStyle":"wx.aui.",
"AuiToolBarToolTextOrientation":"wx.aui.",
"AutoBufferedPaintDC":"wx.",
"AutoBufferedPaintDCFactory":"wx.",
"BACKINGSTORE":"wx.",
@@ -1125,6 +1249,7 @@
"GetSingleChoice":"wx.",
"GetSingleChoiceData":"wx.",
"GetSingleChoiceIndex":"wx.",
"GetStockLabel":"wx.",
"GetTextFromUser":"wx.",
"GetTextFromUserPromptStr":"wx.",
"GetTopLevelParent":"wx.",
@@ -5179,6 +5304,11 @@
"STC_YAML_OPERATOR":"wx.stc.",
"STC_YAML_REFERENCE":"wx.stc.",
"STC_YAML_TEXT":"wx.stc.",
"STOCK_FOR_BUTTON":"wx.",
"STOCK_NOFLAGS":"wx.",
"STOCK_WITHOUT_ELLIPSIS":"wx.",
"STOCK_WITH_ACCELERATOR":"wx.",
"STOCK_WITH_MNEMONIC":"wx.",
"STREAM_EOF":"wx.",
"STREAM_NO_ERROR":"wx.",
"STREAM_READ_ERROR":"wx.",
@@ -5367,6 +5497,7 @@
"StatusBarPane":"wx.",
"StdDialogButtonSizer":"wx.",
"StockCursor":"wx.",
"StockLabelQueryFlag":"wx.",
"StockPreferencesPage":"wx.",
"StopWatch":"wx.",
"StreamBase":"wx.",
@@ -6121,6 +6252,33 @@
"wxEVT_ACTIVATE":"wx.",
"wxEVT_ACTIVATE_APP":"wx.",
"wxEVT_ANY":"wx.",
"wxEVT_AUINOTEBOOK_ALLOW_DND":"wx.aui.",
"wxEVT_AUINOTEBOOK_BEGIN_DRAG":"wx.aui.",
"wxEVT_AUINOTEBOOK_BG_DCLICK":"wx.aui.",
"wxEVT_AUINOTEBOOK_BUTTON":"wx.aui.",
"wxEVT_AUINOTEBOOK_DRAG_DONE":"wx.aui.",
"wxEVT_AUINOTEBOOK_DRAG_MOTION":"wx.aui.",
"wxEVT_AUINOTEBOOK_END_DRAG":"wx.aui.",
"wxEVT_AUINOTEBOOK_PAGE_CHANGED":"wx.aui.",
"wxEVT_AUINOTEBOOK_PAGE_CHANGING":"wx.aui.",
"wxEVT_AUINOTEBOOK_PAGE_CLOSE":"wx.aui.",
"wxEVT_AUINOTEBOOK_PAGE_CLOSED":"wx.aui.",
"wxEVT_AUINOTEBOOK_TAB_MIDDLE_DOWN":"wx.aui.",
"wxEVT_AUINOTEBOOK_TAB_MIDDLE_UP":"wx.aui.",
"wxEVT_AUINOTEBOOK_TAB_RIGHT_DOWN":"wx.aui.",
"wxEVT_AUINOTEBOOK_TAB_RIGHT_UP":"wx.aui.",
"wxEVT_AUITOOLBAR_BEGIN_DRAG":"wx.aui.",
"wxEVT_AUITOOLBAR_MIDDLE_CLICK":"wx.aui.",
"wxEVT_AUITOOLBAR_OVERFLOW_CLICK":"wx.aui.",
"wxEVT_AUITOOLBAR_RIGHT_CLICK":"wx.aui.",
"wxEVT_AUITOOLBAR_TOOL_DROPDOWN":"wx.aui.",
"wxEVT_AUI_FIND_MANAGER":"wx.aui.",
"wxEVT_AUI_PANE_ACTIVATED":"wx.aui.",
"wxEVT_AUI_PANE_BUTTON":"wx.aui.",
"wxEVT_AUI_PANE_CLOSE":"wx.aui.",
"wxEVT_AUI_PANE_MAXIMIZE":"wx.aui.",
"wxEVT_AUI_PANE_RESTORE":"wx.aui.",
"wxEVT_AUI_RENDER":"wx.aui.",
"wxEVT_AUX1_DCLICK":"wx.",
"wxEVT_AUX1_DOWN":"wx.",
"wxEVT_AUX1_UP":"wx.",

View File

@@ -0,0 +1,6 @@
text1 = wx.TextCtrl(self)
text2 = wx.TextCtrl(self)
self.mgr.AddPane(text1, wx.LEFT, "Pane Caption")
self.mgr.AddPane(text2, wx.BOTTOM, "Pane Caption")
self.mgr.Update()

View File

@@ -0,0 +1,2 @@
self.mgr.GetPane(text1).Float()

78
etg/_aui.py Normal file
View File

@@ -0,0 +1,78 @@
#---------------------------------------------------------------------------
# Name: etg/_aui.py
# Author: Robin Dunn
#
# Created: 25-Oct-2016
# Copyright: (c) 2016 by Total Control Software
# License: wxWindows License
#---------------------------------------------------------------------------
import etgtools
import etgtools.tweaker_tools as tools
PACKAGE = "wx"
MODULE = "_aui"
NAME = "_aui" # Base name of the file to generate to for this script
DOCSTRING = """\
`wx.aui` provides a set of classes for implementing an "Advanced User Interface".
More specifically, these classes enable to you present some of your application in
floating or dockable panels, notebooks with floatable tabs, etc.
There is also a pure-python implementation of these classes available in the
`wx.lib.agw.aui` package.
"""
# The classes and/or the basename of the Doxygen XML files to be processed by
# this script.
ITEMS = [ ]
# The list of other ETG scripts and back-end generator modules that are
# included as part of this module. These should all be items that are put in
# the wxWidgets "aui" library in a multi-lib build.
INCLUDES = [ 'auiframemanager',
'auidockart',
'auibar',
'auibook',
'auitabmdi',
]
# Separate the list into those that are generated from ETG scripts and the
# rest. These lists can be used from the build scripts to get a list of
# sources and/or additional dependencies when building this extension module.
ETGFILES = ['etg/%s.py' % NAME] + tools.getEtgFiles(INCLUDES)
DEPENDS = tools.getNonEtgFiles(INCLUDES)
OTHERDEPS = [ ]
#---------------------------------------------------------------------------
def run():
# Parse the XML file(s) building a collection of Extractor objects
module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
etgtools.parseDoxyXML(module, ITEMS)
module.check4unittest = False
#-----------------------------------------------------------------
# Tweak the parsed meta objects in the module object as needed for
# customizing the generated code and docstrings.
module.addHeaderCode('#include <wxpy_api.h>')
module.addImport('_core')
module.addPyCode("import wx", order=10)
module.addHeaderCode('#include <wx/aui/aui.h>')
module.addInclude(INCLUDES)
#-----------------------------------------------------------------
tools.doCommonTweaks(module)
tools.runGenerators(module)
#---------------------------------------------------------------------------
if __name__ == '__main__':
run()

View File

@@ -228,6 +228,7 @@ INCLUDES = [ # base and core stuff
'preferences',
'modalhook',
'unichar',
'stockitem',
]

67
etg/auibar.py Normal file
View File

@@ -0,0 +1,67 @@
#---------------------------------------------------------------------------
# Name: etg/auibar.py
# Author: Robin Dunn
#
# Created: 26-Oct-2016
# Copyright: (c) 2016 by Total Control Software
# License: wxWindows License
#---------------------------------------------------------------------------
import etgtools
import etgtools.tweaker_tools as tools
PACKAGE = "wx"
MODULE = "_aui"
NAME = "auibar" # Base name of the file to generate to for this script
DOCSTRING = ""
# The classes and/or the basename of the Doxygen XML files to be processed by
# this script.
ITEMS = [ 'wxAuiToolBarItem',
'wxAuiToolBarArt',
'wxAuiDefaultToolBarArt',
'wxAuiToolBar',
'wxAuiToolBarEvent',
]
#---------------------------------------------------------------------------
def run():
# Parse the XML file(s) building a collection of Extractor objects
module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
etgtools.parseDoxyXML(module, ITEMS)
#-----------------------------------------------------------------
# Tweak the parsed meta objects in the module object as needed for
# customizing the generated code and docstrings.
c = module.find('wxAuiToolBar')
assert isinstance(c, etgtools.ClassDef)
tools.fixWindowClass(c)
c = module.find('wxAuiToolBarEvent')
tools.fixEventClass(c)
c.addPyCode("""\
EVT_AUITOOLBAR_TOOL_DROPDOWN = wx.PyEventBinder( wxEVT_AUITOOLBAR_TOOL_DROPDOWN, 1 )
EVT_AUITOOLBAR_OVERFLOW_CLICK = wx.PyEventBinder( wxEVT_AUITOOLBAR_OVERFLOW_CLICK, 1 )
EVT_AUITOOLBAR_RIGHT_CLICK = wx.PyEventBinder( wxEVT_AUITOOLBAR_RIGHT_CLICK, 1 )
EVT_AUITOOLBAR_MIDDLE_CLICK = wx.PyEventBinder( wxEVT_AUITOOLBAR_MIDDLE_CLICK, 1 )
EVT_AUITOOLBAR_BEGIN_DRAG = wx.PyEventBinder( wxEVT_AUITOOLBAR_BEGIN_DRAG, 1 )
""")
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiToolBarItemArray', 'wxAuiToolBarItem', module))
#-----------------------------------------------------------------
tools.doCommonTweaks(module)
tools.runGenerators(module)
#---------------------------------------------------------------------------
if __name__ == '__main__':
run()

89
etg/auibook.py Normal file
View File

@@ -0,0 +1,89 @@
#---------------------------------------------------------------------------
# Name: etg/auibook.py
# Author: Robin Dunn
#
# Created: 26-Oct-2016
# Copyright: (c) 2016 by Total Control Software
# License: wxWindows License
#---------------------------------------------------------------------------
import etgtools
import etgtools.tweaker_tools as tools
PACKAGE = "wx"
MODULE = "_aui"
NAME = "auibook" # Base name of the file to generate to for this script
DOCSTRING = ""
# The classes and/or the basename of the Doxygen XML files to be processed by
# this script.
ITEMS = [ 'wxAuiNotebook',
'wxAuiNotebookPage',
'wxAuiTabContainerButton',
'wxAuiTabContainer',
'wxAuiTabArt',
'wxAuiDefaultTabArt',
'wxAuiSimpleTabArt',
'wxAuiNotebookEvent',
]
#---------------------------------------------------------------------------
def run():
# Parse the XML file(s) building a collection of Extractor objects
module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
etgtools.parseDoxyXML(module, ITEMS)
#-----------------------------------------------------------------
# Tweak the parsed meta objects in the module object as needed for
# customizing the generated code and docstrings.
c = module.find('wxAuiNotebook')
assert isinstance(c, etgtools.ClassDef)
tools.fixWindowClass(c)
c = module.find('wxAuiTabContainer')
tools.ignoreConstOverloads(c)
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiNotebookPageArray', 'wxAuiNotebookPage', module))
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiTabContainerButtonArray', 'wxAuiTabContainerButton', module))
c = module.find('wxAuiTabArt')
c.abstract = True
c = module.find('wxAuiNotebookEvent')
tools.fixEventClass(c)
c.addPyCode("""\
EVT_AUINOTEBOOK_PAGE_CLOSE = wx.PyEventBinder( wxEVT_AUINOTEBOOK_PAGE_CLOSE, 1 )
EVT_AUINOTEBOOK_PAGE_CLOSED = wx.PyEventBinder( wxEVT_AUINOTEBOOK_PAGE_CLOSED, 1 )
EVT_AUINOTEBOOK_PAGE_CHANGED = wx.PyEventBinder( wxEVT_AUINOTEBOOK_PAGE_CHANGED, 1 )
EVT_AUINOTEBOOK_PAGE_CHANGING = wx.PyEventBinder( wxEVT_AUINOTEBOOK_PAGE_CHANGING, 1 )
EVT_AUINOTEBOOK_BUTTON = wx.PyEventBinder( wxEVT_AUINOTEBOOK_BUTTON, 1 )
EVT_AUINOTEBOOK_BEGIN_DRAG = wx.PyEventBinder( wxEVT_AUINOTEBOOK_BEGIN_DRAG, 1 )
EVT_AUINOTEBOOK_END_DRAG = wx.PyEventBinder( wxEVT_AUINOTEBOOK_END_DRAG, 1 )
EVT_AUINOTEBOOK_DRAG_MOTION = wx.PyEventBinder( wxEVT_AUINOTEBOOK_DRAG_MOTION, 1 )
EVT_AUINOTEBOOK_ALLOW_DND = wx.PyEventBinder( wxEVT_AUINOTEBOOK_ALLOW_DND, 1 )
EVT_AUINOTEBOOK_DRAG_DONE = wx.PyEventBinder( wxEVT_AUINOTEBOOK_DRAG_DONE, 1 )
EVT_AUINOTEBOOK_TAB_MIDDLE_DOWN = wx.PyEventBinder( wxEVT_AUINOTEBOOK_TAB_MIDDLE_DOWN, 1 )
EVT_AUINOTEBOOK_TAB_MIDDLE_UP = wx.PyEventBinder( wxEVT_AUINOTEBOOK_TAB_MIDDLE_UP, 1 )
EVT_AUINOTEBOOK_TAB_RIGHT_DOWN = wx.PyEventBinder( wxEVT_AUINOTEBOOK_TAB_RIGHT_DOWN, 1 )
EVT_AUINOTEBOOK_TAB_RIGHT_UP = wx.PyEventBinder( wxEVT_AUINOTEBOOK_TAB_RIGHT_UP, 1 )
EVT_AUINOTEBOOK_BG_DCLICK = wx.PyEventBinder( wxEVT_AUINOTEBOOK_BG_DCLICK, 1 )
""")
#-----------------------------------------------------------------
tools.doCommonTweaks(module)
tools.runGenerators(module)
#---------------------------------------------------------------------------
if __name__ == '__main__':
run()

48
etg/auidockart.py Normal file
View File

@@ -0,0 +1,48 @@
#---------------------------------------------------------------------------
# Name: etg/auidockart.py
# Author: Robin Dunn
#
# Created: 26-Oct-2016
# Copyright: (c) 2016 by Total Control Software
# License: wxWindows License
#---------------------------------------------------------------------------
import etgtools
import etgtools.tweaker_tools as tools
PACKAGE = "wx"
MODULE = "_aui"
NAME = "auidockart" # Base name of the file to generate to for this script
DOCSTRING = ""
# The classes and/or the basename of the Doxygen XML files to be processed by
# this script.
ITEMS = [ 'wxAuiDockArt',
'wxAuiDefaultDockArt',
]
#---------------------------------------------------------------------------
def run():
# Parse the XML file(s) building a collection of Extractor objects
module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
etgtools.parseDoxyXML(module, ITEMS)
#-----------------------------------------------------------------
# Tweak the parsed meta objects in the module object as needed for
# customizing the generated code and docstrings.
c = module.find('wxAuiDockArt')
assert isinstance(c, etgtools.ClassDef)
#-----------------------------------------------------------------
tools.doCommonTweaks(module)
tools.runGenerators(module)
#---------------------------------------------------------------------------
if __name__ == '__main__':
run()

88
etg/auiframemanager.py Normal file
View File

@@ -0,0 +1,88 @@
#---------------------------------------------------------------------------
# Name: etg/auiframemanager.py
# Author: Robin Dunn
#
# Created: 25-Oct-2016
# Copyright: (c) 2016 by Total Control Software
# License: wxWindows License
#---------------------------------------------------------------------------
import etgtools
import etgtools.tweaker_tools as tools
PACKAGE = "wx"
MODULE = "_aui"
NAME = "auiframemanager" # Base name of the file to generate to for this script
DOCSTRING = ""
# The classes and/or the basename of the Doxygen XML files to be processed by
# this script.
ITEMS = [ 'wxAuiManager',
'wxAuiPaneInfo',
'wxAuiManagerEvent',
'wxAuiDockInfo',
'wxAuiDockUIPart',
'wxAuiPaneButton',
]
#---------------------------------------------------------------------------
def run():
# Parse the XML file(s) building a collection of Extractor objects
module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
etgtools.parseDoxyXML(module, ITEMS)
#-----------------------------------------------------------------
# Tweak the parsed meta objects in the module object as needed for
# customizing the generated code and docstrings.
c = module.find('wxAuiManager')
assert isinstance(c, etgtools.ClassDef)
c.find('ProcessDockResult').ignore(False)
c = module.find('wxAuiPaneInfo')
module.addItem(
tools.wxArrayWrapperTemplate(
'wxAuiPaneInfoArray', 'wxAuiPaneInfo', module))
c = module.find('wxAuiManagerEvent')
tools.fixEventClass(c)
c.addPyCode("""\
EVT_AUI_PANE_BUTTON = wx.PyEventBinder( wxEVT_AUI_PANE_BUTTON )
EVT_AUI_PANE_CLOSE = wx.PyEventBinder( wxEVT_AUI_PANE_CLOSE )
EVT_AUI_PANE_MAXIMIZE = wx.PyEventBinder( wxEVT_AUI_PANE_MAXIMIZE )
EVT_AUI_PANE_RESTORE = wx.PyEventBinder( wxEVT_AUI_PANE_RESTORE )
EVT_AUI_PANE_ACTIVATED = wx.PyEventBinder( wxEVT_AUI_PANE_ACTIVATED )
EVT_AUI_RENDER = wx.PyEventBinder( wxEVT_AUI_RENDER )
EVT_AUI_FIND_MANAGER = wx.PyEventBinder( wxEVT_AUI_FIND_MANAGER )
""")
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiDockInfoArray', 'wxAuiDockInfo', module))
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiDockUIPartArray', 'wxAuiDockUIPart', module))
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiPaneButtonArray', 'wxAuiPaneButton', module))
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiPaneInfoPtrArray', 'wxAuiPaneInfo', module, itemIsPtr=True))
module.addItem(tools.wxArrayWrapperTemplate(
'wxAuiDockInfoPtrArray', 'wxAuiDockInfo', module, itemIsPtr=True))
#-----------------------------------------------------------------
tools.doCommonTweaks(module)
tools.runGenerators(module)
#---------------------------------------------------------------------------
if __name__ == '__main__':
run()

59
etg/auitabmdi.py Normal file
View File

@@ -0,0 +1,59 @@
#---------------------------------------------------------------------------
# Name: etg/auitabmdi.py
# Author: Robin Dunn
#
# Created: 27-Oct-2016
# Copyright: (c) 2016 by Total Control Software
# License: wxWindows License
#---------------------------------------------------------------------------
import etgtools
import etgtools.tweaker_tools as tools
PACKAGE = "wx"
MODULE = "_aui"
NAME = "auitabmdi" # Base name of the file to generate to for this script
DOCSTRING = ""
# The classes and/or the basename of the Doxygen XML files to be processed by
# this script.
ITEMS = [ 'wxAuiMDIParentFrame',
'wxAuiMDIChildFrame',
'wxAuiMDIClientWindow',
]
#---------------------------------------------------------------------------
def run():
# Parse the XML file(s) building a collection of Extractor objects
module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
etgtools.parseDoxyXML(module, ITEMS)
#-----------------------------------------------------------------
# Tweak the parsed meta objects in the module object as needed for
# customizing the generated code and docstrings.
c = module.find('wxAuiMDIParentFrame')
assert isinstance(c, etgtools.ClassDef)
tools.fixTopLevelWindowClass(c)
c = module.find('wxAuiMDIChildFrame')
tools.fixTopLevelWindowClass(c)
tools.fixSetStatusWidths(c.find('SetStatusWidths'))
c = module.find('wxAuiMDIClientWindow')
tools.fixWindowClass(c)
#-----------------------------------------------------------------
tools.doCommonTweaks(module)
tools.runGenerators(module)
#---------------------------------------------------------------------------
if __name__ == '__main__':
run()

View File

@@ -40,16 +40,8 @@ def run():
# We already have a MappedType for wxArrayInt, so just tweak the
# interface to use that instead of an array size and a const int pointer.
m = c.find('SetStatusWidths')
m.find('n').ignore()
m.find('widths_field').type = 'const wxArrayInt&'
m.find('widths_field').name = 'widths'
m.argsString = '(int n, const wxArrayInt& widths)'
m.setCppCode("""\
const int* ptr = &widths->front();
self->SetStatusWidths(widths->size(), ptr);
""")
tools.fixSetStatusWidths(c.find('SetStatusWidths'))
c.addProperty('MenuBar GetMenuBar SetMenuBar')
c.addProperty('StatusBar GetStatusBar SetStatusBar')
c.addProperty('StatusBarPane GetStatusBarPane SetStatusBarPane')

View File

@@ -37,16 +37,8 @@ def run():
# We already have a MappedType for wxArrayInt, so just tweak the
# interface to use that instead of an array size and a const int pointer.
m = c.find('SetStatusWidths')
m.find('n').ignore()
m.find('widths_field').type = 'const wxArrayInt&'
m.find('widths_field').name = 'widths'
m.argsString = '(int n, const wxArrayInt& widths)'
m.setCppCode("""\
const int* ptr = &widths->front();
self->SetStatusWidths(widths->size(), ptr);
""")
tools.fixSetStatusWidths(c.find('SetStatusWidths'))
# Same thing for SetStatusStyles
m = c.find('SetStatusStyles')
m.find('n').ignore()

44
etg/stockitem.py Normal file
View File

@@ -0,0 +1,44 @@
#---------------------------------------------------------------------------
# Name: etg/stockitem.py
# Author: Robin Dunn
#
# Created: 28-Oct-2016
# Copyright: (c) 2016 by Total Control Software
# License: wxWindows License
#---------------------------------------------------------------------------
import etgtools
import etgtools.tweaker_tools as tools
PACKAGE = "wx"
MODULE = "_core"
NAME = "stockitem" # Base name of the file to generate to for this script
DOCSTRING = ""
# The classes and/or the basename of the Doxygen XML files to be processed by
# this script.
ITEMS = [ 'stockitem_8h.xml',
]
#---------------------------------------------------------------------------
def run():
# Parse the XML file(s) building a collection of Extractor objects
module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
etgtools.parseDoxyXML(module, ITEMS)
#-----------------------------------------------------------------
# Tweak the parsed meta objects in the module object as needed for
# customizing the generated code and docstrings.
#-----------------------------------------------------------------
tools.doCommonTweaks(module)
tools.runGenerators(module)
#---------------------------------------------------------------------------
if __name__ == '__main__':
run()

View File

@@ -1150,6 +1150,9 @@ class Image(Node):
image_path = os.path.normpath(os.path.join(DOXYROOT, 'images', value))
static_path = os.path.join(OVERVIEW_IMAGES_ROOT, os.path.split(image_path)[1])
if not os.path.exists(image_path):
return ''
if not os.path.isfile(static_path):
shutil.copyfile(image_path, static_path)

View File

@@ -262,9 +262,9 @@ def fixWindowClass(klass, hideVirtuals=True, ignoreProtected=True):
for item in klass.allItems():
if isinstance(item, extractors.MethodDef) and item.protection == 'protected':
item.ignore(False)
def fixTopLevelWindowClass(klass, hideVirtuals=True, ignoreProtected=True):
"""
Tweaks for TLWs
@@ -275,11 +275,13 @@ def fixTopLevelWindowClass(klass, hideVirtuals=True, ignoreProtected=True):
item = klass.findItem('Create')
if item:
item.transferThis = True
# give the id param a default value
for item in [klass.findItem('%s.id' % klass.name), klass.findItem('Create.id')]:
if item:
item.default = 'wxID_ANY'
for name in ['id', 'winid']:
for item in [klass.findItem('%s.%s' % (klass.name, name)),
klass.findItem('Create.%s' % name)]:
if item:
item.default = 'wxID_ANY'
# give title param a default too if it needs it
for item in [klass.findItem('%s.title' % klass.name), klass.findItem('Create.title')]:
@@ -289,14 +291,14 @@ def fixTopLevelWindowClass(klass, hideVirtuals=True, ignoreProtected=True):
if hideVirtuals:
removeVirtuals(klass)
addWindowVirtuals(klass)
if not ignoreProtected:
for item in klass.allItems():
if isinstance(item, extractors.MethodDef) and item.protection == 'protected':
item.ignore(False)
def fixSizerClass(klass):
"""
Remove all virtuals except for CalcMin and RecalcSizes.
@@ -344,7 +346,21 @@ def fixHtmlSetFonts(klass):
}
self->SetFonts(*normal_face, *fixed_face, &sizes->Item(0));
""")
def fixSetStatusWidths(m):
# We already have a MappedType for wxArrayInt, so just tweak the
# interface to use that instead of an array size and a const int pointer.
m.find('n').ignore()
m.find('widths_field').type = 'const wxArrayInt&'
m.find('widths_field').name = 'widths'
m.argsString = '(int n, const wxArrayInt& widths)'
m.setCppCode("""\
const int* ptr = &widths->front();
self->SetStatusWidths(widths->size(), ptr);
""")
def removeVirtuals(klass):
"""
@@ -360,7 +376,7 @@ def removeVirtuals(klass):
def addWindowVirtuals(klass):
"""
Either turn the virtual flag back on or add a delcaration for the subset of
Either turn the virtual flag back on or add a declaration for the subset of
the C++ virtuals in wxWindow classes that we will be supporting.
"""
publicWindowVirtuals = [
@@ -954,10 +970,13 @@ del _{ListClass_pyName}___repr__
def wxArrayWrapperTemplate(ArrayClass, ItemClass, module):
def wxArrayWrapperTemplate(ArrayClass, ItemClass, module, itemIsPtr=False):
moduleName = module.module
ArrayClass_pyName = removeWxPrefix(ArrayClass)
itemRef = '*' if itemIsPtr else '&'
itemDeref = '' if itemIsPtr else '*'
addrOf = '' if itemIsPtr else '&'
# *** TODO: This can probably be done in a way that is not SIP-specfic.
# Try creating extractor objects from scratch and attach cppMethods to
# them as needed, etc..
@@ -971,10 +990,10 @@ public:
sipRes = sipCpp->GetCount();
%End
{ItemClass}& __getitem__(ulong index);
{ItemClass}{itemRef} __getitem__(ulong index);
%MethodCode
if (index < sipCpp->GetCount()) {{
sipRes = &sipCpp->Item(index);
sipRes = {addrOf}sipCpp->Item(index);
}}
else {{
wxPyErr_SetString(PyExc_IndexError, "sequence index out of range");
@@ -982,21 +1001,21 @@ public:
}}
%End
int __contains__(const {ItemClass}& obj);
int __contains__({ItemClass}{itemRef} obj);
%MethodCode
int idx = sipCpp->Index(*obj, false);
int idx = sipCpp->Index({itemDeref}obj, false);
sipRes = idx != wxNOT_FOUND;
%End
void append(const {ItemClass}& obj);
void append({ItemClass}{itemRef} obj);
%MethodCode
sipCpp->Add(*obj);
sipCpp->Add({itemDeref}obj);
%End
// TODO: add support for index(value, [start, [stop]])
int index(const {ItemClass}& obj);
int index({ItemClass}{itemRef} obj);
%MethodCode
int idx = sipCpp->Index(*obj, false);
int idx = sipCpp->Index({itemDeref}obj, false);
if (idx == wxNOT_FOUND) {{
sipError = sipErrorFail;
wxPyErr_SetString(PyExc_ValueError,

View File

@@ -85,6 +85,7 @@ MODULENAME_REPLACE = {'_core' : 'wx.',
'_msw' : 'wx.msw.',
'_ribbon' : 'wx.ribbon.',
'_propgrid': 'wx.propgrid.',
'_aui' : 'wx.aui.',
}

79
unittests/test_auibar.py Normal file
View File

@@ -0,0 +1,79 @@
import unittest
from unittests import wtc
import wx
import wx.aui
#---------------------------------------------------------------------------
class auibar_Tests(wtc.WidgetTestCase):
def test_auibar01(self):
wx.aui.AUI_TB_TEXT
wx.aui.AUI_TB_NO_TOOLTIPS
wx.aui.AUI_TB_NO_AUTORESIZE
wx.aui.AUI_TB_GRIPPER
wx.aui.AUI_TB_OVERFLOW
wx.aui.AUI_TB_VERTICAL
wx.aui.AUI_TB_HORZ_LAYOUT
wx.aui.AUI_TB_HORIZONTAL
wx.aui.AUI_TB_PLAIN_BACKGROUND
wx.aui.AUI_TB_HORZ_TEXT
wx.aui.AUI_ORIENTATION_MASK
wx.aui.AUI_TB_DEFAULT_STYLE
wx.aui.AUI_TBART_SEPARATOR_SIZE
wx.aui.AUI_TBART_GRIPPER_SIZE
wx.aui.AUI_TBART_OVERFLOW_SIZE
wx.aui.AUI_TBTOOL_TEXT_LEFT
wx.aui.AUI_TBTOOL_TEXT_RIGHT
wx.aui.AUI_TBTOOL_TEXT_TOP
wx.aui.AUI_TBTOOL_TEXT_BOTTOM
def test_auibar02(self):
evt = wx.aui.AuiToolBarEvent()
def test_auibar03(self):
wx.aui.wxEVT_AUITOOLBAR_TOOL_DROPDOWN
wx.aui.wxEVT_AUITOOLBAR_OVERFLOW_CLICK
wx.aui.wxEVT_AUITOOLBAR_RIGHT_CLICK
wx.aui.wxEVT_AUITOOLBAR_MIDDLE_CLICK
wx.aui.wxEVT_AUITOOLBAR_BEGIN_DRAG
wx.aui.EVT_AUITOOLBAR_TOOL_DROPDOWN
wx.aui.EVT_AUITOOLBAR_OVERFLOW_CLICK
wx.aui.EVT_AUITOOLBAR_RIGHT_CLICK
wx.aui.EVT_AUITOOLBAR_MIDDLE_CLICK
wx.aui.EVT_AUITOOLBAR_BEGIN_DRAG
def test_auibar04(self):
obj = wx.aui.AuiToolBarItem()
def test_auibar05(self):
with self.assertRaises(TypeError):
obj = wx.aui.AuiToolBarArt()
def test_auibar06(self):
obj = wx.aui.AuiDefaultToolBarArt()
def test_auibar07(self):
tbar = wx.aui.AuiToolBar(self.frame)
def test_auibar08(self):
tbar = wx.aui.AuiToolBar()
tbar.Create(self.frame)
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()

104
unittests/test_auibook.py Normal file
View File

@@ -0,0 +1,104 @@
import unittest
from unittests import wtc
import wx
import wx.aui
#---------------------------------------------------------------------------
class auibook_Tests(wtc.WidgetTestCase):
def test_auibook01(self):
wx.aui.AUI_NB_TOP
wx.aui.AUI_NB_LEFT
wx.aui.AUI_NB_RIGHT
wx.aui.AUI_NB_BOTTOM
wx.aui.AUI_NB_TAB_SPLIT
wx.aui.AUI_NB_TAB_MOVE
wx.aui.AUI_NB_TAB_EXTERNAL_MOVE
wx.aui.AUI_NB_TAB_FIXED_WIDTH
wx.aui.AUI_NB_SCROLL_BUTTONS
wx.aui.AUI_NB_WINDOWLIST_BUTTON
wx.aui.AUI_NB_CLOSE_BUTTON
wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB
wx.aui.AUI_NB_CLOSE_ON_ALL_TABS
wx.aui.AUI_NB_MIDDLE_CLICK_CLOSE
wx.aui.AUI_NB_DEFAULT_STYLE
def test_auibook02(self):
nb = wx.aui.AuiNotebook()
nb.Create(self.frame)
def test_auibook03(self):
nb = wx.aui.AuiNotebook(self.frame)
nb.AddPage(wx.Panel(nb), "Page")
def test_auibook04(self):
obj = wx.aui.AuiNotebookPage()
def test_auibook05(self):
obj = wx.aui.AuiTabContainerButton()
def test_auibook06(self):
obj = wx.aui.AuiTabContainer()
def test_auibook07(self):
with self.assertRaises(TypeError):
obj = wx.aui.AuiTabArt()
def test_auibook08(self):
obj = wx.aui.AuiDefaultTabArt()
def test_auibook09(self):
obj = wx.aui.AuiSimpleTabArt()
def test_auibook10(self):
evt = wx.aui.AuiNotebookEvent()
wx.aui.wxEVT_AUINOTEBOOK_PAGE_CLOSE
wx.aui.wxEVT_AUINOTEBOOK_PAGE_CLOSED
wx.aui.wxEVT_AUINOTEBOOK_PAGE_CHANGED
wx.aui.wxEVT_AUINOTEBOOK_PAGE_CHANGING
wx.aui.wxEVT_AUINOTEBOOK_BUTTON
wx.aui.wxEVT_AUINOTEBOOK_BEGIN_DRAG
wx.aui.wxEVT_AUINOTEBOOK_END_DRAG
wx.aui.wxEVT_AUINOTEBOOK_DRAG_MOTION
wx.aui.wxEVT_AUINOTEBOOK_ALLOW_DND
wx.aui.wxEVT_AUINOTEBOOK_DRAG_DONE
wx.aui.wxEVT_AUINOTEBOOK_TAB_MIDDLE_DOWN
wx.aui.wxEVT_AUINOTEBOOK_TAB_MIDDLE_UP
wx.aui.wxEVT_AUINOTEBOOK_TAB_RIGHT_DOWN
wx.aui.wxEVT_AUINOTEBOOK_TAB_RIGHT_UP
wx.aui.wxEVT_AUINOTEBOOK_BG_DCLICK
wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE
wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSED
wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED
wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGING
wx.aui.EVT_AUINOTEBOOK_BUTTON
wx.aui.EVT_AUINOTEBOOK_BEGIN_DRAG
wx.aui.EVT_AUINOTEBOOK_END_DRAG
wx.aui.EVT_AUINOTEBOOK_DRAG_MOTION
wx.aui.EVT_AUINOTEBOOK_ALLOW_DND
wx.aui.EVT_AUINOTEBOOK_DRAG_DONE
wx.aui.EVT_AUINOTEBOOK_TAB_MIDDLE_DOWN
wx.aui.EVT_AUINOTEBOOK_TAB_MIDDLE_UP
wx.aui.EVT_AUINOTEBOOK_TAB_RIGHT_DOWN
wx.aui.EVT_AUINOTEBOOK_TAB_RIGHT_UP
wx.aui.EVT_AUINOTEBOOK_BG_DCLICK
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()

View File

@@ -0,0 +1,66 @@
import unittest
from unittests import wtc
import wx
import wx.aui
#---------------------------------------------------------------------------
class auidockart_Tests(wtc.WidgetTestCase):
def test_auidockart01(self):
wx.aui.AUI_DOCKART_SASH_SIZE
wx.aui.AUI_DOCKART_CAPTION_SIZE
wx.aui.AUI_DOCKART_GRIPPER_SIZE
wx.aui.AUI_DOCKART_PANE_BORDER_SIZE
wx.aui.AUI_DOCKART_PANE_BUTTON_SIZE
wx.aui.AUI_DOCKART_BACKGROUND_COLOUR
wx.aui.AUI_DOCKART_SASH_COLOUR
wx.aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR
wx.aui.AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR
wx.aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR
wx.aui.AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR
wx.aui.AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR
wx.aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR
wx.aui.AUI_DOCKART_BORDER_COLOUR
wx.aui.AUI_DOCKART_GRIPPER_COLOUR
wx.aui.AUI_DOCKART_CAPTION_FONT
wx.aui.AUI_DOCKART_GRADIENT_TYPE
wx.aui.AUI_GRADIENT_NONE
wx.aui.AUI_GRADIENT_VERTICAL
wx.aui.AUI_GRADIENT_HORIZONTAL
wx.aui.AUI_BUTTON_STATE_NORMAL
wx.aui.AUI_BUTTON_STATE_HOVER
wx.aui.AUI_BUTTON_STATE_PRESSED
wx.aui.AUI_BUTTON_STATE_DISABLED
wx.aui.AUI_BUTTON_STATE_HIDDEN
wx.aui.AUI_BUTTON_STATE_CHECKED
wx.aui.AUI_BUTTON_CLOSE
wx.aui.AUI_BUTTON_MAXIMIZE_RESTORE
wx.aui.AUI_BUTTON_MINIMIZE
wx.aui.AUI_BUTTON_PIN
wx.aui.AUI_BUTTON_OPTIONS
wx.aui.AUI_BUTTON_WINDOWLIST
wx.aui.AUI_BUTTON_LEFT
wx.aui.AUI_BUTTON_RIGHT
wx.aui.AUI_BUTTON_UP
wx.aui.AUI_BUTTON_DOWN
wx.aui.AUI_BUTTON_CUSTOM1
wx.aui.AUI_BUTTON_CUSTOM2
wx.aui.AUI_BUTTON_CUSTOM3
def test_auidockart02(self):
with self.assertRaises(TypeError):
da = wx.aui.AuiDockArt()
def test_auidockart03(self):
da = wx.aui.AuiDefaultDockArt()
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()

View File

@@ -0,0 +1,108 @@
import unittest
from unittests import wtc
import wx
import wx.aui
#---------------------------------------------------------------------------
class auiframemanager_Tests(wtc.WidgetTestCase):
def test_auiframemanager01(self):
wx.aui.AUI_DOCK_NONE
wx.aui.AUI_DOCK_TOP
wx.aui.AUI_DOCK_RIGHT
wx.aui.AUI_DOCK_BOTTOM
wx.aui.AUI_DOCK_LEFT
wx.aui.AUI_DOCK_CENTER
wx.aui.AUI_DOCK_CENTRE
wx.aui.AUI_MGR_ALLOW_FLOATING
wx.aui.AUI_MGR_ALLOW_ACTIVE_PANE
wx.aui.AUI_MGR_TRANSPARENT_DRAG
wx.aui.AUI_MGR_TRANSPARENT_HINT
wx.aui.AUI_MGR_VENETIAN_BLINDS_HINT
wx.aui.AUI_MGR_RECTANGLE_HINT
wx.aui.AUI_MGR_HINT_FADE
wx.aui.AUI_MGR_NO_VENETIAN_BLINDS_FADE
wx.aui.AUI_MGR_LIVE_RESIZE
wx.aui.AUI_MGR_DEFAULT
def test_auiframemanager02(self):
wx.aui.EVT_AUI_PANE_BUTTON
wx.aui.EVT_AUI_PANE_CLOSE
wx.aui.EVT_AUI_PANE_MAXIMIZE
wx.aui.EVT_AUI_PANE_RESTORE
wx.aui.EVT_AUI_PANE_ACTIVATED
wx.aui.EVT_AUI_RENDER
wx.aui.EVT_AUI_FIND_MANAGER
wx.aui.wxEVT_AUI_PANE_BUTTON
wx.aui.wxEVT_AUI_PANE_CLOSE
wx.aui.wxEVT_AUI_PANE_MAXIMIZE
wx.aui.wxEVT_AUI_PANE_RESTORE
wx.aui.wxEVT_AUI_PANE_ACTIVATED
wx.aui.wxEVT_AUI_RENDER
wx.aui.wxEVT_AUI_FIND_MANAGER
def test_auiframemanager03(self):
mgr = wx.aui.AuiManager(self.frame)
mgr.AddPane( wx.Panel(self.frame),
wx.aui.AuiPaneInfo().Top().Caption('caption').Dock())
mgr.Update()
self.myYield()
mgr.UnInit()
def test_auiframemanager04(self):
mgr = wx.aui.AuiManager()
mgr.SetManagedWindow(self.frame)
mgr.AddPane( wx.Panel(self.frame),
wx.aui.AuiPaneInfo().Top().Caption('caption').Dock())
mgr.Update()
self.myYield()
mgr.UnInit()
def test_auiframemanager05(self):
pi = wx.aui.AuiPaneInfo()
pi.BestSize((5,6))
assert pi.best_size == (5,6)
pi.BestSize(wx.Size(7,8))
assert pi.best_size == (7,8)
pi.BestSize(1, 2)
assert pi.best_size == (1,2)
def test_auiframemanager06(self):
pi = wx.aui.AuiPaneInfo().Center().Caption("hello").DefaultPane().CloseButton().Floatable()
def test_auiframemanager07(self):
pi1 = wx.aui.AuiPaneInfo().BestSize(12,34)
pi2 = wx.aui.AuiPaneInfo(pi1)
assert pi1 is not pi2
assert pi1.best_size == pi2.best_size
def test_auiframemanager08(self):
obj = wx.aui.AuiDockInfo()
def test_auiframemanager09(self):
obj = wx.aui.AuiDockUIPart()
def test_auiframemanager10(self):
obj = wx.aui.AuiPaneButton()
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()

View File

@@ -0,0 +1,24 @@
import unittest
from unittests import wtc
import wx
import wx.aui
#---------------------------------------------------------------------------
class auitabmdi_Tests(wtc.WidgetTestCase):
def test_auitabmdi01(self):
parent = wx.aui.AuiMDIParentFrame(self.frame, title='AUI MDI')
child = wx.aui.AuiMDIChildFrame(parent, title='Child')
parent.Show()
self.myYield()
child.Close()
self.myYield()
parent.Close()
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()

View File

@@ -0,0 +1,16 @@
import unittest
from unittests import wtc
import wx
#---------------------------------------------------------------------------
class stockitem_Tests(wtc.WidgetTestCase):
# TODO: Remove this test and add real ones.
def test_stockitem1(self):
self.fail("Unit tests for stockitem not implemented yet.")
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()

View File

@@ -142,6 +142,9 @@ def configure(conf):
_copyEnvGroup(conf.env, '_WX', '_WXPROPGRID')
conf.env.LIB_WXPROPGRID += cfg.makeLibName('propgrid')
_copyEnvGroup(conf.env, '_WX', '_WXAUI')
conf.env.LIB_WXPAUI += cfg.makeLibName('aui')
# ** Add code for new modules here (and below for non-MSW)
# tweak the PYEXT compile and link flags if making a --debug build
@@ -236,6 +239,10 @@ def configure(conf):
args='--cxxflags --libs propgrid,core' + rpath,
uselib_store='WXPROPGRID', mandatory=True)
conf.check_cfg(path=conf.options.wx_config, package='',
args='--cxxflags --libs aui,core' + rpath,
uselib_store='WXAUI', mandatory=True)
# ** Add code for new modules here
@@ -528,7 +535,9 @@ def build(bld):
makeETGRule(bld, 'etg/_media.py', '_media', 'WXMEDIA')
makeETGRule(bld, 'etg/_ribbon.py', '_ribbon', 'WXRIBBON')
makeETGRule(bld, 'etg/_propgrid.py', '_propgrid', 'WXPROPGRID')
makeETGRule(bld, 'etg/_aui.py', '_aui', 'WXAUI')
# Modules that are platform-specific
if isDarwin:
makeETGRule(bld, 'etg/_webkit.py', '_webkit', 'WXWEBKIT')
if isWindows: