forked from fra589/cn5X
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cnledplugin.py
135 lines (118 loc) · 5.78 KB
/
cnledplugin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# Python v3 PyQt6
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' '
' Copyright 2018-2024 Gauthier Brière (gauthier.briere "at" gmail.com) '
' '
' This file is part of cn5X++ '
' '
' cn5X++ is free software: you can redistribute it and/or modify it '
' under the terms of the GNU General Public License as published by '
' the Free Software Foundation, either version 3 of the License, or '
' (at your option) any later version. '
' '
' cn5X++ is distributed in the hope that it will be useful, but '
' WITHOUT ANY WARRANTY; without even the implied warranty of '
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the '
' GNU General Public License for more details. '
' '
' You should have received a copy of the GNU General Public License '
' along with this program. If not, see <http://www.gnu.org/licenses/>. '
' '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
from PyQt6 import QtGui, QtDesigner
# ===== adapter selon le widget! ==========================================
# nom (str) du fichier du widget sans extension
FICHIERWIDGET = "cnled"
# nom (str) de la classe du widget pour importer
NOMCLASSEWIDGET = "cnLed"
# nom (str) de l'instance dans Designer
NOMWIDGET = "cnLed"
# groupe (str) de widgets pour affichage dans Designer
GROUPEWIDGET = "cn5X++ widgets"
# texte (str) pour le toolTip dans Designer
TEXTETOOLTIP = "Affichage d'une led eteinte ou allumee"
# texte (str) pour le whatsThis dans Designer
TEXTEWHATSTHIS = "Affichage d'une led eteinte ou allumee"
# icone (rien ou un fichier image ou un QPixmap) pour afficher dans Designer
ICONEWIDGET = QtGui.QIcon() # sans image, l'icone est celui de Qt
# liens symboliques a faire dans /usr/lib/x86_64-linux-gnu/qt5/plugins/designer
# ===========================================================================
# importation de la classe du widget
modulewidget = __import__(FICHIERWIDGET, fromlist=[NOMCLASSEWIDGET])
CLASSEWIDGET = getattr(modulewidget, NOMCLASSEWIDGET)
# ===========================================================================
class cnLedPlugin(QtDesigner.QPyDesignerCustomWidgetPlugin):
"""classe pour renseigner Designer sur le widget
nom de classe a renommer selon le widget
"""
#========================================================================
def __init__(self, parent=None):
super().__init__(parent)
self.initialized = False
#========================================================================
def initialize(self, core):
if self.initialized:
return
self.initialized = True
#========================================================================
def isInitialized(self):
return self.initialized
#========================================================================
def createWidget(self, parent):
"""retourne une instance de la classe qui definit le nouveau widget
"""
return CLASSEWIDGET(parent)
#========================================================================
def name(self):
"""definit le nom du widget dans QtDesigner
"""
return NOMCLASSEWIDGET
#========================================================================
def group(self):
"""definit le nom du groupe de widgets dans QtDesigner
"""
return GROUPEWIDGET
#========================================================================
def icon(self):
"""retourne l'icone qui represente le widget dans Designer
=> un QtGui.QIcon() ou un QtGui.QIcon(imagepixmap)
"""
return ICONEWIDGET
#========================================================================
def toolTip(self):
"""retourne une courte description du widget comme tooltip
"""
return TEXTETOOLTIP
#========================================================================
def whatsThis(self):
"""retourne une courte description du widget pour le "What's this?"
"""
return TEXTEWHATSTHIS
#========================================================================
def isContainer(self):
"""dit si le nouveau widget est un conteneur ou pas
"""
return False
#========================================================================
def domXml(self):
"""donne des proprietes du widget pour utilisation dans Designer
"""
return ('<widget class="{}" name="{}">\n' \
' <property name="toolTip" >\n' \
' <string>{}</string>\n' \
' </property>\n' \
' <property name="whatsThis" >\n' \
' <string>{}</string>\n' \
' </property>\n' \
' <property name="Couleur" >\n' \
' <string>Rouge</string>\n' \
' </property>\n' \
'</widget>\n'\
).format(NOMCLASSEWIDGET, NOMWIDGET, TEXTETOOLTIP, TEXTEWHATSTHIS)
#========================================================================
def includeFile(self):
"""retourne le nom du fichier (str sans extension) du widget
"""
return FICHIERWIDGET