mail from clinicalgraphics.com :
### Kan je vast ook wel gebruiken en misschien wil je het wel in DeVIDE stoppen?
def SpacingCheck(self):
filenames = [str(i) for i in self.dicom_filenames]
file_spacing_tuples = []
for filename in filenames:
r = gdcm.ImageReader()
r.SetFileName( filename )
if not r.Read():
return False
gdcm.ImageHelper.SetForcePixelSpacing( True )
spacing = gdcm.ImageHelper.GetSpacingValue( r.GetFile() )
file_spacing_tuples.append((filename, spacing))
datasets = []
for key, group in groupby(file_spacing_tuples, lambda x: x[1]):
dataset = []
for thing in group:
dataset.append(thing[0])
datasets.append(dataset)
return datasets
### En voor de drag&drop-handler:
DICOM_reader = DICOMReader.DICOMReader.DICOMReader()
DICOM_reader.dicom_filenames = files
datasets = DICOM_reader.SpacingCheck()
if len(datasets) > 1:
dataset = self.RequestDatasetSelection(datasets)
if dataset == -1:
return
else:
DICOM_reader.dicom_filenames = dataset
else:
pass
### Tenslotte nog het openen van de dialog, vast ook wel handig:
def RequestDatasetSelection(self, datasets):
dialog = self._root.main.createImageDataSelectionDialog()
dialog.list_ctrl_2.InsertColumn(0, " ", 1, 24)
dialog.list_ctrl_2.InsertColumn(1, "Number of slices", 1, 240)
for i in range(0,len(datasets)):
dialog.list_ctrl_2.Append(["%d" % i, '%d' % len(datasets[i])])
dialog.list_ctrl_2.Select(0)
selected_item = -1
if dialog.ShowModal() == wx.ID_OK:
selected_item = dialog.list_ctrl_2.GetFirstSelected()
dialog.Destroy()
if selected_item != -1:
return datasets[int(selected_item)]
else:
return -1
### waarbij het panel weer in een aparte Class staat:
class ImageDataSelection(wx.Dialog):
def __init__(self, *args, **kwds):
# begin wxGlade: ImageDataSelection.__init__
kwds["style"] = wx.DEFAULT_DIALOG_STYLE
wx.Dialog.__init__(self, *args, **kwds)
self.panel_13 = wx.Panel(self, -1)
self.label_9 = wx.StaticText(self.panel_13, -1, "Multiple scans were detected. Please select the data you would like to import:")
self.list_ctrl_2 = wx.ListCtrl(self.panel_13, -1, style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.SUNKEN_BORDER)
self.panel_14 = wx.Panel(self.panel_13, -1)
self.button_6 = wx.Button(self.panel_13, wx.ID_CANCEL, "")
self.button_9 = wx.Button(self.panel_13, wx.ID_OK, "")
self.__set_properties()
self.__do_layout()
# end wxGlade
def __set_properties(self):
# begin wxGlade: ImageDataSelection.__set_properties
self.SetTitle("dialog_1")
self.button_9.SetFocus()
# end wxGlade
def __do_layout(self):
# begin wxGlade: ImageDataSelection.__do_layout
sizer_42 = wx.BoxSizer(wx.HORIZONTAL)
sizer_43 = wx.BoxSizer(wx.VERTICAL)
sizer_44 = wx.BoxSizer(wx.VERTICAL)
sizer_45 = wx.BoxSizer(wx.HORIZONTAL)
sizer_44.Add(self.label_9, 0, wx.ALL, 4)
sizer_44.Add(self.list_ctrl_2, 1, wx.ALL|wx.EXPAND, 4)
sizer_45.Add(self.panel_14, 1, wx.EXPAND, 0)
sizer_45.Add(self.button_6, 0, wx.ALL, 4)
sizer_45.Add(self.button_9, 0, wx.ALL, 4)
sizer_44.Add(sizer_45, 0, wx.EXPAND, 0)
self.panel_13.SetSizer(sizer_44)
sizer_43.Add(self.panel_13, 1, wx.ALL|wx.EXPAND, 7)
sizer_42.Add(sizer_43, 1, wx.EXPAND, 0)
self.SetSizer(sizer_42)
sizer_42.Fit(self)
self.Layout()
# end wxGlade
Original issue reported on code.google.com by cpbotha on 3 Dec 2010 at 8:05
Original issue reported on code.google.com by
cpbotha
on 3 Dec 2010 at 8:05