Lightningbeam/GUI/Cocoa/TextField.py

50 lines
1.5 KiB
Python

#
# Python GUI - Text Fields - PyObjC
#
from Foundation import NSRange
from GUI import export
from GUI.StdFonts import system_font #application_font
from GUI import EditCmdHandler
from GUI.TextFieldBasedControls import TextFieldBasedControl
from GUI.GTextFields import TextField as GTextField
class TextField(TextFieldBasedControl, GTextField):
#_vertical_padding = 5
_intercept_tab_key = False
def __init__(self, text = "", font = system_font,
multiline = False, password = False, border = True, **kwds):
ns_textfield = self._create_ns_textfield(editable = True,
multiline = multiline, password = password,
text = text, font = font, border = border)
GTextField.__init__(self, _ns_view = ns_textfield,
multiline = multiline, **kwds)
def get_selection(self):
ns_editor = self._ns_editor()
if ns_editor:
start, length = ns_editor.selectedRange()
return (start, start + length)
else:
return (0, 0)
def set_selection(self, (start, end)):
self.become_target()
ns_editor = self._ns_editor()
if ns_editor:
ns_editor.setSelectedRange_(NSRange(start, end - start))
def select_all(self):
self.become_target()
self._ns_view.selectText_(None)
def _ns_editor(self):
return self._ns_view.currentEditor()
def _ns_edit_cmd_target(self):
return self._ns_editor()
export(TextField)