# HG changeset patch # User laurent # Date 1336152046 -7200 # Node ID b693147fb2c39d5ba5b637445930c5dab9ac16c3 # Parent 91e8ff268e9634848c6d3bc03a0806c80fb8c857 Fixing bugs with latest changesets on Windows diff -r 91e8ff268e96 -r b693147fb2c3 PLCOpenEditor.py --- a/PLCOpenEditor.py Fri May 04 11:12:08 2012 +0200 +++ b/PLCOpenEditor.py Fri May 04 19:20:46 2012 +0200 @@ -306,6 +306,13 @@ self.ShowErrorMessage(_("\"%s\" is used by one or more POUs. It can't be removed!")%name) return DeleteElementFunction +if wx.Platform == '__WXMSW__': + TAB_BORDER = 6 + NOTEBOOK_BORDER = 6 +else: + TAB_BORDER = 7 + NOTEBOOK_BORDER = 2 + def SimplifyTabOrganization(tabs, rect): for tab in tabs: if tab["pos"][0] == rect.x: @@ -314,9 +321,9 @@ for other in others: if (other["pos"][1] == tab["pos"][1] and other["size"][1] == tab["size"][1] and - other["pos"][0] == tab["pos"][0] + tab["size"][0] + 7): + other["pos"][0] == tab["pos"][0] + tab["size"][0] + TAB_BORDER): - tab["size"] = (tab["size"][0] + other["size"][0] + 7, tab["size"][1]) + tab["size"] = (tab["size"][0] + other["size"][0] + TAB_BORDER, tab["size"][1]) tab["pages"].extend(other["pages"]) tabs.remove(other) @@ -329,9 +336,9 @@ for other in others: if (other["pos"][0] == tab["pos"][0] and other["size"][0] == tab["size"][0] and - other["pos"][1] == tab["pos"][1] + tab["size"][1] + 7): + other["pos"][1] == tab["pos"][1] + tab["size"][1] + TAB_BORDER): - tab["size"] = (tab["size"][0], tab["size"][1] + other["size"][1] + 7) + tab["size"] = (tab["size"][0], tab["size"][1] + other["size"][1] + TAB_BORDER) tab["pages"].extend(other["pages"]) tabs.remove(other) @@ -346,25 +353,27 @@ return tabs[0] split = None for idx, tab in enumerate(tabs): + if len(tab["pages"]) == 0: + raise "Not possible" if tab["size"][0] == rect.width: if tab["pos"][1] == rect.y: split = (wx.TOP, float(tab["size"][1]) / float(rect.height)) - split_rect = wx.Rect(rect.x, rect.y + tab["size"][1] + 7, - rect.width, rect.height - tab["size"][1] - 7) + split_rect = wx.Rect(rect.x, rect.y + tab["size"][1] + TAB_BORDER, + rect.width, rect.height - tab["size"][1] - TAB_BORDER) elif tab["pos"][1] == rect.height + 1 - tab["size"][1]: split = (wx.BOTTOM, 1.0 - float(tab["size"][1]) / float(rect.height)) split_rect = wx.Rect(rect.x, rect.y, - rect.width, rect.height - tab["size"][1] - 7) + rect.width, rect.height - tab["size"][1] - TAB_BORDER) break elif tab["size"][1] == rect.height: if tab["pos"][0] == rect.x: split = (wx.LEFT, float(tab["size"][0]) / float(rect.width)) - split_rect = wx.Rect(rect.x + tab["size"][0] + 7, rect.y, - rect.width - tab["size"][0] - 7, rect.height) + split_rect = wx.Rect(rect.x + tab["size"][0] + TAB_BORDER, rect.y, + rect.width - tab["size"][0] - TAB_BORDER, rect.height) elif tab["pos"][0] == rect.width + 1 - tab["size"][0]: split = (wx.RIGHT, 1.0 - float(tab["size"][0]) / float(rect.width)) split_rect = wx.Rect(rect.x, rect.y, - rect.width - tab["size"][0] - 7, rect.height) + rect.width - tab["size"][0] - TAB_BORDER, rect.height) break if split != None: split_tab = tabs.pop(idx) @@ -384,6 +393,8 @@ class IDEFrame(wx.Frame): + Starting = False + # Compatibility function for wx versions < 2.6 if wx.VERSION < (2, 6, 0): def Bind(self, event, function, id = None): @@ -805,7 +816,6 @@ #self.DrawingMode = DRIVENDRAWING_MODE if USE_AUI: self.AuiTabCtrl = [] - self.Starting = False self.DefaultPerspective = None # Initialize Printing configuring elements @@ -818,6 +828,9 @@ self.SetRefreshFunctions() + def ResetStarting(self): + self.Starting = False + def Show(self): wx.Frame.Show(self) wx.CallAfter(self.RestoreLastState) @@ -834,8 +847,11 @@ def OnResize(self, event): if self.Starting: self.RestoreLastOrganization() - self.Starting = False - self.RefreshEditor() + if wx.Platform == '__WXMSW__': + wx.CallAfter(self.ResetStarting) + else: + self.ResetStarting() + wx.CallAfter(self.RefreshEditor) event.Skip() def GetProjectConfiguration(self): @@ -896,7 +912,7 @@ tabs.append(tab) tabs.sort(lambda x, y: cmp(x["pos"], y["pos"])) size = notebook.GetSize() - return ComputeTabsOrganization(tabs, wx.Rect(1, 1, size[0] - 2, size[1] - 2)) + return ComputeTabsOrganization(tabs, wx.Rect(1, 1, size[0] - NOTEBOOK_BORDER, size[1] - NOTEBOOK_BORDER)) def LoadTab(self, notebook, page_infos): if page_infos[0] == "main": diff -r 91e8ff268e96 -r b693147fb2c3 controls/LibraryPanel.py --- a/controls/LibraryPanel.py Fri May 04 11:12:08 2012 +0200 +++ b/controls/LibraryPanel.py Fri May 04 19:20:46 2012 +0200 @@ -216,6 +216,9 @@ def SearchInTree(self, value, mode="first"): root = self.Tree.GetRootItem() + if not root.IsOk(): + return False + if mode == "first": item, item_cookie = self.Tree.GetFirstChild(root) selected = None @@ -240,7 +243,10 @@ else: name = self.Tree.GetItemText(item) if name.upper().startswith(value.upper()) and item != selected: - self.Tree.CollapseAllChildren(root) + child, child_cookie = self.Tree.GetFirstChild(root) + while child.IsOk(): + self.Tree.CollapseAllChildren(child) + child, child_cookie = self.Tree.GetNextChild(root, child_cookie) self.Tree.SelectItem(item) self.Tree.EnsureVisible(item) return True