Commit 4546652613b6ffbedd1fdcea2772fa4c203a8d4f

Authored by tatiana
1 parent 60b7adb2

FIX: Bright and contrast adjustment in volume

invesalius/control.py
@@ -93,13 +93,17 @@ class Controller(): @@ -93,13 +93,17 @@ class Controller():
93 # TODO: where to insert!!! 93 # TODO: where to insert!!!
94 self.LoadImagedataInfo() 94 self.LoadImagedataInfo()
95 95
96 - # Call frame so it shows slice and volume related panels  
97 - ps.Publisher().sendMessage('Show content panel')  
98 -  
99 #Initial Window and Level 96 #Initial Window and Level
100 ps.Publisher().sendMessage('Bright and contrast adjustment image',\ 97 ps.Publisher().sendMessage('Bright and contrast adjustment image',\
101 (proj.window, proj.level)) 98 (proj.window, proj.level))
102 99
  100 + # Call frame so it shows slice and volume related panels
  101 + ps.Publisher().sendMessage('Show content panel')
  102 +
  103 + ps.Publisher().sendMessage('Update AUI')
  104 +
  105 + ps.Publisher().sendMessage('TESTE TATI')
  106 +
103 107
104 def LoadImagedataInfo(self): 108 def LoadImagedataInfo(self):
105 proj = prj.Project() 109 proj = prj.Project()
invesalius/data/viewer_slice.py
@@ -225,6 +225,7 @@ class Viewer(wx.Panel): @@ -225,6 +225,7 @@ class Viewer(wx.Panel):
225 ps.Publisher().sendMessage('Update window and level text',\ 225 ps.Publisher().sendMessage('Update window and level text',\
226 "WL: %d WW: %d"%(proj.level, proj.window)) 226 "WL: %d WW: %d"%(proj.level, proj.window))
227 self.interactor.Render() 227 self.interactor.Render()
  228 + #ps.Publisher().sendMessage("Update slice viewer")
228 229
229 230
230 def OnWindowLevelClick(self, evt, obj): 231 def OnWindowLevelClick(self, evt, obj):
invesalius/data/viewer_volume.py
@@ -86,23 +86,27 @@ class Viewer(wx.Panel): @@ -86,23 +86,27 @@ class Viewer(wx.Panel):
86 self.onclick = False 86 self.onclick = False
87 87
88 def __bind_events(self): 88 def __bind_events(self):
89 - ps.Publisher().subscribe(self.LoadActor, 'Load surface actor into viewer')  
90 - ps.Publisher().subscribe(self.UpdateRender, 'Render volume viewer') 89 + ps.Publisher().subscribe(self.LoadActor,
  90 + 'Load surface actor into viewer')
  91 + ps.Publisher().subscribe(self.UpdateRender,
  92 + 'Render volume viewer')
91 ps.Publisher().subscribe(self.ChangeBackgroundColour, 93 ps.Publisher().subscribe(self.ChangeBackgroundColour,
92 - 'Change volume viewer background colour')  
93 - ps.Publisher().subscribe(self.LoadVolume, 'Load volume into viewer') 94 + 'Change volume viewer background colour')
  95 + ps.Publisher().subscribe(self.LoadVolume,
  96 + 'Load volume into viewer')
94 ps.Publisher().subscribe(self.AppendActor,'AppendActor') 97 ps.Publisher().subscribe(self.AppendActor,'AppendActor')
95 ps.Publisher().subscribe(self.SetWidgetInteractor, 98 ps.Publisher().subscribe(self.SetWidgetInteractor,
96 'Set Widget Interactor') 99 'Set Widget Interactor')
97 ps.Publisher().subscribe(self.OnSetViewAngle, 100 ps.Publisher().subscribe(self.OnSetViewAngle,
98 'Set volume view angle') 101 'Set volume view angle')
99 ps.Publisher().subscribe(self.OnSetWindowLevelText, 102 ps.Publisher().subscribe(self.OnSetWindowLevelText,
100 - 'Set volume window and level text') 103 + 'Set volume window and level text')
101 ps.Publisher().subscribe(self.OnEnableBrightContrast, 104 ps.Publisher().subscribe(self.OnEnableBrightContrast,
102 - 'Bright and contrast adjustment') 105 + ('Set interaction mode', const.MODE_WW_WL))
103 ps.Publisher().subscribe(self.OnDisableBrightContrast, 106 ps.Publisher().subscribe(self.OnDisableBrightContrast,
104 - 'Set Editor Mode')  
105 - 107 + ('Set interaction mode',
  108 + const.MODE_SLICE_EDITOR))
  109 +
