X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d14a1e28567de23c586bc80017073d0c39f8d18f..14af60da8bd10a243f1839eec5796f480d24e897:/wxPython/wx/tools/XRCed/tree.py diff --git a/wxPython/wx/tools/XRCed/tree.py b/wxPython/wx/tools/XRCed/tree.py index 1568d14333..c6377f8680 100644 --- a/wxPython/wx/tools/XRCed/tree.py +++ b/wxPython/wx/tools/XRCed/tree.py @@ -5,6 +5,8 @@ # RCS-ID: $Id$ from xxx import * # xxx imports globals and params +import types +import traceback # Constant to define standart window name STD_NAME = '_XRCED_T_W' @@ -82,6 +84,7 @@ class ID_NEW: STATIC_BOX_SIZER = wxNewId() GRID_SIZER = wxNewId() FLEX_GRID_SIZER = wxNewId() + GRID_BAG_SIZER = wxNewId() SPACER = wxNewId() TOOL_BAR = wxNewId() TOOL = wxNewId() @@ -94,6 +97,7 @@ class PullDownMenu: ID_EXPAND = wxNewId() ID_COLLAPSE = wxNewId() ID_PASTE_SIBLING = wxNewId() + ID_SUBCLASS = wxNewId() def __init__(self, parent): self.ID_DELETE = parent.ID_DELETE @@ -102,6 +106,7 @@ class PullDownMenu: EVT_MENU(parent, self.ID_COLLAPSE, parent.OnCollapse) EVT_MENU(parent, self.ID_EXPAND, parent.OnExpand) EVT_MENU(parent, self.ID_PASTE_SIBLING, parent.OnPaste) + EVT_MENU(parent, self.ID_SUBCLASS, parent.OnSubclass) # We connect to tree, but process in frame EVT_MENU_HIGHLIGHT_ALL(g.tree, parent.OnPullDownHighlight) @@ -139,7 +144,7 @@ class PullDownMenu: ID_NEW.SCROLL_BAR: 'wxScrollBar', ID_NEW.TREE_CTRL: 'wxTreeCtrl', ID_NEW.LIST_CTRL: 'wxListCtrl', - ID_NEW.CHECK_LIST: 'wxCheckList', + ID_NEW.CHECK_LIST: 'wxCheckListBox', ID_NEW.NOTEBOOK: 'wxNotebook', ID_NEW.SCROLLED_WINDOW: 'wxScrolledWindow', ID_NEW.HTML_WINDOW: 'wxHtmlWindow', @@ -151,6 +156,7 @@ class PullDownMenu: ID_NEW.STATIC_BOX_SIZER: 'wxStaticBoxSizer', ID_NEW.GRID_SIZER: 'wxGridSizer', ID_NEW.FLEX_GRID_SIZER: 'wxFlexGridSizer', + ID_NEW.GRID_BAG_SIZER: 'wxGridBagSizer', ID_NEW.SPACER: 'spacer', ID_NEW.UNKNOWN: 'unknown', } @@ -175,6 +181,8 @@ class PullDownMenu: (ID_NEW.GRID_SIZER, 'GridSizer', 'Create grid sizer'), (ID_NEW.FLEX_GRID_SIZER, 'FlexGridSizer', 'Create flexgrid sizer'), + (ID_NEW.GRID_BAG_SIZER, 'GridBagSizer', + 'Create gridbag sizer'), (ID_NEW.SPACER, 'Spacer', 'Create spacer'), ] self.controls = [ @@ -222,6 +230,8 @@ class PullDownMenu: (ID_NEW.GRID_SIZER, 'GridSizer', 'Create grid sizer'), (ID_NEW.FLEX_GRID_SIZER, 'FlexGridSizer', 'Create flexgrid sizer'), + (ID_NEW.GRID_BAG_SIZER, 'GridBagSizer', + 'Create gridbag sizer'), (ID_NEW.SPACER, 'Spacer', 'Create spacer'), ] ] @@ -377,7 +387,7 @@ class XML_Tree(wxTreeCtrl): def ExpandAll(self, item): if self.ItemHasChildren(item): self.Expand(item) - i, cookie = self.GetFirstChild(item, 0) + i, cookie = self.GetFirstChild(item) children = [] while i.IsOk(): children.append(i) @@ -386,7 +396,7 @@ class XML_Tree(wxTreeCtrl): self.ExpandAll(i) def CollapseAll(self, item): if self.ItemHasChildren(item): - i, cookie = self.GetFirstChild(item, 0) + i, cookie = self.GetFirstChild(item) children = [] while i.IsOk(): children.append(i) @@ -409,8 +419,8 @@ class XML_Tree(wxTreeCtrl): self.root = self.AddRoot('XML tree', self.rootImage, data=wxTreeItemData(self.rootObj)) self.SetItemHasChildren(self.root) - self.Expand(self.root) self.Unselect() + self.Expand(self.root) # Clear old data and set new def SetData(self, dom): @@ -646,7 +656,7 @@ class XML_Tree(wxTreeCtrl): # if xxx.__class__ == xxxFrame: # Frame can't have many children, # but it's first child possibly can... -# child = self.GetFirstChild(item, 0)[0] +# child = self.GetFirstChild(item)[0] # if child.IsOk() and self.GetPyData(child).__class__ == xxxPanel: # # Clean-up before recursive call or error # wxMemoryFSHandler_RemoveFile('xxx.xrc') @@ -718,67 +728,77 @@ class XML_Tree(wxTreeCtrl): xmlFlags != wxXRC_USE_LOCALE res = wxXmlResource('', xmlFlags) res.Load('memory:xxx.xrc') - if xxx.__class__ == xxxFrame: - # Frame can't have many children, - # but it's first child possibly can... -# child = self.GetFirstChild(item, 0)[0] -# if child.IsOk() and self.GetPyData(child).__class__ == xxxPanel: -# # Clean-up before recursive call or error -# wxMemoryFSHandler_RemoveFile('xxx.xrc') -# wxEndBusyCursor() -# self.CreateTestWin(child) -# return - # This currently works under GTK, but not under MSW - testWin = g.testWin = wxPreFrame() - res.LoadOnFrame(testWin, g.frame, STD_NAME) - # Create status bar - testWin.panel = testWin - testWin.CreateStatusBar() - testWin.SetClientSize(testWin.GetBestSize()) - testWin.panel = testWin - testWin.SetPosition(pos) - testWin.Show(True) - elif xxx.__class__ == xxxPanel: - # Create new frame - if not testWin: - testWin = g.testWin = wxFrame(g.frame, -1, 'Panel: ' + name, + try: + if xxx.__class__ == xxxFrame: + # Frame can't have many children, + # but it's first child possibly can... + # child = self.GetFirstChild(item)[0] + # if child.IsOk() and self.GetPyData(child).__class__ == xxxPanel: + # # Clean-up before recursive call or error + # wxMemoryFSHandler_RemoveFile('xxx.xrc') + # wxEndBusyCursor() + # self.CreateTestWin(child) + # return + # This currently works under GTK, but not under MSW + testWin = g.testWin = wxPreFrame() + res.LoadOnFrame(testWin, g.frame, STD_NAME) + # Create status bar + testWin.panel = testWin + testWin.CreateStatusBar() + testWin.SetClientSize(testWin.GetBestSize()) + testWin.panel = testWin + testWin.SetPosition(pos) + testWin.Show(True) + elif xxx.__class__ == xxxPanel: + # Create new frame + if not testWin: + testWin = g.testWin = wxFrame(g.frame, -1, 'Panel: ' + name, + pos=pos, name=STD_NAME) + testWin.panel = res.LoadPanel(testWin, STD_NAME) + testWin.SetClientSize(testWin.GetBestSize()) + testWin.Show(True) + elif xxx.__class__ == xxxDialog: + testWin = g.testWin = res.LoadDialog(None, STD_NAME) + testWin.panel = testWin + testWin.Layout() + testWin.SetPosition(pos) + testWin.Show(True) + # Dialog's default code does not produce EVT_CLOSE + EVT_BUTTON(testWin, wxID_OK, self.OnCloseTestWin) + EVT_BUTTON(testWin, wxID_CANCEL, self.OnCloseTestWin) + elif xxx.__class__ == xxxMenuBar: + testWin = g.testWin = wxFrame(g.frame, -1, 'MenuBar: ' + name, + pos=pos, name=STD_NAME) + testWin.panel = None + # Set status bar to display help + testWin.CreateStatusBar() + testWin.menuBar = res.LoadMenuBar(STD_NAME) + testWin.SetMenuBar(testWin.menuBar) + testWin.Show(True) + elif xxx.__class__ == xxxToolBar: + testWin = g.testWin = wxFrame(g.frame, -1, 'ToolBar: ' + name, pos=pos, name=STD_NAME) - testWin.panel = res.LoadPanel(testWin, STD_NAME) - testWin.SetClientSize(testWin.GetBestSize()) - testWin.Show(True) - elif xxx.__class__ == xxxDialog: - testWin = g.testWin = res.LoadDialog(None, STD_NAME) - testWin.panel = testWin - testWin.Layout() - testWin.SetPosition(pos) - testWin.Show(True) - # Dialog's default code does not produce EVT_CLOSE - EVT_BUTTON(testWin, wxID_OK, self.OnCloseTestWin) - EVT_BUTTON(testWin, wxID_CANCEL, self.OnCloseTestWin) - elif xxx.__class__ == xxxMenuBar: - testWin = g.testWin = wxFrame(g.frame, -1, 'MenuBar: ' + name, - pos=pos, name=STD_NAME) - testWin.panel = None - # Set status bar to display help - testWin.CreateStatusBar() - testWin.menuBar = res.LoadMenuBar(STD_NAME) - testWin.SetMenuBar(testWin.menuBar) - testWin.Show(True) - elif xxx.__class__ == xxxToolBar: - testWin = g.testWin = wxFrame(g.frame, -1, 'ToolBar: ' + name, - pos=pos, name=STD_NAME) - testWin.panel = None - # Set status bar to display help - testWin.CreateStatusBar() - testWin.toolBar = res.LoadToolBar(testWin, STD_NAME) - testWin.SetToolBar(testWin.toolBar) - testWin.Show(True) + testWin.panel = None + # Set status bar to display help + testWin.CreateStatusBar() + testWin.toolBar = res.LoadToolBar(testWin, STD_NAME) + testWin.SetToolBar(testWin.toolBar) + testWin.Show(True) + testWin.item = item + EVT_CLOSE(testWin, self.OnCloseTestWin) + testWin.highLight = None + if highLight and not self.pendingHighLight: + self.HighLight(highLight) + except: + if g.testWin: + self.SetItemBold(item, False) + g.testWinPos = g.testWin.GetPosition() + g.testWin.Destroy() + g.testWin = None + inf = sys.exc_info() + wxLogError(traceback.format_exception(inf[0], inf[1], None)[-1]) + wxLogError('Error loading resource') wxMemoryFSHandler_RemoveFile('xxx.xrc') - testWin.item = item - EVT_CLOSE(testWin, self.OnCloseTestWin) - testWin.highLight = None - if highLight and not self.pendingHighLight: - self.HighLight(highLight) wxEndBusyCursor() def OnCloseTestWin(self, evt): @@ -809,7 +829,7 @@ class XML_Tree(wxTreeCtrl): if index is None: return wxTreeItemId() item = self.root for i in index: - item = self.GetFirstChild(item, 0)[0] + item = self.GetFirstChild(item)[0] for k in range(i): item = self.GetNextSibling(item) return item @@ -902,6 +922,8 @@ class XML_Tree(wxTreeCtrl): id = wxNewId() menu.AppendMenu(id, 'Replace With', m) if not m.GetMenuItemCount(): menu.Enable(id, False) + menu.Append(pullDownMenu.ID_SUBCLASS, 'Subclass...', + 'Set subclass property') menu.AppendSeparator() # Not using standart IDs because we don't want to show shortcuts menu.Append(wxID_CUT, 'Cut', 'Cut to the clipboard')