Commit 1e35898ea879f1a593b6e93855d685793cc9b873

Authored by Paulo Henrique Junqueira Amorim
1 parent 985022bd

ADD: Tool to change slices with left button

Showing 1 changed file with 100 additions and 17 deletions   Show diff stats
invesalius/gui/frame.py
@@ -99,7 +99,9 @@ class Frame(wx.Frame): @@ -99,7 +99,9 @@ class Frame(wx.Frame):
99 t1 = ProjectToolBar(self) 99 t1 = ProjectToolBar(self)
100 #t2 = LayoutToolBar(self) 100 #t2 = LayoutToolBar(self)
101 t3 = ObjectToolBar(self) 101 t3 = ObjectToolBar(self)
  102 + t4 = SliceToolBar(self)
102 else: 103 else:
  104 + t4 = SliceToolBar(self)
103 t3 = ProjectToolBar(self) 105 t3 = ProjectToolBar(self)
104 #t2 = LayoutToolBar(self) 106 #t2 = LayoutToolBar(self)
105 t1 = ObjectToolBar(self) 107 t1 = ObjectToolBar(self)
@@ -119,6 +121,10 @@ class Frame(wx.Frame): @@ -119,6 +121,10 @@ class Frame(wx.Frame):
119 ToolbarPane().Top().Floatable(False). 121 ToolbarPane().Top().Floatable(False).
120 LeftDockable(False).RightDockable(False)) 122 LeftDockable(False).RightDockable(False))
121 123
  124 + aui_manager.AddPane(t4, wx.aui.AuiPaneInfo().
  125 + Name("Slice Toolbar").
  126 + ToolbarPane().Top().Floatable(False).
  127 + LeftDockable(False).RightDockable(False))
122 128
123 aui_manager.Update() 129 aui_manager.Update()
124 130
@@ -290,8 +296,9 @@ class ProjectToolBar(wx.ToolBar): @@ -290,8 +296,9 @@ class ProjectToolBar(wx.ToolBar):
290 def __init__(self, parent): 296 def __init__(self, parent):
291 wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, 297 wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition,
292 wx.DefaultSize, wx.TB_FLAT|wx.TB_NODIVIDER) 298 wx.DefaultSize, wx.TB_FLAT|wx.TB_NODIVIDER)
293 - if sys.platform == 'darwin':  
294 - self.SetToolBitmapSize(wx.Size(32,32)) 299 +
  300 + self.SetToolBitmapSize(wx.Size(32,32))
  301 +
295 self.parent = parent 302 self.parent = parent
296 self.__init_items() 303 self.__init_items()
297 self.__bind_events() 304 self.__bind_events()
@@ -335,13 +342,15 @@ class ProjectToolBar(wx.ToolBar): @@ -335,13 +342,15 @@ class ProjectToolBar(wx.ToolBar):
335 def __bind_events(self): 342 def __bind_events(self):
336 pass 343 pass
337 344
  345 +# ------------------------------------------------------------------------------
  346 +
338 class ObjectToolBar(wx.ToolBar): 347 class ObjectToolBar(wx.ToolBar):
339 # TODO: what will appear in menubar? 348 # TODO: what will appear in menubar?
340 def __init__(self, parent): 349 def __init__(self, parent):
341 wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize, 350 wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize,
342 wx.TB_FLAT|wx.TB_NODIVIDER | wx.TB_DOCKABLE) 351 wx.TB_FLAT|wx.TB_NODIVIDER | wx.TB_DOCKABLE)
343 - if sys.platform == 'darwin':  
344 - self.SetToolBitmapSize(wx.Size(32,32)) 352 +
  353 + self.SetToolBitmapSize(wx.Size(32,32))
345 354
346 self.parent = parent 355 self.parent = parent
347 self.__init_items() 356 self.__init_items()
@@ -369,28 +378,28 @@ class ObjectToolBar(wx.ToolBar): @@ -369,28 +378,28 @@ class ObjectToolBar(wx.ToolBar):
369 BMP_CONTRAST = wx.Bitmap("../icons/tool_contrast.png", wx.BITMAP_TYPE_PNG) 378 BMP_CONTRAST = wx.Bitmap("../icons/tool_contrast.png", wx.BITMAP_TYPE_PNG)
370 379
371 380
372 - self.AddLabelTool(1, "Zoom in image", BMP_ZOOM, kind = wx.ITEM_CHECK)  
373 - self.AddLabelTool(2, "Zoom out image", BMP_ZOOM_SELECT, kind = wx.ITEM_CHECK)  
374 - self.AddLabelTool(3, "Rotate image", BMP_ROTATE, kind = wx.ITEM_CHECK)  
375 - self.AddLabelTool(4, "Translate image", BMP_TRANSLATE, kind = wx.ITEM_CHECK)  
376 - self.AddLabelTool(5, "Bright and contrast adjustment", BMP_CONTRAST, kind = wx.ITEM_CHECK) 381 + self.AddLabelTool(0, "Zoom in image", BMP_ZOOM, kind = wx.ITEM_CHECK)
  382 + self.AddLabelTool(1, "Zoom out image", BMP_ZOOM_SELECT, kind = wx.ITEM_CHECK)
  383 + self.AddLabelTool(2, "Rotate image", BMP_ROTATE, kind = wx.ITEM_CHECK)
  384 + self.AddLabelTool(3, "Translate image", BMP_TRANSLATE, kind = wx.ITEM_CHECK)
  385 + self.AddLabelTool(4, "Bright and contrast adjustment", BMP_CONTRAST, kind = wx.ITEM_CHECK)
