Commit 9ea636e5642af91c5164934cac1dbceeb58b46d5
1 parent
ed221684
Exists in
master
and in
68 other branches
FIX: Back to normal toolbar
Showing
1 changed file
with
124 additions
and
69 deletions
Show diff stats
invesalius/gui/frame.py
| @@ -22,7 +22,6 @@ import sys | @@ -22,7 +22,6 @@ import sys | ||
| 22 | 22 | ||
| 23 | import wx | 23 | import wx |
| 24 | import wx.aui | 24 | import wx.aui |
| 25 | -import wx.lib.agw.aui as aui | ||
| 26 | import wx.lib.pubsub as ps | 25 | import wx.lib.pubsub as ps |
| 27 | 26 | ||
| 28 | import constants as const | 27 | import constants as const |
| @@ -316,12 +315,13 @@ class TaskBarIcon(wx.TaskBarIcon): | @@ -316,12 +315,13 @@ class TaskBarIcon(wx.TaskBarIcon): | ||
| 316 | 315 | ||
| 317 | # ------------------------------------------------------------------ | 316 | # ------------------------------------------------------------------ |
| 318 | 317 | ||
| 319 | -class ProjectToolBar(aui.AuiToolBar): | 318 | +class ProjectToolBar(wx.ToolBar): |
| 320 | def __init__(self, parent): | 319 | def __init__(self, parent): |
| 321 | - aui.AuiToolBar.__init__(self, parent, -1, wx.DefaultPosition, | ||
| 322 | - wx.DefaultSize, aui.AUI_TB_DEFAULT_STYLE) | 320 | + wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, |
| 321 | + wx.DefaultSize, | ||
| 322 | + wx.TB_FLAT|wx.TB_NODIVIDER | wx.TB_DOCKABLE) | ||
| 323 | 323 | ||
| 324 | - self.SetToolBitmapSize(wx.Size(16,16)) | 324 | + self.SetToolBitmapSize(wx.Size(32,32)) |
| 325 | 325 | ||
| 326 | self.parent = parent | 326 | self.parent = parent |
| 327 | 327 | ||
| @@ -342,19 +342,42 @@ class ProjectToolBar(aui.AuiToolBar): | @@ -342,19 +342,42 @@ class ProjectToolBar(aui.AuiToolBar): | ||
| 342 | BMP_PHOTO = wx.Bitmap("../icons/tool_photo.png", | 342 | BMP_PHOTO = wx.Bitmap("../icons/tool_photo.png", |
| 343 | wx.BITMAP_TYPE_PNG) | 343 | wx.BITMAP_TYPE_PNG) |
| 344 | 344 | ||
| 345 | - self.AddSimpleTool(ID_FILE_IMPORT, | 345 | + if sys.platform == 'darwin': |
| 346 | + BMP_IMPORT = wx.Bitmap("../icons/file_import_original.png", | ||
| 347 | + wx.BITMAP_TYPE_PNG) | ||
| 348 | + BMP_NET = wx.Bitmap("../icons/file_from_internet_original.png", | ||
| 349 | + wx.BITMAP_TYPE_PNG) | ||
| 350 | + BMP_SAVE = wx.Bitmap("../icons/file_save_original.png", | ||
| 351 | + wx.BITMAP_TYPE_PNG) | ||
| 352 | + BMP_PRINT = wx.Bitmap("../icons/print_original.png", | ||
| 353 | + wx.BITMAP_TYPE_PNG) | ||
| 354 | + BMP_PHOTO = wx.Bitmap("../icons/tool_photo_original.png", | ||
| 355 | + wx.BITMAP_TYPE_PNG) | ||
| 356 | + else: | ||
| 357 | + BMP_IMPORT = wx.Bitmap("../icons/file_import.png", | ||
| 358 | + wx.BITMAP_TYPE_PNG) | ||
| 359 | + BMP_NET = wx.Bitmap("../icons/file_from_internet.png", | ||
| 360 | + wx.BITMAP_TYPE_PNG) | ||
| 361 | + BMP_SAVE = wx.Bitmap("../icons/file_save.png", | ||
| 362 | + wx.BITMAP_TYPE_PNG) | ||
| 363 | + BMP_PRINT = wx.Bitmap("../icons/print.png", | ||
| 364 | + wx.BITMAP_TYPE_PNG) | ||
| 365 | + BMP_PHOTO = wx.Bitmap("../icons/tool_photo.png", | ||
| 366 | + wx.BITMAP_TYPE_PNG) | ||
| 367 | + | ||
| 368 | + self.AddLabelTool(ID_FILE_IMPORT, | ||
| 346 | "Import medical image...", | 369 | "Import medical image...", |
| 347 | BMP_IMPORT) | 370 | BMP_IMPORT) |
| 348 | - self.AddSimpleTool(ID_FILE_LOAD_INTERNET, | 371 | + self.AddLabelTool(ID_FILE_LOAD_INTERNET, |
| 349 | "Load medical image...", | 372 | "Load medical image...", |
| 350 | BMP_NET) | 373 | BMP_NET) |
| 351 | - self.AddSimpleTool(ID_FILE_SAVE, | 374 | + self.AddLabelTool(ID_FILE_SAVE, |
| 352 | "Save InVesalius project", | 375 | "Save InVesalius project", |
| 353 | BMP_SAVE) | 376 | BMP_SAVE) |
| 354 | - self.AddSimpleTool(ID_FILE_PHOTO, | 377 | + self.AddLabelTool(ID_FILE_PHOTO, |
| 355 | "Take photo of screen", | 378 | "Take photo of screen", |
| 356 | BMP_PHOTO) | 379 | BMP_PHOTO) |
| 357 | - self.AddSimpleTool(ID_FILE_PRINT, | 380 | + self.AddLabelTool(ID_FILE_PRINT, |
| 358 | "Print medical image...", | 381 | "Print medical image...", |
| 359 | BMP_PRINT) | 382 | BMP_PRINT) |
| 360 | 383 | ||
| @@ -365,12 +388,13 @@ class ProjectToolBar(aui.AuiToolBar): | @@ -365,12 +388,13 @@ class ProjectToolBar(aui.AuiToolBar): | ||
| 365 | 388 | ||
| 366 | # ------------------------------------------------------------------ | 389 | # ------------------------------------------------------------------ |
| 367 | 390 | ||
| 368 | -class ObjectToolBar(aui.AuiToolBar): | 391 | +class ObjectToolBar(wx.ToolBar): |
| 369 | def __init__(self, parent): | 392 | def __init__(self, parent): |
| 370 | - aui.AuiToolBar.__init__(self, parent, -1, wx.DefaultPosition, | ||
| 371 | - wx.DefaultSize, aui.AUI_TB_DEFAULT_STYLE) | ||
| 372 | - self.SetToolBitmapSize(wx.Size(16,16)) | 393 | + wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, |
| 394 | + wx.DefaultSize, | ||
| 395 | + wx.TB_FLAT|wx.TB_NODIVIDER | wx.TB_DOCKABLE) | ||
| 373 | 396 | ||
| 397 | + self.SetToolBitmapSize(wx.Size(32,32)) | ||
| 374 | self.parent = parent | 398 | self.parent = parent |
| 375 | 399 | ||
| 376 | self.__init_items() | 400 | self.__init_items() |
| @@ -379,40 +403,51 @@ class ObjectToolBar(aui.AuiToolBar): | @@ -379,40 +403,51 @@ class ObjectToolBar(aui.AuiToolBar): | ||
| 379 | 403 | ||
| 380 | def __init_items(self): | 404 | def __init_items(self): |
| 381 | 405 | ||
| 382 | - | ||
| 383 | - BMP_ROTATE = wx.Bitmap("../icons/tool_rotate.gif", | ||
| 384 | - wx.BITMAP_TYPE_GIF) | ||
| 385 | - BMP_MOVE = wx.Bitmap("../icons/tool_translate.gif", | ||
| 386 | - wx.BITMAP_TYPE_GIF) | ||
| 387 | - BMP_ZOOM = wx.Bitmap("../icons/tool_zoom.png", | ||
| 388 | - wx.BITMAP_TYPE_PNG) | ||
| 389 | - BMP_ZOOM_SELECT = wx.Bitmap("../icons/tool_zoom_select.png", | ||
| 390 | - wx.BITMAP_TYPE_PNG) | ||
| 391 | - BMP_CONTRAST = wx.Bitmap("../icons/tool_contrast.png", | 406 | + if sys.platform == 'darwin': |
| 407 | + BMP_ROTATE = wx.Bitmap("../icons/tool_rotate_original.gif", | ||
| 408 | + wx.BITMAP_TYPE_GIF) | ||
| 409 | + BMP_MOVE =wx.Bitmap("../icons/tool_translate_original.png", | ||
| 410 | + wx.BITMAP_TYPE_PNG) | ||
| 411 | + BMP_ZOOM = wx.Bitmap("../icons/tool_zoom_original.png", | ||
| 392 | wx.BITMAP_TYPE_PNG) | 412 | wx.BITMAP_TYPE_PNG) |
| 393 | - | 413 | + BMP_ZOOM_SELECT = wx.Bitmap("../icons/tool_zoom_select_original.png", |
| 414 | + wx.BITMAP_TYPE_PNG) | ||
| 415 | + BMP_CONTRAST = wx.Bitmap("../icons/tool_contrast.png", | ||
| 416 | + wx.BITMAP_TYPE_PNG) | ||
| 417 | + else: | ||
| 418 | + | ||
| 419 | + BMP_ROTATE = wx.Bitmap("../icons/tool_rotate.gif", | ||
| 420 | + wx.BITMAP_TYPE_GIF) | ||
| 421 | + BMP_MOVE = wx.Bitmap("../icons/tool_translate.gif", | ||
| 422 | + wx.BITMAP_TYPE_GIF) | ||
| 423 | + BMP_ZOOM = wx.Bitmap("../icons/tool_zoom.png", | ||
| 424 | + wx.BITMAP_TYPE_PNG) | ||
| 425 | + BMP_ZOOM_SELECT = wx.Bitmap("../icons/tool_zoom_select.png", | ||
| 426 | + wx.BITMAP_TYPE_PNG) | ||
| 427 | + BMP_CONTRAST = wx.Bitmap("../icons/tool_contrast.png", | ||
| 428 | + wx.BITMAP_TYPE_PNG) | ||
| 394 | 429 | ||
| 395 | - self.AddSimpleTool(ID_ZOOM, | 430 | + self.AddLabelTool(ID_ZOOM, |
| 396 | "Zoom", | 431 | "Zoom", |
| 397 | BMP_ZOOM, | 432 | BMP_ZOOM, |
| 398 | - kind = aui.ITEM_RADIO) | 433 | + kind = wx.ITEM_CHECK) |
| 399 | 434 | ||
| 400 | - self.AddSimpleTool(ID_ZOOM_SELECT, | 435 | + self.AddLabelTool(ID_ZOOM_SELECT, |
| 401 | "Zoom based on selection", | 436 | "Zoom based on selection", |
| 402 | BMP_ZOOM_SELECT, | 437 | BMP_ZOOM_SELECT, |
| 403 | - kind = aui.ITEM_RADIO) | 438 | + kind = wx.ITEM_CHECK) |
| 404 | 439 | ||
| 405 | - self.AddSimpleTool(ID_ROTATE, | 440 | + self.AddLabelTool(ID_ROTATE, |
| 406 | "Rotate", BMP_ROTATE, | 441 | "Rotate", BMP_ROTATE, |
| 407 | - kind = aui.ITEM_RADIO) | 442 | + kind = wx.ITEM_CHECK) |
| 408 | 443 | ||
| 409 | - self.AddSimpleTool(ID_MOVE, | 444 | + self.AddLabelTool(ID_MOVE, |
| 410 | "Move", BMP_MOVE, | 445 | "Move", BMP_MOVE, |
| 411 | - kind = aui.ITEM_RADIO) | 446 | + kind = wx.ITEM_CHECK) |
| 412 | 447 | ||
| 413 | - self.AddSimpleTool(ID_CONTRAST, | 448 | + self.AddLabelTool(ID_CONTRAST, |
| 414 | "Window and Level", BMP_CONTRAST, | 449 | "Window and Level", BMP_CONTRAST, |
| 415 | - kind = aui.ITEM_RADIO) | 450 | + kind = wx.ITEM_CHECK) |
| 416 | self.Realize() | 451 | self.Realize() |
| 417 | 452 | ||
| 418 | 453 | ||
| @@ -424,42 +459,41 @@ class ObjectToolBar(aui.AuiToolBar): | @@ -424,42 +459,41 @@ class ObjectToolBar(aui.AuiToolBar): | ||
| 424 | 'Untoggle object toolbar items') | 459 | 'Untoggle object toolbar items') |
| 425 | 460 | ||
| 426 | def OnClick(self, evt): | 461 | def OnClick(self, evt): |
| 427 | - print "OnClick", evt.GetId() | ||
| 428 | id = evt.GetId() | 462 | id = evt.GetId() |
| 429 | - state = self.GetToolToggled(id) | ||
| 430 | - label = self.GetToolLabel(id) | ||
| 431 | - | ||
| 432 | - #if id != ID_ZOOM: | ||
| 433 | - # print "Toggled zoom off" | ||
| 434 | - # self.ToggleTool(ID_ZOOM, 0) | 463 | + state = self.GetToolState(id) |
| 435 | 464 | ||
| 436 | if state: | 465 | if state: |
| 437 | ps.Publisher().sendMessage(('Set interaction mode', | 466 | ps.Publisher().sendMessage(('Set interaction mode', |
| 438 | MODE_BY_ID[id])) | 467 | MODE_BY_ID[id])) |
| 468 | + ps.Publisher().sendMessage('Untoggle slice toolbar items') | ||
| 439 | else: | 469 | else: |
| 440 | ps.Publisher().sendMessage(('Set interaction mode', | 470 | ps.Publisher().sendMessage(('Set interaction mode', |
| 441 | - MODE_SLICE_EDITOR)) | ||
| 442 | - ps.Publisher().sendMessage('Untoggle slice toolbar items') | 471 | + const.MODE_SLICE_EDITOR)) |
| 472 | + | ||
| 443 | 473 | ||
| 444 | - for id in OBJ_TOOLS: | ||
| 445 | - print "-- id: %d, state: %d", id, self.GetToolToggled(id) | ||
| 446 | 474 | ||
| 447 | - | 475 | + for item in OBJ_TOOLS: |
| 476 | + state = self.GetToolState(item) | ||
| 477 | + if state and (item != id): | ||
| 478 | + self.ToggleTool(item, False) | ||
| 479 | + | ||
| 448 | evt.Skip() | 480 | evt.Skip() |
| 449 | 481 | ||
| 450 | - def UntoggleAllItems(self, pubsub_evt): | 482 | + def UntoggleAllItems(self, pubsub_evt=None): |
| 451 | for id in OBJ_TOOLS: | 483 | for id in OBJ_TOOLS: |
| 452 | - state = self.GetToolToggled(id) | 484 | + state = self.GetToolState(id) |
| 453 | if state: | 485 | if state: |
| 454 | self.ToggleTool(id, False) | 486 | self.ToggleTool(id, False) |
| 455 | 487 | ||
| 456 | # ------------------------------------------------------------------- | 488 | # ------------------------------------------------------------------- |
| 457 | 489 | ||
| 458 | -class SliceToolBar(aui.AuiToolBar): | 490 | +class SliceToolBar(wx.ToolBar): |
| 459 | def __init__(self, parent): | 491 | def __init__(self, parent): |
| 460 | - aui.AuiToolBar.__init__(self, parent, -1, wx.DefaultPosition, | ||
| 461 | - wx.DefaultSize, aui.AUI_TB_DEFAULT_STYLE) | ||
| 462 | - self.SetToolBitmapSize(wx.Size(16,16)) | 492 | + wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, |
| 493 | + wx.DefaultSize, | ||
| 494 | + wx.TB_FLAT|wx.TB_NODIVIDER | wx.TB_DOCKABLE) | ||
| 495 | + | ||
| 496 | + self.SetToolBitmapSize(wx.Size(32,32)) | ||
| 463 | 497 | ||
| 464 | self.parent = parent | 498 | self.parent = parent |
| 465 | self.__init_items() | 499 | self.__init_items() |
| @@ -467,10 +501,15 @@ class SliceToolBar(aui.AuiToolBar): | @@ -467,10 +501,15 @@ class SliceToolBar(aui.AuiToolBar): | ||
| 467 | self.__bind_events_wx() | 501 | self.__bind_events_wx() |
| 468 | 502 | ||
| 469 | def __init_items(self): | 503 | def __init_items(self): |
| 470 | - BMP_SLICE = wx.Bitmap("../icons/slice.png", | ||
| 471 | - wx.BITMAP_TYPE_PNG) | ||
| 472 | - self.AddSimpleTool(ID_SLICE_SCROLL, "Scroll slice", | ||
| 473 | - BMP_SLICE, kind = aui.ITEM_RADIO) | 504 | + if sys.platform == 'darwin': |
| 505 | + BMP_SLICE = wx.Bitmap("../icons/slice_original.png", | ||
| 506 | + wx.BITMAP_TYPE_PNG) | ||
| 507 | + else: | ||
| 508 | + BMP_SLICE = wx.Bitmap("../icons/slice.png", | ||
| 509 | + wx.BITMAP_TYPE_PNG) | ||
| 510 | + | ||
| 511 | + self.AddLabelTool(ID_SLICE_SCROLL, "Scroll slice", | ||
| 512 | + BMP_SLICE, kind = wx.ITEM_CHECK) | ||
| 474 | 513 | ||
| 475 | self.Realize() | 514 | self.Realize() |
| 476 | 515 | ||
| @@ -484,47 +523,63 @@ class SliceToolBar(aui.AuiToolBar): | @@ -484,47 +523,63 @@ class SliceToolBar(aui.AuiToolBar): | ||
| 484 | def OnClick(self, evt): | 523 | def OnClick(self, evt): |
| 485 | 524 | ||
| 486 | id = evt.GetId() | 525 | id = evt.GetId() |
| 487 | - state = self.GetToolToggled(id) | ||
| 488 | - label = self.GetToolLabel(id) | 526 | + state = self.GetToolState(id) |
| 489 | 527 | ||
| 490 | if state: | 528 | if state: |
| 491 | ps.Publisher().sendMessage(('Set interaction mode', | 529 | ps.Publisher().sendMessage(('Set interaction mode', |
| 492 | SLICE_MODE_BY_ID[id])) | 530 | SLICE_MODE_BY_ID[id])) |
| 531 | + ps.Publisher().sendMessage('Untoggle object toolbar items') | ||
| 493 | else: | 532 | else: |
| 494 | ps.Publisher().sendMessage(('Set interaction mode', | 533 | ps.Publisher().sendMessage(('Set interaction mode', |
| 495 | const.MODE_SLICE_EDITOR)) | 534 | const.MODE_SLICE_EDITOR)) |
| 496 | - ps.Publisher().sendMessage('Untoggle object toolbar items') | 535 | + |
| 536 | + | ||
| 537 | + for item in SLICE_TOOLS: | ||
| 538 | + state = self.GetToolState(item) | ||
| 539 | + if state and (item != id): | ||
| 540 | + self.ToggleTool(item, False) | ||
| 497 | 541 | ||
| 498 | evt.Skip() | 542 | evt.Skip() |
| 499 | 543 | ||
| 500 | 544 | ||
| 501 | def UntoggleAllItem(self, pubsub_evt): | 545 | def UntoggleAllItem(self, pubsub_evt): |
| 502 | for id in SLICE_TOOLS: | 546 | for id in SLICE_TOOLS: |
| 503 | - state = self.GetToolToggled(id) | 547 | + state = self.GetToolState(id) |
| 504 | if state: | 548 | if state: |
| 505 | self.ToggleTool(id, False) | 549 | self.ToggleTool(id, False) |
| 506 | 550 | ||
| 507 | # --------------------------------------------------------------------- | 551 | # --------------------------------------------------------------------- |
| 508 | 552 | ||
| 509 | -class LayoutToolBar(aui.AuiToolBar): | 553 | +class LayoutToolBar(wx.ToolBar): |
| 510 | # TODO: what will appear in menubar? | 554 | # TODO: what will appear in menubar? |
| 511 | def __init__(self, parent): | 555 | def __init__(self, parent): |
| 512 | - aui.AuiToolBar.__init__(self, parent, -1, wx.DefaultPosition, | ||
| 513 | - wx.DefaultSize, aui.AUI_TB_DEFAULT_STYLE) | 556 | + wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, |
| 557 | + wx.DefaultSize, | ||
| 558 | + wx.TB_FLAT|wx.TB_NODIVIDER | wx.TB_DOCKABLE) | ||
| 514 | 559 | ||
| 515 | - self.SetToolBitmapSize(wx.Size(16,16)) | 560 | + self.SetToolBitmapSize(wx.Size(32,32)) |
| 516 | 561 | ||
| 517 | self.parent = parent | 562 | self.parent = parent |
| 518 | self.__init_items() | 563 | self.__init_items() |
| 519 | self.__bind_events() | 564 | self.__bind_events() |
| 520 | 565 | ||
| 521 | def __init_items(self): | 566 | def __init_items(self): |
| 522 | - BMP_ROTATE = wx.Bitmap("../icons/layout_data_only.gif", | 567 | + |
| 568 | + if sys.platform == 'darwin': | ||
| 569 | + BMP_WITHOUT_MENU =\ | ||
| 570 | + wx.Bitmap("../icons/layout_data_only_original.gif", | ||
| 523 | wx.BITMAP_TYPE_GIF) | 571 | wx.BITMAP_TYPE_GIF) |
| 524 | - BMP_TRANSLATE = wx.Bitmap("../icons/layout_full.gif", | 572 | + BMP_WITH_MENU = wx.Bitmap("../icons/layout_full_original.gif", |
| 525 | wx.BITMAP_TYPE_GIF) | 573 | wx.BITMAP_TYPE_GIF) |
| 526 | - self.AddSimpleTool(101, "Rotate image", BMP_ROTATE) | ||
| 527 | - self.AddSimpleTool(101, "Translate image", BMP_TRANSLATE) | 574 | + |
| 575 | + else: | ||
| 576 | + BMP_WITHOUT_MENU = wx.Bitmap("../icons/layout_data_only.gif", | ||
| 577 | + wx.BITMAP_TYPE_GIF) | ||
| 578 | + BMP_WITH_MENU = wx.Bitmap("../icons/layout_full.gif", | ||
| 579 | + wx.BITMAP_TYPE_GIF) | ||
| 580 | + | ||
| 581 | + self.AddLabelTool(101, "Rotate image", BMP_WITHOUT_MENU) | ||
| 582 | + self.AddLabelTool(101, "Translate image", BMP_WITH_MENU) | ||
| 528 | 583 | ||
| 529 | self.Realize() | 584 | self.Realize() |
| 530 | 585 |