eric7/UI/Previewers/PreviewerQSS.py

Mon, 20 Dec 2021 14:51:29 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 20 Dec 2021 14:51:29 +0100
branch
eric7
changeset 8843
586ee2c4553a
parent 8834
c7c3cedb5db3
child 8848
c3d1b62da058
permissions
-rw-r--r--

Enhanced style sheet previewer and style sheet handling.

3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
3 # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a previewer widget for Qt style sheet files.
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
8834
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
12 from PyQt6.QtCore import pyqtSlot, Qt
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
13 from PyQt6.QtWidgets import (
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
14 QWidget, QMenu, QLabel, QHeaderView, QListWidgetItem
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
15 )
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
8843
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
17 from EricWidgets.EricPathPicker import EricPathPickerModes
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
18
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .Ui_PreviewerQSS import Ui_PreviewerQSS
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 import Preferences
3460
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
22 import UI.PixmapCache
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
8843
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
24 from eric7config import getConfig
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 class PreviewerQSS(QWidget, Ui_PreviewerQSS):
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Class implementing a previewer widget for Qt style sheet files.
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 def __init__(self, parent=None):
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param parent reference to the parent widget (QWidget)
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
36 super().__init__(parent)
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.setupUi(self)
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
8843
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
39 self.styleIconsPathPicker.setMode(
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
40 EricPathPickerModes.DIRECTORY_SHOW_FILES_MODE)
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
41
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
42 self.__lastEditor = None
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
43
3460
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
44 # menu for the tool button
3488
6d977dc657d3 Fixed a typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3460
diff changeset
45 self.__toolButtonMenu = QMenu(self)
3460
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
46 self.__toolButtonMenu.addAction(self.tr("Action 1"))
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__toolButtonMenu.addSeparator()
3460
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
48 self.__toolButtonMenu.addAction(self.tr("Action 2"))
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.toolButton.setMenu(self.__toolButtonMenu)
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
3460
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
51 # a MDI window
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
52 self.__mdi = self.mdiArea.addSubWindow(QLabel(self.tr("MDI")))
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
53 self.__mdi.resize(160, 80)
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
54
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
55 # tree and table widgets
7198
684261ef2165 Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
56 self.tree.header().setSectionResizeMode(
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
57 QHeaderView.ResizeMode.ResizeToContents)
7198
684261ef2165 Removed the Qt4 runtime stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
58 self.table.horizontalHeader().setSectionResizeMode(
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
59 QHeaderView.ResizeMode.ResizeToContents)
3460
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
60 self.tree.topLevelItem(0).setExpanded(True)
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
61
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
62 # icon list widget
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
63 for iconName, labelText in (
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
64 ("filePython", self.tr("Python")),
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
65 ("fileRuby", self.tr("Ruby")),
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
66 ("fileJavascript", self.tr("JavaScript")),
3460
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
67 ):
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
68 self.iconsListWidget.addItem(QListWidgetItem(
c556c7e7d7fe Continued with the QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3459
diff changeset
69 UI.PixmapCache.getIcon(iconName), labelText))
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
8843
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
71 @pyqtSlot(str)
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
72 def on_styleIconsPathPicker_textChanged(self, txt):
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
73 """
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
74 Private slot handling a change of the style icons path.
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
75
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
76 @param txt name of the style icons directory
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
77 @type str
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
78 """
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
79 self.processEditor(self.__lastEditor)
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
80
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 def processEditor(self, editor=None):
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3515
diff changeset
83 Public slot to process an editor's text.
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @param editor editor to be processed (Editor)
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
8843
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
87 self.__lastEditor = editor
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
88
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 if editor is not None:
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 fn = editor.getFileName()
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 if fn:
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 extension = os.path.normcase(os.path.splitext(fn)[1][1:])
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 else:
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 extension = ""
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
96 if (
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
97 extension in Preferences.getEditor(
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
98 "PreviewQssFileNameExtensions")
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
99 ):
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 styleSheet = editor.text()
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 if styleSheet:
8843
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
102 styleIconsPath = self.styleIconsPathPicker.text()
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
103 if not styleIconsPath:
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
104 styleIconsPath = Preferences.getUI("StyleIconsPath")
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
105 if not styleIconsPath:
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
106 # default ist the 'StyleIcons' subdirectory of the
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
107 # icons directory
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
108 styleIconsPath = os.path.join(
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
109 getConfig('ericIconDir'), "StyleIcons")
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
110
586ee2c4553a Enhanced style sheet previewer and style sheet handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8834
diff changeset
111 styleSheet = styleSheet.replace("${path}", styleIconsPath)
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.scrollAreaWidgetContents.setStyleSheet(styleSheet)
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 else:
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.scrollAreaWidgetContents.setStyleSheet("")
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 self.toolButton.menu().setStyleSheet(
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.scrollAreaWidgetContents.styleSheet())
8834
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
117
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
118 @pyqtSlot(int)
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
119 def on_checkBox_stateChanged(self, state):
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
120 """
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
121 Private slot to synchronize the checkbox state.
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
122
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
123 @param state state of the enabled check box
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
124 @type int
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
125 """
c7c3cedb5db3 QSS Previewer: added disabled widgets
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
126 self.disabledCheckBox.setCheckState(Qt.CheckState(state))

eric ide

mercurial