50 lines
1.5 KiB
Python
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)
|