Commit b6e949262b0baefc302e0ee82da0d50162eadc7a

Authored by Thiago Franco de Moraes
1 parent d67dc17a
Exists in wxgtk3_bkp

Better sizing, but not completed.

invesalius/gui/default_tasks.py
@@ -220,7 +220,7 @@ class UpperTaskPanel(wx.Panel): @@ -220,7 +220,7 @@ class UpperTaskPanel(wx.Panel):
220 def __init__(self, parent): 220 def __init__(self, parent):
221 wx.Panel.__init__(self, parent) 221 wx.Panel.__init__(self, parent)
222 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition, 222 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition,
223 - self.GetSize(),FPB_DEFAULT_STYLE, 223 + wx.DefaultSize,FPB_DEFAULT_STYLE,
224 fpb.FPB_SINGLE_FOLD) 224 fpb.FPB_SINGLE_FOLD)
225 225
226 sizer = wx.BoxSizer(wx.VERTICAL) 226 sizer = wx.BoxSizer(wx.VERTICAL)
invesalius/gui/task_slice.py
@@ -118,7 +118,7 @@ class InnerTaskPanel(wx.Panel): @@ -118,7 +118,7 @@ class InnerTaskPanel(wx.Panel):
118 button_next.Bind(wx.EVT_BUTTON, self.OnButtonNextTask) 118 button_next.Bind(wx.EVT_BUTTON, self.OnButtonNextTask)
119 119
120 line_sizer = wx.BoxSizer(wx.HORIZONTAL) 120 line_sizer = wx.BoxSizer(wx.HORIZONTAL)
121 - line_sizer.Add(check_box, 1, wx.ALIGN_LEFT|wx.RIGHT|wx.LEFT|wx.BOTTOM, 5) 121 + line_sizer.Add(check_box, 0, wx.ALIGN_LEFT|wx.RIGHT|wx.LEFT|wx.BOTTOM, 5)
122 line_sizer.Add(button_next, 0, 122 line_sizer.Add(button_next, 0,
123 wx.ALIGN_RIGHT|wx.RIGHT|wx.LEFT|wx.BOTTOM, 5) 123 wx.ALIGN_RIGHT|wx.RIGHT|wx.LEFT|wx.BOTTOM, 5)
124 line_sizer.Fit(self) 124 line_sizer.Fit(self)
@@ -126,11 +126,11 @@ class InnerTaskPanel(wx.Panel): @@ -126,11 +126,11 @@ class InnerTaskPanel(wx.Panel):
126 # Add line sizers into main sizer 126 # Add line sizers into main sizer
127 main_sizer = wx.BoxSizer(wx.VERTICAL) 127 main_sizer = wx.BoxSizer(wx.VERTICAL)
128 main_sizer.Add(line_new, 0,wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) 128 main_sizer.Add(line_new, 0,wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
129 - main_sizer.Add(fold_panel, 5, wx.GROW|wx.EXPAND|wx.ALL, 5)  
130 - main_sizer.AddSizer(line_sizer, 1, wx.GROW|wx.EXPAND) 129 + main_sizer.Add(fold_panel, 1, wx.GROW|wx.EXPAND|wx.ALL, 5)
  130 + main_sizer.AddSizer(line_sizer, 0, wx.GROW|wx.EXPAND)
131 main_sizer.Fit(self) 131 main_sizer.Fit(self)
132 132
133 - self.SetSizer(main_sizer) 133 + self.SetSizerAndFit(main_sizer)
134 self.Update() 134 self.Update()
135 self.SetAutoLayout(1) 135 self.SetAutoLayout(1)
136 136
@@ -161,7 +161,7 @@ class InnerTaskPanel(wx.Panel): @@ -161,7 +161,7 @@ class InnerTaskPanel(wx.Panel):
161 161
162 if to_generate: 162 if to_generate:
163 mask_index = sl.current_mask.index 163 mask_index = sl.current_mask.index
164 - method = {'algorithm': algorithm, 164 + method = {'algorithm': algorithm,
165 'options': options} 165 'options': options}
166 srf_options = {"index": mask_index, 166 srf_options = {"index": mask_index,
167 "name": '', 167 "name": '',
@@ -170,7 +170,7 @@ class InnerTaskPanel(wx.Panel): @@ -170,7 +170,7 @@ class InnerTaskPanel(wx.Panel):
170 "keep_largest": False, 170 "keep_largest": False,
171 "overwrite": overwrite} 171 "overwrite": overwrite}
172 172
173 - Publisher.sendMessage('Create surface from index', 173 + Publisher.sendMessage('Create surface from index',
174 {'method': method, 'options': srf_options}) 174 {'method': method, 'options': srf_options})
175 Publisher.sendMessage('Fold surface task') 175 Publisher.sendMessage('Fold surface task')
176 176
@@ -200,7 +200,7 @@ class InnerTaskPanel(wx.Panel): @@ -200,7 +200,7 @@ class InnerTaskPanel(wx.Panel):
200 200
201 class FoldPanel(wx.Panel): 201 class FoldPanel(wx.Panel):
202 def __init__(self, parent): 202 def __init__(self, parent):
203 - wx.Panel.__init__(self, parent, size=(50,50)) 203 + wx.Panel.__init__(self, parent)
204 self.SetBackgroundColour(wx.Colour(0,255,0)) 204 self.SetBackgroundColour(wx.Colour(0,255,0))
205 205
206 inner_panel = InnerFoldPanel(self) 206 inner_panel = InnerFoldPanel(self)
@@ -209,7 +209,7 @@ class FoldPanel(wx.Panel): @@ -209,7 +209,7 @@ class FoldPanel(wx.Panel):
209 sizer.Add(inner_panel, 1, wx.EXPAND|wx.GROW, 2) 209 sizer.Add(inner_panel, 1, wx.EXPAND|wx.GROW, 2)
210 sizer.Fit(self) 210 sizer.Fit(self)
211 211
212 - self.SetSizer(sizer) 212 + self.SetSizerAndFit(sizer)
213 self.Update() 213 self.Update()
214 self.SetAutoLayout(1) 214 self.SetAutoLayout(1)
215 215
@@ -223,7 +223,8 @@ class InnerFoldPanel(wx.Panel): @@ -223,7 +223,8 @@ class InnerFoldPanel(wx.Panel):
223 def __init__(self, parent): 223 def __init__(self, parent):
224 wx.Panel.__init__(self, parent) 224 wx.Panel.__init__(self, parent)
225 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR) 225 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR)
226 - self.SetBackgroundColour(default_colour) 226 + #self.SetBackgroundColour(default_colour)
  227 + self.SetBackgroundColour((255, 0, 0))
