Commit 40abd5b9a75b17b8d356a00087bb3b591de21a4f
1 parent
335ce5cf
Exists in
master
and in
2 other branches
Better surface combobox manage
Showing
1 changed file
with
34 additions
and
25 deletions
Show diff stats
invesalius/gui/task_surface.py
@@ -400,13 +400,12 @@ class SurfaceProperties(wx.Panel): | @@ -400,13 +400,12 @@ class SurfaceProperties(wx.Panel): | ||
400 | default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR) | 400 | default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR) |
401 | self.SetBackgroundColour(default_colour) | 401 | self.SetBackgroundColour(default_colour) |
402 | 402 | ||
403 | - self.surface_dict = utl.TwoWaysDictionary() | 403 | + self.surface_list = [] |
404 | 404 | ||
405 | ## LINE 1 | 405 | ## LINE 1 |
406 | 406 | ||
407 | # Combo related to mask naem | 407 | # Combo related to mask naem |
408 | - combo_surface_name = wx.ComboBox(self, -1, "", choices= | ||
409 | - self.surface_dict.keys() or ["", ], | 408 | + combo_surface_name = wx.ComboBox(self, -1, "", |
410 | style=wx.CB_DROPDOWN|wx.CB_READONLY) | 409 | style=wx.CB_DROPDOWN|wx.CB_READONLY) |
411 | combo_surface_name.SetSelection(0) | 410 | combo_surface_name.SetSelection(0) |
412 | if sys.platform != 'win32': | 411 | if sys.platform != 'win32': |
@@ -476,20 +475,20 @@ class SurfaceProperties(wx.Panel): | @@ -476,20 +475,20 @@ class SurfaceProperties(wx.Panel): | ||
476 | def OnRemoveSurfaces(self, pubsub_evt): | 475 | def OnRemoveSurfaces(self, pubsub_evt): |
477 | list_index = pubsub_evt.data | 476 | list_index = pubsub_evt.data |
478 | 477 | ||
479 | - old_dict = self.surface_dict | ||
480 | - new_dict = utl.TwoWaysDictionary() | ||
481 | - for index in list_index: | ||
482 | - self.combo_surface_name.Delete(index) | ||
483 | - | ||
484 | - for name in old_dict: | ||
485 | - if old_dict[name] < index: | ||
486 | - new_dict[name] = old_dict[name] | ||
487 | - if old_dict[name] > index: | ||
488 | - new_dict[name] = old_dict[name] -1 | ||
489 | - old_dict = new_dict | ||
490 | - self.surface_dict = new_dict | 478 | + old_dict = self.surface_list |
479 | + new_dict = [] | ||
480 | + for n, (name, index) in enumerate(old_dict): | ||
481 | + if n not in list_index: | ||
482 | + new_dict.append([name, index]) | ||
483 | + self.surface_list = new_dict | ||
491 | 484 | ||
485 | + s = self.combo_surface_name.GetSelection() | ||
486 | + self.combo_surface_name.SetItems([n[0] for n in self.surface_list]) | ||
492 | 487 | ||
488 | + if s in list_index: | ||
489 | + self.combo_surface_name.SetSelection(0) | ||
490 | + else: | ||
491 | + self.combo_surface_name.SetSelection(s) | ||
493 | 492 | ||
494 | def OnCloseProject(self, pubsub_evt): | 493 | def OnCloseProject(self, pubsub_evt): |
495 | self.CloseProject() | 494 | self.CloseProject() |
@@ -501,28 +500,38 @@ class SurfaceProperties(wx.Panel): | @@ -501,28 +500,38 @@ class SurfaceProperties(wx.Panel): | ||
501 | 500 | ||
502 | def ChangeSurfaceName(self, pubsub_evt): | 501 | def ChangeSurfaceName(self, pubsub_evt): |
503 | index, name = pubsub_evt.data | 502 | index, name = pubsub_evt.data |
504 | - old_name = self.surface_dict.get_key(index) | ||
505 | - self.surface_dict.remove(old_name) | ||
506 | - self.surface_dict[name] = index | 503 | + self.surface_list[index][0] = name |
507 | self.combo_surface_name.SetString(index, name) | 504 | self.combo_surface_name.SetString(index, name) |
508 | - self.combo_surface_name.Refresh() | 505 | + |
506 | + print ">>>> SURFACE DICT", self.surface_list | ||
509 | 507 | ||
510 | def InsertNewSurface(self, pubsub_evt): | 508 | def InsertNewSurface(self, pubsub_evt): |
511 | #not_update = len(pubsub_evt.data) == 5 | 509 | #not_update = len(pubsub_evt.data) == 5 |
512 | index = pubsub_evt.data[0] | 510 | index = pubsub_evt.data[0] |
513 | name = pubsub_evt.data[1] | 511 | name = pubsub_evt.data[1] |
514 | colour = [value*255 for value in pubsub_evt.data[2]] | 512 | colour = [value*255 for value in pubsub_evt.data[2]] |
515 | - overwrite = name in self.surface_dict.keys() | ||
516 | - #if index not in self.surface_dict.values(): | ||
517 | - if not overwrite or not self.surface_dict: | ||
518 | - self.surface_dict[name] = index | ||
519 | - index = self.combo_surface_name.Append(name) | 513 | + i = 0 |
514 | + try: | ||
515 | + i = self.surface_list.index([name, index]) | ||
516 | + overwrite = True | ||
517 | + except ValueError: | ||
518 | + overwrite = False | ||
519 | + | ||
520 | + if overwrite: | ||
521 | + self.surface_list[i] = [name, index] | ||
522 | + else: | ||
523 | + self.surface_list.append([name, index]) | ||
524 | + i = len(self.surface_list) - 1 | ||
525 | + | ||
526 | + self.combo_surface_name.SetItems([n[0] for n in self.surface_list]) | ||
527 | + self.combo_surface_name.SetSelection(i) | ||
520 | transparency = 100*pubsub_evt.data[4] | 528 | transparency = 100*pubsub_evt.data[4] |
521 | self.button_colour.SetColour(colour) | 529 | self.button_colour.SetColour(colour) |
522 | self.slider_transparency.SetValue(transparency) | 530 | self.slider_transparency.SetValue(transparency) |
523 | - self.combo_surface_name.SetSelection(index) | ||
524 | Publisher.sendMessage('Update surface data', (index)) | 531 | Publisher.sendMessage('Update surface data', (index)) |
525 | 532 | ||
533 | + | ||
534 | + | ||
526 | def OnComboName(self, evt): | 535 | def OnComboName(self, evt): |
527 | surface_name = evt.GetString() | 536 | surface_name = evt.GetString() |
528 | surface_index = evt.GetSelection() | 537 | surface_index = evt.GetSelection() |