Fix the window size when progress panels are removed.

This commit is contained in:
daid 2012-02-21 16:37:31 +01:00
parent ac9f65c098
commit d1af41e61b
2 changed files with 26 additions and 7 deletions

View 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())

View 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.")