Commit 4678f3c8d894a28da3c76bc5044e352709be3091

Authored by Thiago Franco de Moraes
1 parent 5a6cf097
Exists in master

Added an label showing the time in brain segmenter dialog

Showing 1 changed file with 34 additions and 1 deletions   Show diff stats
invesalius/gui/brain_seg_dialog.py
@@ -5,6 +5,7 @@ import importlib @@ -5,6 +5,7 @@ import importlib
5 import os 5 import os
6 import pathlib 6 import pathlib
7 import sys 7 import sys
  8 +import time
8 9
9 import wx 10 import wx
10 from wx.lib.pubsub import pub as Publisher 11 from wx.lib.pubsub import pub as Publisher
@@ -72,6 +73,8 @@ class BrainSegmenterDialog(wx.Dialog): @@ -72,6 +73,8 @@ class BrainSegmenterDialog(wx.Dialog):
72 w, h = self.CalcSizeFromTextSize("MMMMM") 73 w, h = self.CalcSizeFromTextSize("MMMMM")
73 self.txt_threshold.SetMinClientSize((w, -1)) 74 self.txt_threshold.SetMinClientSize((w, -1))
74 self.progress = wx.Gauge(self, -1) 75 self.progress = wx.Gauge(self, -1)
  76 + self.lbl_progress_caption = wx.StaticText(self, -1, _("Elapsed time:"))
  77 + self.lbl_time = wx.StaticText(self, -1, _("00:00:00"))
75 self.btn_segment = wx.Button(self, wx.ID_ANY, _("Segment")) 78 self.btn_segment = wx.Button(self, wx.ID_ANY, _("Segment"))
76 self.btn_stop = wx.Button(self, wx.ID_ANY, _("Stop")) 79 self.btn_stop = wx.Button(self, wx.ID_ANY, _("Stop"))
77 self.btn_stop.Disable() 80 self.btn_stop.Disable()
@@ -79,6 +82,8 @@ class BrainSegmenterDialog(wx.Dialog): @@ -79,6 +82,8 @@ class BrainSegmenterDialog(wx.Dialog):
79 82
80 self.txt_threshold.SetValue("{:3d}%".format(self.sld_threshold.GetValue())) 83 self.txt_threshold.SetValue("{:3d}%".format(self.sld_threshold.GetValue()))
81 84
  85 + self.elapsed_time_timer = wx.Timer()
  86 +
82 self.__do_layout() 87 self.__do_layout()
83 self.__set_events() 88 self.__set_events()
84 89
@@ -102,6 +107,10 @@ class BrainSegmenterDialog(wx.Dialog): @@ -102,6 +107,10 @@ class BrainSegmenterDialog(wx.Dialog):
102 sizer_3.Add(self.txt_threshold, 0, wx.ALL, 5) 107 sizer_3.Add(self.txt_threshold, 0, wx.ALL, 5)
103 main_sizer.Add(sizer_3, 0, wx.EXPAND, 0) 108 main_sizer.Add(sizer_3, 0, wx.EXPAND, 0)
104 main_sizer.Add(self.progress, 0, wx.EXPAND | wx.ALL, 5) 109 main_sizer.Add(self.progress, 0, wx.EXPAND | wx.ALL, 5)
  110 + time_sizer = wx.BoxSizer(wx.HORIZONTAL)
  111 + time_sizer.Add(self.lbl_progress_caption, 0, wx.EXPAND, 0)
  112 + time_sizer.Add(self.lbl_time, 1, wx.EXPAND | wx.LEFT, 5)
  113 + main_sizer.Add(time_sizer, 0, wx.EXPAND | wx.ALL, 5)
105 sizer_buttons = wx.BoxSizer(wx.HORIZONTAL) 114 sizer_buttons = wx.BoxSizer(wx.HORIZONTAL)
106 sizer_buttons.Add(self.btn_close, 0, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT | wx.ALL, 5) 115 sizer_buttons.Add(self.btn_close, 0, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT | wx.ALL, 5)
107 sizer_buttons.Add(self.btn_stop, 0, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT | wx.ALL, 5) 116 sizer_buttons.Add(self.btn_stop, 0, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT | wx.ALL, 5)
@@ -114,6 +123,7 @@ class BrainSegmenterDialog(wx.Dialog): @@ -114,6 +123,7 @@ class BrainSegmenterDialog(wx.Dialog):
114 self.main_sizer = main_sizer 123 self.main_sizer = main_sizer
115 124
116 self.OnSetBackend() 125 self.OnSetBackend()
  126 + self.HideProgress()
