Commit 40466824c428da396f37502b925f979af9da68b7
1 parent
dff1e5b0
Exists in
master
managing mask showing and name edition using click events
Showing
2 changed files
with
41 additions
and
23 deletions
Show diff stats
app.py
@@ -102,7 +102,7 @@ class InVesalius(wx.App): | @@ -102,7 +102,7 @@ class InVesalius(wx.App): | ||
102 | """ | 102 | """ |
103 | Initialize splash screen and main frame. | 103 | Initialize splash screen and main frame. |
104 | """ | 104 | """ |
105 | - | 105 | + |
106 | from multiprocessing import freeze_support | 106 | from multiprocessing import freeze_support |
107 | freeze_support() | 107 | freeze_support() |
108 | 108 | ||
@@ -183,18 +183,18 @@ class Inv3SplashScreen(SplashScreen): | @@ -183,18 +183,18 @@ class Inv3SplashScreen(SplashScreen): | ||
183 | 183 | ||
184 | # session.SaveConfigFileBackup() | 184 | # session.SaveConfigFileBackup() |
185 | 185 | ||
186 | - | 186 | + |
187 | # Only after language was defined, splash screen will be | 187 | # Only after language was defined, splash screen will be |
188 | # shown | 188 | # shown |
189 | if lang: | 189 | if lang: |
190 | - | 190 | + |
191 | #import locale | 191 | #import locale |
192 | #try: | 192 | #try: |
193 | # locale.setlocale(locale.LC_ALL, '') | 193 | # locale.setlocale(locale.LC_ALL, '') |
194 | #except locale.Error: | 194 | #except locale.Error: |
195 | # pass | 195 | # pass |
196 | - | ||
197 | - | 196 | + |
197 | + | ||
198 | # For pt_BR, splash_pt.png should be used | 198 | # For pt_BR, splash_pt.png should be used |
199 | if (lang.startswith('pt')): | 199 | if (lang.startswith('pt')): |
200 | icon_file = "splash_pt.png" | 200 | icon_file = "splash_pt.png" |
@@ -206,13 +206,13 @@ class Inv3SplashScreen(SplashScreen): | @@ -206,13 +206,13 @@ class Inv3SplashScreen(SplashScreen): | ||
206 | abs_file_path = os.path.abspath(".." + os.sep) | 206 | abs_file_path = os.path.abspath(".." + os.sep) |
207 | path = abs_file_path | 207 | path = abs_file_path |
208 | path = os.path.join(path, 'icons', icon_file) | 208 | path = os.path.join(path, 'icons', icon_file) |
209 | - | 209 | + |
210 | else: | 210 | else: |
211 | 211 | ||
212 | path = os.path.join(".","icons", icon_file) | 212 | path = os.path.join(".","icons", icon_file) |
213 | if not os.path.exists(path): | 213 | if not os.path.exists(path): |
214 | path = os.path.join(".", "icons", "splash_en.png") | 214 | path = os.path.join(".", "icons", "splash_en.png") |
215 | - | 215 | + |
216 | bmp = wx.Image(path).ConvertToBitmap() | 216 | bmp = wx.Image(path).ConvertToBitmap() |
217 | 217 | ||
218 | try: | 218 | try: |
@@ -236,10 +236,10 @@ class Inv3SplashScreen(SplashScreen): | @@ -236,10 +236,10 @@ class Inv3SplashScreen(SplashScreen): | ||
236 | from invesalius.gui.frame import Frame | 236 | from invesalius.gui.frame import Frame |
237 | from invesalius.control import Controller | 237 | from invesalius.control import Controller |
238 | from invesalius.project import Project | 238 | from invesalius.project import Project |
239 | - | 239 | + |
240 | self.main = Frame(None) | 240 | self.main = Frame(None) |
241 | self.control = Controller(self.main) | 241 | self.control = Controller(self.main) |
242 | - | 242 | + |
243 | self.fc = wx.CallLater(200, self.ShowMain) | 243 | self.fc = wx.CallLater(200, self.ShowMain) |
244 | options, args = parse_comand_line() | 244 | options, args = parse_comand_line() |
245 | wx.CallLater(1, use_cmd_optargs, options, args) | 245 | wx.CallLater(1, use_cmd_optargs, options, args) |
@@ -502,7 +502,7 @@ def main(): | @@ -502,7 +502,7 @@ def main(): | ||
502 | if __name__ == '__main__': | 502 | if __name__ == '__main__': |
503 | #Is needed because of pyinstaller | 503 | #Is needed because of pyinstaller |
504 | multiprocessing.freeze_support() | 504 | multiprocessing.freeze_support() |
505 | - | 505 | + |
506 | #Needed in win 32 exe | 506 | #Needed in win 32 exe |
507 | if hasattr(sys,"frozen") and sys.platform.startswith('win'): | 507 | if hasattr(sys,"frozen") and sys.platform.startswith('win'): |
508 | 508 | ||
@@ -527,4 +527,3 @@ if __name__ == '__main__': | @@ -527,4 +527,3 @@ if __name__ == '__main__': | ||
527 | 527 | ||
528 | # Init application | 528 | # Init application |
529 | main() | 529 | main() |
530 | - |
invesalius/gui/data_notebook.py
@@ -366,8 +366,9 @@ class MasksListCtrlPanel(wx.ListCtrl): | @@ -366,8 +366,9 @@ class MasksListCtrlPanel(wx.ListCtrl): | ||
366 | def __bind_events_wx(self): | 366 | def __bind_events_wx(self): |
367 | self.Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEditLabel) | 367 | self.Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEditLabel) |
368 | self.Bind(wx.EVT_KEY_UP, self.OnKeyEvent) | 368 | self.Bind(wx.EVT_KEY_UP, self.OnKeyEvent) |
369 | - self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) | 369 | + # self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) |
370 | self.Bind(wx.EVT_LEFT_UP, self.OnClickItem) | 370 | self.Bind(wx.EVT_LEFT_UP, self.OnClickItem) |
371 | + self.Bind(wx.EVT_LEFT_DCLICK, self.OnDblClickItem) | ||
371 | 372 | ||
372 | def __bind_events(self): | 373 | def __bind_events(self): |
373 | Publisher.subscribe(self.AddMask, 'Add mask') | 374 | Publisher.subscribe(self.AddMask, 'Add mask') |
@@ -482,6 +483,16 @@ class MasksListCtrlPanel(wx.ListCtrl): | @@ -482,6 +483,16 @@ class MasksListCtrlPanel(wx.ListCtrl): | ||
482 | 483 | ||
483 | self.image_gray = Image.open(os.path.join(inv_paths.ICON_DIR, "object_colour.jpg")) | 484 | self.image_gray = Image.open(os.path.join(inv_paths.ICON_DIR, "object_colour.jpg")) |
484 | 485 | ||
486 | + def get_column_clicked(self, position): | ||
487 | + epx, epy = position | ||
488 | + wpx, wpy = self.GetPosition() | ||
489 | + width_sum = 0 | ||
490 | + for i in range(self.GetColumnCount()): | ||
491 | + width_sum += self.GetColumnWidth(i) | ||
492 | + if (epx - wpx) <= width_sum: | ||
493 | + return i | ||
494 | + return -1 | ||
495 | + | ||
485 | def OnEditLabel(self, evt): | 496 | def OnEditLabel(self, evt): |
486 | if not evt.IsEditCancelled(): | 497 | if not evt.IsEditCancelled(): |
487 | index = evt.GetIndex() | 498 | index = evt.GetIndex() |
@@ -502,7 +513,8 @@ class MasksListCtrlPanel(wx.ListCtrl): | @@ -502,7 +513,8 @@ class MasksListCtrlPanel(wx.ListCtrl): | ||
502 | def OnClickItem(self, evt): | 513 | def OnClickItem(self, evt): |
503 | self._click_check = False | 514 | self._click_check = False |
504 | item_idx, flag = (self.HitTest(evt.GetPosition())) | 515 | item_idx, flag = (self.HitTest(evt.GetPosition())) |
505 | - if flag == wx.LIST_HITTEST_ONITEMICON: | 516 | + column_clicked = self.get_column_clicked(evt.GetPosition()) |
517 | + if column_clicked == 0: | ||
506 | self._click_check = True | 518 | self._click_check = True |
507 | item = self.GetItem(item_idx, 0) | 519 | item = self.GetItem(item_idx, 0) |
508 | flag = not bool(item.GetImage()) | 520 | flag = not bool(item.GetImage()) |
@@ -510,16 +522,23 @@ class MasksListCtrlPanel(wx.ListCtrl): | @@ -510,16 +522,23 @@ class MasksListCtrlPanel(wx.ListCtrl): | ||
510 | self.OnCheckItem(item_idx, flag) | 522 | self.OnCheckItem(item_idx, flag) |
511 | evt.Skip() | 523 | evt.Skip() |
512 | 524 | ||
513 | - def OnItemActivated(self, evt): | ||
514 | - if not self._click_check: | ||
515 | - item = self.GetItem(evt.GetItem().GetId(), 1) | ||
516 | - ctrl = self.EditLabel(item.GetId()) | ||
517 | - w, h = ctrl.GetClientSize() | ||
518 | - w = self.GetColumnWidth(1) | ||
519 | - ctrl.SetClientSize(w, h) | ||
520 | - ctrl.SetValue(item.GetText()) | ||
521 | - ctrl.SelectAll() | ||
522 | - evt.Skip() | 525 | + def OnDblClickItem(self, evt): |
526 | + self._click_check = False | ||
527 | + item_idx, flag = (self.HitTest(evt.GetPosition())) | ||
528 | + column_clicked = self.get_column_clicked(evt.GetPosition()) | ||
529 | + if column_clicked == 1: | ||
530 | + item = self.GetItem(item_idx, 1) | ||
531 | + self.enter_edition(item) | ||
532 | + evt.Skip() | ||
533 | + | ||
534 | + def enter_edition(self, item): | ||
535 | + print("Enter edition") | ||
536 | + ctrl = self.EditLabel(item.GetId()) | ||
537 | + w, h = ctrl.GetClientSize() | ||
538 | + w = self.GetColumnWidth(1) | ||
539 | + ctrl.SetClientSize(w, h) | ||
540 | + ctrl.SetValue(item.GetText()) | ||
541 | + ctrl.SelectAll() | ||
523 | 542 | ||
524 | def CreateColourBitmap(self, colour): | 543 | def CreateColourBitmap(self, colour): |
525 | """ | 544 | """ |