Commit 8ebf6adfe3e3dc5b55bdeb770ff0b3f8c2eb03c0

Authored by Thiago Franco de Moraes
1 parent 138dc42c

Better watershed progress dialog

Showing 1 changed file with 19 additions and 35 deletions   Show diff stats
invesalius/data/styles.py
@@ -819,41 +819,29 @@ class EditorInteractorStyle(DefaultInteractorStyle): @@ -819,41 +819,29 @@ class EditorInteractorStyle(DefaultInteractorStyle):
819 return x, y, z 819 return x, y, z
820 820
821 821
822 -class WatershedProgressWindow(wx.Frame):  
823 - def __init__(self, process, parent=None):  
824 - wx.Frame.__init__(self, parent, -1) 822 +class WatershedProgressWindow(object):
  823 + def __init__(self, process):
825 self.process = process 824 self.process = process
826 - self._build_gui()  
827 - self._bind_wx_events()  
828 - self.timer = wx.Timer(self)  
829 - self.timer.Start(1000)  
830 -  
831 - def _build_gui(self):  
832 - self.gauge = wx.Gauge(self, -1, 100)  
833 - self.btn_cancel = wx.Button(self, wx.ID_CANCEL)  
834 -  
835 - sizer = wx.BoxSizer(wx.VERTICAL)  
836 - sizer.Add(wx.StaticText(self, -1, _("Applying watershed")))  
837 - sizer.Add(self.gauge, 0, wx.EXPAND)  
838 - sizer.Add(self.btn_cancel, 0, wx.ALIGN_LEFT)  
839 -  
840 - self.SetSizer(sizer)  
841 - sizer.Fit(self)  
842 - self.Layout() 825 + self.title = "InVesalius 3"
  826 + self.msg = _("Applying watershed ...")
  827 + self.style = wx.PD_APP_MODAL | wx.PD_APP_MODAL | wx.PD_CAN_ABORT
843 828
844 - def __del__(self):  
845 - self.timer.Stop() 829 + self.dlg = wx.ProgressDialog(self.title,
  830 + self.msg,
  831 + parent = None,
  832 + style = self.style)
846 833
847 - def _bind_wx_events(self):  
848 - self.Bind(wx.EVT_TIMER, self.TimeHandler)  
849 - self.btn_cancel.Bind(wx.EVT_BUTTON, self.on_cancel) 834 + self.dlg.Bind(wx.EVT_BUTTON, self.Cancel)
  835 + self.dlg.Show()
850 836
851 - def on_cancel(self, evt):  
852 - self.timer.Stop() 837 + def Cancel(self, evt):
853 self.process.terminate() 838 self.process.terminate()
854 839
855 - def TimeHandler(self, evt):  
856 - self.gauge.Pulse() 840 + def Update(self):
  841 + self.dlg.Pulse()
  842 +
  843 + def Close(self):
  844 + self.dlg.Destroy()
857 845
858 846
859 class WatershedConfig(object): 847 class WatershedConfig(object):
@@ -1338,18 +1326,14 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): @@ -1338,18 +1326,14 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
1338 self.config.use_ww_wl, wl, ww, q)) 1326 self.config.use_ww_wl, wl, ww, q))
1339 1327
1340 wp = WatershedProgressWindow(p) 1328 wp = WatershedProgressWindow(p)
1341 - wp.Center(wx.BOTH)  
1342 - wp.Show()  
1343 - wp.MakeModal()  
1344 -  
1345 p.start() 1329 p.start()
1346 1330
1347 while q.empty() and p.is_alive(): 1331 while q.empty() and p.is_alive():
1348 time.sleep(0.5) 1332 time.sleep(0.5)
  1333 + wp.Update()
1349 wx.Yield() 1334 wx.Yield()
1350 1335
1351 - wp.MakeModal(False)  
1352 - wp.Destroy() 1336 + wp.Close()
1353 del wp 1337 del wp
1354 1338
1355 if q.empty(): 1339 if q.empty():