Commit c6e7c193ddc57ac6e423a60a4cb74fa65b25fde3

Authored by tatiana
1 parent c8881dc5

ENH: Removed devil icon... Still need to enhace icons.

invesalius/gui/default_tasks.py
@@ -96,8 +96,8 @@ class Panel(wx.Panel): @@ -96,8 +96,8 @@ class Panel(wx.Panel):
96 size=wx.Size(280, 656)) 96 size=wx.Size(280, 656))
97 97
98 sizer = wx.BoxSizer(wx.VERTICAL) 98 sizer = wx.BoxSizer(wx.VERTICAL)
99 - sizer.Add(UpperTaskPanel(self), 4, wx.EXPAND|wx.GROW)  
100 - sizer.Add(LowerTaskPanel(self), 2, wx.EXPAND|wx.GROW) 99 + sizer.Add(UpperTaskPanel(self), 5, wx.EXPAND|wx.GROW)
  100 + sizer.Add(LowerTaskPanel(self), 3, wx.EXPAND|wx.GROW)
101 101
102 self.SetSizer(sizer) 102 self.SetSizer(sizer)
103 103
@@ -105,7 +105,7 @@ class Panel(wx.Panel): @@ -105,7 +105,7 @@ class Panel(wx.Panel):
105 class LowerTaskPanel(wx.Panel): 105 class LowerTaskPanel(wx.Panel):
106 def __init__(self, parent): 106 def __init__(self, parent):
107 wx.Panel.__init__(self, parent, pos=wx.Point(5, 5), 107 wx.Panel.__init__(self, parent, pos=wx.Point(5, 5),
108 - size=wx.Size(280, 656)) 108 + size=wx.Size(280, 700))
109 109
110 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition, 110 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition,
111 self.GetSize(),fpb.FPB_DEFAULT_STYLE, 111 self.GetSize(),fpb.FPB_DEFAULT_STYLE,
invesalius/gui/frame.py
@@ -80,16 +80,23 @@ class Frame(wx.Frame): @@ -80,16 +80,23 @@ class Frame(wx.Frame):
80 80
81 81
82 # Add toolbars to manager 82 # Add toolbars to manager
83 - aui_manager.AddPane(ToolBar(self), wx.aui.AuiPaneInfo().  
84 - Name("Project Toolbar"). 83 +
  84 + aui_manager.AddPane(ObjectToolBar(self), wx.aui.AuiPaneInfo().
  85 + Name("General Features Toolbar").
85 ToolbarPane().Top().Floatable(False). 86 ToolbarPane().Top().Floatable(False).
86 LeftDockable(False).RightDockable(False)) 87 LeftDockable(False).RightDockable(False))
87 88
88 - aui_manager.AddPane(ToolBar(self), wx.aui.AuiPaneInfo().  
89 - Name("General Features Toolbar"). 89 + #aui_manager.AddPane(LayoutToolBar(self), wx.aui.AuiPaneInfo().
  90 + # Name("Layout Toolbar").
  91 + # ToolbarPane().Top().Floatable(False).
  92 + # LeftDockable(False).RightDockable(False))
  93 +
  94 + aui_manager.AddPane(ProjectToolBar(self), wx.aui.AuiPaneInfo().
  95 + Name("Project Toolbar").
90 ToolbarPane().Top().Floatable(False). 96 ToolbarPane().Top().Floatable(False).
91 LeftDockable(False).RightDockable(False)) 97 LeftDockable(False).RightDockable(False))
92 98
  99 +
