aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/ScintillaCallable.py
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2022-05-17 08:52:34 +1000
committerNeil <nyamatongwe@gmail.com>2022-05-17 08:52:34 +1000
commit475450c76ceef43a7f5b2c68ed5848baee96b6dc (patch)
tree110ed93d9989eb049ecb0ee2c6fc62692adcefa0 /test/ScintillaCallable.py
parente107ecdf3f5576e90dc90c69fc57f24d1f499b61 (diff)
downloadscintilla-mirror-475450c76ceef43a7f5b2c68ed5848baee96b6dc.tar.gz
Duplicate APIs to support 64-bit document positions on Win32:
SCI_GETTEXTRANGEFULL, SCI_FINDTEXTFULL, and SCI_FORMATRANGEFULL.
Diffstat (limited to 'test/ScintillaCallable.py')
-rw-r--r--test/ScintillaCallable.py36
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)