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 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 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 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 847 class WatershedConfig(object):
... ... @@ -1338,18 +1326,14 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
1338 1326 self.config.use_ww_wl, wl, ww, q))
1339 1327  
1340 1328 wp = WatershedProgressWindow(p)
1341   - wp.Center(wx.BOTH)
1342   - wp.Show()
1343   - wp.MakeModal()
1344   -
1345 1329 p.start()
1346 1330  
1347 1331 while q.empty() and p.is_alive():
1348 1332 time.sleep(0.5)
  1333 + wp.Update()
1349 1334 wx.Yield()
1350 1335  
1351   - wp.MakeModal(False)
1352   - wp.Destroy()
  1336 + wp.Close()
1353 1337 del wp
1354 1338  
1355 1339 if q.empty():
... ...