Implement preview button

Fixes #172
This commit is contained in:
Keith Edmunds 2023-06-11 17:49:29 +01:00
parent bcb079727a
commit 52a4de0c01
9 changed files with 3226 additions and 2663 deletions

View File

@ -10,6 +10,7 @@ import sys
import threading import threading
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pygame import mixer
from time import sleep from time import sleep
from typing import ( from typing import (
Callable, Callable,
@ -287,6 +288,7 @@ class Window(QMainWindow, Ui_MainWindow):
self.statusbar.addWidget(self.txtSearch) self.statusbar.addWidget(self.txtSearch)
self.txtSearch.setHidden(True) self.txtSearch.setHidden(True)
self.hide_played_tracks = False self.hide_played_tracks = False
mixer.init()
self.visible_playlist_tab: Callable[[], PlaylistTab] = \ self.visible_playlist_tab: Callable[[], PlaylistTab] = \
self.tabPlaylist.currentWidget self.tabPlaylist.currentWidget
@ -606,7 +608,7 @@ class Window(QMainWindow, Ui_MainWindow):
self.btnDrop3db.clicked.connect(self.drop3db) self.btnDrop3db.clicked.connect(self.drop3db)
self.btnFade.clicked.connect(self.fade) self.btnFade.clicked.connect(self.fade)
self.btnHidePlayed.clicked.connect(self.hide_played) self.btnHidePlayed.clicked.connect(self.hide_played)
self.btnStop.clicked.connect(self.stop) self.btnPreview.clicked.connect(self.preview)
self.hdrCurrentTrack.clicked.connect(self.show_current) self.hdrCurrentTrack.clicked.connect(self.show_current)
self.hdrNextTrack.clicked.connect(self.show_next) self.hdrNextTrack.clicked.connect(self.show_next)
self.tabPlaylist.currentChanged.connect(self.tab_change) self.tabPlaylist.currentChanged.connect(self.tab_change)
@ -1278,6 +1280,28 @@ class Window(QMainWindow, Ui_MainWindow):
self.current_track.end_time.strftime( self.current_track.end_time.strftime(
Config.TRACK_TIME_FORMAT)) Config.TRACK_TIME_FORMAT))
def preview(self) -> None:
"""
Preview selected or next track. We use a different mechanism to
normal track playing so that the user can route the output audio
differently (eg, to headphones).
"""
if self.btnPreview.isChecked():
# Get track path for first selected track if there is one
track_path = (
self.visible_playlist_tab().get_selected_row_track_path())
if not track_path:
# Otherwise get path to next track to play
track_path = self.next_track.path
if not track_path:
return
mixer.music.load(track_path)
mixer.music.play()
else:
mixer.music.stop()
def rename_playlist(self) -> None: def rename_playlist(self) -> None:
""" """
Rename current playlist Rename current playlist

View File

@ -524,6 +524,22 @@ class PlaylistTab(QTableWidget):
return [plr for plr in plrs if plr is not None] return [plr for plr in plrs if plr is not None]
def get_selected_row_track_path(self) -> Optional[str]:
"""
Return the path of the first selected row or
None if no rows are selected or first selected row doesn't
have a track.
"""
first_selected_row = self._get_selected_row()
if not first_selected_row:
return None
path = self._get_row_track_path(first_selected_row)
if not path:
return None
return path
def hide_or_show_played_tracks(self) -> None: def hide_or_show_played_tracks(self) -> None:
""" """
Hide or show played tracks. Hide or show played tracks.

BIN
app/ui/headphone-symbol.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -1,5 +1,6 @@
<RCC> <RCC>
<qresource prefix="icons"> <qresource prefix="icons">
<file alias="headphones">headphone-symbol.png</file>
<file alias="musicmuster">musicmuster.png</file> <file alias="musicmuster">musicmuster.png</file>
<file alias="stopsign">stopsign.png</file> <file alias="stopsign">stopsign.png</file>
<file alias="wikipedia">wikipedia-logo.png</file> <file alias="wikipedia">wikipedia-logo.png</file>

File diff suppressed because it is too large Load Diff

View File

