generated from itdominator/Python-With-Gtk-Template
74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
# Python imports
|
|
|
|
# Lib imports
|
|
|
|
# Application imports
|
|
|
|
|
|
|
|
class SourceViewEventsMixin:
|
|
def _create_default_tag(self):
|
|
self._general_style_tag = self._buffer.create_tag('general_style')
|
|
self._general_style_tag.set_property('size', 100)
|
|
self._general_style_tag.set_property('scale', 100)
|
|
|
|
def set_buffer_language(self, language = "python3"):
|
|
self._buffer.set_language( self._language_manager.get_language(language) )
|
|
|
|
def set_buffer_style(self, style = "tango"):
|
|
self._buffer.set_style_scheme( self._style_scheme_manager.get_scheme(style) )
|
|
|
|
def toggle_highlight_line(self, widget = None, eve = None):
|
|
self.set_highlight_current_line( not self.get_highlight_current_line() )
|
|
|
|
def scale_up_text(self, scale_step = 10):
|
|
current_scale = self._general_style_tag.get_property('scale')
|
|
start_itr = self._buffer.get_start_iter()
|
|
end_itr = self._buffer.get_end_iter()
|
|
|
|
self._general_style_tag.set_property('scale', current_scale + scale_step)
|
|
self._buffer.apply_tag(self._general_style_tag, start_itr, end_itr)
|
|
|
|
def scale_down_text(self, scale_step = 10):
|
|
tag_table = self._buffer.get_tag_table()
|
|
start_itr = self._buffer.get_start_iter()
|
|
end_itr = self._buffer.get_end_iter()
|
|
tag = tag_table.lookup('general_style')
|
|
|
|
tag.set_property('scale', tag.get_property('scale') - scale_step)
|
|
self._buffer.apply_tag(tag, start_itr, end_itr)
|
|
|
|
def _on_cursor_move(self, buf, cursor_iter, mark, user_data = None):
|
|
if mark != buf.get_insert():
|
|
return
|
|
|
|
self.update_cursor_position()
|
|
|
|
def update_cursor_position(self):
|
|
iter = self._buffer.get_iter_at_mark(self._buffer.get_insert())
|
|
chars = iter.get_offset()
|
|
row = iter.get_line() + 1
|
|
col = self.get_visual_column(iter) + 1
|
|
|
|
classes = self._buffer.get_context_classes_at_iter(iter)
|
|
classes_str = ""
|
|
|
|
i = 0
|
|
for c in classes:
|
|
if len(classes) != i + 1:
|
|
classes_str += c + ", "
|
|
else:
|
|
classes_str += c
|
|
|
|
cursor_data = f"char: {chars}, line: {row}, column: {col}, classes: {classes_str}"
|
|
logger.debug(cursor_data)
|
|
event_system.emit("set_line_char_label", (f"{row}:{col}",))
|
|
|
|
|
|
# https://github.com/ptomato/inform7-ide/blob/main/src/actions.c
|
|
def action_uncomment_selection(self):
|
|
...
|
|
|
|
def action_comment_out_selection(self):
|
|
pass
|