227 228
228 # Fold panel and its style settings 229 # Fold panel and its style settings
229 # FIXME: If we dont insert a value in size or if we set wx.DefaultSize, 230 # FIXME: If we dont insert a value in size or if we set wx.DefaultSize,
@@ -231,8 +232,24 @@ class InnerFoldPanel(wx.Panel): @@ -231,8 +232,24 @@ class InnerFoldPanel(wx.Panel):
231 # is not working properly in this panel. It might be on some child or 232 # is not working properly in this panel. It might be on some child or
232 # parent panel. Perhaps we need to insert the item into the sizer also... 233 # parent panel. Perhaps we need to insert the item into the sizer also...
233 # Study this. 234 # Study this.
  235 + #gbs = wx.GridBagSizer()
  236 +
  237 + #gbs.AddGrowableRow(0, 1)
  238 + #gbs.AddGrowableCol(0, 1)
  239 +
  240 + #self.gbs = gbs
  241 +
  242 + self.last_size = None
  243 +
  244 + # Panel sizer to expand fold panel
  245 + sizer = wx.BoxSizer(wx.VERTICAL)
  246 + #sizer.Add(gbs, 1, wx.GROW|wx.EXPAND)
  247 + self.SetSizer(sizer)
  248 +
234 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition, 249 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition,
235 - (10, 220), 0,fpb.FPB_SINGLE_FOLD) 250 + wx.DefaultSize, 0,fpb.FPB_SINGLE_FOLD)
  251 + self.fold_panel = fold_panel
  252 +
236 253
237 # Fold panel style 254 # Fold panel style
238 style = fpb.CaptionBarStyle() 255 style = fpb.CaptionBarStyle()
@@ -243,6 +260,9 @@ class InnerFoldPanel(wx.Panel): @@ -243,6 +260,9 @@ class InnerFoldPanel(wx.Panel):
243 # Fold 1 - Mask properties 260 # Fold 1 - Mask properties
244 item = fold_panel.AddFoldPanel(_("Mask properties"), collapsed=True) 261 item = fold_panel.AddFoldPanel(_("Mask properties"), collapsed=True)
245 self.mask_prop_panel = MaskProperties(item) 262 self.mask_prop_panel = MaskProperties(item)
  263 +
  264 + #self.__calc_best_size(self.mask_prop_panel)
  265 +