@ -29,7 +29,7 @@
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout_4"> <layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0"> <item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="TrackHeaderLayout">
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
@ -348,7 +348,7 @@ padding-left: 8px;</string>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="5" column="0">
<widget class="QFrame" name="frame_5"> <widget class="QFrame" name="InfoFooterFrame">
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background-color: rgb(192, 191, 188)</string> <string notr="true">background-color: rgb(192, 191, 188)</string>
</property> </property>
@ -362,7 +362,7 @@ padding-left: 8px;</string>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
<widget class="QFrame" name="frame"> <widget class="QFrame" name="FadeStopInfoFrame">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>321</width> <width>321</width>
@ -376,32 +376,16 @@ padding-left: 8px;</string>
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="1" column="0">
<widget class="QLabel" name="label_x"> <widget class="QLabel" name="label_7">
<property name="text"> <property name="text">
<string>Track length:</string> <string>Fade length:</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="QLabel" name="label_track_length">
<property name="font">
<font>
<family>FreeSans</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>0:00</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QLabel" name="label_x_2"> <widget class="QLabel" name="label_x_2">
<property name="text"> <property name="text">
@ -412,6 +396,23 @@ padding-left: 8px;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="btnFade">
<property name="text">
<string> Fade</string>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/fade</normaloff>:/icons/fade</iconset>
</property>
<property name="iconSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item row="0" column="3"> <item row="0" column="3">
<widget class="QLabel" name="label_start_time"> <widget class="QLabel" name="label_start_time">
<property name="font"> <property name="font">
@ -428,10 +429,26 @@ padding-left: 8px;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="3">
<widget class="QLabel" name="label_7"> <widget class="QLabel" name="label_end_time">
<property name="font">
<font>
<family>FreeSans</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Fade length:</string> <string>00:00:00</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_x">
<property name="text">
<string>Track length:</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@ -464,8 +481,8 @@ padding-left: 8px;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="3"> <item row="0" column="1">
<widget class="QLabel" name="label_end_time"> <widget class="QLabel" name="label_track_length">
<property name="font"> <property name="font">
<font> <font>
<family>FreeSans</family> <family>FreeSans</family>
@ -473,38 +490,21 @@ padding-left: 8px;</string>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>00:00:00</string> <string>0:00</string>
</property> </property>
<property name="scaledContents"> <property name="scaledContents">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="btnFade">
<property name="text">
<string>Fade</string>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/fade</normaloff>:/icons/fade</iconset>
</property>
<property name="iconSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item row="2" column="2" colspan="2"> <item row="2" column="2" colspan="2">
<widget class="QPushButton" name="btnStop"> <widget class="QPushButton" name="btnPreview">
<property name="text"> <property name="text">
<string>Stop</string> <string> Preview</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="icons.qrc"> <iconset resource="icons.qrc">
<normaloff>:/icons/stopsign</normaloff>:/icons/stopsign</iconset> <normaloff>:/icons/headphones</normaloff>:/icons/headphones</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
@ -512,6 +512,9 @@ padding-left: 8px;</string>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="checkable">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
@ -551,6 +554,7 @@ padding-left: 8px;</string>
<font> <font>
<family>FreeSans</family> <family>FreeSans</family>
<pointsize>40</pointsize> <pointsize>40</pointsize>
<weight>50</weight>
<bold>false</bold> <bold>false</bold>
</font> </font>
</property> </property>
@ -602,6 +606,7 @@ padding-left: 8px;</string>
<font> <font>
<family>FreeSans</family> <family>FreeSans</family>
<pointsize>40</pointsize> <pointsize>40</pointsize>
<weight>50</weight>
<bold>false</bold> <bold>false</bold>
</font> </font>
</property> </property>
@ -650,6 +655,7 @@ padding-left: 8px;</string>
<font> <font>
<family>FreeSans</family> <family>FreeSans</family>
<pointsize>40</pointsize> <pointsize>40</pointsize>
<weight>50</weight>
<bold>false</bold> <bold>false</bold>
</font> </font>
</property> </property>
@ -698,6 +704,7 @@ padding-left: 8px;</string>
<font> <font>
<family>FreeSans</family> <family>FreeSans</family>
<pointsize>40</pointsize> <pointsize>40</pointsize>
<weight>50</weight>
<bold>false</bold> <bold>false</bold>
</font> </font>
</property> </property>
@ -713,7 +720,7 @@ padding-left: 8px;</string>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QFrame" name="frame_3"> <widget class="QFrame" name="frame_toggleplayed_3db">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>152</width> <width>152</width>

View File

