Commit b6e949262b0baefc302e0ee82da0d50162eadc7a
1 parent
d67dc17a
Exists in
wxgtk3_bkp
Better sizing, but not completed.
Showing
2 changed files
with
119 additions
and
30 deletions
Show diff stats
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 | ... | ... |