findInFiles #1

Merged
andi merged 6 commits from findInFiles into master 2022-08-23 11:52:02 +00:00
2 changed files with 51 additions and 12 deletions
Showing only changes of commit dd0cba259b - Show all commits

View File

@@ -1,12 +1,15 @@
import glob
import os
import sys
from pathlib import Path
from PySide6.QtGui import QIcon
from PySide6.QtCore import QDir, QModelIndex
from PySide6.QtGui import QIcon, QStandardItemModel, QStandardItem
from src.pluginregistry import PluginRegistry
from src.plugins.krowlog.Tab import Tab
from PySide6.QtWidgets import QTextEdit, QVBoxLayout, QLabel, QLineEdit, QPushButton, QFileDialog
from PySide6.QtWidgets import QTextEdit, QVBoxLayout, QLabel, QLineEdit, QPushButton, QFileDialog, QTreeView, \
QFileSystemModel
from src.i18n import _
from src.settings.settings import Settings
from src.ui.formgrid import FormGrid
@@ -27,7 +30,7 @@ class FindInFilesWidget(Tab):
self._base_dir = QLineEdit(self._initialFolder())
self._base_dir.textChanged.connect(self._base_dir_changed)
btn_select_base_dir = QPushButton(QIcon.fromTheme("document-open"), "")
btn_select_base_dir = QPushButton(QIcon.fromTheme("folder"), "")
btn_select_base_dir.pressed.connect(self._select_base_dir)
btn_base_dir_for_current_file = QPushButton(QIcon("icons/myicons/target.svg"), "")
@@ -37,17 +40,47 @@ class FindInFilesWidget(Tab):
form.addRow(QLabel(_("Folder:")),
HBox(self._base_dir, btn_select_base_dir, btn_base_dir_for_current_file))
self._filter = QLineEdit("*.log")
self._filter = QLineEdit(self._settings.get_session("findInFiles", "filter", fallback="*.log"))
self._filter.textChanged.connect(self._filter_changed)
form.addRow(QLabel(_("Filter:")), self._filter)
self._btn_search = QPushButton(QIcon("icons/ionicons/search-outline.svg"), _("Search"))
self._btn_search.pressed.connect(self._search)
self.layout.addWidget(self._btn_search)
# self._found_files = QTreeView()
# self._found_files_model = QStandardItemModel()
# self._found_files_model.setHorizontalHeaderLabels(["Name"])
# self._found_files.setModel(self._found_files_model)
# self.layout.addWidget(self._found_files)
self.layout.addWidget(QTextEdit())
self._model = QFileSystemModel()
self._model.setRootPath(self._base_dir.text())
self._model.setFilter(QDir.AllDirs | QDir.NoDotAndDotDot | QDir.AllEntries)
self._model.setNameFilters([self._filter.text()])
self._model.setNameFilterDisables(False)
self._view = QTreeView()
self._view.setModel(self._model)
self._view.setRootIndex(self._model.index(self._base_dir.text()))
self._view.show()
self.layout.addWidget(self._view)
def _search(self):
pass
self._view.doubleClicked.connect(self._open_file)
# icons: /snap/gtk-common-themes/1534/share/icons/
# folder, document, text-css, text-xml, text-x-python
#
def _open_file(self, index: QModelIndex):
path = []
i = index
while i.isValid():
path.append(i.data())
i = i.parent()
path.reverse()
file = Path()
for s in path:
file = file / s
if file.is_file():
PluginRegistry.execute_single("open_file", f"{file}")
def _select_base_dir(self):
dialog = QFileDialog()
@@ -62,9 +95,15 @@ class FindInFilesWidget(Tab):
dir = self._get_base_dir_for_current_file()
self._base_dir.setText(dir)
def _filter_changed(self, filter):
self._settings.set_session("findInFiles", "filter", filter)
self._model.setNameFilters([filter])
def _base_dir_changed(self, base_dir):
if os.path.isdir(base_dir):
self._settings.set_session("findInFiles", "folder", base_dir)
self._model.setRootPath(base_dir)
self._view.setRootIndex(self._model.index(base_dir))
def _initialFolder(self) -> str:
folder = self._settings.get_session("findInFiles", "folder", fallback=None)

View File

@@ -32,9 +32,9 @@ class FindInFilesPlugin(PluginBase):
icon_file="icons/ionicons/search-outline.svg")
def _add_notes_tab(self):
findInFiles = FindInFilesWidget(
find_in_files = FindInFilesWidget(
"find_in_files",
_("Find In Files"),
self.settings
)
PluginRegistry.execute_single("add_dock", Qt.DockWidgetArea.LeftDockWidgetArea, findInFiles)
PluginRegistry.execute_single("add_dock", Qt.DockWidgetArea.LeftDockWidgetArea, find_in_files)