93 aui_manager.Update() 100 aui_manager.Update()
94 101
95 self.perspective_all = aui_manager.SavePerspective() 102 self.perspective_all = aui_manager.SavePerspective()
@@ -246,21 +253,83 @@ class TaskBarIcon(wx.TaskBarIcon): @@ -246,21 +253,83 @@ class TaskBarIcon(wx.TaskBarIcon):
246 253
247 # ------------------------------------------------------------------------------ 254 # ------------------------------------------------------------------------------
248 255
249 -class ToolBar(wx.ToolBar): 256 +class ProjectToolBar(wx.ToolBar):
250 # TODO: what will appear in menubar? 257 # TODO: what will appear in menubar?
251 def __init__(self, parent): 258 def __init__(self, parent):
252 wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT|wx.TB_NODIVIDER) 259 wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT|wx.TB_NODIVIDER)
253 - self.SetToolBitmapSize(wx.Size(16,16)) 260 + self.SetToolBitmapSize(wx.Size(25,25))
254 self.parent = parent 261 self.parent = parent
255 self.__init_items() 262 self.__init_items()
256 self.__bind_events() 263 self.__bind_events()
257 264
258 def __init_items(self): 265 def __init_items(self):
259 - bmp = wx.ArtProvider_GetBitmap(wx.ART_QUESTION, wx.ART_OTHER, wx.Size(16,16))  
260 - self.AddLabelTool(101, "Test", bmp)  
261 - self.AddLabelTool(101, "Test", bmp)  
262 - self.AddLabelTool(101, "Test", bmp)  
263 - self.AddLabelTool(101, "Test", bmp) 266 +
  267 + BMP_IMPORT = wx.Bitmap("../icons/file_import.png", wx.BITMAP_TYPE_PNG)
  268 + BMP_EXPORT = wx.Bitmap("../icons/file_export.png", wx.BITMAP_TYPE_PNG)
  269 + BMP_NET = wx.Bitmap("../icons/file_from_internet.png", wx.BITMAP_TYPE_PNG)
  270 + BMP_SAVE = wx.Bitmap("../icons/file_save.png", wx.BITMAP_TYPE_PNG)
  271 +
  272 + self.AddLabelTool(101, "Import medical image...", BMP_IMPORT)
  273 + self.AddLabelTool(101, "Export data.", BMP_EXPORT)
  274 + self.AddLabelTool(101, "Load medical image...", BMP_NET)
  275 + self.AddLabelTool(101, "Save InVesalius project", BMP_SAVE)
  276 +
  277 + self.Realize()
  278 +
  279 + def __bind_events(self):
  280 + pass
  281 +
  282 +class ObjectToolBar(wx.ToolBar):
  283 + # TODO: what will appear in menubar?
  284 + def __init__(self, parent):
  285 + wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT|wx.TB_NODIVIDER)
  286 + self.SetToolBitmapSize(wx.Size(25,25))
  287 + self.parent = parent
  288 + self.__init_items()
  289 + self.__bind_events()
  290 +
  291 + def __init_items(self):
  292 +
  293 + #BMP_ROTATE = wx.Bitmap("../icons/tool_rotate.gif", wx.BITMAP_TYPE_GIF)
  294 + #BMP_TRANSLATE = wx.Bitmap("../icons/tool_translate.gif", wx.BITMAP_TYPE_GIF)
  295 + BMP_ZOOM = wx.Bitmap("../icons/tool_zoom.png", wx.BITMAP_TYPE_PNG)
  296 + BMP_PHOTO = wx.Bitmap("../icons/tool_photo.png", wx.BITMAP_TYPE_PNG)
  297 + BMP_PRINT = wx.Bitmap("../icons/tool_print.png", wx.BITMAP_TYPE_PNG)
  298 +
  299 + #self.AddLabelTool(101, "Rotate image", BMP_ROTATE)
  300 + #self.AddLabelTool(101, "Translate image", BMP_TRANSLATE)
  301 + self.AddLabelTool(101, "Zoom image", BMP_ZOOM)
  302 + self.AddLabelTool(101, "Take photo of screen", BMP_PHOTO)
  303 + self.AddLabelTool(101, "Print screen", BMP_PRINT)
  304 +
  305 + self.Realize()
  306 +
  307 + def __bind_events(self):
  308 + pass
  309 +
  310 +class LayoutToolBar(wx.ToolBar):
  311 + # TODO: what will appear in menubar?
  312 + def __init__(self, parent):
  313 + wx.ToolBar.__init__(self, parent, -1, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT|wx.TB_NODIVIDER)
  314 + self.SetToolBitmapSize(wx.Size(25,25))
  315 + self.parent = parent
  316 + self.__init_items()
  317 + self.__bind_events()
  318 +
  319 + def __init_items(self):
  320 +
  321 + BMP_ROTATE = wx.Bitmap("../icons/layout_data_only.png", wx.BITMAP_TYPE_PNG)
  322 + BMP_TRANSLATE = wx.Bitmap("../icons/layout_full.png", wx.BITMAP_TYPE_PNG)
  323 + #BMP_ZOOM = wx.Bitmap("../icons/tool_zoom.png", wx.BITMAP_TYPE_PNG)
  324 + #BMP_PHOTO = wx.Bitmap("../icons/tool_photo.png", wx.BITMAP_TYPE_PNG)
  325 + #BMP_PRINT = wx.Bitmap("../icons/tool_print.png", wx.BITMAP_TYPE_PNG)
  326 +
  327 + self.AddLabelTool(101, "Rotate image", BMP_ROTATE)
  328 + self.AddLabelTool(101, "Translate image", BMP_TRANSLATE)
  329 + #self.AddLabelTool(101, "Zoom image", BMP_ZOOM)
  330 + #self.AddLabelTool(101, "Take photo of screen", BMP_PHOTO)
  331 + #self.AddLabelTool(101, "Print screen", BMP_PRINT)
  332 +