246 fold_panel.ApplyCaptionStyle(item, style) 266 fold_panel.ApplyCaptionStyle(item, style)
247 fold_panel.AddFoldPanelWindow(item, self.mask_prop_panel, Spacing= 0, 267 fold_panel.AddFoldPanelWindow(item, self.mask_prop_panel, Spacing= 0,
248 leftSpacing=0, rightSpacing=0) 268 leftSpacing=0, rightSpacing=0)
@@ -250,28 +270,47 @@ class InnerFoldPanel(wx.Panel): @@ -250,28 +270,47 @@ class InnerFoldPanel(wx.Panel):
250 270
251 # Fold 2 - Advanced edition tools 271 # Fold 2 - Advanced edition tools
252 item = fold_panel.AddFoldPanel(_("Advanced editing tools"), collapsed=True) 272 item = fold_panel.AddFoldPanel(_("Advanced editing tools"), collapsed=True)
  273 + etw = EditionTools(item)
  274 +
  275 + #self.__calc_best_size(etw)
  276 +
253 fold_panel.ApplyCaptionStyle(item, style) 277 fold_panel.ApplyCaptionStyle(item, style)
254 - fold_panel.AddFoldPanelWindow(item, EditionTools(item), Spacing= 0, 278 + fold_panel.AddFoldPanelWindow(item, etw, Spacing= 0,
255 leftSpacing=0, rightSpacing=0) 279 leftSpacing=0, rightSpacing=0)
256 self.__id_editor = item.GetId() 280 self.__id_editor = item.GetId()
257 self.last_panel_opened = None 281 self.last_panel_opened = None
258 282
259 # Fold 3 - Watershed 283 # Fold 3 - Watershed
260 item = fold_panel.AddFoldPanel(_("Watershed"), collapsed=True) 284 item = fold_panel.AddFoldPanel(_("Watershed"), collapsed=True)
  285 + wtw = WatershedTool(item)
  286 +
  287 + #self.__calc_best_size(wtw)
  288 +
261 fold_panel.ApplyCaptionStyle(item, style) 289 fold_panel.ApplyCaptionStyle(item, style)
262 - fold_panel.AddFoldPanelWindow(item, WatershedTool(item), Spacing= 0, 290 + fold_panel.AddFoldPanelWindow(item, wtw, Spacing= 0,
263 leftSpacing=0, rightSpacing=0) 291 leftSpacing=0, rightSpacing=0)
264 self.__id_watershed = item.GetId() 292 self.__id_watershed = item.GetId()
265 293
266 #fold_panel.Expand(fold_panel.GetFoldPanel(1)) 294 #fold_panel.Expand(fold_panel.GetFoldPanel(1))
  295 + #gbs.Add(fold_panel, (0, 0), flag=wx.EXPAND)
  296 + #gbs.AddGrowableRow(0, 1)
  297 + sizer.Add(fold_panel, 1, wx.EXPAND)
267 298
268 - # Panel sizer to expand fold panel  
269 - sizer = wx.BoxSizer(wx.VERTICAL)  
270 - sizer.Add(fold_panel, 1, wx.GROW|wx.EXPAND)  
271 - sizer.Fit(self)  
272 - self.SetSizer(sizer)  
273 - self.Update()  
274 - self.SetAutoLayout(1) 299 + #w, h = self.GetSize()
  300 + #h = h + 3 * item.GetSize().GetHeight()
  301 +
  302 + print "SIZEEEEEEE", item.GetSize()
  303 +
  304 + #self.SetInitialSize((w, h))
  305 +
  306 + self.ResizeFPB()
  307 + #self.Fit()
  308 +
  309 + sizer.Layout()
  310 + self.Fit()
  311 +
  312 + #self.Update()
  313 + #self.SetAutoLayout(1)
275 314
276 self.fold_panel = fold_panel 315 self.fold_panel = fold_panel
277 self.last_style = None 316 self.last_style = None
@@ -279,6 +318,39 @@ class InnerFoldPanel(wx.Panel): @@ -279,6 +318,39 @@ class InnerFoldPanel(wx.Panel):
279 self.__bind_evt() 318 self.__bind_evt()
280 self.__bind_pubsub_evt() 319 self.__bind_pubsub_evt()
281 320
  321 + def __calc_best_size(self, panel):
  322 + print "Best size", self.GetSize()
  323 + parent = panel.GetParent()
  324 + q = panel.Reparent(self)
  325 +
  326 + #gbs = self.gbs
  327 + fold_panel = self.fold_panel
  328 +
  329 + # Calculating the size
  330 + #gbs.AddGrowableRow(0, 1)
  331 + #gbs.AddGrowableRow(0, 1)
  332 + #gbs.Add(panel, (0, 0), flag=wx.EXPAND)
  333 + self.GetSizer().Add(panel, 1, wx.EXPAND)
  334 + #self.SetSizerAndFit(self.GetSizer())
  335 + self.GetSizer().Layout()
  336 + self.GetSizer().Fit(self)
  337 + #gbs.Layout()
  338 + #self.Fit()
  339 + #self.GetSizer().Layout()
  340 + size = panel.GetSize()
  341 +
  342 + #gbs.Remove(0)
  343 + #gbs.RemoveGrowableRow(0)
  344 +
  345 + self.GetSizer().Remove(0)
  346 + panel.Reparent(parent)
  347 + panel.SetInitialSize(size)
  348 +
  349 + #if self.last_size is None or self.last_size.GetHeight() < size.GetHeight():
  350 + #self.SetInitialSize(size)
  351 +
  352 + print "Best size", size, self.GetSize(), self.GetClientSize(), q
  353 +
