Commit 44c3f4faa7b99bb5acb455955ac41b89673e11b6
1 parent
2b02528b
Exists in
master
and in
68 other branches
ENH: The images in the dicom preview expand to follow the preview panel size
Showing
1 changed file
with
33 additions
and
9 deletions
Show diff stats
invesalius/gui/dicom_preview_panel.py
... | ... | @@ -57,11 +57,27 @@ class DicomInfo(object): |
57 | 57 | self.title = title |
58 | 58 | self.subtitle = subtitle |
59 | 59 | self._preview = None |
60 | + self._size = (70, 70) | |
60 | 61 | self.selected = False |
62 | + self.resized = False | |
63 | + | |
64 | + @property | |
65 | + def size(self): | |
66 | + return self._size | |
67 | + | |
68 | + @size.setter | |
69 | + def size(self, size): | |
70 | + if size != self._size: | |
71 | + self._size = size | |
72 | + self.resized = True | |
61 | 73 | |
62 | 74 | @property |
63 | 75 | def preview(self): |
64 | 76 | if self._preview: |
77 | + if self.resized: | |
78 | + self.resized = False | |
79 | + s_img = self.img.Scale(*self._size).Mirror(False) | |
80 | + self._preview = wx.BitmapFromImage(s_img) | |
65 | 81 | return self._preview |
66 | 82 | else: |
67 | 83 | colorer = vtk.vtkImageMapToWindowLevelColors() |
... | ... | @@ -75,9 +91,9 @@ class DicomInfo(object): |
75 | 91 | |
76 | 92 | r = colorer.GetOutput().GetPointData().GetScalars() |
77 | 93 | ni = numpy_support.vtk_to_numpy(r) |
78 | - img = wx.ImageFromBuffer(width, height, ni) | |
79 | - img = img.Rescale(PREVIEW_WIDTH, PREVIEW_HEIGTH).Mirror(False) | |
80 | - self._preview = wx.BitmapFromImage(img) | |
94 | + self.img = wx.ImageFromBuffer(width, height, ni) | |
95 | + s_img = self.img.Scale(*self._size).Mirror(False) | |
96 | + self._preview = wx.BitmapFromImage(s_img) | |
81 | 97 | return self._preview |
82 | 98 | |
83 | 99 | |
... | ... | @@ -89,24 +105,24 @@ class Preview(wx.Panel): |
89 | 105 | super(Preview, self).__init__(parent) |
90 | 106 | # Will it be white? |
91 | 107 | self.select_on = False |
108 | + self.dicom_info = None | |
92 | 109 | self._init_ui() |
93 | 110 | self._bind_events() |
94 | 111 | |
95 | 112 | def _init_ui(self): |
113 | + self.SetBackgroundColour(PREVIEW_BACKGROUND) | |
114 | + | |
96 | 115 | self.title = wx.StaticText(self, -1, _("Image")) |
97 | 116 | self.subtitle = wx.StaticText(self, -1, _("Image")) |
98 | - self.image_viewer = wx.StaticBitmap(self, -1, size=(70, 70)) | |
99 | - | |
100 | - #self.panel = wx.Panel(self, -1) | |
101 | - | |
102 | - self.SetBackgroundColour(PREVIEW_BACKGROUND) | |
117 | + self.image_viewer = wx.StaticBitmap(self, -1) | |
103 | 118 | |
104 | 119 | self.sizer = wx.BoxSizer(wx.VERTICAL) |
105 | 120 | self.sizer.Add(self.title, 0, |
106 | 121 | wx.ALIGN_CENTER_HORIZONTAL) |
107 | 122 | self.sizer.Add(self.subtitle, 0, |
108 | 123 | wx.ALIGN_CENTER_HORIZONTAL) |
109 | - self.sizer.Add(self.image_viewer, 0, wx.ALIGN_CENTER_HORIZONTAL) | |
124 | + self.sizer.Add(self.image_viewer, 1, wx.ALIGN_CENTRE_HORIZONTAL \ | |
125 | + | wx.SHAPED | wx.ALL, 5) | |
110 | 126 | self.sizer.Fit(self) |
111 | 127 | |
112 | 128 | self.SetSizer(self.sizer) |
... | ... | @@ -141,6 +157,8 @@ class Preview(wx.Panel): |
141 | 157 | #self.title.Bind(wx.EVT_LEFT_DOWN, self.OnSelect) |
142 | 158 | #self.subtitle.Bind(wx.EVT_LEFT_DOWN, self.OnSelect) |
143 | 159 | |
160 | + self.Bind(wx.EVT_SIZE, self.OnSize) | |
161 | + | |
144 | 162 | def SetDicomToPreview(self, dicom_info): |
145 | 163 | """ |
146 | 164 | Set a dicom to preview. |
... | ... | @@ -149,6 +167,7 @@ class Preview(wx.Panel): |
149 | 167 | self.SetTitle(dicom_info.title) |
150 | 168 | self.SetSubtitle(dicom_info.subtitle) |
151 | 169 | self.ID = dicom_info.id |
170 | + dicom_info.size = self.image_viewer.GetSize() | |
152 | 171 | image = dicom_info.preview |
153 | 172 | self.image_viewer.SetBitmap(image) |
154 | 173 | self.data = dicom_info.id |
... | ... | @@ -191,6 +210,11 @@ class Preview(wx.Panel): |
191 | 210 | #self.SetBackgroundColour(c) |
192 | 211 | self.Select() |
193 | 212 | |
213 | + def OnSize(self, evt): | |
214 | + if self.dicom_info: | |
215 | + self.SetDicomToPreview(self.dicom_info) | |
216 | + evt.Skip() | |
217 | + | |
194 | 218 | def Select(self, on=True): |
195 | 219 | if self.select_on: |
196 | 220 | c = wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHT) | ... | ... |