@ -22,8 +22,8 @@ class Ui_MainWindow(object):
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.gridLayout_4 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_4 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_4.setObjectName("gridLayout_4") self.gridLayout_4.setObjectName("gridLayout_4")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.TrackHeaderLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.TrackHeaderLayout.setObjectName("TrackHeaderLayout")
self.verticalLayout_3 = QtWidgets.QVBoxLayout() self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3") self.verticalLayout_3.setObjectName("verticalLayout_3")
self.previous_track_2 = QtWidgets.QLabel(parent=self.centralwidget) self.previous_track_2 = QtWidgets.QLabel(parent=self.centralwidget)
@ -74,7 +74,7 @@ class Ui_MainWindow(object):
self.next_track_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter) self.next_track_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.next_track_2.setObjectName("next_track_2") self.next_track_2.setObjectName("next_track_2")
self.verticalLayout_3.addWidget(self.next_track_2) self.verticalLayout_3.addWidget(self.next_track_2)
self.horizontalLayout_3.addLayout(self.verticalLayout_3) self.TrackHeaderLayout.addLayout(self.verticalLayout_3)
self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout.setObjectName("verticalLayout")
self.hdrPreviousTrack = QtWidgets.QLabel(parent=self.centralwidget) self.hdrPreviousTrack = QtWidgets.QLabel(parent=self.centralwidget)
@ -130,7 +130,7 @@ class Ui_MainWindow(object):
self.hdrNextTrack.setFlat(True) self.hdrNextTrack.setFlat(True)
self.hdrNextTrack.setObjectName("hdrNextTrack") self.hdrNextTrack.setObjectName("hdrNextTrack")
self.verticalLayout.addWidget(self.hdrNextTrack) self.verticalLayout.addWidget(self.hdrNextTrack)
self.horizontalLayout_3.addLayout(self.verticalLayout) self.TrackHeaderLayout.addLayout(self.verticalLayout)
self.frame_2 = QtWidgets.QFrame(parent=self.centralwidget) self.frame_2 = QtWidgets.QFrame(parent=self.centralwidget)
self.frame_2.setMaximumSize(QtCore.QSize(230, 16777215)) self.frame_2.setMaximumSize(QtCore.QSize(230, 16777215))
self.frame_2.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.frame_2.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
@ -146,8 +146,8 @@ class Ui_MainWindow(object):
self.lblTOD.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.lblTOD.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.lblTOD.setObjectName("lblTOD") self.lblTOD.setObjectName("lblTOD")
self.gridLayout_2.addWidget(self.lblTOD, 0, 0, 1, 1) self.gridLayout_2.addWidget(self.lblTOD, 0, 0, 1, 1)
self.horizontalLayout_3.addWidget(self.frame_2) self.TrackHeaderLayout.addWidget(self.frame_2)
self.gridLayout_4.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) self.gridLayout_4.addLayout(self.TrackHeaderLayout, 0, 0, 1, 1)
self.frame_4 = QtWidgets.QFrame(parent=self.centralwidget) self.frame_4 = QtWidgets.QFrame(parent=self.centralwidget)
self.frame_4.setMinimumSize(QtCore.QSize(0, 16)) self.frame_4.setMinimumSize(QtCore.QSize(0, 16))
self.frame_4.setAutoFillBackground(False) self.frame_4.setAutoFillBackground(False)
@ -178,39 +178,38 @@ class Ui_MainWindow(object):
self.tabInfolist.setMovable(True) self.tabInfolist.setMovable(True)
self.tabInfolist.setObjectName("tabInfolist") self.tabInfolist.setObjectName("tabInfolist")
self.gridLayout_4.addWidget(self.splitter, 4, 0, 1, 1) self.gridLayout_4.addWidget(self.splitter, 4, 0, 1, 1)
self.frame_5 = QtWidgets.QFrame(parent=self.centralwidget) self.InfoFooterFrame = QtWidgets.QFrame(parent=self.centralwidget)
self.frame_5.setStyleSheet("background-color: rgb(192, 191, 188)") self.InfoFooterFrame.setStyleSheet("background-color: rgb(192, 191, 188)")
self.frame_5.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.InfoFooterFrame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) self.InfoFooterFrame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_5.setObjectName("frame_5") self.InfoFooterFrame.setObjectName("InfoFooterFrame")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.frame_5) self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.InfoFooterFrame)
self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout") self.horizontalLayout.setObjectName("horizontalLayout")
self.frame = QtWidgets.QFrame(parent=self.frame_5) self.FadeStopInfoFrame = QtWidgets.QFrame(parent=self.InfoFooterFrame)
self.frame.setMinimumSize(QtCore.QSize(321, 0)) self.FadeStopInfoFrame.setMinimumSize(QtCore.QSize(321, 0))
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.FadeStopInfoFrame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) self.FadeStopInfoFrame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame") self.FadeStopInfoFrame.setObjectName("FadeStopInfoFrame")
self.gridLayout = QtWidgets.QGridLayout(self.frame) self.gridLayout = QtWidgets.QGridLayout(self.FadeStopInfoFrame)
self.gridLayout.setObjectName("gridLayout") self.gridLayout.setObjectName("gridLayout")
self.label_x = QtWidgets.QLabel(parent=self.frame) self.label_7 = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
self.label_x.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter) self.label_7.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.label_x.setObjectName("label_x") self.label_7.setObjectName("label_7")
self.gridLayout.addWidget(self.label_x, 0, 0, 1, 1) self.gridLayout.addWidget(self.label_7, 1, 0, 1, 1)
self.label_track_length = QtWidgets.QLabel(parent=self.frame) self.label_x_2 = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
font = QtGui.QFont()
font.setFamily("FreeSans")
font.setPointSize(16)
self.label_track_length.setFont(font)
self.label_track_length.setScaledContents(False)
self.label_track_length.setObjectName("label_track_length")
self.gridLayout.addWidget(self.label_track_length, 0, 1, 1, 1)
self.label_x_2 = QtWidgets.QLabel(parent=self.frame)
self.label_x_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter) self.label_x_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.label_x_2.setObjectName("label_x_2") self.label_x_2.setObjectName("label_x_2")
self.gridLayout.addWidget(self.label_x_2, 0, 2, 1, 1) self.gridLayout.addWidget(self.label_x_2, 0, 2, 1, 1)
self.label_start_time = QtWidgets.QLabel(parent=self.frame) self.btnFade = QtWidgets.QPushButton(parent=self.FadeStopInfoFrame)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/icons/fade"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.btnFade.setIcon(icon1)
self.btnFade.setIconSize(QtCore.QSize(30, 30))
self.btnFade.setObjectName("btnFade")
self.gridLayout.addWidget(self.btnFade, 2, 0, 1, 2)
self.label_start_time = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
font = QtGui.QFont() font = QtGui.QFont()
font.setFamily("FreeSans") font.setFamily("FreeSans")
font.setPointSize(16) font.setPointSize(16)
@ -218,23 +217,7 @@ class Ui_MainWindow(object):
self.label_start_time.setScaledContents(False) self.label_start_time.setScaledContents(False)
self.label_start_time.setObjectName("label_start_time") self.label_start_time.setObjectName("label_start_time")
self.gridLayout.addWidget(self.label_start_time, 0, 3, 1, 1) self.gridLayout.addWidget(self.label_start_time, 0, 3, 1, 1)
self.label_7 = QtWidgets.QLabel(parent=self.frame) self.label_end_time = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
self.label_7.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.label_7.setObjectName("label_7")
self.gridLayout.addWidget(self.label_7, 1, 0, 1, 1)
self.label_fade_length = QtWidgets.QLabel(parent=self.frame)
font = QtGui.QFont()
font.setFamily("FreeSans")
font.setPointSize(16)
self.label_fade_length.setFont(font)
self.label_fade_length.setScaledContents(False)
self.label_fade_length.setObjectName("label_fade_length")
self.gridLayout.addWidget(self.label_fade_length, 1, 1, 1, 1)
self.label_8 = QtWidgets.QLabel(parent=self.frame)
self.label_8.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.label_8.setObjectName("label_8")
self.gridLayout.addWidget(self.label_8, 1, 2, 1, 1)
self.label_end_time = QtWidgets.QLabel(parent=self.frame)
font = QtGui.QFont() font = QtGui.QFont()
font.setFamily("FreeSans") font.setFamily("FreeSans")
font.setPointSize(16) font.setPointSize(16)
@ -242,22 +225,40 @@ class Ui_MainWindow(object):
self.label_end_time.setScaledContents(False) self.label_end_time.setScaledContents(False)
self.label_end_time.setObjectName("label_end_time") self.label_end_time.setObjectName("label_end_time")
self.gridLayout.addWidget(self.label_end_time, 1, 3, 1, 1) self.gridLayout.addWidget(self.label_end_time, 1, 3, 1, 1)
self.btnFade = QtWidgets.QPushButton(parent=self.frame) self.label_x = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
icon1 = QtGui.QIcon() self.label_x.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
icon1.addPixmap(QtGui.QPixmap(":/icons/fade"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off) self.label_x.setObjectName("label_x")
self.btnFade.setIcon(icon1) self.gridLayout.addWidget(self.label_x, 0, 0, 1, 1)
self.btnFade.setIconSize(QtCore.QSize(30, 30)) self.label_fade_length = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
self.btnFade.setObjectName("btnFade") font = QtGui.QFont()
self.gridLayout.addWidget(self.btnFade, 2, 0, 1, 2) font.setFamily("FreeSans")
self.btnStop = QtWidgets.QPushButton(parent=self.frame) font.setPointSize(16)
self.label_fade_length.setFont(font)
self.label_fade_length.setScaledContents(False)
self.label_fade_length.setObjectName("label_fade_length")
self.gridLayout.addWidget(self.label_fade_length, 1, 1, 1, 1)
self.label_8 = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
self.label_8.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.label_8.setObjectName("label_8")
self.gridLayout.addWidget(self.label_8, 1, 2, 1, 1)
self.label_track_length = QtWidgets.QLabel(parent=self.FadeStopInfoFrame)
font = QtGui.QFont()
font.setFamily("FreeSans")
font.setPointSize(16)
self.label_track_length.setFont(font)
self.label_track_length.setScaledContents(False)
self.label_track_length.setObjectName("label_track_length")
self.gridLayout.addWidget(self.label_track_length, 0, 1, 1, 1)
self.btnPreview = QtWidgets.QPushButton(parent=self.FadeStopInfoFrame)
icon2 = QtGui.QIcon() icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/icons/stopsign"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off) icon2.addPixmap(QtGui.QPixmap(":/icons/headphones"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.btnStop.setIcon(icon2) self.btnPreview.setIcon(icon2)
self.btnStop.setIconSize(QtCore.QSize(30, 30)) self.btnPreview.setIconSize(QtCore.QSize(30, 30))
self.btnStop.setObjectName("btnStop") self.btnPreview.setCheckable(True)
self.gridLayout.addWidget(self.btnStop, 2, 2, 1, 2) self.btnPreview.setObjectName("btnPreview")
self.horizontalLayout.addWidget(self.frame) self.gridLayout.addWidget(self.btnPreview, 2, 2, 1, 2)
self.frame_elapsed = QtWidgets.QFrame(parent=self.frame_5) self.horizontalLayout.addWidget(self.FadeStopInfoFrame)
self.frame_elapsed = QtWidgets.QFrame(parent=self.InfoFooterFrame)
self.frame_elapsed.setMinimumSize(QtCore.QSize(0, 112)) self.frame_elapsed.setMinimumSize(QtCore.QSize(0, 112))
self.frame_elapsed.setStyleSheet("") self.frame_elapsed.setStyleSheet("")
self.frame_elapsed.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.frame_elapsed.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
@ -274,13 +275,14 @@ class Ui_MainWindow(object):
font.setFamily("FreeSans") font.setFamily("FreeSans")
font.setPointSize(40) font.setPointSize(40)
font.setBold(False) font.setBold(False)
font.setWeight(50)
self.label_elapsed_timer.setFont(font) self.label_elapsed_timer.setFont(font)
self.label_elapsed_timer.setStyleSheet("color: black;") self.label_elapsed_timer.setStyleSheet("color: black;")
self.label_elapsed_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.label_elapsed_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_elapsed_timer.setObjectName("label_elapsed_timer") self.label_elapsed_timer.setObjectName("label_elapsed_timer")
self.verticalLayout_4.addWidget(self.label_elapsed_timer) self.verticalLayout_4.addWidget(self.label_elapsed_timer)
self.horizontalLayout.addWidget(self.frame_elapsed) self.horizontalLayout.addWidget(self.frame_elapsed)
self.frame_fade = QtWidgets.QFrame(parent=self.frame_5) self.frame_fade = QtWidgets.QFrame(parent=self.InfoFooterFrame)
self.frame_fade.setMinimumSize(QtCore.QSize(0, 112)) self.frame_fade.setMinimumSize(QtCore.QSize(0, 112))
self.frame_fade.setStyleSheet("") self.frame_fade.setStyleSheet("")
self.frame_fade.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.frame_fade.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
@ -297,12 +299,13 @@ class Ui_MainWindow(object):
font.setFamily("FreeSans") font.setFamily("FreeSans")
font.setPointSize(40) font.setPointSize(40)
font.setBold(False) font.setBold(False)
font.setWeight(50)
self.label_fade_timer.setFont(font) self.label_fade_timer.setFont(font)
self.label_fade_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.label_fade_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_fade_timer.setObjectName("label_fade_timer") self.label_fade_timer.setObjectName("label_fade_timer")
self.verticalLayout_2.addWidget(self.label_fade_timer) self.verticalLayout_2.addWidget(self.label_fade_timer)
self.horizontalLayout.addWidget(self.frame_fade) self.horizontalLayout.addWidget(self.frame_fade)
self.frame_silent = QtWidgets.QFrame(parent=self.frame_5) self.frame_silent = QtWidgets.QFrame(parent=self.InfoFooterFrame)
self.frame_silent.setMinimumSize(QtCore.QSize(0, 112)) self.frame_silent.setMinimumSize(QtCore.QSize(0, 112))
self.frame_silent.setStyleSheet("") self.frame_silent.setStyleSheet("")
self.frame_silent.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.frame_silent.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
@ -319,12 +322,13 @@ class Ui_MainWindow(object):
font.setFamily("FreeSans") font.setFamily("FreeSans")
font.setPointSize(40) font.setPointSize(40)
font.setBold(False) font.setBold(False)
font.setWeight(50)
self.label_silent_timer.setFont(font) self.label_silent_timer.setFont(font)
self.label_silent_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.label_silent_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_silent_timer.setObjectName("label_silent_timer") self.label_silent_timer.setObjectName("label_silent_timer")
self.verticalLayout_5.addWidget(self.label_silent_timer) self.verticalLayout_5.addWidget(self.label_silent_timer)
self.horizontalLayout.addWidget(self.frame_silent) self.horizontalLayout.addWidget(self.frame_silent)
self.frame_end = QtWidgets.QFrame(parent=self.frame_5) self.frame_end = QtWidgets.QFrame(parent=self.InfoFooterFrame)
self.frame_end.setMinimumSize(QtCore.QSize(0, 112)) self.frame_end.setMinimumSize(QtCore.QSize(0, 112))
self.frame_end.setStyleSheet("") self.frame_end.setStyleSheet("")
self.frame_end.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.frame_end.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
@ -341,34 +345,35 @@ class Ui_MainWindow(object):
font.setFamily("FreeSans") font.setFamily("FreeSans")
font.setPointSize(40) font.setPointSize(40)
font.setBold(False) font.setBold(False)
font.setWeight(50)
self.label_end_timer.setFont(font) self.label_end_timer.setFont(font)
self.label_end_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.label_end_timer.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_end_timer.setObjectName("label_end_timer") self.label_end_timer.setObjectName("label_end_timer")
self.gridLayout_5.addWidget(self.label_end_timer, 1, 0, 1, 1) self.gridLayout_5.addWidget(self.label_end_timer, 1, 0, 1, 1)
self.horizontalLayout.addWidget(self.frame_end) self.horizontalLayout.addWidget(self.frame_end)
self.frame_3 = QtWidgets.QFrame(parent=self.frame_5) self.frame_toggleplayed_3db = QtWidgets.QFrame(parent=self.InfoFooterFrame)
self.frame_3.setMinimumSize(QtCore.QSize(152, 112)) self.frame_toggleplayed_3db.setMinimumSize(QtCore.QSize(152, 112))
self.frame_3.setMaximumSize(QtCore.QSize(184, 16777215)) self.frame_toggleplayed_3db.setMaximumSize(QtCore.QSize(184, 16777215))
self.frame_3.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) self.frame_toggleplayed_3db.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) self.frame_toggleplayed_3db.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_3.setObjectName("frame_3") self.frame_toggleplayed_3db.setObjectName("frame_toggleplayed_3db")
self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_3) self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_toggleplayed_3db)
self.gridLayout_3.setObjectName("gridLayout_3") self.gridLayout_3.setObjectName("gridLayout_3")
self.btnDrop3db = QtWidgets.QPushButton(parent=self.frame_3) self.btnDrop3db = QtWidgets.QPushButton(parent=self.frame_toggleplayed_3db)
self.btnDrop3db.setMinimumSize(QtCore.QSize(132, 36)) self.btnDrop3db.setMinimumSize(QtCore.QSize(132, 36))
self.btnDrop3db.setMaximumSize(QtCore.QSize(164, 16777215)) self.btnDrop3db.setMaximumSize(QtCore.QSize(164, 16777215))
self.btnDrop3db.setCheckable(True) self.btnDrop3db.setCheckable(True)
self.btnDrop3db.setObjectName("btnDrop3db") self.btnDrop3db.setObjectName("btnDrop3db")
self.gridLayout_3.addWidget(self.btnDrop3db, 0, 0, 1, 1) self.gridLayout_3.addWidget(self.btnDrop3db, 0, 0, 1, 1)
self.btnHidePlayed = QtWidgets.QPushButton(parent=self.frame_3) self.btnHidePlayed = QtWidgets.QPushButton(parent=self.frame_toggleplayed_3db)
self.btnHidePlayed.setMinimumSize(QtCore.QSize(132, 36)) self.btnHidePlayed.setMinimumSize(QtCore.QSize(132, 36))
self.btnHidePlayed.setMaximumSize(QtCore.QSize(164, 16777215)) self.btnHidePlayed.setMaximumSize(QtCore.QSize(164, 16777215))
self.btnHidePlayed.setCheckable(True) self.btnHidePlayed.setCheckable(True)
self.btnHidePlayed.setObjectName("btnHidePlayed") self.btnHidePlayed.setObjectName("btnHidePlayed")
self.gridLayout_3.addWidget(self.btnHidePlayed, 1, 0, 1, 1) self.gridLayout_3.addWidget(self.btnHidePlayed, 1, 0, 1, 1)
self.horizontalLayout.addWidget(self.frame_3) self.horizontalLayout.addWidget(self.frame_toggleplayed_3db)
self.horizontalLayout_2.addLayout(self.horizontalLayout) self.horizontalLayout_2.addLayout(self.horizontalLayout)
self.gridLayout_4.addWidget(self.frame_5, 5, 0, 1, 1) self.gridLayout_4.addWidget(self.InfoFooterFrame, 5, 0, 1, 1)
self.cartsWidget = QtWidgets.QWidget(parent=self.centralwidget) self.cartsWidget = QtWidgets.QWidget(parent=self.centralwidget)
self.cartsWidget.setObjectName("cartsWidget") self.cartsWidget.setObjectName("cartsWidget")
self.horizontalLayout_Carts = QtWidgets.QHBoxLayout(self.cartsWidget) self.horizontalLayout_Carts = QtWidgets.QHBoxLayout(self.cartsWidget)
@ -569,16 +574,16 @@ class Ui_MainWindow(object):
self.current_track_2.setText(_translate("MainWindow", "Current track:")) self.current_track_2.setText(_translate("MainWindow", "Current track:"))
self.next_track_2.setText(_translate("MainWindow", "Next track:")) self.next_track_2.setText(_translate("MainWindow", "Next track:"))
self.lblTOD.setText(_translate("MainWindow", "00:00:00")) self.lblTOD.setText(_translate("MainWindow", "00:00:00"))
self.label_x.setText(_translate("MainWindow", "Track length:"))
self.label_track_length.setText(_translate("MainWindow", "0:00"))
self.label_x_2.setText(_translate("MainWindow", "Start:"))
self.label_start_time.setText(_translate("MainWindow", "00:00:00"))
self.label_7.setText(_translate("MainWindow", "Fade length:")) self.label_7.setText(_translate("MainWindow", "Fade length:"))
self.label_x_2.setText(_translate("MainWindow", "Start:"))
self.btnFade.setText(_translate("MainWindow", " Fade"))
self.label_start_time.setText(_translate("MainWindow", "00:00:00"))
self.label_end_time.setText(_translate("MainWindow", "00:00:00"))
self.label_x.setText(_translate("MainWindow", "Track length:"))
self.label_fade_length.setText(_translate("MainWindow", "0:00")) self.label_fade_length.setText(_translate("MainWindow", "0:00"))
self.label_8.setText(_translate("MainWindow", "End:")) self.label_8.setText(_translate("MainWindow", "End:"))
self.label_end_time.setText(_translate("MainWindow", "00:00:00")) self.label_track_length.setText(_translate("MainWindow", "0:00"))
self.btnFade.setText(_translate("MainWindow", "Fade")) self.btnPreview.setText(_translate("MainWindow", " Preview"))
self.btnStop.setText(_translate("MainWindow", "Stop"))
self.label.setText(_translate("MainWindow", "Elapsed time")) self.label.setText(_translate("MainWindow", "Elapsed time"))
self.label_elapsed_timer.setText(_translate("MainWindow", "00:00")) self.label_elapsed_timer.setText(_translate("MainWindow", "00:00"))
self.label_4.setText(_translate("MainWindow", "Fade")) self.label_4.setText(_translate("MainWindow", "Fade"))