106 def __bind_events_wx(self): 110 def __bind_events_wx(self):
107 #self.Bind(wx.EVT_SIZE, self.OnSize) 111 #self.Bind(wx.EVT_SIZE, self.OnSize)
108 pass 112 pass
invesalius/gui/default_viewers.py
@@ -20,6 +20,8 @@ import sys @@ -20,6 +20,8 @@ import sys
20 20
21 import wx 21 import wx
22 import wx.lib.agw.fourwaysplitter as fws 22 import wx.lib.agw.fourwaysplitter as fws
  23 +import wx.lib.pubsub as ps
  24 +
23 import data.viewer_slice as slice_viewer 25 import data.viewer_slice as slice_viewer
24 import data.viewer_volume as volume_viewer 26 import data.viewer_volume as volume_viewer
25 27
@@ -80,6 +82,7 @@ class Panel(wx.Panel): @@ -80,6 +82,7 @@ class Panel(wx.Panel):
80 MaximizeButton(True).CloseButton(False) 82 MaximizeButton(True).CloseButton(False)
81 83
82 p4 = VolumeViewerCover(self) 84 p4 = VolumeViewerCover(self)
  85 + #p4 = volume_viewer.Viewer(self)
83 s4 = wx.aui.AuiPaneInfo().Row(1).Name("Volume").\ 86 s4 = wx.aui.AuiPaneInfo().Row(1).Name("Volume").\
84 Bottom().Centre().Caption("Volume").\ 87 Bottom().Centre().Caption("Volume").\
85 MaximizeButton(True).CloseButton(False) 88 MaximizeButton(True).CloseButton(False)
@@ -209,6 +212,46 @@ class VolumeToolPanel(wx.Panel): @@ -209,6 +212,46 @@ class VolumeToolPanel(wx.Panel):
209 BMP_RAYCASTING = wx.Bitmap("../icons/volume_raycasting.png", 212 BMP_RAYCASTING = wx.Bitmap("../icons/volume_raycasting.png",
210 wx.BITMAP_TYPE_PNG) 213 wx.BITMAP_TYPE_PNG)
211 214
  215 +
  216 + button_raycasting = pbtn.PlateButton(self, BUTTON_RAYCASTING,"",
  217 + BMP_RAYCASTING, style=pbtn.PB_STYLE_SQUARE,
  218 + size=(24,24))
  219 + self.button_raycasting = button_raycasting
  220 +
  221 + # VOLUME VIEW ANGLE BUTTON
  222 + BMP_FRONT = wx.Bitmap(ID_TO_BMP[const.VOL_FRONT][1],
  223 + wx.BITMAP_TYPE_PNG)
  224 + button_view = pbtn.PlateButton(self, BUTTON_VIEW, "",
  225 + BMP_FRONT, size=(24,24),
  226 + style=pbtn.PB_STYLE_SQUARE)
  227 + self.button_view = button_view
  228 +
  229 + # VOLUME COLOUR BUTTON
  230 + button_colour= csel.ColourSelect(self, 111,colour=(0,0,0),
  231 + size=(24,24))
  232 + button_colour.Bind(csel.EVT_COLOURSELECT, self.OnSelectColour)
  233 + self.button_colour = button_colour
  234 +
  235 + self.__bind_events()
  236 +
  237 + # SIZER TO ORGANIZE ALL
  238 + sizer = wx.BoxSizer(wx.VERTICAL)
  239 + sizer.Add(button_colour, 0, wx.ALL, 1)
  240 + sizer.Add(button_raycasting, 0, wx.ALL, 1)
  241 + sizer.Add(button_view, 0, wx.ALL, 1)
  242 + self.SetSizer(sizer)
  243 + sizer.Fit(self)
  244 +
  245 + self.__bind_events()
  246 +
  247 + def __bind_events(self):
  248 + ps.Publisher().subscribe(self.ChangeButtonColour,
  249 + 'Change volume viewer gui colour')
  250 + ps.Publisher().subscribe(self.__init_menus, 'TESTE TATI')
  251 +
  252 + def __init_menus(self, pubsub_evt=None):
  253 + print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
  254 + print "__init_menus"
