Added file search
This commit is contained in:
@@ -82,6 +82,11 @@ class Controller_Data:
|
||||
self.is_pane3_hidden = False
|
||||
self.is_pane4_hidden = False
|
||||
|
||||
self.is_searching = False
|
||||
self.search_iconview = None
|
||||
self.search_view = None
|
||||
|
||||
|
||||
self.skip_edit = False
|
||||
self.cancel_edit = False
|
||||
self.ctrlDown = False
|
||||
|
@@ -1,4 +1,5 @@
|
||||
# Python imports
|
||||
import re
|
||||
|
||||
# Lib imports
|
||||
import gi
|
||||
@@ -9,6 +10,7 @@ from gi.repository import Gtk, Gdk
|
||||
# Application imports
|
||||
|
||||
|
||||
valid_fname_pat = re.compile(r"[a-z0-9A-Z-_\[\]\(\)\| ]")
|
||||
|
||||
|
||||
class KeyboardSignalsMixin:
|
||||
@@ -37,6 +39,16 @@ class KeyboardSignalsMixin:
|
||||
if "alt" in keyname:
|
||||
self.altDown = False
|
||||
|
||||
|
||||
if re.fullmatch(valid_fname_pat, keyname):
|
||||
if not self.ctrlDown and not self.shiftDown and not self.altDown:
|
||||
if not self.is_searching:
|
||||
self.is_searching = True
|
||||
wid, tid, self.search_view, self.search_iconview, store = self.get_current_state()
|
||||
self.popup_search_files(wid, keyname)
|
||||
return
|
||||
|
||||
|
||||
if self.ctrlDown and self.shiftDown and keyname == "t":
|
||||
self.trash_files()
|
||||
|
||||
|
@@ -13,6 +13,9 @@ class ShowHideMixin:
|
||||
def show_messages_popup(self, type, text, seconds=None):
|
||||
self.message_widget.popup()
|
||||
|
||||
def stop_file_searching(self, widget=None, eve=None):
|
||||
self.is_searching = False
|
||||
|
||||
|
||||
def show_exists_page(self, widget=None, eve=None):
|
||||
response = self.file_exists_dialog.run()
|
||||
|
@@ -55,6 +55,19 @@ class WidgetFileActionMixin:
|
||||
|
||||
|
||||
|
||||
def popup_search_files(self, wid, keyname):
|
||||
entry = self.builder.get_object(f"win{wid}_search_field")
|
||||
entry.set_text(keyname)
|
||||
entry.grab_focus_without_selecting()
|
||||
self.builder.get_object(f"win{wid}_search").popup()
|
||||
|
||||
def do_file_search(self, widget, eve=None):
|
||||
query = widget.get_text()
|
||||
self.search_iconview.unselect_all()
|
||||
for i, file in enumerate(self.search_view.files):
|
||||
if query and query in file.lower():
|
||||
path = Gtk.TreePath().new_from_indices([i])
|
||||
self.search_iconview.select_path(path)
|
||||
|
||||
def open_files(self):
|
||||
wid, tid, view, iconview, store = self.get_current_state()
|
||||
|
Reference in New Issue
Block a user