debug window table working, ui changes, small bugfixes

This commit is contained in:
billypom on debian 2025-04-16 22:08:12 -04:00
parent d15e9f6c02
commit 2693973975
6 changed files with 258 additions and 314 deletions

View File

@ -44,7 +44,7 @@ class AudioVisualizer(QtWidgets.QWidget):
# Graphics plot # Graphics plot
# Make sure PlotWidget doesn't exceed album art height # Make sure PlotWidget doesn't exceed album art height
# Adjust to leave room for playback controls # Adjust to leave room for playback controls
self.PlotWidget.setFixedHeight(225) self.PlotWidget.setFixedHeight(250)
# x range # x range
self.PlotWidget.setXRange( self.PlotWidget.setXRange(
0, self.get_x_resolution(), padding=0 0, self.get_x_resolution(), padding=0

View File

@ -1,13 +1,15 @@
from collections.abc import Iterable from collections.abc import Iterable
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QAbstractScrollArea,
QDialog, QDialog,
QHeaderView,
QPlainTextEdit, QPlainTextEdit,
QTableWidget, QTableWidget,
QTableWidgetItem, QTableWidgetItem,
QVBoxLayout, QVBoxLayout,
) )
from pprint import pformat from pprint import pformat
from logging import debug from logging import debug, error
class DebugWindow(QDialog): class DebugWindow(QDialog):
@ -27,29 +29,33 @@ class DebugWindow(QDialog):
if isinstance(self.data, str): if isinstance(self.data, str):
self.input_field = QPlainTextEdit(pformat(self.data)) self.input_field = QPlainTextEdit(pformat(self.data))
layout.addWidget(self.input_field) layout.addWidget(self.input_field)
elif isinstance(self.data, list): else:
table = QTableWidget() table: QTableWidget = QTableWidget()
table.setRowCount(len(data)) table.setSizeAdjustPolicy(QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents)
table.setColumnCount(len(data[0])) table.horizontalHeader().setStretchLastSection(True)
for ri, row_data in enumerate(data): table.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
for ci, item in enumerate(row_data): if isinstance(self.data, list):
table.setItem(ri, ci, QTableWidgetItem(str(item))) # big ol column
layout.addWidget(table) table.setRowCount(len(data))
elif isinstance(self.data, dict): table.setColumnCount(1)
# FIXME: i wanna grow....woah for i, item in enumerate(self.data):
try: table.setItem(i, 0, QTableWidgetItem(str(item)))
table = QTableWidget()
rows = max(len(value) for value in data.keys())
table.setRowCount(rows)
table.setColumnCount(len(data))
table.setHorizontalHeaderLabels(data.keys())
for ci, (key, values) in enumerate(data.items()):
for ri, value in enumerate(values):
table.setItem(ri, ci, QTableWidgetItem(str(value)))
layout.addWidget(table) layout.addWidget(table)
except Exception as e: elif isinstance(self.data, dict):
data = str(self.data) try:
self.input_field = QPlainTextEdit(pformat(data + "\n\n" + str(e))) # | TIT2 | title goes here |
layout.addWidget(self.input_field) # | TDRC | 2025-05-05 |
table.setRowCount(len(data.keys()))
table.setColumnCount(2)
table.setHorizontalHeaderLabels(['Tag', 'Value'])
for i, (k, v) in enumerate(data.items()):
table.setItem(i, 0, QTableWidgetItem(str(k)))
table.setItem(i, 1, QTableWidgetItem(str(v)))
layout.addWidget(table)
except Exception as e:
data = str(self.data)
self.input_field = QPlainTextEdit(pformat(data + "\n\n" + str(e)))
layout.addWidget(self.input_field)
error(f'Tried to load self.data as dict but could not. {e}')
self.setLayout(layout) self.setLayout(layout)

View File

