From d1af41e61bbbbe24385a6a80d0d392eba1fa8280 Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 21 Feb 2012 16:37:31 +0100 Subject: [PATCH] Fix the window size when progress panels are removed. --- SkeinPyPy_NewUI/newui/mainWindow.py | 26 +++++++++++++++++----- SkeinPyPy_NewUI/newui/sliceProgessPanel.py | 7 ++++-- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/mainWindow.py b/SkeinPyPy_NewUI/newui/mainWindow.py index 2272d80a..f994cc3c 100644 --- a/SkeinPyPy_NewUI/newui/mainWindow.py +++ b/SkeinPyPy_NewUI/newui/mainWindow.py @@ -32,6 +32,7 @@ class mainWindow(wx.Frame): self.lastPath = "" self.filename = None + self.progressPanelList = [] self.controlList = [] self.plugins = {} for m in skeinforge_profile.getCraftTypePluginModule().getCraftSequence(): @@ -109,7 +110,6 @@ class mainWindow(wx.Frame): self.panel = p self.sizer = sizer - self.sizer.SetRows(2) self.SetSize((800, 400)) self.Centre() @@ -170,11 +170,27 @@ class mainWindow(wx.Frame): settings.storeRepository(self.plugins[pluginName]) settings.saveGlobalConfig(settings.getDefaultConfigPath()) #skeinpypy.runSkein([self.filename]) - spp = sliceProgessPanel.sliceProgessPanel(self.panel, self.filename) - self.sizer.Add(spp, (self.sizer.GetRows(),0), span=(1,4), flag=wx.EXPAND) - self.sizer.SetRows(self.sizer.GetRows()+1) + spp = sliceProgessPanel.sliceProgessPanel(self, self.panel, self.filename) + self.sizer.Add(spp, (len(self.progressPanelList)+2,0), span=(1,4), flag=wx.EXPAND) self.sizer.Layout() - + newSize = self.GetSize(); + newSize.IncBy(0, spp.GetSize().GetHeight()) + self.SetSize(newSize) + self.progressPanelList.append(spp) + + def removeSliceProgress(self, spp): + self.progressPanelList.remove(spp) + newSize = self.GetSize(); + newSize.IncBy(0, -spp.GetSize().GetHeight()) + self.SetSize(newSize) + spp.Destroy() + for spp in self.progressPanelList: + self.sizer.Remove(spp) + i = 2 + for spp in self.progressPanelList: + self.sizer.Add(spp, (i,0), span=(1,4), flag=wx.EXPAND) + i += 1 + def updateConfig(self): for ctrl in self.controlList: ctrl.setting.setValueToString(ctrl.GetValue()) diff --git a/SkeinPyPy_NewUI/newui/sliceProgessPanel.py b/SkeinPyPy_NewUI/newui/sliceProgessPanel.py index 65316aff..fe90cfe4 100644 --- a/SkeinPyPy_NewUI/newui/sliceProgessPanel.py +++ b/SkeinPyPy_NewUI/newui/sliceProgessPanel.py @@ -5,8 +5,9 @@ import wx,sys,math,threading,subprocess from newui import skeinRun class sliceProgessPanel(wx.Panel): - def __init__(self, parent, filename): + def __init__(self, mainWindow, parent, filename): wx.Panel.__init__(self, parent, -1) + self.mainWindow = mainWindow self.filename = filename self.abort = False @@ -30,7 +31,7 @@ class sliceProgessPanel(wx.Panel): def OnAbort(self, e): if self.abort: - self.Destroy() + self.mainWindow.removeSliceProgress(self) else: self.abort = True @@ -61,4 +62,6 @@ class WorkerThread(threading.Thread): wx.CallAfter(self.notifyWindow.statusText.SetLabel, "Aborted by user.") return line = p.stdout.readline() + wx.CallAfter(self.notifyWindow.progressGauge.SetValue, maxValue) + wx.CallAfter(self.notifyWindow.statusText.SetLabel, "Ready.") -- 2.30.2