264 self.Realize() 333 self.Realize()
265 334
266 def __bind_events(self): 335 def __bind_events(self):
invesalius/gui/task_importer.py
@@ -20,7 +20,6 @@ import os @@ -20,7 +20,6 @@ import os
20 import wx 20 import wx
21 import wx.lib.hyperlink as hl 21 import wx.lib.hyperlink as hl
22 import wx.lib.platebtn as pbtn 22 import wx.lib.platebtn as pbtn
23 -import wx.lib.embeddedimage as emb  
24 23
25 BTN_IMPORT_LOCAL = wx.NewId() 24 BTN_IMPORT_LOCAL = wx.NewId()
26 BTN_IMPORT_PACS = wx.NewId() 25 BTN_IMPORT_PACS = wx.NewId()
@@ -31,44 +30,6 @@ WILDCARD_OPEN = "InVesalius 1 project (*.promed)|*.promed|"\ @@ -31,44 +30,6 @@ WILDCARD_OPEN = "InVesalius 1 project (*.promed)|*.promed|"\
31 "InVesalius 3 project (*.iv3)|*.iv3|"\ 30 "InVesalius 3 project (*.iv3)|*.iv3|"\
32 "All files (*.*)|*.*" 31 "All files (*.*)|*.*"
33 32
34 -  
35 -Devil = emb.PyEmbeddedImage(  
36 - "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABrpJ"  
37 - "REFUWIXtlluMlVcVx3/7u57LzLkMc5gbw2UovFRupQ1INdRkkkrIPDRpLSFREqk8oFKrPhmR"  
38 - "oEkfNLFJ39SQkrZGJGRMarCpVWmlLa2OCjOtpVBmgJnOfc79zHf/tg/nO5PTEQEbE1/6T/45"  
39 - "315n7b3+e+21sjd8iv8zRPPgtKKc9aV8UArxfT0Mf/4lcI+BocMXNME+BT4XQi6UtCqCigJz"  
40 - "oeQNH055cO44uKfB8BTlGwKOqvDW42G49+4FmGrx4Z9uSt98J+988JupwmzFe6mi8NjKroS6"  
41 - "bmOqNbcqKWKtOnpMxbMCrIrH3ERNXr9SrsxOLwatIYMrs8bAvY91Z7q3ZIyz37xU2h/KzO0E"  
42 - "qM2DR6QwWztzu9ZoG81W22ipFQr39XQl4jv2dJlpLKHnC4iZBeTEHCyUMGoW6bQm+j7TbspJ"  
43 - "J55NZ+974KEHkh2dveqNkXln+r35Hw9K+fpdZ+AFSKmKMvX5desSLYZB1XG4MH6d7dtBjYNq"  
44 - "gtDqs2QAoQuhDUFNMjQs2L2uj5iuU3Vdzo+OLi5K2fkEVG4nQGse3IDWFVJyZWGOvkwbw9OT"  
45 - "rO4FrQW0JKgxgdCbBDgQGBIUQU8nDH00zqbObq7lFyiDnIcUdxCgND4kCB3ObtycM4uexd8n"  
46 - "b7Kyw6NrLWgtAq1VoKVBzwqMrEDPgJ6K/ktCzxrIZFyGJm5Q8izWb8zGdDgrl2V5OZZqwIB9"  
47 - "3e3xL9+7tT3eVsjT2SVJrRR4cfj6JcmTb4f88SPYuUHQ2S5wEHz1lZAnL4Scm4dtGUFvAlYY"  
48 - "kJYh2b52pVhyEr+zg7E/wbu3zcAx0DR4ZuuWlSnn0hRIiVDr5/3sqKQ3BdcOaRy4X/Dt34fo"  
49 - "GcFP/hqyOiu4ckBl/3rB0ashiibq85A478+zeWNbSoNnji076mYIgB9Bf097/Mxnt3aknXeu"  
50 - "o2cEepZ6qrMCLQtmZNMyAi0OXgGcgsQvSrwC2HlJUASvIHELEq8Ise1dXLicL02VnEePwh+i"  
51 - "o44jxBmggpRPKwAm7Ovtbkn5ExVkWPdCggxBhhIR1ItOehBa4JchdCT4kT0ARYKUEtmYK8Gf"  
52 - "rtHTnkiZsE+CKoX4IfAEMA4EwEgjNbuzKxLCvzgTLSiRvkD6IN16uwW2RGgCGUhQIptVb8PQ"  
53 - "q1N61OcE9eX9gk3bPW0C2O3BTl3KUQEnpZQGoAmQGkAIuVhMZcSGMNBRanGCqXKUik+OlJak"  
54 - "V1cIIVeA6Tg8DpwU4FJnvTgCSGuGigxCNgwOkuzoIJHLMTo6yrZt2zBNE9M0UdV604yMjLBp"  
55 - "06aPBQvDkKGhIfr6+rBtm9nz57l++DCGJggg3QHXJiA7Df2dUT1A1AUqlLxFD+l56D09qKkU"  
56 - "ALqu33Jnmnbrom72N7q68F0Hz/ZRoQSQhyNVeHYCdn1MgAJzds1Da0niTU7eMdDdCPALBTRF"  
57 - "wbIDFJgD2AyFCnytDL/9EDYsCQBeX5i3ZFxXsC9fvuWCdyOg2W5duYKphCyUHAksXUjb4M0S"  
58 - "/KoEJ5cEOHBqYqZWzrVr5J9//n+SgfkXXySb0pgs2GUHTjX7VeFEFXa9AesVAB9eWyg5lpbQ"  
59 - "8D+8SnVo6BNloOFfHR7GHRtFM1UKNc/y4bVmvzJkK0ANQgXgOPg+PPXutWJ59eoEY0eO4C0s"  
60 - "/MdAjW64lQCvVOKfBw+yqk3lvclq2YenjoMPcBrUX8BABV4ow5sPw9jSbfg9+PVsxR0r2H6Q"  
61 - "M1yG9+4lnJ39rzIgy2X+0t9Pyi2Td8Nw0vKtSbj/u/CzH8Cr12CmDC+VYbYK+6DpOhYgyzBw"  
62 - "8UapoKQM2pVFRvbs4caJE8gwvKOAm6dO8daOHbRU5tCTGv+YqSnXocOC75Tg0Dz0z8L4NHzr"  
63 - "Kuw8BBNR3CUYQOwg7LhHcGZrbyqZM1V1fMZHJpKsO3CAnoEBkmvXEiYSqJZFbXycqZdfZuy5"  
64 - "5wjyC/SkBbO+5OJMTV6GiSpMSphwYXgO3v4bfABYgB3RbQhQgHiDD0FfP5zMpYzOzd2tMcX2"  
65 - "KRY9bHRc18N1HHTTwNB1YoFLulVDmiqX5hbdmZqX/yU8fbW+w0YwaxkbtlpzBmJNImJJaPkK"  
66 - "7F8FhzNJXV2TMuIrErowNAVdUXD9ANcLmK/58mbVtYuWL0dgcBBe9WCxaZfWLb4t6k81f/lz"  
67 - "SQcSgBkJMtPQ8kV4cC3saYEtCmQExCXYAZSK8P5l+PM5uGSBA3gRGxeO00QLqEW/cnkNNENE"  
68 - "NdEQYkTitIhqdGwiYvQKIKR+z/sR3aYdu5Ht3wLdLRoBlSY2oyGgwYaoT3Fb/At4CANJRbmY"  
69 - "kwAAAABJRU5ErkJggg==")  
70 -  
71 -  
72 class TaskPanel(wx.Panel): 33 class TaskPanel(wx.Panel):
73 def __init__(self, parent): 34 def __init__(self, parent):
74 wx.Panel.__init__(self, parent) 35 wx.Panel.__init__(self, parent)
@@ -125,19 +86,24 @@ class InnerTaskPanel(wx.Panel): @@ -125,19 +86,24 @@ class InnerTaskPanel(wx.Panel):
125 link_open_proj.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkOpenProject) 86 link_open_proj.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkOpenProject)
126 87
127 # Image(s) for buttons 88 # Image(s) for buttons
128 - bitmap = Devil.GetBitmap() # 32, 32  
129 - bitmap.SetWidth(20)  
130 - bitmap.SetHeight(20) 89 + BMP_IMPORT = wx.Bitmap("../icons/file_import.png", wx.BITMAP_TYPE_PNG)
  90 + BMP_NET = wx.Bitmap("../icons/file_from_internet.png", wx.BITMAP_TYPE_PNG)
  91 + BMP_NULL = wx.Bitmap("../icons/object_invisible.jpg", wx.BITMAP_TYPE_JPEG)
  92 +
  93 + bmp_list = [BMP_IMPORT, BMP_NET, BMP_NULL]
  94 + for bmp in bmp_list:
  95 + bmp.SetWidth(25)
  96 + bmp.SetHeight(25)
