Commit 1e35898ea879f1a593b6e93855d685793cc9b873
1 parent
985022bd
Exists in
master
and in
6 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,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 |