From 29860268ba28a55ec0f64284fc15b5521909eefb Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sun, 19 Jun 2022 13:33:04 +0100 Subject: [PATCH] Revise UI; add -3db button Fixes #55 --- app/musicmuster.py | 23 ++- app/ui/main_window.ui | 315 ++++++++++++++++++++++++++------------- app/ui/main_window_ui.py | 212 +++++++++++++++----------- 3 files changed, 346 insertions(+), 204 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index a43c296..abd4f4e 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -8,7 +8,7 @@ import urllib.parse import webbrowser -from datetime import datetime +from datetime import datetime, timedelta from log import DEBUG, EXCEPTION from typing import Callable, Dict, List, Optional, Tuple @@ -75,7 +75,6 @@ class Window(QMainWindow, Ui_MainWindow): self.next_track_playlist_tab: Optional[PlaylistTab] = None self.previous_track: Optional[Tracks] = None self.previous_track_position: Optional[int] = None - self.spnVolume.setValue(Config.VOLUME_VLC_DEFAULT) self.set_main_window_size() self.lblSumPlaytime: QLabel = QLabel("") @@ -208,7 +207,6 @@ class Window(QMainWindow, Ui_MainWindow): # lambda: self.tabPlaylist.currentWidget().set_selected_as_next()) # self.btnSongInfo.clicked.connect(self.song_info_search) self.btnStop.clicked.connect(self.stop) - self.spnVolume.valueChanged.connect(self.change_volume) self.tabPlaylist.tabCloseRequested.connect(self.close_tab) self.txtSearch.returnPressed.connect(self.search_playlist_return) self.txtSearch.textChanged.connect(self.search_playlist_update) @@ -228,13 +226,6 @@ class Window(QMainWindow, Ui_MainWindow): playlist = Playlists(session, dlg.textValue()) self.create_playlist_tab(session, playlist) - def change_volume(self, volume: int) -> None: - """Change player maximum volume""" - - DEBUG(f"change_volume({volume})") - - self.music.set_volume(volume) - def close_playlist_tab(self) -> None: """Close active playlist tab""" @@ -370,9 +361,10 @@ class Window(QMainWindow, Ui_MainWindow): self.label_end_timer.setText("00:00") self.label_fade_length.setText("0:00") self.label_fade_timer.setText("00:00") - self.label_silence_length.setText("0:00") self.label_silent_timer.setText("00:00") self.label_track_length.setText("0:00") + self.label_start_time.setText("00:00:00") + self.label_end_time.setText("00:00:00") # Update headers self.update_headers() @@ -640,6 +632,7 @@ class Window(QMainWindow, Ui_MainWindow): self.btnDrop3db.setChecked(False) # Play (new) current track + start_at = datetime.now() self.music.play(self.current_track.path) # Tell database to record it as played @@ -666,8 +659,12 @@ class Window(QMainWindow, Ui_MainWindow): length = self.current_track.duration self.label_fade_length.setText( helpers.ms_to_mmss(silence_at - fade_at)) - self.label_silence_length.setText( - helpers.ms_to_mmss(length - silence_at)) + self.label_start_time.setText( + start_at.strftime(Config.TRACK_TIME_FORMAT)) + end_at = start_at + timedelta( + milliseconds=self.current_track.duration) + self.label_end_time.setText( + end_at.strftime(Config.TRACK_TIME_FORMAT)) def search_database(self) -> None: """Show dialog box to select and cue track from database""" diff --git a/app/ui/main_window.ui b/app/ui/main_window.ui index 19e33d2..590dc88 100644 --- a/app/ui/main_window.ui +++ b/app/ui/main_window.ui @@ -10,6 +10,12 @@ 857 + + + 1280 + 0 + + Music Muster @@ -21,7 +27,7 @@ - + @@ -254,82 +260,25 @@ border: 1px solid rgb(85, 87, 83); - + + + + 0 + 16 + + + + false + + + background-color: rgb(154, 153, 150) + QFrame::StyledPanel QFrame::Raised - - - - - -3dB to talk - - - true - - - - - - - Qt::Horizontal - - - - 69 - 20 - - - - - - - - Stop - - - - :/icons/stopsign:/icons/stopsign - - - - 30 - 30 - - - - - - - - Fade - - - - :/icons/fade:/icons/fade - - - - 30 - 30 - - - - - - - - 100 - - - 100 - - - - @@ -349,16 +298,22 @@ border: 1px solid rgb(85, 87, 83); - + + + + 321 + 0 + + QFrame::StyledPanel QFrame::Raised - + @@ -385,6 +340,32 @@ border: 1px solid rgb(85, 87, 83); + + + + Start: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + FreeSans + 16 + + + + 00:00:00 + + + false + + + @@ -411,18 +392,18 @@ border: 1px solid rgb(85, 87, 83); - - + + - Silence length: + End: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - + + FreeSans @@ -430,18 +411,58 @@ border: 1px solid rgb(85, 87, 83); - 0:00 + 00:00:00 false + + + + Fade + + + + :/icons/fade:/icons/fade + + + + 30 + 30 + + + + + + + + Stop + + + + :/icons/stopsign:/icons/stopsign + + + + 30 + 30 + + + + + + + 0 + 112 + + @@ -451,8 +472,8 @@ border: 1px solid rgb(85, 87, 83); QFrame::Raised - - + + Elapsed time @@ -462,7 +483,7 @@ border: 1px solid rgb(85, 87, 83); - + @@ -485,6 +506,12 @@ border: 1px solid rgb(85, 87, 83); + + + 0 + 112 + + @@ -494,8 +521,8 @@ border: 1px solid rgb(85, 87, 83); QFrame::Raised - - + + Fade @@ -505,7 +532,7 @@ border: 1px solid rgb(85, 87, 83); - + @@ -528,6 +555,12 @@ border: 1px solid rgb(85, 87, 83); + + + 0 + 112 + + @@ -537,8 +570,8 @@ border: 1px solid rgb(85, 87, 83); QFrame::Raised - - + + Silent @@ -548,7 +581,7 @@ border: 1px solid rgb(85, 87, 83); - + @@ -571,6 +604,12 @@ border: 1px solid rgb(85, 87, 83); + + + 0 + 112 + + @@ -580,8 +619,8 @@ border: 1px solid rgb(85, 87, 83); QFrame::Raised - - + + End @@ -591,7 +630,7 @@ border: 1px solid rgb(85, 87, 83); - + @@ -612,6 +651,74 @@ border: 1px solid rgb(85, 87, 83); + + + + + 152 + 112 + + + + + 184 + 16777215 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 132 + 36 + + + + + 164 + 16777215 + + + + -3dB to talk + + + true + + + + + + + + 132 + 36 + + + + + 164 + 16777215 + + + + Hide played + + + true + + + + + + @@ -629,23 +736,26 @@ border: 1px solid rgb(85, 87, 83); Fi&le - - - - - - - - Pla&ylist - + + + + + + + + + &Tracks + + + @@ -654,8 +764,6 @@ border: 1px solid rgb(85, 87, 83); - - @@ -754,6 +862,9 @@ border: 1px solid rgb(85, 87, 83); S&top + + Ctrl+Alt+S + diff --git a/app/ui/main_window_ui.py b/app/ui/main_window_ui.py index 412de1f..6f12b27 100644 --- a/app/ui/main_window_ui.py +++ b/app/ui/main_window_ui.py @@ -15,14 +15,15 @@ class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1280, 857) + MainWindow.setMinimumSize(QtCore.QSize(1280, 0)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/musicmuster"), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) MainWindow.setStyleSheet("") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") - self.gridLayout_6 = QtWidgets.QGridLayout(self.centralwidget) - self.gridLayout_6.setObjectName("gridLayout_6") + self.gridLayout_4 = QtWidgets.QGridLayout(self.centralwidget) + self.gridLayout_4.setObjectName("gridLayout_4") self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.verticalLayout_3 = QtWidgets.QVBoxLayout() @@ -132,57 +133,34 @@ class Ui_MainWindow(object): self.lblTOD.setObjectName("lblTOD") self.gridLayout_2.addWidget(self.lblTOD, 0, 0, 1, 1) self.horizontalLayout_3.addWidget(self.frame_2) - self.gridLayout_6.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) - self.frame_5 = QtWidgets.QFrame(self.centralwidget) - self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel) - self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised) - self.frame_5.setObjectName("frame_5") - self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame_5) - self.horizontalLayout.setObjectName("horizontalLayout") - self.btnDrop3db = QtWidgets.QPushButton(self.frame_5) - self.btnDrop3db.setCheckable(True) - self.btnDrop3db.setObjectName("btnDrop3db") - self.horizontalLayout.addWidget(self.btnDrop3db) - spacerItem = QtWidgets.QSpacerItem(69, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout.addItem(spacerItem) - self.btnStop = QtWidgets.QPushButton(self.frame_5) - icon1 = QtGui.QIcon() - icon1.addPixmap(QtGui.QPixmap(":/icons/stopsign"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.btnStop.setIcon(icon1) - self.btnStop.setIconSize(QtCore.QSize(30, 30)) - self.btnStop.setObjectName("btnStop") - self.horizontalLayout.addWidget(self.btnStop) - self.btnFade = QtWidgets.QPushButton(self.frame_5) - icon2 = QtGui.QIcon() - icon2.addPixmap(QtGui.QPixmap(":/icons/fade"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.btnFade.setIcon(icon2) - self.btnFade.setIconSize(QtCore.QSize(30, 30)) - self.btnFade.setObjectName("btnFade") - self.horizontalLayout.addWidget(self.btnFade) - self.spnVolume = QtWidgets.QSpinBox(self.frame_5) - self.spnVolume.setMaximum(100) - self.spnVolume.setProperty("value", 100) - self.spnVolume.setObjectName("spnVolume") - self.horizontalLayout.addWidget(self.spnVolume) - self.gridLayout_6.addWidget(self.frame_5, 1, 0, 1, 1) + self.gridLayout_4.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) + self.frame_4 = QtWidgets.QFrame(self.centralwidget) + self.frame_4.setMinimumSize(QtCore.QSize(0, 16)) + self.frame_4.setAutoFillBackground(False) + self.frame_4.setStyleSheet("background-color: rgb(154, 153, 150)") + self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised) + self.frame_4.setObjectName("frame_4") + self.gridLayout_4.addWidget(self.frame_4, 1, 0, 1, 1) self.tabPlaylist = QtWidgets.QTabWidget(self.centralwidget) self.tabPlaylist.setDocumentMode(False) self.tabPlaylist.setTabsClosable(True) self.tabPlaylist.setMovable(True) self.tabPlaylist.setObjectName("tabPlaylist") - self.gridLayout_6.addWidget(self.tabPlaylist, 2, 0, 1, 1) - self.horizontalLayout_2 = QtWidgets.QHBoxLayout() - self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.gridLayout_4.addWidget(self.tabPlaylist, 2, 0, 1, 1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") self.frame = QtWidgets.QFrame(self.centralwidget) + self.frame.setMinimumSize(QtCore.QSize(321, 0)) self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame.setFrameShadow(QtWidgets.QFrame.Raised) self.frame.setObjectName("frame") - self.formLayout = QtWidgets.QFormLayout(self.frame) - self.formLayout.setObjectName("formLayout") + self.gridLayout = QtWidgets.QGridLayout(self.frame) + self.gridLayout.setObjectName("gridLayout") self.label_x = QtWidgets.QLabel(self.frame) self.label_x.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.label_x.setObjectName("label_x") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_x) + self.gridLayout.addWidget(self.label_x, 0, 0, 1, 1) self.label_track_length = QtWidgets.QLabel(self.frame) font = QtGui.QFont() font.setFamily("FreeSans") @@ -190,11 +168,23 @@ class Ui_MainWindow(object): self.label_track_length.setFont(font) self.label_track_length.setScaledContents(False) self.label_track_length.setObjectName("label_track_length") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.label_track_length) + self.gridLayout.addWidget(self.label_track_length, 0, 1, 1, 1) + self.label_x_2 = QtWidgets.QLabel(self.frame) + self.label_x_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_x_2.setObjectName("label_x_2") + self.gridLayout.addWidget(self.label_x_2, 0, 2, 1, 1) + self.label_start_time = QtWidgets.QLabel(self.frame) + font = QtGui.QFont() + font.setFamily("FreeSans") + font.setPointSize(16) + self.label_start_time.setFont(font) + self.label_start_time.setScaledContents(False) + self.label_start_time.setObjectName("label_start_time") + self.gridLayout.addWidget(self.label_start_time, 0, 3, 1, 1) self.label_7 = QtWidgets.QLabel(self.frame) self.label_7.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.label_7.setObjectName("label_7") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_7) + self.gridLayout.addWidget(self.label_7, 1, 0, 1, 1) self.label_fade_length = QtWidgets.QLabel(self.frame) font = QtGui.QFont() font.setFamily("FreeSans") @@ -202,31 +192,46 @@ class Ui_MainWindow(object): self.label_fade_length.setFont(font) self.label_fade_length.setScaledContents(False) self.label_fade_length.setObjectName("label_fade_length") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.label_fade_length) - self.label_3 = QtWidgets.QLabel(self.frame) - self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_3.setObjectName("label_3") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3) - self.label_silence_length = QtWidgets.QLabel(self.frame) + self.gridLayout.addWidget(self.label_fade_length, 1, 1, 1, 1) + self.label_8 = QtWidgets.QLabel(self.frame) + self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_8.setObjectName("label_8") + self.gridLayout.addWidget(self.label_8, 1, 2, 1, 1) + self.label_end_time = QtWidgets.QLabel(self.frame) font = QtGui.QFont() font.setFamily("FreeSans") font.setPointSize(16) - self.label_silence_length.setFont(font) - self.label_silence_length.setScaledContents(False) - self.label_silence_length.setObjectName("label_silence_length") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.label_silence_length) - self.horizontalLayout_2.addWidget(self.frame) + self.label_end_time.setFont(font) + self.label_end_time.setScaledContents(False) + self.label_end_time.setObjectName("label_end_time") + self.gridLayout.addWidget(self.label_end_time, 1, 3, 1, 1) + self.btnFade = QtWidgets.QPushButton(self.frame) + icon1 = QtGui.QIcon() + icon1.addPixmap(QtGui.QPixmap(":/icons/fade"), QtGui.QIcon.Normal, QtGui.QIcon.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.btnStop = QtWidgets.QPushButton(self.frame) + icon2 = QtGui.QIcon() + icon2.addPixmap(QtGui.QPixmap(":/icons/stopsign"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.btnStop.setIcon(icon2) + self.btnStop.setIconSize(QtCore.QSize(30, 30)) + self.btnStop.setObjectName("btnStop") + self.gridLayout.addWidget(self.btnStop, 2, 2, 1, 2) + self.horizontalLayout.addWidget(self.frame) self.frame_elapsed = QtWidgets.QFrame(self.centralwidget) + self.frame_elapsed.setMinimumSize(QtCore.QSize(0, 112)) self.frame_elapsed.setStyleSheet("") self.frame_elapsed.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame_elapsed.setFrameShadow(QtWidgets.QFrame.Raised) self.frame_elapsed.setObjectName("frame_elapsed") - self.gridLayout = QtWidgets.QGridLayout(self.frame_elapsed) - self.gridLayout.setObjectName("gridLayout") + self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.frame_elapsed) + self.verticalLayout_4.setObjectName("verticalLayout_4") self.label = QtWidgets.QLabel(self.frame_elapsed) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") - self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.verticalLayout_4.addWidget(self.label) self.label_elapsed_timer = QtWidgets.QLabel(self.frame_elapsed) font = QtGui.QFont() font.setFamily("FreeSans") @@ -236,19 +241,20 @@ class Ui_MainWindow(object): self.label_elapsed_timer.setFont(font) self.label_elapsed_timer.setAlignment(QtCore.Qt.AlignCenter) self.label_elapsed_timer.setObjectName("label_elapsed_timer") - self.gridLayout.addWidget(self.label_elapsed_timer, 1, 0, 1, 1) - self.horizontalLayout_2.addWidget(self.frame_elapsed) + self.verticalLayout_4.addWidget(self.label_elapsed_timer) + self.horizontalLayout.addWidget(self.frame_elapsed) self.frame_fade = QtWidgets.QFrame(self.centralwidget) + self.frame_fade.setMinimumSize(QtCore.QSize(0, 112)) self.frame_fade.setStyleSheet("") self.frame_fade.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame_fade.setFrameShadow(QtWidgets.QFrame.Raised) self.frame_fade.setObjectName("frame_fade") - self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_fade) - self.gridLayout_3.setObjectName("gridLayout_3") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame_fade) + self.verticalLayout_2.setObjectName("verticalLayout_2") self.label_4 = QtWidgets.QLabel(self.frame_fade) self.label_4.setAlignment(QtCore.Qt.AlignCenter) self.label_4.setObjectName("label_4") - self.gridLayout_3.addWidget(self.label_4, 0, 0, 1, 1) + self.verticalLayout_2.addWidget(self.label_4) self.label_fade_timer = QtWidgets.QLabel(self.frame_fade) font = QtGui.QFont() font.setFamily("FreeSans") @@ -258,19 +264,20 @@ class Ui_MainWindow(object): self.label_fade_timer.setFont(font) self.label_fade_timer.setAlignment(QtCore.Qt.AlignCenter) self.label_fade_timer.setObjectName("label_fade_timer") - self.gridLayout_3.addWidget(self.label_fade_timer, 1, 0, 1, 1) - self.horizontalLayout_2.addWidget(self.frame_fade) + self.verticalLayout_2.addWidget(self.label_fade_timer) + self.horizontalLayout.addWidget(self.frame_fade) self.frame_silent = QtWidgets.QFrame(self.centralwidget) + self.frame_silent.setMinimumSize(QtCore.QSize(0, 112)) self.frame_silent.setStyleSheet("") self.frame_silent.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame_silent.setFrameShadow(QtWidgets.QFrame.Raised) self.frame_silent.setObjectName("frame_silent") - self.gridLayout_4 = QtWidgets.QGridLayout(self.frame_silent) - self.gridLayout_4.setObjectName("gridLayout_4") + self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.frame_silent) + self.verticalLayout_5.setObjectName("verticalLayout_5") self.label_5 = QtWidgets.QLabel(self.frame_silent) self.label_5.setAlignment(QtCore.Qt.AlignCenter) self.label_5.setObjectName("label_5") - self.gridLayout_4.addWidget(self.label_5, 0, 0, 1, 1) + self.verticalLayout_5.addWidget(self.label_5) self.label_silent_timer = QtWidgets.QLabel(self.frame_silent) font = QtGui.QFont() font.setFamily("FreeSans") @@ -280,19 +287,20 @@ class Ui_MainWindow(object): self.label_silent_timer.setFont(font) self.label_silent_timer.setAlignment(QtCore.Qt.AlignCenter) self.label_silent_timer.setObjectName("label_silent_timer") - self.gridLayout_4.addWidget(self.label_silent_timer, 1, 0, 1, 1) - self.horizontalLayout_2.addWidget(self.frame_silent) + self.verticalLayout_5.addWidget(self.label_silent_timer) + self.horizontalLayout.addWidget(self.frame_silent) self.frame_end = QtWidgets.QFrame(self.centralwidget) + self.frame_end.setMinimumSize(QtCore.QSize(0, 112)) self.frame_end.setStyleSheet("") self.frame_end.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame_end.setFrameShadow(QtWidgets.QFrame.Raised) self.frame_end.setObjectName("frame_end") - self.gridLayout_5 = QtWidgets.QGridLayout(self.frame_end) - self.gridLayout_5.setObjectName("gridLayout_5") + self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.frame_end) + self.verticalLayout_6.setObjectName("verticalLayout_6") self.label_6 = QtWidgets.QLabel(self.frame_end) self.label_6.setAlignment(QtCore.Qt.AlignCenter) self.label_6.setObjectName("label_6") - self.gridLayout_5.addWidget(self.label_6, 0, 0, 1, 1) + self.verticalLayout_6.addWidget(self.label_6) self.label_end_timer = QtWidgets.QLabel(self.frame_end) font = QtGui.QFont() font.setFamily("FreeSans") @@ -302,9 +310,30 @@ class Ui_MainWindow(object): self.label_end_timer.setFont(font) self.label_end_timer.setAlignment(QtCore.Qt.AlignCenter) self.label_end_timer.setObjectName("label_end_timer") - self.gridLayout_5.addWidget(self.label_end_timer, 1, 0, 1, 1) - self.horizontalLayout_2.addWidget(self.frame_end) - self.gridLayout_6.addLayout(self.horizontalLayout_2, 3, 0, 1, 1) + self.verticalLayout_6.addWidget(self.label_end_timer) + self.horizontalLayout.addWidget(self.frame_end) + self.frame_3 = QtWidgets.QFrame(self.centralwidget) + self.frame_3.setMinimumSize(QtCore.QSize(152, 112)) + self.frame_3.setMaximumSize(QtCore.QSize(184, 16777215)) + self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised) + self.frame_3.setObjectName("frame_3") + self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_3) + self.gridLayout_3.setObjectName("gridLayout_3") + self.btnDrop3db = QtWidgets.QPushButton(self.frame_3) + self.btnDrop3db.setMinimumSize(QtCore.QSize(132, 36)) + self.btnDrop3db.setMaximumSize(QtCore.QSize(164, 16777215)) + self.btnDrop3db.setCheckable(True) + self.btnDrop3db.setObjectName("btnDrop3db") + self.gridLayout_3.addWidget(self.btnDrop3db, 0, 0, 1, 1) + self.btnHidePlayed = QtWidgets.QPushButton(self.frame_3) + self.btnHidePlayed.setMinimumSize(QtCore.QSize(132, 36)) + self.btnHidePlayed.setMaximumSize(QtCore.QSize(164, 16777215)) + self.btnHidePlayed.setCheckable(True) + self.btnHidePlayed.setObjectName("btnHidePlayed") + self.gridLayout_3.addWidget(self.btnHidePlayed, 1, 0, 1, 1) + self.horizontalLayout.addWidget(self.frame_3) + self.gridLayout_4.addLayout(self.horizontalLayout, 3, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1280, 24)) @@ -405,18 +434,21 @@ class Ui_MainWindow(object): self.actionDownload_CSV_of_played_tracks.setObjectName("actionDownload_CSV_of_played_tracks") self.actionSearch = QtWidgets.QAction(MainWindow) self.actionSearch.setObjectName("actionSearch") - self.menuFile.addAction(self.actionImport) + self.menuFile.addAction(self.actionNewPlaylist) + self.menuFile.addAction(self.actionOpenPlaylist) + self.menuFile.addAction(self.actionClosePlaylist) + self.menuFile.addAction(self.actionRenamePlaylist) + self.menuFile.addAction(self.actionDeletePlaylist) + self.menuFile.addSeparator() + self.menuFile.addAction(self.actionDownload_CSV_of_played_tracks) + self.menuFile.addAction(self.actionExport_playlist) self.menuFile.addSeparator() self.menuFile.addAction(self.actionE_xit) self.menuFile.addSeparator() - self.menuPlaylist.addAction(self.actionNewPlaylist) - self.menuPlaylist.addAction(self.actionOpenPlaylist) - self.menuPlaylist.addAction(self.actionClosePlaylist) - self.menuPlaylist.addAction(self.actionRenamePlaylist) - self.menuPlaylist.addAction(self.actionDeletePlaylist) self.menuPlaylist.addSeparator() self.menuPlaylist.addAction(self.actionSearch_database) self.menuPlaylist.addAction(self.actionAdd_note) + self.menuPlaylist.addAction(self.actionImport) self.menuPlaylist.addAction(self.action_Clear_selection) self.menuPlaylist.addSeparator() self.menuPlaylist.addAction(self.actionSetNext) @@ -425,8 +457,6 @@ class Ui_MainWindow(object): self.menuPlaylist.addAction(self.actionSelect_played_tracks) self.menuPlaylist.addAction(self.actionMoveSelected) self.menuPlaylist.addSeparator() - self.menuPlaylist.addAction(self.actionDownload_CSV_of_played_tracks) - self.menuPlaylist.addAction(self.actionExport_playlist) self.menuPlaylist.addSeparator() self.menuPlaylist.addAction(self.actionSelect_next_track) self.menuPlaylist.addAction(self.actionSelect_previous_track) @@ -455,15 +485,16 @@ class Ui_MainWindow(object): self.current_track_2.setText(_translate("MainWindow", "Current track:")) self.next_track_2.setText(_translate("MainWindow", "Next track:")) self.lblTOD.setText(_translate("MainWindow", "00:00:00")) - self.btnDrop3db.setText(_translate("MainWindow", "-3dB to talk")) - self.btnStop.setText(_translate("MainWindow", "Stop")) - self.btnFade.setText(_translate("MainWindow", "Fade")) 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_fade_length.setText(_translate("MainWindow", "0:00")) - self.label_3.setText(_translate("MainWindow", "Silence length:")) - self.label_silence_length.setText(_translate("MainWindow", "0:00")) + self.label_8.setText(_translate("MainWindow", "End:")) + self.label_end_time.setText(_translate("MainWindow", "00:00:00")) + self.btnFade.setText(_translate("MainWindow", "Fade")) + self.btnStop.setText(_translate("MainWindow", "Stop")) self.label.setText(_translate("MainWindow", "Elapsed time")) self.label_elapsed_timer.setText(_translate("MainWindow", "00:00")) self.label_4.setText(_translate("MainWindow", "Fade")) @@ -472,8 +503,10 @@ class Ui_MainWindow(object): self.label_silent_timer.setText(_translate("MainWindow", "00:00")) self.label_6.setText(_translate("MainWindow", "End")) self.label_end_timer.setText(_translate("MainWindow", "00:00")) + self.btnDrop3db.setText(_translate("MainWindow", "-3dB to talk")) + self.btnHidePlayed.setText(_translate("MainWindow", "Hide played")) self.menuFile.setTitle(_translate("MainWindow", "Fi&le")) - self.menuPlaylist.setTitle(_translate("MainWindow", "Pla&ylist")) + self.menuPlaylist.setTitle(_translate("MainWindow", "&Tracks")) self.menu_Music.setTitle(_translate("MainWindow", "&Music")) self.actionPlay_next.setText(_translate("MainWindow", "&Play next")) self.actionPlay_next.setShortcut(_translate("MainWindow", "Return")) @@ -486,6 +519,7 @@ class Ui_MainWindow(object): self.actionFade.setText(_translate("MainWindow", "F&ade")) self.actionFade.setShortcut(_translate("MainWindow", "Ctrl+S")) self.actionStop.setText(_translate("MainWindow", "S&top")) + self.actionStop.setShortcut(_translate("MainWindow", "Ctrl+Alt+S")) self.action_Clear_selection.setText(_translate("MainWindow", "Clear &selection")) self.action_Clear_selection.setShortcut(_translate("MainWindow", "Esc")) self.action_Resume_previous.setText(_translate("MainWindow", "&Resume previous"))