131 97
132 # Buttons related to hyperlinks 98 # Buttons related to hyperlinks
133 button_style = pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG 99 button_style = pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG
134 100
135 button_import_local = pbtn.PlateButton(self, BTN_IMPORT_LOCAL, "", 101 button_import_local = pbtn.PlateButton(self, BTN_IMPORT_LOCAL, "",
136 - bitmap, style=button_style)  
137 - button_import_pacs = pbtn.PlateButton(self, BTN_IMPORT_PACS, "", bitmap, 102 + BMP_IMPORT, style=button_style)
  103 + button_import_pacs = pbtn.PlateButton(self, BTN_IMPORT_PACS, "", BMP_NET,
138 style=button_style) 104 style=button_style)
139 button_open_proj = pbtn.PlateButton(self, BTN_OPEN_PROJECT, "", 105 button_open_proj = pbtn.PlateButton(self, BTN_OPEN_PROJECT, "",
140 - bitmap, style=button_style) 106 + BMP_NULL, style=button_style)
141 107
142 # When using PlaneButton, it is necessary to bind events from parent win 108 # When using PlaneButton, it is necessary to bind events from parent win
143 self.Bind(wx.EVT_BUTTON, self.OnButton) 109 self.Bind(wx.EVT_BUTTON, self.OnButton)
invesalius/gui/task_slice.py
@@ -19,7 +19,6 @@ @@ -19,7 +19,6 @@
19 19
20 import wx 20 import wx
21 import wx.lib.colourselect as csel 21 import wx.lib.colourselect as csel
22 -import wx.lib.embeddedimage as emb  
23 import wx.lib.hyperlink as hl 22 import wx.lib.hyperlink as hl
24 import wx.lib.platebtn as pbtn 23 import wx.lib.platebtn as pbtn
25 import wx.lib.pubsub as ps 24 import wx.lib.pubsub as ps
@@ -46,42 +45,6 @@ MASK_LIST = [] @@ -46,42 +45,6 @@ MASK_LIST = []
46 45
47 OP_LIST = ["Draw", "Erase", "Threshold"] 46 OP_LIST = ["Draw", "Erase", "Threshold"]
48 47
49 -Devil = emb.PyEmbeddedImage(  
50 - "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABrpJ"  
51 - "REFUWIXtlluMlVcVx3/7u57LzLkMc5gbw2UovFRupQ1INdRkkkrIPDRpLSFREqk8oFKrPhmR"  
52 - "oEkfNLFJ39SQkrZGJGRMarCpVWmlLa2OCjOtpVBmgJnOfc79zHf/tg/nO5PTEQEbE1/6T/45"  
53 - "315n7b3+e+21sjd8iv8zRPPgtKKc9aV8UArxfT0Mf/4lcI+BocMXNME+BT4XQi6UtCqCigJz"  
54 - "oeQNH055cO44uKfB8BTlGwKOqvDW42G49+4FmGrx4Z9uSt98J+988JupwmzFe6mi8NjKroS6"  
55 - "bmOqNbcqKWKtOnpMxbMCrIrH3ERNXr9SrsxOLwatIYMrs8bAvY91Z7q3ZIyz37xU2h/KzO0E"  
56 - "qM2DR6QwWztzu9ZoG81W22ipFQr39XQl4jv2dJlpLKHnC4iZBeTEHCyUMGoW6bQm+j7TbspJ"  
57 - "J55NZ+974KEHkh2dveqNkXln+r35Hw9K+fpdZ+AFSKmKMvX5desSLYZB1XG4MH6d7dtBjYNq"  
58 - "gtDqs2QAoQuhDUFNMjQs2L2uj5iuU3Vdzo+OLi5K2fkEVG4nQGse3IDWFVJyZWGOvkwbw9OT"  
59 - "rO4FrQW0JKgxgdCbBDgQGBIUQU8nDH00zqbObq7lFyiDnIcUdxCgND4kCB3ObtycM4uexd8n"  
60 - "b7Kyw6NrLWgtAq1VoKVBzwqMrEDPgJ6K/ktCzxrIZFyGJm5Q8izWb8zGdDgrl2V5OZZqwIB9"  
61 - "3e3xL9+7tT3eVsjT2SVJrRR4cfj6JcmTb4f88SPYuUHQ2S5wEHz1lZAnL4Scm4dtGUFvAlYY"  
62 - "kJYh2b52pVhyEr+zg7E/wbu3zcAx0DR4ZuuWlSnn0hRIiVDr5/3sqKQ3BdcOaRy4X/Dt34fo"  
63 - "GcFP/hqyOiu4ckBl/3rB0ashiibq85A478+zeWNbSoNnji076mYIgB9Bf097/Mxnt3aknXeu"  
64 - "o2cEepZ6qrMCLQtmZNMyAi0OXgGcgsQvSrwC2HlJUASvIHELEq8Ise1dXLicL02VnEePwh+i"  
65 - "o44jxBmggpRPKwAm7Ovtbkn5ExVkWPdCggxBhhIR1ItOehBa4JchdCT4kT0ARYKUEtmYK8Gf"  
66 - "rtHTnkiZsE+CKoX4IfAEMA4EwEgjNbuzKxLCvzgTLSiRvkD6IN16uwW2RGgCGUhQIptVb8PQ"  
67 - "q1N61OcE9eX9gk3bPW0C2O3BTl3KUQEnpZQGoAmQGkAIuVhMZcSGMNBRanGCqXKUik+OlJak"  
68 - "V1cIIVeA6Tg8DpwU4FJnvTgCSGuGigxCNgwOkuzoIJHLMTo6yrZt2zBNE9M0UdV604yMjLBp"  
69 - "06aPBQvDkKGhIfr6+rBtm9nz57l++DCGJggg3QHXJiA7Df2dUT1A1AUqlLxFD+l56D09qKkU"  
70 - "ALqu33Jnmnbrom72N7q68F0Hz/ZRoQSQhyNVeHYCdn1MgAJzds1Da0niTU7eMdDdCPALBTRF"  
71 - "wbIDFJgD2AyFCnytDL/9EDYsCQBeX5i3ZFxXsC9fvuWCdyOg2W5duYKphCyUHAksXUjb4M0S"  
72 - "/KoEJ5cEOHBqYqZWzrVr5J9//n+SgfkXXySb0pgs2GUHTjX7VeFEFXa9AesVAB9eWyg5lpbQ"  
73 - "8D+8SnVo6BNloOFfHR7GHRtFM1UKNc/y4bVmvzJkK0ANQgXgOPg+PPXutWJ59eoEY0eO4C0s"  
74 - "/MdAjW64lQCvVOKfBw+yqk3lvclq2YenjoMPcBrUX8BABV4ow5sPw9jSbfg9+PVsxR0r2H6Q"  
75 - "M1yG9+4lnJ39rzIgy2X+0t9Pyi2Td8Nw0vKtSbj/u/CzH8Cr12CmDC+VYbYK+6DpOhYgyzBw"  
76 - "8UapoKQM2pVFRvbs4caJE8gwvKOAm6dO8daOHbRU5tCTGv+YqSnXocOC75Tg0Dz0z8L4NHzr"  
77 - "Kuw8BBNR3CUYQOwg7LhHcGZrbyqZM1V1fMZHJpKsO3CAnoEBkmvXEiYSqJZFbXycqZdfZuy5"  
78 - "5wjyC/SkBbO+5OJMTV6GiSpMSphwYXgO3v4bfABYgB3RbQhQgHiDD0FfP5zMpYzOzd2tMcX2"  
79 - "KRY9bHRc18N1HHTTwNB1YoFLulVDmiqX5hbdmZqX/yU8fbW+w0YwaxkbtlpzBmJNImJJaPkK"  
80 - "7F8FhzNJXV2TMuIrErowNAVdUXD9ANcLmK/58mbVtYuWL0dgcBBe9WCxaZfWLb4t6k81f/lz"  
81 - "SQcSgBkJMtPQ8kV4cC3saYEtCmQExCXYAZSK8P5l+PM5uGSBA3gRGxeO00QLqEW/cnkNNENE"  
82 - "NdEQYkTitIhqdGwiYvQKIKR+z/sR3aYdu5Ht3wLdLRoBlSY2oyGgwYaoT3Fb/At4CANJRbmY"  
83 - "kwAAAABJRU5ErkJggg==")  
84 -  
85 48
86 class TaskPanel(wx.Panel): 49 class TaskPanel(wx.Panel):
87 def __init__(self, parent): 50 def __init__(self, parent):
@@ -107,15 +70,16 @@ class InnerTaskPanel(wx.Panel): @@ -107,15 +70,16 @@ class InnerTaskPanel(wx.Panel):
107 self.SetAutoLayout(1) 70 self.SetAutoLayout(1)
108 71
109 # Image(s) for buttons 72 # Image(s) for buttons
110 - bitmap = Devil.GetBitmap() # 32, 32  
111 - bitmap.SetWidth(20)  
112 - bitmap.SetHeight(20) 73 + BMP_ADD = wx.Bitmap("../icons/object_add.png", wx.BITMAP_TYPE_PNG)
  74 + BMP_ADD.SetWidth(25)
  75 + BMP_ADD.SetHeight(25)
