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 220 def __init__(self, parent):
221 221 wx.Panel.__init__(self, parent)
222 222 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition,
223   - self.GetSize(),FPB_DEFAULT_STYLE,
  223 + wx.DefaultSize,FPB_DEFAULT_STYLE,
224 224 fpb.FPB_SINGLE_FOLD)
225 225  
226 226 sizer = wx.BoxSizer(wx.VERTICAL)
... ...
invesalius/gui/task_slice.py
... ... @@ -118,7 +118,7 @@ class InnerTaskPanel(wx.Panel):
118 118 button_next.Bind(wx.EVT_BUTTON, self.OnButtonNextTask)
119 119  
120 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 122 line_sizer.Add(button_next, 0,
123 123 wx.ALIGN_RIGHT|wx.RIGHT|wx.LEFT|wx.BOTTOM, 5)
124 124 line_sizer.Fit(self)
... ... @@ -126,11 +126,11 @@ class InnerTaskPanel(wx.Panel):
126 126 # Add line sizers into main sizer
127 127 main_sizer = wx.BoxSizer(wx.VERTICAL)
128 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 131 main_sizer.Fit(self)
132 132  
133   - self.SetSizer(main_sizer)
  133 + self.SetSizerAndFit(main_sizer)
134 134 self.Update()
135 135 self.SetAutoLayout(1)
136 136  
... ... @@ -161,7 +161,7 @@ class InnerTaskPanel(wx.Panel):
161 161  
162 162 if to_generate:
163 163 mask_index = sl.current_mask.index
164   - method = {'algorithm': algorithm,
  164 + method = {'algorithm': algorithm,
165 165 'options': options}
166 166 srf_options = {"index": mask_index,
167 167 "name": '',
... ... @@ -170,7 +170,7 @@ class InnerTaskPanel(wx.Panel):
170 170 "keep_largest": False,
171 171 "overwrite": overwrite}
172 172  
173   - Publisher.sendMessage('Create surface from index',
  173 + Publisher.sendMessage('Create surface from index',
174 174 {'method': method, 'options': srf_options})
175 175 Publisher.sendMessage('Fold surface task')
176 176  
... ... @@ -200,7 +200,7 @@ class InnerTaskPanel(wx.Panel):
200 200  
201 201 class FoldPanel(wx.Panel):
202 202 def __init__(self, parent):
203   - wx.Panel.__init__(self, parent, size=(50,50))
  203 + wx.Panel.__init__(self, parent)
204 204 self.SetBackgroundColour(wx.Colour(0,255,0))
205 205  
206 206 inner_panel = InnerFoldPanel(self)
... ... @@ -209,7 +209,7 @@ class FoldPanel(wx.Panel):
209 209 sizer.Add(inner_panel, 1, wx.EXPAND|wx.GROW, 2)
210 210 sizer.Fit(self)
211 211  
212   - self.SetSizer(sizer)
  212 + self.SetSizerAndFit(sizer)
213 213 self.Update()
214 214 self.SetAutoLayout(1)
215 215  
... ... @@ -223,7 +223,8 @@ class InnerFoldPanel(wx.Panel):
223 223 def __init__(self, parent):
224 224 wx.Panel.__init__(self, parent)
225 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 229 # Fold panel and its style settings
229 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 232 # is not working properly in this panel. It might be on some child or
232 233 # parent panel. Perhaps we need to insert the item into the sizer also...
233 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 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 254 # Fold panel style
238 255 style = fpb.CaptionBarStyle()
... ... @@ -243,6 +260,9 @@ class InnerFoldPanel(wx.Panel):
243 260 # Fold 1 - Mask properties
244 261 item = fold_panel.AddFoldPanel(_("Mask properties"), collapsed=True)
245 262 self.mask_prop_panel = MaskProperties(item)
  263 +
  264 + #self.__calc_best_size(self.mask_prop_panel)
  265 +
246 266 fold_panel.ApplyCaptionStyle(item, style)
247 267 fold_panel.AddFoldPanelWindow(item, self.mask_prop_panel, Spacing= 0,
248 268 leftSpacing=0, rightSpacing=0)
... ... @@ -250,28 +270,47 @@ class InnerFoldPanel(wx.Panel):
250 270  
251 271 # Fold 2 - Advanced edition tools
252 272 item = fold_panel.AddFoldPanel(_("Advanced editing tools"), collapsed=True)
  273 + etw = EditionTools(item)
  274 +
  275 + #self.__calc_best_size(etw)
  276 +
253 277 fold_panel.ApplyCaptionStyle(item, style)
254   - fold_panel.AddFoldPanelWindow(item, EditionTools(item), Spacing= 0,
  278 + fold_panel.AddFoldPanelWindow(item, etw, Spacing= 0,
255 279 leftSpacing=0, rightSpacing=0)
256 280 self.__id_editor = item.GetId()
257 281 self.last_panel_opened = None
258 282  
259 283 # Fold 3 - Watershed
260 284 item = fold_panel.AddFoldPanel(_("Watershed"), collapsed=True)
  285 + wtw = WatershedTool(item)
  286 +
  287 + #self.__calc_best_size(wtw)
  288 +
261 289 fold_panel.ApplyCaptionStyle(item, style)
262   - fold_panel.AddFoldPanelWindow(item, WatershedTool(item), Spacing= 0,
  290 + fold_panel.AddFoldPanelWindow(item, wtw, Spacing= 0,
263 291 leftSpacing=0, rightSpacing=0)
264 292 self.__id_watershed = item.GetId()
265 293  
266 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 315 self.fold_panel = fold_panel
277 316 self.last_style = None
... ... @@ -279,6 +318,39 @@ class InnerFoldPanel(wx.Panel):
279 318 self.__bind_evt()
280 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 354 def __bind_evt(self):
283 355 self.fold_panel.Bind(fpb.EVT_CAPTIONBAR, self.OnFoldPressCaption)
284 356  
... ... @@ -313,6 +385,23 @@ class InnerFoldPanel(wx.Panel):
313 385 self.last_style = None
314 386  
315 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 406 def OnRetrieveStyle(self, pubsub_evt):
318 407 if (self.last_style == const.SLICE_STATE_EDITOR):
... ... @@ -331,7 +420,7 @@ class InnerFoldPanel(wx.Panel):
331 420  
332 421 class MaskProperties(wx.Panel):
333 422 def __init__(self, parent):
334   - wx.Panel.__init__(self, parent, size=(50,240))
  423 + wx.Panel.__init__(self, parent)
335 424  
336 425 ## LINE 1
337 426  
... ... @@ -380,7 +469,7 @@ class MaskProperties(wx.Panel):
380 469 sizer.Add(gradient, 1, wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT|wx.BOTTOM, 6)
381 470 sizer.Fit(self)
382 471  
383   - self.SetSizer(sizer)
  472 + self.SetSizerAndFit(sizer)
384 473 self.Update()
385 474 self.SetAutoLayout(1)
386 475  
... ... @@ -419,7 +508,7 @@ class MaskProperties(wx.Panel):
419 508 n = self.combo_thresh.GetCount()
420 509 for i in xrange(n-1, -1, -1):
421 510 self.combo_thresh.Delete(i)
422   -
  511 +
423 512 def OnRemoveMasks(self, pubsub_evt):
424 513 print "OnRemoveMasks"
425 514 list_index = pubsub_evt.data
... ... @@ -459,7 +548,7 @@ class MaskProperties(wx.Panel):
459 548 thresh = (thresh_min, thresh_max)
460 549 if thresh in Project().threshold_modes.values():
461 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 552 self.combo_thresh.SetSelection(index)
464 553 else:
465 554 index = self.threshold_modes_names.index(_("Custom"))
... ... @@ -473,7 +562,7 @@ class MaskProperties(wx.Panel):
473 562 thresh = (thresh_min, thresh_max)
474 563 if thresh in Project().threshold_modes.values():
475 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 566 self.combo_thresh.SetSelection(index)
478 567 else:
479 568 index = self.threshold_modes_names.index(_("Custom"))
... ... @@ -517,7 +606,7 @@ class MaskProperties(wx.Panel):
517 606  
518 607 elif default_thresh in proj.threshold_modes.values():
519 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 610 self.combo_thresh.SetSelection(index)
522 611 thresh_min, thresh_max = default_thresh
523 612 else:
... ... @@ -571,7 +660,7 @@ class MaskProperties(wx.Panel):
571 660  
572 661 class EditionTools(wx.Panel):
573 662 def __init__(self, parent):
574   - wx.Panel.__init__(self, parent, size=(50,240))
  663 + wx.Panel.__init__(self, parent)
575 664 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR)
576 665 self.SetBackgroundColour(default_colour)
577 666  
... ... @@ -639,7 +728,7 @@ class EditionTools(wx.Panel):
639 728 wx.BOTTOM, 6)
640 729 sizer.Fit(self)
641 730  
642   - self.SetSizer(sizer)
  731 + self.SetSizerAndFit(sizer)
643 732 self.Update()
644 733 self.SetAutoLayout(1)
645 734  
... ... @@ -717,7 +806,7 @@ class EditionTools(wx.Panel):
717 806  
718 807 class WatershedTool(EditionTools):
719 808 def __init__(self, parent):
720   - wx.Panel.__init__(self, parent, size=(50,150))
  809 + wx.Panel.__init__(self, parent)
721 810 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR)
722 811 self.SetBackgroundColour(default_colour)
723 812  
... ... @@ -799,7 +888,7 @@ class WatershedTool(EditionTools):
799 888 sizer.Add(sizer_btns, 0, wx.EXPAND)
800 889 sizer.Fit(self)
801 890  
802   - self.SetSizer(sizer)
  891 + self.SetSizerAndFit(sizer)
803 892 self.Update()
804 893 self.SetAutoLayout(1)
805 894  
... ...