diff options
Diffstat (limited to 'extras/UI_Handeler.py')
-rw-r--r-- | extras/UI_Handeler.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/extras/UI_Handeler.py b/extras/UI_Handeler.py new file mode 100644 index 0000000..d591766 --- /dev/null +++ b/extras/UI_Handeler.py @@ -0,0 +1,81 @@ +from main import * +from PyQt5.QtCore import QPropertyAnimation +from PyQt5 import QtCore, QtWidgets +from PyQt5.QtGui import QPixmap, QPainter +from PyQt5.QtCore import QTimeLine +from PyQt5.QtWidgets import QWidget, QStackedWidget, QPushButton +from functools import partial + +class UI_Handeler(MainWindow): + def toggleNavigationBar(self, maxWidth, enable): + if enable: + width = self.leftMenuSubContainer.width() + maxExtend = maxWidth + standard = 80 + + if width == 80: + widthExtended = maxExtend + else: + widthExtended = standard + + self.animation = QPropertyAnimation(self.leftMenuSubContainer, b"minimumWidth") + self.animation.setDuration(400) + self.animation.setStartValue(width) + self.animation.setEndValue(widthExtended) + self.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuart) + self.animation.start() + + # animate switching pages for QstackedWidget with the animation being a fade in and out + def animateSwitch(self, index): + self.fader_widget = FaderWidget(self.stackedWidget.currentWidget(), self.stackedWidget.widget(index)) + self.stackedWidget.setCurrentIndex(index) + + # add window resizing to the UI + def toggleMaximized(self): + if self.isMaximized(): + self.showNormal() + else: + self.showMaximized() + + # move the window by dragging the header + def moveWindow(self, event): + + if event.buttons() == QtCore.Qt.LeftButton: + self.move(self.pos() + event.globalPos() - self.clickPosition) + self.clickPosition = event.globalPos() + event.accept() + + # get the position of the mouse when clicked + def mousePressEvent(self, event): + self.clickPosition = event.globalPos() + event.accept() + + # get the position of the mouse when released + def mouseReleaseEvent(self, event): + self.clickPosition = None + event.accept() + +class FaderWidget(QWidget): + def __init__(self, old_widget, new_widget): + QWidget.__init__(self, new_widget) + self.old_pixmap = QPixmap(new_widget.size()) + old_widget.render(self.old_pixmap) + self.pixmap_opacity = 1.0 + self.timeline = QTimeLine() + self.timeline.valueChanged.connect(self.animate) + self.timeline.finished.connect(self.close) + self.timeline.setDuration(250) + self.timeline.start() + self.resize(new_widget.size()) + self.show() + + def paintEvent(self, event): + painter = QPainter() + painter.begin(self) + painter.setOpacity(self.pixmap_opacity) + painter.drawPixmap(0, 0, self.old_pixmap) + painter.end() + + def animate(self, value): + self.pixmap_opacity = 1.0 - value + self.repaint()
\ No newline at end of file |