eric7/UI/FindFileWidget.py

branch
eric7
changeset 8636
c0a3a6e40815
parent 8632
f25cd4b94eb0
child 8637
394377638256
--- a/eric7/UI/FindFileWidget.py	Sat Sep 25 18:07:20 2021 +0200
+++ b/eric7/UI/FindFileWidget.py	Sat Sep 25 18:08:10 2021 +0200
@@ -10,8 +10,8 @@
 import os
 import re
 
-from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QPoint
-from PyQt6.QtGui import QCursor
+from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QPoint, QUrl
+from PyQt6.QtGui import QCursor, QDesktopServices, QImageReader
 from PyQt6.QtWidgets import (
     QWidget, QApplication, QMenu, QTreeWidgetItem, QComboBox
 )
@@ -42,10 +42,19 @@
     @signal sourceFile(str, int, str, int, int) emitted to open a source file
         at a specificline
     @signal designerFile(str) emitted to open a Qt-Designer file
+    @signal linguistFile(str) emitted to open a Qt-Linguist (*.ts) file
+    @signal trpreview([str]) emitted to preview Qt-Linguist (*.qm) files
+    @signal pixmapFile(str) emitted to open a pixmap file
+    @signal svgFile(str) emitted to open a SVG file
+    @signal umlFile(str) emitted to open an eric UML file
     """
-    # TODO: add more signals
     sourceFile = pyqtSignal(str, int, str, int, int)
     designerFile = pyqtSignal(str)
+    linguistFile = pyqtSignal(str)
+    trpreview = pyqtSignal(list)
+    pixmapFile = pyqtSignal(str)
+    svgFile = pyqtSignal(str)
+    umlFile = pyqtSignal(str)
     
     lineRole = Qt.ItemDataRole.UserRole + 1
     startRole = Qt.ItemDataRole.UserRole + 2
@@ -87,7 +96,7 @@
         self.findProgressLabel.setMaximumWidth(550)
         
         self.searchHistory = Preferences.toList(
-            Preferences.Prefs.settings.value(
+            Preferences.getSettings().value(
                 "FindFileWidget/SearchHistory"))
         self.findtextCombo.lineEdit().setClearButtonEnabled(True)
         self.findtextCombo.lineEdit().returnPressed.connect(self.__doSearch)
@@ -96,7 +105,7 @@
         self.findtextCombo.setEditText("")
         
         self.replaceHistory = Preferences.toList(
-            Preferences.Prefs.settings.value(
+            Preferences.getSettings().value(
                 "FindFileWidget/ReplaceHistory"))
         self.replacetextCombo.lineEdit().setClearButtonEnabled(True)
         self.replacetextCombo.lineEdit().returnPressed.connect(self.__doSearch)
@@ -105,13 +114,13 @@
         self.replacetextCombo.setEditText("")
         
         self.dirHistory = Preferences.toList(
-            Preferences.Prefs.settings.value(
+            Preferences.getSettings().value(
                 "FindFileWidget/DirectoryHistory"))
         self.dirPicker.addItems(self.dirHistory)
         self.dirPicker.setText("")
         
         self.excludeHiddenCheckBox.setChecked(Preferences.toBool(
-            Preferences.Prefs.settings.value(
+            Preferences.getSettings().value(
                 "FindFileWidget/ExcludeHidden", True)
         ))
         
@@ -534,10 +543,10 @@
         self.searchHistory.insert(0, ct)
         self.findtextCombo.clear()
         self.findtextCombo.addItems(self.searchHistory)
-        Preferences.Prefs.settings.setValue(
+        Preferences.getSettings().setValue(
             "FindFileWidget/SearchHistory",
             self.searchHistory[:30])
-        Preferences.Prefs.settings.setValue(
+        Preferences.getSettings().setValue(
             "FindFileWidget/ExcludeHidden",
             self.excludeHiddenCheckBox.isChecked())
         
@@ -560,7 +569,7 @@
             self.dirPicker.clear()
             self.dirPicker.addItems(self.dirHistory)
             self.dirPicker.setText(self.dirHistory[0])
-            Preferences.Prefs.settings.setValue(
+            Preferences.getSettings().setValue(
                 "FindFileWidget/DirectoryHistory",
                 self.dirHistory[:30])
         
@@ -582,7 +591,7 @@
             self.findProgressLabel.setPath(file)
             
             fn = (
-                os.path.join(self.project.ppath, file)
+                os.path.join(self.project.getProjectPath(), file)
                 if self.projectButton.isChecked() else
                 file
             )
@@ -652,8 +661,7 @@
         """
         Private slot to handle the double click on a file item.
         
-        It emits the signal sourceFile or designerFile depending on the file
-        extension.
+        It emits a signal depending on the file extension.
         
         @param itm the double clicked tree item
         @type QTreeWidgetItem
@@ -671,11 +679,30 @@
             start = 0
             end = 0
         
-        fn = os.path.join(self.project.ppath, file) if self.project else file
-        if fn.endswith('.ui'):
-            self.designerFile.emit(fn)
+        fileName = (
+            os.path.join(self.project.getProjectPath(), file)
+            if self.project.isOpen() else
+            file
+        )
+        fileExt = os.path.splitext(fileName)[1]
+        
+        if fileExt == ".ui":
+            self.designerFile.emit(fileName)
+        elif fileExt == ".ts":
+            self.linguistFile.emit(fileName)
+        elif fileExt == ".qm":
+            self.trpreview.emit([fileName])
+        elif fileExt in (".egj", ".e5g"):
+            self.umlFile.emit(fileName)
+        elif fileExt == ".svg":
+            self.svgFile.emit(fileName)
+        elif fileExt[1:] in QImageReader.supportedImageFormats():
+            self.pixmapFile.emit(fileName)
         else:
-            self.sourceFile.emit(fn, line, "", start, end)
+            if Utilities.MimeTypes.isTextFile(fileName):
+                self.sourceFile.emit(fileName, line, "", start, end)
+            else:
+                QDesktopServices.openUrl(QUrl(fileName))
     
     def __getFileList(self, path, filterRe, excludeHiddenDirs=False,
                       excludeHiddenFiles=False):
@@ -743,7 +770,7 @@
                 self.findProgressLabel.setPath(file)
                 
                 if self.projectButton.isChecked():
-                    fn = os.path.join(self.project.ppath, file)
+                    fn = os.path.join(self.project.getProjectPath(), file)
                 else:
                     fn = file
                 

eric ide

mercurial