Commit b278e13c80b1645d07bfb92aebdf4bfbbaf1266e

Authored by tfmoraes
1 parent 63be42db

ENH: Option to select the interval in the import panel

invesalius/control.py
@@ -379,10 +379,8 @@ class Controller(): @@ -379,10 +379,8 @@ class Controller():
379 dirpath = session.CreateProject(filename) 379 dirpath = session.CreateProject(filename)
380 proj.SavePlistProject(dirpath, filename) 380 proj.SavePlistProject(dirpath, filename)
381 381
382 -  
383 -  
384 def OnOpenDicomGroup(self, pubsub_evt): 382 def OnOpenDicomGroup(self, pubsub_evt):
385 - group = pubsub_evt.data 383 + group, interval = pubsub_evt.data
386 imagedata, dicom = self.OpenDicomGroup(group, gui=True) 384 imagedata, dicom = self.OpenDicomGroup(group, gui=True)
387 self.CreateDicomProject(imagedata, dicom) 385 self.CreateDicomProject(imagedata, dicom)
388 self.LoadProject() 386 self.LoadProject()
invesalius/gui/import_panel.py
@@ -75,6 +75,11 @@ class InnerPanel(wx.Panel): @@ -75,6 +75,11 @@ class InnerPanel(wx.Panel):
75 75
76 self.patients = [] 76 self.patients = []
77 77
  78 + self._init_ui()
  79 + self._bind_events()
  80 + self._bind_pubsubevt()
  81 +
  82 + def _init_ui(self):
78 splitter = spl.MultiSplitterWindow(self, style=wx.SP_LIVE_UPDATE) 83 splitter = spl.MultiSplitterWindow(self, style=wx.SP_LIVE_UPDATE)
79 splitter.SetOrientation(wx.VERTICAL) 84 splitter.SetOrientation(wx.VERTICAL)
80 self.splitter = splitter 85 self.splitter = splitter
@@ -82,46 +87,42 @@ class InnerPanel(wx.Panel): @@ -82,46 +87,42 @@ class InnerPanel(wx.Panel):
82 panel = wx.Panel(self) 87 panel = wx.Panel(self)
83 #button = wx.Button(panel, -1, _("Import medical images"), (20, 20)) 88 #button = wx.Button(panel, -1, _("Import medical images"), (20, 20))
84 89
85 -  
86 - btn_ok = wx.Button(panel, wx.ID_OK)  
87 - btn_ok.SetDefault() 90 + self.btn_ok = wx.Button(panel, wx.ID_OK)
  91 + self.btn_ok.SetDefault()
88 btn_cancel = wx.Button(panel, wx.ID_CANCEL) 92 btn_cancel = wx.Button(panel, wx.ID_CANCEL)
89 - 93 +
90 btnsizer = wx.StdDialogButtonSizer() 94 btnsizer = wx.StdDialogButtonSizer()
91 - btnsizer.AddButton(btn_ok) 95 + btnsizer.AddButton(self.btn_ok)
92 btnsizer.AddButton(btn_cancel) 96 btnsizer.AddButton(btn_cancel)
93 btnsizer.Realize() 97 btnsizer.Realize()
94 98
95 - combo_interval = wx.ComboBox(panel, -1, "", choices= const.IMPORT_INTERVAL, 99 + self.combo_interval = wx.ComboBox(panel, -1, "", choices=const.IMPORT_INTERVAL,
96 style=wx.CB_DROPDOWN|wx.CB_READONLY) 100 style=wx.CB_DROPDOWN|wx.CB_READONLY)
97 - combo_interval.SetSelection(0) 101 + self.combo_interval.SetSelection(0)
98 102
99 inner_sizer = wx.BoxSizer(wx.HORIZONTAL) 103 inner_sizer = wx.BoxSizer(wx.HORIZONTAL)
100 inner_sizer.AddSizer(btnsizer, 0, wx.LEFT|wx.TOP, 5) 104 inner_sizer.AddSizer(btnsizer, 0, wx.LEFT|wx.TOP, 5)
101 - inner_sizer.Add(combo_interval, 0, wx.LEFT|wx.RIGHT|wx.TOP, 8) 105 + inner_sizer.Add(self.combo_interval, 0, wx.LEFT|wx.RIGHT|wx.TOP, 5)
102 panel.SetSizer(inner_sizer) 106 panel.SetSizer(inner_sizer)
103 inner_sizer.Fit(panel) 107 inner_sizer.Fit(panel)
104 - 108 +
105 sizer = wx.BoxSizer(wx.VERTICAL) 109 sizer = wx.BoxSizer(wx.VERTICAL)
106 sizer.Add(splitter, 20, wx.EXPAND) 110 sizer.Add(splitter, 20, wx.EXPAND)
107 sizer.Add(panel, 1, wx.EXPAND|wx.LEFT, 90) 111 sizer.Add(panel, 1, wx.EXPAND|wx.LEFT, 90)
108 - 112 +
109 self.SetSizer(sizer) 113 self.SetSizer(sizer)
110 sizer.Fit(self) 114 sizer.Fit(self)
111 115
112 - self.Layout()  
113 - self.Update()  
114 - self.SetAutoLayout(1)  
115 -  
116 self.text_panel = TextPanel(splitter) 116 self.text_panel = TextPanel(splitter)
117 splitter.AppendWindow(self.text_panel, 250) 117 splitter.AppendWindow(self.text_panel, 250)
118 - 118 +
119 self.image_panel = ImagePanel(splitter) 119 self.image_panel = ImagePanel(splitter)
120 splitter.AppendWindow(self.image_panel, 250) 120 splitter.AppendWindow(self.image_panel, 250)
121 -  
122 - self._bind_events()  
123 - self._bind_pubsubevt()  
124 - 121 +
  122 + self.Layout()
  123 + self.Update()
  124 + self.SetAutoLayout(1)
  125 +
