Skip to content

Commit 289a046

Browse files
authored
Merge pull request #3787 from hansu/2818-tooledit-save-text-edit-mode
tooledit: save current text when in edit mode
2 parents 4954220 + 02b0dd9 commit 289a046

1 file changed

Lines changed: 27 additions & 2 deletions

File tree

lib/python/gladevcp/tooledit_widget.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)