@ -221,7 +221,7 @@ class MusicTable(QTableView):
menu.addAction(open_containing_folder_action) menu.addAction(open_containing_folder_action)
# view id3 tags (debug) # view id3 tags (debug)
view_id3_tags_debug = QAction("View ID3 tags (debug)", self) view_id3_tags_debug = QAction("View ID3 tags (debug)", self)
view_id3_tags_debug.triggered.connect(self.show_id3_tags_debug_menu) view_id3_tags_debug.triggered.connect(self.view_id3_tags_debug_menu)
menu.addAction(view_id3_tags_debug) menu.addAction(view_id3_tags_debug)
# delete song # delete song
delete_action = QAction("Delete", self) delete_action = QAction("Delete", self)
@ -292,7 +292,7 @@ class MusicTable(QTableView):
if key == Qt.Key.Key_Space: if key == Qt.Key.Key_Space:
self.toggle_play_pause() self.toggle_play_pause()
elif key == Qt.Key.Key_Right: if key == Qt.Key.Key_Right:
index = self.currentIndex() index = self.currentIndex()
new_index = self.model2.index(index.row(), index.column() + 1) new_index = self.model2.index(index.row(), index.column() + 1)
if new_index.isValid(): if new_index.isValid():
@ -565,7 +565,7 @@ class MusicTable(QTableView):
path = "/".join(filepath) path = "/".join(filepath)
Popen(["xdg-open", path]) Popen(["xdg-open", path])
def show_id3_tags_debug_menu(self): def view_id3_tags_debug_menu(self):
"""Shows ID3 tags for a specific .mp3 file""" """Shows ID3 tags for a specific .mp3 file"""
if self.get_selected_song_filepath() is not None: if self.get_selected_song_filepath() is not None:
window = DebugWindow(dict(self.get_selected_song_metadata())) window = DebugWindow(dict(self.get_selected_song_metadata()))

View File

