51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
|
|
# Python imports
|
||
|
|
|
||
|
|
# Lib imports
|
||
|
|
|
||
|
|
# Application imports
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class ReplaceMixin:
|
||
|
|
|
||
|
|
def _replace_word(
|
||
|
|
self,
|
||
|
|
current_index: int,
|
||
|
|
to_text: str,
|
||
|
|
buffer: any
|
||
|
|
):
|
||
|
|
self.clear_highlight(buffer)
|
||
|
|
|
||
|
|
start_itr, end_itr = self.matches[current_index]
|
||
|
|
self.active_view.scroll_to_iter(end_itr, 0.2, False, 0, 0)
|
||
|
|
|
||
|
|
buffer.begin_user_action()
|
||
|
|
buffer.delete(start_itr, end_itr)
|
||
|
|
buffer.insert(start_itr, to_text)
|
||
|
|
buffer.end_user_action()
|
||
|
|
|
||
|
|
def _replace_all_words(self, to_text: str, buffer: any):
|
||
|
|
marks: list = []
|
||
|
|
|
||
|
|
for start_itr, end_itr in self.matches:
|
||
|
|
start_mark = buffer.create_mark(None, start_itr, left_gravity = True)
|
||
|
|
end_mark = buffer.create_mark(None, end_itr, left_gravity = False)
|
||
|
|
marks.append((start_mark, end_mark))
|
||
|
|
|
||
|
|
buffer.begin_user_action()
|
||
|
|
|
||
|
|
for start_mark, end_mark in reversed(marks):
|
||
|
|
start_itr = buffer.get_iter_at_mark(start_mark)
|
||
|
|
end_itr = buffer.get_iter_at_mark(end_mark)
|
||
|
|
|
||
|
|
buffer.delete(start_itr, end_itr)
|
||
|
|
buffer.insert(start_itr, to_text)
|
||
|
|
|
||
|
|
buffer.end_user_action()
|
||
|
|
|
||
|
|
for start_mark, end_mark in marks:
|
||
|
|
buffer.delete_mark(start_mark)
|
||
|
|
buffer.delete_mark(end_mark)
|
||
|
|
|
||
|
|
self.find_entry.grab_focus()
|