1# -*- coding: utf-8 -*- 2# 3# Copyright (C) 2007, 2008 Andrew Resch <andrewresch@gmail.com> 4# 5# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with 6# the additional special exception to link portions of this program with the OpenSSL library. 7# See LICENSE for more details. 8# 9 10from __future__ import unicode_literals 11 12from deluge.common import fdate, fsize, fspeed, ftime 13from deluge.ui.common import TRACKER_STATUS_TRANSLATION 14 15 16def ftotal_sized(first, second): 17 return '%s (%s)' % (fsize(first, shortform=True), fsize(second, shortform=True)) 18 19 20def fratio(value): 21 return ('%.3f' % value).rstrip('0').rstrip('.') if value > 0 else '∞' 22 23 24def fpcnt(value, state, message): 25 state_i18n = _(state) 26 if state not in ('Error', 'Seeding') and value < 100: 27 percent = '{:.2f}'.format(value).rstrip('0').rstrip('.') 28 return _('{state} {percent}%').format(state=state_i18n, percent=percent) 29 elif state == 'Error': 30 return _('{state}: {err_msg}').format(state=state_i18n, err_msg=message) 31 else: 32 return state_i18n 33 34 35def fspeed_max(value, max_value=-1): 36 value = fspeed(value, shortform=True) 37 return '%s (%s %s)' % (value, max_value, _('K/s')) if max_value > -1 else value 38 39 40def fdate_or_never(value): 41 """Display value as date, eg 05/05/08 or Never""" 42 return fdate(value, date_only=True) if value > 0 else _('Never') 43 44 45def fdate_or_dash(value): 46 """Display value as date, eg 05/05/08 or dash""" 47 if value > 0.0: 48 return fdate(value) 49 else: 50 return '-' 51 52 53def ftime_or_dash(value): 54 """Display value as time, eg 2h 30m or dash""" 55 if value > 0: 56 return ftime(value) 57 elif value == 0: 58 return '-' 59 else: 60 return '∞' 61 62 63def fseed_rank_or_dash(seed_rank, seeding_time): 64 """Display value if seeding otherwise dash""" 65 66 if seeding_time > 0: 67 if seed_rank >= 1000: 68 return '%i k' % (seed_rank // 1000) 69 else: 70 return str(seed_rank) 71 else: 72 return '-' 73 74 75def fpieces_num_size(num_pieces, piece_size): 76 return '%s (%s)' % (num_pieces, fsize(piece_size, precision=0)) 77 78 79def fcount(value): 80 return '%s' % len(value) 81 82 83def ftranslate(text): 84 if text in TRACKER_STATUS_TRANSLATION: 85 text = _(text) 86 elif text: 87 for status in TRACKER_STATUS_TRANSLATION: 88 if status in text: 89 text = text.replace(status, _(status)) 90 break 91 return text 92 93 94def fyes_no(value): 95 """Return Yes or No to bool value""" 96 return _('Yes') if value else _('No') 97