Commit 0354b116abaceb19c785866b2db19aebd3cc5410
1 parent
def86810
Exists in
master
and in
68 other branches
FIX: Threshold bounds (fix #54)/ combo-gradient consistency
Showing
2 changed files
with
39 additions
and
7 deletions
Show diff stats
invesalius/control.py
| ... | ... | @@ -427,11 +427,20 @@ class Controller(): |
| 427 | 427 | |
| 428 | 428 | thresh_modes = proj.threshold_modes.keys() |
| 429 | 429 | thresh_modes.sort() |
| 430 | - | |
| 431 | 430 | default_threshold = const.THRESHOLD_PRESETS_INDEX |
| 432 | 431 | if proj.mask_dict: |
| 433 | - last = max(proj.mask_dict.keys()) | |
| 434 | - default_threshold = proj.mask_dict[last].threshold_range | |
| 432 | + keys = proj.mask_dict.keys() | |
| 433 | + last = max(keys) | |
| 434 | + (a,b) = proj.mask_dict[last].threshold_range | |
| 435 | + default_threshold = [a,b] | |
| 436 | + min_ = proj.threshold_range[0] | |
| 437 | + max_ = proj.threshold_range[1] | |
| 438 | + if default_threshold[0] < min_: | |
| 439 | + default_threshold[0] = min_ | |
| 440 | + if default_threshold[1] > max_: | |
| 441 | + default_threshold[1] = max_ | |
| 442 | + [a,b] = default_threshold | |
| 443 | + default_threshold = (a,b) | |
| 435 | 444 | ps.Publisher().sendMessage('Set threshold modes', |
| 436 | 445 | (thresh_modes,default_threshold)) |
| 437 | 446 | ... | ... |
invesalius/gui/task_slice.py
| ... | ... | @@ -336,10 +336,12 @@ class MaskProperties(wx.Panel): |
| 336 | 336 | |
| 337 | 337 | proj = Project() |
| 338 | 338 | self.threshold_modes = proj.threshold_modes |
| 339 | + self.threshold_modes_names = [] | |
| 339 | 340 | self.bind_evt_gradient = True |
| 340 | 341 | self.__bind_events() |
| 341 | 342 | self.__bind_events_wx() |
| 342 | 343 | |
| 344 | + | |
| 343 | 345 | def __bind_events(self): |
| 344 | 346 | ps.Publisher().subscribe(self.AddMask, 'Add mask') |
| 345 | 347 | # TODO: Uncomment |
| ... | ... | @@ -352,6 +354,7 @@ class MaskProperties(wx.Panel): |
| 352 | 354 | ps.Publisher().subscribe(self.SelectMaskName, 'Select mask name in combo') |
| 353 | 355 | ps.Publisher().subscribe(self.ChangeMaskName, 'Change mask name') |
| 354 | 356 | ps.Publisher().subscribe(self.OnCloseProject, 'Close project data') |
| 357 | + ps.Publisher().subscribe(self.SetThresholdValues2, 'Set threshold values') | |
| 355 | 358 | |
| 356 | 359 | def OnCloseProject(self, pubsub_evt): |
| 357 | 360 | self.CloseProject() |
| ... | ... | @@ -387,6 +390,19 @@ class MaskProperties(wx.Panel): |
| 387 | 390 | self.gradient.SetMaxValue(thresh_max) |
| 388 | 391 | self.bind_evt_gradient = True |
| 389 | 392 | |
| 393 | + def SetThresholdValues2(self, pubsub_evt): | |
| 394 | + thresh_min, thresh_max = pubsub_evt.data | |
| 395 | + self.gradient.SetMinValue(thresh_min) | |
| 396 | + self.gradient.SetMaxValue(thresh_max) | |
| 397 | + thresh = (thresh_min, thresh_max) | |
| 398 | + if thresh in Project().presets.thresh_ct.values(): | |
| 399 | + preset_name = Project().presets.thresh_ct.get_key(thresh)[0] | |
| 400 | + index = self.threshold_modes_names.index(preset_name) | |
| 401 | + self.combo_thresh.SetSelection(index) | |
| 402 | + else: | |
| 403 | + index = self.threshold_modes_names.index(_("Custom")) | |
| 404 | + self.combo_thresh.SetSelection(index) | |
| 405 | + | |
| 390 | 406 | def SetItemsColour(self, evt_pubsub): |
| 391 | 407 | colour = evt_pubsub.data |
| 392 | 408 | self.gradient.SetColour(colour) |
| ... | ... | @@ -408,17 +424,24 @@ class MaskProperties(wx.Panel): |
| 408 | 424 | |
| 409 | 425 | def SetThresholdModes(self, pubsub_evt): |
| 410 | 426 | (thresh_modes_names, default_thresh) = pubsub_evt.data |
| 411 | - print pubsub_evt.data | |
| 412 | 427 | self.combo_thresh.SetItems(thresh_modes_names) |
| 428 | + self.threshold_modes_names = thresh_modes_names | |
| 429 | + proj = Project() | |
| 430 | + | |
| 413 | 431 | if isinstance(default_thresh, int): |
| 414 | 432 | self.combo_thresh.SetSelection(default_thresh) |
| 415 | 433 | (thresh_min, thresh_max) =\ |
| 416 | 434 | self.threshold_modes[thresh_modes_names[default_thresh]] |
| 435 | + elif default_thresh in proj.presets.thresh_ct.values(): | |
| 436 | + preset_name = proj.presets.thresh_ct.get_key(default_thresh)[0] | |
| 437 | + index = self.threshold_modes_names.index(preset_name) | |
| 438 | + self.combo_thresh.SetSelection(index) | |
| 439 | + thresh_min, thresh_max = default_thresh | |
| 417 | 440 | else: |
| 418 | - self.combo_thresh.SetSelection(3) | |
| 419 | - thresh_min, thresh_max = default_thresh | |
| 441 | + index = self.threshold_modes_names.index(_("Custom")) | |
| 442 | + self.combo_thresh.SetSelection(index) | |
| 443 | + thresh_min, thresh_max = default_thresh | |
| 420 | 444 | |
| 421 | - print "Este e threshold", thresh_min, thresh_max | |
| 422 | 445 | self.gradient.SetMinValue(thresh_min) |
| 423 | 446 | self.gradient.SetMaxValue(thresh_max) |
| 424 | 447 | ... | ... |