diff options
Diffstat (limited to 'test/ScintillaCallable.py')
-rw-r--r-- | test/ScintillaCallable.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/ScintillaCallable.py b/test/ScintillaCallable.py index 1164631ae..d8d16c7e3 100644 --- a/test/ScintillaCallable.py +++ b/test/ScintillaCallable.py @@ -21,6 +21,13 @@ class TEXTRANGE(ctypes.Structure): ('lpstrText', ctypes.POINTER(ctypes.c_char)), ) +class TEXTRANGEFULL(ctypes.Structure): + _fields_= (\ + ('cpMin', c_ssize_t), + ('cpMax', c_ssize_t), + ('lpstrText', ctypes.POINTER(ctypes.c_char)), + ) + class FINDTEXT(ctypes.Structure): _fields_= (\ ('cpMin', c_long), @@ -30,6 +37,15 @@ class FINDTEXT(ctypes.Structure): ('cpMaxText', c_long), ) +class FINDTEXTFULL(ctypes.Structure): + _fields_= (\ + ('cpMin', c_ssize_t), + ('cpMax', c_ssize_t), + ('lpstrText', c_char_p), + ('cpMinText', c_ssize_t), + ('cpMaxText', c_ssize_t), + ) + class SciCall: def __init__(self, fn, ptr, msg, stringResult=False): self._fn = fn @@ -136,6 +152,16 @@ class ScintillaCallable: text = tr.lpstrText[:length] text += b"\0" * (length - len(text)) return text + def ByteRangeFull(self, start, end): + tr = TEXTRANGEFULL() + tr.cpMin = start + tr.cpMax = end + length = end - start + tr.lpstrText = ctypes.create_string_buffer(length + 1) + self.GetTextRangeFull(0, ctypes.byref(tr)) + text = tr.lpstrText[:length] + text += b"\0" * (length - len(text)) + return text def StyledTextRange(self, start, end): tr = TEXTRANGE() tr.cpMin = start @@ -156,6 +182,16 @@ class ScintillaCallable: pos = self.FindText(flags, ctypes.byref(ft)) #~ print(start, end, ft.cpMinText, ft.cpMaxText) return pos + def FindBytesFull(self, start, end, s, flags): + ft = FINDTEXTFULL() + ft.cpMin = start + ft.cpMax = end + ft.lpstrText = s + ft.cpMinText = 0 + ft.cpMaxText = 0 + pos = self.FindTextFull(flags, ctypes.byref(ft)) + #~ print(start, end, ft.cpMinText, ft.cpMaxText) + return pos def Contents(self): return self.ByteRange(0, self.Length) |