diff --git a/invesalius/data/styles.py b/invesalius/data/styles.py index b375e38..636b5a8 100644 --- a/invesalius/data/styles.py +++ b/invesalius/data/styles.py @@ -1933,6 +1933,7 @@ class SelectPartConfig(object): def __init__(self): self.mask = None self.con_3d = 6 + self.dlg_visible = False class SelectMaskPartsInteractorStyle(DefaultInteractorStyle): @@ -1947,7 +1948,7 @@ class SelectMaskPartsInteractorStyle(DefaultInteractorStyle): self.slice_data = viewer.slice_data self.config = SelectPartConfig() - self.dlg_ffill = None + self.dlg = None self.t0 = 254 self.t1 = 255 @@ -1955,9 +1956,21 @@ class SelectMaskPartsInteractorStyle(DefaultInteractorStyle): self.AddObserver("LeftButtonPressEvent", self.OnSelect) + def SetUp(self): + if not self.config.dlg_visible: + self.config.dlg_visible = True + self.dlg= dialogs.SelectPartsOptionsDialog(self.config) + self.dlg.Show() + def CleanUp(self): + if (self.dlg is not None) and (self.config.dlg_visible): + self.config.dlg_visible = False + self.dlg.Destroy() + self.dlg = None + if self.config.mask: self.viewer.slice_.SelectCurrentMask(self.config.mask.index) + Publisher.sendMessage('Change mask selected', self.config.mask.index) self.config.mask = None del self.viewer.slice_.aux_matrices['SELECT'] self.viewer.slice_.to_show_aux = '' diff --git a/invesalius/gui/dialogs.py b/invesalius/gui/dialogs.py index 2578ab7..4b445de 100644 --- a/invesalius/gui/dialogs.py +++ b/invesalius/gui/dialogs.py @@ -1940,3 +1940,68 @@ class FFillOptionsDialog(wx.Dialog): Publisher.sendMessage('Disable style', const.SLICE_STATE_MASK_FFILL) evt.Skip() self.Destroy() + + +class SelectPartsOptionsDialog(wx.Dialog): + def __init__(self, config): + pre = wx.PreDialog() + pre.Create(wx.GetApp().GetTopWindow(), -1, _(u"Select mask parts"), style=wx.DEFAULT_DIALOG_STYLE|wx.FRAME_FLOAT_ON_PARENT) + self.PostCreate(pre) + + self.config = config + + self._init_gui() + + def _init_gui(self): + import data.mask as mask + + default_name = const.MASK_NAME_PATTERN %(mask.Mask.general_index+2) + self.target_name = wx.TextCtrl(self, -1) + self.target_name.SetValue(default_name) + + # Connectivity 3D + self.conect3D_6 = wx.RadioButton(self, -1, "6", style=wx.RB_GROUP) + self.conect3D_18 = wx.RadioButton(self, -1, "18") + self.conect3D_26 = wx.RadioButton(self, -1, "26") + + if self.config.con_3d == 18: + self.conect3D_18.SetValue(1) + elif self.config.con_3d == 26: + self.conect3D_26.SetValue(1) + else: + self.conect3D_6.SetValue(1) + + sizer = wx.GridBagSizer(11, 6) + sizer.AddStretchSpacer((0, 0)) + + sizer.Add(wx.StaticText(self, -1, _(u"Target mask name")), (1, 0), (1, 2), flag=wx.LEFT, border=7) + sizer.Add(self.target_name, (1, 3), (1, 3), flag=wx.RIGHT, border=7) + + sizer.AddStretchSpacer((2, 0)) + + sizer.Add(wx.StaticText(self, -1, _(u"3D Connectivity")), (3, 0), (1, 6), flag=wx.LEFT, border=9) + sizer.Add(self.conect3D_6, (4, 0), flag=wx.LEFT, border=9) + sizer.Add(self.conect3D_18, (4, 1), flag=wx.LEFT, border=9) + sizer.Add(self.conect3D_26, (4, 2), flag=wx.LEFT, border=9) + sizer.AddStretchSpacer((5, 0)) + + self.SetSizer(sizer) + sizer.Fit(self) + self.Layout() + + self.Bind(wx.EVT_RADIOBUTTON, self.OnSetRadio) + self.Bind(wx.EVT_CLOSE, self.OnClose) + + def OnSetRadio(self, evt): + if self.conect3D_6.GetValue(): + self.config.con_3d = 6 + elif self.conect3D_18.GetValue(): + self.config.con_3d = 18 + elif self.conect3D_26.GetValue(): + self.config.con_3d = 2 + + def OnClose(self, evt): + if self.config.dlg_visible: + Publisher.sendMessage('Disable style', const.SLICE_STATE_SELECT_MASK_PARTS) + evt.Skip() + self.Destroy() -- libgit2 0.21.2