Commit a3bd2801bd69be25c5e8c02e71f45fa6f3f44df3

Authored by Thiago Franco de Moraes
1 parent 1069a8c1
Exists in wx2.9_mac

create our own art provider to simplify the toolbar icons

Showing 1 changed file with 83 additions and 113 deletions   Show diff stats
invesalius/gui/frame.py
@@ -46,6 +46,48 @@ VIEW_TOOLS = [ID_LAYOUT, ID_TEXT] =\ @@ -46,6 +46,48 @@ VIEW_TOOLS = [ID_LAYOUT, ID_TEXT] =\
46 [wx.NewId() for number in range(2)] 46 [wx.NewId() for number in range(2)]
47 47
48 48
  49 +def scale_bitmap(bitmap, width, height):
  50 + image = wx.ImageFromBitmap(bitmap)
  51 + image = image.Scale(width, height, wx.IMAGE_QUALITY_HIGH)
  52 + result = wx.BitmapFromImage(image)
  53 + return result
  54 +
  55 +d = const.ICON_DIR
  56 +ARTID_FNAME = {'tool_rotate': os.path.join(d, "tool_rotate_original.png"),
  57 + 'tool_translate': os.path.join(d, "tool_translate_original.png"),
  58 + 'tool_zoom': os.path.join(d, "tool_zoom_original.png"),
  59 + 'tool_zoom_select': os.path.join(d, "tool_zoom_select_original.png"),
  60 + 'tool_contraste' :os.path.join(d, "tool_contrast_original.png"),
  61 + 'measure_linear': os.path.join(d, "measure_line_original.png"),
  62 + 'measure_angle': os.path.join(d, "measure_angle_original.png"),
  63 +
  64 + 'slice': os.path.join(d, "slice_original.png"),
  65 + 'cross': os.path.join(d, "cross_original.png"),
  66 +
  67 + 'file_from_internet': os.path.join(d,"file_from_internet_original.png"),
  68 + 'file_import': os.path.join(d, "file_import_original.png"),
  69 + 'file_open': os.path.join(d, "file_open_original.png"),
  70 + 'file_save': os.path.join(d, "file_save_original.png"),
  71 + 'print': os.path.join(d, "print_original.png"),
  72 + 'tool_photo': os.path.join(d, "tool_photo_original.png"),
  73 +
  74 + 'layout_data_only': os.path.join(d, "layout_data_only_original.png"),
  75 + 'layout_full': os.path.join(d, "layout_full_original.png"),
  76 + 'text_inverted': os.path.join(d, "text_inverted_original.png"),
  77 + 'text': os.path.join(d, "text_original.png"),
  78 + }
  79 +
  80 +
  81 +class MyArtProvider(wx.ArtProvider):
  82 + def __init__(self):
  83 + wx.ArtProvider.__init__(self)
  84 +
  85 + def CreateBitmap(self, artid, client, size):
  86 + path = ARTID_FNAME[artid]
  87 + tmp_bmp = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)
  88 + #bmp = scale_bitmap(tmp_bmp, size.width, size.height)
  89 + return tmp_bmp
  90 +
49 91
50 class MessageWatershed(wx.PopupWindow): 92 class MessageWatershed(wx.PopupWindow):
51 def __init__(self, prnt, msg): 93 def __init__(self, prnt, msg):
@@ -862,42 +904,21 @@ class ProjectToolBar(wx.ToolBar): @@ -862,42 +904,21 @@ class ProjectToolBar(wx.ToolBar):
862 """ 904 """
863 # Load bitmaps 905 # Load bitmaps
864 d = const.ICON_DIR 906 d = const.ICON_DIR
  907 + client = "wx.ART_TOOLBAR"
  908 + wx.ArtProvider.Push(MyArtProvider())
865 if sys.platform == 'darwin' and wx.VERSION < (2, 9): 909 if sys.platform == 'darwin' and wx.VERSION < (2, 9):
866 - path = os.path.join(d,"file_from_internet_original.png")  
867 - BMP_NET = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
868 -  
869 - path = os.path.join(d, "file_import_original.png")  
870 - BMP_IMPORT = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
871 -  
872 - path = os.path.join(d, "file_open_original.png")  
873 - BMP_OPEN = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
874 -  
875 - path = os.path.join(d, "file_save_original.png")  
876 - BMP_SAVE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
877 -  
878 - path = os.path.join(d, "print_original.png")  
879 - BMP_PRINT = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
880 -  
881 - path = os.path.join(d, "tool_photo_original.png")  
882 - BMP_PHOTO = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 910 + size = 48, 48
883 else: 911 else:
884 - path = os.path.join(d, "file_from_internet.png")  
885 - BMP_NET = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
886 -  
887 - path = os.path.join(d, "file_import.png")  
888 - BMP_IMPORT = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
889 -  
890 - path = os.path.join(d, "file_open.png")  
891 - BMP_OPEN = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
892 -  
893 - path = os.path.join(d, "file_save.png")  
894 - BMP_SAVE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 912 + size = 32, 32
895 913
896 - path = os.path.join(d, "print.png")  
897 - BMP_PRINT = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 914 + BMP_NET = wx.ArtProvider.GetBitmap('file_from_internet', client, size)
  915 + BMP_IMPORT = wx.ArtProvider.GetBitmap('file_import', client, size)
  916 + BMP_OPEN = wx.ArtProvider.GetBitmap('file_open', client, size)
  917 + BMP_SAVE = wx.ArtProvider.GetBitmap('file_save', client, size)
  918 + BMP_PRINT = wx.ArtProvider.GetBitmap('print', client, size)
  919 + BMP_PHOTO = wx.ArtProvider.GetBitmap('tool_photo', client, size)
