chiark / gitweb /
Fix the window size when progress panels are removed.
authordaid <daid303@gmail.com>
Tue, 21 Feb 2012 15:37:31 +0000 (16:37 +0100)
committerdaid <daid303@gmail.com>
Tue, 21 Feb 2012 15:37:31 +0000 (16:37 +0100)
SkeinPyPy_NewUI/newui/mainWindow.py
SkeinPyPy_NewUI/newui/sliceProgessPanel.py

index 2272d80abe0240cb5250a4991ac8619c718e9ff1..f994cc3c8eff91b9d1d6628284b6562c36dc2678 100644 (file)
@@ -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())
index 65316affc648b8177c677dab68dbe5a6fab6f6d4..fe90cfe4b82b61c1f411be0ec617508d71f7a393 100644 (file)
@@ -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.")