0.1.7-0
------- Added new controls (Choicebook, Listbook, StatusBar, DatePicker), and completed style flags. Test window is opened for an available parent control if no specific view defined. Better handling of exceptions (highlighting does not 'stick' anymore). Tested on wxGTK 2.6.1.0. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -56,6 +56,7 @@ class ID_NEW:
|
||||
TOOL = wxNewId()
|
||||
MENU_BAR = wxNewId()
|
||||
MENU = wxNewId()
|
||||
STATUS_BAR = wxNewId()
|
||||
|
||||
STATIC_TEXT = wxNewId()
|
||||
TEXT_CTRL = wxNewId()
|
||||
@@ -82,16 +83,21 @@ class ID_NEW:
|
||||
LIST_CTRL = wxNewId()
|
||||
CHECK_LIST = wxNewId()
|
||||
NOTEBOOK = wxNewId()
|
||||
CHOICEBOOK = wxNewId()
|
||||
LISTBOOK = wxNewId()
|
||||
SPLITTER_WINDOW = wxNewId()
|
||||
SCROLLED_WINDOW = wxNewId()
|
||||
HTML_WINDOW = wxNewId()
|
||||
CALENDAR_CTRL = wxNewId()
|
||||
DATE_CTRL = wxNewId()
|
||||
GENERIC_DIR_CTRL = wxNewId()
|
||||
SPIN_CTRL = wxNewId()
|
||||
UNKNOWN = wxNewId()
|
||||
WIZARD = wxNewId()
|
||||
WIZARD_PAGE = wxNewId()
|
||||
WIZARD_PAGE_SIMPLE = wxNewId()
|
||||
BITMAP = wxNewId()
|
||||
ICON = wxNewId()
|
||||
STATUS_BAR = wxNewId()
|
||||
|
||||
BOX_SIZER = wxNewId()
|
||||
@@ -151,9 +157,12 @@ class PullDownMenu:
|
||||
ID_NEW.WIZARD_PAGE_SIMPLE: 'wxWizardPageSimple',
|
||||
ID_NEW.TOOL_BAR: 'wxToolBar',
|
||||
ID_NEW.TOOL: 'tool',
|
||||
ID_NEW.STATUS_BAR: 'wxStatusBar',
|
||||
ID_NEW.MENU_BAR: 'wxMenuBar',
|
||||
ID_NEW.MENU: 'wxMenu',
|
||||
ID_NEW.MENU_ITEM: 'wxMenuItem',
|
||||
ID_NEW.BITMAP: 'wxBitmap',
|
||||
ID_NEW.ICON: 'wxIcon',
|
||||
ID_NEW.SEPARATOR: 'separator',
|
||||
|
||||
ID_NEW.STATIC_TEXT: 'wxStaticText',
|
||||
@@ -170,6 +179,7 @@ class PullDownMenu:
|
||||
ID_NEW.RADIO_BOX: 'wxRadioBox',
|
||||
ID_NEW.COMBO_BOX: 'wxComboBox',
|
||||
ID_NEW.LIST_BOX: 'wxListBox',
|
||||
ID_NEW.CHECK_LIST: 'wxCheckListBox',
|
||||
|
||||
ID_NEW.STATIC_LINE: 'wxStaticLine',
|
||||
ID_NEW.STATIC_BITMAP: 'wxStaticBitmap',
|
||||
@@ -179,12 +189,14 @@ class PullDownMenu:
|
||||
ID_NEW.SCROLL_BAR: 'wxScrollBar',
|
||||
ID_NEW.TREE_CTRL: 'wxTreeCtrl',
|
||||
ID_NEW.LIST_CTRL: 'wxListCtrl',
|
||||
ID_NEW.CHECK_LIST: 'wxCheckListBox',
|
||||
ID_NEW.NOTEBOOK: 'wxNotebook',
|
||||
ID_NEW.CHOICEBOOK: 'wxChoicebook',
|
||||
ID_NEW.LISTBOOK: 'wxListbook',
|
||||
ID_NEW.SPLITTER_WINDOW: 'wxSplitterWindow',
|
||||
ID_NEW.SCROLLED_WINDOW: 'wxScrolledWindow',
|
||||
ID_NEW.HTML_WINDOW: 'wxHtmlWindow',
|
||||
ID_NEW.CALENDAR_CTRL: 'wxCalendarCtrl',
|
||||
ID_NEW.DATE_CTRL: 'wxDatePickerCtrl',
|
||||
ID_NEW.GENERIC_DIR_CTRL: 'wxGenericDirCtrl',
|
||||
ID_NEW.SPIN_CTRL: 'wxSpinCtrl',
|
||||
|
||||
@@ -214,13 +226,19 @@ class PullDownMenu:
|
||||
None,
|
||||
(ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar'),
|
||||
(ID_NEW.MENU_BAR, 'MenuBar', 'Create menubar'),
|
||||
(ID_NEW.MENU, 'Menu', 'Create menu')
|
||||
(ID_NEW.MENU, 'Menu', 'Create menu'),
|
||||
None,
|
||||
(ID_NEW.BITMAP, 'Bitmap', 'Create bitmap'),
|
||||
(ID_NEW.ICON, 'Icon', 'Create icon'),
|
||||
]
|
||||
self.containers = [
|
||||
(ID_NEW.PANEL, 'Panel', 'Create panel'),
|
||||
(ID_NEW.NOTEBOOK, 'Notebook', 'Create notebook control'),
|
||||
(ID_NEW.CHOICEBOOK, 'Choicebook', 'Create choicebook control'),
|
||||
(ID_NEW.LISTBOOK, 'Listbook', 'Create listbook control'),
|
||||
(ID_NEW.SPLITTER_WINDOW, 'SplitterWindow', 'Create splitter window'),
|
||||
(ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar'),
|
||||
(ID_NEW.STATUS_BAR, 'StatusBar', 'Create status bar'),
|
||||
# (ID_NEW.WIZARD_PAGE, 'WizardPage', 'Create wizard page'),
|
||||
(ID_NEW.WIZARD_PAGE_SIMPLE, 'WizardPageSimple', 'Create simple wizard page'),
|
||||
]
|
||||
@@ -250,10 +268,10 @@ class PullDownMenu:
|
||||
(ID_NEW.SCROLL_BAR, 'ScrollBar', 'Create scroll bar'),
|
||||
(ID_NEW.TREE_CTRL, 'TreeCtrl', 'Create tree'),
|
||||
(ID_NEW.LIST_CTRL, 'ListCtrl', 'Create list'),
|
||||
(ID_NEW.CHECK_LIST, 'CheckList', 'Create check list'),
|
||||
(ID_NEW.SCROLLED_WINDOW, 'ScrolledWindow', 'Create scrolled window'),
|
||||
(ID_NEW.HTML_WINDOW, 'HtmlWindow', 'Create HTML window'),
|
||||
(ID_NEW.CALENDAR_CTRL, 'CalendarCtrl', 'Create calendar control'),
|
||||
(ID_NEW.DATE_CTRL, 'DatePickerCtrl', 'Create date picker control'),
|
||||
(ID_NEW.GENERIC_DIR_CTRL, 'GenericDirCtrl', 'Create generic dir control'),
|
||||
(ID_NEW.UNKNOWN, 'Unknown', 'Create custom control placeholder'),
|
||||
],
|
||||
@@ -270,12 +288,16 @@ class PullDownMenu:
|
||||
(ID_NEW.RADIO_BOX, 'RadioBox', 'Create radio box'),
|
||||
(ID_NEW.COMBO_BOX, 'ComboBox', 'Create combo box'),
|
||||
(ID_NEW.LIST_BOX, 'ListBox', 'Create list box'),
|
||||
(ID_NEW.CHECK_LIST, 'CheckListBox', 'Create checklist box'),
|
||||
],
|
||||
['container', 'Containers',
|
||||
(ID_NEW.PANEL, 'Panel', 'Create panel'),
|
||||
(ID_NEW.NOTEBOOK, 'Notebook', 'Create notebook control'),
|
||||
(ID_NEW.CHOICEBOOK, 'Choicebook', 'Create choicebook control'),
|
||||
(ID_NEW.LISTBOOK, 'Listbook', 'Create listbook control'),
|
||||
(ID_NEW.SPLITTER_WINDOW, 'SplitterWindow', 'Create splitter window'),
|
||||
(ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar'),
|
||||
(ID_NEW.STATUS_BAR, 'StatusBar', 'Create status bar'),
|
||||
# (ID_NEW.WIZARD_PAGE, 'Wizard Page', 'Create wizard page'),
|
||||
(ID_NEW.WIZARD_PAGE_SIMPLE, 'WizardPageSimple', 'Create simple wizard page'),
|
||||
],
|
||||
@@ -311,7 +333,6 @@ class PullDownMenu:
|
||||
(ID_NEW.GAUGE, 'Gauge', 'Create gauge'),
|
||||
(ID_NEW.SCROLL_BAR, 'ScrollBar', 'Create scroll bar'),
|
||||
(ID_NEW.LIST_CTRL, 'ListCtrl', 'Create list control'),
|
||||
(ID_NEW.CHECK_LIST, 'CheckList', 'Create check list'),
|
||||
],
|
||||
['button', 'Buttons',
|
||||
(ID_NEW.BUTTON, 'Button', 'Create button'),
|
||||
@@ -325,6 +346,7 @@ class PullDownMenu:
|
||||
(ID_NEW.RADIO_BOX, 'RadioBox', 'Create radio box'),
|
||||
(ID_NEW.COMBO_BOX, 'ComboBox', 'Create combo box'),
|
||||
(ID_NEW.LIST_BOX, 'ListBox', 'Create list box'),
|
||||
(ID_NEW.CHECK_LIST, 'CheckListBox', 'Create checklist box'),
|
||||
],
|
||||
]
|
||||
self.stdButtons = [
|
||||
@@ -592,15 +614,16 @@ class XML_Tree(wxTreeCtrl):
|
||||
# Root at (0,0)
|
||||
if item == g.testWin.item: return wxPoint(0, 0)
|
||||
itemParent = self.GetItemParent(item)
|
||||
# Select NB page
|
||||
# Select book page
|
||||
if not obj: obj = self.FindNodeObject(item)
|
||||
if self.GetPyData(itemParent).treeObject().__class__ == xxxNotebook:
|
||||
notebook = self.FindNodeObject(itemParent)
|
||||
if self.GetPyData(itemParent).treeObject().__class__ in \
|
||||
[xxxNotebook, xxxChoicebook, xxxListbook]:
|
||||
book = self.FindNodeObject(itemParent)
|
||||
# Find position
|
||||
for i in range(notebook.GetPageCount()):
|
||||
if notebook.GetPage(i) == obj:
|
||||
if notebook.GetSelection() != i:
|
||||
notebook.SetSelection(i)
|
||||
for i in range(book.GetPageCount()):
|
||||
if book.GetPage(i) == obj:
|
||||
if book.GetSelection() != i:
|
||||
book.SetSelection(i)
|
||||
# Remove highlight - otherwise highlight window won't be visible
|
||||
if g.testWin.highLight:
|
||||
g.testWin.highLight.Remove()
|
||||
@@ -630,6 +653,7 @@ class XML_Tree(wxTreeCtrl):
|
||||
# Top-level sizer? return window's sizer
|
||||
if xxx.isSizer and isinstance(parentWin, wxWindow):
|
||||
return parentWin.GetSizer()
|
||||
elif isinstance(xxx, xxxStatusBar): return None
|
||||
elif isinstance(xxx, xxxToolBar):
|
||||
# If it's the main toolbar, we can't really select it
|
||||
if xxx.parent.__class__ == xxxFrame: return None
|
||||
@@ -642,6 +666,9 @@ class XML_Tree(wxTreeCtrl):
|
||||
if ch.GetWindow() and ch.GetWindow().GetName() == xxx.name:
|
||||
return ch.GetWindow()
|
||||
return None
|
||||
elif xxx.parent.__class__ in [xxxChoicebook, xxxListbook]:
|
||||
# First window is controld
|
||||
return parentWin.GetChildren()[self.ItemIndex(item)+1]
|
||||
# Otherwise get parent's object and it's child
|
||||
child = parentWin.GetChildren()[self.ItemIndex(item)]
|
||||
# Return window or sizer for sizer items
|
||||
@@ -649,9 +676,9 @@ class XML_Tree(wxTreeCtrl):
|
||||
if child.IsWindow(): child = child.GetWindow()
|
||||
elif child.IsSizer():
|
||||
child = child.GetSizer()
|
||||
# Test for notebook sizers
|
||||
# Test for notebook sizers (deprecated)
|
||||
if isinstance(child, wxNotebookSizer):
|
||||
child = child.GetNotebook()
|
||||
child = child.GetNotebook()
|
||||
return child
|
||||
|
||||
def OnSelChanged(self, evt):
|
||||
@@ -729,18 +756,29 @@ class XML_Tree(wxTreeCtrl):
|
||||
xxx = self.GetPyData(item)
|
||||
if g.panel.IsModified():
|
||||
self.Apply(xxx, item) # apply changes
|
||||
treeObj = xxx.treeObject()
|
||||
if treeObj.className not in ['wxFrame', 'wxPanel', 'wxDialog',
|
||||
'wxMenuBar', 'wxToolBar', 'wxWizard',
|
||||
'wxWizardPageSimple']:
|
||||
availableViews = ['wxFrame', 'wxPanel', 'wxDialog',
|
||||
'wxMenuBar', 'wxToolBar', 'wxWizard',
|
||||
'wxWizardPageSimple']
|
||||
originalItem = item
|
||||
# Walk up the tree until we find an item that has a view
|
||||
while item and self.GetPyData(item).treeObject().className not in availableViews:
|
||||
item = self.GetItemParent(item)
|
||||
if not item or not item.IsOk():
|
||||
wxLogMessage('No view for this element (yet)')
|
||||
return
|
||||
# Show item in bold
|
||||
if g.testWin: # Reset old
|
||||
self.SetItemBold(g.testWin.item, False)
|
||||
self.CreateTestWin(item)
|
||||
try:
|
||||
wxBeginBusyCursor()
|
||||
self.CreateTestWin(item)
|
||||
finally:
|
||||
wxEndBusyCursor()
|
||||
# Maybe an error occurred, so we need to test
|
||||
if g.testWin: self.SetItemBold(g.testWin.item)
|
||||
if g.testWin:
|
||||
self.SetItemBold(g.testWin.item)
|
||||
# Select original item
|
||||
self.ChangeSelection(originalItem)
|
||||
|
||||
# Double-click on Linux
|
||||
def OnItemActivated(self, evt):
|
||||
@@ -778,7 +816,6 @@ class XML_Tree(wxTreeCtrl):
|
||||
# self.CreateTestWin(child)
|
||||
# return
|
||||
|
||||
wxBeginBusyCursor()
|
||||
# Close old window, remember where it was
|
||||
highLight = None
|
||||
if testWin:
|
||||
@@ -851,7 +888,7 @@ class XML_Tree(wxTreeCtrl):
|
||||
res.LoadOnFrame(testWin, g.frame, STD_NAME)
|
||||
# Create status bar
|
||||
testWin.panel = testWin
|
||||
testWin.CreateStatusBar()
|
||||
#testWin.CreateStatusBar()
|
||||
testWin.SetClientSize(testWin.GetBestSize())
|
||||
testWin.SetPosition(pos)
|
||||
testWin.Show(True)
|
||||
@@ -932,7 +969,6 @@ class XML_Tree(wxTreeCtrl):
|
||||
wxLogError(traceback.format_exception(inf[0], inf[1], None)[-1])
|
||||
wxLogError('Error loading resource')
|
||||
wxMemoryFSHandler_RemoveFile('xxx.xrc')
|
||||
wxEndBusyCursor()
|
||||
|
||||
def CloseTestWindow(self):
|
||||
if not g.testWin: return
|
||||
@@ -1030,7 +1066,7 @@ class XML_Tree(wxTreeCtrl):
|
||||
SetMenu(m, pullDownMenu.stdButtons)
|
||||
else:
|
||||
SetMenu(m, pullDownMenu.controls)
|
||||
if xxx.__class__ == xxxNotebook:
|
||||
if xxx.__class__ in [xxxNotebook, xxxChoicebook, xxxListbook]:
|
||||
m.Enable(m.FindItem('sizer'), False)
|
||||
elif not (xxx.isSizer or xxx.parent and xxx.parent.isSizer):
|
||||
m.Enable(ID_NEW.SPACER, False)
|
||||
|
Reference in New Issue
Block a user