898 920
899 - path = os.path.join(d, "tool_photo.png")  
900 - BMP_PHOTO = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 921 + wx.ArtProvider.Pop()
901 922
902 # Create tool items based on bitmaps 923 # Create tool items based on bitmaps
903 self.AddLabelTool(const.ID_DICOM_IMPORT, 924 self.AddLabelTool(const.ID_DICOM_IMPORT,
@@ -1002,55 +1023,22 @@ class ObjectToolBar(wx.ToolBar): @@ -1002,55 +1023,22 @@ class ObjectToolBar(wx.ToolBar):
1002 Add tools into toolbar. 1023 Add tools into toolbar.
1003 """ 1024 """
1004 d = const.ICON_DIR 1025 d = const.ICON_DIR
  1026 + client = "wx.ART_TOOLBAR"
  1027 + wx.ArtProvider.Push(MyArtProvider())
1005 if sys.platform == 'darwin' and wx.VERSION < (2, 9): 1028 if sys.platform == 'darwin' and wx.VERSION < (2, 9):
1006 - path = os.path.join(d, "tool_rotate_original.png")  
1007 - BMP_ROTATE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1008 -  
1009 - path = os.path.join(d, "tool_translate_original.png")  
1010 - BMP_MOVE =wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1011 -  
1012 - path = os.path.join(d, "tool_zoom_original.png")  
1013 - BMP_ZOOM = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1014 -  
1015 - path = os.path.join(d, "tool_zoom_select_original.png")  
1016 - BMP_ZOOM_SELECT = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1017 -  
1018 - path = os.path.join(d, "tool_contrast_original.png")  
1019 - BMP_CONTRAST = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1020 -  
1021 - path = os.path.join(d, "measure_line_original.png")  
1022 - BMP_DISTANCE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1023 -  
1024 - path = os.path.join(d, "measure_angle_original.png")  
1025 - BMP_ANGLE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1026 -  
1027 - #path = os.path.join(d, "tool_annotation_original.png")  
1028 - #BMP_ANNOTATE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1029 - 1029 + size = 48, 48
1030 else: 1030 else:
1031 - path = os.path.join(d, "tool_rotate.png")  
1032 - BMP_ROTATE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 1031 + size = 32, 32
1033 1032
1034 - path = os.path.join(d, "tool_translate.png")  
1035 - BMP_MOVE =wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 1033 + BMP_ROTATE = wx.ArtProvider.GetBitmap('tool_rotate', client, size)
  1034 + BMP_MOVE = wx.ArtProvider.GetBitmap('tool_translate', client, size)
  1035 + BMP_ZOOM = wx.ArtProvider.GetBitmap('tool_zoom', client, size)
  1036 + BMP_ZOOM_SELECT = wx.ArtProvider.GetBitmap('tool_zoom_select', client, size)
  1037 + BMP_CONTRAST = wx.ArtProvider.GetBitmap('tool_contraste', client, size)
  1038 + BMP_DISTANCE = wx.ArtProvider.GetBitmap('measure_linear', client, size)
  1039 + BMP_ANGLE = wx.ArtProvider.GetBitmap('measure_angle', client, size)
1036 1040
1037 - path = os.path.join(d, "tool_zoom.png")  
1038 - BMP_ZOOM = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1039 -  
1040 - path = os.path.join(d, "tool_zoom_select.png")  
1041 - BMP_ZOOM_SELECT = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1042 -  
1043 - path = os.path.join(d, "tool_contrast.png")  
1044 - BMP_CONTRAST = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1045 -  
1046 - path = os.path.join(d, "measure_line.png")  
1047 - BMP_DISTANCE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1048 -  
1049 - path = os.path.join(d, "measure_angle.png")  
1050 - BMP_ANGLE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG)  
1051 -  
1052 - #path = os.path.join(d, "tool_annotation.png")  
1053 - #BMP_ANNOTATE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 1041 + wx.ArtProvider.Pop()
1054 1042
1055 # Create tool items based on bitmaps 1043 # Create tool items based on bitmaps
1056 self.AddLabelTool(const.STATE_ZOOM, 1044 self.AddLabelTool(const.STATE_ZOOM,
@@ -1212,19 +1200,18 @@ class SliceToolBar(wx.ToolBar): @@ -1212,19 +1200,18 @@ class SliceToolBar(wx.ToolBar):
1212 """ 1200 """
1213 Add tools into toolbar. 1201 Add tools into toolbar.
1214 """ 1202 """
1215 - d = const.ICON_DIR  
1216 - if sys.platform == 'darwin' and wx.VERSION < (2, 9):  
1217 - path = os.path.join(d, "slice_original.png")  
1218 - BMP_SLICE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 1203 + client = "wx.ART_TOOLBAR"
  1204 + wx.ArtProvider.Push(MyArtProvider())
1219 1205
1220 - path = os.path.join(d,"cross_original.png")  
1221 - BMP_CROSS = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 1206 + if sys.platform == 'darwin' and wx.VERSION < (2, 9):
  1207 + size = 48, 48
1222 else: 1208 else:
1223 - path = os.path.join(d, "slice.png")  
1224 - BMP_SLICE = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 1209 + size = 32, 32
  1210 +
  1211 + BMP_SLICE = wx.ArtProvider.GetBitmap('slice', client, size)
  1212 + BMP_CROSS = wx.ArtProvider.GetBitmap('cross', client, size)
1225 1213
1226 - path = os.path.join(d,"cross.png")  
1227 - BMP_CROSS = wx.Bitmap(path, wx.BITMAP_TYPE_PNG) 1214 + wx.ArtProvider.Pop()
1228 1215
1229 self.AddCheckTool(const.SLICE_STATE_SCROLL, 1216 self.AddCheckTool(const.SLICE_STATE_SCROLL,
1230 BMP_SLICE, 1217 BMP_SLICE,
@@ -1356,36 +1343,19 @@ class LayoutToolBar(wx.ToolBar): @@ -1356,36 +1343,19 @@ class LayoutToolBar(wx.ToolBar):
1356 Add tools into toolbar. 1343 Add tools into toolbar.
1357 """ 1344 """
1358 d = const.ICON_DIR 1345 d = const.ICON_DIR
  1346 + client = "wx.ART_TOOLBAR"
  1347 + wx.ArtProvider.Push(MyArtProvider())
1359 if sys.platform == 'darwin' and wx.VERSION < (2, 9): 1348 if sys.platform == 'darwin' and wx.VERSION < (2, 9):
1360 - # Bitmaps for show/hide task panel item  
1361 - p = os.path.join(d, "layout_data_only_original.gif")  
1362 - self.BMP_WITH_MENU = wx.Bitmap(p, wx.BITMAP_TYPE_GIF)  
1363 -  
1364 - p = os.path.join(d, "layout_full_original.gif")  
1365 - self.BMP_WITHOUT_MENU = wx.Bitmap(p, wx.BITMAP_TYPE_GIF)  
1366 -  
1367 - # Bitmaps for show/hide task item  
1368 - p = os.path.join(d, "text_inverted_original.png")  
1369 - self.BMP_WITHOUT_TEXT = wx.Bitmap(p, wx.BITMAP_TYPE_PNG)  
1370 -  
1371 - p = os.path.join(d, "text_original.png")  
1372 - self.BMP_WITH_TEXT = wx.Bitmap(p, wx.BITMAP_TYPE_PNG)  
1373 - 1349 + size = 48, 48
1374 else: 1350 else:
1375 - # Bitmaps for show/hide task panel item  
1376 - p = os.path.join(d, "layout_data_only.gif")  
1377 - self.BMP_WITH_MENU = wx.Bitmap(p, wx.BITMAP_TYPE_GIF)  
1378 -  
1379 - p = os.path.join(d, "layout_full.gif")  
1380 - self.BMP_WITHOUT_MENU = wx.Bitmap(p, wx.BITMAP_TYPE_GIF)  
1381 -  
1382 - # Bitmaps for show/hide task item  
1383 - p = os.path.join(d, "text_inverted.png")  
1384 - self.BMP_WITHOUT_TEXT = wx.Bitmap(p, wx.BITMAP_TYPE_PNG) 1351 + size = 32, 32
1385 1352
1386 - p = os.path.join(d, "text.png")  
1387 - self.BMP_WITH_TEXT = wx.Bitmap(p, wx.BITMAP_TYPE_PNG) 1353 + self.BMP_WITHOUT_MENU = wx.ArtProvider.GetBitmap('layout_data_only', client, size)
  1354 + self.BMP_WITH_MENU = wx.ArtProvider.GetBitmap('layout_full', client, size)
  1355 + self.BMP_WITH_TEXT = wx.ArtProvider.GetBitmap('text_inverted', client, size)
  1356 + self.BMP_WITHOUT_TEXT = wx.ArtProvider.GetBitmap('text', client, size)
1388 1357
  1358 + wx.ArtProvider.Pop()
1389 self.AddLabelTool(ID_LAYOUT, 1359 self.AddLabelTool(ID_LAYOUT,
1390 "", 1360 "",
1391 bitmap=self.BMP_WITHOUT_MENU, 1361 bitmap=self.BMP_WITHOUT_MENU,