Commit 2faf0f450ff1fa12b7ee1ce35283a04dd7542053

Authored by tatiana
1 parent 4811ecf0

ENH: Advances in import panel (still under devel)

invesalius/gui/dicom_preview_panel.py
... ... @@ -9,6 +9,13 @@ import vtkgdcm
9 9 from vtk.wx.wxVTKRenderWindowInteractor import wxVTKRenderWindowInteractor
10 10 from reader import dicom_reader
11 11  
  12 +
  13 +
  14 +NROWS = 3
  15 +NCOLS = 6
  16 +MAX_VALUE = NCOLS*NROWS
  17 +
  18 +
12 19 myEVT_SELECT = wx.NewEventType()
13 20 # This event occurs when the user select a preview
14 21 EVT_SELECT = wx.PyEventBinder(myEVT_SELECT, 1)
... ... @@ -40,39 +47,67 @@ class Preview(wx.Panel):
40 47 super(Preview, self).__init__(parent)
41 48 # Will it be white?
42 49 self.SetBackgroundColour((255, 255, 255))
43   - self.sizer = wx.BoxSizer(wx.VERTICAL)
44   - self.SetSizer(self.sizer)
45 50 self._init_ui()
46 51 self._init_vtk()
47 52 self._bind_events()
48 53  
49 54 def _init_ui(self):
  55 +
50 56 self.title = wx.StaticText(self, -1, "Image",
51 57 style=wx.ALIGN_CENTER)
52 58  
53 59 self.subtitle = wx.StaticText(self, -1, "Image",
54 60 style=wx.ALIGN_CENTER)
55 61  
56   - self.interactor = wxVTKRenderWindowInteractor(self, -1, size=(70, 70))
  62 + self.panel = wx.Panel(self, -1)
  63 +
  64 + self.sizer = wx.BoxSizer(wx.VERTICAL)
  65 + self.sizer.AddSpacer(2)
  66 + self.sizer.Add(self.title, 1, wx.GROW|wx.EXPAND)
  67 + self.sizer.Add(self.subtitle, 1, wx.GROW|wx.EXPAND)
  68 + self.sizer.Add(self.panel, 5, wx.GROW|wx.EXPAND|wx.ALL, 4)
  69 + self.sizer.Fit(self)
  70 +
  71 +
  72 + self.SetSizer(self.sizer)
  73 +
  74 +
  75 + self.Layout()
  76 + self.Update()
  77 + self.Fit()
  78 + self.SetAutoLayout(1)
57 79  
58   - self.sizer.Add(self.title, 0, wx.ALIGN_CENTER_HORIZONTAL)
59   - self.sizer.Add(self.subtitle, 0, wx.ALIGN_CENTER_HORIZONTAL)
60   - self.sizer.Add(self.interactor, 0, wx.ALIGN_CENTER_HORIZONTAL\
61   - | wx.ALL, 5)
62 80  
63 81 def _init_vtk(self):
  82 +
  83 + self.interactor = wxVTKRenderWindowInteractor(self.panel, -1, size=(70, 70))
  84 +
  85 + sizer = wx.BoxSizer(wx.HORIZONTAL)
  86 + sizer.Add(self.interactor, 1, wx.GROW|wx.EXPAND)
  87 + sizer.Fit(self.panel)
  88 +
  89 + self.panel.SetSizer(sizer)
  90 +
  91 + self.panel.Layout()
  92 + self.panel.Update()
  93 + self.panel.SetAutoLayout(1)
  94 +
64 95 self.actor = vtk.vtkImageActor()
65 96  
66 97 self.render = vtk.vtkRenderer()
  98 + self.render.AddActor(self.actor)
