machandler.py (3463B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\services\ime\machandler.py 2 from carbonui.services.ime.basehandler import BaseImeHandler 3 import trinity 4 NS_NOT_FOUND = 9223372036854775807L 5 EMPTY_RANGE = (NS_NOT_FOUND, 0) 6 7 class MacImeHandler(BaseImeHandler): 8 9 def __init__(self): 10 super(MacImeHandler, self).__init__() 11 self._markedRange = EMPTY_RANGE 12 self._selectedRange = EMPTY_RANGE 13 trinity.app.onInsertTextIME_MacOS = self._onInsertTextIME_MacOS 14 trinity.app.onSetMarkedTextIME_MacOS = self._onSetMarkedTextIME_MacOS 15 trinity.app.onKeyboardLayoutChange_MacOS = self._onKeyboardLayoutChange_MacOS 16 self.currentLanguageMac = self.ime.GetKeyboardLayout() 17 18 def __del__(self): 19 super(MacImeHandler, self).__del__() 20 trinity.app.onInsertTextIME_MacOS = None 21 trinity.app.onSetMarkedTextIME_MacOS = None 22 trinity.app.onKeyboardLayoutChange_MacOS = None 23 self._HideCompositionWindow() 24 25 def _IsCurrentLayoutKorean(self): 26 return self.currentLanguageMac.startswith('com.apple.inputmethod.Korean') 27 28 def _onKeyboardLayoutChange_MacOS(self, *args): 29 layout = self.ime.GetKeyboardLayout() 30 if self.currentLanguageMac != layout: 31 self.currentLanguageMac = layout 32 if self._IsCurrentLayoutKorean(): 33 self.insertOnType = True 34 else: 35 self.insertOnType = False 36 self._ResetCompositionString() 37 if trinity.app.imeState_MacOS != trinity.Tr2ImeState_MacOS.DISABLED: 38 trinity.app.imeState_MacOS = trinity.Tr2ImeState_MacOS.READY 39 40 def _SetImeState(self, enable): 41 enable = super(MacImeHandler, self)._SetImeState(enable) 42 trinity.app.imeState_MacOS = trinity.Tr2ImeState_MacOS.READY if enable else trinity.Tr2ImeState_MacOS.DISABLED 43 44 def _onInsertTextIME_MacOS(self, string): 45 if trinity.app.imeState_MacOS == trinity.Tr2ImeState_MacOS.DISABLED: 46 return 47 if trinity.app.imeState_MacOS == trinity.Tr2ImeState_MacOS.BLOCKING: 48 trinity.app.imeState_MacOS = trinity.Tr2ImeState_MacOS.READY 49 self._TruncateCompositionString(len(self.compositionString)) 50 self.compositionString = string 51 self._SendCompositionString() 52 self._HideCompositionWindow() 53 self._ResetCompositionString() 54 55 def _onSetMarkedTextIME_MacOS(self, string, selectedLocation, selectedLength): 56 if trinity.app.imeState_MacOS == trinity.Tr2ImeState_MacOS.DISABLED: 57 return 58 self._TruncateCompositionString(len(string)) 59 self.compositionCaretPosition = selectedLocation 60 self.compositionCaretWidth = selectedLength 61 if len(string) == 0: 62 trinity.app.imeState_MacOS = trinity.Tr2ImeState_MacOS.READY 63 self._HideCompositionWindow() 64 else: 65 trinity.app.imeState_MacOS = trinity.Tr2ImeState_MacOS.BLOCKING 66 self.compositionString = string 67 if self._CheckFocusWidget() and self.insertOnType: 68 self._SendCompositionString() 69 self._ShowCompositionWindow() 70 if trinity.mainWindow.onChar: 71 trinity.mainWindow.onChar(0, 0, True) 72 73 def _SendCompositionString(self): 74 if trinity.mainWindow.onChar: 75 for char in self.compositionString: 76 trinity.mainWindow.onChar(ord(char), 0, False)