Skip to content

Commit

Permalink
Human readable filesize column
Browse files Browse the repository at this point in the history
- use bytes2human to format the value
- ensure sorting happens by actual byte size
- right aligned column
  • Loading branch information
phw committed Jan 28, 2024
1 parent d889d24 commit 4bdb80d
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
3 changes: 3 additions & 0 deletions picard/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
from picard.script import get_file_naming_script
from picard.util import (
any_exception_isinstance,
bytes2human,
decode_filename,
emptydir,
encode_filename,
Expand Down Expand Up @@ -824,6 +825,8 @@ def column(self, column):
value = m[column]
if not value and not get_config().setting['clear_existing_tags']:
value = self.orig_metadata[column]
if column == '~filesize':
value = bytes2human.binary(value)
return value

def _lookup_finished(self, lookuptype, document, http, error):
Expand Down
9 changes: 8 additions & 1 deletion picard/ui/itemviews.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# Copyright (C) 2007 Robert Kaye
# Copyright (C) 2008 Gary van der Merwe
# Copyright (C) 2008 Hendrik van Antwerpen
# Copyright (C) 2008-2011, 2014-2015, 2018-2023 Philipp Wolfer
# Copyright (C) 2008-2011, 2014-2015, 2018-2024 Philipp Wolfer
# Copyright (C) 2009 Carlin Mangar
# Copyright (C) 2009 Nikolai Prokoschenko
# Copyright (C) 2011 Tim Blechmann
Expand Down Expand Up @@ -186,6 +186,7 @@ class MainPanel(QtWidgets.QSplitter):
TRACKNUMBER_COLUMN = _column_indexes['tracknumber']
DISCNUMBER_COLUMN = _column_indexes['discnumber']
LENGTH_COLUMN = _column_indexes['~length']
FILESIZE_COLUMN = _column_indexes['~filesize']
FINGERPRINT_COLUMN = _column_indexes['~fingerprint']

NAT_SORT_COLUMNS = [
Expand Down Expand Up @@ -916,6 +917,7 @@ def __init__(self, obj, sortable, *args):
self._sortkeys = {}
for column in (
MainPanel.LENGTH_COLUMN,
MainPanel.FILESIZE_COLUMN,
MainPanel.TRACKNUMBER_COLUMN,
MainPanel.DISCNUMBER_COLUMN,
):
Expand All @@ -940,6 +942,11 @@ def sortkey(self, column):

if column == MainPanel.LENGTH_COLUMN:
sortkey = self.obj.metadata.length or 0
elif column == MainPanel.FILESIZE_COLUMN:
try:
sortkey = int(self.obj.metadata['~filesize'] or self.obj.orig_metadata['~filesize'])
except ValueError:
sortkey = 0
elif column in MainPanel.NAT_SORT_COLUMNS:
sortkey = natsort.natkey(self.text(column))
else:
Expand Down

0 comments on commit 4bdb80d

Please sign in to comment.