Commit Graph

7595 Commits

Author SHA1 Message Date
Philipp Wolfer
024a809cf2 Use iter_unique in scriptsmenu 2020-12-03 14:57:12 +01:00
Philipp Wolfer
bab8447c8e Add a tagger.iter_files_from_objects method
Similar to get_files_from_objects, but uses an iterator instead of creating a list.
2020-12-03 11:51:21 +01:00
Philipp Wolfer
768fc4e6b7 Clear cover art box when selecting item without cover art 2020-12-03 09:13:34 +01:00
Philipp Wolfer
3b38a2438b Fixed exception on tag editing 2020-12-03 08:17:59 +01:00
Philipp Wolfer
4e13a1835d Merge pull request #1698 from phw/PICARD-2028-optimize-coverart-update
PICARD-2028: Optimize and speedup coverart updates
2020-12-02 15:26:41 +01:00
Philipp Wolfer
1cb8c77d6e Fixed cover art display for tracks and albums
Tracks don't loose cover art when removing files, linked file metadata is used. Albums show original metadata depending on tracks.
2020-12-02 09:24:32 +01:00
Philipp Wolfer
43e31fc71c Avoid multiple inheritance of Track from QObject 2020-12-02 09:06:02 +01:00
Philipp Wolfer
b31f897ee0 Fix propagation of keep_existing_images to tracks
Unifies handling of images with new and original cover art for all supported entity types.
2020-12-02 09:06:01 +01:00
Philipp Wolfer
bbad105db5 Avoid emiting metadata_images_changed without changes 2020-12-02 09:06:01 +01:00
Philipp Wolfer
e69f9b7e9f Optimised setting image in cover art box
Avoid calls to update_metadata_images
2020-12-02 09:06:00 +01:00
Philipp Wolfer
a54090a960 Let Track inherit from FileList
Unifies handling of objects with linked files. Simplifies code, e.g. cover art propagation to parent objects
2020-12-02 09:06:00 +01:00
Philipp Wolfer
f83044a5d0 PICARD-2028: Update cover art box only on changes
Use signalling to update the cover art box when cover art actually changed. Avoid cover art box update on selection changes.
2020-12-02 09:05:59 +01:00
Philipp Wolfer
e43cb44b2d PICARD-2016: Strip whitespace from AcoustID API key automatically 2020-12-01 22:22:03 +01:00
Philipp Wolfer
39db05e175 Update picard.pot 2020-11-30 16:35:51 +01:00
Philipp Wolfer
c7ac68afb8 Merge pull request #1697 from phw/PICARD-2039-info-error-tab
PICARD-2039: Unify error handling for for albums, non-album tracks and files
2020-11-30 16:30:39 +01:00
Philipp Wolfer
713e8d6584 Moved common error handling methods to Item 2020-11-30 16:20:46 +01:00
Philipp Wolfer
a7b8f0e8c6 Added zh-cn to Windows app languages 2020-11-30 15:26:31 +01:00
Philipp Wolfer
61255e532e PICARD-2039: Unify error handling for albums, tracks and files
Use an errors array, display an error tab in info dialog, show a tooltip in itemviews.
2020-11-30 14:22:05 +01:00
Philipp Wolfer
f72d55b64c PICARD-2039: Use separate info and error tabs in info dialog
This allows showing both errors and the normal info. E.g. if an album loaded, but there were still some errors logged during load.
2020-11-30 14:22:00 +01:00
Philipp Wolfer
378b629484 PICARD-2038: Integrate metadata box clipboard with system clipboard 2020-11-30 13:03:59 +01:00
Philipp Wolfer
1453117871 Use constants for metadata box columns 2020-11-30 11:51:53 +01:00
Philipp Wolfer
329340487d Refactor metadatabox to mark tags as readonly
Use a flag instead of checking for hard coded list. Disables/enables actions based on this flag.
2020-11-30 11:51:53 +01:00
Philipp Wolfer
df5e24f247 Build with pyobjc < 7
Fixes CI tests
2020-11-30 10:12:03 +01:00
Philipp Wolfer
13a56d65b7 Fixed unit tests for Python 3.5
Mock.assert_called_once() is only available in Python 3.6 and later
2020-11-30 10:12:03 +01:00
Philipp Wolfer
de31bf2984 Added tests for IgnoreSelectionContext 2020-11-30 09:47:31 +01:00
Philipp Wolfer
bd343177cf Use context manager for MainWindow.ignore_selection_changes 2020-11-30 09:47:31 +01:00
Philipp Wolfer
18245c38e1 PICARD-2028: Update selection only once when removing or clustering files 2020-11-30 09:47:31 +01:00
Philipp Wolfer
d7bed3a804 Update picard.pot 2020-11-30 07:54:15 +01:00
Philipp Wolfer
46d15f5e15 More readable code for error formatting in info dialog 2020-11-29 20:22:37 +01:00
Sophist
710fd2ff25 Update infodialog.py 2020-11-29 20:22:37 +01:00
Sophist
872f10d77d PICARD-2037: Make Info/Errors tab more readable
Dark red on dark grey is not readable. Switching to bright red.
2020-11-29 20:22:36 +01:00
Laurent Monin
e74dde3e17 popup -> dialog, for the sake of consistency
Co-authored-by: Wieland Hoffmann <mineo@users.noreply.github.com>
2020-11-29 20:06:24 +01:00
Sophist
b200becf1a Improve the tooltip on Album errors 2020-11-29 20:06:24 +01:00
Philipp Wolfer
b9d602fa50 PICARD-2034: Add copy and paste context menu entries in metadata view 2020-11-29 20:01:50 +01:00
Wieland Hoffmann
1386f1db03 PICARD-2036: Add MultiMetadataProxy::pop to WRITE_METHODS 2020-11-29 19:53:51 +01:00
Philipp Wolfer
d098530dcd PICARD-2031: Fix scripting docs link 2020-11-28 18:21:17 +01:00
Philipp Wolfer
6728c8c48a PICARD-2019: Fix os.path.isabs not detecting Windows share correctly
Works around the issue that os.path.isabs detects a path like \\server\share not as absolute.
This can break file naming on Windows shares and result in recursive sub folders.

