def __init_aui_manager(self): self.aui_manager = wx.aui.AuiManager() self.aui_manager.SetManagedWindow(self) p1 = volume_viewer.Viewer(self) s1 = wx.aui.AuiPaneInfo().Centre().\ CloseButton(False).MaximizeButton(False).CaptionVisible(0) self.s1 = s1 self.clut_raycasting = CLUTRaycastingWidget(self, -1) self.s2 = wx.aui.AuiPaneInfo().Bottom().BestSize((200, 200)).\ CloseButton(False).MaximizeButton(False).CaptionVisible(0).\ Hide() self.aui_manager.AddPane(p1, s1) self.aui_manager.AddPane(self.clut_raycasting, self.s2) self.aui_manager.Update()
class VolumeInteraction(wx.Panel): def __init__(self, parent, id): super(VolumeInteraction, self).__init__(parent, id) self.can_show_raycasting_widget = 0 self.__init_aui_manager() #sizer = wx.BoxSizer(wx.HORIZONTAL) #sizer.Add(volume_viewer.Viewer(self), 1, wx.EXPAND|wx.GROW) #self.SetSizer(sizer) self.__bind_events() self.__bind_events_wx() #sizer.Fit(self) def __init_aui_manager(self): self.aui_manager = wx.aui.AuiManager() self.aui_manager.SetManagedWindow(self) p1 = volume_viewer.Viewer(self) s1 = wx.aui.AuiPaneInfo().Centre().\ CloseButton(False).MaximizeButton(False).CaptionVisible(0) self.s1 = s1 self.clut_raycasting = CLUTRaycastingWidget(self, -1) self.s2 = wx.aui.AuiPaneInfo().Bottom().BestSize((200, 200)).\ CloseButton(False).MaximizeButton(False).CaptionVisible(0).\ Hide() self.aui_manager.AddPane(p1, s1) self.aui_manager.AddPane(self.clut_raycasting, self.s2) self.aui_manager.Update() def __bind_events_wx(self): self.clut_raycasting.Bind(EVT_CLUT_POINT_RELEASE, self.OnPointChanged) self.clut_raycasting.Bind(EVT_CLUT_CURVE_SELECT, self.OnCurveSelected) self.clut_raycasting.Bind(EVT_CLUT_CURVE_WL_CHANGE, self.OnChangeCurveWL) #self.Bind(wx.EVT_SIZE, self.OnSize) #self.Bind(wx.EVT_MAXIMIZE, self.OnMaximize) def __bind_events(self): Publisher.subscribe(self.ShowRaycastingWidget, 'Show raycasting widget') Publisher.subscribe(self.HideRaycastingWidget, 'Hide raycasting widget') Publisher.subscribe(self.OnSetRaycastPreset, 'Update raycasting preset') Publisher.subscribe(self.RefreshPoints, 'Refresh raycasting widget points') Publisher.subscribe(self.LoadHistogram, 'Load histogram') Publisher.subscribe(self._Exit, 'Exit') def __update_curve_wwwl_text(self, curve): ww, wl = self.clut_raycasting.GetCurveWWWl(curve) Publisher.sendMessage('Set raycasting wwwl', ww=ww, wl=wl, curve=curve) def ShowRaycastingWidget(self): self.can_show_raycasting_widget = 1 if self.clut_raycasting.to_draw_points: p = self.aui_manager.GetPane(self.clut_raycasting) p.Show() self.aui_manager.Update() def HideRaycastingWidget(self): self.can_show_raycasting_widget = 0 p = self.aui_manager.GetPane(self.clut_raycasting) p.Hide() self.aui_manager.Update() def OnPointChanged(self, evt): Publisher.sendMessage('Set raycasting refresh') Publisher.sendMessage('Set raycasting curve', curve=evt.GetCurve()) Publisher.sendMessage('Render volume viewer') def OnCurveSelected(self, evt): Publisher.sendMessage('Set raycasting curve', curve=evt.GetCurve()) Publisher.sendMessage('Render volume viewer') def OnChangeCurveWL(self, evt): curve = evt.GetCurve() self.__update_curve_wwwl_text(curve) Publisher.sendMessage('Render volume viewer') def OnSetRaycastPreset(self): preset = project.Project().raycasting_preset p = self.aui_manager.GetPane(self.clut_raycasting) self.clut_raycasting.SetRaycastPreset(preset) if self.clut_raycasting.to_draw_points and \ self.can_show_raycasting_widget: p.Show() else: p.Hide() self.aui_manager.Update() def LoadHistogram(self, histogram, init, end): self.clut_raycasting.SetRange((init, end)) self.clut_raycasting.SetHistogramArray(histogram, (init, end)) def RefreshPoints(self): self.clut_raycasting.CalculatePixelPoints() self.clut_raycasting.Refresh() def _Exit(self): self.aui_manager.UnInit()