67 99  
68 100 self.interactor.SetInteractorStyle(None)
69 101 self.interactor.GetRenderWindow().AddRenderer(self.render)
70 102  
71   - self.render.AddActor(self.actor)
72   -
73 103  
74 104 def _bind_events(self):
75 105 self.Bind( wx.EVT_LEFT_DCLICK, self.OnSelect)
  106 + self.interactor.Bind( wx.EVT_LEFT_DCLICK, self.OnSelect)
  107 + self.panel.Bind( wx.EVT_LEFT_DCLICK, self.OnSelect)
  108 + self.title.Bind( wx.EVT_LEFT_DCLICK, self.OnSelect)
  109 + self.subtitle.Bind( wx.EVT_LEFT_DCLICK, self.OnSelect)
  110 +
76 111  
77 112 def OnSelect(self, evt):
78 113 evt = PreviewEvent(myEVT_SELECT, self.GetId())
... ... @@ -91,6 +126,10 @@ class Preview(wx.Panel):
91 126 """
92 127 self.SetTitle(image_file[3])
93 128 self.SetSubtitle(image_file[4])
  129 +
  130 + self.Layout()
  131 + self.Update()
  132 +
94 133 self.ID = image_file[5]
95 134  
96 135 image_reader = vtkgdcm.vtkGDCMImageReader()
... ... @@ -117,7 +156,9 @@ class Preview(wx.Panel):
117 156 cast.SetLevel(level)
118 157 self.actor.SetInput(cast.GetOutput())
119 158 self.render.ResetCamera()
120   - #self.interactor.Render()
  159 + self.interactor.Render()
  160 +
  161 +
121 162  
122 163  
123 164 class DicomPreviewSeries(wx.Panel):
... ... @@ -126,28 +167,46 @@ class DicomPreviewSeries(wx.Panel):
126 167 super(DicomPreviewSeries, self).__init__(parent)
127 168 # TODO: 3 pixels between the previews is a good idea?
128 169 # I have to test.
129   - self.sizer = wx.BoxSizer(wx.HORIZONTAL)
130   - self.SetSizer(self.sizer)
  170 + #self.sizer = wx.BoxSizer(wx.HORIZONTAL)
  171 + #self.SetSizer(self.sizer)
131 172 self.displayed_position = 0
132   - self.files = []
  173 + self.nhidden_last_display = 0
133 174 self._init_ui()
134 175  
135 176 def _init_ui(self):
136   - self.scroll = wx.ScrollBar(self, style=wx.SB_VERTICAL)
137   - self.grid = wx.GridSizer(rows=3, cols=5, vgap=3, hgap=3)
138   - self.sizer.Add(self.grid)
139   - self.sizer.Add(self.scroll, 0, wx.EXPAND)
  177 +
  178 + scroll = wx.ScrollBar(self, -1, style=wx.SB_VERTICAL)
  179 + self.scroll = scroll
  180 +
  181 + self.grid = wx.GridSizer(rows=NROWS, cols=NCOLS, vgap=3, hgap=3)
  182 +
  183 + sizer = wx.BoxSizer(wx.HORIZONTAL)
  184 + sizer.AddSizer(self.grid, 1, wx.EXPAND|wx.GROW|wx.ALL, 2)
  185 +
  186 + background_sizer = wx.BoxSizer(wx.HORIZONTAL)
  187 + background_sizer.AddSizer(sizer, 1, wx.EXPAND|wx.GROW|wx.ALL, 2)
  188 + background_sizer.Add(scroll, 0, wx.EXPAND|wx.GROW)
  189 + self.SetSizer(background_sizer)
  190 + background_sizer.Fit(self)
  191 +
  192 +
  193 + self.Layout()
  194 + self.Update()
  195 + self.SetAutoLayout(1)
  196 +
  197 + self.sizer = background_sizer
  198 +
140 199 self._Add_Panels_Preview()
141 200 self._bind_events()
142 201  
143 202 def _Add_Panels_Preview(self):
144 203 self.previews = []
145   - for i in xrange(3):
146   - for j in xrange(5):
  204 + for i in xrange(NROWS):
  205 + for j in xrange(NCOLS):
147 206 p = Preview(self)
148   - p.Hide()
  207 + #p.Hide()
149 208 self.previews.append(p)
150   - self.grid.Add(p, i, j)
  209 + self.grid.Add(p, 1, flag=wx.EXPAND)
151 210  
152 211 def _bind_events(self):
153 212 # When the user scrolls the window
... ... @@ -160,7 +219,11 @@ class DicomPreviewSeries(wx.Panel):
160 219 self.GetEventHandler().ProcessEvent(my_evt)
161 220  
162 221 def SetPatientGroups(self, patient):
  222 + self.files = []
  223 + self.displayed_position = 0
  224 + self.nhidden_last_display = 0
163 225 group_list = patient.GetGroups()
  226 + print "LEN:", len(group_list)
164 227 n = 0
165 228 for group in group_list:
166 229 info = (group.dicom.image.file,
... ... @@ -172,47 +235,50 @@ class DicomPreviewSeries(wx.Panel):
172 235 self.files.append(info)
173 236 n+=1
174 237  
175   - scroll_range = len(self.files)/5
176   - if scroll_range * 5 < len(self.files):
  238 + scroll_range = len(self.files)/NCOLS
  239 + if scroll_range * NCOLS < len(self.files):
177 240 scroll_range +=1
178   - self.scroll.SetScrollbar(0, 3, scroll_range, 5)
  241 + self.scroll.SetScrollbar(0, NROWS, scroll_range, NCOLS)
  242 + self._display_previews()
  243 +
  244 + def _display_previews(self):
  245 + initial = self.displayed_position * NCOLS
  246 + final = initial + MAX_VALUE
  247 + print "len:", len(self.files)
  248 +
  249 + if len(self.files) < final:
  250 + for i in xrange(final-len(self.files)):
  251 + print "hide ", i
  252 + try:
  253 + self.previews[-i-1].Hide()
  254 + except IndexError:
  255 + #print "doesn't exist!"
  256 + pass
  257 + self.nhidden_last_display = final-len(self.files)
  258 + else:
  259 + if self.nhidden_last_display:
  260 + for i in xrange(self.nhidden_last_display):
  261 + try:
  262 + self.previews[-i-1].Show()
  263 + except IndexError:
  264 + #print "doesn't exist!"
  265 + pass
  266 + self.nhidden_last_display = 0
179 267  
180   - self._Display_Previews()
181 268  
182 269  
183   - def SetDicomDirectoryOld(self, directory):
184   - import time
185   - a = time.time()
186   - self.directory = directory
187   - self.series = dicom_reader.GetSeries(directory)[0]
188   - b = time.time()
189   - # TODO: I need to improve this
190   - self.files = [(self.series[i][0][0][8], # Filename
191   - self.series[i][0][0][12], # Window Level
192   - self.series[i][0][0][13], # Window Width
193   - "Serie %d" % (n + 1), # Title
194   - "%d Images" % len(self.series[i][0]), # Subtitle
195   - n) for n, i in enumerate(self.series)]
196   -
197   - scroll_range = len(self.files)/5
198   - if scroll_range * 5 < len(self.files):
199   - scroll_range +=1
200   - self.scroll.SetScrollbar(0, 3, scroll_range, 5)
201   -
202   - self._Display_Previews()
203   -
204   - def _Display_Previews(self):
205   - initial = self.displayed_position * 5
206   - final = initial + 15
207 270 for f, p in zip(self.files[initial:final], self.previews):
208 271 p.SetImage(f)
  272 + #p.interactor.Render()
  273 +
  274 + for f, p in zip(self.files[initial:final], self.previews):
209 275 p.Show()
210 276  
211   - def OnScroll(self, evt):
212   - self.displayed_position = evt.GetPosition()
213   - [i.Hide() for i in self.previews]
214   - self._Display_Previews()
215 277  
  278 + def OnScroll(self, evt):
  279 + if self.displayed_position != evt.GetPosition():
  280 + self.displayed_position = evt.GetPosition()
  281 + self._display_previews()
216 282  
217 283 class DicomPreview(wx.Panel):
218 284 """A dicom preview panel"""
... ... @@ -220,28 +286,44 @@ class DicomPreview(wx.Panel):
220 286 super(DicomPreview, self).__init__(parent)
221 287 # TODO: 3 pixels between the previews is a good idea?
222 288 # I have to test.
223   - self.sizer = wx.BoxSizer(wx.HORIZONTAL)
224   - self.SetSizer(self.sizer)
225 289 self.displayed_position = 0
226   - self.files = []
  290 + self.nhidden_last_display = 0
227 291 self._init_ui()
228 292  
  293 +
229 294 def _init_ui(self):
230   - self.scroll = wx.ScrollBar(self, style=wx.SB_VERTICAL)
231   - self.grid = wx.GridSizer(rows=3, cols=5, vgap=3, hgap=3)
232   - self.sizer.Add(self.grid)
233   - self.sizer.Add(self.scroll, 0, wx.EXPAND)
  295 + scroll = wx.ScrollBar(self, -1, style=wx.SB_VERTICAL)
  296 + self.scroll = scroll
  297 +
  298 + self.grid = wx.GridSizer(rows=NROWS, cols=NCOLS, vgap=3, hgap=3)
  299 +
  300 + sizer = wx.BoxSizer(wx.HORIZONTAL)
  301 + sizer.AddSizer(self.grid, 1, wx.EXPAND|wx.GROW|wx.ALL, 2)
  302 +
  303 + background_sizer = wx.BoxSizer(wx.HORIZONTAL)
  304 + background_sizer.AddSizer(sizer, 1, wx.EXPAND|wx.GROW|wx.ALL, 2)
  305 + background_sizer.Add(scroll, 0, wx.EXPAND|wx.GROW)
  306 + self.SetSizer(background_sizer)
  307 + background_sizer.Fit(self)
  308 +
  309 +
  310 + self.Layout()
  311 + self.Update()
  312 + self.SetAutoLayout(1)
  313 +
  314 + self.sizer = background_sizer
  315 +
234 316 self._Add_Panels_Preview()
235 317 self._bind_events()
236 318  
237 319 def _Add_Panels_Preview(self):
238 320 self.previews = []
239   - for i in xrange(3):
240   - for j in xrange(5):
  321 + for i in xrange(NROWS):
  322 + for j in xrange(NCOLS):
241 323 p = Preview(self)
242   - p.Hide()
  324 + #p.Hide()
243 325 self.previews.append(p)
244   - self.grid.Add(p, i, j)
  326 + self.grid.Add(p, 1, flag=wx.EXPAND)
245 327  
246 328 def _bind_events(self):
247 329 # When the user scrolls the window
... ... @@ -255,6 +337,9 @@ class DicomPreview(wx.Panel):
255 337 self.group_list = patient.GetGroups()
256 338  
257 339 def SetDicomSerie(self, pos):
  340 + self.files = []
  341 + self.displayed_position = 0
  342 + self.nhidden_last_display = 0
258 343 group = self.group_list[pos]
259 344 #dicom_files = group.GetList()
260 345 dicom_files = group.GetHandSortedList()
... ... @@ -269,37 +354,71 @@ class DicomPreview(wx.Panel):
269 354 self.files.append(info)
270 355 n+=1
271 356  
272   - scroll_range = len(self.files)/5
273   - if scroll_range * 5 < len(self.files):
  357 + scroll_range = len(self.files)/NCOLS
  358 + if scroll_range * NCOLS < len(self.files):
274 359 scroll_range +=1
275   - self.scroll.SetScrollbar(0, 3, scroll_range, 5)
276   - self._Display_Previews()
277   -
278   - def SetDicomSerieOld(self, serie):
279   - k = self.series.keys()[serie]
280   - self.files = [(i[8],
281   - i[12],
282   - i[13],
283   - "Serie %d" % (n + 1), # Title
284   - "%d Images" % n, # Subtitle
285   - n)for n, i in enumerate(self.series[k][0])]
286   - scroll_range = len(self.files)/5
287   - if scroll_range * 5 < len(self.files):
  360 + self.scroll.SetScrollbar(0, NROWS, scroll_range, NCOLS)
  361 +
  362 + self._display_previews()
  363 +
  364 + def SetDicomGroup(self, group):
  365 + self.files = []
  366 + self.displayed_position = 0
  367 + self.nhidden_last_display = 0
  368 + #dicom_files = group.GetList()
  369 + dicom_files = group.GetHandSortedList()
  370 + n = 0
  371 + for dicom in dicom_files:
  372 + info = (dicom.image.file,
  373 + dicom.image.window,
  374 + dicom.image.level,
  375 + "Image %d" % (dicom.image.number),
  376 + "%.2f" % (dicom.image.position[2]),
  377 + n)
  378 + self.files.append(info)
  379 + n+=1
  380 +
  381 + scroll_range = len(self.files)/NCOLS
  382 + if scroll_range * NCOLS < len(self.files):
288 383 scroll_range +=1
289   - self.scroll.SetScrollbar(0, 3, scroll_range, 5)
290   - self._Display_Previews()
  384 + self.scroll.SetScrollbar(0, NROWS, scroll_range, NCOLS)
  385 +
  386 + self._display_previews()
  387 +
  388 +
  389 + def _display_previews(self):
  390 + initial = self.displayed_position * NCOLS
  391 + final = initial + MAX_VALUE
  392 + print "len:", len(self.files)
  393 +
  394 + if len(self.files) < final:
  395 + for i in xrange(final-len(self.files)):
  396 + print "hide ", i
  397 + try:
  398 + self.previews[-i-1].Hide()
  399 + except IndexError:
  400 + #print "doesn't exist!"
  401 + pass
  402 + self.nhidden_last_display = final-len(self.files)
  403 + else:
  404 + if self.nhidden_last_display:
  405 + for i in xrange(self.nhidden_last_display):
  406 + try:
  407 + self.previews[-i-1].Show()
  408 + except IndexError:
  409 + #print "doesn't exist!"
  410 + pass
  411 + self.nhidden_last_display = 0
291 412  
292   - def _Display_Previews(self):
293   - initial = self.displayed_position * 5
294   - final = initial + 15
295 413 for f, p in zip(self.files[initial:final], self.previews):
296 414 p.SetImage(f)
  415 + #p.interactor.Render()
  416 +
  417 + for f, p in zip(self.files[initial:final], self.previews):
297 418 p.Show()
298 419  
299   - def OnScroll(self, evt):
300   - self.displayed_position = evt.GetPosition()
301   - [i.Hide() for i in self.previews]
302   - self._Display_Previews()
303   - self.Update()
304   - self.Update()
305 420  
  421 + def OnScroll(self, evt):
  422 + if self.displayed_position != evt.GetPosition():
  423 + self.displayed_position = evt.GetPosition()
  424 + self._display_previews()
... ...
invesalius/gui/import_panel.py
... ... @@ -4,21 +4,29 @@ import wx.lib.pubsub as ps
4 4 import wx.lib.splitter as spl
5 5  
6 6 import dicom_preview_panel as dpp
  7 +import reader.dicom_grouper as dcm
7 8  
8 9 class Panel(wx.Panel):
9 10 def __init__(self, parent):
10   - wx.Panel.__init__(self, parent, pos=wx.Point(5, 5),
11   - size=wx.Size(280, 656))
  11 + wx.Panel.__init__(self, parent, pos=wx.Point(5, 5))#,
  12 + #size=wx.Size(280, 656))
12 13  
13 14 sizer = wx.BoxSizer(wx.VERTICAL)
14 15 sizer.Add(InnerPanel(self), 1, wx.EXPAND|wx.GROW|wx.ALL, 5)
  16 +
15 17 self.SetSizer(sizer)
  18 + sizer.Fit(self)
  19 +
  20 + self.Layout()
  21 + self.Update()
  22 + self.SetAutoLayout(1)
  23 +
16 24  
17 25 # Inner fold panel
18 26 class InnerPanel(wx.Panel):
19 27 def __init__(self, parent):
20   - wx.Panel.__init__(self, parent, pos=wx.Point(5, 5),
21   - size=wx.Size(680, 656))
  28 + wx.Panel.__init__(self, parent, pos=wx.Point(5, 5))#,
  29 + #size=wx.Size(680, 656))
22 30  
23 31 splitter = spl.MultiSplitterWindow(self, style=wx.SP_LIVE_UPDATE)
24 32 splitter.SetOrientation(wx.VERTICAL)
... ... @@ -26,8 +34,14 @@ class InnerPanel(wx.Panel):
26 34  
27 35 sizer = wx.BoxSizer(wx.VERTICAL)
28 36 sizer.Add(splitter, 1, wx.EXPAND)
  37 +
29 38 self.SetSizer(sizer)
30   -
  39 + sizer.Fit(self)
  40 +
  41 + self.Layout()
  42 + self.Update()
  43 + self.SetAutoLayout(1)
  44 +
31 45 self.text_panel = TextPanel(splitter)
32 46 splitter.AppendWindow(self.text_panel, 250)
33 47  
... ... @@ -105,10 +119,10 @@ class TextPanel(wx.Panel):
105 119 parent = tree.AppendItem(self.root, title)
106 120  
107 121 if not first:
108   - tree.SelectItem(parent)
  122 + parent_select = parent
109 123 first += 1
110 124  
111   -
  125 + tree.SetItemPyData(parent, patient)
112 126 tree.SetItemText(parent, str(dicom.patient.id), 1)
113 127 tree.SetItemText(parent, str(dicom.patient.age), 2)
114 128 tree.SetItemText(parent, str(dicom.patient.gender), 3)
... ... @@ -136,17 +150,37 @@ class TextPanel(wx.Panel):
136 150  
137 151 tree.Expand(self.root)
138 152  
  153 + tree.SelectItem(parent_select)
  154 +
139 155 tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivate)
  156 + tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged)
  157 +
  158 +
  159 + def OnSelChanged(self, evt):
  160 + print "OnLeftUp"
  161 + item = self.tree.GetSelection()
  162 + group = self.tree.GetItemPyData(item)
  163 + if isinstance(group, dcm.DicomGroup):
  164 + print " :)"
  165 + ps.Publisher().sendMessage('Load group into import panel',
  166 + group)
  167 + elif isinstance(group, dcm.PatientGroup):
  168 + print " :) patient"
  169 + ps.Publisher().sendMessage('Load patient into import panel',
  170 + group)
  171 +
  172 + else:
  173 + print " :("
  174 +
  175 +
140 176  
141 177 def OnActivate(self, evt):
142 178 print "OnActivate"
143 179 item = evt.GetItem()
144 180 group = self.tree.GetItemPyData(item)
145   - if group:
146   - print "send"
  181 + if isinstance(group, dcm.DicomGroup):
147 182 ps.Publisher().sendMessage('Open DICOM group',
148 183 group)
149   -
150 184 else:
151 185 if self.tree.IsExpanded(item):
152 186 self.tree.Collapse(item)
... ... @@ -155,7 +189,10 @@ class TextPanel(wx.Panel):
155 189  
156 190 def OnSize(self, evt):
157 191 self.tree.SetSize(self.GetSize())
158   -
  192 +
  193 +
  194 +
  195 +
159 196 class ImagePanel(wx.Panel):
160 197 def __init__(self, parent):
161 198 wx.Panel.__init__(self, parent, -1)
... ... @@ -174,6 +211,14 @@ class ImagePanel(wx.Panel):
174 211  
175 212 self.image_panel = SlicePanel(splitter)
176 213 splitter.AppendWindow(self.image_panel, 250)
  214 +
  215 +
  216 + self.SetSizer(sizer)
  217 + sizer.Fit(self)
  218 +
  219 + self.Layout()
  220 + self.Update()
  221 + self.SetAutoLayout(1)
177 222  
178 223 class SeriesPanel(wx.Panel):
179 224 def __init__(self, parent):
... ... @@ -184,31 +229,58 @@ class SeriesPanel(wx.Panel):
184 229 self.dicom_preview = dpp.DicomPreview(self)
185 230 self.dicom_preview.Show(0)
186 231  
187   - self.sizer = wx.BoxSizer(wx.VERTICAL)
  232 + self.sizer = wx.BoxSizer(wx.HORIZONTAL)
188 233 self.sizer.Add(self.serie_preview, 1, wx.EXPAND | wx.ALL, 5)
189 234 self.sizer.Add(self.dicom_preview, 1, wx.EXPAND | wx.ALL, 5)
190 235 self.sizer.Fit(self)
191 236  
  237 +
192 238 self.SetSizer(self.sizer)
193   - self.SetAutoLayout(True)
194   - self.Show()
195 239  
196 240  
  241 + self.Layout()
  242 + self.Update()
  243 + self.SetAutoLayout(1)
  244 +
197 245 self.__bind_evt()
198 246 self._bind_gui_evt()
199 247  
200 248 def __bind_evt(self):
201   - ps.Publisher().subscribe(self.ShowDicomSeries, "Load dicom preview")
  249 + ps.Publisher().subscribe(self.ShowDicomSeries, 'Load dicom preview')
  250 + ps.Publisher().subscribe(self.SetDicomSeries, 'Load group into import panel')
  251 + ps.Publisher().subscribe(self.SetPatientSeries, 'Load patient into import panel')
202 252  
203 253 def _bind_gui_evt(self):
204 254 self.Bind(dpp.EVT_SELECT_SERIE, self.OnSelectSerie)
205 255  
  256 + def SetDicomSeries(self, pubsub_evt):
  257 + group = pubsub_evt.data
  258 + print "X"
  259 + self.dicom_preview.Show(1)
  260 + self.serie_preview.Show(0)
  261 + self.dicom_preview.SetDicomGroup(group)
  262 + self.Update()
  263 +
  264 +
  265 + def SetPatientSeries(self, pubsub_evt):
  266 + print "Z"
  267 + patient = pubsub_evt.data
  268 +
  269 + self.dicom_preview.Show(0)
  270 + self.serie_preview.Show(1)
  271 +
  272 +
  273 + self.serie_preview.SetPatientGroups(patient)
  274 + self.dicom_preview.SetPatientGroups(patient)
  275 +
  276 + self.Update()
  277 +
  278 +
206 279 def OnSelectSerie(self, evt):
207 280 serie = evt.GetSelectID()
208 281 self.dicom_preview.SetDicomSerie(serie)
209 282  
210 283 self.dicom_preview.Show(1)
211   - #self.sizer.Detach(self.serie_preview)
212 284 self.serie_preview.Show(0)
213 285 self.sizer.Layout()
214 286 #self.Show()
... ... @@ -217,9 +289,9 @@ class SeriesPanel(wx.Panel):
217 289  
218 290 def ShowDicomSeries(self, pubsub_evt):
219 291 print "---- ShowDicomSeries ----"
220   - first_patient = pubsub_evt.data
221   - self.serie_preview.SetPatientGroups(first_patient)
222   - self.dicom_preview.SetPatientGroups(first_patient)
  292 + patient = pubsub_evt.data
  293 + self.serie_preview.SetPatientGroups(patient)
  294 + self.dicom_preview.SetPatientGroups(patient)
223 295  
224 296  
225 297  
... ...
invesalius/reader/dicom_grouper.py
... ... @@ -125,7 +125,8 @@ class DicomGroup:
125 125 list_ = self.slices_dict.values()
126 126 dicom = list_[0]
127 127 axis = ORIENT_MAP[dicom.image.orientation_label]
128   - list_ = sorted(list_, key = lambda dicom:dicom.image.position[axis])
  128 + #list_ = sorted(list_, key = lambda dicom:dicom.image.position[axis])
  129 + list_ = sorted(list_, key = lambda dicom:dicom.image.number)
129 130 return list_
130 131  
131 132 def UpdateZSpacing(self):
... ...