Commit 7eed215fe59573380aec4c396a454fcc58e2aae6
1 parent
07680389
Exists in
master
and in
6 other branches
(Un)toggling toolbar buttons when (de)activating the relative style
Showing
3 changed files
with
123 additions
and
25 deletions
Show diff stats
invesalius/data/styles.py
@@ -132,6 +132,8 @@ class DefaultInteractorStyle(BaseImageInteractorStyle): | @@ -132,6 +132,8 @@ class DefaultInteractorStyle(BaseImageInteractorStyle): | ||
132 | def __init__(self, viewer): | 132 | def __init__(self, viewer): |
133 | BaseImageInteractorStyle.__init__(self, viewer) | 133 | BaseImageInteractorStyle.__init__(self, viewer) |
134 | 134 | ||
135 | + self.state_code = const.STATE_DEFAULT | ||
136 | + | ||
135 | self.viewer = viewer | 137 | self.viewer = viewer |
136 | 138 | ||
137 | # Zoom using right button | 139 | # Zoom using right button |
@@ -194,6 +196,8 @@ class CrossInteractorStyle(DefaultInteractorStyle): | @@ -194,6 +196,8 @@ class CrossInteractorStyle(DefaultInteractorStyle): | ||
194 | def __init__(self, viewer): | 196 | def __init__(self, viewer): |
195 | DefaultInteractorStyle.__init__(self, viewer) | 197 | DefaultInteractorStyle.__init__(self, viewer) |
196 | 198 | ||
199 | + self.state_code = const.SLICE_STATE_CROSS | ||
200 | + | ||
197 | self.viewer = viewer | 201 | self.viewer = viewer |
198 | self.orientation = viewer.orientation | 202 | self.orientation = viewer.orientation |
199 | self.slice_actor = viewer.slice_data.actor | 203 | self.slice_actor = viewer.slice_data.actor |
@@ -207,9 +211,13 @@ class CrossInteractorStyle(DefaultInteractorStyle): | @@ -207,9 +211,13 @@ class CrossInteractorStyle(DefaultInteractorStyle): | ||
207 | 211 | ||
208 | def SetUp(self): | 212 | def SetUp(self): |
209 | self.viewer._set_cross_visibility(1) | 213 | self.viewer._set_cross_visibility(1) |
214 | + Publisher.sendMessage('Toggle toolbar item', | ||
215 | + (self.state_code, True)) | ||
210 | 216 | ||
211 | def CleanUp(self): | 217 | def CleanUp(self): |
212 | self.viewer._set_cross_visibility(0) | 218 | self.viewer._set_cross_visibility(0) |
219 | + Publisher.sendMessage('Toggle toolbar item', | ||
220 | + (self.state_code, False)) | ||
213 | 221 | ||
214 | def OnCrossMouseClick(self, obj, evt): | 222 | def OnCrossMouseClick(self, obj, evt): |
215 | iren = obj.GetInteractor() | 223 | iren = obj.GetInteractor() |
@@ -259,6 +267,8 @@ class WWWLInteractorStyle(DefaultInteractorStyle): | @@ -259,6 +267,8 @@ class WWWLInteractorStyle(DefaultInteractorStyle): | ||
259 | def __init__(self, viewer): | 267 | def __init__(self, viewer): |
260 | DefaultInteractorStyle.__init__(self, viewer) | 268 | DefaultInteractorStyle.__init__(self, viewer) |
261 | 269 | ||
270 | + self.state_code = const.STATE_WL | ||
271 | + | ||
262 | self.viewer = viewer | 272 | self.viewer = viewer |
263 | 273 | ||
264 | self.last_x = 0 | 274 | self.last_x = 0 |
@@ -272,11 +282,15 @@ class WWWLInteractorStyle(DefaultInteractorStyle): | @@ -272,11 +282,15 @@ class WWWLInteractorStyle(DefaultInteractorStyle): | ||
272 | 282 | ||
273 | def SetUp(self): | 283 | def SetUp(self): |
274 | self.viewer.on_wl = True | 284 | self.viewer.on_wl = True |
285 | + Publisher.sendMessage('Toggle toolbar item', | ||
286 | + (self.state_code, True)) | ||
275 | self.viewer.canvas.draw_list.append(self.viewer.wl_text) | 287 | self.viewer.canvas.draw_list.append(self.viewer.wl_text) |
276 | self.viewer.UpdateCanvas() | 288 | self.viewer.UpdateCanvas() |
277 | 289 | ||
278 | def CleanUp(self): | 290 | def CleanUp(self): |
279 | self.viewer.on_wl = False | 291 | self.viewer.on_wl = False |
292 | + Publisher.sendMessage('Toggle toolbar item', | ||
293 | + (self.state_code, False)) | ||
280 | if self.viewer.wl_text is not None: | 294 | if self.viewer.wl_text is not None: |
281 | self.viewer.canvas.draw_list.remove(self.viewer.wl_text) | 295 | self.viewer.canvas.draw_list.remove(self.viewer.wl_text) |
282 | self.viewer.UpdateCanvas() | 296 | self.viewer.UpdateCanvas() |
@@ -319,6 +333,8 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | @@ -319,6 +333,8 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | ||
319 | def __init__(self, viewer): | 333 | def __init__(self, viewer): |
320 | DefaultInteractorStyle.__init__(self, viewer) | 334 | DefaultInteractorStyle.__init__(self, viewer) |
321 | 335 | ||
336 | + self.state_code = const.STATE_MEASURE_DISTANCE | ||
337 | + | ||
322 | self.viewer = viewer | 338 | self.viewer = viewer |
323 | self.orientation = viewer.orientation | 339 | self.orientation = viewer.orientation |
324 | self.slice_data = viewer.slice_data | 340 | self.slice_data = viewer.slice_data |
@@ -354,6 +370,16 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | @@ -354,6 +370,16 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | ||
354 | self.AddObserver("MouseMoveEvent", self.OnMoveMeasurePoint) | 370 | self.AddObserver("MouseMoveEvent", self.OnMoveMeasurePoint) |
355 | self.AddObserver("LeaveEvent", self.OnLeaveMeasureInteractor) | 371 | self.AddObserver("LeaveEvent", self.OnLeaveMeasureInteractor) |
356 | 372 | ||
373 | + def SetUp(self): | ||
374 | + Publisher.sendMessage('Toggle toolbar item', | ||
375 | + (self.state_code, True)) | ||
376 | + | ||
377 | + def CleanUp(self): | ||
378 | + Publisher.sendMessage('Toggle toolbar item', | ||
379 | + (self.state_code, False)) | ||
380 | + self.picker.PickFromListOff() | ||
381 | + Publisher.sendMessage("Remove incomplete measurements") | ||
382 | + | ||
357 | def OnInsertMeasurePoint(self, obj, evt): | 383 | def OnInsertMeasurePoint(self, obj, evt): |
358 | slice_number = self.slice_data.number | 384 | slice_number = self.slice_data.number |
359 | x, y, z = self._get_pos_clicked() | 385 | x, y, z = self._get_pos_clicked() |
@@ -442,10 +468,6 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | @@ -442,10 +468,6 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | ||
442 | self.viewer.UpdateCanvas() | 468 | self.viewer.UpdateCanvas() |
443 | self.viewer.scroll_enabled = True | 469 | self.viewer.scroll_enabled = True |
444 | 470 | ||
445 | - def CleanUp(self): | ||
446 | - self.picker.PickFromListOff() | ||
447 | - Publisher.sendMessage("Remove incomplete measurements") | ||
448 | - | ||
449 | def _get_pos_clicked(self): | 471 | def _get_pos_clicked(self): |
450 | iren = self.viewer.interactor | 472 | iren = self.viewer.interactor |
451 | mx,my = iren.GetEventPosition() | 473 | mx,my = iren.GetEventPosition() |
@@ -496,6 +518,8 @@ class AngularMeasureInteractorStyle(LinearMeasureInteractorStyle): | @@ -496,6 +518,8 @@ class AngularMeasureInteractorStyle(LinearMeasureInteractorStyle): | ||
496 | LinearMeasureInteractorStyle.__init__(self, viewer) | 518 | LinearMeasureInteractorStyle.__init__(self, viewer) |
497 | self._type = const.ANGULAR | 519 | self._type = const.ANGULAR |
498 | 520 | ||
521 | + self.state_code = const.STATE_MEASURE_ANGLE | ||
522 | + | ||
499 | 523 | ||
500 | class PanMoveInteractorStyle(DefaultInteractorStyle): | 524 | class PanMoveInteractorStyle(DefaultInteractorStyle): |
501 | """ | 525 | """ |
@@ -504,11 +528,21 @@ class PanMoveInteractorStyle(DefaultInteractorStyle): | @@ -504,11 +528,21 @@ class PanMoveInteractorStyle(DefaultInteractorStyle): | ||
504 | def __init__(self, viewer): | 528 | def __init__(self, viewer): |
505 | DefaultInteractorStyle.__init__(self, viewer) | 529 | DefaultInteractorStyle.__init__(self, viewer) |
506 | 530 | ||
531 | + self.state_code = const.STATE_PAN | ||
532 | + | ||
507 | self.viewer = viewer | 533 | self.viewer = viewer |
508 | 534 | ||
509 | self.AddObserver("MouseMoveEvent", self.OnPanMove) | 535 | self.AddObserver("MouseMoveEvent", self.OnPanMove) |
510 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnspan) | 536 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnspan) |
511 | 537 | ||
538 | + def SetUp(self): | ||
539 | + Publisher.sendMessage('Toggle toolbar item', | ||
540 | + (self.state_code, True)) | ||
541 | + | ||
542 | + def CleanUp(self): | ||
543 | + Publisher.sendMessage('Toggle toolbar item', | ||
544 | + (self.state_code, False)) | ||
545 | + | ||
512 | def OnPanMove(self, obj, evt): | 546 | def OnPanMove(self, obj, evt): |
513 | if self.left_pressed: | 547 | if self.left_pressed: |
514 | obj.Pan() | 548 | obj.Pan() |
@@ -529,11 +563,21 @@ class SpinInteractorStyle(DefaultInteractorStyle): | @@ -529,11 +563,21 @@ class SpinInteractorStyle(DefaultInteractorStyle): | ||
529 | def __init__(self, viewer): | 563 | def __init__(self, viewer): |
530 | DefaultInteractorStyle.__init__(self, viewer) | 564 | DefaultInteractorStyle.__init__(self, viewer) |
531 | 565 | ||
566 | + self.state_code = const.STATE_SPIN | ||
567 | + | ||
532 | self.viewer = viewer | 568 | self.viewer = viewer |
533 | 569 | ||
534 | self.AddObserver("MouseMoveEvent", self.OnSpinMove) | 570 | self.AddObserver("MouseMoveEvent", self.OnSpinMove) |
535 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnspin) | 571 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnspin) |
536 | 572 | ||
573 | + def SetUp(self): | ||
574 | + Publisher.sendMessage('Toggle toolbar item', | ||
575 | + (self.state_code, True)) | ||
576 | + | ||
577 | + def CleanUp(self): | ||
578 | + Publisher.sendMessage('Toggle toolbar item', | ||
579 | + (self.state_code, False)) | ||
580 | + | ||
537 | def OnSpinMove(self, obj, evt): | 581 | def OnSpinMove(self, obj, evt): |
538 | iren = obj.GetInteractor() | 582 | iren = obj.GetInteractor() |
539 | mouse_x, mouse_y = iren.GetLastEventPosition() | 583 | mouse_x, mouse_y = iren.GetLastEventPosition() |
@@ -563,11 +607,21 @@ class ZoomInteractorStyle(DefaultInteractorStyle): | @@ -563,11 +607,21 @@ class ZoomInteractorStyle(DefaultInteractorStyle): | ||
563 | def __init__(self, viewer): | 607 | def __init__(self, viewer): |
564 | DefaultInteractorStyle.__init__(self, viewer) | 608 | DefaultInteractorStyle.__init__(self, viewer) |
565 | 609 | ||
610 | + self.state_code = const.STATE_ZOOM | ||
611 | + | ||
566 | self.viewer = viewer | 612 | self.viewer = viewer |
567 | 613 | ||
568 | self.AddObserver("MouseMoveEvent", self.OnZoomMoveLeft) | 614 | self.AddObserver("MouseMoveEvent", self.OnZoomMoveLeft) |
569 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnZoom) | 615 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnZoom) |
570 | 616 | ||
617 | + def SetUp(self): | ||
618 | + Publisher.sendMessage('Toggle toolbar item', | ||
619 | + (self.state_code, True)) | ||
620 | + | ||
621 | + def CleanUp(self): | ||
622 | + Publisher.sendMessage('Toggle toolbar item', | ||
623 | + (self.state_code, False)) | ||
624 | + | ||
571 | def OnZoomMoveLeft(self, obj, evt): | 625 | def OnZoomMoveLeft(self, obj, evt): |
572 | if self.left_pressed: | 626 | if self.left_pressed: |
573 | obj.Dolly() | 627 | obj.Dolly() |
@@ -591,6 +645,16 @@ class ZoomSLInteractorStyle(vtk.vtkInteractorStyleRubberBandZoom): | @@ -591,6 +645,16 @@ class ZoomSLInteractorStyle(vtk.vtkInteractorStyleRubberBandZoom): | ||
591 | self.viewer = viewer | 645 | self.viewer = viewer |
592 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnZoom) | 646 | self.viewer.interactor.Bind(wx.EVT_LEFT_DCLICK, self.OnUnZoom) |
593 | 647 | ||
648 | + self.state_code = const.STATE_ZOOM_SL | ||
649 | + | ||
650 | + def SetUp(self): | ||
651 | + Publisher.sendMessage('Toggle toolbar item', | ||
652 | + (self.state_code, True)) | ||
653 | + | ||
654 | + def CleanUp(self): | ||
655 | + Publisher.sendMessage('Toggle toolbar item', | ||
656 | + (self.state_code, False)) | ||
657 | + | ||
594 | def OnUnZoom(self, evt): | 658 | def OnUnZoom(self, evt): |
595 | mouse_x, mouse_y = self.viewer.interactor.GetLastEventPosition() | 659 | mouse_x, mouse_y = self.viewer.interactor.GetLastEventPosition() |
596 | ren = self.viewer.interactor.FindPokedRenderer(mouse_x, mouse_y) | 660 | ren = self.viewer.interactor.FindPokedRenderer(mouse_x, mouse_y) |
@@ -608,11 +672,21 @@ class ChangeSliceInteractorStyle(DefaultInteractorStyle): | @@ -608,11 +672,21 @@ class ChangeSliceInteractorStyle(DefaultInteractorStyle): | ||
608 | def __init__(self, viewer): | 672 | def __init__(self, viewer): |
609 | DefaultInteractorStyle.__init__(self, viewer) | 673 | DefaultInteractorStyle.__init__(self, viewer) |
610 | 674 | ||
675 | + self.state_code = const.SLICE_STATE_SCROLL | ||
676 | + | ||
611 | self.viewer = viewer | 677 | self.viewer = viewer |
612 | 678 | ||
613 | self.AddObserver("MouseMoveEvent", self.OnChangeSliceMove) | 679 | self.AddObserver("MouseMoveEvent", self.OnChangeSliceMove) |
614 | self.AddObserver("LeftButtonPressEvent", self.OnChangeSliceClick) | 680 | self.AddObserver("LeftButtonPressEvent", self.OnChangeSliceClick) |
615 | 681 | ||
682 | + def SetUp(self): | ||
683 | + Publisher.sendMessage('Toggle toolbar item', | ||
684 | + (self.state_code, True)) | ||
685 | + | ||
686 | + def CleanUp(self): | ||
687 | + Publisher.sendMessage('Toggle toolbar item', | ||
688 | + (self.state_code, False)) | ||
689 | + | ||
616 | def OnChangeSliceMove(self, evt, obj): | 690 | def OnChangeSliceMove(self, evt, obj): |
617 | if self.left_pressed: | 691 | if self.left_pressed: |
618 | min = 0 | 692 | min = 0 |
@@ -650,6 +724,8 @@ class EditorInteractorStyle(DefaultInteractorStyle): | @@ -650,6 +724,8 @@ class EditorInteractorStyle(DefaultInteractorStyle): | ||
650 | def __init__(self, viewer): | 724 | def __init__(self, viewer): |
651 | DefaultInteractorStyle.__init__(self, viewer) | 725 | DefaultInteractorStyle.__init__(self, viewer) |
652 | 726 | ||
727 | + self.state_code = const.SLICE_STATE_EDITOR | ||
728 | + | ||
653 | self.viewer = viewer | 729 | self.viewer = viewer |
654 | self.orientation = self.viewer.orientation | 730 | self.orientation = self.viewer.orientation |
655 | 731 | ||
@@ -935,6 +1011,8 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): | @@ -935,6 +1011,8 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): | ||
935 | def __init__(self, viewer): | 1011 | def __init__(self, viewer): |
936 | DefaultInteractorStyle.__init__(self, viewer) | 1012 | DefaultInteractorStyle.__init__(self, viewer) |
937 | 1013 | ||
1014 | + self.state_code = const.SLICE_STATE_WATERSHED | ||
1015 | + | ||
938 | self.viewer = viewer | 1016 | self.viewer = viewer |
939 | self.orientation = self.viewer.orientation | 1017 | self.orientation = self.viewer.orientation |
940 | self.matrix = None | 1018 | self.matrix = None |
@@ -1402,6 +1480,8 @@ class ReorientImageInteractorStyle(DefaultInteractorStyle): | @@ -1402,6 +1480,8 @@ class ReorientImageInteractorStyle(DefaultInteractorStyle): | ||
1402 | def __init__(self, viewer): | 1480 | def __init__(self, viewer): |
1403 | DefaultInteractorStyle.__init__(self, viewer) | 1481 | DefaultInteractorStyle.__init__(self, viewer) |
1404 | 1482 | ||
1483 | + self.state_code = const.SLICE_STATE_REORIENT | ||
1484 | + | ||
1405 | self.viewer = viewer | 1485 | self.viewer = viewer |
1406 | 1486 | ||
1407 | self.line1 = None | 1487 | self.line1 = None |
@@ -1648,6 +1728,8 @@ class FloodFillMaskInteractorStyle(DefaultInteractorStyle): | @@ -1648,6 +1728,8 @@ class FloodFillMaskInteractorStyle(DefaultInteractorStyle): | ||
1648 | def __init__(self, viewer): | 1728 | def __init__(self, viewer): |
1649 | DefaultInteractorStyle.__init__(self, viewer) | 1729 | DefaultInteractorStyle.__init__(self, viewer) |
1650 | 1730 | ||
1731 | + self.state_code = const.SLICE_STATE_MASK_FFILL | ||
1732 | + | ||
1651 | self.viewer = viewer | 1733 | self.viewer = viewer |
1652 | self.orientation = self.viewer.orientation | 1734 | self.orientation = self.viewer.orientation |
1653 | 1735 | ||
@@ -1753,20 +1835,22 @@ class FloodFillMaskInteractorStyle(DefaultInteractorStyle): | @@ -1753,20 +1835,22 @@ class FloodFillMaskInteractorStyle(DefaultInteractorStyle): | ||
1753 | 1835 | ||
1754 | 1836 | ||
1755 | class RemoveMaskPartsInteractorStyle(FloodFillMaskInteractorStyle): | 1837 | class RemoveMaskPartsInteractorStyle(FloodFillMaskInteractorStyle): |
1756 | - def __init__(self, viewer): | ||
1757 | - FloodFillMaskInteractorStyle.__init__(self, viewer) | ||
1758 | - # InVesalius uses the following values to mark selected parts in a | ||
1759 | - # mask: | ||
1760 | - # 255 - Threshold | ||
1761 | - # 254 - Manual edition and floodfill | ||
1762 | - # 253 - Watershed | ||
1763 | - self.t0 = 253 | ||
1764 | - self.t1 = 255 | ||
1765 | - self.fill_value = 1 | ||
1766 | - | ||
1767 | - self._dlg_title = _(u"Remove parts") | ||
1768 | - self._progr_title = _(u"Remove part") | ||
1769 | - self._progr_msg = _(u"Removing part ...") | 1838 | + def __init__(self, viewer): |
1839 | + FloodFillMaskInteractorStyle.__init__(self, viewer) | ||
1840 | + | ||
1841 | + self.state_code = const.SLICE_STATE_REMOVE_MASK_PARTS | ||
1842 | + # InVesalius uses the following values to mark selected parts in a | ||
1843 | + # mask: | ||
1844 | + # 255 - Threshold | ||
1845 | + # 254 - Manual edition and floodfill | ||
1846 | + # 253 - Watershed | ||
1847 | + self.t0 = 253 | ||
1848 | + self.t1 = 255 | ||
1849 | + self.fill_value = 1 | ||
1850 | + | ||
1851 | + self._dlg_title = _(u"Remove parts") | ||
1852 | + self._progr_title = _(u"Remove part") | ||
1853 | + self._progr_msg = _(u"Removing part ...") | ||
1770 | 1854 | ||
1771 | class CropMaskConfig(object): | 1855 | class CropMaskConfig(object): |
1772 | __metaclass__= utils.Singleton | 1856 | __metaclass__= utils.Singleton |
@@ -1774,17 +1858,18 @@ class CropMaskConfig(object): | @@ -1774,17 +1858,18 @@ class CropMaskConfig(object): | ||
1774 | self.dlg_visible = False | 1858 | self.dlg_visible = False |
1775 | 1859 | ||
1776 | class CropMaskInteractorStyle(DefaultInteractorStyle): | 1860 | class CropMaskInteractorStyle(DefaultInteractorStyle): |
1777 | - | ||
1778 | def __init__(self, viewer): | 1861 | def __init__(self, viewer): |
1779 | DefaultInteractorStyle.__init__(self, viewer) | 1862 | DefaultInteractorStyle.__init__(self, viewer) |
1780 | 1863 | ||
1864 | + self.state_code = const.SLICE_STATE_CROP_MASK | ||
1865 | + | ||
1781 | self.viewer = viewer | 1866 | self.viewer = viewer |
1782 | self.orientation = self.viewer.orientation | 1867 | self.orientation = self.viewer.orientation |
1783 | self.picker = vtk.vtkWorldPointPicker() | 1868 | self.picker = vtk.vtkWorldPointPicker() |
1784 | self.slice_actor = viewer.slice_data.actor | 1869 | self.slice_actor = viewer.slice_data.actor |
1785 | self.slice_data = viewer.slice_data | 1870 | self.slice_data = viewer.slice_data |
1786 | self.draw_retangle = None | 1871 | self.draw_retangle = None |
1787 | - | 1872 | + |
1788 | self.config = CropMaskConfig() | 1873 | self.config = CropMaskConfig() |
1789 | 1874 | ||
1790 | def __evts__(self): | 1875 | def __evts__(self): |
@@ -1883,6 +1968,8 @@ class SelectMaskPartsInteractorStyle(DefaultInteractorStyle): | @@ -1883,6 +1968,8 @@ class SelectMaskPartsInteractorStyle(DefaultInteractorStyle): | ||
1883 | def __init__(self, viewer): | 1968 | def __init__(self, viewer): |
1884 | DefaultInteractorStyle.__init__(self, viewer) | 1969 | DefaultInteractorStyle.__init__(self, viewer) |
1885 | 1970 | ||
1971 | + self.state_code = const.SLICE_STATE_SELECT_MASK_PARTS | ||
1972 | + | ||
1886 | self.viewer = viewer | 1973 | self.viewer = viewer |
1887 | self.orientation = self.viewer.orientation | 1974 | self.orientation = self.viewer.orientation |
1888 | 1975 | ||
@@ -2003,6 +2090,8 @@ class FloodFillSegmentInteractorStyle(DefaultInteractorStyle): | @@ -2003,6 +2090,8 @@ class FloodFillSegmentInteractorStyle(DefaultInteractorStyle): | ||
2003 | def __init__(self, viewer): | 2090 | def __init__(self, viewer): |
2004 | DefaultInteractorStyle.__init__(self, viewer) | 2091 | DefaultInteractorStyle.__init__(self, viewer) |
2005 | 2092 | ||
2093 | + self.state_code = const.SLICE_STATE_FFILL_SEGMENTATION | ||
2094 | + | ||
2006 | self.viewer = viewer | 2095 | self.viewer = viewer |
2007 | self.orientation = self.viewer.orientation | 2096 | self.orientation = self.viewer.orientation |
2008 | 2097 | ||
@@ -2237,9 +2326,6 @@ def get_style(style): | @@ -2237,9 +2326,6 @@ def get_style(style): | ||
2237 | const.SLICE_STATE_REMOVE_MASK_PARTS: RemoveMaskPartsInteractorStyle, | 2326 | const.SLICE_STATE_REMOVE_MASK_PARTS: RemoveMaskPartsInteractorStyle, |
2238 | const.SLICE_STATE_SELECT_MASK_PARTS: SelectMaskPartsInteractorStyle, | 2327 | const.SLICE_STATE_SELECT_MASK_PARTS: SelectMaskPartsInteractorStyle, |
2239 | const.SLICE_STATE_FFILL_SEGMENTATION: FloodFillSegmentInteractorStyle, | 2328 | const.SLICE_STATE_FFILL_SEGMENTATION: FloodFillSegmentInteractorStyle, |
2240 | - const.SLICE_STATE_CROP_MASK:CropMaskInteractorStyle, | 2329 | + const.SLICE_STATE_CROP_MASK: CropMaskInteractorStyle, |
2241 | } | 2330 | } |
2242 | return STYLES[style] | 2331 | return STYLES[style] |
2243 | - | ||
2244 | - | ||
2245 | - |
invesalius/gui/frame.py
@@ -1302,6 +1302,7 @@ class ObjectToolBar(AuiToolBar): | @@ -1302,6 +1302,7 @@ class ObjectToolBar(AuiToolBar): | ||
1302 | sub(self._UntoggleAllItems, 'Untoggle object toolbar items') | 1302 | sub(self._UntoggleAllItems, 'Untoggle object toolbar items') |
1303 | sub(self._ToggleLinearMeasure, "Set tool linear measure") | 1303 | sub(self._ToggleLinearMeasure, "Set tool linear measure") |
1304 | sub(self._ToggleAngularMeasure, "Set tool angular measure") | 1304 | sub(self._ToggleAngularMeasure, "Set tool angular measure") |
1305 | + sub(self.ToggleItem, 'Toggle toolbar item') | ||
1305 | 1306 | ||
1306 | def __bind_events_wx(self): | 1307 | def __bind_events_wx(self): |
1307 | """ | 1308 | """ |
@@ -1487,6 +1488,12 @@ class ObjectToolBar(AuiToolBar): | @@ -1487,6 +1488,12 @@ class ObjectToolBar(AuiToolBar): | ||
1487 | self.ToggleTool(item, False) | 1488 | self.ToggleTool(item, False) |
1488 | evt.Skip() | 1489 | evt.Skip() |
1489 | 1490 | ||
1491 | + def ToggleItem(self, evt): | ||
1492 | + _id, value = evt.data | ||
1493 | + if _id in self.enable_items: | ||
1494 | + self.ToggleTool(_id, value) | ||
1495 | + self.Refresh() | ||
1496 | + | ||
1490 | def SetStateProjectClose(self): | 1497 | def SetStateProjectClose(self): |
1491 | """ | 1498 | """ |
1492 | Disable menu items (e.g. zoom) when project is closed. | 1499 | Disable menu items (e.g. zoom) when project is closed. |
@@ -1567,6 +1574,7 @@ class SliceToolBar(AuiToolBar): | @@ -1567,6 +1574,7 @@ class SliceToolBar(AuiToolBar): | ||
1567 | sub(self._EnableState, "Enable state project") | 1574 | sub(self._EnableState, "Enable state project") |
1568 | sub(self._UntoggleAllItems, 'Untoggle slice toolbar items') | 1575 | sub(self._UntoggleAllItems, 'Untoggle slice toolbar items') |
1569 | sub(self.OnToggle, 'Toggle Cross') | 1576 | sub(self.OnToggle, 'Toggle Cross') |
1577 | + sub(self.ToggleItem, 'Toggle toolbar item') | ||
1570 | 1578 | ||
1571 | def __bind_events_wx(self): | 1579 | def __bind_events_wx(self): |
1572 | """ | 1580 | """ |
@@ -1632,6 +1640,11 @@ class SliceToolBar(AuiToolBar): | @@ -1632,6 +1640,11 @@ class SliceToolBar(AuiToolBar): | ||
1632 | ##print ">>>", self.sst.IsToggled() | 1640 | ##print ">>>", self.sst.IsToggled() |
1633 | #print ">>>", self.sst.GetState() | 1641 | #print ">>>", self.sst.GetState() |
1634 | 1642 | ||
1643 | + def ToggleItem(self, evt): | ||
1644 | + _id, value = evt.data | ||
1645 | + if _id in self.enable_items: | ||
1646 | + self.ToggleTool(_id, value) | ||
1647 | + self.Refresh() | ||
1635 | 1648 | ||
1636 | def SetStateProjectClose(self): | 1649 | def SetStateProjectClose(self): |
1637 | """ | 1650 | """ |
invesalius/style.py
@@ -111,7 +111,6 @@ class StyleStateManager(object): | @@ -111,7 +111,6 @@ class StyleStateManager(object): | ||
111 | return self.stack[max_level] | 111 | return self.stack[max_level] |
112 | 112 | ||
113 | def GetActualState(self): | 113 | def GetActualState(self): |
114 | - print self.stack.keys() | ||
115 | max_level = max(self.stack.keys()) | 114 | max_level = max(self.stack.keys()) |
116 | state = self.stack[max_level] | 115 | state = self.stack[max_level] |
117 | return state | 116 | return state |