117 127
118 self.Layout() 128 self.Layout()
119 self.Centre() 129 self.Centre()
@@ -125,6 +135,7 @@ class BrainSegmenterDialog(wx.Dialog): @@ -125,6 +135,7 @@ class BrainSegmenterDialog(wx.Dialog):
125 self.btn_segment.Bind(wx.EVT_BUTTON, self.OnSegment) 135 self.btn_segment.Bind(wx.EVT_BUTTON, self.OnSegment)
126 self.btn_stop.Bind(wx.EVT_BUTTON, self.OnStop) 136 self.btn_stop.Bind(wx.EVT_BUTTON, self.OnStop)
127 self.btn_close.Bind(wx.EVT_BUTTON, self.OnBtnClose) 137 self.btn_close.Bind(wx.EVT_BUTTON, self.OnBtnClose)
  138 + self.elapsed_time_timer.Bind(wx.EVT_TIMER, self.OnTickTimer)
128 self.Bind(wx.EVT_CLOSE, self.OnClose) 139 self.Bind(wx.EVT_CLOSE, self.OnClose)
129 140
130 def CalcSizeFromTextSize(self, text): 141 def CalcSizeFromTextSize(self, text):
@@ -174,6 +185,9 @@ class BrainSegmenterDialog(wx.Dialog): @@ -174,6 +185,9 @@ class BrainSegmenterDialog(wx.Dialog):
174 Publisher.sendMessage('Reload actual slice') 185 Publisher.sendMessage('Reload actual slice')
175 186
176 def OnSegment(self, evt): 187 def OnSegment(self, evt):
  188 + self.ShowProgress()
  189 + self.t0 = time.time()
  190 + self.elapsed_time_timer.Start(1000)
177 image = slc.Slice().matrix 191 image = slc.Slice().matrix
178 backend = self.cb_backends.GetValue() 192 backend = self.cb_backends.GetValue()
179 try: 193 try:
@@ -192,6 +206,7 @@ class BrainSegmenterDialog(wx.Dialog): @@ -192,6 +206,7 @@ class BrainSegmenterDialog(wx.Dialog):
192 self.btn_close.Enable() 206 self.btn_close.Enable()
193 self.btn_stop.Disable() 207 self.btn_stop.Disable()
194 self.btn_segment.Enable() 208 self.btn_segment.Enable()
  209 + self.elapsed_time_timer.Stop()
195 evt.Skip() 210 evt.Skip()
196 211
197 def OnBtnClose(self, evt): 212 def OnBtnClose(self, evt):
@@ -202,12 +217,16 @@ class BrainSegmenterDialog(wx.Dialog): @@ -202,12 +217,16 @@ class BrainSegmenterDialog(wx.Dialog):
202 self.btn_stop.Disable() 217 self.btn_stop.Disable()
203 self.btn_segment.Disable() 218 self.btn_segment.Disable()
204 Publisher.sendMessage('Reload actual slice') 219 Publisher.sendMessage('Reload actual slice')
  220 + self.elapsed_time_timer.Stop()
205 221
206 def SetProgress(self, progress): 222 def SetProgress(self, progress):
207 self.progress.SetValue(progress * 100) 223 self.progress.SetValue(progress * 100)
208 - # self.pg_dialog.Update(progress * 100)  
209 wx.GetApp().Yield() 224 wx.GetApp().Yield()
210 225
  226 + def OnTickTimer(self, evt):
  227 + fmt='%H:%M:%S'
  228 + self.lbl_time.SetLabel(time.strftime(fmt, time.gmtime(time.time()-self.t0)))
  229 +
211 def OnClose(self, evt): 230 def OnClose(self, evt):
212 self.segmenter.stop = True 231 self.segmenter.stop = True
213 self.btn_stop.Disable() 232 self.btn_stop.Disable()
@@ -215,6 +234,20 @@ class BrainSegmenterDialog(wx.Dialog): @@ -215,6 +234,20 @@ class BrainSegmenterDialog(wx.Dialog):
215 self.progress.SetValue(0) 234 self.progress.SetValue(0)
216 self.Destroy() 235 self.Destroy()
217 236
  237 + def HideProgress(self):
  238 + self.progress.Hide()
  239 + self.lbl_progress_caption.Hide()
  240 + self.lbl_time.Hide()
  241 + self.main_sizer.Fit(self)
  242 + self.main_sizer.SetSizeHints(self)
  243 +
  244 + def ShowProgress(self):
  245 + self.progress.Show()
  246 + self.lbl_progress_caption.Show()
  247 + self.lbl_time.Show()
  248 + self.main_sizer.Fit(self)
  249 + self.main_sizer.SetSizeHints(self)
  250 +
218 251
219 class MyApp(wx.App): 252 class MyApp(wx.App):
220 def OnInit(self): 253 def OnInit(self):