113 76
114 - # Button for creating new mask  
115 - button_new_mask = pbtn.PlateButton(self, BTN_NEW, "", bitmap, style=\ 77 + # Button for creating new surface
  78 + button_new_mask = pbtn.PlateButton(self, BTN_NEW, "", BMP_ADD, style=\
116 pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG) 79 pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG)
117 self.Bind(wx.EVT_BUTTON, self.OnButton) 80 self.Bind(wx.EVT_BUTTON, self.OnButton)
118 81
  82 +
119 # Fixed hyperlink items 83 # Fixed hyperlink items
120 tooltip = wx.ToolTip("Create mask for slice segmentation and edition") 84 tooltip = wx.ToolTip("Create mask for slice segmentation and edition")
121 link_new_mask = hl.HyperLinkCtrl(self, -1, "Create new mask") 85 link_new_mask = hl.HyperLinkCtrl(self, -1, "Create new mask")
invesalius/gui/task_surface.py
@@ -18,7 +18,6 @@ @@ -18,7 +18,6 @@
18 #-------------------------------------------------------------------------- 18 #--------------------------------------------------------------------------
19 import wx 19 import wx
20 import wx.lib.colourselect as csel 20 import wx.lib.colourselect as csel
21 -import wx.lib.embeddedimage as emb  
22 import wx.lib.hyperlink as hl 21 import wx.lib.hyperlink as hl
23 import wx.lib.platebtn as pbtn 22 import wx.lib.platebtn as pbtn
24 import wx.lib.pubsub as ps 23 import wx.lib.pubsub as ps
@@ -39,42 +38,6 @@ MENU_CIRCLE = wx.NewId() @@ -39,42 +38,6 @@ MENU_CIRCLE = wx.NewId()
39 38
40 OP_LIST = ["Draw", "Erase", "Threshold"] 39 OP_LIST = ["Draw", "Erase", "Threshold"]
41 40
42 -Devil = emb.PyEmbeddedImage(  
43 - "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABrpJ"  
44 - "REFUWIXtlluMlVcVx3/7u57LzLkMc5gbw2UovFRupQ1INdRkkkrIPDRpLSFREqk8oFKrPhmR"  
45 - "oEkfNLFJ39SQkrZGJGRMarCpVWmlLa2OCjOtpVBmgJnOfc79zHf/tg/nO5PTEQEbE1/6T/45"  
46 - "315n7b3+e+21sjd8iv8zRPPgtKKc9aV8UArxfT0Mf/4lcI+BocMXNME+BT4XQi6UtCqCigJz"  
47 - "oeQNH055cO44uKfB8BTlGwKOqvDW42G49+4FmGrx4Z9uSt98J+988JupwmzFe6mi8NjKroS6"  
48 - "bmOqNbcqKWKtOnpMxbMCrIrH3ERNXr9SrsxOLwatIYMrs8bAvY91Z7q3ZIyz37xU2h/KzO0E"  
49 - "qM2DR6QwWztzu9ZoG81W22ipFQr39XQl4jv2dJlpLKHnC4iZBeTEHCyUMGoW6bQm+j7TbspJ"  
50 - "J55NZ+974KEHkh2dveqNkXln+r35Hw9K+fpdZ+AFSKmKMvX5desSLYZB1XG4MH6d7dtBjYNq"  
51 - "gtDqs2QAoQuhDUFNMjQs2L2uj5iuU3Vdzo+OLi5K2fkEVG4nQGse3IDWFVJyZWGOvkwbw9OT"  
52 - "rO4FrQW0JKgxgdCbBDgQGBIUQU8nDH00zqbObq7lFyiDnIcUdxCgND4kCB3ObtycM4uexd8n"  
53 - "b7Kyw6NrLWgtAq1VoKVBzwqMrEDPgJ6K/ktCzxrIZFyGJm5Q8izWb8zGdDgrl2V5OZZqwIB9"  
54 - "3e3xL9+7tT3eVsjT2SVJrRR4cfj6JcmTb4f88SPYuUHQ2S5wEHz1lZAnL4Scm4dtGUFvAlYY"  
55 - "kJYh2b52pVhyEr+zg7E/wbu3zcAx0DR4ZuuWlSnn0hRIiVDr5/3sqKQ3BdcOaRy4X/Dt34fo"  
56 - "GcFP/hqyOiu4ckBl/3rB0ashiibq85A478+zeWNbSoNnji076mYIgB9Bf097/Mxnt3aknXeu"  
57 - "o2cEepZ6qrMCLQtmZNMyAi0OXgGcgsQvSrwC2HlJUASvIHELEq8Ise1dXLicL02VnEePwh+i"  
58 - "o44jxBmggpRPKwAm7Ovtbkn5ExVkWPdCggxBhhIR1ItOehBa4JchdCT4kT0ARYKUEtmYK8Gf"  
59 - "rtHTnkiZsE+CKoX4IfAEMA4EwEgjNbuzKxLCvzgTLSiRvkD6IN16uwW2RGgCGUhQIptVb8PQ"  
60 - "q1N61OcE9eX9gk3bPW0C2O3BTl3KUQEnpZQGoAmQGkAIuVhMZcSGMNBRanGCqXKUik+OlJak"  
61 - "V1cIIVeA6Tg8DpwU4FJnvTgCSGuGigxCNgwOkuzoIJHLMTo6yrZt2zBNE9M0UdV604yMjLBp"  
62 - "06aPBQvDkKGhIfr6+rBtm9nz57l++DCGJggg3QHXJiA7Df2dUT1A1AUqlLxFD+l56D09qKkU"  
63 - "ALqu33Jnmnbrom72N7q68F0Hz/ZRoQSQhyNVeHYCdn1MgAJzds1Da0niTU7eMdDdCPALBTRF"  
64 - "wbIDFJgD2AyFCnytDL/9EDYsCQBeX5i3ZFxXsC9fvuWCdyOg2W5duYKphCyUHAksXUjb4M0S"  
65 - "/KoEJ5cEOHBqYqZWzrVr5J9//n+SgfkXXySb0pgs2GUHTjX7VeFEFXa9AesVAB9eWyg5lpbQ"  
66 - "8D+8SnVo6BNloOFfHR7GHRtFM1UKNc/y4bVmvzJkK0ANQgXgOPg+PPXutWJ59eoEY0eO4C0s"  
67 - "/MdAjW64lQCvVOKfBw+yqk3lvclq2YenjoMPcBrUX8BABV4ow5sPw9jSbfg9+PVsxR0r2H6Q"  
68 - "M1yG9+4lnJ39rzIgy2X+0t9Pyi2Td8Nw0vKtSbj/u/CzH8Cr12CmDC+VYbYK+6DpOhYgyzBw"  
69 - "8UapoKQM2pVFRvbs4caJE8gwvKOAm6dO8daOHbRU5tCTGv+YqSnXocOC75Tg0Dz0z8L4NHzr"  
70 - "Kuw8BBNR3CUYQOwg7LhHcGZrbyqZM1V1fMZHJpKsO3CAnoEBkmvXEiYSqJZFbXycqZdfZuy5"  
71 - "5wjyC/SkBbO+5OJMTV6GiSpMSphwYXgO3v4bfABYgB3RbQhQgHiDD0FfP5zMpYzOzd2tMcX2"  
72 - "KRY9bHRc18N1HHTTwNB1YoFLulVDmiqX5hbdmZqX/yU8fbW+w0YwaxkbtlpzBmJNImJJaPkK"  
73 - "7F8FhzNJXV2TMuIrErowNAVdUXD9ANcLmK/58mbVtYuWL0dgcBBe9WCxaZfWLb4t6k81f/lz"  
74 - "SQcSgBkJMtPQ8kV4cC3saYEtCmQExCXYAZSK8P5l+PM5uGSBA3gRGxeO00QLqEW/cnkNNENE"  
75 - "NdEQYkTitIhqdGwiYvQKIKR+z/sR3aYdu5Ht3wLdLRoBlSY2oyGgwYaoT3Fb/At4CANJRbmY"  
76 - "kwAAAABJRU5ErkJggg==")  
77 -  
78 41
79 class TaskPanel(wx.Panel): 42 class TaskPanel(wx.Panel):
80 def __init__(self, parent): 43 def __init__(self, parent):
@@ -104,13 +67,13 @@ class InnerTaskPanel(wx.Panel): @@ -104,13 +67,13 @@ class InnerTaskPanel(wx.Panel):
104 self.SetBackgroundColour(wx.Colour(255,255,255)) 67 self.SetBackgroundColour(wx.Colour(255,255,255))
105 self.SetAutoLayout(1) 68 self.SetAutoLayout(1)
106 69
107 - # Image(s) for buttons  
108 - bitmap = Devil.GetBitmap() # 32, 32  
109 - bitmap.SetWidth(20)  
110 - bitmap.SetHeight(20) 70 +
  71 + BMP_ADD = wx.Bitmap("../icons/object_add.png", wx.BITMAP_TYPE_PNG)
  72 + BMP_ADD.SetWidth(25)
  73 + BMP_ADD.SetHeight(25)
