@@ -65,6 +65,11 @@ def __init__(self,toolfile=None, *a, **kw):
6565 self .wTree = Gtk .Builder ()
6666 self .wTree .set_translation_domain ("linuxcnc" ) # for locale translations
6767 self .wTree .add_from_file (os .path .join (datadir , "tooledit_gtk.glade" ) )
68+ # Track active edit session
69+ self .editable = None
70+ self .edit_path = None
71+ self .edit_column = None
72+
6873 # connect the signals from Glade
6974 dic = {
7075 "on_delete_clicked" : self .delete ,
@@ -90,6 +95,7 @@ def __init__(self,toolfile=None, *a, **kw):
9095 #print name,col
9196 renderer = self .wTree .get_object (name + '1' )
9297 renderer .connect ( 'edited' , self .col_editted , col + 1 , None )
98+ renderer .connect ( 'editing-started' , self .col_editing_started , col + 1 )
9399 renderer .props .editable = True
94100 self .all_label = self .wTree .get_object ("all_label" )
95101
@@ -101,6 +107,7 @@ def __init__(self,toolfile=None, *a, **kw):
101107 for name ,col in temp :
102108 renderer = self .wTree .get_object (name )
103109 renderer .connect ( 'edited' , self .col_editted , col , 'wear' )
110+ renderer .connect ( 'editing-started' , self .col_editing_started , col + 1 )
104111 renderer .props .editable = True
105112 # Hide columns we don't want to see
106113 self .set_col_visible (list = 'spyabcuvwdijq' , bool = False , tab = '2' )
@@ -114,6 +121,7 @@ def __init__(self,toolfile=None, *a, **kw):
114121 for name ,col in temp :
115122 renderer = self .wTree .get_object (name )
116123 renderer .connect ( 'edited' , self .col_editted , col , 'tool' )
124+ renderer .connect ( 'editing-started' , self .col_editing_started , col + 1 )
117125 renderer .props .editable = True
118126 # Hide columns we don't want to see
119127 self .set_col_visible (list = 'spyabcuvwdij' , bool = False , tab = '3' )
@@ -341,7 +349,9 @@ def reload(self,widget):
341349 self .add (None ,array )
342350
343351 def save (self ,widget ):
344- if self .toolfile == None :return
352+ if self .toolfile == None : return
353+ # commit the text when click on save while in edit mode
354+ self .commit_active_edit ()
345355 liststore = self .model
346356 # pre check before saving the file
347357 # if not done before, the file will be saved only until the erroneous line and the rest will be lost
@@ -481,9 +491,24 @@ def on_treeview2_button_press_event(self, widget, event):
481491 except :
482492 pass
483493
494+ def commit_active_edit (self ):
495+ if self .editable :
496+ self .validate_input (self .edit_path , self .editable .get_text (), self .edit_column )
497+ self .editable = None
498+ self .edit_path = None
499+ self .edit_column = None
500+
501+ def col_editing_started (self , renderer , editable , path , col ):
502+ self .editable = editable # Gtk.Entry
503+ self .edit_path = path # row path
504+ self .edit_column = col # column index
505+
506+ def col_editted (self , widget , path , new_text , col , filter ):
507+ self .validate_input (path , new_text , col )
508+
484509 # depending what is edited add the right type of info integer,float or text
485510 # If it's a filtered display then we must convert the path
486- def col_editted (self , widget , path , new_text , col , filter ):
511+ def validate_input (self , path , new_text , col ):
487512 if filter == 'wear' :
488513 (store_path ,) = self .wear_filter .convert_path_to_child_path (path )
489514 path = store_path
0 commit comments