Commit 469c5273d6f7c808e42898a538541b7a25d6dd34

Authored by Thiago Franco de Moraes
1 parent a657e6bb
Exists in threshold_history

ENH: the undo and redo menu are saying what will be undone and redone

Showing 2 changed files with 47 additions and 36 deletions   Show diff stats
invesalius/data/mask.py
... ... @@ -34,6 +34,7 @@ from wx.lib.pubsub import pub as Publisher
34 34 class ThresholdHistoryNode(object):
35 35 def __init__(self, mask):
36 36 self.threshold = mask.threshold_range
  37 + self.descr = _(u'Set threshold')
37 38  
38 39 if mask.was_edited:
39 40 self.array_file = tempfile.mktemp()
... ... @@ -59,6 +60,7 @@ class EditionHistoryNode(object):
59 60 self.filename = tempfile.mktemp(suffix='.npy')
60 61 self.clean = clean
61 62 self.threshold = threshold
  63 + self.descr = _(u'Edition at %s' % self.orientation)
62 64  
63 65 self._save_array(array)
64 66  
... ... @@ -96,8 +98,8 @@ class EditionHistory(object):
96 98 self.index = -1
97 99 self.size = size * 2
98 100  
99   - Publisher.sendMessage("Enable undo", False)
100   - Publisher.sendMessage("Enable redo", False)
  101 + Publisher.sendMessage("Disable undo")
  102 + Publisher.sendMessage("Disable redo")
101 103  
102 104 def new_node(self, index, orientation, array, p_array, clean, threshold):
103 105 # Saving the previous state, used to undo/redo correctly.
... ... @@ -123,8 +125,8 @@ class EditionHistory(object):
123 125 self.index += 1
124 126  
125 127 print "INDEX", self.index, len(self.history), self.history
126   - Publisher.sendMessage("Enable undo", True)
127   - Publisher.sendMessage("Enable redo", False)
  128 + Publisher.sendMessage("Enable undo", self.history[self.index - 1].descr)
  129 + Publisher.sendMessage("Disable redo")
128 130  
129 131 def undo(self, mask, actual_slices=None):
130 132 h = self.history
... ... @@ -143,14 +145,14 @@ class EditionHistory(object):
143 145 self.index -= 1
144 146 h[self.index].commit_history(mask)
145 147 self._reload_slice(self.index)
146   - Publisher.sendMessage("Enable redo", True)
  148 + Publisher.sendMessage("Enable redo", h[self.index + 1].descr)
147 149 else:
148 150 self.index -= 1
149 151 h[self.index].commit_history(mask)
150   - Publisher.sendMessage("Enable redo", True)
  152 + Publisher.sendMessage("Enable redo", h[self.index + 1].descr)
151 153  
152 154 if self.index == 0:
153   - Publisher.sendMessage("Enable undo", False)
  155 + Publisher.sendMessage("Disable undo")
154 156 #print "AT", self.index, len(self.history), self.history[self.index].filename
155 157  
156 158 def redo(self, mask, actual_slices=None):
... ... @@ -171,14 +173,14 @@ class EditionHistory(object):
171 173 self.index += 1
172 174 h[self.index].commit_history(mask)
173 175 self._reload_slice(self.index)
174   - Publisher.sendMessage("Enable undo", True)
  176 + Publisher.sendMessage("Enable undo", h[self.index - 1].descr)
175 177 else:
176 178 self.index += 1
177 179 h[self.index].commit_history(mask)
178   - Publisher.sendMessage("Enable undo", True)
  180 + Publisher.sendMessage("Enable undo", h[self.index - 1].descr)
179 181  
180 182 if self.index == len(h) - 1:
181   - Publisher.sendMessage("Enable redo", False)
  183 + Publisher.sendMessage("Disable redo")
182 184 #print "AT", self.index, len(h), h[self.index].filename
183 185  
184 186 def _reload_slice(self, index):
... ... @@ -186,8 +188,8 @@ class EditionHistory(object):
186 188 self.history[index].index)
187 189  
188 190 def _config_undo_redo(self, visible):
189   - v_undo = False
190   - v_redo = False
  191 + v_undo = "Disable Undo"
  192 + v_redo = "Disable Redo"
191 193  
192 194 if self.history and visible:
193 195 v_undo = True
... ... @@ -197,14 +199,14 @@ class EditionHistory(object):
197 199 elif self.index == len(self.history) - 1:
198 200 v_redo = False
199 201  
200   - Publisher.sendMessage("Enable undo", v_undo)
201   - Publisher.sendMessage("Enable redo", v_redo)
  202 + Publisher.sendMessage(v_undo)
  203 + Publisher.sendMessage(v_redo)
202 204  
203 205 def clear_history(self):
204 206 self.history = []
205 207 self.index = -1
206   - Publisher.sendMessage("Enable undo", False)
207   - Publisher.sendMessage("Enable redo", False)
  208 + Publisher.sendMessage("Disable undo")
  209 + Publisher.sendMessage("Disable redo")