111 74
112 # Button for creating new surface 75 # Button for creating new surface
113 - button_new_surface = pbtn.PlateButton(self, BTN_NEW, "", bitmap, style=\ 76 + button_new_surface = pbtn.PlateButton(self, BTN_NEW, "", BMP_ADD, style=\
114 pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG) 77 pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG)
115 self.Bind(wx.EVT_BUTTON, self.OnButton) 78 self.Bind(wx.EVT_BUTTON, self.OnButton)
116 79
invesalius/gui/task_tools.py
@@ -22,46 +22,9 @@ import wx.lib.hyperlink as hl @@ -22,46 +22,9 @@ import wx.lib.hyperlink as hl
22 import wx.lib.platebtn as pbtn 22 import wx.lib.platebtn as pbtn
23 import wx.lib.embeddedimage as emb 23 import wx.lib.embeddedimage as emb
24 24
25 -BTN_MEASURE_LINEAR = wx.NewId()  
26 -BTN_MEASURE_ANGULAR = wx.NewId()  
27 -BTN_ANNOTATION = wx.NewId()  
28 -  
29 -Devil = emb.PyEmbeddedImage(  
30 - "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABrpJ"  
31 - "REFUWIXtlluMlVcVx3/7u57LzLkMc5gbw2UovFRupQ1INdRkkkrIPDRpLSFREqk8oFKrPhmR"  
32 - "oEkfNLFJ39SQkrZGJGRMarCpVWmlLa2OCjOtpVBmgJnOfc79zHf/tg/nO5PTEQEbE1/6T/45"  
33 - "315n7b3+e+21sjd8iv8zRPPgtKKc9aV8UArxfT0Mf/4lcI+BocMXNME+BT4XQi6UtCqCigJz"  
34 - "oeQNH055cO44uKfB8BTlGwKOqvDW42G49+4FmGrx4Z9uSt98J+988JupwmzFe6mi8NjKroS6"  
35 - "bmOqNbcqKWKtOnpMxbMCrIrH3ERNXr9SrsxOLwatIYMrs8bAvY91Z7q3ZIyz37xU2h/KzO0E"  
36 - "qM2DR6QwWztzu9ZoG81W22ipFQr39XQl4jv2dJlpLKHnC4iZBeTEHCyUMGoW6bQm+j7TbspJ"  
37 - "J55NZ+974KEHkh2dveqNkXln+r35Hw9K+fpdZ+AFSKmKMvX5desSLYZB1XG4MH6d7dtBjYNq"  
38 - "gtDqs2QAoQuhDUFNMjQs2L2uj5iuU3Vdzo+OLi5K2fkEVG4nQGse3IDWFVJyZWGOvkwbw9OT"  
39 - "rO4FrQW0JKgxgdCbBDgQGBIUQU8nDH00zqbObq7lFyiDnIcUdxCgND4kCB3ObtycM4uexd8n"  
40 - "b7Kyw6NrLWgtAq1VoKVBzwqMrEDPgJ6K/ktCzxrIZFyGJm5Q8izWb8zGdDgrl2V5OZZqwIB9"  
41 - "3e3xL9+7tT3eVsjT2SVJrRR4cfj6JcmTb4f88SPYuUHQ2S5wEHz1lZAnL4Scm4dtGUFvAlYY"  
42 - "kJYh2b52pVhyEr+zg7E/wbu3zcAx0DR4ZuuWlSnn0hRIiVDr5/3sqKQ3BdcOaRy4X/Dt34fo"  
43 - "GcFP/hqyOiu4ckBl/3rB0ashiibq85A478+zeWNbSoNnji076mYIgB9Bf097/Mxnt3aknXeu"  
44 - "o2cEepZ6qrMCLQtmZNMyAi0OXgGcgsQvSrwC2HlJUASvIHELEq8Ise1dXLicL02VnEePwh+i"  
45 - "o44jxBmggpRPKwAm7Ovtbkn5ExVkWPdCggxBhhIR1ItOehBa4JchdCT4kT0ARYKUEtmYK8Gf"  
46 - "rtHTnkiZsE+CKoX4IfAEMA4EwEgjNbuzKxLCvzgTLSiRvkD6IN16uwW2RGgCGUhQIptVb8PQ"  
47 - "q1N61OcE9eX9gk3bPW0C2O3BTl3KUQEnpZQGoAmQGkAIuVhMZcSGMNBRanGCqXKUik+OlJak"  
48 - "V1cIIVeA6Tg8DpwU4FJnvTgCSGuGigxCNgwOkuzoIJHLMTo6yrZt2zBNE9M0UdV604yMjLBp"  
49 - "06aPBQvDkKGhIfr6+rBtm9nz57l++DCGJggg3QHXJiA7Df2dUT1A1AUqlLxFD+l56D09qKkU"  
50 - "ALqu33Jnmnbrom72N7q68F0Hz/ZRoQSQhyNVeHYCdn1MgAJzds1Da0niTU7eMdDdCPALBTRF"  
51 - "wbIDFJgD2AyFCnytDL/9EDYsCQBeX5i3ZFxXsC9fvuWCdyOg2W5duYKphCyUHAksXUjb4M0S"  
52 - "/KoEJ5cEOHBqYqZWzrVr5J9//n+SgfkXXySb0pgs2GUHTjX7VeFEFXa9AesVAB9eWyg5lpbQ"  
53 - "8D+8SnVo6BNloOFfHR7GHRtFM1UKNc/y4bVmvzJkK0ANQgXgOPg+PPXutWJ59eoEY0eO4C0s"  
54 - "/MdAjW64lQCvVOKfBw+yqk3lvclq2YenjoMPcBrUX8BABV4ow5sPw9jSbfg9+PVsxR0r2H6Q"  
55 - "M1yG9+4lnJ39rzIgy2X+0t9Pyi2Td8Nw0vKtSbj/u/CzH8Cr12CmDC+VYbYK+6DpOhYgyzBw"  
56 - "8UapoKQM2pVFRvbs4caJE8gwvKOAm6dO8daOHbRU5tCTGv+YqSnXocOC75Tg0Dz0z8L4NHzr"  
57 - "Kuw8BBNR3CUYQOwg7LhHcGZrbyqZM1V1fMZHJpKsO3CAnoEBkmvXEiYSqJZFbXycqZdfZuy5"  
58 - "5wjyC/SkBbO+5OJMTV6GiSpMSphwYXgO3v4bfABYgB3RbQhQgHiDD0FfP5zMpYzOzd2tMcX2"  
59 - "KRY9bHRc18N1HHTTwNB1YoFLulVDmiqX5hbdmZqX/yU8fbW+w0YwaxkbtlpzBmJNImJJaPkK"  
60 - "7F8FhzNJXV2TMuIrErowNAVdUXD9ANcLmK/58mbVtYuWL0dgcBBe9WCxaZfWLb4t6k81f/lz"  
61 - "SQcSgBkJMtPQ8kV4cC3saYEtCmQExCXYAZSK8P5l+PM5uGSBA3gRGxeO00QLqEW/cnkNNENE"  
62 - "NdEQYkTitIhqdGwiYvQKIKR+z/sR3aYdu5Ht3wLdLRoBlSY2oyGgwYaoT3Fb/At4CANJRbmY"  
63 - "kwAAAABJRU5ErkJggg==")  
64 - 25 +ID_BTN_MEASURE_LINEAR = wx.NewId()
  26 +ID_BTN_MEASURE_ANGULAR = wx.NewId()
  27 +ID_BTN_ANNOTATION = wx.NewId()
