Commit 40466824c428da396f37502b925f979af9da68b7

Authored by Thiago Franco de Moraes
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 102 """
103 103 Initialize splash screen and main frame.
104 104 """
105   -
  105 +
106 106 from multiprocessing import freeze_support
107 107 freeze_support()
108 108  
... ... @@ -183,18 +183,18 @@ class Inv3SplashScreen(SplashScreen):
183 183  
184 184 # session.SaveConfigFileBackup()
185 185  
186   -
  186 +
187 187 # Only after language was defined, splash screen will be
188 188 # shown
189 189 if lang:
190   -
  190 +
191 191 #import locale
192 192 #try:
193 193 # locale.setlocale(locale.LC_ALL, '')
194 194 #except locale.Error:
195 195 # pass
196   -
197   -
  196 +
  197 +
198 198 # For pt_BR, splash_pt.png should be used
199 199 if (lang.startswith('pt')):
200 200 icon_file = "splash_pt.png"
... ... @@ -206,13 +206,13 @@ class Inv3SplashScreen(SplashScreen):
206 206 abs_file_path = os.path.abspath(".." + os.sep)
207 207 path = abs_file_path
208 208 path = os.path.join(path, 'icons', icon_file)
209   -
  209 +
210 210 else:
211 211  
212 212 path = os.path.join(".","icons", icon_file)
213 213 if not os.path.exists(path):
214 214 path = os.path.join(".", "icons", "splash_en.png")
215   -
  215 +
216 216 bmp = wx.Image(path).ConvertToBitmap()
217 217  
218 218 try:
... ... @@ -236,10 +236,10 @@ class Inv3SplashScreen(SplashScreen):
236 236 from invesalius.gui.frame import Frame
237 237 from invesalius.control import Controller
238 238 from invesalius.project import Project
239   -
  239 +
240 240 self.main = Frame(None)
241 241 self.control = Controller(self.main)
242   -
  242 +
243 243 self.fc = wx.CallLater(200, self.ShowMain)
244 244 options, args = parse_comand_line()
245 245 wx.CallLater(1, use_cmd_optargs, options, args)
... ... @@ -502,7 +502,7 @@ def main():
502 502 if __name__ == '__main__':
503 503 #Is needed because of pyinstaller
504 504 multiprocessing.freeze_support()
505   -
  505 +
506 506 #Needed in win 32 exe
507 507 if hasattr(sys,"frozen") and sys.platform.startswith('win'):
508 508  
... ... @@ -527,4 +527,3 @@ if __name__ == '__main__':
527 527  
528 528 # Init application
529 529 main()
530   -
... ...
invesalius/gui/data_notebook.py
... ... @@ -366,8 +366,9 @@ class MasksListCtrlPanel(wx.ListCtrl):
366 366 def __bind_events_wx(self):
367 367 self.Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEditLabel)
368 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 370 self.Bind(wx.EVT_LEFT_UP, self.OnClickItem)
  371 + self.Bind(wx.EVT_LEFT_DCLICK, self.OnDblClickItem)
371 372  
372 373 def __bind_events(self):
373 374 Publisher.subscribe(self.AddMask, 'Add mask')
... ... @@ -482,6 +483,16 @@ class MasksListCtrlPanel(wx.ListCtrl):
482 483  
483 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 496 def OnEditLabel(self, evt):
486 497 if not evt.IsEditCancelled():
487 498 index = evt.GetIndex()
... ... @@ -502,7 +513,8 @@ class MasksListCtrlPanel(wx.ListCtrl):
502 513 def OnClickItem(self, evt):
503 514 self._click_check = False
504 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 518 self._click_check = True
507 519 item = self.GetItem(item_idx, 0)
508 520 flag = not bool(item.GetImage())
... ... @@ -510,16 +522,23 @@ class MasksListCtrlPanel(wx.ListCtrl):
510 522 self.OnCheckItem(item_idx, flag)
511 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 543 def CreateColourBitmap(self, colour):
525 544 """
... ...