Commit 4d583c075ce7d9532fa7c42e9c3cd5a63f923b2f
1 parent
50e3d457
Exists in
master
and in
68 other branches
ENH: Restructuring state of the tools
Showing
5 changed files
with
35 additions
and
20 deletions
Show diff stats
invesalius/constants.py
@@ -347,4 +347,4 @@ LEVEL = {STATE_DEFAULT: 0, | @@ -347,4 +347,4 @@ LEVEL = {STATE_DEFAULT: 0, | ||
347 | STATE_ZOOM_SL: 2, | 347 | STATE_ZOOM_SL: 2, |
348 | SLICE_STATE_CROSS: 2, | 348 | SLICE_STATE_CROSS: 2, |
349 | SLICE_STATE_SCROLL: 2, | 349 | SLICE_STATE_SCROLL: 2, |
350 | - STATE_PAN:2} | ||
351 | \ No newline at end of file | 350 | \ No newline at end of file |
351 | + STATE_PAN:2} |
invesalius/data/slice_.py
@@ -24,6 +24,7 @@ import wx.lib.pubsub as ps | @@ -24,6 +24,7 @@ import wx.lib.pubsub as ps | ||
24 | import constants as const | 24 | import constants as const |
25 | import imagedata_utils as iu | 25 | import imagedata_utils as iu |
26 | from mask import Mask | 26 | from mask import Mask |
27 | +import mode as md | ||
27 | from project import Project | 28 | from project import Project |
28 | import session as ses | 29 | import session as ses |
29 | from utils import Singleton | 30 | from utils import Singleton |
@@ -41,6 +42,7 @@ class Slice(object): | @@ -41,6 +42,7 @@ class Slice(object): | ||
41 | self.blend_filter = None | 42 | self.blend_filter = None |
42 | self.__bind_events() | 43 | self.__bind_events() |
43 | self.num_gradient = 0 | 44 | self.num_gradient = 0 |
45 | + self.mode = md.SliceMode() | ||
44 | 46 | ||
45 | def __bind_events(self): | 47 | def __bind_events(self): |
46 | # Slice properties | 48 | # Slice properties |
invesalius/data/viewer_slice.py
@@ -76,7 +76,6 @@ class Viewer(wx.Panel): | @@ -76,7 +76,6 @@ class Viewer(wx.Panel): | ||
76 | self.__bind_events() | 76 | self.__bind_events() |
77 | self.__bind_events_wx() | 77 | self.__bind_events_wx() |
78 | 78 | ||
79 | - md.SliceMode() | ||
80 | 79 | ||
81 | def __init_gui(self): | 80 | def __init_gui(self): |
82 | 81 | ||
@@ -185,7 +184,9 @@ class Viewer(wx.Panel): | @@ -185,7 +184,9 @@ class Viewer(wx.Panel): | ||
185 | "MouseMoveEvent": self.OnWindowLevelMove, | 184 | "MouseMoveEvent": self.OnWindowLevelMove, |
186 | "LeftButtonPressEvent": self.OnWindowLevelClick, | 185 | "LeftButtonPressEvent": self.OnWindowLevelClick, |
187 | "LeftButtonReleaseEvent": self.OnReleaseModes | 186 | "LeftButtonReleaseEvent": self.OnReleaseModes |
188 | - } | 187 | + }, |
188 | + const.STATE_DEFAULT:{ | ||
189 | + } | ||
189 | } | 190 | } |
190 | 191 | ||
191 | # Bind method according to current mode | 192 | # Bind method according to current mode |
invesalius/gui/frame.py
@@ -625,24 +625,24 @@ class ObjectToolBar(wx.ToolBar): | @@ -625,24 +625,24 @@ class ObjectToolBar(wx.ToolBar): | ||
625 | 625 | ||
626 | 626 | ||
627 | def __bind_events_wx(self): | 627 | def __bind_events_wx(self): |
628 | - self.Bind(wx.EVT_TOOL, self.OnClick) | 628 | + self.Bind(wx.EVT_TOOL, self.OnToggle) |
629 | 629 | ||
630 | def __bind_events(self): | 630 | def __bind_events(self): |
631 | ps.Publisher().subscribe(self.UntoggleAllItems, | 631 | ps.Publisher().subscribe(self.UntoggleAllItems, |
632 | 'Untoggle object toolbar items') | 632 | 'Untoggle object toolbar items') |
633 | 633 | ||
634 | - def OnClick(self, evt): | 634 | + def OnToggle(self, evt): |
635 | id = evt.GetId() | 635 | id = evt.GetId() |
636 | state = self.GetToolState(id) | 636 | state = self.GetToolState(id) |
637 | - | ||
638 | if state: | 637 | if state: |
639 | - ps.Publisher().sendMessage('Set slice mode', | 638 | + print "Vai enviar..................." |
639 | + ps.Publisher().sendMessage('Enable mode', | ||
640 | MODE_BY_ID[id]) | 640 | MODE_BY_ID[id]) |
641 | 641 | ||
642 | #ps.Publisher().sendMessage('Untoggle slice toolbar items') | 642 | #ps.Publisher().sendMessage('Untoggle slice toolbar items') |
643 | else: | 643 | else: |
644 | - ps.Publisher().sendMessage('Set interaction mode', | ||
645 | - const.MODE_SLICE_EDITOR) | 644 | + ps.Publisher().sendMessage('Disable mode', |
645 | + MODE_BY_ID[id]) | ||
646 | 646 | ||
647 | 647 | ||
648 | 648 | ||
@@ -652,6 +652,7 @@ class ObjectToolBar(wx.ToolBar): | @@ -652,6 +652,7 @@ class ObjectToolBar(wx.ToolBar): | ||
652 | self.ToggleTool(item, False) | 652 | self.ToggleTool(item, False) |
653 | 653 | ||
654 | evt.Skip() | 654 | evt.Skip() |
655 | + | ||
655 | 656 | ||
656 | def UntoggleAllItems(self, pubsub_evt=None): | 657 | def UntoggleAllItems(self, pubsub_evt=None): |
657 | for id in OBJ_TOOLS: | 658 | for id in OBJ_TOOLS: |
invesalius/mode.py
@@ -76,14 +76,15 @@ class SliceMode(object): | @@ -76,14 +76,15 @@ class SliceMode(object): | ||
76 | # push default value to stack | 76 | # push default value to stack |
77 | self.stack[const.LEVEL[const.STATE_DEFAULT]] = \ | 77 | self.stack[const.LEVEL[const.STATE_DEFAULT]] = \ |
78 | const.STATE_DEFAULT | 78 | const.STATE_DEFAULT |
79 | - | 79 | + print "Foi chamando............................." |
80 | # bind pubsub evt | 80 | # bind pubsub evt |
81 | self.__bind_events() | 81 | self.__bind_events() |
82 | 82 | ||
83 | def __bind_events(self): | 83 | def __bind_events(self): |
84 | + print "__bind_events" | ||
84 | ps.Publisher().subscribe(self.OnEnableState, 'Enable mode') | 85 | ps.Publisher().subscribe(self.OnEnableState, 'Enable mode') |
85 | ps.Publisher().subscribe(self.OnDisableState, 'Disable mode') | 86 | ps.Publisher().subscribe(self.OnDisableState, 'Disable mode') |
86 | - | 87 | + |
87 | def OnEnableState(self, pubsub_evt): | 88 | def OnEnableState(self, pubsub_evt): |
88 | state = pubsub_evt.data | 89 | state = pubsub_evt.data |
89 | self.AddState(state) | 90 | self.AddState(state) |
@@ -95,24 +96,28 @@ class SliceMode(object): | @@ -95,24 +96,28 @@ class SliceMode(object): | ||
95 | def AddState(self, state): | 96 | def AddState(self, state): |
96 | level = const.LEVEL[state] | 97 | level = const.LEVEL[state] |
97 | max_level = max(self.stack.keys()) | 98 | max_level = max(self.stack.keys()) |
98 | - | 99 | + |
100 | + | ||
99 | # Insert new state into stack | 101 | # Insert new state into stack |
100 | self.stack[level] = state | 102 | self.stack[level] = state |
101 | - | 103 | + print "ADD---->" |
104 | + print self.stack | ||
105 | + print level | ||
106 | + print state | ||
102 | # Only will affect InVesalius behaviour if it is the highest | 107 | # Only will affect InVesalius behaviour if it is the highest |
103 | # level in stack | 108 | # level in stack |
104 | - if level == max_level: | 109 | + #if level == max_level: |
105 | # let viewer slice and other classes know this | 110 | # let viewer slice and other classes know this |
106 | # change (cursor, interaction, etc) | 111 | # change (cursor, interaction, etc) |
107 | - ps.Publisher().sendMessage('Set slice mode', state) | 112 | + ps.Publisher().sendMessage('Set slice mode', state) |
108 | 113 | ||
109 | def RemoveState(self, state): | 114 | def RemoveState(self, state): |
110 | level = const.LEVEL[state] | 115 | level = const.LEVEL[state] |
111 | max_level = max(self.stack.keys()) | 116 | max_level = max(self.stack.keys()) |
112 | - | 117 | + |
113 | # Remove item from stack | 118 | # Remove item from stack |
114 | - self.stack.popitem(level) | ||
115 | - | 119 | + self.stack.pop(level) |
120 | + | ||
116 | # New max level | 121 | # New max level |
117 | new_max_level = max(self.stack.keys()) | 122 | new_max_level = max(self.stack.keys()) |
118 | 123 | ||
@@ -120,5 +125,11 @@ class SliceMode(object): | @@ -120,5 +125,11 @@ class SliceMode(object): | ||
120 | # level in stack has been removed | 125 | # level in stack has been removed |
121 | if level == max_level: | 126 | if level == max_level: |
122 | new_state = self.stack[new_max_level] | 127 | new_state = self.stack[new_max_level] |
123 | - ps.Publisher().sendMessage('Set slice mode', state) | ||
124 | - | 128 | + |
129 | + #Case one state in the stack | ||
130 | + if(len(self.stack) == 1): | ||
131 | + state = self.stack[self.stack.keys()[0]] | ||
132 | + | ||
133 | + ps.Publisher().sendMessage('Set slice mode', state) | ||
134 | + | ||
135 | + | ||
125 | \ No newline at end of file | 136 | \ No newline at end of file |