65 28
66 class TaskPanel(wx.Panel): 29 class TaskPanel(wx.Panel):
67 def __init__(self, parent): 30 def __init__(self, parent):
@@ -105,20 +68,26 @@ class InnerTaskPanel(wx.Panel): @@ -105,20 +68,26 @@ class InnerTaskPanel(wx.Panel):
105 txt_annotation.Bind(hl.EVT_HYPERLINK_LEFT, self.OnTextAnnotation) 68 txt_annotation.Bind(hl.EVT_HYPERLINK_LEFT, self.OnTextAnnotation)
106 69
107 # Image(s) for buttons 70 # Image(s) for buttons
108 - bitmap = Devil.GetBitmap() # 32, 32  
109 - bitmap.SetWidth(20)  
110 - bitmap.SetHeight(20) 71 + BMP_ANNOTATE = wx.Bitmap("../icons/annotation.png", wx.BITMAP_TYPE_PNG)
  72 + BMP_ANGLE = wx.Bitmap("../icons/measure_angle.jpg", wx.BITMAP_TYPE_JPEG)
  73 + BMP_DISTANCE = wx.Bitmap("../icons/measure_line.png", wx.BITMAP_TYPE_PNG)
  74 + BMP_ANNOTATE.SetWidth(25)
  75 + BMP_ANNOTATE.SetHeight(25)
  76 + BMP_ANGLE.SetWidth(25)
  77 + BMP_ANGLE.SetHeight(25)
  78 + BMP_DISTANCE.SetWidth(25)
  79 + BMP_DISTANCE.SetHeight(25)