80
poetry.lock generated
View File

@ -886,6 +886,84 @@ files = [
{file = "pyfzf-0.3.1.tar.gz", hash = "sha256:dd902e34cffeca9c3082f96131593dd20b4b3a9bba5b9dde1b0688e424b46bd2"}, {file = "pyfzf-0.3.1.tar.gz", hash = "sha256:dd902e34cffeca9c3082f96131593dd20b4b3a9bba5b9dde1b0688e424b46bd2"},
] ]
[[package]]
name = "pygame"
version = "2.4.0"
description = "Python Game Development"
category = "main"
optional = false
python-versions = ">=3.6"
files = [
{file = "pygame-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63591f381e5b28b90e115ac7a96f8ce5ecb917facb42d79d4f89714f89cc6d8e"},
{file = "pygame-2.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:13511c7c29f0fc23636f3b95a96ab45f964e84073e7e27dc602a479cd274d89a"},
{file = "pygame-2.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1b7201a44869eb420dd56c8e003251c9e7422c5304b3e78508e767a5634ab31b"},
{file = "pygame-2.4.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3ab14e06c302921f33d25180813711a920acef386d3992fc21731d2d5e8e86f0"},
{file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:418659c2d42f6a2356e2691006d79b6e07fd4992f9e904a2638c51c992f3e41b"},
{file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e70fd71e0321a805001192e08ae4af45b86c68f155670230c3f6f4dd25089e70"},
{file = "pygame-2.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab8115af26a9e95f39b08fff416f097803480f265500b218a5ca065d6e73124f"},
{file = "pygame-2.4.0-cp310-cp310-win32.whl", hash = "sha256:4ffec9661731fb674ccc88d1de92709219047af3d8198d0e6203c21f3f1b54a7"},
{file = "pygame-2.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:bb5a39320d00fa781959d2d0151e6f0293dd1398c6dc9dc934112ecce7b4fb52"},
{file = "pygame-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:23543e2d206d8de7d6db4f7b1c74e6fea6c01ead63caf7252e63341e1cdb09f6"},
{file = "pygame-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4b562cfdd8caa76ba47ca2a9211fee6b0a95ceb95c9da94cf60a3909b2300854"},
{file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:751bc57e4c3b7cd92762344562dcbd405e2b54488de1d7a1e083a470bdbc5ae9"},
{file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9b1127f085d09c7c0a976d440e8fc2f7adc579d62abcfc20c23c2699bbe2dc1"},
{file = "pygame-2.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47fd096ceb68d966681f8d0e820f7305bf05b30421ca562cfdb3c89a5aef26e5"},
{file = "pygame-2.4.0-cp311-cp311-win32.whl", hash = "sha256:de963a4b8787d93a9fba8f4052d9dde8b12adbeac5781e48035be1557dfadb20"},
{file = "pygame-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:75ef535ebe541b74a160bb59c3e520f543250d19f69d5973350ec1b9706e1469"},
{file = "pygame-2.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ca2ecc65126eaaa5b8e6a119913cfb2c2b1ed4c8ee1b980baf333aa9d379f227"},
{file = "pygame-2.4.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4a98ed8c47e367b9233b5ca25c36c2b45ab61959ac543195f0b6349f0a599ec8"},
{file = "pygame-2.4.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00ecd4688ee25d5d4cf48eddab18749a9bb2b382772f7fa8a987e4d21026c603"},
{file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99c296ecb8ce6ea1f404f4d174fdb215c64515827778525301c29ddf6f8e6e07"},
{file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6b94fc99487ce4a45ce00fa9145f4861f6e021254a005101d00bc17a4bb4f5c"},
{file = "pygame-2.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3020fb98f27a6ea79418a5b332ca07be93884e4a455c8a0a31b2dcf39ee2d96"},
{file = "pygame-2.4.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f97c8be81b3262ad8dae982485c4a73c9f2374614dfc0db8eb0f754badb29d6"},
{file = "pygame-2.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be7f948d33d0536c2922289e6f5983251cb0bd0d727db6ff692886c239f47a2c"},
{file = "pygame-2.4.0-cp36-cp36m-win32.whl", hash = "sha256:a66b314f4a637784d5ca2970745bb2e6e554447dce8f4cfedd9b9fcef5e3ffc6"},
{file = "pygame-2.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c09323eeae9e0cb2ced0cb3635485ae17f4f1b2b6b908a494ce2d830c609d4be"},
{file = "pygame-2.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4241e1da3852a955d37a22157ed51b2d30a65f7987eac9d162bb302fb754d87"},
{file = "pygame-2.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:802b03f6c367359c94eb6a90169666efa1aa1d6e24fce37a0b21642ccdfe48cf"},
{file = "pygame-2.4.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:79b0962a8f09788ca735532cfcf2dd053424fe5eabbda564b74f8e5e2eb11f48"},
{file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:627c8bb007a757da18d32c5d9b7ac50ab0356d9e922d570b0572765778080787"},
{file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f576403c2b14f0eea694365b9018d5bacac70b1550261ffc7a54a92e18967541"},
{file = "pygame-2.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5210cb09ec31281e16fda008bf8dfe2e024eef58e075dd0c01935d0004fdfffd"},
{file = "pygame-2.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6060d68d10fafd51c4cb3a7d687d741009881860dfd429c863e570877e2ce9de"},
{file = "pygame-2.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6c0081546749c0b4341ce575622a4f8eee05f675d3a0872ab6aed6e5bd2ba5a8"},
{file = "pygame-2.4.0-cp37-cp37m-win32.whl", hash = "sha256:fa2531f83e7c5f6f7cc20a1b4e0f982bd608aad81ff6c385148e64256ab0419f"},
{file = "pygame-2.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:cff815181437add5f3d702e8c7f1d2aa4ed04ed04cde27ec809e7ac516ee6b5f"},
{file = "pygame-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53bfdc1aea619fa8d347be37b08de87089d543375948aacf8b163b0c5eb6d4e4"},
{file = "pygame-2.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7fa1e65fd559823997f39a592cb49d8c89dd31c8bbde8273fe3922e2c1f294f6"},
{file = "pygame-2.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:65ee75e0e83e393fdc5c06e55e376c7511881a5ebee006ecca89cb1b3b41d6f1"},
{file = "pygame-2.4.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fbcba1b06f42338fecbd366227025f81729d9f4a577677fd3cd1ceff34d7286a"},
{file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b04451e5addae3a078a7a4f494e6b217025f4813dfb364a49c250fc5dfd1d2e2"},
{file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa3b63b71d555e7a21cecc11c65e059d9cb1902158d863ac3592e1947bc521a"},
{file = "pygame-2.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef14750fa60b47510cfe9c7c37e7abe67617f5d1f1a8ffa257a59d49836dadda"},
{file = "pygame-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5a2aee4214e5efed2cb3650139010dd4d0b1c29a9760278ab259d0b46281b66a"},
{file = "pygame-2.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:47be83060a9dbc79763fd230f04d53a29064b5f64d1b59425c432d3570b22623"},
{file = "pygame-2.4.0-cp38-cp38-win32.whl", hash = "sha256:14492d8c0eaad778bb10b6d53eaea4ef77f4d3431b6b7c857397dc6cf4397ac9"},
{file = "pygame-2.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:6ba967d0e3fed8611f1face6695dc8fa554ee543d300681f8080f5de9cc7da73"},
{file = "pygame-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f6b7a604812f447495829751dfe7ab57cb31c2c9acdb07ba4b7157490411a12"},
{file = "pygame-2.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e2a3176b33b97ebae397f951d254e3155a0afe730e1b76fb35126555c27dd3b5"},
{file = "pygame-2.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6ec870a63295ebff737640c4ef39868312e206dcba655b4ad5c7d0e8c2488b73"},
{file = "pygame-2.4.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e75d8c2980d719045be366160568bf508cbbed21285efe32468c75abcd4cf8b3"},
{file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e5d32def075e495b4802371fd8cda96ff4957aa39e215f83d87022dedf14cfb"},
{file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cad74cbbefbdb81cb22a9ea22561614b8dc58fcd52cd54126bbb8ee9ee77a5d5"},
{file = "pygame-2.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c75dd345707da622c78dbd6a63a025f7b89377ddc4e71ba40043929824f5d4"},
{file = "pygame-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075c1282b1d307669c8ef29942564b91acb85623bedba3bfb841079d539ded31"},
{file = "pygame-2.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1422673a2b485153cbc20dbbd37af791c9842ca98a1b7a89fe3ac115cce79805"},
{file = "pygame-2.4.0-cp39-cp39-win32.whl", hash = "sha256:fb7bb86c4aedb4382d7f643ff7d21ab4731d59ddb9b448e78b9125ab1addc007"},
{file = "pygame-2.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:93bb1406125ae9bd7a9bb0d45f11b30f157ea8d2efee1ebe9d781b1d1a9fce6b"},
{file = "pygame-2.4.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:2946c151691c80ffb9f3f39e1f294d7ed9edaae1814e528d2f5b4751e7e6d903"},
{file = "pygame-2.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80502eb26483b0206d0508475ec7d67a86bc0afc5bb4aad3a6172a7a85a27554"},
{file = "pygame-2.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9c8bb7b77f97eb49dac900445fbf96a332d2072588949d6396581933843fb04"},
{file = "pygame-2.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b6e1493724d29e46a0e7e8125d9808c9957c652db67afe9497d385509fc5ac5"},
{file = "pygame-2.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43db3a6c9be3d94eececf7c86cde7584d2bb87f394ade40139c3b4e528fdff24"},
{file = "pygame-2.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ed4d4317bce8fe78592a7b5b4a07f2e0ff814e35c66cb5a3b398dae96c3f27"},
{file = "pygame-2.4.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e5f043751840a07ff0160abe46ed42a88bc29baee93656abb5a050beda176306"},
{file = "pygame-2.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:867cf19f1c7aa6f187a0a31b702f5668e935e700b46d94bd58e94ec8581cf081"},
{file = "pygame-2.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a93d368311d40827dc5f0cad2a0e9a8700c1b017346808cfdfd9ea98aee45df"},
{file = "pygame-2.4.0.tar.gz", hash = "sha256:e3603e70e96ee30af1954ce57d4922a059402f368013e7138e90f1c03d185267"},
]
[[package]] [[package]]
name = "pygments" name = "pygments"
version = "2.14.0" version = "2.14.0"
@ -1528,4 +1606,4 @@ test = ["websockets"]
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.9" python-versions = "^3.9"
content-hash = "cb1651be218a8b54d618e1e8c67f53b8baaa81686538f9b1dccb4a34d2800178" content-hash = "5b335197cebe3355472e3d0024a978e4853efce33802008987351b5196d8746d"

View File

@ -25,6 +25,7 @@ stackprinter = "^0.2.10"
obsws-python = "^1.4.2" obsws-python = "^1.4.2"
pyqt6 = "^6.5.0" pyqt6 = "^6.5.0"
pyqt6-webengine = "^6.5.0" pyqt6-webengine = "^6.5.0"
pygame = "^2.4.0"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
ipdb = "^0.13.9" ipdb = "^0.13.9"