@ -248,8 +248,8 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
## CONNECTIONS ## CONNECTIONS
# tableView # tableView
self.tableView.doubleClicked.connect(self.play_audio_file) # self.tableView.doubleClicked.connect(self.play_audio_file)
self.tableView.enterKey.connect(self.play_audio_file) # self.tableView.enterKey.connect(self.play_audio_file)
self.tableView.playSignal.connect(self.play_audio_file) self.tableView.playSignal.connect(self.play_audio_file)
self.tableView.playPauseSignal.connect( self.tableView.playPauseSignal.connect(
self.on_play_clicked self.on_play_clicked
@ -419,7 +419,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
Start playback of `tableView.current_song_filepath` & moves playback slider Start playback of `tableView.current_song_filepath` & moves playback slider
""" """
if not filepath: if not filepath:
filepath = self.tableView.set_current_song_filepath() filepath = self.tableView.get_current_song_filepath()
# get metadata # get metadata
metadata = get_id3_tags(filepath)[0] metadata = get_id3_tags(filepath)[0]
# read the file # read the file

181
ui.py
View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ui.ui' # Form implementation generated from reading ui file 'ui.ui'
# #
# Created by: PyQt5 UI code generator 5.15.11 # Created by: PyQt5 UI code generator 5.15.10
# #
# WARNING: Any manual changes made to this file will be lost when pyuic5 is # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
@ -45,15 +45,50 @@ class Ui_MainWindow(object):
self.vLayoutSongDetails.setObjectName("vLayoutSongDetails") self.vLayoutSongDetails.setObjectName("vLayoutSongDetails")
self.hLayoutHead.addLayout(self.vLayoutSongDetails) self.hLayoutHead.addLayout(self.vLayoutSongDetails)
self.vLayoutPlaybackVisuals = QtWidgets.QVBoxLayout() self.vLayoutPlaybackVisuals = QtWidgets.QVBoxLayout()
self.vLayoutPlaybackVisuals.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.vLayoutPlaybackVisuals.setObjectName("vLayoutPlaybackVisuals") self.vLayoutPlaybackVisuals.setObjectName("vLayoutPlaybackVisuals")
self.horizontalLayout = QtWidgets.QHBoxLayout() self.PlotWidget = PlotWidget(self.centralwidget)
self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize) self.PlotWidget.setObjectName("PlotWidget")
self.horizontalLayout.setObjectName("horizontalLayout") self.vLayoutPlaybackVisuals.addWidget(self.PlotWidget)
self.hLayoutHead.addLayout(self.vLayoutPlaybackVisuals)
self.hLayoutHead.setStretch(0, 1)
self.hLayoutHead.setStretch(2, 6)
self.verticalLayout.addLayout(self.hLayoutHead)
self.hLayoutMusicTable = QtWidgets.QHBoxLayout()
self.hLayoutMusicTable.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutMusicTable.setContentsMargins(0, -1, 0, -1)
self.hLayoutMusicTable.setObjectName("hLayoutMusicTable")
self.playlistTreeView = PlaylistsPane(self.centralwidget)
self.playlistTreeView.setObjectName("playlistTreeView")
self.hLayoutMusicTable.addWidget(self.playlistTreeView)
self.tableView = MusicTable(self.centralwidget)
self.tableView.setObjectName("tableView")
self.hLayoutMusicTable.addWidget(self.tableView)
self.hLayoutMusicTable.setStretch(0, 2)
self.hLayoutMusicTable.setStretch(1, 10)
self.verticalLayout.addLayout(self.hLayoutMusicTable)
self.hLayoutCurrentSongDetails = QtWidgets.QHBoxLayout()
self.hLayoutCurrentSongDetails.setSpacing(6)
self.hLayoutCurrentSongDetails.setObjectName("hLayoutCurrentSongDetails")
self.hLayoutSongDetails = QtWidgets.QHBoxLayout()
self.hLayoutSongDetails.setObjectName("hLayoutSongDetails")
self.artistLabel = QtWidgets.QLabel(self.centralwidget)
self.artistLabel.setObjectName("artistLabel")
self.hLayoutSongDetails.addWidget(self.artistLabel)
self.titleLabel = QtWidgets.QLabel(self.centralwidget)
self.titleLabel.setObjectName("titleLabel")
self.hLayoutSongDetails.addWidget(self.titleLabel)
self.albumLabel = QtWidgets.QLabel(self.centralwidget)
self.albumLabel.setObjectName("albumLabel")
self.hLayoutSongDetails.addWidget(self.albumLabel)
self.hLayoutCurrentSongDetails.addLayout(self.hLayoutSongDetails)
self.verticalLayout.addLayout(self.hLayoutCurrentSongDetails)
self.hLayoutPlayback = QtWidgets.QHBoxLayout()
self.hLayoutPlayback.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutPlayback.setObjectName("hLayoutPlayback")
self.playbackSlider = QtWidgets.QSlider(self.centralwidget) self.playbackSlider = QtWidgets.QSlider(self.centralwidget)
self.playbackSlider.setOrientation(QtCore.Qt.Horizontal) self.playbackSlider.setOrientation(QtCore.Qt.Horizontal)
self.playbackSlider.setObjectName("playbackSlider") self.playbackSlider.setObjectName("playbackSlider")
self.horizontalLayout.addWidget(self.playbackSlider) self.hLayoutPlayback.addWidget(self.playbackSlider)
self.timeHorizontalLayout2 = QtWidgets.QHBoxLayout() self.timeHorizontalLayout2 = QtWidgets.QHBoxLayout()
self.timeHorizontalLayout2.setObjectName("timeHorizontalLayout2") self.timeHorizontalLayout2.setObjectName("timeHorizontalLayout2")
self.startTimeLabel = QtWidgets.QLabel(self.centralwidget) self.startTimeLabel = QtWidgets.QLabel(self.centralwidget)
@ -79,56 +114,26 @@ class Ui_MainWindow(object):
self.endTimeLabel.setFont(font) self.endTimeLabel.setFont(font)
self.endTimeLabel.setObjectName("endTimeLabel") self.endTimeLabel.setObjectName("endTimeLabel")
self.timeHorizontalLayout2.addWidget(self.endTimeLabel) self.timeHorizontalLayout2.addWidget(self.endTimeLabel)
self.horizontalLayout.addLayout(self.timeHorizontalLayout2) self.hLayoutPlayback.addLayout(self.timeHorizontalLayout2)
self.speedSlider = QtWidgets.QSlider(self.centralwidget) self.hLayoutPlayback.setStretch(0, 4)
self.speedSlider.setMinimum(0) self.verticalLayout.addLayout(self.hLayoutPlayback)
self.speedSlider.setMaximum(100)
self.speedSlider.setSingleStep(1)
self.speedSlider.setProperty("value", 50)
self.speedSlider.setOrientation(QtCore.Qt.Horizontal)
self.speedSlider.setInvertedAppearance(False)
self.speedSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.speedSlider.setObjectName("speedSlider")
self.horizontalLayout.addWidget(self.speedSlider)
self.speedLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
self.speedLabel.setFont(font)
self.speedLabel.setObjectName("speedLabel")
self.horizontalLayout.addWidget(self.speedLabel)
self.horizontalLayout.setStretch(0, 4)
self.horizontalLayout.setStretch(2, 4)
self.horizontalLayout.setStretch(3, 1)
self.vLayoutPlaybackVisuals.addLayout(self.horizontalLayout)
self.PlotWidget = PlotWidget(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.PlotWidget.sizePolicy().hasHeightForWidth())
self.PlotWidget.setSizePolicy(sizePolicy)
self.PlotWidget.setMaximumSize(QtCore.QSize(16777215, 150))
self.PlotWidget.setObjectName("PlotWidget")
self.vLayoutPlaybackVisuals.addWidget(self.PlotWidget)
self.hLayoutHead.addLayout(self.vLayoutPlaybackVisuals)
self.hLayoutHead.setStretch(0, 1)
self.hLayoutHead.setStretch(2, 6)
self.verticalLayout.addLayout(self.hLayoutHead)
self.hLayoutMusicTable = QtWidgets.QHBoxLayout()
self.hLayoutMusicTable.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutMusicTable.setContentsMargins(0, -1, 0, -1)
self.hLayoutMusicTable.setObjectName("hLayoutMusicTable")
self.playlistTreeView = PlaylistsPane(self.centralwidget)
self.playlistTreeView.setObjectName("playlistTreeView")
self.hLayoutMusicTable.addWidget(self.playlistTreeView)
self.tableView = MusicTable(self.centralwidget)
self.tableView.setObjectName("tableView")
self.hLayoutMusicTable.addWidget(self.tableView)
self.hLayoutMusicTable.setStretch(0, 2)
self.hLayoutMusicTable.setStretch(1, 10)
self.verticalLayout.addLayout(self.hLayoutMusicTable)
self.hLayoutControls = QtWidgets.QHBoxLayout() self.hLayoutControls = QtWidgets.QHBoxLayout()
self.hLayoutControls.setSpacing(6) self.hLayoutControls.setSpacing(6)
self.hLayoutControls.setObjectName("hLayoutControls") self.hLayoutControls.setObjectName("hLayoutControls")
self.hLayoutVolume = QtWidgets.QHBoxLayout()
self.hLayoutVolume.setObjectName("hLayoutVolume")
self.volumeLabel = QtWidgets.QLabel(self.centralwidget)
self.volumeLabel.setObjectName("volumeLabel")
self.hLayoutVolume.addWidget(self.volumeLabel)
self.volumeSlider = QtWidgets.QSlider(self.centralwidget)
self.volumeSlider.setMinimum(-1)
self.volumeSlider.setMaximum(101)
self.volumeSlider.setProperty("value", 50)
self.volumeSlider.setOrientation(QtCore.Qt.Horizontal)
self.volumeSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.volumeSlider.setObjectName("volumeSlider")
self.hLayoutVolume.addWidget(self.volumeSlider)
self.hLayoutControls.addLayout(self.hLayoutVolume)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls.addItem(spacerItem) self.hLayoutControls.addItem(spacerItem)
self.previousButton = QtWidgets.QPushButton(self.centralwidget) self.previousButton = QtWidgets.QPushButton(self.centralwidget)
@ -151,57 +156,36 @@ class Ui_MainWindow(object):
self.hLayoutControls.addWidget(self.nextButton) self.hLayoutControls.addWidget(self.nextButton)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls.addItem(spacerItem1) self.hLayoutControls.addItem(spacerItem1)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.speedSlider = QtWidgets.QSlider(self.centralwidget)
self.speedSlider.setMinimum(0)
self.speedSlider.setMaximum(100)
self.speedSlider.setSingleStep(1)
self.speedSlider.setProperty("value", 50)
self.speedSlider.setOrientation(QtCore.Qt.Horizontal)
self.speedSlider.setInvertedAppearance(False)
self.speedSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.speedSlider.setObjectName("speedSlider")
self.horizontalLayout_2.addWidget(self.speedSlider)
self.speedLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
self.speedLabel.setFont(font)
self.speedLabel.setObjectName("speedLabel")
self.horizontalLayout_2.addWidget(self.speedLabel)
self.hLayoutControls.addLayout(self.horizontalLayout_2)
self.hLayoutControls.setStretch(0, 1) self.hLayoutControls.setStretch(0, 1)
self.hLayoutControls.setStretch(1, 2) self.hLayoutControls.setStretch(2, 1)
self.hLayoutControls.setStretch(2, 2) self.hLayoutControls.setStretch(3, 1)
self.hLayoutControls.setStretch(3, 2)
self.hLayoutControls.setStretch(4, 1) self.hLayoutControls.setStretch(4, 1)
self.hLayoutControls.setStretch(6, 1)
self.verticalLayout.addLayout(self.hLayoutControls) self.verticalLayout.addLayout(self.hLayoutControls)
self.hLayoutControls2 = QtWidgets.QHBoxLayout()
self.hLayoutControls2.setSpacing(6)
self.hLayoutControls2.setObjectName("hLayoutControls2")
self.hLayoutVolume = QtWidgets.QHBoxLayout()
self.hLayoutVolume.setObjectName("hLayoutVolume")
self.volumeLabel = QtWidgets.QLabel(self.centralwidget)
self.volumeLabel.setObjectName("volumeLabel")
self.hLayoutVolume.addWidget(self.volumeLabel)
self.volumeSlider = QtWidgets.QSlider(self.centralwidget)
self.volumeSlider.setMinimum(-1)
self.volumeSlider.setMaximum(101)
self.volumeSlider.setProperty("value", 50)
self.volumeSlider.setOrientation(QtCore.Qt.Horizontal)
self.volumeSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.volumeSlider.setObjectName("volumeSlider")
self.hLayoutVolume.addWidget(self.volumeSlider)
self.hLayoutControls2.addLayout(self.hLayoutVolume)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls2.addItem(spacerItem2)
self.hLayoutSongDetails = QtWidgets.QHBoxLayout()
self.hLayoutSongDetails.setObjectName("hLayoutSongDetails")
self.artistLabel = QtWidgets.QLabel(self.centralwidget)
self.artistLabel.setObjectName("artistLabel")
self.hLayoutSongDetails.addWidget(self.artistLabel)
self.titleLabel = QtWidgets.QLabel(self.centralwidget)
self.titleLabel.setObjectName("titleLabel")
self.hLayoutSongDetails.addWidget(self.titleLabel)
self.albumLabel = QtWidgets.QLabel(self.centralwidget)
self.albumLabel.setObjectName("albumLabel")
self.hLayoutSongDetails.addWidget(self.albumLabel)
self.hLayoutControls2.addLayout(self.hLayoutSongDetails)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls2.addItem(spacerItem3)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setObjectName("pushButton")
self.hLayoutControls2.addWidget(self.pushButton)
self.hLayoutControls2.setStretch(0, 1)
self.hLayoutControls2.setStretch(2, 5)
self.hLayoutControls2.setStretch(4, 1)
self.verticalLayout.addLayout(self.hLayoutControls2)
self.verticalLayout_3.addLayout(self.verticalLayout) self.verticalLayout_3.addLayout(self.verticalLayout)
self.verticalLayout_3.setStretch(0, 20) self.verticalLayout_3.setStretch(0, 20)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 21)) self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 24))
self.menubar.setObjectName("menubar") self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile") self.menuFile.setObjectName("menuFile")
@ -253,9 +237,8 @@ class Ui_MainWindow(object):
self.startTimeLabel.setText(_translate("MainWindow", "00:00")) self.startTimeLabel.setText(_translate("MainWindow", "00:00"))
self.slashLabel.setText(_translate("MainWindow", "/")) self.slashLabel.setText(_translate("MainWindow", "/"))
self.endTimeLabel.setText(_translate("MainWindow", "00:00")) self.endTimeLabel.setText(_translate("MainWindow", "00:00"))
self.speedLabel.setText(_translate("MainWindow", "1.00"))
self.volumeLabel.setText(_translate("MainWindow", "50")) self.volumeLabel.setText(_translate("MainWindow", "50"))
self.pushButton.setText(_translate("MainWindow", "nothing")) self.speedLabel.setText(_translate("MainWindow", "1.00"))
self.menuFile.setTitle(_translate("MainWindow", "File")) self.menuFile.setTitle(_translate("MainWindow", "File"))
self.menuEdit.setTitle(_translate("MainWindow", "Edit")) self.menuEdit.setTitle(_translate("MainWindow", "Edit"))
self.menuView.setTitle(_translate("MainWindow", "View")) self.menuView.setTitle(_translate("MainWindow", "View"))