111 80
112 # Buttons related to hyperlinks 81 # Buttons related to hyperlinks
113 button_style = pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG 82 button_style = pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_NOBG
114 83
115 - button_measure_linear = pbtn.PlateButton(self, BTN_MEASURE_LINEAR, "",  
116 - bitmap, style=button_style)  
117 - button_measure_angular = pbtn.PlateButton(self, BTN_MEASURE_ANGULAR, "",  
118 - bitmap, style=button_style) 84 + button_measure_linear = pbtn.PlateButton(self, ID_BTN_MEASURE_LINEAR, "",
  85 + BMP_DISTANCE, style=button_style)
  86 + button_measure_angular = pbtn.PlateButton(self, ID_BTN_MEASURE_ANGULAR, "",
  87 + BMP_ANGLE, style=button_style)
119 88
120 - button_annotation = pbtn.PlateButton(self, BTN_ANNOTATION, "",  
121 - bitmap, style=button_style) 89 + button_annotation = pbtn.PlateButton(self, ID_BTN_ANNOTATION, "",
  90 + BMP_ANNOTATE, style=button_style)
122 91
123 # When using PlaneButton, it is necessary to bind events from parent win 92 # When using PlaneButton, it is necessary to bind events from parent win
124 self.Bind(wx.EVT_BUTTON, self.OnButton) 93 self.Bind(wx.EVT_BUTTON, self.OnButton)
@@ -157,11 +126,11 @@ class InnerTaskPanel(wx.Panel): @@ -157,11 +126,11 @@ class InnerTaskPanel(wx.Panel):
157 def OnButton(self, evt): 126 def OnButton(self, evt):
158 id = evt.GetId() 127 id = evt.GetId()
159 128
160 - if id == BTN_MEASURE_LINEAR: 129 + if id == ID_BTN_MEASURE_LINEAR:
161 self.OnLinkLinearMeasure() 130 self.OnLinkLinearMeasure()
162 - elif id == BTN_MEASURE_ANGULAR: 131 + elif id == ID_BTN_MEASURE_ANGULAR:
163 self.OnLinkAngularMeasure() 132 self.OnLinkAngularMeasure()
164 - else: # elif id == BTN_ANNOTATION: 133 + else: # elif id == ID_BTN_ANNOTATION:
165 self.OnTextAnnotation() 134 self.OnTextAnnotation()
166 135
167 136