src/eric7/Preferences/SubstyleDefinitionDialog.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
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 )

eric ide

mercurial