323
ui.ui
View File

@ -19,7 +19,7 @@
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout_3" stretch="20"> <layout class="QVBoxLayout" name="verticalLayout_3" stretch="20">
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
@ -65,120 +65,8 @@
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="vLayoutPlaybackVisuals"> <layout class="QVBoxLayout" name="vLayoutPlaybackVisuals">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="4,0,4,1"> <widget class="PlotWidget" name="PlotWidget" native="true"/>
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item>
<widget class="QSlider" name="playbackSlider">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="timeHorizontalLayout2">
<item>
<widget class="QLabel" name="startTimeLabel">
<property name="font">
<font>
<family>Monospace</family>
<italic>false</italic>
</font>
</property>
<property name="text">
<string>00:00</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="slashLabel">
<property name="font">
<font>
<family>Monospace</family>
<italic>false</italic>
</font>
</property>
<property name="text">
<string>/</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="endTimeLabel">
<property name="font">
<font>
<family>Monospace</family>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>00:00</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSlider" name="speedSlider">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksAbove</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="speedLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>1.00</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="PlotWidget" name="PlotWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>150</height>
</size>
</property>
</widget>
</item> </item>
</layout> </layout>
</item> </item>
@ -204,67 +92,86 @@
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="hLayoutControls" stretch="1,2,2,2,1"> <layout class="QHBoxLayout" name="hLayoutCurrentSongDetails" stretch="0">
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item> <item>
<spacer name="horizontalSpacer_2"> <layout class="QHBoxLayout" name="hLayoutSongDetails" stretch="0,0,0">
<property name="orientation"> <item>
<enum>Qt::Horizontal</enum> <widget class="QLabel" name="artistLabel"/>
</property> </item>
<property name="sizeHint" stdset="0"> <item>
<size> <widget class="QLabel" name="titleLabel"/>
<width>40</width> </item>
<height>20</height> <item>
</size> <widget class="QLabel" name="albumLabel"/>
</property> </item>
</spacer> </layout>
</item>
<item>
<widget class="QPushButton" name="previousButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="playButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="nextButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item> </item>
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="hLayoutControls2" stretch="1,0,5,0,1"> <layout class="QHBoxLayout" name="hLayoutPlayback" stretch="4,0">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item>
<widget class="QSlider" name="playbackSlider">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="timeHorizontalLayout2">
<item>
<widget class="QLabel" name="startTimeLabel">
<property name="font">
<font>
<family>Monospace</family>
<italic>false</italic>
</font>
</property>
<property name="text">
<string>00:00</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="slashLabel">
<property name="font">
<font>
<family>Monospace</family>
<italic>false</italic>
</font>
</property>
<property name="text">
<string>/</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="endTimeLabel">
<property name="font">
<font>
<family>Monospace</family>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>00:00</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutControls" stretch="1,0,1,1,1,0,1">
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
@ -312,17 +219,31 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="hLayoutSongDetails"> <widget class="QPushButton" name="previousButton">
<item> <property name="font">
<widget class="QLabel" name="artistLabel"/> <font>
</item> <pointsize>28</pointsize>
<item> </font>
<widget class="QLabel" name="titleLabel"/> </property>
</item> </widget>
<item> </item>
<widget class="QLabel" name="albumLabel"/> <item>
</item> <widget class="QPushButton" name="playButton">
</layout> <property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="nextButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item> </item>
<item> <item>
<spacer name="horizontalSpacer"> <spacer name="horizontalSpacer">
@ -338,11 +259,45 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="text"> <item>
<string>nothing</string> <widget class="QSlider" name="speedSlider">
</property> <property name="minimum">
</widget> <number>0</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksAbove</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="speedLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>1.00</string>
</property>
</widget>
</item>
</layout>
</item> </item>
</layout> </layout>
</item> </item>
@ -356,7 +311,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1152</width> <width>1152</width>
<height>21</height> <height>24</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuFile"> <widget class="QMenu" name="menuFile">