125 def _bind_pubsubevt(self): 126 def _bind_pubsubevt(self):
126 ps.Publisher().subscribe(self.ShowDicomPreview, "Load import panel") 127 ps.Publisher().subscribe(self.ShowDicomPreview, "Load import panel")
127 128
@@ -129,6 +130,7 @@ class InnerPanel(wx.Panel): @@ -129,6 +130,7 @@ class InnerPanel(wx.Panel):
129 self.Bind(EVT_SELECT_SERIE, self.OnSelectSerie) 130 self.Bind(EVT_SELECT_SERIE, self.OnSelectSerie)
130 self.Bind(EVT_SELECT_SLICE, self.OnSelectSlice) 131 self.Bind(EVT_SELECT_SLICE, self.OnSelectSlice)
131 self.Bind(EVT_SELECT_PATIENT, self.OnSelectPatient) 132 self.Bind(EVT_SELECT_PATIENT, self.OnSelectPatient)
  133 + self.btn_ok.Bind(wx.EVT_BUTTON, self.OnLoadDicom)
132 134
133 def ShowDicomPreview(self, pubsub_evt): 135 def ShowDicomPreview(self, pubsub_evt):
134 dicom_groups = pubsub_evt.data 136 dicom_groups = pubsub_evt.data
@@ -149,6 +151,12 @@ class InnerPanel(wx.Panel): @@ -149,6 +151,12 @@ class InnerPanel(wx.Panel):
149 151
150 def OnSelectPatient(self, evt): 152 def OnSelectPatient(self, evt):
151 print "You've selected the patient", evt.GetSelectID() 153 print "You've selected the patient", evt.GetSelectID()
  154 +
  155 + def OnLoadDicom(self, evt):
  156 + group = self.text_panel.GetSelection()
  157 + interval = self.combo_interval.GetSelection()
  158 +
  159 + ps.Publisher().sendMessage('Open DICOM group', (group, interval))
152 160
153 161
154 class TextPanel(wx.Panel): 162 class TextPanel(wx.Panel):
@@ -312,6 +320,12 @@ class TextPanel(wx.Panel): @@ -312,6 +320,12 @@ class TextPanel(wx.Panel):
312 self.tree.SelectItem(item) 320 self.tree.SelectItem(item)
313 self._selected_by_user = True 321 self._selected_by_user = True
314 322
  323 + def GetSelection(self):
  324 + """Get selected item"""
  325 + item = self.tree.GetSelection()
  326 + group = self.tree.GetItemPyData(item)
  327 + return group
  328 +
315 329
316 class ImagePanel(wx.Panel): 330 class ImagePanel(wx.Panel):
317 def __init__(self, parent): 331 def __init__(self, parent):