MCPcopy Create free account
hub / github.com/PyQt5/PyQt / DWaterProgress

Class DWaterProgress

QProgressBar/Lib/DWaterProgress.py:49–253  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47
48
49class DWaterProgress(QProgressBar):
50
51 def __init__(self, *args, **kwargs):
52 super(DWaterProgress, self).__init__(*args, **kwargs)
53 self.waterFrontImage = QImage()
54 self.waterBackImage = QImage()
55 self.waterFrontSvg = QSvgRenderer(WATER_FRONT.encode())
56 self.waterBackSvg = QSvgRenderer(WATER_BACK.encode())
57 self.pops = []
58 self.initPops()
59 self.setTextVisible(True)
60 self.interval = 33
61 self.timer = QTimer(self)
62 self.timer.setInterval(self.interval)
63 self.timer.timeout.connect(self.onTimerOut)
64 self.resizePixmap(self.size())
65 self.frontXOffset = self.width()
66 self.backXOffset = 0
67 effect = QGraphicsDropShadowEffect(self)
68 effect.setOffset(0, 6)
69 effect.setColor(QColor(1, 153, 248, 255 * 5 / 20))
70 effect.setBlurRadius(12)
71 self.setGraphicsEffect(effect)
72
73 def initPops(self):
74 self.pops = [Pop(7, -1.8, 0.6), Pop(8, 1.2, 1.0), Pop(11, 0.8, 1.6)]
75
76 @pyqtSlot()
77 def start(self):
78 self.timer.start()
79
80 @pyqtSlot()
81 def stop(self):
82 self.timer.stop()
83
84 def resizePixmap(self, sz):
85 # https://github.com/linuxdeepin/dtkwidget/blob/master/src/widgets/dwaterprogress.cpp#L192
86 # resize water
87 waterWidth = 500 * sz.width() / 100
88 waterHeight = 110 * sz.height() / 100
89 waterSize = QSizeF(waterWidth, waterHeight).toSize()
90
91 if self.waterFrontImage.size() != waterSize:
92 image = QImage(waterWidth, waterHeight, QImage.Format_ARGB32)
93 image.fill(Qt.transparent)
94 waterPainter = QPainter(image)
95 self.waterFrontSvg.render(waterPainter)
96 self.waterFrontImage = image
97
98 if self.waterBackImage.size() != waterSize:
99 image = QImage(waterWidth, waterHeight, QImage.Format_ARGB32)
100 image.fill(Qt.transparent) # partly transparent red-ish background
101 waterPainter = QPainter(image)
102 self.waterBackSvg.render(waterPainter)
103 self.waterBackImage = image
104
105 def onTimerOut(self):
106 # interval can not be zero, and limit to 1

Callers 1

__init__Method · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected