Spaces:
Runtime error
Runtime error
text-2-character-anim
/
pyrender
/.eggs
/pyglet-2.0.5-py3.10.egg
/pyglet
/window
/cocoa
/pyglet_textview.py
import unicodedata | |
from pyglet.window import key | |
from pyglet.libs.darwin.cocoapy import ObjCClass, ObjCSubclass, ObjCInstance | |
from pyglet.libs.darwin.cocoapy import PyObjectEncoding, send_super | |
from pyglet.libs.darwin.cocoapy import CFSTR, cfstring_to_string | |
NSArray = ObjCClass('NSArray') | |
NSApplication = ObjCClass('NSApplication') | |
# This custom NSTextView subclass is used for capturing all of the | |
# on_text, on_text_motion, and on_text_motion_select events. | |
class PygletTextView_Implementation: | |
PygletTextView = ObjCSubclass('NSTextView', 'PygletTextView') | |
def initWithCocoaWindow_(self, window): | |
self = ObjCInstance(send_super(self, 'init')) | |
if not self: | |
return None | |
self._window = window | |
# Interpret tab and return as raw characters | |
self.setFieldEditor_(False) | |
self.empty_string = CFSTR("") | |
return self | |
def dealloc(self): | |
self.empty_string.release() | |
def keyDown_(self, nsevent): | |
array = NSArray.arrayWithObject_(nsevent) | |
self.interpretKeyEvents_(array) | |
def insertText_(self, text): | |
text = cfstring_to_string(text) | |
self.setString_(self.empty_string) | |
# Don't send control characters (tab, newline) as on_text events. | |
if unicodedata.category(text[0]) != 'Cc': | |
self._window.dispatch_event("on_text", text) | |
def insertNewline_(self, sender): | |
# Distinguish between carriage return (u'\r') and enter (u'\x03'). | |
# Only the return key press gets sent as an on_text event. | |
event = NSApplication.sharedApplication().currentEvent() | |
chars = event.charactersIgnoringModifiers() | |
ch = chr(chars.characterAtIndex_(0)) | |
if ch == u'\r': | |
self._window.dispatch_event("on_text", u'\r') | |
def moveUp_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_UP) | |
def moveDown_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_DOWN) | |
def moveLeft_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_LEFT) | |
def moveRight_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_RIGHT) | |
def moveWordLeft_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_PREVIOUS_WORD) | |
def moveWordRight_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_NEXT_WORD) | |
def moveToBeginningOfLine_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_BEGINNING_OF_LINE) | |
def moveToEndOfLine_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_END_OF_LINE) | |
def scrollPageUp_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_PREVIOUS_PAGE) | |
def scrollPageDown_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_NEXT_PAGE) | |
def scrollToBeginningOfDocument_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion", key.MOTION_BEGINNING_OF_FILE) | |
def scrollToEndOfDocument_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion", key.MOTION_END_OF_FILE) | |
def deleteBackward_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_BACKSPACE) | |
def deleteForward_(self, sender): | |
self._window.dispatch_event("on_text_motion", key.MOTION_DELETE) | |
def moveUpAndModifySelection_(self, sender): | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_UP) | |
def moveDownAndModifySelection_(self, sender): | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_DOWN) | |
def moveLeftAndModifySelection_(self, sender): | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_LEFT) | |
def moveRightAndModifySelection_(self, sender): | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_RIGHT) | |
def moveWordLeftAndModifySelection_(self, sender): | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_PREVIOUS_WORD) | |
def moveWordRightAndModifySelection_(self, sender): | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_NEXT_WORD) | |
def moveToBeginningOfLineAndModifySelection_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_BEGINNING_OF_LINE) | |
def moveToEndOfLineAndModifySelection_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_END_OF_LINE) | |
def pageUpAndModifySelection_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_PREVIOUS_PAGE) | |
def pageDownAndModifySelection_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_NEXT_PAGE) | |
def moveToBeginningOfDocumentAndModifySelection_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_BEGINNING_OF_FILE) | |
def moveToEndOfDocumentAndModifySelection_(self, sender): # Mac OS X 10.6 | |
self._window.dispatch_event("on_text_motion_select", key.MOTION_END_OF_FILE) | |
PygletTextView = ObjCClass('PygletTextView') | |