Commit 0354b116abaceb19c785866b2db19aebd3cc5410
1 parent
def86810
Exists in
master
and in
6 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,11 +427,20 @@ class Controller(): | ||
427 | 427 | ||
428 | thresh_modes = proj.threshold_modes.keys() | 428 | thresh_modes = proj.threshold_modes.keys() |
429 | thresh_modes.sort() | 429 | thresh_modes.sort() |
430 | - | ||
431 | default_threshold = const.THRESHOLD_PRESETS_INDEX | 430 | default_threshold = const.THRESHOLD_PRESETS_INDEX |
432 | if proj.mask_dict: | 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 | ps.Publisher().sendMessage('Set threshold modes', | 444 | ps.Publisher().sendMessage('Set threshold modes', |
436 | (thresh_modes,default_threshold)) | 445 | (thresh_modes,default_threshold)) |
437 | 446 |
invesalius/gui/task_slice.py
@@ -336,10 +336,12 @@ class MaskProperties(wx.Panel): | @@ -336,10 +336,12 @@ class MaskProperties(wx.Panel): | ||
336 | 336 | ||
337 | proj = Project() | 337 | proj = Project() |
338 | self.threshold_modes = proj.threshold_modes | 338 | self.threshold_modes = proj.threshold_modes |
339 | + self.threshold_modes_names = [] | ||
339 | self.bind_evt_gradient = True | 340 | self.bind_evt_gradient = True |
340 | self.__bind_events() | 341 | self.__bind_events() |
341 | self.__bind_events_wx() | 342 | self.__bind_events_wx() |
342 | 343 | ||
344 | + | ||
343 | def __bind_events(self): | 345 | def __bind_events(self): |
344 | ps.Publisher().subscribe(self.AddMask, 'Add mask') | 346 | ps.Publisher().subscribe(self.AddMask, 'Add mask') |
345 | # TODO: Uncomment | 347 | # TODO: Uncomment |
@@ -352,6 +354,7 @@ class MaskProperties(wx.Panel): | @@ -352,6 +354,7 @@ class MaskProperties(wx.Panel): | ||
352 | ps.Publisher().subscribe(self.SelectMaskName, 'Select mask name in combo') | 354 | ps.Publisher().subscribe(self.SelectMaskName, 'Select mask name in combo') |
353 | ps.Publisher().subscribe(self.ChangeMaskName, 'Change mask name') | 355 | ps.Publisher().subscribe(self.ChangeMaskName, 'Change mask name') |
354 | ps.Publisher().subscribe(self.OnCloseProject, 'Close project data') | 356 | ps.Publisher().subscribe(self.OnCloseProject, 'Close project data') |
357 | + ps.Publisher().subscribe(self.SetThresholdValues2, 'Set threshold values') | ||
355 | 358 | ||
356 | def OnCloseProject(self, pubsub_evt): | 359 | def OnCloseProject(self, pubsub_evt): |
357 | self.CloseProject() | 360 | self.CloseProject() |
@@ -387,6 +390,19 @@ class MaskProperties(wx.Panel): | @@ -387,6 +390,19 @@ class MaskProperties(wx.Panel): | ||
387 | self.gradient.SetMaxValue(thresh_max) | 390 | self.gradient.SetMaxValue(thresh_max) |
388 | self.bind_evt_gradient = True | 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 | def SetItemsColour(self, evt_pubsub): | 406 | def SetItemsColour(self, evt_pubsub): |
391 | colour = evt_pubsub.data | 407 | colour = evt_pubsub.data |
392 | self.gradient.SetColour(colour) | 408 | self.gradient.SetColour(colour) |
@@ -408,17 +424,24 @@ class MaskProperties(wx.Panel): | @@ -408,17 +424,24 @@ class MaskProperties(wx.Panel): | ||
408 | 424 | ||
409 | def SetThresholdModes(self, pubsub_evt): | 425 | def SetThresholdModes(self, pubsub_evt): |
410 | (thresh_modes_names, default_thresh) = pubsub_evt.data | 426 | (thresh_modes_names, default_thresh) = pubsub_evt.data |
411 | - print pubsub_evt.data | ||
412 | self.combo_thresh.SetItems(thresh_modes_names) | 427 | self.combo_thresh.SetItems(thresh_modes_names) |
428 | + self.threshold_modes_names = thresh_modes_names | ||
429 | + proj = Project() | ||
430 | + | ||
413 | if isinstance(default_thresh, int): | 431 | if isinstance(default_thresh, int): |
414 | self.combo_thresh.SetSelection(default_thresh) | 432 | self.combo_thresh.SetSelection(default_thresh) |
415 | (thresh_min, thresh_max) =\ | 433 | (thresh_min, thresh_max) =\ |
416 | self.threshold_modes[thresh_modes_names[default_thresh]] | 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 | else: | 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 | self.gradient.SetMinValue(thresh_min) | 445 | self.gradient.SetMinValue(thresh_min) |
423 | self.gradient.SetMaxValue(thresh_max) | 446 | self.gradient.SetMaxValue(thresh_max) |
424 | 447 |