Lightningbeam/PyGUI-2.5.3/build/lib.linux-i686-2.6/GUI/GTextFields.py

77 lines
2.3 KiB
Python

#
# Python GUI - Text fields - Generic
#
from GUI.Properties import overridable_property
from GUI.Actions import ActionBase, action_property
from GUI import application
from GUI import Control
from GUI import EditCmdHandler
class TextField(Control, ActionBase, EditCmdHandler):
"""A control for entering and editing small amounts of text."""
text = overridable_property('text')
selection = overridable_property('selection', "Range of text selected.")
multiline = overridable_property('multiline', "Multiple text lines allowed.")
password = overridable_property('password', "Display characters obfuscated.")
enter_action = action_property('enter_action', "Action to be performed "
"when the Return or Enter key is pressed.")
escape_action = action_property('escape_action', "Action to be performed "
"when the Escape key is pressed.")
_may_be_password = True
#_tabbable = True
_default_tab_stop = True
_user_tab_stop_override = False
_enter_action = 'do_default_action'
_escape_action = 'do_cancel_action'
_intercept_tab_key = True
def __init__(self, **kwds):
self._multiline = kwds.pop('multiline')
Control.__init__(self, **kwds)
def get_multiline(self):
return self._multiline
def key_down(self, event):
#print "GTextField.key_down for", self ###
c = event.char
if c == '\r':
if event.key == 'enter' or not self._multiline:
self.do_enter_action()
return
if c == '\x1b':
self.do_escape_action()
return
if c == '\t':
if self._intercept_tab_key:
self.pass_event_to_next_handler(event)
return
Control.key_down(self, event)
def setup_menus(self, m):
Control.setup_menus(self, m)
EditCmdHandler.setup_menus(self, m)
def do_enter_action(self):
self.do_named_action('enter_action')
def do_escape_action(self):
self.do_named_action('escape_action')
def get_text_length(self):
# Implementations can override this if they have a more
# efficient way of getting the text length.
return len(self.text)
def get_value(self):
return self.text
def set_value(self, x):
self.text = x