Add Info dialog to clusters, showing track list

The track list can be copied to MB release editor.
This commit is contained in:
Laurent Monin
2014-12-17 17:28:28 +01:00
parent 055a1ba828
commit 1e9ef6d7c4
4 changed files with 46 additions and 2 deletions

View File

@@ -126,6 +126,12 @@ class Cluster(QtCore.QObject, Item):
def can_browser_lookup(self):
return not self.special
def can_view_info(self):
if self.files:
return True
else:
return False
def is_album_like(self):
return True
@@ -284,6 +290,9 @@ class UnmatchedFiles(Cluster):
def can_autotag(self):
return len(self.files) > 0
def can_view_info(self):
return False
class ClusterList(list, Item):

View File

@@ -167,3 +167,32 @@ class AlbumInfoDialog(InfoDialog):
else:
tabWidget.setTabText(tab_index, _("&Info"))
self.tab_hide(tab)
class ClusterInfoDialog(InfoDialog):
def __init__(self, cluster, parent=None):
InfoDialog.__init__(self, cluster, parent)
self.setWindowTitle(_("Cluster Info"))
def _display_info_tab(self):
tab = self.ui.info_tab
cluster = self.obj
tabWidget = self.ui.tabWidget
tab_index = tabWidget.indexOf(tab)
tabWidget.setTabText(tab_index, _("&Info"))
info = []
info.append("<b>%s</b> %s" % (_('Album:'),
unicode(QtCore.Qt.escape(cluster.metadata["album"]))))
info.append("<b>%s</b> %s" % (_('Artist:'),
unicode(QtCore.Qt.escape(cluster.metadata["albumartist"]))))
lines = []
for file in cluster.iterfiles(False):
artist = file.metadata["artist"] or file.metadata["albumartist"] or cluster.metadata["albumartist"]
lines.append(file.metadata["tracknumber"]+ u" " +
file.metadata["title"] + " - " + artist + " (" +
file.metadata["~length"]+ ")")
info.append("<b>%s</b><br />%s" % (_('Tracklist:'),
'<br />'.join([unicode(QtCore.Qt.escape(s)) for s in
lines])))
self.ui.info.setText('<br/>'.join(info))

View File

@@ -256,6 +256,8 @@ class BaseTreeView(QtGui.QTreeWidget):
if isinstance(obj, NonAlbumTrack):
menu.addAction(self.window.refresh_action)
elif isinstance(obj, Cluster):
if can_view_info:
menu.addAction(self.window.view_info_action)
menu.addAction(self.window.browser_lookup_action)
menu.addSeparator()
menu.addAction(self.window.autotag_action)

View File

@@ -23,9 +23,10 @@ import sys
import os.path
from picard import config, log
from picard.album import Album
from picard.cluster import Cluster
from picard.file import File
from picard.track import Track
from picard.album import Album
from picard.formats import supported_formats
from picard.ui.coverartbox import CoverArtBox
from picard.ui.itemviews import MainPanel
@@ -33,7 +34,7 @@ from picard.ui.metadatabox import MetadataBox
from picard.ui.filebrowser import FileBrowser
from picard.ui.tagsfromfilenames import TagsFromFileNamesDialog
from picard.ui.options.dialog import OptionsDialog
from picard.ui.infodialog import FileInfoDialog, AlbumInfoDialog
from picard.ui.infodialog import FileInfoDialog, AlbumInfoDialog, ClusterInfoDialog
from picard.ui.infostatus import InfoStatus
from picard.ui.passworddialog import PasswordDialog
from picard.ui.util import find_starting_directory, ButtonLineEdit
@@ -774,6 +775,9 @@ class MainWindow(QtGui.QMainWindow):
if isinstance(self.selected_objects[0], Album):
album = self.selected_objects[0]
dialog = AlbumInfoDialog(album, self)
elif isinstance(self.selected_objects[0], Cluster):
cluster = self.selected_objects[0]
dialog = ClusterInfoDialog(cluster, self)
else:
file = self.tagger.get_files_from_objects(self.selected_objects)[0]
dialog = FileInfoDialog(file, self)