Commit 69661eb1d393d54a12489689bf89e6c617b9ab5d

Authored by Paulo Henrique Junqueira Amorim
1 parent a00db00a

ENH: Modes and SafeYield

invesalius/data/viewer_slice.py
@@ -937,7 +937,7 @@ class Viewer(wx.Panel): @@ -937,7 +937,7 @@ class Viewer(wx.Panel):
937 937
938 self.EnableText() 938 self.EnableText()
939 # Insert cursor 939 # Insert cursor
940 - self.SetState(const.SLICE_STATE_EDITOR) 940 + self.SetState(const.STATE_DEFAULT)
941 941
942 self.__build_cross_lines() 942 self.__build_cross_lines()
943 943
invesalius/gui/dicom_preview_panel.py
@@ -165,7 +165,7 @@ class SingleImagePreview(wx.Panel): @@ -165,7 +165,7 @@ class SingleImagePreview(wx.Panel):
165 self.ShowSlice(pos) 165 self.ShowSlice(pos)
166 time.sleep(0.2) 166 time.sleep(0.2)
167 if self.ischecked: 167 if self.ischecked:
168 - wx.Yield() 168 + wx.SafeYield()
169 wx.CallAfter(self.OnRun) 169 wx.CallAfter(self.OnRun)
170 170
171 def SetDicomGroup(self, group): 171 def SetDicomGroup(self, group):
invesalius/gui/frame.py
@@ -423,7 +423,7 @@ class StatusBar(wx.StatusBar): @@ -423,7 +423,7 @@ class StatusBar(wx.StatusBar):
423 if (int(value) >= 99): 423 if (int(value) >= 99):
424 self.SetStatusText("",0) 424 self.SetStatusText("",0)
425 if sys.platform != 'linux2': 425 if sys.platform != 'linux2':
426 - wx.Yield() 426 + wx.SafeYield()
427 427
428 428
429 def UpdateStatusLabel(self, pubsub_evt): 429 def UpdateStatusLabel(self, pubsub_evt):
invesalius/gui/task_slice.py
@@ -205,6 +205,9 @@ class InnerFoldPanel(wx.Panel): @@ -205,6 +205,9 @@ class InnerFoldPanel(wx.Panel):
205 fold_panel.ApplyCaptionStyle(item, style) 205 fold_panel.ApplyCaptionStyle(item, style)
206 fold_panel.AddFoldPanelWindow(item, EditionTools(item), Spacing= 0, 206 fold_panel.AddFoldPanelWindow(item, EditionTools(item), Spacing= 0,
207 leftSpacing=0, rightSpacing=0) 207 leftSpacing=0, rightSpacing=0)
  208 + self.editor_panel_id = item.GetId()
  209 + self.last_panel_opened = None
  210 +
208 #fold_panel.Expand(fold_panel.GetFoldPanel(1)) 211 #fold_panel.Expand(fold_panel.GetFoldPanel(1))
209 212
210 # Panel sizer to expand fold panel 213 # Panel sizer to expand fold panel
@@ -214,6 +217,22 @@ class InnerFoldPanel(wx.Panel): @@ -214,6 +217,22 @@ class InnerFoldPanel(wx.Panel):
214 self.SetSizer(sizer) 217 self.SetSizer(sizer)
215 self.Update() 218 self.Update()
216 self.SetAutoLayout(1) 219 self.SetAutoLayout(1)
  220 + fold_panel.Bind(fpb.EVT_CAPTIONBAR, self.OnFoldPressCaption)
  221 +
  222 + def OnFoldPressCaption(self, evt):
  223 +
  224 + if (self.editor_panel_id == evt.GetTag().GetId()):
  225 + if not(evt.GetFoldStatus()):
  226 + ps.Publisher().sendMessage('Enable mode', const.SLICE_STATE_EDITOR)
  227 + else:
  228 + ps.Publisher().sendMessage('Disable mode', const.SLICE_STATE_EDITOR)
  229 + else:
  230 + if(self.last_panel_opened == self.editor_panel_id):
  231 + ps.Publisher().sendMessage('Disable mode', const.SLICE_STATE_EDITOR)
  232 +
  233 + self.last_panel_opened = evt.GetTag().GetId()
  234 +
  235 + evt.Skip()
217 236
218 def GetMaskSelected(self): 237 def GetMaskSelected(self):
219 x= self.mask_prop_panel.GetMaskSelected() 238 x= self.mask_prop_panel.GetMaskSelected()
invesalius/mode.py
@@ -108,6 +108,7 @@ class SliceMode(object): @@ -108,6 +108,7 @@ class SliceMode(object):
108 max_level = max(self.stack.keys()) 108 max_level = max(self.stack.keys())
109 109
110 # Remove item from stack 110 # Remove item from stack
  111 +
111 self.stack.pop(level) 112 self.stack.pop(level)
112 113
113 # New max level 114 # New max level