|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2019 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing the sub-style definition dialog. |
|
8 """ |
|
9 |
|
10 from PyQt6.QtCore import pyqtSlot |
|
11 from PyQt6.QtWidgets import QDialog, QDialogButtonBox |
|
12 |
|
13 from EricWidgets import EricMessageBox |
|
14 |
|
15 from .Ui_SubstyleDefinitionDialog import Ui_SubstyleDefinitionDialog |
|
16 |
|
17 |
|
18 class SubstyleDefinitionDialog(QDialog, Ui_SubstyleDefinitionDialog): |
|
19 """ |
|
20 Class implementing the sub-style definition dialog. |
|
21 """ |
|
22 def __init__(self, lexer, style, substyle, parent=None): |
|
23 """ |
|
24 Constructor |
|
25 |
|
26 @param lexer reference to the lexer object |
|
27 @type PreferencesLexer |
|
28 @param style style number |
|
29 @type int |
|
30 @param substyle sub-style number |
|
31 @type int |
|
32 @param parent reference to the parent widget |
|
33 @type QWidget |
|
34 """ |
|
35 super().__init__(parent) |
|
36 self.setupUi(self) |
|
37 |
|
38 self.__lexer = lexer |
|
39 self.__style = style |
|
40 self.__substyle = substyle |
|
41 |
|
42 self.header.setText(self.tr("<h3>{0} - {1}</h3>").format( |
|
43 self.__lexer.language(), self.__lexer.description(self.__style))) |
|
44 if self.__substyle >= 0: |
|
45 # it's an edit operation |
|
46 self.descriptionEdit.setText( |
|
47 self.__lexer.description(self.__style, self.__substyle)) |
|
48 self.wordsEdit.setPlainText( |
|
49 self.__lexer.words(self.__style, self.__substyle)) |
|
50 |
|
51 def __updateOk(self): |
|
52 """ |
|
53 Private slot to update the state of the OK button. |
|
54 """ |
|
55 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( |
|
56 bool(self.descriptionEdit.text().strip()) and |
|
57 bool(self.wordsEdit.toPlainText().strip()) |
|
58 ) |
|
59 |
|
60 @pyqtSlot(str) |
|
61 def on_descriptionEdit_textChanged(self, txt): |
|
62 """ |
|
63 Private slot handling changes of the description. |
|
64 |
|
65 @param txt text of the description |
|
66 @type str |
|
67 """ |
|
68 self.__updateOk() |
|
69 |
|
70 @pyqtSlot() |
|
71 def on_wordsEdit_textChanged(self): |
|
72 """ |
|
73 Private slot handling changes of the word list. |
|
74 """ |
|
75 self.__updateOk() |
|
76 |
|
77 @pyqtSlot() |
|
78 def on_resetButton_clicked(self): |
|
79 """ |
|
80 Private slot to reset the dialog contents. |
|
81 """ |
|
82 ok = EricMessageBox.yesNo( |
|
83 self, |
|
84 self.tr("Reset Sub-Style Data"), |
|
85 self.tr("""Shall the entered sub-style data be reset?""")) |
|
86 if ok: |
|
87 if self.__substyle >= 0: |
|
88 self.descriptionEdit.setText( |
|
89 self.__lexer.description(self.__style, self.__substyle)) |
|
90 self.wordsEdit.setPlainText( |
|
91 self.__lexer.words(self.__style, self.__substyle)) |
|
92 else: |
|
93 self.descriptionEdit.clear() |
|
94 self.wordsEdit.clear() |
|
95 |
|
96 @pyqtSlot() |
|
97 def on_defaultButton_clicked(self): |
|
98 """ |
|
99 Private slot to set the dialog contents to default values. |
|
100 """ |
|
101 filled = ( |
|
102 bool(self.descriptionEdit.text().strip()) or |
|
103 bool(self.wordsEdit.toPlainText().strip()) |
|
104 ) |
|
105 ok = ( |
|
106 EricMessageBox.yesNo( |
|
107 self, |
|
108 self.tr("Set Sub-Style Data to Default"), |
|
109 self.tr("""Shall the sub-style data be set to default""" |
|
110 """ values?""")) |
|
111 if filled else |
|
112 True |
|
113 ) |
|
114 if ok: |
|
115 if self.__substyle >= 0: |
|
116 self.descriptionEdit.setText(self.__lexer.defaultDescription( |
|
117 self.__style, self.__substyle)) |
|
118 self.wordsEdit.setPlainText(self.__lexer.defaultWords( |
|
119 self.__style, self.__substyle)) |
|
120 else: |
|
121 self.descriptionEdit.clear() |
|
122 self.wordsEdit.clear() |
|
123 |
|
124 def getData(self): |
|
125 """ |
|
126 Public method to get the entered data. |
|
127 |
|
128 @return tuple containing the sub-style description and words list. |
|
129 @rtype tuple of (str, str) |
|
130 """ |
|
131 return ( |
|
132 self.descriptionEdit.text().strip(), |
|
133 self.wordsEdit.toPlainText().strip(), |
|
134 ) |