NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)