diff options
Diffstat (limited to 'test/XiteWin.py')
-rw-r--r-- | test/XiteWin.py | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/test/XiteWin.py b/test/XiteWin.py index 158a2a83e..4d4179818 100644 --- a/test/XiteWin.py +++ b/test/XiteWin.py @@ -19,6 +19,10 @@ from MessageNumbers import msgs, sgsm import ScintillaCallable import XiteMenu +scintillaIncludesLexers = False +# Lexilla may optionally be tested it is built and can be loaded +lexillaAvailable = False + scintillaDirectory = ".." scintillaIncludeDirectory = os.path.join(scintillaDirectory, "include") scintillaScriptsDirectory = os.path.join(scintillaDirectory, "scripts") @@ -27,6 +31,19 @@ import Face scintillaBinDirectory = os.path.join(scintillaDirectory, "bin") +lexillaBinDirectory = os.path.join(scintillaDirectory, "..", "lexilla", "bin") +lexName = "Lexilla.DLL" +try: + lexillaDLLPath = os.path.join(lexillaBinDirectory, lexName) + lexillaLibrary = ctypes.cdll.LoadLibrary(lexillaDLLPath) + createLexer = lexillaLibrary.CreateLexer + createLexer.restype = ctypes.c_void_p + lexillaAvailable = True + print("Found Lexilla") +except OSError: + print("Can't find " + lexName) + print("Python is built for " + " ".join(platform.architecture())) + WFUNC = ctypes.WINFUNCTYPE(c_int, HWND, c_uint, WPARAM, LPARAM) WS_CHILD = 0x40000000 @@ -182,11 +199,15 @@ class XiteWin(): def OnCreate(self, hwnd): self.win = hwnd + if scintillaIncludesLexers: + sciName = "SciLexer.DLL" + else: + sciName = "Scintilla.DLL" try: - scintillaDLLPath = os.path.join(scintillaBinDirectory, "SciLexer.DLL") + scintillaDLLPath = os.path.join(scintillaBinDirectory, sciName) ctypes.cdll.LoadLibrary(scintillaDLLPath) except OSError: - print("Can't find SciLexer.DLL") + print("Can't find " + sciName) print("Python is built for " + " ".join(platform.architecture())) sys.exit() self.sciHwnd = user32.CreateWindowExW(0, @@ -206,6 +227,14 @@ class XiteWin(): self.FocusOnEditor() + def ChooseLexer(self, lexer): + if scintillaIncludesLexers: + self.ed.LexerLanguage = lexer + elif lexillaAvailable: + pLexilla = createLexer(lexer) + self.ed.SetILexer(0, pLexilla) + else: # No lexers available + pass def Invalidate(self): user32.InvalidateRect(self.win, 0, 0) |