mirror of
https://github.com/fergalmoran/picard.git
synced 2026-03-02 11:33:59 +00:00
Add Info dialog to clusters, showing track list
The track list can be copied to MB release editor.
This commit is contained in:
@@ -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):
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user