Commit 4e26411d23c552318b94e754bb547236d67b8a13
1 parent
90e1222d
Exists in
master
and in
26 other branches
Created a method to draw line
Showing
2 changed files
with
74 additions
and
63 deletions
Show diff stats
invesalius/data/measures.py
@@ -582,12 +582,8 @@ class LinearMeasure(object): | @@ -582,12 +582,8 @@ class LinearMeasure(object): | ||
582 | gc.FillPath(path) | 582 | gc.FillPath(path) |
583 | 583 | ||
584 | if len(lines) > 1: | 584 | if len(lines) > 1: |
585 | - path = gc.CreatePath() | ||
586 | - | ||
587 | - path.MoveToPoint(*lines[0]) | ||
588 | - for p in lines[1::]: | ||
589 | - path.AddLineToPoint(*p) | ||
590 | - gc.StrokePath(path) | 585 | + for (p0, p1) in zip(lines[:-1:], lines[1::]): |
586 | + canvas.draw_line(p0, p1) | ||
591 | 587 | ||
592 | txt = u"%.3f mm" % self.GetValue() | 588 | txt = u"%.3f mm" % self.GetValue() |
593 | # gc.DrawText(txt, *lines[0]) | 589 | # gc.DrawText(txt, *lines[0]) |
@@ -852,10 +848,8 @@ class AngularMeasure(object): | @@ -852,10 +848,8 @@ class AngularMeasure(object): | ||
852 | if len(lines) > 1: | 848 | if len(lines) > 1: |
853 | path = gc.CreatePath() | 849 | path = gc.CreatePath() |
854 | 850 | ||
855 | - path.MoveToPoint(*lines[0]) | ||
856 | - for p in lines[1::]: | ||
857 | - path.AddLineToPoint(*p) | ||
858 | - gc.StrokePath(path) | 851 | + for (p0, p1) in zip(lines[:-1:], lines[1::]): |
852 | + canvas.draw_line(p0, p1) | ||
859 | 853 | ||
860 | if len(lines) == 3: | 854 | if len(lines) == 3: |
861 | txt = u"%.3f° / %.3f°" % (self.GetValue(), 360.0 - self.GetValue()) | 855 | txt = u"%.3f° / %.3f°" % (self.GetValue(), 360.0 - self.GetValue()) |
invesalius/data/viewer_slice.py
@@ -89,7 +89,7 @@ class ContourMIPConfig(wx.Panel): | @@ -89,7 +89,7 @@ class ContourMIPConfig(wx.Panel): | ||
89 | " order to compound the" | 89 | " order to compound the" |
90 | " visualization instead of" | 90 | " visualization instead of" |
91 | " ascending order."))) | 91 | " ascending order."))) |
92 | - | 92 | + |
93 | txt_mip_size = wx.StaticText(self, -1, _("Number of slices"), style=wx.ALIGN_CENTER_HORIZONTAL) | 93 | txt_mip_size = wx.StaticText(self, -1, _("Number of slices"), style=wx.ALIGN_CENTER_HORIZONTAL) |
94 | self.txt_mip_border = wx.StaticText(self, -1, _("Sharpness")) | 94 | self.txt_mip_border = wx.StaticText(self, -1, _("Sharpness")) |
95 | 95 | ||
@@ -113,7 +113,7 @@ class ContourMIPConfig(wx.Panel): | @@ -113,7 +113,7 @@ class ContourMIPConfig(wx.Panel): | ||
113 | self.mip_size_spin.Bind(wx.EVT_SPINCTRL, self.OnSetMIPSize) | 113 | self.mip_size_spin.Bind(wx.EVT_SPINCTRL, self.OnSetMIPSize) |
114 | self.border_spin.Bind(wx.EVT_SPINCTRL, self.OnSetMIPBorder) | 114 | self.border_spin.Bind(wx.EVT_SPINCTRL, self.OnSetMIPBorder) |
115 | self.inverted.Bind(wx.EVT_CHECKBOX, self.OnCheckInverted) | 115 | self.inverted.Bind(wx.EVT_CHECKBOX, self.OnCheckInverted) |
116 | - | 116 | + |
117 | Publisher.subscribe(self._set_projection_type, 'Set projection type') | 117 | Publisher.subscribe(self._set_projection_type, 'Set projection type') |
118 | 118 | ||
119 | def OnSetMIPSize(self, evt): | 119 | def OnSetMIPSize(self, evt): |
@@ -136,7 +136,7 @@ class ContourMIPConfig(wx.Panel): | @@ -136,7 +136,7 @@ class ContourMIPConfig(wx.Panel): | ||
136 | self.inverted.Enable() | 136 | self.inverted.Enable() |
137 | else: | 137 | else: |
138 | self.inverted.Disable() | 138 | self.inverted.Disable() |
139 | - | 139 | + |
140 | if tprojection in (const.PROJECTION_CONTOUR_MIP, | 140 | if tprojection in (const.PROJECTION_CONTOUR_MIP, |
141 | const.PROJECTION_CONTOUR_MIDA): | 141 | const.PROJECTION_CONTOUR_MIDA): |
142 | self.border_spin.Enable() | 142 | self.border_spin.Enable() |
@@ -233,7 +233,24 @@ class CanvasRendererCTX: | @@ -233,7 +233,24 @@ class CanvasRendererCTX: | ||
233 | 233 | ||
234 | self._cv_image.Modified() | 234 | self._cv_image.Modified() |
235 | 235 | ||
236 | - def draw_text_box(self, text, pos, font=None, txt_colour=(0.0, 0.0, 0.0), bg_colour=(128, 0, 0, 128), border=5): | 236 | + def draw_line(self, pos0, pos1, colour=(255, 0, 0, 128), width=2, style=wx.SOLID): |
237 | + """ | ||
238 | + Draw a line from pos0 to pos1 | ||
239 | + """ | ||
240 | + if self.gc is None: | ||
241 | + return None | ||
242 | + gc = self.gc | ||
243 | + | ||
244 | + pen = wx.Pen(wx.Colour(*colour), width, wx.SOLID) | ||
245 | + gc.SetPen(pen) | ||
246 | + | ||
247 | + path = gc.CreatePath() | ||
248 | + path.MoveToPoint(*pos0) | ||
249 | + path.AddLineToPoint(*pos1) | ||
250 | + gc.StrokePath(path) | ||
251 | + | ||
252 | + | ||
253 | + def draw_text_box(self, text, pos, font=None, txt_colour=(255, 255, 255), bg_colour=(128, 128, 128, 128), border=5): | ||
237 | """ | 254 | """ |
238 | Draw text inside a text box. | 255 | Draw text inside a text box. |
239 | 256 | ||
@@ -281,7 +298,7 @@ class Viewer(wx.Panel): | @@ -281,7 +298,7 @@ class Viewer(wx.Panel): | ||
281 | 298 | ||
282 | self._number_slices = const.PROJECTION_MIP_SIZE | 299 | self._number_slices = const.PROJECTION_MIP_SIZE |
283 | self._mip_inverted = False | 300 | self._mip_inverted = False |
284 | - | 301 | + |
285 | self.style = None | 302 | self.style = None |
286 | self.last_position_mouse_move = () | 303 | self.last_position_mouse_move = () |
287 | self.state = const.STATE_DEFAULT | 304 | self.state = const.STATE_DEFAULT |
@@ -354,7 +371,7 @@ class Viewer(wx.Panel): | @@ -354,7 +371,7 @@ class Viewer(wx.Panel): | ||
354 | self.menu.caller = self | 371 | self.menu.caller = self |
355 | self.PopupMenu(self.menu) | 372 | self.PopupMenu(self.menu) |
356 | evt.Skip() | 373 | evt.Skip() |
357 | - | 374 | + |
358 | def SetPopupMenu(self, menu): | 375 | def SetPopupMenu(self, menu): |
359 | self.menu = menu | 376 | self.menu = menu |
360 | 377 | ||
@@ -440,14 +457,14 @@ class Viewer(wx.Panel): | @@ -440,14 +457,14 @@ class Viewer(wx.Panel): | ||
440 | (slc.window_width, slc.window_level)) | 457 | (slc.window_width, slc.window_level)) |
441 | 458 | ||
442 | def SetWLText(self, window_width, window_level): | 459 | def SetWLText(self, window_width, window_level): |
443 | - value = STR_WL%(window_level, window_width) | 460 | + value = STR_WL%(window_level, window_width) |
444 | if (self.wl_text): | 461 | if (self.wl_text): |
445 | self.wl_text.SetValue(value) | 462 | self.wl_text.SetValue(value) |
446 | #self.interactor.Render() | 463 | #self.interactor.Render() |
447 | 464 | ||
448 | def EnableText(self): | 465 | def EnableText(self): |
449 | if not (self.wl_text): | 466 | if not (self.wl_text): |
450 | - proj = project.Project() | 467 | + proj = project.Project() |
451 | colour = const.ORIENTATION_COLOUR[self.orientation] | 468 | colour = const.ORIENTATION_COLOUR[self.orientation] |
452 | 469 | ||
453 | # Window & Level text | 470 | # Window & Level text |
@@ -460,7 +477,7 @@ class Viewer(wx.Panel): | @@ -460,7 +477,7 @@ class Viewer(wx.Panel): | ||
460 | values = [_('P'), _('A'), _('T'), _('B')] | 477 | values = [_('P'), _('A'), _('T'), _('B')] |
461 | else: | 478 | else: |
462 | values = [_('R'), _('L'), _('T'), _('B')] | 479 | values = [_('R'), _('L'), _('T'), _('B')] |
463 | - | 480 | + |
464 | left_text = self.left_text = vtku.TextZero() | 481 | left_text = self.left_text = vtku.TextZero() |
465 | left_text.ShadowOff() | 482 | left_text.ShadowOff() |
466 | left_text.SetColour(colour) | 483 | left_text.SetColour(colour) |
@@ -539,30 +556,30 @@ class Viewer(wx.Panel): | @@ -539,30 +556,30 @@ class Viewer(wx.Panel): | ||
539 | 556 | ||
540 | elif(croll > 91 and croll <= 135): | 557 | elif(croll > 91 and croll <= 135): |
541 | self.RenderTextDirection([_("LP"), _("AL"), _("RA"), _("PR")]) | 558 | self.RenderTextDirection([_("LP"), _("AL"), _("RA"), _("PR")]) |
542 | - | 559 | + |
543 | elif(croll > 135 and croll <= 177): | 560 | elif(croll > 135 and croll <= 177): |
544 | self.RenderTextDirection([_("PL"), _("LA"), _("AR"), _("RP")]) | 561 | self.RenderTextDirection([_("PL"), _("LA"), _("AR"), _("RP")]) |
545 | - | 562 | + |
546 | elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177): | 563 | elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177): |
547 | self.RenderTextDirection([_("P"), _("L"), _("A"), _("R")]) | 564 | self.RenderTextDirection([_("P"), _("L"), _("A"), _("R")]) |
548 | - | 565 | + |
549 | elif(croll >= -177 and croll <= -133): | 566 | elif(croll >= -177 and croll <= -133): |
550 | self.RenderTextDirection([_("PR"), _("LP"), _("AL"), _("RA")]) | 567 | self.RenderTextDirection([_("PR"), _("LP"), _("AL"), _("RA")]) |
551 | - | 568 | + |
552 | elif(croll >= -132 and croll <= -101): | 569 | elif(croll >= -132 and croll <= -101): |
553 | self.RenderTextDirection([_("RP"), _("PL"), _("LA"), _("AR")]) | 570 | self.RenderTextDirection([_("RP"), _("PL"), _("LA"), _("AR")]) |
554 | 571 | ||
555 | elif(croll >= -101 and croll <= -87): | 572 | elif(croll >= -101 and croll <= -87): |
556 | self.RenderTextDirection([_("R"), _("P"), _("L"), _("A")]) | 573 | self.RenderTextDirection([_("R"), _("P"), _("L"), _("A")]) |
557 | - | 574 | + |
558 | elif(croll >= -86 and croll <= -42): | 575 | elif(croll >= -86 and croll <= -42): |
559 | self.RenderTextDirection([_("RA"), _("PR"), _("LP"), _("AL")]) | 576 | self.RenderTextDirection([_("RA"), _("PR"), _("LP"), _("AL")]) |
560 | - | 577 | + |
561 | elif(croll >= -41 and croll <= -2): | 578 | elif(croll >= -41 and croll <= -2): |
562 | self.RenderTextDirection([_("AR"), _("RP"), _("PL"), _("LA")]) | 579 | self.RenderTextDirection([_("AR"), _("RP"), _("PL"), _("LA")]) |
563 | 580 | ||
564 | elif(self.orientation == "CORONAL"): | 581 | elif(self.orientation == "CORONAL"): |
565 | - | 582 | + |
566 | if (croll >= -2 and croll <= 1): | 583 | if (croll >= -2 and croll <= 1): |
567 | self.RenderTextDirection([_("T"), _("R"), _("B"), _("L")]) | 584 | self.RenderTextDirection([_("T"), _("R"), _("B"), _("L")]) |
568 | 585 | ||
@@ -577,25 +594,25 @@ class Viewer(wx.Panel): | @@ -577,25 +594,25 @@ class Viewer(wx.Panel): | ||
577 | 594 | ||
578 | elif(croll > 91 and croll <= 135): | 595 | elif(croll > 91 and croll <= 135): |
579 | self.RenderTextDirection([_("LB"), _("TL"), _("RT"), _("BR")]) | 596 | self.RenderTextDirection([_("LB"), _("TL"), _("RT"), _("BR")]) |
580 | - | 597 | + |
581 | elif(croll > 135 and croll <= 177): | 598 | elif(croll > 135 and croll <= 177): |
582 | self.RenderTextDirection([_("BL"), _("LT"), _("TR"), _("RB")]) | 599 | self.RenderTextDirection([_("BL"), _("LT"), _("TR"), _("RB")]) |
583 | - | 600 | + |
584 | elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177): | 601 | elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177): |
585 | self.RenderTextDirection([_("B"), _("L"), _("T"), _("R")]) | 602 | self.RenderTextDirection([_("B"), _("L"), _("T"), _("R")]) |
586 | - | 603 | + |
587 | elif(croll >= -177 and croll <= -133): | 604 | elif(croll >= -177 and croll <= -133): |
588 | self.RenderTextDirection([_("BR"), _("LB"), _("TL"), _("RT")]) | 605 | self.RenderTextDirection([_("BR"), _("LB"), _("TL"), _("RT")]) |
589 | - | 606 | + |
590 | elif(croll >= -132 and croll <= -101): | 607 | elif(croll >= -132 and croll <= -101): |
591 | self.RenderTextDirection([_("RB"), _("BL"), _("LT"), _("TR")]) | 608 | self.RenderTextDirection([_("RB"), _("BL"), _("LT"), _("TR")]) |
592 | 609 | ||
593 | elif(croll >= -101 and croll <= -87): | 610 | elif(croll >= -101 and croll <= -87): |
594 | self.RenderTextDirection([_("R"), _("B"), _("L"), _("T")]) | 611 | self.RenderTextDirection([_("R"), _("B"), _("L"), _("T")]) |
595 | - | 612 | + |
596 | elif(croll >= -86 and croll <= -42): | 613 | elif(croll >= -86 and croll <= -42): |
597 | self.RenderTextDirection([_("RT"), _("BR"), _("LB"), _("TL")]) | 614 | self.RenderTextDirection([_("RT"), _("BR"), _("LB"), _("TL")]) |
598 | - | 615 | + |
599 | elif(croll >= -41 and croll <= -2): | 616 | elif(croll >= -41 and croll <= -2): |
600 | self.RenderTextDirection([_("TR"), _("RB"), _("BL"), _("LT")]) | 617 | self.RenderTextDirection([_("TR"), _("RB"), _("BL"), _("LT")]) |
601 | 618 | ||
@@ -603,13 +620,13 @@ class Viewer(wx.Panel): | @@ -603,13 +620,13 @@ class Viewer(wx.Panel): | ||
603 | 620 | ||
604 | if(croll >= -101 and croll <= -87): | 621 | if(croll >= -101 and croll <= -87): |
605 | self.RenderTextDirection([_("T"), _("P"), _("B"), _("A")]) | 622 | self.RenderTextDirection([_("T"), _("P"), _("B"), _("A")]) |
606 | - | 623 | + |
607 | elif(croll >= -86 and croll <= -42): | 624 | elif(croll >= -86 and croll <= -42): |
608 | self.RenderTextDirection([_("TA"), _("PT"), _("BP"), _("AB")]) | 625 | self.RenderTextDirection([_("TA"), _("PT"), _("BP"), _("AB")]) |
609 | - | 626 | + |
610 | elif(croll >= -41 and croll <= -2): | 627 | elif(croll >= -41 and croll <= -2): |
611 | self.RenderTextDirection([_("AT"), _("TP"), _("PB"), _("BA")]) | 628 | self.RenderTextDirection([_("AT"), _("TP"), _("PB"), _("BA")]) |
612 | - | 629 | + |
613 | elif (croll >= -2 and croll <= 1): | 630 | elif (croll >= -2 and croll <= 1): |
614 | self.RenderTextDirection([_("A"), _("T"), _("P"), _("B")]) | 631 | self.RenderTextDirection([_("A"), _("T"), _("P"), _("B")]) |
615 | 632 | ||
@@ -624,16 +641,16 @@ class Viewer(wx.Panel): | @@ -624,16 +641,16 @@ class Viewer(wx.Panel): | ||
624 | 641 | ||
625 | elif(croll > 91 and croll <= 135): | 642 | elif(croll > 91 and croll <= 135): |
626 | self.RenderTextDirection([_("BP"), _("AB"), _("TA"), _("PT")]) | 643 | self.RenderTextDirection([_("BP"), _("AB"), _("TA"), _("PT")]) |
627 | - | 644 | + |
628 | elif(croll > 135 and croll <= 177): | 645 | elif(croll > 135 and croll <= 177): |
629 | self.RenderTextDirection([_("PB"), _("BA"), _("AT"), _("TP")]) | 646 | self.RenderTextDirection([_("PB"), _("BA"), _("AT"), _("TP")]) |
630 | - | 647 | + |
631 | elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177): | 648 | elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177): |
632 | self.RenderTextDirection([_("P"), _("B"), _("A"), _("T")]) | 649 | self.RenderTextDirection([_("P"), _("B"), _("A"), _("T")]) |
633 | - | 650 | + |
634 | elif(croll >= -177 and croll <= -133): | 651 | elif(croll >= -177 and croll <= -133): |
635 | self.RenderTextDirection([_("PT"), _("BP"), _("AB"), _("TA")]) | 652 | self.RenderTextDirection([_("PT"), _("BP"), _("AB"), _("TA")]) |
636 | - | 653 | + |
637 | elif(croll >= -132 and croll <= -101): | 654 | elif(croll >= -132 and croll <= -101): |
638 | self.RenderTextDirection([_("TP"), _("PB"), _("BA"), _("AT")]) | 655 | self.RenderTextDirection([_("TP"), _("PB"), _("BA"), _("AT")]) |
639 | 656 | ||
@@ -668,12 +685,12 @@ class Viewer(wx.Panel): | @@ -668,12 +685,12 @@ class Viewer(wx.Panel): | ||
668 | def Navigation(self, pubsub_evt): | 685 | def Navigation(self, pubsub_evt): |
669 | # Get point from base change | 686 | # Get point from base change |
670 | x, y, z = pubsub_evt.data | 687 | x, y, z = pubsub_evt.data |
671 | - coord_cross = x, y, z | 688 | + coord_cross = x, y, z |
672 | position = self.slice_data.actor.GetInput().FindPoint(x, y, z) | 689 | position = self.slice_data.actor.GetInput().FindPoint(x, y, z) |
673 | coord_cross = self.slice_data.actor.GetInput().GetPoint(position) | 690 | coord_cross = self.slice_data.actor.GetInput().GetPoint(position) |
674 | - coord = self.calcultate_scroll_position(position) | 691 | + coord = self.calcultate_scroll_position(position) |
675 | Publisher.sendMessage('Update cross position', coord_cross) | 692 | Publisher.sendMessage('Update cross position', coord_cross) |
676 | - | 693 | + |
677 | self.ScrollSlice(coord) | 694 | self.ScrollSlice(coord) |
678 | self.interactor.Render() | 695 | self.interactor.Render() |
679 | 696 | ||
@@ -698,7 +715,7 @@ class Viewer(wx.Panel): | @@ -698,7 +715,7 @@ class Viewer(wx.Panel): | ||
698 | #for slice_data in self.slice_data_list: | 715 | #for slice_data in self.slice_data_list: |
699 | #if slice_data.renderer is render: | 716 | #if slice_data.renderer is render: |
700 | #return slice_data | 717 | #return slice_data |
701 | - # WARN: Return the only slice_data used in this slice_viewer. | 718 | + # WARN: Return the only slice_data used in this slice_viewer. |
702 | return self.slice_data | 719 | return self.slice_data |
703 | 720 | ||
704 | def calcultate_scroll_position(self, position): | 721 | def calcultate_scroll_position(self, position): |
@@ -825,7 +842,7 @@ class Viewer(wx.Panel): | @@ -825,7 +842,7 @@ class Viewer(wx.Panel): | ||
825 | 'Hide text actors on viewers') | 842 | 'Hide text actors on viewers') |
826 | Publisher.subscribe(self.OnExportPicture,'Export picture to file') | 843 | Publisher.subscribe(self.OnExportPicture,'Export picture to file') |
827 | Publisher.subscribe(self.SetDefaultCursor, 'Set interactor default cursor') | 844 | Publisher.subscribe(self.SetDefaultCursor, 'Set interactor default cursor') |
828 | - | 845 | + |
829 | Publisher.subscribe(self.AddActors, 'Add actors ' + str(ORIENTATIONS[self.orientation])) | 846 | Publisher.subscribe(self.AddActors, 'Add actors ' + str(ORIENTATIONS[self.orientation])) |
830 | Publisher.subscribe(self.RemoveActors, 'Remove actors ' + str(ORIENTATIONS[self.orientation])) | 847 | Publisher.subscribe(self.RemoveActors, 'Remove actors ' + str(ORIENTATIONS[self.orientation])) |
831 | Publisher.subscribe(self.OnSwapVolumeAxes, 'Swap volume axes') | 848 | Publisher.subscribe(self.OnSwapVolumeAxes, 'Swap volume axes') |
@@ -851,11 +868,11 @@ class Viewer(wx.Panel): | @@ -851,11 +868,11 @@ class Viewer(wx.Panel): | ||
851 | 868 | ||
852 | def SetDefaultCursor(self, pusub_evt): | 869 | def SetDefaultCursor(self, pusub_evt): |
853 | self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) | 870 | self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) |
854 | - | 871 | + |
855 | def OnExportPicture(self, pubsub_evt): | 872 | def OnExportPicture(self, pubsub_evt): |
856 | Publisher.sendMessage('Begin busy cursor') | 873 | Publisher.sendMessage('Begin busy cursor') |
857 | view_prop_list = [] | 874 | view_prop_list = [] |
858 | - view_prop_list.append(self.slice_data.box_actor) | 875 | + view_prop_list.append(self.slice_data.box_actor) |
859 | self.slice_data.renderer.RemoveViewProp(self.slice_data.box_actor) | 876 | self.slice_data.renderer.RemoveViewProp(self.slice_data.box_actor) |
860 | 877 | ||
861 | id, filename, filetype = pubsub_evt.data | 878 | id, filename, filetype = pubsub_evt.data |
@@ -917,7 +934,7 @@ class Viewer(wx.Panel): | @@ -917,7 +934,7 @@ class Viewer(wx.Panel): | ||
917 | def CloseProject(self): | 934 | def CloseProject(self): |
918 | for slice_data in self.slice_data_list: | 935 | for slice_data in self.slice_data_list: |
919 | del slice_data | 936 | del slice_data |
920 | - | 937 | + |
921 | self.slice_data_list = [] | 938 | self.slice_data_list = [] |
922 | self.layout = (1, 1) | 939 | self.layout = (1, 1) |
923 | self.orientation_texts = [] | 940 | self.orientation_texts = [] |
@@ -929,10 +946,10 @@ class Viewer(wx.Panel): | @@ -929,10 +946,10 @@ class Viewer(wx.Panel): | ||
929 | def OnSetInteractorStyle(self, pubsub_evt): | 946 | def OnSetInteractorStyle(self, pubsub_evt): |
930 | state = pubsub_evt.data | 947 | state = pubsub_evt.data |
931 | self.SetInteractorStyle(state) | 948 | self.SetInteractorStyle(state) |
932 | - | 949 | + |
933 | if (state != const.SLICE_STATE_EDITOR): | 950 | if (state != const.SLICE_STATE_EDITOR): |
934 | Publisher.sendMessage('Set interactor default cursor') | 951 | Publisher.sendMessage('Set interactor default cursor') |
935 | - | 952 | + |
936 | def __bind_events_wx(self): | 953 | def __bind_events_wx(self): |
937 | self.scroll.Bind(wx.EVT_SCROLL, self.OnScrollBar) | 954 | self.scroll.Bind(wx.EVT_SCROLL, self.OnScrollBar) |
938 | self.scroll.Bind(wx.EVT_SCROLL_THUMBTRACK, self.OnScrollBarRelease) | 955 | self.scroll.Bind(wx.EVT_SCROLL_THUMBTRACK, self.OnScrollBarRelease) |
@@ -1162,15 +1179,15 @@ class Viewer(wx.Panel): | @@ -1162,15 +1179,15 @@ class Viewer(wx.Panel): | ||
1162 | def set_scroll_position(self, position): | 1179 | def set_scroll_position(self, position): |
1163 | self.scroll.SetThumbPosition(position) | 1180 | self.scroll.SetThumbPosition(position) |
1164 | self.OnScrollBar() | 1181 | self.OnScrollBar() |
1165 | - | 1182 | + |
1166 | def UpdateSlice3D(self, pos): | 1183 | def UpdateSlice3D(self, pos): |
1167 | original_orientation = project.Project().original_orientation | 1184 | original_orientation = project.Project().original_orientation |
1168 | pos = self.scroll.GetThumbPosition() | 1185 | pos = self.scroll.GetThumbPosition() |
1169 | Publisher.sendMessage('Change slice from slice plane',\ | 1186 | Publisher.sendMessage('Change slice from slice plane',\ |
1170 | (self.orientation, pos)) | 1187 | (self.orientation, pos)) |
1171 | - | 1188 | + |
1172 | def OnScrollBar(self, evt=None, update3D=True): | 1189 | def OnScrollBar(self, evt=None, update3D=True): |
1173 | - pos = self.scroll.GetThumbPosition() | 1190 | + pos = self.scroll.GetThumbPosition() |
1174 | self.set_slice_number(pos) | 1191 | self.set_slice_number(pos) |
1175 | if update3D: | 1192 | if update3D: |
1176 | self.UpdateSlice3D(pos) | 1193 | self.UpdateSlice3D(pos) |
@@ -1179,14 +1196,14 @@ class Viewer(wx.Panel): | @@ -1179,14 +1196,14 @@ class Viewer(wx.Panel): | ||
1179 | # the actual orientation. | 1196 | # the actual orientation. |
1180 | focal_point = self.cross.GetFocalPoint() | 1197 | focal_point = self.cross.GetFocalPoint() |
1181 | Publisher.sendMessage('Update cross position', focal_point) | 1198 | Publisher.sendMessage('Update cross position', focal_point) |
1182 | - Publisher.sendMessage('Update slice viewer') | 1199 | + Publisher.sendMessage('Update slice viewer') |
1183 | else: | 1200 | else: |
1184 | - self.interactor.Render() | 1201 | + self.interactor.Render() |
1185 | if evt: | 1202 | if evt: |
1186 | if self._flush_buffer: | 1203 | if self._flush_buffer: |
1187 | self.slice_.apply_slice_buffer_to_mask(self.orientation) | 1204 | self.slice_.apply_slice_buffer_to_mask(self.orientation) |
1188 | evt.Skip() | 1205 | evt.Skip() |
1189 | - | 1206 | + |
1190 | def OnScrollBarRelease(self, evt): | 1207 | def OnScrollBarRelease(self, evt): |
1191 | pos = self.scroll.GetThumbPosition() | 1208 | pos = self.scroll.GetThumbPosition() |
1192 | evt.Skip() | 1209 | evt.Skip() |
@@ -1212,7 +1229,7 @@ class Viewer(wx.Panel): | @@ -1212,7 +1229,7 @@ class Viewer(wx.Panel): | ||
1212 | if (evt.GetKeyCode() == wx.WXK_UP and pos > min): | 1229 | if (evt.GetKeyCode() == wx.WXK_UP and pos > min): |
1213 | self.OnScrollForward() | 1230 | self.OnScrollForward() |
1214 | self.OnScrollBar() | 1231 | self.OnScrollBar() |
1215 | - | 1232 | + |
1216 | elif (evt.GetKeyCode() == wx.WXK_DOWN and pos < max): | 1233 | elif (evt.GetKeyCode() == wx.WXK_DOWN and pos < max): |
1217 | self.OnScrollBackward() | 1234 | self.OnScrollBackward() |
1218 | self.OnScrollBar() | 1235 | self.OnScrollBar() |
@@ -1236,7 +1253,7 @@ class Viewer(wx.Panel): | @@ -1236,7 +1253,7 @@ class Viewer(wx.Panel): | ||
1236 | Publisher.sendMessage('Set projection type', projections[evt.GetKeyCode()]) | 1253 | Publisher.sendMessage('Set projection type', projections[evt.GetKeyCode()]) |
1237 | Publisher.sendMessage('Reload actual slice') | 1254 | Publisher.sendMessage('Reload actual slice') |
1238 | skip = False | 1255 | skip = False |
1239 | - | 1256 | + |
1240 | self.UpdateSlice3D(pos) | 1257 | self.UpdateSlice3D(pos) |
1241 | self.interactor.Render() | 1258 | self.interactor.Render() |
1242 | 1259 | ||
@@ -1246,18 +1263,18 @@ class Viewer(wx.Panel): | @@ -1246,18 +1263,18 @@ class Viewer(wx.Panel): | ||
1246 | def OnScrollForward(self, evt=None, obj=None): | 1263 | def OnScrollForward(self, evt=None, obj=None): |
1247 | pos = self.scroll.GetThumbPosition() | 1264 | pos = self.scroll.GetThumbPosition() |
1248 | min = 0 | 1265 | min = 0 |
1249 | - | 1266 | + |
1250 | if(pos > min): | 1267 | if(pos > min): |
1251 | if self._flush_buffer: | 1268 | if self._flush_buffer: |
1252 | self.slice_.apply_slice_buffer_to_mask(self.orientation) | 1269 | self.slice_.apply_slice_buffer_to_mask(self.orientation) |
1253 | pos = pos - 1 | 1270 | pos = pos - 1 |
1254 | self.scroll.SetThumbPosition(pos) | 1271 | self.scroll.SetThumbPosition(pos) |
1255 | self.OnScrollBar() | 1272 | self.OnScrollBar() |
1256 | - | 1273 | + |
1257 | def OnScrollBackward(self, evt=None, obj=None): | 1274 | def OnScrollBackward(self, evt=None, obj=None): |
1258 | pos = self.scroll.GetThumbPosition() | 1275 | pos = self.scroll.GetThumbPosition() |
1259 | max = self.slice_.GetMaxSliceNumber(self.orientation) | 1276 | max = self.slice_.GetMaxSliceNumber(self.orientation) |
1260 | - | 1277 | + |
1261 | if(pos < max): | 1278 | if(pos < max): |
1262 | if self._flush_buffer: | 1279 | if self._flush_buffer: |
1263 | self.slice_.apply_slice_buffer_to_mask(self.orientation) | 1280 | self.slice_.apply_slice_buffer_to_mask(self.orientation) |
@@ -1266,7 +1283,7 @@ class Viewer(wx.Panel): | @@ -1266,7 +1283,7 @@ class Viewer(wx.Panel): | ||
1266 | self.OnScrollBar() | 1283 | self.OnScrollBar() |
1267 | 1284 | ||
1268 | def OnSize(self, evt): | 1285 | def OnSize(self, evt): |
1269 | - w, h = evt.GetSize() | 1286 | + w, h = evt.GetSize() |
1270 | w = float(w) | 1287 | w = float(w) |
1271 | h = float(h) | 1288 | h = float(h) |
1272 | if self.slice_data: | 1289 | if self.slice_data: |
@@ -1303,7 +1320,7 @@ class Viewer(wx.Panel): | @@ -1303,7 +1320,7 @@ class Viewer(wx.Panel): | ||
1303 | self.mip_ctrls.Hide() | 1320 | self.mip_ctrls.Hide() |
1304 | self.GetSizer().Remove(self.mip_ctrls) | 1321 | self.GetSizer().Remove(self.mip_ctrls) |
1305 | self.Layout() | 1322 | self.Layout() |
1306 | - | 1323 | + |
1307 | def OnSetOverwriteMask(self, pubsub_evt): | 1324 | def OnSetOverwriteMask(self, pubsub_evt): |
1308 | value = pubsub_evt.data | 1325 | value = pubsub_evt.data |
1309 | self.overwrite_mask = value | 1326 | self.overwrite_mask = value |
@@ -1360,7 +1377,7 @@ class Viewer(wx.Panel): | @@ -1360,7 +1377,7 @@ class Viewer(wx.Panel): | ||
1360 | # orientation | 1377 | # orientation |
1361 | axis0, axis1 = pubsub_evt.data | 1378 | axis0, axis1 = pubsub_evt.data |
1362 | cursor = self.slice_data.cursor | 1379 | cursor = self.slice_data.cursor |
1363 | - spacing = cursor.spacing | 1380 | + spacing = cursor.spacing |
1364 | if (axis0, axis1) == (2, 1): | 1381 | if (axis0, axis1) == (2, 1): |
1365 | cursor.SetSpacing((spacing[1], spacing[0], spacing[2])) | 1382 | cursor.SetSpacing((spacing[1], spacing[0], spacing[2])) |
1366 | elif (axis0, axis1) == (2, 0): | 1383 | elif (axis0, axis1) == (2, 0): |