212 # MENU RELATED TO RAYCASTING TYPES 255 # MENU RELATED TO RAYCASTING TYPES
213 menu = wx.Menu() 256 menu = wx.Menu()
214 for name in const.RAYCASTING_TYPES: 257 for name in const.RAYCASTING_TYPES:
@@ -235,13 +278,7 @@ class VolumeToolPanel(wx.Panel): @@ -235,13 +278,7 @@ class VolumeToolPanel(wx.Panel):
235 278
236 self.menu_raycasting = menu 279 self.menu_raycasting = menu
237 menu.Bind(wx.EVT_MENU, self.OnMenuRaycasting) 280 menu.Bind(wx.EVT_MENU, self.OnMenuRaycasting)
238 -  
239 - button_raycasting = pbtn.PlateButton(self, BUTTON_RAYCASTING,"",  
240 - BMP_RAYCASTING, style=pbtn.PB_STYLE_SQUARE,  
241 - size=(24,24))  
242 - button_raycasting.SetMenu(menu)  
243 -  
244 - self.button_raycasting = button_raycasting 281 + self.button_raycasting.SetMenu(menu)
245 282
246 # VOLUME VIEW ANGLE BUTTON 283 # VOLUME VIEW ANGLE BUTTON
247 menu = wx.Menu() 284 menu = wx.Menu()
@@ -252,33 +289,10 @@ class VolumeToolPanel(wx.Panel): @@ -252,33 +289,10 @@ class VolumeToolPanel(wx.Panel):
252 menu.AppendItem(item) 289 menu.AppendItem(item)
253 menu.Bind(wx.EVT_MENU, self.OnMenuView) 290 menu.Bind(wx.EVT_MENU, self.OnMenuView)
254 self.menu_view = menu 291 self.menu_view = menu
  292 + self.button_view.SetMenu(menu)
255 293
256 - BMP_FRONT = wx.Bitmap(ID_TO_BMP[const.VOL_FRONT][1],  
257 - wx.BITMAP_TYPE_PNG)  
258 - button_view = pbtn.PlateButton(self, BUTTON_VIEW, "",  
259 - BMP_FRONT, size=(24,24),  
260 - style=pbtn.PB_STYLE_SQUARE)  
261 - button_view.SetMenu(menu)  
262 - self.button_view = button_view  
263 -  
264 - # VOLUME COLOUR BUTTOM  
265 - button_colour= csel.ColourSelect(self, 111,colour=(0,0,0),  
266 - size=(24,24))  
267 - button_colour.Bind(csel.EVT_COLOURSELECT, self.OnSelectColour)  
268 - self.button_colour = button_colour  
269 -  
270 - self.__bind_events()  
271 - # SIZER TO ORGANIZE ALL  
272 - sizer = wx.BoxSizer(wx.VERTICAL)  
273 - sizer.Add(button_colour, 0, wx.ALL, 1)  
274 - sizer.Add(button_raycasting, 0, wx.ALL, 1)  
275 - sizer.Add(button_view, 0, wx.ALL, 1)  
276 - self.SetSizer(sizer)  
277 - sizer.Fit(self)  
278 -  
279 - def __bind_events(self):  
280 - ps.Publisher().subscribe(self.ChangeButtonColour,  
281 - 'Change volume viewer gui colour') 294 + self.Update()
  295 + self.Refresh()
282 296
283 def ChangeButtonColour(self, pubsub_evt): 297 def ChangeButtonColour(self, pubsub_evt):
284 colour = [i*255 for i in pubsub_evt.data] 298 colour = [i*255 for i in pubsub_evt.data]
invesalius/gui/frame.py
@@ -77,6 +77,11 @@ class Frame(wx.Frame): @@ -77,6 +77,11 @@ class Frame(wx.Frame):
77 def __bind_events(self): 77 def __bind_events(self):
78 ps.Publisher().subscribe(self.ShowContentPanel, 'Show content panel') 78 ps.Publisher().subscribe(self.ShowContentPanel, 'Show content panel')
79 ps.Publisher().subscribe(self.ShowImportPanel, "Show import panel") 79 ps.Publisher().subscribe(self.ShowImportPanel, "Show import panel")
  80 + ps.Publisher().subscribe(self.UpdateAui, "Update AUI")
  81 +
  82 +
  83 + def UpdateAui(self, pubsub_evt):
  84 + self.aui_manager.Update()
80 85
81 def __bind_events_wx(self): 86 def __bind_events_wx(self):
82 self.Bind(wx.EVT_SIZE, self.OnSize) 87 self.Bind(wx.EVT_SIZE, self.OnSize)