- Moved plugins to proper sub groups (autopairs, code_minimap, colorize, commentzar, info_bar, markdown_preview, prettify_json, search_replace, tabs_bar, telescope, toggle_source_view, lsp_client) - Add filter_out_loaded_files to prevent opening already-loaded files - Add INDEPENDENT source view state - Fix cursor scroll position on buffer switch - Fix signal blocking during file load - Fix word boundary in completion provider - Refactor code events into single events module
97 lines
2.7 KiB
Python
97 lines
2.7 KiB
Python
# Python imports
|
|
|
|
# Lib imports
|
|
import gi
|
|
gi.require_version('Gtk', '3.0')
|
|
from gi.repository import Gdk
|
|
from gi.repository import Gtk
|
|
from gi.repository import GLib
|
|
|
|
# Application imports
|
|
from .list_box import ListBox
|
|
|
|
|
|
|
|
class TelescopeSearchEntryException(Exception):
|
|
...
|
|
|
|
|
|
|
|
class SearchEntry(Gtk.SearchEntry):
|
|
def __init__(self):
|
|
super(SearchEntry, self).__init__()
|
|
|
|
|
|
self._setup_styling()
|
|
self._setup_signals()
|
|
self._subscribe_to_events()
|
|
self._load_widgets()
|
|
|
|
|
|
def _setup_styling(self):
|
|
...
|
|
|
|
def _setup_signals(self):
|
|
self.connect("search-changed", self._search_changed)
|
|
self.connect("key-press-event", self._key_press_event)
|
|
self.connect("key-release-event", self._key_release_event)
|
|
|
|
def _subscribe_to_events(self):
|
|
...
|
|
|
|
def _load_widgets(self):
|
|
...
|
|
|
|
def _key_press_event(self, widget, eve):
|
|
modifiers = Gdk.ModifierType(eve.get_state() & ~Gdk.ModifierType.LOCK_MASK)
|
|
is_control = modifiers & Gdk.ModifierType.CONTROL_MASK
|
|
is_shift = modifiers & Gdk.ModifierType.SHIFT_MASK
|
|
keyname = Gdk.keyval_name(eve.keyval).lower()
|
|
char_str = chr( Gdk.keyval_to_unicode(eve.keyval) )
|
|
|
|
if keyname == "up":
|
|
self.move_row_selection_up()
|
|
return True
|
|
elif keyname == "down":
|
|
self.move_row_selection_down()
|
|
return True
|
|
|
|
|
|
def _key_release_event(self, widget, eve):
|
|
modifiers = Gdk.ModifierType(eve.get_state() & ~Gdk.ModifierType.LOCK_MASK)
|
|
is_control = modifiers & Gdk.ModifierType.CONTROL_MASK
|
|
is_shift = modifiers & Gdk.ModifierType.SHIFT_MASK
|
|
keyname = Gdk.keyval_name(eve.keyval).lower()
|
|
char_str = chr( Gdk.keyval_to_unicode(eve.keyval) )
|
|
|
|
if is_control:
|
|
if char_str == "b":
|
|
self.hide()
|
|
|
|
return True
|
|
|
|
if keyname in ["enter", "return"]:
|
|
self.activate_row()
|
|
self.hide()
|
|
|
|
return True
|
|
|
|
def _search_changed(self, widget):
|
|
self.search_changed(widget)
|
|
|
|
def hide(self):
|
|
raise TelescopeSearchEntryException("SearchEntry must have 'hide' monkey patched...")
|
|
|
|
def search_changed(self, widget):
|
|
raise TelescopeSearchEntryException("SearchEntry must have 'search_changed' monkey patched...")
|
|
|
|
def activate_row(self):
|
|
raise TelescopeSearchEntryException("SearchEntry must have 'activate_row' monkey patched...")
|
|
|
|
def move_row_selection_up(self):
|
|
raise TelescopeSearchEntryException("SearchEntry must have 'move_row_selection_up' monkey patched...")
|
|
|
|
def move_row_selection_down(self):
|
|
raise TelescopeSearchEntryException("SearchEntry must have 'move_row_selection_down' monkey patched...")
|
|
|