diff --git a/invesalius/data/slice_.py b/invesalius/data/slice_.py index f476e57..5d03701 100644 --- a/invesalius/data/slice_.py +++ b/invesalius/data/slice_.py @@ -81,7 +81,8 @@ class Slice(object): self.imagedata = None self.current_mask = None self.blend_filter = None - self.matrix = None + self.histogram = None + self._matrix = None self.spacing = (1.0, 1.0, 1.0) self.number_of_colours = 256 @@ -99,6 +100,17 @@ class Slice(object): self.from_ = OTHER self.__bind_events() + @property + def matrix(self): + return self._matrix + + @matrix.setter + def matrix(self, value): + self._matrix = value + i, e = value.min(), value.max() + r = e - i + self.histogram = numpy.histogram(self._matrix, r, (i, e))[0] + def __bind_events(self): # General slice control Publisher.subscribe(self.CreateSurfaceFromIndex, diff --git a/invesalius/gui/dialogs.py b/invesalius/gui/dialogs.py index c970dea..60ab07e 100644 --- a/invesalius/gui/dialogs.py +++ b/invesalius/gui/dialogs.py @@ -1278,21 +1278,26 @@ class SurfaceMethodPanel(wx.Panel): class ClutImagedataDialog(wx.Dialog): - def __init__(self): + def __init__(self, histogram, init, end, wl, ww): pre = wx.PreDialog() pre.Create(None, -1, style=wx.DEFAULT_DIALOG_STYLE) self.PostCreate(pre) + self.histogram = histogram + self.init = init + self.end = end + self.wl = wl + self.ww = ww + self._init_gui() self._bind_events_wx() def _init_gui(self): self.clut_widget = clut_imagedata.CLUTImageDataWidget(self, -1, - np.random.randint(0, - 1000, - (1000,)), - -1000, 1000, - 230, 255) + self.histogram, + self.init, + self.end, + self.wl, self.ww) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.clut_widget, 1, wx.EXPAND) diff --git a/invesalius/gui/widgets/slice_menu.py b/invesalius/gui/widgets/slice_menu.py index 9b25d5d..067c3fd 100644 --- a/invesalius/gui/widgets/slice_menu.py +++ b/invesalius/gui/widgets/slice_menu.py @@ -23,7 +23,9 @@ import sys import wx from wx.lib.pubsub import pub as Publisher + import constants as const +import data.slice_ as sl import presets from gui.dialogs import ClutImagedataDialog @@ -188,7 +190,14 @@ class SliceMenu(wx.Menu): Publisher.sendMessage('Update slice viewer') elif key == _('Custom'): - cdialog = ClutImagedataDialog() + slc = sl.Slice() + histogram = slc.histogram + init = slc.matrix.min() + end = slc.matrix.max() + wl = slc.window_level + ww = slc.window_width + + cdialog = ClutImagedataDialog(histogram, init, end, wl, ww) cdialog.Show() -- libgit2 0.21.2