From 258e9c2084d8d689361fd7bb630f70ffe2a25ba0 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Mon, 1 Jul 2013 02:03:58 +0200 Subject: [PATCH] Use info dialog to display per-album error log. When an error occurs during loading of a release, it will be visible in info dialog for this release (which was unused). New icon was added to mark visually releases with errors, and scrollbars will appear in info dialog if needed. --- picard/album.py | 20 +- picard/resources.py | 266 +++++++++++++----- picard/ui/infodialog.py | 19 +- picard/ui/itemviews.py | 8 +- picard/ui/ui_infodialog.py | 37 ++- .../images/16x16/media-optical-error.png | Bin 0 -> 964 bytes .../images/22x22/media-optical-error.png | Bin 0 -> 1426 bytes resources/picard.qrc | 2 + ui/infodialog.ui | 46 ++- 9 files changed, 285 insertions(+), 113 deletions(-) create mode 100644 resources/images/16x16/media-optical-error.png create mode 100644 resources/images/22x22/media-optical-error.png diff --git a/picard/album.py b/picard/album.py index 6b749962e..7b4d283f1 100644 --- a/picard/album.py +++ b/picard/album.py @@ -62,6 +62,7 @@ class Album(DataObject, Item): self._discid = discid self._after_load_callbacks = queue.Queue() self.unmatched_files = Cluster(_("Unmatched Files"), special=True, related_album=self, hide_if_empty=True) + self.errors = [] def __repr__(self): return '' % (self.id, self.metadata[u"album"]) @@ -132,7 +133,7 @@ class Album(DataObject, Item): try: run_album_metadata_processors(self, m, release_node) except: - log.error(traceback.format_exc()) + self.error_append(traceback.format_exc()) self._release_node = release_node return True @@ -144,7 +145,7 @@ class Album(DataObject, Item): parsed = False try: if error: - log.error("%r", unicode(http.errorString())) + self.error_append(unicode(http.errorString())) # Fix for broken NAT releases if error == QtNetwork.QNetworkReply.ContentNotFoundError: nats = False @@ -164,12 +165,16 @@ class Album(DataObject, Item): parsed = self._parse_release(document) except: error = True - log.error(traceback.format_exc()) + self.error_append(traceback.format_exc()) finally: self._requests -= 1 if parsed or error: self._finalize_loading(error) + def error_append(self, msg): + log.error(msg) + self.errors.append(msg) + def _finalize_loading(self, error): if error: self.metadata.clear() @@ -216,7 +221,7 @@ class Album(DataObject, Item): try: run_track_metadata_processors(self, tm, self._release_node, track_node) except: - log.error(traceback.format_exc()) + self.error_append(traceback.format_exc()) totalalbumtracks = str(totalalbumtracks) @@ -239,14 +244,14 @@ class Album(DataObject, Item): try: parser.eval(script, track.metadata) except: - log.error(traceback.format_exc()) + self.error_append(traceback.format_exc()) # Strip leading/trailing whitespace track.metadata.strip_whitespace() # Run tagger script for the album itself try: parser.eval(script, self._new_metadata) except: - log.error(traceback.format_exc()) + self.error_append(traceback.format_exc()) self._new_metadata.strip_whitespace() for track in self.tracks: @@ -280,6 +285,7 @@ class Album(DataObject, Item): self._new_metadata = Metadata() self._new_tracks = [] self._requests = 1 + self.errors = [] require_authentication = False inc = ['release-groups', 'media', 'recordings', 'artist-credits', 'artists', 'aliases', 'labels', 'isrcs', 'collections'] @@ -391,7 +397,7 @@ class Album(DataObject, Item): return True def can_view_info(self): - return bool(self.loaded and self.metadata and self.metadata.images) + return (self.loaded and self.metadata and self.metadata.images) or self.errors def is_album_like(self): return True diff --git a/picard/resources.py b/picard/resources.py index 00a7d37db..301b2212e 100644 --- a/picard/resources.py +++ b/picard/resources.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: dim. juin 30 21:56:31 2013 +# Created: lun. juil. 1 02:03:25 2013 # by: The Resource Compiler for PyQt (Qt v4.8.2) # # WARNING! All changes made in this file will be lost! @@ -1914,6 +1914,69 @@ qt_resource_data = "\ \xbc\xfe\x92\x5f\x48\x9e\xe4\xec\x1d\xf1\xc4\xbe\x03\xd8\xc1\xbf\ \xce\x15\x14\xa7\xaa\x2a\x88\xcd\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ +\x00\x00\x03\xc4\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\ +\x0d\xd7\x01\x42\x28\x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xdd\x06\x0f\x0c\x1a\x34\x2d\xd4\xb7\xad\x00\x00\x03\x51\x49\x44\ +\x41\x54\x38\xcb\x75\x93\x4b\x4c\x5c\x55\x00\x86\xbf\x73\xce\xbd\ +\x97\xb9\x33\x17\x86\x81\x21\x20\x94\x16\x28\x8d\x8f\x34\x84\x82\ +\x82\x49\x8d\x80\x89\x62\x37\x26\x9a\xa8\xa9\x12\x74\xa7\x2d\x75\ +\xe3\x63\xa1\x31\x31\x1a\xdd\x18\x31\x31\x6a\xd0\xc4\xa6\x58\x7c\ +\xa4\xa9\x24\xc6\x52\x11\x88\x69\x2b\x2a\xc2\x68\x84\x85\xe0\xa2\ +\x64\xca\x33\x35\xa1\x33\x0e\x05\xee\x3c\xce\xbd\xd7\x0d\x4d\xd4\ +\xe8\xb7\xfc\x93\x6f\xf3\xe7\xff\x05\xff\xe2\x95\x47\x1f\x6e\xdf\ +\x72\x22\x4f\x7a\x4a\x75\x02\xf5\xbb\x71\x52\x79\xde\x45\x67\x6b\ +\x7b\xf0\xd5\x33\x67\xa7\xf9\x3f\xfa\x8f\x74\x0f\x9c\xec\xed\x99\ +\x5b\x9d\x9b\xbb\xb0\x93\xc9\x64\x3c\xad\x7d\x4f\x6b\x7f\x27\x93\ +\xb9\xbe\x32\xfb\xeb\xd4\xc9\xde\x9e\xb9\xfe\x23\xdd\x03\xff\x29\ +\x9f\x6e\x6d\x19\x5d\xfb\x64\xe8\x73\x2f\x9f\xf7\xaf\x4e\x4e\x06\ +\xab\xa3\xa3\xc1\xca\xc8\x48\xb0\x3e\x31\x11\x6c\x24\x12\xc1\xf6\ +\xea\x6a\xe0\x69\xed\xaf\x0e\x0d\x8d\x9e\x6e\x6d\x19\xbd\xe1\x29\ +\x80\xb7\xef\xbf\x6f\xe0\x81\xa7\x8f\x89\x58\x57\xd7\x23\xeb\xc3\ +\xc3\xb2\xb0\xb1\x01\xb9\x1c\x12\x10\x80\xb2\x2c\xa4\x52\x78\x3b\ +\x3b\x22\x7a\xe8\x50\x63\x3c\x56\x9a\xaa\x75\xb7\x5b\xc7\x2e\x2f\ +\x9e\x57\x7d\x27\x8e\xb5\x37\x28\xe3\xf8\xe1\x17\x5f\xba\x27\x35\ +\x35\x25\xfd\x42\x01\x9d\x4e\x93\x4f\x5d\x23\x9f\x4e\xa1\x37\x37\ +\x91\xa6\x89\x0a\x87\x91\x86\x49\x10\x04\xc4\xda\xda\x6b\xe6\x27\ +\xc6\xc3\x7b\xef\xbe\xeb\x17\xd5\xd6\x76\xc7\xcb\xbd\x27\x9e\xd9\ +\x2b\xaf\x6f\x55\xea\xcd\x4d\xfc\x5c\x16\x59\x54\x84\x15\x8f\x13\ +\x69\xd8\x4f\x64\x5f\x1d\x76\xcd\x1e\xdc\xe5\x2b\xa8\x70\x18\xdf\ +\x75\xf1\xb5\x26\xba\x6f\x5f\x21\xf1\xfb\x82\x6d\x00\x9d\x15\x0d\ +\xfb\xeb\xb3\x4b\x4b\x28\xdb\xc6\xcf\xe5\xb0\x62\x65\xa4\x13\x09\ +\x16\x26\xc6\x01\x82\x3b\x9f\x7f\x41\x94\xb6\xb4\x90\x9a\xfe\x09\ +\xbb\xba\x06\xad\x35\xf1\xba\xfa\x38\xd0\x29\x81\x7a\x2b\x1c\xb6\ +\x54\x28\x84\xe1\x38\x20\x04\xa1\xea\x6a\x16\x26\xc6\x83\x38\xa2\ +\x49\x07\x41\x45\xa2\xff\x2d\x3f\x54\x55\x85\xbb\xb2\x8c\x9f\xcf\ +\xe3\xb9\x2e\xaa\xa8\xc8\x04\xea\x8d\xdd\x32\x85\xb2\x6d\xd0\x1a\ +\x69\x59\x98\xb1\x18\x4a\x08\x7f\x59\x17\x96\x01\x4c\xc8\x03\x21\ +\xcf\x75\xf1\xf3\x79\x30\x0c\x7c\xad\x05\x20\x24\x90\x2c\xb8\xae\ +\x56\xb6\x8d\xb2\x6d\x42\x95\x95\x78\xdb\xdb\xdc\xfe\xec\x73\xd2\ +\x96\xea\x6a\x08\x16\x5b\xfb\xfa\xac\xcc\xdc\x1c\xca\x0e\xe3\xe5\ +\x72\xf8\xf9\x3c\x6e\x26\xe3\x01\x49\x09\x5c\xbc\xb6\xb4\x94\x36\ +\x1c\x07\xc3\x71\x88\x34\x36\x52\xf8\x33\x45\x45\x47\x87\x78\xf0\ +\xd2\x77\xa1\x87\x26\x7f\x28\x2f\xbe\xf5\x36\x79\x65\xf0\x14\x46\ +\x34\x8a\x9f\xcd\x22\x2d\x8b\xd4\xda\xaa\x0b\x5c\x30\x80\xc1\xf1\ +\xfe\x37\xbb\x9f\xf8\xe8\x54\x85\x70\x1c\xa4\x65\x21\x0f\xdc\xcc\ +\x76\x32\x49\x6a\x66\x9a\x42\x3a\x8d\xb4\x2c\x4a\x5b\x5a\x10\x42\ +\x12\x78\x1e\x91\xda\x5a\x66\x5e\x7f\x2d\x4b\xb1\x33\xa8\x12\x33\ +\x3f\xaf\x75\x54\x55\xde\x52\x6d\x9a\x37\x95\x1e\x3c\x58\x22\xa4\ +\x44\x28\x85\xb4\x2c\xac\xf2\x72\x42\xd5\x35\x98\xb1\x32\x84\x52\ +\xe8\xad\x2d\x4a\x9b\x9b\x59\x39\xf7\x55\x66\x7e\xfe\xb7\xb3\x6f\ +\x7c\x76\xe6\x43\x05\x30\x76\x79\xf1\x7c\xf3\xca\xd2\xbd\xc5\x76\ +\x38\x1e\x6b\x6a\x0a\xa1\x14\x3a\x9b\x25\xf0\x7d\x7c\x20\x90\x12\ +\xa3\xa4\x84\x68\x53\x13\xc9\xe1\x2f\xf2\xb3\x23\xe7\x26\x8f\x5f\ +\x9a\x3c\x0a\x28\x75\x63\xd3\x5f\xae\xad\x7f\x7a\x60\x33\x53\x37\ +\xfb\xcd\xd7\xf5\x65\x7b\x6a\x2d\xd3\x71\x64\x28\x1e\xc7\x88\x46\ +\xd1\x4a\xf1\xc7\xca\xb2\x37\xf6\xee\x3b\x3b\xc9\x85\x85\x8f\x9f\ +\xfa\xfe\xc7\xa3\xbb\x5a\x20\xfe\xf6\x27\x01\x18\x8f\xf7\x3c\x76\ +\x38\x12\x09\xf7\x1a\xca\xe8\x12\x52\xd4\x0a\x21\x84\xef\xfb\x6b\ +\x5a\xeb\x6f\x4d\xd3\xfc\xe0\xfd\xf7\x06\xfe\x71\xe7\xbf\x00\xb7\ +\x72\x61\x14\x06\xc0\xe7\xf4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ \x00\x00\x02\xab\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -1959,50 +2022,6 @@ qt_resource_data = "\ \x3f\x5f\xda\x68\xfd\xbf\x00\x00\x38\x7c\x45\xbd\x0f\x00\xc3\x37\ \xc5\xd9\x7f\xf5\xfc\x02\x73\x4a\x12\x2a\x86\x68\x1c\xcb\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x02\x97\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ -\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ -\x67\x9b\xee\x3c\x1a\x00\x00\x02\x29\x49\x44\x41\x54\x38\x8d\x95\ -\x52\x3b\x68\x53\x61\x18\x3d\xff\x7d\x24\x37\x52\x2c\x44\x4d\x3a\ -\x24\x45\xa9\xaf\x45\xb0\x76\x32\xad\x08\x1d\x04\x25\x1d\x8a\x88\ -\x8b\x43\x1d\x45\xb0\x88\xd6\xc1\x5d\x10\x7a\x47\x07\xa1\x4b\xa6\ -\x0e\x52\x51\x09\x6d\x84\x4c\x3e\xae\x85\x50\x4b\x34\x34\x42\x8b\ -\x42\x87\x94\xa4\x35\x5a\x31\x4d\xef\xbd\xff\xe3\x73\x88\xc4\xd4\ -\xa4\x62\x0f\xfc\xcb\xe1\xe3\x7c\xff\x39\xdf\x61\x44\x84\x56\x0c\ -\x4e\x98\x65\x10\xa2\xe8\x04\x86\x8a\x33\xc9\x7b\x5a\x29\xa3\x6d\ -\x88\x10\xb5\x6f\x3e\x81\x50\x02\x42\xf9\x90\x8a\x43\x28\x0e\x2e\ -\x3d\x3c\x4c\xdd\x6e\x13\x6e\x17\x00\xc0\x98\x86\xdc\x6a\x1a\x9e\ -\xd8\x86\x2b\xb6\xe0\xf1\x2d\x9c\x3d\x32\xda\xf1\x53\x5a\x47\x16\ -\x0c\x8c\xfd\x7e\x60\x00\x63\x90\x8a\xef\x45\xa0\x91\x0b\x11\x81\ -\x40\x00\xd1\xae\x02\xc6\xd0\x3d\xd3\x21\x85\x44\x73\xb7\x0e\x97\ -\x88\x2c\xa5\x24\x88\x14\x88\x14\x7c\xb9\x0d\xae\x7c\x30\x1d\xee\ -\xe0\x5d\xb3\x99\x3a\xd3\xf0\xce\x20\x85\x54\x2c\xd2\xd7\x7f\xeb\ -\xf2\x83\x90\xa1\x07\x40\xa4\x2c\x49\x02\x8a\x49\x40\x17\x00\x04\ -\xca\x9b\xcb\x60\xfa\x25\xdc\xb8\x7a\xdf\x02\x01\x9c\xfb\x98\xc9\ -\xa6\xea\xdf\x7f\x7c\x4d\x31\x22\xc2\xd0\x84\x39\x73\xee\xf4\xc5\ -\xe4\xf0\xc0\x68\xb0\x58\x79\x03\xc9\x7c\x48\xf8\xf8\xe6\x96\xb0\ -\x56\xfb\x04\xae\x7c\x80\x08\x44\x1a\xce\xf7\x5e\xc3\x62\x61\xc1\ -\x2b\x2e\xe7\xd3\x6f\x27\xf9\x15\xad\xe1\x15\x63\xaf\xf3\x99\xca\ -\x97\xf2\x12\xc5\xc2\xc7\x41\x1a\xc7\xba\xb7\x82\x92\xfb\x11\x2c\ -\x28\x10\x08\x69\x30\x43\x3a\xfa\x63\xc3\xa8\x6e\x56\xa9\xb8\x92\ -\xaf\x10\xe1\x7a\x33\x44\xc7\xe6\x35\x10\x92\xd3\x2f\x1f\xbb\x06\ -\xb3\x60\x9a\x26\x36\xfc\xcf\x30\x2d\x1d\x01\x4b\x43\x20\xa4\x23\ -\x1e\x3e\x86\x48\xa8\x0f\xd9\x57\xb3\x2e\x29\x24\x1d\x9b\xd7\x76\ -\x5c\xc1\xb1\x79\x41\x08\x6f\x7c\x3a\xf3\xa8\x7e\x70\x5f\x1c\x5d\ -\xa1\x6e\x98\xc1\xc6\xe6\xfd\x5d\xdd\x38\x15\xb9\x80\x74\xf6\x69\ -\x9d\x73\x7f\xdc\xb1\x79\xa1\xe3\x19\x1d\x9b\x4f\x95\x36\x56\x33\ -\xb9\x0f\x8e\x3f\xd0\x33\x02\xcd\x60\x30\x02\x1a\xce\x44\x47\x90\ -\x7b\x3f\xef\xaf\x57\xd7\xe6\x1c\x9b\x4f\xed\x38\x63\x5b\x03\x14\ -\xc6\x16\x0a\xf3\x4b\xbd\xb1\xc3\xf1\xa3\xe1\x04\xd3\x0d\x0d\xd5\ -\xd2\x4f\xca\x2d\x3a\x65\x25\x1b\xbe\xff\x59\x24\xc7\xe6\x35\x92\ -\x48\xce\x66\x5f\xb8\x87\x70\x12\x07\xd4\x09\x3c\x9f\x7b\xe6\x2a\ -\xf9\xc7\x77\x2b\x58\xe2\x8e\x41\x7f\x93\x7b\xc1\x2e\x55\xfe\x7f\ -\xfc\x02\xaa\x26\x0d\x2a\x62\xcc\x1b\x11\x00\x00\x00\x00\x49\x45\ -\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x8f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -2833,6 +2852,98 @@ qt_resource_data = "\ \x03\xa8\xc4\xbc\x7a\xfa\x46\x00\x0e\x00\xf6\x00\xbe\x62\xbe\x17\ \x67\xe6\x23\x00\x50\xfa\xb9\x2b\xca\xbe\x01\xd3\xd8\xe4\x64\x97\ \x03\xd0\xba\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x05\x92\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\ +\x0d\xd7\x01\x42\x28\x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xdd\x06\x0f\x0c\x19\x11\x4d\xfd\x30\x29\x00\x00\x05\x1f\x49\x44\ +\x41\x54\x38\xcb\xb5\x95\x6d\x8c\x5c\x55\x19\xc7\x7f\xe7\x9c\x7b\ +\xef\xdc\xb9\x3b\xfb\xd6\xe9\xb2\xcb\xbe\x18\xdb\x9d\xd2\xed\x3a\ +\x48\x48\x28\xaf\x0d\x2f\xc1\x1a\x05\xc5\x95\x28\x9a\xf8\x61\x79\ +\x89\xd1\x88\x26\x46\x4d\x93\x56\x3e\xa1\x82\x46\x82\x40\x42\x13\ +\x12\x08\x0b\x44\x23\xee\x12\x6b\x84\x6a\x6c\x2b\x21\x52\xa2\xd8\ +\x25\xdb\x6c\xd9\xd2\x29\xc8\xd2\xe2\x38\xed\xb2\xdb\x76\xee\xdc\ +\x3b\x77\xee\xcb\x39\x7e\xe8\x76\xb3\x85\x60\xe0\x83\xe7\xcb\xf9\ +\x70\x92\xdf\xf3\xe4\xff\xfc\x9f\xff\x81\xff\xd3\x11\xff\xeb\xf1\ +\xa1\xad\x37\x8e\xfb\x1d\xed\x5f\x4c\x2c\xfb\x0a\x23\x65\x1f\x20\ +\x84\xd1\x27\xec\x24\x79\xb5\xbd\xee\xef\xfa\xfe\x9e\x7d\x4f\x7d\ +\xac\x6a\x53\x9b\x46\xc6\x9f\xbc\x7c\xf3\xfc\xf4\xb6\x6d\x7e\xfd\ +\xad\xb7\xb2\xd8\xf7\x4d\x1a\xc7\x26\x8d\x13\x13\xfb\x75\x73\xa6\ +\x72\x44\xcf\xfe\xfc\xfe\xf0\xc9\x2b\x36\xbf\x3b\xb5\x69\x64\xfc\ +\x23\x75\xbc\x6b\x43\xe9\x91\xe1\x9b\xbf\xf0\x8d\xd2\xf6\xed\xdd\ +\x18\x23\xc2\x63\xc7\x88\x6a\x27\x31\x3a\xc3\xca\xbb\x58\x9e\x87\ +\x7b\x61\x1f\xb9\x9e\x1e\xb2\x38\x61\x6e\xc7\xf6\xe0\xd8\x4b\x2f\ +\x3d\x35\x56\x39\x7a\xf7\x6a\x8e\x7a\x3f\x74\xf4\x5b\xdf\xbe\xe3\ +\xa2\x1d\x3f\xee\xf4\xe7\xe6\xc4\xa9\x7f\x1e\x20\x3a\xb1\x80\x4e\ +\x53\xa4\x65\xa3\x72\x39\x8c\xce\x40\x6b\x74\xb3\x89\x50\x92\x81\ +\xaf\xde\xe6\x64\xd5\xea\xa5\x9f\x5b\x5a\x5c\xff\xdb\xf7\x16\xff\ +\xf0\x01\xf0\xd4\xa6\x91\xf1\x81\xd1\xd1\x6d\xe5\x07\x1e\xe8\x5c\ +\xf8\xeb\x8b\xd4\xe7\x0e\x63\xb4\x41\x67\x1a\x84\x40\xb5\xb5\xa1\ +\x5c\x17\x74\x86\x52\x12\x74\x0a\x46\xa3\x5b\x11\xbd\x9f\xbf\x49\ +\x36\xa6\xa7\xcb\xd7\xda\xf6\xf1\xdf\xff\xa7\x36\x03\x20\xcf\x81\ +\x97\x8a\x6b\x7e\x76\xf1\xa3\x3b\xbb\xfc\x4a\x85\xc4\xaf\x93\xeb\ +\xe9\x41\x3a\x0e\x48\x81\xce\x34\x59\x9a\x92\x35\x9b\x98\x38\x46\ +\x87\x0d\x4c\x2b\x84\x24\xc2\xa4\x09\x59\xc3\x67\xe3\x3d\xf7\x58\ +\x4b\x03\xfd\x0f\x9f\xd7\xf1\x7d\x63\xb7\x8c\x5f\xf7\x99\xad\x5f\ +\xef\xbb\xea\x6a\xab\x71\xa4\x02\x3a\x43\x5a\x0a\xa1\x14\x26\x4d\ +\xc9\x0f\x0d\x61\x17\x0a\x58\xed\x05\xa4\x49\x11\xad\x00\x29\x41\ +\x28\x05\xda\x90\xd4\x7d\x72\x3d\x17\xd0\x38\xf6\x8e\x3d\x54\x2a\ +\x9d\x7e\x79\x66\xe6\x1f\x16\x40\x58\x68\xfb\xda\x27\xbf\x7c\xab\ +\xd3\x5a\x58\x00\x61\x10\x18\x4c\x9a\xa0\x24\xe4\x3e\x31\xc8\x99\ +\x43\xb3\x54\x9e\x7d\x16\x8d\x61\xf8\xfa\x6b\x19\xdc\xba\x85\x2c\ +\x6c\x90\x26\x29\x69\xba\x88\xf4\x0a\x08\x27\xc7\xf0\x0d\x37\xca\ +\x57\x5e\xf8\xe3\x0f\x80\x47\xce\x4a\xe1\x38\x5b\x0a\x03\x03\xe8\ +\x66\x88\xb2\x2c\xa4\x49\x31\x61\x1d\xcb\x82\xe0\xc8\x61\x4e\xec\ +\x7e\xc1\x0c\x6d\xdc\xf8\xaf\x8b\x46\x3f\xb5\x3b\x98\x3f\x9e\xd5\ +\x5e\x3e\x80\xbd\xb6\x97\xd6\x7b\x0b\x08\x21\x10\x96\x8d\x8e\x63\ +\x8a\xa5\x12\x51\x92\x0c\xac\x68\x9c\x64\xba\x4d\x3a\x0e\xd2\x71\ +\x90\xb6\x42\x89\x04\x19\x9d\x41\xa5\x01\xaf\x3d\xf3\x34\x6b\x07\ +\x87\xfe\x74\xc9\xc4\xc4\xf0\xc8\x13\x4f\xdc\x6c\x07\xc1\xd6\xa3\ +\x7f\xfe\x0b\x4e\xff\x10\xaa\xa3\x1b\xab\x78\x01\xaa\xd0\x0e\x42\ +\x62\x7b\x1e\x49\x12\x5b\x2b\x60\x21\xce\xfa\x59\x58\x16\xd2\x92\ +\x48\x1d\x23\x92\x26\xa4\x2d\x8a\x8e\x43\xbd\x52\xf9\xc5\xb9\xa1\ +\x1c\xac\x55\xff\x66\xc0\xe0\xe4\x31\x56\x0e\x23\x25\xc6\x18\x8c\ +\xd6\x48\xb9\xe2\x05\x2c\x00\x5b\x59\x91\x49\x92\xbc\x72\x5d\x8c\ +\x57\x40\x77\xac\x45\x46\x29\x5a\xd9\xf4\x5e\x73\x35\x8d\x03\x33\ +\x8f\x4d\x5c\x7e\xd9\xc5\x00\xc3\x8d\xe0\xa1\xbe\xbb\x6e\x17\x59\ +\xe8\x93\xf8\x3e\x46\x28\x90\x12\xa1\x14\xb2\x15\xe1\xd8\x4e\xb6\ +\x02\xce\x5b\xd6\xbb\x61\xad\xb6\xc1\xed\xec\x40\x7b\x05\x54\xc7\ +\x1a\xb4\x86\x2c\x8a\xe9\xfd\xd2\xad\xb8\xa5\x91\x91\xd2\xe4\xef\ +\x5a\x18\xa3\x07\xef\xfe\x8e\x2a\x5e\x76\x09\x61\xe5\x10\xd2\xb6\ +\x48\xc3\x00\x21\x24\x6e\x5f\x1f\xf5\x6a\x15\x2f\x9f\x6f\xae\x80\ +\x59\x5c\x7a\xf4\xcd\xc9\xc9\x5f\x7d\xfa\x7b\xdf\x15\x32\x6a\xa1\ +\xd6\xf4\x20\x0b\x1d\x24\x41\x48\xdc\x08\xf1\x46\xca\x94\xee\xbd\ +\x54\x0a\x21\xa5\x30\x29\xfe\xdb\xef\x20\xe3\x08\xd5\xd6\x85\xae\ +\x87\xe8\x2c\xc6\x2e\x16\x39\x3a\x39\x89\xe7\x38\xaf\xae\x80\x77\ +\x4c\x3d\xf7\xf0\xc0\xd2\xe2\x2f\x47\xc7\xc7\x6d\xab\x50\x40\xd8\ +\x36\x69\x10\x20\x8c\x44\x66\x82\xe0\xdf\x55\x92\xd3\xf5\x65\xdf\ +\xa6\xd8\x39\x85\xed\x80\x0c\xea\x20\x14\x6e\x5f\x1f\x3a\x8a\xa8\ +\xbe\x3e\x6b\x46\xcf\xf8\xb7\x9d\xb7\xd2\xdf\xf4\xbc\x46\x63\x76\ +\xf6\xb3\xfd\x63\x63\x02\xc0\x20\xc0\x80\x11\x02\x1d\xa7\xc8\x7c\ +\x1e\xe5\x79\x28\xc7\x81\x2c\x83\x34\x45\x87\x0d\x72\xbd\xfd\x78\ +\xeb\xd6\xf3\xc6\x4f\xef\x25\x0e\xc2\x5d\xb7\x3c\xff\xfc\xc4\x79\ +\xe0\xdf\x2c\x2c\x4c\xdf\xd5\x6a\x89\xb0\x19\x5e\x57\xbc\x66\xcb\ +\xd9\xe8\x13\x12\x8c\x21\x0b\xc2\xb3\x6b\xea\xd8\x08\x0c\x64\x29\ +\x26\x4d\x71\xfb\x07\xf1\xd6\xad\xe3\xed\x9d\x3b\x59\x9a\x9d\x3d\ +\x75\xd3\xde\x7d\x57\x01\x06\x30\x6a\x39\x3a\x5d\x20\xff\xf8\xe2\ +\xe2\xcc\x57\xea\xf5\xf2\xc9\xd7\xa6\x4b\x6b\xaf\xbc\x12\xbb\xab\ +\x0b\x1d\x27\x68\x9d\x21\x2c\x85\xca\x39\x08\x29\xb1\x3b\x3b\x28\ +\x94\x86\xc9\xd2\x84\x23\x0f\x3e\x48\xf5\xd0\x6c\xf4\x93\xb9\xc3\ +\x5b\x8e\x47\x51\x0b\x48\x57\x83\xe5\xf2\x6d\x4f\x54\xab\x2f\x6e\ +\xe8\xee\x92\x07\xff\xfe\xca\x66\x1d\x35\x85\x55\x68\xc7\xee\xee\ +\xc6\x2e\x16\x51\x9d\x9d\x88\x8e\x76\xc2\x24\xe1\xe0\xbe\xbd\xec\ +\x79\x6e\x8a\x7a\xb3\x39\x75\xfb\x9e\xbd\x77\xce\x37\x9b\x75\x20\ +\x58\x06\xeb\xd5\x41\x2f\x97\x87\xd9\x0e\x58\x6d\xae\xdb\xb6\xe3\ +\x47\x3f\xdc\xad\xb5\x5e\xdf\x68\x06\x56\xab\xd5\x12\x00\xb9\x5c\ +\x0e\x2f\xef\x69\xdb\xb2\xab\xbf\x7e\xfa\x99\xb1\xd7\xe7\xe7\x4f\ +\x01\xa7\x81\x08\x68\x2d\x4b\xa1\x3f\xec\xcf\x93\xab\xd2\xcf\x2a\ +\x97\xcb\x5d\xe5\x72\xb9\xdf\x75\xdd\xb6\x5a\xad\x56\xdb\xbf\x7f\ +\xff\x49\xdf\xf7\xa3\x73\xdd\x9d\xd3\x75\x35\xe0\xbf\x05\xd5\x4c\ +\xec\x72\xd2\x98\xab\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ \x00\x00\x03\x12\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -9138,16 +9249,16 @@ qt_resource_name = "\ \x08\x89\x88\x67\ \x00\x70\ \x00\x69\x00\x63\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x17\ +\x08\x1f\x12\x27\ +\x00\x6d\ +\x00\x65\x00\x64\x00\x69\x00\x61\x00\x2d\x00\x6f\x00\x70\x00\x74\x00\x69\x00\x63\x00\x61\x00\x6c\x00\x2d\x00\x65\x00\x72\x00\x72\ +\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x15\ \x00\x24\xf9\x87\ \x00\x61\ \x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2d\x00\x67\x00\x6f\x00\x2d\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x2d\x00\x31\x00\x36\ \x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x17\ -\x09\xec\xdc\x07\ -\x00\x61\ -\x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2d\x00\x67\x00\x6f\x00\x2d\x00\x62\x00\x6f\x00\x74\x00\x74\x00\x6f\x00\x6d\x00\x2d\ -\x00\x31\x00\x36\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x11\ \x0f\xe3\xd5\x67\ \x00\x64\ @@ -9211,8 +9322,8 @@ qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x1a\x00\x00\x00\x02\ \x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x57\x19\ -\x00\x00\x02\x8c\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x2f\ -\x00\x00\x01\xce\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x21\ +\x00\x00\x02\x8c\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x30\ +\x00\x00\x01\xce\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x21\ \x00\x00\x00\x12\x00\x02\x00\x00\x00\x01\x00\x00\x00\x20\ \x00\x00\x00\xe0\x00\x02\x00\x00\x00\x01\x00\x00\x00\x1f\ \x00\x00\x00\xf0\x00\x02\x00\x00\x00\x01\x00\x00\x00\x1e\ @@ -9236,39 +9347,40 @@ qt_resource_struct = "\ \x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00\x55\x9d\ \x00\x00\x01\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x52\x58\ \x00\x00\x01\x20\x00\x00\x00\x00\x00\x01\x00\x00\x50\xdf\ -\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\xe0\x3a\ -\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x01\xcb\x87\ -\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\xc2\x5a\ -\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\xd5\xed\ -\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x02\x22\xc4\ -\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\xa0\x1a\ -\x00\x00\x03\x60\x00\x00\x00\x00\x00\x01\x00\x00\x97\xff\ -\x00\x00\x06\x42\x00\x00\x00\x00\x00\x01\x00\x00\xad\xd0\ -\x00\x00\x06\x8e\x00\x00\x00\x00\x00\x01\x00\x00\xb5\x9c\ -\x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x85\x2e\ -\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x94\xa7\ -\x00\x00\x04\x0e\x00\x00\x00\x00\x00\x01\x00\x00\xa8\xb6\ -\x00\x00\x05\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x8b\x7d\ -\x00\x00\x06\x18\x00\x00\x00\x00\x00\x01\x00\x00\xaa\xba\ -\x00\x00\x03\xf4\x00\x00\x00\x00\x00\x01\x00\x00\xa5\x8f\ -\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x00\xbc\xf5\ -\x00\x00\x05\xea\x00\x00\x00\x00\x00\x01\x00\x00\x9b\xec\ -\x00\x00\x06\x66\x00\x00\x00\x00\x00\x01\x00\x00\xb0\xa5\ -\x00\x00\x04\xc0\x00\x00\x00\x00\x00\x01\x00\x00\xb8\x73\ -\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x73\x34\ +\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\xe6\xfd\ +\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x01\xd2\x4a\ +\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\xc9\x1d\ +\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\xdc\xb0\ +\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x02\x29\x87\ +\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\xa1\x47\ +\x00\x00\x03\x60\x00\x00\x00\x00\x00\x01\x00\x00\x99\x2c\ +\x00\x00\x06\x42\x00\x00\x00\x00\x00\x01\x00\x00\xb4\x93\ +\x00\x00\x06\x8e\x00\x00\x00\x00\x00\x01\x00\x00\xbc\x5f\ +\x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x86\x5b\ +\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x95\xd4\ +\x00\x00\x04\x0e\x00\x00\x00\x00\x00\x01\x00\x00\xa9\xe3\ +\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\xab\xe7\ +\x00\x00\x05\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x8c\xaa\ +\x00\x00\x06\x18\x00\x00\x00\x00\x00\x01\x00\x00\xb1\x7d\ +\x00\x00\x03\xf4\x00\x00\x00\x00\x00\x01\x00\x00\xa6\xbc\ +\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x00\xc3\xb8\ +\x00\x00\x05\xea\x00\x00\x00\x00\x00\x01\x00\x00\x9d\x19\ +\x00\x00\x06\x66\x00\x00\x00\x00\x00\x01\x00\x00\xb7\x68\ +\x00\x00\x04\xc0\x00\x00\x00\x00\x00\x01\x00\x00\xbf\x36\ +\x00\x00\x04\x90\x00\x00\x00\x00\x00\x01\x00\x00\x76\xfc\ \x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x68\x62\ \x00\x00\x03\x60\x00\x00\x00\x00\x00\x01\x00\x00\x60\x89\ \x00\x00\x04\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x6d\xff\ \x00\x00\x03\xae\x00\x00\x00\x00\x00\x01\x00\x00\x65\x37\ -\x00\x00\x05\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x81\x9a\ +\x00\x00\x05\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x82\xc7\ +\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x73\x34\ \x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x6f\xbb\ -\x00\x00\x04\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x75\xe3\ \x00\x00\x03\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x09\ -\x00\x00\x04\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x7c\x11\ +\x00\x00\x04\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x7d\x3e\ \x00\x00\x03\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x5e\x39\ -\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x7e\x46\ +\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x73\ \x00\x00\x03\x88\x00\x00\x00\x00\x00\x01\x00\x00\x62\xa6\ -\x00\x00\x04\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x78\x7e\ +\x00\x00\x04\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x79\xab\ " def qInitResources(): diff --git a/picard/ui/infodialog.py b/picard/ui/infodialog.py index e81917cbd..39ab7e7ab 100644 --- a/picard/ui/infodialog.py +++ b/picard/ui/infodialog.py @@ -18,7 +18,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import os.path -from PyQt4 import QtGui +from PyQt4 import QtGui, QtCore from picard.util import format_time, encode_filename, bytes2human from picard.ui.ui_infodialog import Ui_InfoDialog @@ -102,7 +102,9 @@ class FileInfoDialog(InfoDialog): else: ch = str(ch) info.append((_('Channels:'), ch)) - text = '
'.join(map(lambda i: '%s
%s' % i, info)) + text = '
'.join(map(lambda i: '%s
%s' % + (QtCore.Qt.escape(i[0]), + QtCore.Qt.escape(i[1])), info)) self.ui.info.setText(text) @@ -114,4 +116,15 @@ class AlbumInfoDialog(InfoDialog): def _display_info_tab(self): tab = self.ui.info_tab - self.tab_hide(tab) + album = self.obj + if album.errors: + text = '
'.join(map(lambda s: '%s' % + '
'.join(unicode(QtCore.Qt.escape(s)) + .replace('\t', ' ') + .replace(' ', ' ') + .splitlines() + ), album.errors) + ) + self.ui.info.setText(text + '
') + else: + self.tab_hide(tab) diff --git a/picard/ui/itemviews.py b/picard/ui/itemviews.py index d27746be7..752b63977 100644 --- a/picard/ui/itemviews.py +++ b/picard/ui/itemviews.py @@ -137,6 +137,7 @@ class MainPanel(QtGui.QSplitter): ClusterItem.icon_dir = icontheme.lookup('folder', icontheme.ICON_SIZE_MENU) AlbumItem.icon_cd = icontheme.lookup('media-optical', icontheme.ICON_SIZE_MENU) AlbumItem.icon_cd_saved = icontheme.lookup('media-optical-saved', icontheme.ICON_SIZE_MENU) + AlbumItem.icon_error = icontheme.lookup('media-optical-error', icontheme.ICON_SIZE_MENU) TrackItem.icon_note = QtGui.QIcon(":/images/note.png") FileItem.icon_file = QtGui.QIcon(":/images/file.png") FileItem.icon_file_pending = QtGui.QIcon(":/images/file-pending.png") @@ -635,7 +636,12 @@ class AlbumItem(TreeItem): self.insertChildren(oldnum, items) for item in items: # Update after insertChildren so that setExpanded works item.update(update_album=False) - self.setIcon(0, AlbumItem.icon_cd_saved if album.is_complete() else AlbumItem.icon_cd) + if album.errors: + self.setIcon(0, AlbumItem.icon_error) + elif album.is_complete(): + self.setIcon(0, AlbumItem.icon_cd_saved) + else: + self.setIcon(0, AlbumItem.icon_cd) for i, column in enumerate(MainPanel.columns): self.setText(i, album.column(column[1])) if self.isSelected(): diff --git a/picard/ui/ui_infodialog.py b/picard/ui/ui_infodialog.py index c4118a611..9ac35a643 100644 --- a/picard/ui/ui_infodialog.py +++ b/picard/ui/ui_infodialog.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'ui/infodialog.ui' # -# Created: Sat Oct 6 19:08:31 2012 -# by: PyQt4 UI code generator 4.9.4 +# Created: Sat Jun 15 12:58:18 2013 +# by: PyQt4 UI code generator 4.9.3 # # WARNING! All changes made in this file will be lost! @@ -18,26 +18,37 @@ class Ui_InfoDialog(object): def setupUi(self, InfoDialog): InfoDialog.setObjectName(_fromUtf8("InfoDialog")) InfoDialog.resize(535, 436) - self.vboxlayout = QtGui.QVBoxLayout(InfoDialog) - self.vboxlayout.setObjectName(_fromUtf8("vboxlayout")) + self.verticalLayout = QtGui.QVBoxLayout(InfoDialog) + self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.tabWidget = QtGui.QTabWidget(InfoDialog) self.tabWidget.setObjectName(_fromUtf8("tabWidget")) self.info_tab = QtGui.QWidget() self.info_tab.setObjectName(_fromUtf8("info_tab")) - self.vboxlayout1 = QtGui.QVBoxLayout(self.info_tab) - self.vboxlayout1.setObjectName(_fromUtf8("vboxlayout1")) - self.info = QtGui.QLabel(self.info_tab) + self.vboxlayout = QtGui.QVBoxLayout(self.info_tab) + self.vboxlayout.setObjectName(_fromUtf8("vboxlayout")) + self.info_scroll = QtGui.QScrollArea(self.info_tab) + self.info_scroll.setWidgetResizable(True) + self.info_scroll.setObjectName(_fromUtf8("info_scroll")) + self.scrollAreaWidgetContents = QtGui.QWidget() + self.scrollAreaWidgetContents.setEnabled(True) + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 493, 334)) + self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) + self.verticalLayoutLabel = QtGui.QVBoxLayout(self.scrollAreaWidgetContents) + self.verticalLayoutLabel.setObjectName(_fromUtf8("verticalLayoutLabel")) + self.info = QtGui.QLabel(self.scrollAreaWidgetContents) self.info.setText(_fromUtf8("")) self.info.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) self.info.setWordWrap(True) self.info.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse) self.info.setObjectName(_fromUtf8("info")) - self.vboxlayout1.addWidget(self.info) + self.verticalLayoutLabel.addWidget(self.info) + self.info_scroll.setWidget(self.scrollAreaWidgetContents) + self.vboxlayout.addWidget(self.info_scroll) self.tabWidget.addTab(self.info_tab, _fromUtf8("")) self.artwork_tab = QtGui.QWidget() self.artwork_tab.setObjectName(_fromUtf8("artwork_tab")) - self.vboxlayout2 = QtGui.QVBoxLayout(self.artwork_tab) - self.vboxlayout2.setObjectName(_fromUtf8("vboxlayout2")) + self.vboxlayout1 = QtGui.QVBoxLayout(self.artwork_tab) + self.vboxlayout1.setObjectName(_fromUtf8("vboxlayout1")) self.artwork_list = QtGui.QListWidget(self.artwork_tab) self.artwork_list.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) self.artwork_list.setIconSize(QtCore.QSize(170, 170)) @@ -48,13 +59,13 @@ class Ui_InfoDialog(object): self.artwork_list.setSpacing(10) self.artwork_list.setViewMode(QtGui.QListView.IconMode) self.artwork_list.setObjectName(_fromUtf8("artwork_list")) - self.vboxlayout2.addWidget(self.artwork_list) + self.vboxlayout1.addWidget(self.artwork_list) self.tabWidget.addTab(self.artwork_tab, _fromUtf8("")) - self.vboxlayout.addWidget(self.tabWidget) + self.verticalLayout.addWidget(self.tabWidget) self.buttonBox = QtGui.QDialogButtonBox(InfoDialog) self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.buttonBox.setObjectName(_fromUtf8("buttonBox")) - self.vboxlayout.addWidget(self.buttonBox) + self.verticalLayout.addWidget(self.buttonBox) self.retranslateUi(InfoDialog) self.tabWidget.setCurrentIndex(0) diff --git a/resources/images/16x16/media-optical-error.png b/resources/images/16x16/media-optical-error.png new file mode 100644 index 0000000000000000000000000000000000000000..5cbe26afef49a7c321dff7757d85f7bec0da1d97 GIT binary patch literal 964 zcmV;#13UbQP)TvY&uzjMyLm$@?+hJhg z1^?oeM;~tAaw1Q9N_7JDyKz!^-bH6?d+^mWXQ%l;`j2!Eob2tHTb-M`u#?GTJgt3C zYkwz`xxO;{>(t5Kp1J-b-2?wApKfg#UHfF{b1$FwuTD+|tD~dA%E(BtJ~0t&Boe{) z>T2L=?XM0Ejh=388NJ~tfVc0zZ{UHakBL}U*CXr0!?Lik0l6F!5P-5Qq*8c0J0g1M zP-8q+nyPiTTgNUho>zS*j0E>zUvp&)^^9sy(ga8E3a==>dj63TozeWgcXkyY1mI>UmbSM9^BS`7y#)CMbNe4kiqW>*FR8@t$vW%b4V_iA}x#5+Nuj&Fo41F{x`dy_~=xHa2%v%ArIWl zb}~t7W|~4ejkGLETUro85_lew+FE8_e=SR~GpG_XKd*IERo+rb^=O&L|nmh_9bz{?CuC0H1U^7!U`_0$&WqWEZ({W@d z9><7A(Ms{h%Ca~1?mIilg@uow`u@kGyILUr_9p=tkM}%wI1&l>8p`MrQq&3|gzx)n mTI+93)BNE5_XhrP=f42Aa$yt(z~}S;0000t+%q+_e~ndCXEvl`*m}sazxMm{QmICD>lD7wP|Gh zBXzuML+O#>o4@dl()R7$7$d@C$B1etF*?J_yI7uwdto2Bo*uF|VQ$Cv;MhwqJvCN2 zdiQFMdOvjZTi?Fpq8&f(^ylWpsec|II101ayg97Kx=ffiBOV(uioZl)#|06 zTUuQI+xHg#@B#4DrjhZ1(a~+?2Oj8L`0I<*=MH1EL1!9-K()1@To-hPQWA6uMx$F1 zy`R5HHm0Y`*V^{+-~XpJ10c_Vmx^nCcJZS-yZlOp#IKX<=|MUUNP*5YS(=hHo0vF8 zhYd_Cge1bG30cEu<30CSO9TB6pV#qyW4DZ7_nEC<@4M=1t8t_PIzw6tp%f-f$qx-- z7YbPI1*Az4tpF)OC*}?X}XB?3J531@C`T0S6=wz4}eF`O5r$L z3IhY^W{9#Zq)9Ph9m|5?$YD3kV?)mW_^M zilq`!k_@b9oMgI9Iu6otkhVgJ1R0${r2(%!^E7J*hyHZQ#KiE(6HnZ12f@~(fBp+j z{}8I98>@H$s?ZKXVtXD*5?d=^APSymDQPS3q~HMMf!F+4Np>HH`x^k4;>D*~I|Ejo_ia zyKWa*=#%(9MktUHp%k(e;n+^L0?u33yJ4-i!R_oodj(X-8nlKiis}8*t+=I;k<#Sv zS{S1T@BWS|UUms#!SzLPb&B@7MefoRf6*6j}*7P6? z9V9_W+z9bT%9QTCR0<)bFe(1q?;zs{)z*cshv+QEE*3dDIf>^uudaZ1Og;DTz|!I` zN5{u)t587LHfazbj6`OF;NMk})AeQFrr0@!?SKsGAQWz2A3BPtzCLS4&-k~Ux6(=wePwyoT!d=g-_43Krrb}zDyb`;s3mqqDogplR$~g!ru{%2`l!nRDgd-0= zNcGTc^pm;6TaHIj3rJUk_e)^fQ*XQR?0jGfoXe~>jKkUzwtJ2RZm&;w{a=G7i-L_h-R@=XS|4HBX gqjTMz({(lAzXjDy>~hkWs{jB107*qoM6N<$g315B(*OVf literal 0 HcmV?d00001 diff --git a/resources/picard.qrc b/resources/picard.qrc index 62fb48727..e2efe8ef9 100644 --- a/resources/picard.qrc +++ b/resources/picard.qrc @@ -8,6 +8,7 @@ images/16x16/edit-cut.png images/16x16/edit-paste.png images/16x16/folder.png + images/16x16/media-optical-error.png images/16x16/media-optical-saved.png images/16x16/media-optical.png images/16x16/picard.png @@ -18,6 +19,7 @@ images/22x22/folder.png images/22x22/list-remove.png images/22x22/lookup-musicbrainz.png + images/22x22/media-optical-error.png images/22x22/media-optical-saved.png images/22x22/media-optical.png images/22x22/picard-analyze.png diff --git a/ui/infodialog.ui b/ui/infodialog.ui index 6c647c229..44cf74b55 100644 --- a/ui/infodialog.ui +++ b/ui/infodialog.ui @@ -10,7 +10,7 @@ 436 - + @@ -22,19 +22,41 @@ - - - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - + + true - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - + + + true + + + + 0 + 0 + 493 + 334 + + + + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + +