Commit 549869076e2e6a3dcb29bf73c88681fe14cec66e

Authored by tatiana
1 parent 74061db1

ENH: Popup menu in volume buttons

Showing 1 changed file with 24 additions and 11 deletions   Show diff stats
invesalius/gui/default_viewers.py
@@ -220,6 +220,8 @@ class VolumeToolPanel(wx.Panel): @@ -220,6 +220,8 @@ class VolumeToolPanel(wx.Panel):
220 BMP_RAYCASTING, style=pbtn.PB_STYLE_SQUARE, 220 BMP_RAYCASTING, style=pbtn.PB_STYLE_SQUARE,
221 size=(24,24)) 221 size=(24,24))
222 self.button_raycasting = button_raycasting 222 self.button_raycasting = button_raycasting
  223 + self.button_raycasting.Bind(wx.EVT_LEFT_DOWN, self.OnButtonRaycasting)
  224 +
223 225
224 # VOLUME VIEW ANGLE BUTTON 226 # VOLUME VIEW ANGLE BUTTON
225 BMP_FRONT = wx.Bitmap(ID_TO_BMP[const.VOL_FRONT][1], 227 BMP_FRONT = wx.Bitmap(ID_TO_BMP[const.VOL_FRONT][1],
@@ -228,37 +230,51 @@ class VolumeToolPanel(wx.Panel): @@ -228,37 +230,51 @@ class VolumeToolPanel(wx.Panel):
228 BMP_FRONT, size=(24,24), 230 BMP_FRONT, size=(24,24),
229 style=pbtn.PB_STYLE_SQUARE) 231 style=pbtn.PB_STYLE_SQUARE)
230 self.button_view = button_view 232 self.button_view = button_view
  233 + self.button_view.Bind(wx.EVT_LEFT_DOWN, self.OnButtonView)
231 234
232 # VOLUME COLOUR BUTTON 235 # VOLUME COLOUR BUTTON
  236 + if sys.platform == 'linux2':
  237 + size = (28,28)
  238 + sp = 2
  239 + else:
  240 + size = (24,24)
  241 + sp = 5
  242 +
233 button_colour= csel.ColourSelect(self, 111,colour=(0,0,0), 243 button_colour= csel.ColourSelect(self, 111,colour=(0,0,0),
234 - size=(24,24)) 244 + size=size)
235 button_colour.Bind(csel.EVT_COLOURSELECT, self.OnSelectColour) 245 button_colour.Bind(csel.EVT_COLOURSELECT, self.OnSelectColour)
236 self.button_colour = button_colour 246 self.button_colour = button_colour
237 247
238 - sizer_colour = wx.BoxSizer(wx.HORIZONTAL)  
239 - sizer_colour.Add(button_colour, 0, wx.RIGHT, 15)  
240 -  
241 # SIZER TO ORGANIZE ALL 248 # SIZER TO ORGANIZE ALL
242 sizer = wx.BoxSizer(wx.VERTICAL) 249 sizer = wx.BoxSizer(wx.VERTICAL)
  250 + sizer.Add(button_colour, 0, wx.ALL, sp)
243 sizer.Add(button_raycasting, 0, wx.TOP|wx.BOTTOM, 1) 251 sizer.Add(button_raycasting, 0, wx.TOP|wx.BOTTOM, 1)
244 sizer.Add(button_view, 0, wx.TOP|wx.BOTTOM, 1) 252 sizer.Add(button_view, 0, wx.TOP|wx.BOTTOM, 1)
245 - #sizer.AddStretchSpacer()  
246 - sizer.Add(sizer_colour, 0, wx.ALL, 5)  
247 - sizer.Fit(self)  
248 253
249 - self.__init_menus() 254 + sizer.Fit(self)
250 255
251 self.SetSizer(sizer) 256 self.SetSizer(sizer)
252 self.SetAutoLayout(1) 257 self.SetAutoLayout(1)
253 self.Update() 258 self.Update()
254 self.Refresh() 259 self.Refresh()
255 260
  261 + self.__init_menus()
256 self.__bind_events() 262 self.__bind_events()
257 263
258 def __bind_events(self): 264 def __bind_events(self):
259 ps.Publisher().subscribe(self.ChangeButtonColour, 265 ps.Publisher().subscribe(self.ChangeButtonColour,
260 'Change volume viewer gui colour') 266 'Change volume viewer gui colour')
261 267
  268 +
  269 + def OnButtonRaycasting(self, evt):
  270 + print "menu ray"
  271 + # MENU RELATED TO RAYCASTING TYPES
  272 + self.button_raycasting.PopupMenu(self.menu_raycasting)
  273 +
  274 + def OnButtonView(self, evt):
  275 + print "menu view"
  276 + self.button_view.PopupMenu(self.menu_view)
  277 +
262 def __init_menus(self, pubsub_evt=None): 278 def __init_menus(self, pubsub_evt=None):
263 # MENU RELATED TO RAYCASTING TYPES 279 # MENU RELATED TO RAYCASTING TYPES
264 menu = wx.Menu() 280 menu = wx.Menu()
@@ -279,14 +295,12 @@ class VolumeToolPanel(wx.Panel): @@ -279,14 +295,12 @@ class VolumeToolPanel(wx.Panel):
279 submenu.AppendItem(item) 295 submenu.AppendItem(item)
280 ID_TO_TOOL[id] = name 296 ID_TO_TOOL[id] = name
281 ID_TO_TOOL_ITEM[id] = item 297 ID_TO_TOOL_ITEM[id] = item
282 - #submenu.Enable(0)  
283 self.submenu_raycasting_tools = submenu 298 self.submenu_raycasting_tools = submenu
284 menu.AppendMenu(RAYCASTING_TOOLS, "Tools", submenu) 299 menu.AppendMenu(RAYCASTING_TOOLS, "Tools", submenu)
285 menu.Enable(RAYCASTING_TOOLS, 0) 300 menu.Enable(RAYCASTING_TOOLS, 0)
286 301
287 self.menu_raycasting = menu 302 self.menu_raycasting = menu
288 menu.Bind(wx.EVT_MENU, self.OnMenuRaycasting) 303 menu.Bind(wx.EVT_MENU, self.OnMenuRaycasting)
289 - self.button_raycasting.SetMenu(menu)  
290 304
291 # VOLUME VIEW ANGLE BUTTON 305 # VOLUME VIEW ANGLE BUTTON
292 menu = wx.Menu() 306 menu = wx.Menu()
@@ -297,7 +311,6 @@ class VolumeToolPanel(wx.Panel): @@ -297,7 +311,6 @@ class VolumeToolPanel(wx.Panel):
297 menu.AppendItem(item) 311 menu.AppendItem(item)
298 menu.Bind(wx.EVT_MENU, self.OnMenuView) 312 menu.Bind(wx.EVT_MENU, self.OnMenuView)
299 self.menu_view = menu 313 self.menu_view = menu
300 - self.button_view.SetMenu(menu)  
301 314
302 self.Fit() 315 self.Fit()
303 self.Update() 316 self.Update()