208 210  
209 211  
210 212 class Mask():
... ...
invesalius/gui/frame.py
... ... @@ -496,7 +496,9 @@ class MenuBar(wx.MenuBar):
496 496 sub = Publisher.subscribe
497 497 sub(self.OnEnableState, "Enable state project")
498 498 sub(self.OnEnableUndo, "Enable undo")
  499 + sub(self.OnDisableUndo, "Disable undo")
499 500 sub(self.OnEnableRedo, "Enable redo")
  501 + sub(self.OnDisableRedo, "Disable redo")
500 502  
501 503 def __init_items(self):
502 504 """
... ... @@ -546,8 +548,8 @@ class MenuBar(wx.MenuBar):
546 548 file_edit = wx.Menu()
547 549 file_edit.AppendMenu(wx.NewId(), _('Flip'), flip_menu)
548 550 file_edit.AppendMenu(wx.NewId(), _('Swap axes'), swap_axes_menu)
549   - file_edit.Append(wx.ID_UNDO, "Undo\tCtrl+Z").Enable(False)
550   - file_edit.Append(wx.ID_REDO, "Redo\tCtrl+Y").Enable(False)
  551 + file_edit.Append(wx.ID_UNDO, _(u"Undo\tCtrl+Z")).Enable(False)
  552 + file_edit.Append(wx.ID_REDO, _(u"Redo\tCtrl+Y")).Enable(False)
551 553 #app(const.ID_EDIT_LIST, "Show Undo List...")
552 554 #################################################################
553 555  
... ... @@ -630,18 +632,22 @@ class MenuBar(wx.MenuBar):
630 632 self.Enable(item, True)
631 633  
632 634 def OnEnableUndo(self, pubsub_evt):
633   - value = pubsub_evt.data
634   - if value:
635   - self.FindItemById(wx.ID_UNDO).Enable(True)
636   - else:
637   - self.FindItemById(wx.ID_UNDO).Enable(False)
  635 + descr = pubsub_evt.data
  636 + self.FindItemById(wx.ID_UNDO).Enable(True)
  637 + self.FindItemById(wx.ID_UNDO).SetItemLabel(_(u"Undo: %s \tCtrl+Z" % descr))
  638 +
  639 + def OnDisableUndo(self, pubsub_evt):
  640 + self.FindItemById(wx.ID_UNDO).Enable(False)
  641 + self.FindItemById(wx.ID_UNDO).SetItemLabel(_(u"Undo:\tCtrl+Z"))
638 642  
639 643 def OnEnableRedo(self, pubsub_evt):
640   - value = pubsub_evt.data
641   - if value:
642   - self.FindItemById(wx.ID_REDO).Enable(True)
643   - else:
644   - self.FindItemById(wx.ID_REDO).Enable(False)
  644 + descr = pubsub_evt.data
  645 + self.FindItemById(wx.ID_REDO).Enable(True)
  646 + self.FindItemById(wx.ID_REDO).SetItemLabel(_(u"Redo: %s \tCtrl+Y" % descr))
  647 +
  648 + def OnDisableRedo(self, pubsub_evt):
  649 + self.FindItemById(wx.ID_REDO).Enable(False)
  650 + self.FindItemById(wx.ID_REDO).SetItemLabel(_(u"Redo:\tCtrl+Y"))
645 651 # ------------------------------------------------------------------
646 652 # ------------------------------------------------------------------
647 653 # ------------------------------------------------------------------
... ... @@ -1464,7 +1470,10 @@ class HistoryToolBar(wx.ToolBar):
1464 1470 #sub(self._SetLayoutWithTask, "Set layout button data only")
1465 1471 #sub(self._SetLayoutWithoutTask, "Set layout button full")
1466 1472 sub(self.OnEnableUndo, "Enable undo")
  1473 + sub(self.OnDisableUndo, "Disable undo")
  1474 +
1467 1475 sub(self.OnEnableRedo, "Enable redo")
  1476 + sub(self.OnDisableRedo, "Disable redo")
1468 1477  
1469 1478 def __bind_events_wx(self):
1470 1479 """
... ... @@ -1582,14 +1591,14 @@ class HistoryToolBar(wx.ToolBar):
1582 1591  
1583 1592 def OnEnableUndo(self, pubsub_evt):
1584 1593 value = pubsub_evt.data
1585   - if value:
1586   - self.EnableTool(wx.ID_UNDO, True)
1587   - else:
1588   - self.EnableTool(wx.ID_UNDO, False)
  1594 + self.EnableTool(wx.ID_UNDO, True)
  1595 +
  1596 + def OnDisableUndo(self, pubsub_evt):
  1597 + self.EnableTool(wx.ID_UNDO, False)
1589 1598  
1590 1599 def OnEnableRedo(self, pubsub_evt):
1591 1600 value = pubsub_evt.data
1592   - if value:
1593   - self.EnableTool(wx.ID_REDO, True)
1594   - else:
1595   - self.EnableTool(wx.ID_REDO, False)
  1601 + self.EnableTool(wx.ID_REDO, True)
  1602 +
  1603 + def OnDisableRedo(self, pubsub_evt):
  1604 + self.EnableTool(wx.ID_REDO, False)
... ...