See also https://bugs.python.org/issue22302
2020-11-25 15:43:54 +01:00
Philipp Wolfer
42cb625d31 PICARD-2022: Fix crash when loading network share without access rights on Windows
os.path.realpath can raise an exception if the path is not accessible.
2020-11-25 09:29:01 +01:00
Philipp Wolfer
126b99d133 PICARD-2021: Ignore SameFileError when moving files
Fixes errors when moving files from a network path to local path (or vice versa) on Windows, if both paths refer to the same file.
2020-11-24 17:05:14 +01:00
Philipp Wolfer
e856c7117a PICARD-2020: Handle multi-value musicbrainz_albumid/musicbrainz_recordingid on load
if musicbrainz_albumid or musicbrainz_recordingid contain multiple values, use the first one to load the proper album / recording for already tagged files.
2020-11-24 17:04:29 +01:00
Philipp Wolfer
56de31855b Fixed import of pywintypes
This needs to be imported after win32api, otherwise it might cause import errors
2020-11-24 08:20:13 +01:00
Laurent Monin
11097d3b08 Create WinPathTooLong exception class based on OSError
Fix tests accordingly
2020-11-21 15:10:17 +01:00
Laurent Monin
0ca72d88ce IOError -> OSError
Those are aliases in Python3
See https://www.python.org/dev/peps/pep-3151/#confusing-set-of-os-related-exceptions

>>> FileNotFoundError.mro()
[<class 'FileNotFoundError'>, <class 'OSError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>]
>>> IOError.mro()
[<class 'OSError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>]
>>> PermissionError.mro()
[<class 'PermissionError'>, <class 'OSError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>]
2020-11-21 15:10:17 +01:00
Jason E. Hale
b084589229 Generate appdata for non-Linux platforms 2020-11-21 15:09:49 +01:00
Philipp Wolfer
c04cbc8d32 PICARD-2017: Fix crash when removing NATs
When the non-album track "album" entry got removed just before a non-album track was also removed Picard would crash.
2020-11-21 07:37:06 +01:00
Philipp Wolfer
e16274a3f7 Build with Python 3.8 on Windows 2020-11-18 19:23:06 +01:00
Philipp Wolfer
5889c30b7f Build with PyInstaller 4.1 2020-11-18 19:23:06 +01:00
Philipp Wolfer
715c5c8837 Fixed changelog formatting 2020-11-16 15:30:51 +01:00
Philipp Wolfer
c87c9140f2 Added missing item to changelog 2020-11-16 09:27:45 +01:00
Philipp Wolfer
b8fc83b038 Release 2.5.2 2020-11-15 18:18:10 +01:00