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 | ... | ... |