generated from itdominator/Python-With-Gtk-Template
Mostly sinking sourceview pre-bound keys
This commit is contained in:
parent
92f1eab4d8
commit
f1cc022079
@ -38,6 +38,10 @@ class EditorControllerMixin:
|
||||
# NOTE: These feel bad being here man...
|
||||
if action == "scale_up_text":
|
||||
self.scale_up_text(source_view)
|
||||
if action == "keyboard_undo":
|
||||
self.keyboard_undo(source_view)
|
||||
if action == "keyboard_redo":
|
||||
self.keyboard_redo(source_view)
|
||||
if action == "scale_down_text":
|
||||
self.scale_down_text(source_view)
|
||||
if action == "toggle_highlight_line":
|
||||
|
@ -101,6 +101,12 @@ class EditorEventsMixin:
|
||||
|
||||
|
||||
# NOTE: These feel bad being here man...
|
||||
def keyboard_undo(self, source_view):
|
||||
source_view.keyboard_undo()
|
||||
|
||||
def keyboard_redo(self, source_view):
|
||||
source_view.keyboard_redo()
|
||||
|
||||
def scale_up_text(self, source_view):
|
||||
source_view.scale_up_text()
|
||||
|
||||
|
@ -69,6 +69,8 @@ class EditorNotebook(EditorEventsMixin, EditorControllerMixin, Gtk.Notebook):
|
||||
event_system.subscribe("keyboard_create_tab", self._keyboard_create_tab)
|
||||
event_system.subscribe("keyboard_open_file", self._keyboard_open_file)
|
||||
event_system.subscribe("keyboard_close_tab", self._keyboard_close_tab)
|
||||
event_system.subscribe("keyboard_undo", self._keyboard_undo)
|
||||
event_system.subscribe("keyboard_redo", self._keyboard_redo)
|
||||
event_system.subscribe("keyboard_prev_tab", self._keyboard_prev_tab)
|
||||
event_system.subscribe("keyboard_next_tab", self._keyboard_next_tab)
|
||||
event_system.subscribe("keyboard_move_tab_left", self._keyboard_move_tab_left)
|
||||
@ -155,9 +157,19 @@ class EditorNotebook(EditorEventsMixin, EditorControllerMixin, Gtk.Notebook):
|
||||
self.create_view(gfile = _gfile)
|
||||
|
||||
|
||||
# NOTE: These feel bad being here man...
|
||||
def _keyboard_close_tab(self):
|
||||
self.action_controller("close_tab")
|
||||
|
||||
def _keyboard_close_tab(self):
|
||||
self.action_controller("close_tab")
|
||||
|
||||
def _keyboard_undo(self):
|
||||
self.action_controller("keyboard_undo")
|
||||
|
||||
def _keyboard_redo(self):
|
||||
self.action_controller("keyboard_redo")
|
||||
|
||||
def _toggle_highlight_line(self):
|
||||
self.action_controller("toggle_highlight_line")
|
||||
|
||||
|
@ -75,6 +75,24 @@ class MarkEventsMixin:
|
||||
iter = self._buffer.get_iter_at_mark(mark)
|
||||
self._buffer.insert(iter, text_str, -1)
|
||||
|
||||
self.end_user_action()
|
||||
|
||||
def _delete_on_multi_line_markers(self):
|
||||
iter = self._buffer.get_iter_at_mark( self._buffer.get_insert() )
|
||||
self._buffer.backspace(iter, interactive = True, default_editable = True)
|
||||
|
||||
for mark in self._multi_insert_marks:
|
||||
iter = self._buffer.get_iter_at_mark(mark)
|
||||
self._buffer.backspace(iter, interactive = True, default_editable = True)
|
||||
|
||||
self.end_user_action()
|
||||
|
||||
def begin_user_action(self):
|
||||
if len(self._multi_insert_marks) > 0:
|
||||
self._buffer.begin_user_action()
|
||||
self.freeze_multi_line_insert = True
|
||||
|
||||
def end_user_action(self):
|
||||
if len(self._multi_insert_marks) > 0:
|
||||
self._buffer.end_user_action()
|
||||
self.freeze_multi_line_insert = False
|
||||
|
@ -81,6 +81,7 @@ class SourceView(SourceViewEventsMixin, GtkSource.View):
|
||||
self.connect("focus-in-event", self._focus_in_event)
|
||||
|
||||
self.connect("drag-data-received", self._on_drag_data_received)
|
||||
self.connect("key-press-event", self._key_press_event)
|
||||
self.connect("button-press-event", self._button_press_event)
|
||||
|
||||
self._buffer.connect('changed', self._is_modified)
|
||||
@ -124,13 +125,43 @@ class SourceView(SourceViewEventsMixin, GtkSource.View):
|
||||
def _insert_text(self, text_buffer, location_itr, text_str, len_int):
|
||||
if self.freeze_multi_line_insert: return
|
||||
|
||||
if len(self._multi_insert_marks) > 0:
|
||||
self._buffer.begin_user_action()
|
||||
self.freeze_multi_line_insert = True
|
||||
|
||||
self.begin_user_action()
|
||||
with self._buffer.freeze_notify():
|
||||
GLib.idle_add(self._update_multi_line_markers, *(text_str,))
|
||||
|
||||
# NOTE: Mostly sinking pre-bound keys here to let our keybinder control instead...
|
||||
def _key_press_event(self, widget, eve):
|
||||
keyname = Gdk.keyval_name(eve.keyval)
|
||||
modifiers = Gdk.ModifierType(eve.get_state() & ~Gdk.ModifierType.LOCK_MASK)
|
||||
is_control = True if modifiers & Gdk.ModifierType.CONTROL_MASK else False
|
||||
is_shift = True if modifiers & Gdk.ModifierType.SHIFT_MASK else False
|
||||
|
||||
try:
|
||||
is_alt = True if modifiers & Gdk.ModifierType.ALT_MASK else False
|
||||
except Exception:
|
||||
is_alt = True if modifiers & Gdk.ModifierType.MOD1_MASK else False
|
||||
|
||||
if is_control:
|
||||
if keyname in [ "slash", "Up", "Down", "z" ]:
|
||||
return True
|
||||
|
||||
if is_shift:
|
||||
if keyname in [ "z", "Up", "Down", "Left", "Right" ]:
|
||||
return True
|
||||
|
||||
if is_alt:
|
||||
if keyname in [ "Up", "Down", "Left", "Right" ]:
|
||||
return True
|
||||
|
||||
if keyname == "BackSpace":
|
||||
if len(self._multi_insert_marks) > 0:
|
||||
self.begin_user_action()
|
||||
with self._buffer.freeze_notify():
|
||||
GLib.idle_add(self._delete_on_multi_line_markers)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def _button_press_event(self, widget = None, eve = None, user_data = None):
|
||||
if eve.type == Gdk.EventType.BUTTON_PRESS and eve.button == 1 : # l-click
|
||||
if eve.state & Gdk.ModifierType.CONTROL_MASK:
|
||||
|
@ -63,9 +63,6 @@ class SourceViewEventsMixin(MarkEventsMixin, FileEventsMixin):
|
||||
|
||||
event_system.emit("set_line_char_label", (f"{row}:{col}",))
|
||||
|
||||
def keyboard_tggl_comment(self):
|
||||
logger.info("SourceViewEventsMixin > keyboard_tggl_comment > stub...")
|
||||
|
||||
def got_to_line(self, line: int = 0):
|
||||
index = line - 1
|
||||
buffer = self.get_buffer()
|
||||
@ -77,6 +74,7 @@ class SourceViewEventsMixin(MarkEventsMixin, FileEventsMixin):
|
||||
buffer.create_mark("starting_cursor", char_iter, True)
|
||||
self.scroll_to_mark( buffer.get_mark("starting_cursor"), 0.0, True, 0.0, 0.0 )
|
||||
|
||||
|
||||
# https://github.com/ptomato/inform7-ide/blob/main/src/actions.c
|
||||
def action_uncomment_selection(self):
|
||||
...
|
||||
@ -84,6 +82,15 @@ class SourceViewEventsMixin(MarkEventsMixin, FileEventsMixin):
|
||||
def action_comment_out_selection(self):
|
||||
...
|
||||
|
||||
def keyboard_tggl_comment(self):
|
||||
logger.info("SourceViewEventsMixin > keyboard_tggl_comment > stub...")
|
||||
|
||||
def keyboard_undo(self):
|
||||
self._buffer.undo()
|
||||
|
||||
def keyboard_redo(self):
|
||||
self._buffer.redo()
|
||||
|
||||
def move_lines_up(self):
|
||||
self.emit("move-lines", *(False,))
|
||||
|
||||
|
@ -8,6 +8,8 @@
|
||||
"open_files" : "<Control>o",
|
||||
"move_lines_up" : "<Control>Up",
|
||||
"move_lines_down" : "<Control>Down",
|
||||
"keyboard_undo" : "<Control>z",
|
||||
"keyboard_redo" : "<Control>y",
|
||||
"keyboard_create_tab" : "<Control>t",
|
||||
"keyboard_close_tab" : "<Control>w",
|
||||
"keyboard_save_file" : "<Control>s",
|
||||
|
Loading…
Reference in New Issue
Block a user