Mercurial > libervia-web
comparison browser_side/base_panels.py @ 403:ec6f7581b453
browser_side: microblogs edition: <shift> + <enter> makes a new line, <esc> finishes the edition
author | souliane <souliane@mailoo.org> |
---|---|
date | Fri, 14 Mar 2014 21:00:13 +0100 |
parents | d7e78cb78dfc |
children | c393e7dc9ae6 |
comparison
equal
deleted
inserted
replaced
402:d7e78cb78dfc | 403:ec6f7581b453 |
---|---|
27 from pyjamas.ui.SimplePanel import SimplePanel | 27 from pyjamas.ui.SimplePanel import SimplePanel |
28 from pyjamas.ui.PopupPanel import PopupPanel | 28 from pyjamas.ui.PopupPanel import PopupPanel |
29 from pyjamas.ui.StackPanel import StackPanel | 29 from pyjamas.ui.StackPanel import StackPanel |
30 from pyjamas.ui.TextArea import TextArea | 30 from pyjamas.ui.TextArea import TextArea |
31 from pyjamas.ui.Event import BUTTON_LEFT, BUTTON_MIDDLE, BUTTON_RIGHT | 31 from pyjamas.ui.Event import BUTTON_LEFT, BUTTON_MIDDLE, BUTTON_RIGHT |
32 from pyjamas.ui.KeyboardListener import KEY_ENTER, KEY_ESCAPE, KeyboardHandler | 32 from pyjamas.ui.KeyboardListener import KEY_ENTER, KEY_ESCAPE, KEY_SHIFT, KeyboardHandler |
33 from pyjamas.ui.FocusListener import FocusHandler | 33 from pyjamas.ui.FocusListener import FocusHandler |
34 from pyjamas.ui.ClickListener import ClickHandler | 34 from pyjamas.ui.ClickListener import ClickHandler |
35 from pyjamas import DOM | 35 from pyjamas import DOM |
36 | 36 |
37 from datetime import datetime | 37 from datetime import datetime |
454 """ | 454 """ |
455 self.__single_line = single_line | 455 self.__single_line = single_line |
456 self.__enhance_display = enhance_display | 456 self.__enhance_display = enhance_display |
457 self.__listen_focus = single_line if listen_focus is None else listen_focus | 457 self.__listen_focus = single_line if listen_focus is None else listen_focus |
458 self.__listen_click = listen_click | 458 self.__listen_click = listen_click |
459 self.__shift_down = False | |
459 if self.__listen_focus: | 460 if self.__listen_focus: |
460 FocusHandler.__init__(self) | 461 FocusHandler.__init__(self) |
461 if self.__listen_click: | 462 if self.__listen_click: |
462 ClickHandler.__init__(self) | 463 ClickHandler.__init__(self) |
463 KeyboardHandler.__init__(self) | 464 KeyboardHandler.__init__(self) |
502 raise NotImplementedError | 503 raise NotImplementedError |
503 | 504 |
504 def onKeyDown(self, sender, keycode, modifiers): | 505 def onKeyDown(self, sender, keycode, modifiers): |
505 for listener in self.edit_listeners: | 506 for listener in self.edit_listeners: |
506 listener(self.textarea, keycode) | 507 listener(self.textarea, keycode) |
507 | |
508 def onKeyPress(self, sender, keycode, modifiers): | |
509 if not self.__single_line: | 508 if not self.__single_line: |
510 return | 509 return |
511 # XXX: it seems that pyjamas never catches the escape key | 510 if keycode == KEY_SHIFT or self.__shift_down: # allow input a new line with <shift> + <enter> |
511 self.__shift_down = True | |
512 return | |
512 if keycode in (KEY_ENTER, KEY_ESCAPE): # finish the edition | 513 if keycode in (KEY_ENTER, KEY_ESCAPE): # finish the edition |
513 self.textarea.setFocus(False) | 514 self.textarea.setFocus(False) |
514 if not self.__listen_focus: | 515 if not self.__listen_focus: |
515 self.edit(False) | 516 self.edit(False) |
517 | |
518 def onKeyUp(self, sender, keycode, modifiers): | |
519 if keycode == KEY_SHIFT: | |
520 self.__shift_down = False | |
516 | 521 |
517 def onLostFocus(self, sender): | 522 def onLostFocus(self, sender): |
518 """Finish the edition when focus is lost""" | 523 """Finish the edition when focus is lost""" |
519 if self.__listen_focus: | 524 if self.__listen_focus: |
520 self.edit(False) | 525 self.edit(False) |
575 self.textarea.setText(self._original_content['text']) | 580 self.textarea.setText(self._original_content['text']) |
576 self.setWidget(self.textarea if edit else self.display) | 581 self.setWidget(self.textarea if edit else self.display) |
577 SimpleTextEditor.edit(self, edit, abort, sync) | 582 SimpleTextEditor.edit(self, edit, abort, sync) |
578 | 583 |
579 def setFocus(self, focus): | 584 def setFocus(self, focus): |
585 if focus: | |
586 self.textarea.setCursorPos(len(self.textarea.getText())) | |
580 self.textarea.setFocus(focus) | 587 self.textarea.setFocus(focus) |