Commit 1e35898ea879f1a593b6e93855d685793cc9b873
1 parent
985022bd
Exists in
master
and in
68 other branches
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 | 99 | t1 = ProjectToolBar(self) |
| 100 | 100 | #t2 = LayoutToolBar(self) |
| 101 | 101 | t3 = ObjectToolBar(self) |
| 102 | + t4 = SliceToolBar(self) | |
| 102 | 103 | else: |
| 104 | + t4 = SliceToolBar(self) | |
| 103 | 105 | t3 = ProjectToolBar(self) |
| 104 | 106 | #t2 = LayoutToolBar(self) |
| 105 | 107 | t1 = ObjectToolBar(self) |
| ... | ... | @@ -119,6 +121,10 @@ class Frame(wx.Frame): |
| 119 | 121 | ToolbarPane().Top().Floatable(False). |
| 120 | 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 | 129 | aui_manager.Update() |
| 124 | 130 | |
| ... | ... | @@ -290,8 +296,9 @@ class ProjectToolBar(wx.ToolBar): |
| 290 | 296 | def __init__(self, parent): |
| 291 | 297 | wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, |
| 292 | 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 | 302 | self.parent = parent |
| 296 | 303 | self.__init_items() |
| 297 | 304 | self.__bind_events() |
| ... | ... | @@ -335,13 +342,15 @@ class ProjectToolBar(wx.ToolBar): |
| 335 | 342 | def __bind_events(self): |
| 336 | 343 | pass |
| 337 | 344 | |
| 345 | +# ------------------------------------------------------------------------------ | |
| 346 | + | |
| 338 | 347 | class ObjectToolBar(wx.ToolBar): |
| 339 | 348 | # TODO: what will appear in menubar? |
| 340 | 349 | def __init__(self, parent): |
| 341 | 350 | wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize, |
| 342 | 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 | 355 | self.parent = parent |
| 347 | 356 | self.__init_items() |
| ... | ... | @@ -369,28 +378,28 @@ class ObjectToolBar(wx.ToolBar): |
| 369 | 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 | 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 | 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 | 397 | def OnClick(self, evt): |
| 389 | 398 | |
| 390 | 399 | id = evt.GetId() |
| 391 | 400 | exist_enable_state = 0 |
| 392 | 401 | |
| 393 | - for x in xrange(1,6): | |
| 402 | + for x in xrange(0,len(self.states)): | |
| 394 | 403 | #necessary if the usurio enable another state |
| 395 | 404 | #with a longer allow, disable the previous state |
| 396 | 405 | state = self.GetToolState(x) |
| ... | ... | @@ -403,9 +412,83 @@ class ObjectToolBar(wx.ToolBar): |
| 403 | 412 | #Not exist's tool enbled, change to default state |
| 404 | 413 | if not (exist_enable_state): |
| 405 | 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 | 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 | 492 | class LayoutToolBar(wx.ToolBar): |
| 410 | 493 | # TODO: what will appear in menubar? |
| 411 | 494 | def __init__(self, parent): |
| ... | ... | @@ -427,4 +510,4 @@ class LayoutToolBar(wx.ToolBar): |
| 427 | 510 | self.Realize() |
| 428 | 511 | |
| 429 | 512 | def __bind_events(self): |
| 430 | 513 | - pass |
| 514 | + pass | |
| 431 | 515 | \ No newline at end of file | ... | ... |