diff --git a/invesalius/gui/widgets/slice_menu.py b/invesalius/gui/widgets/slice_menu.py index b98cf94..6bd47e2 100644 --- a/invesalius/gui/widgets/slice_menu.py +++ b/invesalius/gui/widgets/slice_menu.py @@ -29,24 +29,51 @@ class SliceMenu(wx.Menu): def __init__(self): wx.Menu.__init__(self) self.ID_TO_TOOL_ITEM = {} + new_id = 0 + submenu_wl = wx.Menu() for name in sorted(const.WINDOW_LEVEL): - new_id = wx.NewId() wl_item = wx.MenuItem(submenu_wl, new_id,\ name, kind=wx.ITEM_RADIO) submenu_wl.AppendItem(wl_item) self.ID_TO_TOOL_ITEM[new_id] = name + new_id += 1 + + submenu_pseudo_colors = wx.Menu() + for name in sorted(const.SLICE_COLOR_TABLE): + new_id += 1 + color_item = wx.MenuItem(submenu_wl, new_id,\ + name, kind=wx.ITEM_RADIO) + submenu_pseudo_colors.AppendItem(color_item) + self.ID_TO_TOOL_ITEM[new_id] = name + self.AppendMenu(-1, "Window Width & Level", submenu_wl) + self.AppendMenu(-1, "Pseudo Colors", submenu_pseudo_colors) + # It doesn't work in Linux - self.Bind(wx.EVT_MENU, self.OnPopupWindowLevel) + self.Bind(wx.EVT_MENU, self.OnPopup) # In Linux the bind must be putted in the submenu if sys.platform == 'linux2': - submenu_wl.Bind(wx.EVT_MENU, self.OnPopupWindowLevel) - - def OnPopupWindowLevel(self, evt): + submenu_wl.Bind(wx.EVT_MENU, self.OnPopup) + submenu_pseudo_colors.Bind(wx.EVT_MENU, self.OnPopup) + + def OnPopup(self, evt): + + id = evt.GetId() key = self.ID_TO_TOOL_ITEM[evt.GetId()] - window, level = const.WINDOW_LEVEL[key] - ps.Publisher().sendMessage('Bright and contrast adjustment image', - (window, level)) - ps.Publisher().sendMessage('Update slice viewer') + + if (id <= len(const.WINDOW_LEVEL)): + window, level = const.WINDOW_LEVEL[key] + ps.Publisher().sendMessage('Bright and contrast adjustment image', + (window, level)) + ps.Publisher().sendMessage('Update slice viewer') + + elif(id > len(const.WINDOW_LEVEL) and\ + (id <= len(const.SLICE_COLOR_TABLE) + len(const.WINDOW_LEVEL))): + values = const.SLICE_COLOR_TABLE[key] + + ps.Publisher().sendMessage('Change color table from background image', values) + ps.Publisher().sendMessage('Update slice viewer') + evt.Skip() + -- libgit2 0.21.2