377 386
378 - self.Bind(wx.EVT_TOOL, self.OnClick)  
379 self.Realize() 387 self.Realize()
380 -  
381 - self.states = {1:"Set Zoom Mode", 2:"Set Zoom Select Mode",  
382 - 3:"Set Spin Mode", 4:"Set Pan Mode",  
383 - 5: "Bright and contrast adjustment"} 388 +
  389 + self.states = {0:"Set Zoom Mode", 1:"Set Zoom Select Mode",
  390 + 2:"Set Spin Mode", 3:"Set Pan Mode",
  391 + 4: "Bright and contrast adjustment"}
384 392
385 def __bind_events(self): 393 def __bind_events(self):
386 - pass 394 + self.Bind(wx.EVT_TOOL, self.OnClick)
  395 + ps.Publisher().subscribe(self.UnToggleAllItem, 'UnToogle All Object Item')
387 396
388 def OnClick(self, evt): 397 def OnClick(self, evt):
389 398
390 id = evt.GetId() 399 id = evt.GetId()
391 exist_enable_state = 0 400 exist_enable_state = 0
392 401
393 - for x in xrange(1,6): 402 + for x in xrange(0,len(self.states)):
394 #necessary if the usurio enable another state 403 #necessary if the usurio enable another state
395 #with a longer allow, disable the previous state 404 #with a longer allow, disable the previous state
396 state = self.GetToolState(x) 405 state = self.GetToolState(x)
@@ -403,9 +412,83 @@ class ObjectToolBar(wx.ToolBar): @@ -403,9 +412,83 @@ class ObjectToolBar(wx.ToolBar):
403 #Not exist's tool enbled, change to default state 412 #Not exist's tool enbled, change to default state
404 if not (exist_enable_state): 413 if not (exist_enable_state):
405 ps.Publisher().sendMessage('Set Editor Mode') 414 ps.Publisher().sendMessage('Set Editor Mode')
  415 +
  416 + ps.Publisher().sendMessage('UnToogle All Slice Item')
  417 + evt.Skip()
  418 +
  419 +
  420 + def UnToggleAllItem(self, pubsub_evt):
  421 + for x in xrange(0,len(self.states)):
  422 + #necessary if the usurio enable another state
  423 + #with a longer allow, disable the previous state
  424 + state = self.GetToolState(x)
  425 + if not (x == id) and (state == True):
  426 + self.ToggleTool(x, False)
  427 +
  428 +# ------------------------------------------------------------------------------
  429 +
  430 +class SliceToolBar(wx.ToolBar):
  431 + # TODO: what will appear in menubar?
  432 + def __init__(self, parent):
  433 + wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT|wx.TB_NODIVIDER)
  434 +
  435 + self.SetToolBitmapSize(wx.Size(32,32))
406 436
  437 + self.parent = parent
  438 + self.__init_items()
  439 + self.__bind_events()
  440 +
  441 + def __init_items(self):
  442 + if sys.platform == 'darwin':
  443 + BMP_SLICE = wx.Bitmap("../icons/slice_original.png",
  444 + wx.BITMAP_TYPE_PNG)
  445 + else:
  446 + BMP_SLICE = wx.Bitmap("../icons/slice.png",
  447 + wx.BITMAP_TYPE_PNG)
  448 +
  449 + self.AddLabelTool(0, "Change Slice", BMP_SLICE, kind = wx.ITEM_CHECK)
  450 +
  451 + self.Realize()
  452 +
  453 + self.states = {0:"Set Change Slice Mode"}
  454 +
  455 + def __bind_events(self):
  456 + self.Bind(wx.EVT_TOOL, self.OnClick)
  457 + ps.Publisher().subscribe(self.UnToggleAllItem, "UnToogle All Slice Item")
  458 +
  459 + def OnClick(self, evt):
  460 +
  461 + id = evt.GetId()
  462 + exist_enable_state = 0
  463 +
  464 + for x in xrange(0,len(self.states)):
  465 + #necessary if the usurio enable another state
  466 + #with a longer allow, disable the previous state
  467 + state = self.GetToolState(x)
  468 + if not (x == id) and (state == True):
  469 + self.ToggleTool(x, False)
  470 + elif(state == True) and (id == x):
  471 + ps.Publisher().sendMessage(self.states[x])
  472 + exist_enable_state = 1
  473 +
  474 + #Not exist's tool enbled, change to default state
  475 + if not (exist_enable_state):
  476 + ps.Publisher().sendMessage('Set Editor Mode')
  477 +
  478 + ps.Publisher().sendMessage('UnToogle All Object Item')
  479 +
407 evt.Skip() 480 evt.Skip()
408 481
  482 + def UnToggleAllItem(self, pubsub_evt):
  483 + for x in xrange(0, len(self.states)):
  484 + #necessary if the usurio enable another state
  485 + #with a longer allow, disable the previous state
  486 + state = self.GetToolState(x)
  487 + if not (x == id) and (state == True):
  488 + self.ToggleTool(x, False)
  489 +
  490 +# ------------------------------------------------------------------------------
  491 +
409 class LayoutToolBar(wx.ToolBar): 492 class LayoutToolBar(wx.ToolBar):
410 # TODO: what will appear in menubar? 493 # TODO: what will appear in menubar?
411 def __init__(self, parent): 494 def __init__(self, parent):
@@ -427,4 +510,4 @@ class LayoutToolBar(wx.ToolBar): @@ -427,4 +510,4 @@ class LayoutToolBar(wx.ToolBar):
427 self.Realize() 510 self.Realize()
428 511
429 def __bind_events(self): 512 def __bind_events(self):
430 - pass 513 - pass
  514 + pass
431 \ No newline at end of file 515 \ No newline at end of file