282 def __bind_evt(self): 354 def __bind_evt(self):
283 self.fold_panel.Bind(fpb.EVT_CAPTIONBAR, self.OnFoldPressCaption) 355 self.fold_panel.Bind(fpb.EVT_CAPTIONBAR, self.OnFoldPressCaption)
284 356
@@ -313,6 +385,23 @@ class InnerFoldPanel(wx.Panel): @@ -313,6 +385,23 @@ class InnerFoldPanel(wx.Panel):
313 self.last_style = None 385 self.last_style = None
314 386
315 evt.Skip() 387 evt.Skip()
  388 + wx.CallAfter(self.ResizeFPB)
  389 +
  390 +
  391 + def ResizeFPB(self):
  392 + sizeNeeded = self.fold_panel.GetPanelsLength(0, 0)[2]
  393 + self.fold_panel.SetMinSize((self.fold_panel.GetSize()[0], sizeNeeded ))
  394 + self.fold_panel.SetSize((self.fold_panel.GetSize()[0], sizeNeeded))
  395 + print self.fold_panel.GetPanelsLength(0, 0), self.fold_panel.GetSize()
  396 +
  397 + try:
  398 + self.GetParent().GetSizer().Layout()
  399 + self.GetParent().Fit()
  400 +
  401 + self.GetSizer().Layout()
  402 + self.Fit()
  403 + except:
  404 + pass
