Commit d99aa7ccebb1005f8eefc846c90351f705a3b6ff

Authored by tatiana
1 parent 9674812b

ADD: Duplicate masks on data notebook

invesalius/data/slice_.py
... ... @@ -93,7 +93,9 @@ class Slice(object):
93 93  
94 94 ps.Publisher().subscribe(self.OnEnableStyle, 'Enable style')
95 95 ps.Publisher().subscribe(self.OnDisableStyle, 'Disable style')
  96 +
96 97 ps.Publisher().subscribe(self.OnRemoveMasks, 'Remove masks')
  98 + ps.Publisher().subscribe(self.OnDuplicateMasks, 'Duplicate masks')
97 99  
98 100  
99 101 def OnRemoveMasks(self, pubsub_evt):
... ... @@ -110,6 +112,25 @@ class Slice(object):
110 112 self.blend_filter.Update()
111 113 ps.Publisher().sendMessage('Update slice viewer')
112 114  
  115 + def OnDuplicateMasks(self, pubsub_evt):
  116 + selected_items = pubsub_evt.data
  117 + proj = Project()
  118 + mask_dict = proj.mask_dict
  119 + for index in selected_items:
  120 + original_mask = mask_dict[index]
  121 + # compute copy name
  122 + name = original_mask.name
  123 + names_list = [mask_dict[i].name for i in mask_dict.keys()]
  124 + new_name = utils.next_copy_name(name, names_list)
  125 + # create new mask
  126 + self.CreateMask(imagedata = original_mask.imagedata,
  127 + name = new_name,
  128 + colour = original_mask.colour,
  129 + opacity = original_mask.opacity,
  130 + threshold_range = original_mask.threshold_range,
  131 + edition_threshold_range = original_mask.edition_threshold_range,
  132 + edited_points = original_mask.edited_points)
  133 +
113 134  
114 135 def OnEnableStyle(self, pubsub_evt):
115 136 state = pubsub_evt.data
... ... @@ -538,18 +559,28 @@ class Slice(object):
538 559  
539 560 widget.SetInput(flip.GetOutput())
540 561  
541   -
542   - def CreateMask(self, imagedata=None, name=None):
  562 +
  563 + def CreateMask(self, imagedata=None, name=None, colour=None,
  564 + opacity=None, threshold_range=None,
  565 + edition_threshold_range = None,
  566 + edited_points=None):
543 567  
544 568 future_mask = Mask()
  569 + if colour:
  570 + future_mask.colour = colour
  571 + if opacity:
  572 + future_mask.opacity = opacity
  573 + if threshold_range:
  574 + future_mask.threshold_range = threshold_range
  575 + if edition_threshold_range:
  576 + future_mask.edition_threshold_range = edition_threshold_range
  577 + if edited_points:
  578 + future_mask.edited_points = edited_points
545 579  
546 580 # this is not the first mask, so we will import data from old imagedata
547 581 if imagedata is None:
548   -
549 582 old_mask = self.current_mask
550   -
551 583 imagedata = old_mask.imagedata
552   -
553 584 future_mask.threshold_range = old_mask.threshold_range
554 585  
555 586 # if not defined in the method call, this will have been computed on
... ...
invesalius/gui/data_notebook.py
... ... @@ -70,12 +70,12 @@ class MaskPage(wx.Panel):
70 70 """
71 71 def __init__(self, parent):
72 72 wx.Panel.__init__(self, parent, pos=wx.Point(0, 50),
73   - size=wx.Size(256, 120))
  73 + size=wx.Size(256, 140))
74 74 self.__init_gui()
75 75  
76 76 def __init_gui(self):
77 77 # listctrl were existing masks will be listed
78   - self.listctrl = MasksListCtrlPanel(self, size=wx.Size(256, 80))
  78 + self.listctrl = MasksListCtrlPanel(self, size=wx.Size(256, 100))
79 79 # button control with tools (eg. remove, add new, etc)
80 80 self.buttonctrl = ButtonControlPanel(self)
81 81  
... ... @@ -93,7 +93,7 @@ class ButtonControlPanel(wx.Panel):
93 93 """
94 94 def __init__(self, parent):
95 95 wx.Panel.__init__(self, parent, pos=wx.Point(0, 50),
96   - size=wx.Size(256, 20))
  96 + size=wx.Size(256, 22))
97 97 self.parent = parent
98 98 self.__init_gui()
99 99  
... ... @@ -111,13 +111,16 @@ class ButtonControlPanel(wx.Panel):
111 111 button_style = pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_DEFAULT
112 112 button_new = pbtn.PlateButton(self, BTN_NEW, "",
113 113 BMP_NEW,
114   - style=button_style)
  114 + style=button_style,
  115 + size = wx.Size(18, 18))
115 116 button_remove = pbtn.PlateButton(self, BTN_REMOVE, "",
116 117 BMP_REMOVE,
117   - style=button_style)
  118 + style=button_style,
  119 + size = wx.Size(18, 18))
118 120 button_duplicate = pbtn.PlateButton(self, BTN_DUPLICATE, "",
119 121 BMP_DUPLICATE,
120   - style=button_style)
  122 + style=button_style,
  123 + size = wx.Size(18, 18))
121 124  
122 125 # Add all controls to gui
123 126 sizer = wx.BoxSizer(wx.HORIZONTAL)
... ...
invesalius/gui/default_tasks.py
... ... @@ -111,7 +111,7 @@ class LowerTaskPanel(wx.Panel):
111 111 def __init__(self, parent):
112 112 wx.Panel.__init__(self, parent, pos=wx.Point(5, 5),
113 113 # size=wx.Size(280, 700))
114   - size=wx.Size(280, 400))
  114 + size=wx.Size(280, 420))
115 115  
116 116 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition,
117 117 self.GetSize(),fpb.FPB_DEFAULT_STYLE,
... ...