Skip to content

Commit a4aaa61

Browse files
committed
Additional functionality #539.
1 parent 9a90a96 commit a4aaa61

1 file changed

Lines changed: 25 additions & 15 deletions

File tree

remi/gui.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2255,23 +2255,11 @@ def __init__(self, single_line=True, hint='', *args, **kwargs):
22552255
self.type = 'textarea'
22562256

22572257
self.single_line = single_line
2258+
self.attributes['single_line'] = 'false'
22582259
if single_line:
22592260
self.style['resize'] = 'none'
22602261
self.attributes['rows'] = '1'
2261-
self.attributes[self.EVENT_ONINPUT] = """
2262-
var elem = document.getElementById('%(emitter_identifier)s');
2263-
var enter_pressed = (elem.value.indexOf('\\n') > -1);
2264-
if(enter_pressed){
2265-
elem.value = elem.value.split('\\n').join('');
2266-
var params={};params['new_value']=elem.value;
2267-
remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);
2268-
}""" % {'emitter_identifier': str(self.identifier), 'event_name': Widget.EVENT_ONCHANGE}
2269-
#else:
2270-
# self.attributes[self.EVENT_ONINPUT] = """
2271-
# var elem = document.getElementById('%(emitter_identifier)s');
2272-
# var params={};params['new_value']=elem.value;
2273-
# remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);
2274-
# """ % {'emitter_identifier': str(self.identifier), 'event_name': Widget.EVENT_ONCHANGE}
2262+
self.attributes['single_line'] = 'true'
22752263

22762264
self.set_value('')
22772265

@@ -2303,7 +2291,29 @@ def get_value(self):
23032291
return self.get_text()
23042292

23052293
@decorate_set_on_listener("(self, emitter, new_value)")
2306-
@decorate_event
2294+
@decorate_event_js("""
2295+
var is_single_line = (parseInt(document.getElementById('%(emitter_identifier)s').getAttribute('rows')) < 2);
2296+
var elem = document.getElementById('%(emitter_identifier)s');
2297+
var enter_pressed = (elem.value.indexOf('\\n') > -1);
2298+
if(enter_pressed && is_single_line){
2299+
elem.value = elem.value.split('\\n').join('');
2300+
}
2301+
var params={};
2302+
params['new_value']=elem.value;
2303+
params['enter_pressed']=enter_pressed;
2304+
remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);
2305+
""")
2306+
def oninput(self, new_value, enter_pressed):
2307+
enter_pressed = enter_pressed in ('True', 'true')
2308+
if self.single_line and enter_pressed:
2309+
self.onchange(new_value)
2310+
return (new_value,)
2311+
2312+
@decorate_set_on_listener("(self, emitter, new_value)")
2313+
@decorate_event_js("""
2314+
var params={};
2315+
params['new_value']=document.getElementById('%(emitter_identifier)s').value;
2316+
remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);""")
23072317
def onchange(self, new_value):
23082318
"""Called when the user changes the TextInput content.
23092319
With single_line=True it fires in case of focus lost and Enter key pressed.

0 commit comments

Comments
 (0)