316 405
317 def OnRetrieveStyle(self, pubsub_evt): 406 def OnRetrieveStyle(self, pubsub_evt):
318 if (self.last_style == const.SLICE_STATE_EDITOR): 407 if (self.last_style == const.SLICE_STATE_EDITOR):
@@ -331,7 +420,7 @@ class InnerFoldPanel(wx.Panel): @@ -331,7 +420,7 @@ class InnerFoldPanel(wx.Panel):
331 420
332 class MaskProperties(wx.Panel): 421 class MaskProperties(wx.Panel):
333 def __init__(self, parent): 422 def __init__(self, parent):
334 - wx.Panel.__init__(self, parent, size=(50,240)) 423 + wx.Panel.__init__(self, parent)
335 424
336 ## LINE 1 425 ## LINE 1
337 426
@@ -380,7 +469,7 @@ class MaskProperties(wx.Panel): @@ -380,7 +469,7 @@ class MaskProperties(wx.Panel):
380 sizer.Add(gradient, 1, wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT|wx.BOTTOM, 6) 469 sizer.Add(gradient, 1, wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT|wx.BOTTOM, 6)
381 sizer.Fit(self) 470 sizer.Fit(self)
382 471
383 - self.SetSizer(sizer) 472 + self.SetSizerAndFit(sizer)
384 self.Update() 473 self.Update()
385 self.SetAutoLayout(1) 474 self.SetAutoLayout(1)
386 475
@@ -419,7 +508,7 @@ class MaskProperties(wx.Panel): @@ -419,7 +508,7 @@ class MaskProperties(wx.Panel):
419 n = self.combo_thresh.GetCount() 508 n = self.combo_thresh.GetCount()
420 for i in xrange(n-1, -1, -1): 509 for i in xrange(n-1, -1, -1):
421 self.combo_thresh.Delete(i) 510 self.combo_thresh.Delete(i)
422 - 511 +
423 def OnRemoveMasks(self, pubsub_evt): 512 def OnRemoveMasks(self, pubsub_evt):
424 print "OnRemoveMasks" 513 print "OnRemoveMasks"
425 list_index = pubsub_evt.data 514 list_index = pubsub_evt.data
@@ -459,7 +548,7 @@ class MaskProperties(wx.Panel): @@ -459,7 +548,7 @@ class MaskProperties(wx.Panel):
459 thresh = (thresh_min, thresh_max) 548 thresh = (thresh_min, thresh_max)
460 if thresh in Project().threshold_modes.values(): 549 if thresh in Project().threshold_modes.values():
461 preset_name = Project().threshold_modes.get_key(thresh)[0] 550 preset_name = Project().threshold_modes.get_key(thresh)[0]
462 - index = self.threshold_modes_names.index(preset_name) 551 + index = self.threshold_modes_names.index(preset_name)
463 self.combo_thresh.SetSelection(index) 552 self.combo_thresh.SetSelection(index)
464 else: 553 else:
465 index = self.threshold_modes_names.index(_("Custom")) 554 index = self.threshold_modes_names.index(_("Custom"))
@@ -473,7 +562,7 @@ class MaskProperties(wx.Panel): @@ -473,7 +562,7 @@ class MaskProperties(wx.Panel):
473 thresh = (thresh_min, thresh_max) 562 thresh = (thresh_min, thresh_max)
474 if thresh in Project().threshold_modes.values(): 563 if thresh in Project().threshold_modes.values():
475 preset_name = Project().threshold_modes.get_key(thresh)[0] 564 preset_name = Project().threshold_modes.get_key(thresh)[0]
476 - index = self.threshold_modes_names.index(preset_name) 565 + index = self.threshold_modes_names.index(preset_name)
477 self.combo_thresh.SetSelection(index) 566 self.combo_thresh.SetSelection(index)
478 else: 567 else:
479 index = self.threshold_modes_names.index(_("Custom")) 568 index = self.threshold_modes_names.index(_("Custom"))
@@ -517,7 +606,7 @@ class MaskProperties(wx.Panel): @@ -517,7 +606,7 @@ class MaskProperties(wx.Panel):
517 606
518 elif default_thresh in proj.threshold_modes.values(): 607 elif default_thresh in proj.threshold_modes.values():
519 preset_name = proj.threshold_modes.get_key(default_thresh)[0] 608 preset_name = proj.threshold_modes.get_key(default_thresh)[0]
520 - index = self.threshold_modes_names.index(preset_name) 609 + index = self.threshold_modes_names.index(preset_name)
521 self.combo_thresh.SetSelection(index) 610 self.combo_thresh.SetSelection(index)
522 thresh_min, thresh_max = default_thresh 611 thresh_min, thresh_max = default_thresh
523 else: 612 else:
@@ -571,7 +660,7 @@ class MaskProperties(wx.Panel): @@ -571,7 +660,7 @@ class MaskProperties(wx.Panel):
571 660
572 class EditionTools(wx.Panel): 661 class EditionTools(wx.Panel):
573 def __init__(self, parent): 662 def __init__(self, parent):
574 - wx.Panel.__init__(self, parent, size=(50,240)) 663 + wx.Panel.__init__(self, parent)
575 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR) 664 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR)
576 self.SetBackgroundColour(default_colour) 665 self.SetBackgroundColour(default_colour)
577 666
@@ -639,7 +728,7 @@ class EditionTools(wx.Panel): @@ -639,7 +728,7 @@ class EditionTools(wx.Panel):
639 wx.BOTTOM, 6) 728 wx.BOTTOM, 6)
640 sizer.Fit(self) 729 sizer.Fit(self)
641 730
642 - self.SetSizer(sizer) 731 + self.SetSizerAndFit(sizer)
643 self.Update() 732 self.Update()
644 self.SetAutoLayout(1) 733 self.SetAutoLayout(1)
645 734
@@ -717,7 +806,7 @@ class EditionTools(wx.Panel): @@ -717,7 +806,7 @@ class EditionTools(wx.Panel):
717 806
718 class WatershedTool(EditionTools): 807 class WatershedTool(EditionTools):
719 def __init__(self, parent): 808 def __init__(self, parent):
720 - wx.Panel.__init__(self, parent, size=(50,150)) 809 + wx.Panel.__init__(self, parent)
721 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR) 810 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR)
722 self.SetBackgroundColour(default_colour) 811 self.SetBackgroundColour(default_colour)
723 812
@@ -799,7 +888,7 @@ class WatershedTool(EditionTools): @@ -799,7 +888,7 @@ class WatershedTool(EditionTools):
799 sizer.Add(sizer_btns, 0, wx.EXPAND) 888 sizer.Add(sizer_btns, 0, wx.EXPAND)
800 sizer.Fit(self) 889 sizer.Fit(self)
801 890
802 - self.SetSizer(sizer) 891 + self.SetSizerAndFit(sizer)
803 self.Update() 892 self.Update()
804 self.SetAutoLayout(1) 893 self.SetAutoLayout(1)
805 894