From cd3800287297bdcd9fb8c90ee01a2414be3b9312 Mon Sep 17 00:00:00 2001 From: Alan Fitton Date: Mon, 2 Jan 2012 14:14:41 +0000 Subject: change units to the IEC standard (and the Ubuntu units policy) for base2 (/1024) - KiB/GiB etc. this is instead of KB/s etc which Windows and many other apps use for base2. I've tried to fix up the translations as best as I can. --- po/de.po | 42 ++--- po/es.po | 42 ++--- po/ko.po | 46 ++--- po/pl.po | 42 ++--- po/ru.po | 37 ++-- po/uk.po | 45 ++--- src/json.c | 20 +++ src/json.h | 2 + src/torrent.c | 1 + src/trg-cell-renderer-speed.c | 2 +- src/trg-client.c | 5 + src/trg-general-panel.c | 4 +- src/trg-json-widgets.c | 1 + src/trg-main-window.c | 6 +- src/trg-remote-prefs-dialog.c | 10 +- src/trg-status-bar.c | 4 +- src/trg-torrent-graph.c | 2 +- src/trg-torrent-props-dialog.c | 4 +- src/util.c | 388 +++++++++++++++++++++++++---------------- src/util.h | 37 +++- transmission-remote-gtk.pot | 166 ++++++++++-------- 21 files changed, 502 insertions(+), 404 deletions(-) diff --git a/po/de.po b/po/de.po index 96c28dc..d2cd6d2 100644 --- a/po/de.po +++ b/po/de.po @@ -577,12 +577,12 @@ msgid "Bandwidth" msgstr "Bandbreite" #: src/trg-remote-prefs-dialog.c:229 -msgid "Limit download speed (KB/s)" -msgstr "Download begrenzen (KB/s)" +msgid "Limit download speed (KiB/s)" +msgstr "Download begrenzen (KiB/s)" #: src/trg-remote-prefs-dialog.c:248 -msgid "Limit upload speed (KB/s)" -msgstr "Upload begrenzen (KB/s)" +msgid "Limit upload speed (KiB/s)" +msgstr "Upload begrenzen (KiB/s)" #: src/trg-remote-prefs-dialog.c:268 msgid "Seed ratio limit" @@ -688,8 +688,8 @@ msgid "Torrent done script" msgstr "Skript nach Beendigung eines Torrents" #: src/trg-remote-prefs-dialog.c:546 -msgid "Cache size (MB)" -msgstr "Cache Größe (MB)" +msgid "Cache size (MiB)" +msgstr "Cache Größe (MiB)" #: src/trg-remote-prefs-dialog.c:551 msgid "Rename partial files" @@ -945,38 +945,28 @@ msgstr[1] "%'u bytes" #: src/util.c:221 #, c-format -msgid "%'.1f KB" -msgstr "%'.1f KB" - -#: src/util.c:224 -#, c-format -msgid "%'.1f MB" -msgstr "%'.1f MB" +msgid "MiB" +msgstr "MiB" #: src/util.c:227 #, c-format -msgid "%'.1f GB" -msgstr "%'.1f GB" +msgid "GiB" +msgstr "GiB" #: src/util.c:239 #, c-format -msgid "%.1f KB/s" -msgstr "%.1f KB/s" +msgid "KiB/s" +msgstr "KiB/s" #: src/util.c:241 #, c-format -msgid "%.2f MB/s" -msgstr "%.2f MB/s" - -#: src/util.c:243 -#, c-format -msgid "%.1f MB/s" -msgstr "%.1f MB/s" +msgid "MiB/s" +msgstr "MiB/s" #: src/util.c:245 #, c-format -msgid "%.2f GB/s" -msgstr "%.2f GB/s" +msgid "GiB/s" +msgstr "GiB/s" #: src/util.c:279 #, c-format diff --git a/po/es.po b/po/es.po index 2f41fa1..3733ac3 100644 --- a/po/es.po +++ b/po/es.po @@ -643,12 +643,12 @@ msgid "Bandwidth" msgstr "Ancho de banda" #: src/trg-remote-prefs-dialog.c:165 -msgid "Limit download speed (KB/s)" -msgstr "Limitar velocidad de descarga (KB/s)" +msgid "Limit download speed (KiB/s)" +msgstr "Limitar velocidad de descarga (KiB/s)" #: src/trg-remote-prefs-dialog.c:173 -msgid "Limit upload speed (KB/s)" -msgstr "Limitar velocidad de subida (KB/s)" +msgid "Limit upload speed (KiB/s)" +msgstr "Limitar velocidad de subida (KiB/s)" #: src/trg-remote-prefs-dialog.c:183 msgid "Seed ratio limit" @@ -771,8 +771,8 @@ msgid "Torrent done script" msgstr "Script de finalización de torrent" #: src/trg-remote-prefs-dialog.c:440 -msgid "Cache size (MB)" -msgstr "Tamaño de caché (MB)" +msgid "Cache size (MiB)" +msgstr "Tamaño de caché (MiB)" #: src/trg-remote-prefs-dialog.c:445 msgid "Rename partial files" @@ -1177,40 +1177,30 @@ msgid_plural "%'u bytes" msgstr[0] "%'u byte" msgstr[1] "%'u bytes" -#: src/util.c:194 -#, c-format -msgid "%'.1f KB" -msgstr "%'.1f KB" - #: src/util.c:197 #, c-format -msgid "%'.1f MB" -msgstr "%'.1f MB" +msgid "MiB" +msgstr "MiB" #: src/util.c:200 #, c-format -msgid "%'.1f GB" -msgstr "%'.1f GB" +msgid "GiB" +msgstr "GiB" #: src/util.c:212 #, c-format -msgid "%.1f KB/s" -msgstr "%.1f KB/s" +msgid "KiB/s" +msgstr "KiB/s" #: src/util.c:214 #, c-format -msgid "%.2f MB/s" -msgstr "%.2f MB/s" - -#: src/util.c:216 -#, c-format -msgid "%.1f MB/s" -msgstr "%.1f MB/s" +msgid "MiB/s" +msgstr "MiB/s" #: src/util.c:218 #, c-format -msgid "%.2f GB/s" -msgstr "%.2f GB/s" +msgid "GiB/s" +msgstr "GiB/s" #: src/util.c:252 #, c-format diff --git a/po/ko.po b/po/ko.po index 1ea390b..b31b0d2 100644 --- a/po/ko.po +++ b/po/ko.po @@ -450,12 +450,12 @@ msgid "Bandwidth" msgstr "속도" #: src/trg-remote-prefs-dialog.c:221 -msgid "Limit download speed (KB/s)" -msgstr "다운로드 속도 제한 (KB/s)" +msgid "Limit download speed (KiB/s)" +msgstr "다운로드 속도 제한 (KiB/s)" #: src/trg-remote-prefs-dialog.c:240 -msgid "Limit upload speed (KB/s)" -msgstr "업로드 속도 제한 (KB/s)" +msgid "Limit upload speed (KiB/s)" +msgstr "업로드 속도 제한 (KiB/s)" #: src/trg-remote-prefs-dialog.c:257 src/trg-state-selector.c:145 #: src/trg-torrent-props-dialog.c:219 @@ -564,8 +564,8 @@ msgid "Torrent done script" msgstr "토렌트가 완료되면 스크립트 불러오기" #: src/trg-remote-prefs-dialog.c:538 -msgid "Cache size (MB)" -msgstr "캐쉬 크기 (MB)" +msgid "Cache size (MiB)" +msgstr "캐쉬 크기 (MiB)" #: src/trg-remote-prefs-dialog.c:543 msgid "Rename partial files" @@ -719,11 +719,11 @@ msgstr "토렌트 우선 순위" #: src/trg-torrent-props-dialog.c:194 msgid "Limit download speed (Kbps)" -msgstr "다운로드 속도 제한 (KB/s)" +msgstr "다운로드 속도 제한 (KiB/s)" #: src/trg-torrent-props-dialog.c:207 msgid "Limit upload speed (Kbps)" -msgstr "업로드 속도 제한 (KB/s)" +msgstr "업로드 속도 제한 (KiB/s)" #: src/trg-torrent-props-dialog.c:223 msgid "Use global settings" @@ -804,38 +804,28 @@ msgstr[1] "%'u bytes" #: src/util.c:143 #, c-format -msgid "%'.1f KB" -msgstr "%'.1f KB" - -#: src/util.c:146 -#, c-format -msgid "%'.1f MB" -msgstr "%'.1f MB" +msgid "MiB" +msgstr "MiB" #: src/util.c:149 #, c-format -msgid "%'.1f GB" -msgstr "%'.1f GB" +msgid "GiB" +msgstr "GiB" #: src/util.c:161 #, c-format -msgid "%.1f KB/s" -msgstr "%.1f KB/s" +msgid "KiB/s" +msgstr "KiB/s" #: src/util.c:163 #, c-format -msgid "%.2f MB/s" -msgstr "%.2f MB/s" - -#: src/util.c:165 -#, c-format -msgid "%.1f MB/s" -msgstr "%.1f MB/s" +msgid "MiB/s" +msgstr "MiB/s" #: src/util.c:167 #, c-format -msgid "%.2f GB/s" -msgstr "%.2f GB/s" +msgid "GiB/s" +msgstr "GiB/s" #: src/util.c:201 #, c-format diff --git a/po/pl.po b/po/pl.po index 2e58ed3..318ecd3 100644 --- a/po/pl.po +++ b/po/pl.po @@ -567,12 +567,12 @@ msgid "Bandwidth" msgstr "Pasmo" #: src/trg-remote-prefs-dialog.c:221 -msgid "Limit download speed (KB/s)" -msgstr "Ogranicz prędkość pobierania (KB/s)" +msgid "Limit download speed (KiB/s)" +msgstr "Ogranicz prędkość pobierania (KiB/s)" #: src/trg-remote-prefs-dialog.c:240 -msgid "Limit upload speed (KB/s)" -msgstr "Ogranicz prędkość wysyłania (KB/s)" +msgid "Limit upload speed (KiB/s)" +msgstr "Ogranicz prędkość wysyłania (KiB/s)" #: src/trg-remote-prefs-dialog.c:260 msgid "Seed ratio limit" @@ -678,8 +678,8 @@ msgid "Torrent done script" msgstr "Skrypt końcowy torenta" #: src/trg-remote-prefs-dialog.c:538 -msgid "Cache size (MB)" -msgstr "Rozmiar bufora (MB)" +msgid "Cache size (MiB)" +msgstr "Rozmiar bufora (MiB)" #: src/trg-remote-prefs-dialog.c:543 msgid "Rename partial files" @@ -925,40 +925,30 @@ msgstr[0] "%'u bit" msgstr[1] "%'u bity" msgstr[2] "%'u bitów" -#: src/util.c:221 -#, c-format -msgid "%'.1f KB" -msgstr "%'.1f KB" - #: src/util.c:224 #, c-format -msgid "%'.1f MB" -msgstr "%'.1f MB" +msgid "MiB" +msgstr "MiB" #: src/util.c:227 #, c-format -msgid "%'.1f GB" -msgstr "%'.1f GB" +msgid "GiB" +msgstr "GiB" #: src/util.c:239 #, c-format -msgid "%.1f KB/s" -msgstr "%.1f KB/s" +msgid "KiB/s" +msgstr "KiB/s" #: src/util.c:241 #, c-format -msgid "%.2f MB/s" -msgstr "%.2f MB/s" - -#: src/util.c:243 -#, c-format -msgid "%.1f MB/s" -msgstr "%.1f MB/s" +msgid "MiB/s" +msgstr "MiB/s" #: src/util.c:245 #, c-format -msgid "%.2f GB/s" -msgstr "%.2f GB/s" +msgid "GiB/s" +msgstr "GiB/s" #: src/util.c:279 #, c-format diff --git a/po/ru.po b/po/ru.po index c692861..7751924 100644 --- a/po/ru.po +++ b/po/ru.po @@ -524,11 +524,11 @@ msgid "Bandwidth" msgstr "Скорость" #: src/trg-remote-prefs-dialog.c:221 -msgid "Limit download speed (KB/s)" +msgid "Limit download speed (KiB/s)" msgstr "Ограничить скорость загрузки (КБ/с)" #: src/trg-remote-prefs-dialog.c:240 -msgid "Limit upload speed (KB/s)" +msgid "Limit upload speed (KiB/s)" msgstr "Ограничить скорость отдачи (КБ/с)" #: src/trg-remote-prefs-dialog.c:260 @@ -638,7 +638,7 @@ msgid "Torrent done script" msgstr "Скрипт, запускаемый после завершения торрента" #: src/trg-remote-prefs-dialog.c:538 -msgid "Cache size (MB)" +msgid "Cache size (MiB)" msgstr "Размер кэша (МБ)" #: src/trg-remote-prefs-dialog.c:543 @@ -873,38 +873,33 @@ msgstr[2] "%'u байт" #: src/util.c:173 #, c-format -msgid "%'.1f KB" -msgstr "%'.1f КБ" - -#: src/util.c:176 -#, c-format -msgid "%'.1f MB" -msgstr "%'.1f МБ" +msgid "MiB" +msgstr "МБ" #: src/util.c:179 #, c-format -msgid "%'.1f GB" -msgstr "%'.1f ГБ" +msgid "GiB" +msgstr "ГБ" #: src/util.c:191 #, c-format -msgid "%.1f KB/s" -msgstr "%.1f КБ/с" +msgid "KiB/s" +msgstr "КБ/с" -#: src/util.c:193 +#: src/util.c:191 #, c-format -msgid "%.2f MB/s" -msgstr "%.2f МБ/с" +msgid "KiB" +msgstr "КБ" #: src/util.c:195 #, c-format -msgid "%.1f MB/s" -msgstr "%.1f МБ/с" +msgid "MiB/s" +msgstr "МБ/с" #: src/util.c:197 #, c-format -msgid "%.2f GB/s" -msgstr "%.2f Гб/с" +msgid "GiB/s" +msgstr "Гб/с" #: src/util.c:231 #, c-format diff --git a/po/uk.po b/po/uk.po index 9c705fa..a11b14a 100644 --- a/po/uk.po +++ b/po/uk.po @@ -533,12 +533,12 @@ msgid "Bandwidth" msgstr "Швидкість" #: src/trg-remote-prefs-dialog.c:229 -msgid "Limit download speed (KB/s)" -msgstr "Обмежити швидкість завантаження (KB/s)" +msgid "Limit download speed (KiB/s)" +msgstr "Обмежити швидкість завантаження (KiB/s)" #: src/trg-remote-prefs-dialog.c:248 -msgid "Limit upload speed (KB/s)" -msgstr "Обмежити швидкість віддачі (KB/s)" +msgid "Limit upload speed (KiB/s)" +msgstr "Обмежити швидкість віддачі (KiB/s)" #: src/trg-remote-prefs-dialog.c:268 msgid "Seed ratio limit" @@ -642,8 +642,8 @@ msgid "Torrent done script" msgstr "Скріпт, який виконується по закінченні завантаження" #: src/trg-remote-prefs-dialog.c:546 -msgid "Cache size (MB)" -msgstr "Розмір кеша (MB)" +msgid "Cache size (MiB)" +msgstr "Розмір кеша (MiB)" #: src/trg-remote-prefs-dialog.c:551 msgid "Rename partial files" @@ -890,40 +890,33 @@ msgid_plural "%'u bytes" msgstr[0] "%'u байт" msgstr[1] "%'u байтів" -#: src/util.c:221 -#, c-format -msgid "%'.1f KB" -msgstr "%'.1f КБ" - #: src/util.c:224 #, c-format -msgid "%'.1f MB" -msgstr "%'.1f МБ" +msgid "MiB" +msgstr "МБ" #: src/util.c:227 #, c-format -msgid "%'.1f GB" -msgstr "%'.1f ГБ" +msgid "GiB" +msgstr "ГБ" + +msgid "KiB" +msgstr "КБ" #: src/util.c:239 #, c-format -msgid "%.1f KB/s" -msgstr "%.1f КБ/c" +msgid "KiB/s" +msgstr "КБ/c" #: src/util.c:241 #, c-format -msgid "%.2f MB/s" -msgstr "%.2f Мб/с" - -#: src/util.c:243 -#, c-format -msgid "%.1f MB/s" -msgstr "%.1f МБ/с" +msgid "MiB/s" +msgstr "Мб/с" #: src/util.c:245 #, c-format -msgid "%.2f GB/s" -msgstr "%.2f ГБ/с" +msgid "GiB/s" +msgstr "ГБ/с" #: src/util.c:279 #, c-format diff --git a/src/json.c b/src/json.c index 0ffc2fa..38bcf76 100644 --- a/src/json.c +++ b/src/json.c @@ -92,3 +92,23 @@ JsonObject *get_arguments(JsonObject * req) { return json_object_get_object_member(req, PARAM_ARGUMENTS); } + +gdouble json_double_to_progress(JsonNode * n) +{ + return json_node_really_get_double(n) * 100.0; +} + +gdouble json_node_really_get_double(JsonNode * node) +{ + GValue a = { 0 }; + + json_node_get_value(node, &a); + switch (G_VALUE_TYPE(&a)) { + case G_TYPE_INT64: + return (gdouble) g_value_get_int64(&a); + case G_TYPE_DOUBLE: + return g_value_get_double(&a); + default: + return 0.0; + } +} diff --git a/src/json.h b/src/json.h index 2c5dace..c321de9 100644 --- a/src/json.h +++ b/src/json.h @@ -29,5 +29,7 @@ gchar *trg_serialize(JsonNode * req); JsonObject *trg_deserialize(trg_response * response, GError ** error); JsonObject *get_arguments(JsonObject * req); JsonObject *node_get_arguments(JsonNode * req); +gdouble json_double_to_progress(JsonNode * n); +gdouble json_node_really_get_double(JsonNode * node); #endif /* JSON_H_ */ diff --git a/src/torrent.c b/src/torrent.c index ab123c3..45e77c8 100644 --- a/src/torrent.c +++ b/src/torrent.c @@ -23,6 +23,7 @@ #include #include "trg-client.h" +#include "json.h" #include "torrent.h" #include "protocol-constants.h" #include "util.h" diff --git a/src/trg-cell-renderer-speed.c b/src/trg-cell-renderer-speed.c index 9f87561..ed921ea 100644 --- a/src/trg-cell-renderer-speed.c +++ b/src/trg-cell-renderer-speed.c @@ -66,7 +66,7 @@ trg_cell_renderer_speed_set_property(GObject * object, guint property_id, if (priv->speed_value > 0) { char speedString[32]; trg_strlspeed(speedString, - priv->speed_value / KILOBYTE_FACTOR); + priv->speed_value / disk_K); g_object_set(object, "text", speedString, NULL); } else { g_object_set(object, "text", "", NULL); diff --git a/src/trg-client.c b/src/trg-client.c index 5304a81..ff5eb2a 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -23,6 +23,7 @@ #include #include #include +#include #ifdef HAVE_LIBPROXY #include @@ -156,6 +157,10 @@ TrgClient *trg_client_new(void) priv->pool = g_thread_pool_new((GFunc) dispatch_async_threadfunc, tc, DISPATCH_POOL_SIZE, TRUE, NULL); + tr_formatter_size_init( disk_K, _(disk_K_str), _(disk_M_str), _(disk_G_str), _(disk_T_str) ); + tr_formatter_speed_init( speed_K, _(speed_K_str), _(speed_M_str), _(speed_G_str), _(speed_T_str) ); + + return tc; } diff --git a/src/trg-general-panel.c b/src/trg-general-panel.c index ac5e9ba..6d88c3f 100644 --- a/src/trg-general-panel.c +++ b/src/trg-general-panel.c @@ -126,10 +126,10 @@ void trg_general_panel_update(TrgGeneralPanel * panel, JsonObject * t, trg_strlsize(buf, torrent_get_size(t)); gtk_label_set_text(GTK_LABEL(priv->gen_size_label), buf); - trg_strlspeed(buf, torrent_get_rate_down(t) / KILOBYTE_FACTOR); + trg_strlspeed(buf, torrent_get_rate_down(t) / disk_K); gtk_label_set_text(GTK_LABEL(priv->gen_down_rate_label), buf); - trg_strlspeed(buf, torrent_get_rate_up(t) / KILOBYTE_FACTOR); + trg_strlspeed(buf, torrent_get_rate_up(t) / disk_K); gtk_label_set_text(GTK_LABEL(priv->gen_up_rate_label), buf); uploaded = torrent_get_uploaded(t); diff --git a/src/trg-json-widgets.c b/src/trg-json-widgets.c index abdaf27..1814769 100644 --- a/src/trg-json-widgets.c +++ b/src/trg-json-widgets.c @@ -21,6 +21,7 @@ #include #include "trg-json-widgets.h" +#include "json.h" #include "util.h" /* Functions for creating widgets that load/save their state from/to a JSON diff --git a/src/trg-main-window.c b/src/trg-main-window.c index ee49419..8ad7f3a 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -1745,14 +1745,10 @@ static GtkWidget *limit_item_new(TrgMainWindow * win, GtkWidget * menu, GtkWidget *item; gboolean active = limit < 0 ? FALSE : (currentLimit == (gint64) limit); - if (limit >= 1000) - g_snprintf(speed, sizeof(speed), "%.2f MB/s", limit / 1024); - else - g_snprintf(speed, sizeof(speed), "%.0f KB/s", limit); + trg_strlspeed(speed, limit); item = gtk_check_menu_item_new_with_label(speed); - /* Yeah, I know it's unsafe to cast from a float to an int, but its safe here */ g_object_set_data(G_OBJECT(item), "limit", GINT_TO_POINTER((gint) limit)); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), active); diff --git a/src/trg-remote-prefs-dialog.c b/src/trg-remote-prefs-dialog.c index c698046..1511ecc 100644 --- a/src/trg-remote-prefs-dialog.c +++ b/src/trg-remote-prefs-dialog.c @@ -262,14 +262,14 @@ static GtkWidget *trg_rprefs_bandwidthPage(TrgRemotePrefsDialog * win, hig_workarea_add_section_title(t, &row, _("Bandwidth limits")); tb = trg_json_widget_check_new(&priv->widgets, json, - SGET_SPEED_LIMIT_DOWN_ENABLED, _("Down Limit (KB/s)"), + SGET_SPEED_LIMIT_DOWN_ENABLED, _("Down Limit (KiB/s)"), NULL); w = trg_json_widget_spin_new(&priv->widgets, json, SGET_SPEED_LIMIT_DOWN, tb, 0, INT_MAX, 5); hig_workarea_add_row_w(t, &row, tb, w, NULL); tb = trg_json_widget_check_new(&priv->widgets, json, - SGET_SPEED_LIMIT_UP_ENABLED, _("Up Limit (KB/s)"), NULL); + SGET_SPEED_LIMIT_UP_ENABLED, _("Up Limit (KiB/s)"), NULL); w = trg_json_widget_spin_new(&priv->widgets, json, SGET_SPEED_LIMIT_UP, tb, 0, INT_MAX, 5); hig_workarea_add_row_w(t, &row, tb, w, NULL); @@ -288,11 +288,11 @@ static GtkWidget *trg_rprefs_bandwidthPage(TrgRemotePrefsDialog * win, w = trg_rprefs_alt_speed_spin_new(&priv->widgets, json, SGET_ALT_SPEED_DOWN, priv->alt_check, tb); - hig_workarea_add_row(t, &row, _("Alternate down limit (KB/s)"), w, w); + hig_workarea_add_row(t, &row, _("Alternate down limit (KiB/s)"), w, w); w = trg_rprefs_alt_speed_spin_new(&priv->widgets, json, SGET_ALT_SPEED_UP, priv->alt_check, tb); - hig_workarea_add_row(t, &row, _("Alternate up limit (KB/s)"), w, w); + hig_workarea_add_row(t, &row, _("Alternate up limit (KiB/s)"), w, w); return t; } @@ -542,7 +542,7 @@ static GtkWidget *trg_rprefs_generalPage(TrgRemotePrefsDialog * win, if (cache_size_mb >= 0) { w = trg_json_widget_spin_new(&priv->widgets, s, SGET_CACHE_SIZE_MB, NULL, 0, INT_MAX, 1); - hig_workarea_add_row(t, &row, _("Cache size (MB)"), w, w); + hig_workarea_add_row(t, &row, _("Cache size (MiB)"), w, w); } hig_workarea_add_section_title(t, &row, _("Behavior")); diff --git a/src/trg-status-bar.c b/src/trg-status-bar.c index dc9d4e8..91699cb 100644 --- a/src/trg-status-bar.c +++ b/src/trg-status-bar.c @@ -181,8 +181,8 @@ void trg_status_bar_update(TrgStatusBar * sb, session, SGET_SPEED_LIMIT_UP) : -1; - trg_strlspeed(downRateTotalString, stats->downRateTotal / KILOBYTE_FACTOR); - trg_strlspeed(upRateTotalString, stats->upRateTotal / KILOBYTE_FACTOR); + trg_strlspeed(downRateTotalString, stats->downRateTotal / disk_K); + trg_strlspeed(upRateTotalString, stats->upRateTotal / disk_K); if (uplimitraw >= 0) { gchar uplimitstring[32]; diff --git a/src/trg-torrent-graph.c b/src/trg-torrent-graph.c index 1b22375..94c4ecc 100644 --- a/src/trg-torrent-graph.c +++ b/src/trg-torrent-graph.c @@ -400,7 +400,7 @@ static void trg_torrent_graph_update_net(TrgTorrentGraph * g) fp[0] = 1.0f * priv->out / priv->max; fp[1] = 1.0f * priv->in / priv->max; - trg_strlspeed(speed, (gint64) (priv->out / KILOBYTE_FACTOR)); + trg_strlspeed(speed, (gint64) (priv->out / disk_K)); labelMarkup = g_markup_printf_escaped("%s: %s", diff --git a/src/trg-torrent-props-dialog.c b/src/trg-torrent-props-dialog.c index 1ab2f8a..399405b 100644 --- a/src/trg-torrent-props-dialog.c +++ b/src/trg-torrent-props-dialog.c @@ -195,7 +195,7 @@ static GtkWidget *trg_props_limitsPage(TrgTorrentPropsDialog * win, tb = trg_json_widget_check_new(&priv->widgets, json, FIELD_DOWNLOAD_LIMITED, - _("Limit download speed (KB/s)"), NULL); + _("Limit download speed (KiB/s)"), NULL); w = trg_json_widget_spin_new(&priv->widgets, json, FIELD_DOWNLOAD_LIMIT, tb, 0, INT_MAX, 1); @@ -203,7 +203,7 @@ static GtkWidget *trg_props_limitsPage(TrgTorrentPropsDialog * win, tb = trg_json_widget_check_new(&priv->widgets, json, FIELD_UPLOAD_LIMITED, - _("Limit upload speed (KB/s)"), NULL); + _("Limit upload speed (KiB/s)"), NULL); w = trg_json_widget_spin_new(&priv->widgets, json, FIELD_UPLOAD_LIMIT, tb, 0, INT_MAX, 1); diff --git a/src/util.c b/src/util.c index b103cff..ef03482 100644 --- a/src/util.c +++ b/src/util.c @@ -17,7 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -/* Most of these functions are taken from the Transmission Project. */ +/* Many of these functions are taken from the Transmission Project. */ #include #include @@ -33,6 +33,138 @@ #include "util.h" +/*** +**** The code for formatting size and speeds, taken from Transmission. +***/ + +const int disk_K = 1024; +const char * disk_K_str = N_("KiB"); +const char * disk_M_str = N_("MiB"); +const char * disk_G_str = N_("GiB"); +const char * disk_T_str = N_("TiB"); + +const int speed_K = 1024; +const char * speed_K_str = N_("KiB/s"); +const char * speed_M_str = N_("MiB/s"); +const char * speed_G_str = N_("GiB/s"); +const char * speed_T_str = N_("TiB/s"); + +struct formatter_unit +{ + char * name; + gint64 value; +}; + +struct formatter_units +{ + struct formatter_unit units[4]; +}; + +enum { TR_FMT_KB, TR_FMT_MB, TR_FMT_GB, TR_FMT_TB }; + +static void +formatter_init( struct formatter_units * units, + unsigned int kilo, + const char * kb, const char * mb, + const char * gb, const char * tb ) +{ + guint64 value = kilo; + units->units[TR_FMT_KB].name = g_strdup( kb ); + units->units[TR_FMT_KB].value = value; + + value *= kilo; + units->units[TR_FMT_MB].name = g_strdup( mb ); + units->units[TR_FMT_MB].value = value; + + value *= kilo; + units->units[TR_FMT_GB].name = g_strdup( gb ); + units->units[TR_FMT_GB].value = value; + + value *= kilo; + units->units[TR_FMT_TB].name = g_strdup( tb ); + units->units[TR_FMT_TB].value = value; +} + +static char* +formatter_get_size_str( const struct formatter_units * u, + char * buf, gint64 bytes, size_t buflen ) +{ + int precision; + double value; + const char * units; + const struct formatter_unit * unit; + + if( bytes < u->units[1].value ) unit = &u->units[0]; + else if( bytes < u->units[2].value ) unit = &u->units[1]; + else if( bytes < u->units[3].value ) unit = &u->units[2]; + else unit = &u->units[3]; + + value = (double)bytes / unit->value; + units = unit->name; + if( unit->value == 1 ) + precision = 0; + else if( value < 100 ) + precision = 2; + else + precision = 1; + tr_snprintf( buf, buflen, "%.*f %s", precision, value, units ); + return buf; +} + +static struct formatter_units size_units; + +void +tr_formatter_size_init( unsigned int kilo, + const char * kb, const char * mb, + const char * gb, const char * tb ) +{ + formatter_init( &size_units, kilo, kb, mb, gb, tb ); +} + +char* +tr_formatter_size_B( char * buf, gint64 bytes, size_t buflen ) +{ + return formatter_get_size_str( &size_units, buf, bytes, buflen ); +} + +static struct formatter_units speed_units; + +unsigned int tr_speed_K = 0u; + +void +tr_formatter_speed_init( unsigned int kilo, + const char * kb, const char * mb, + const char * gb, const char * tb ) +{ + tr_speed_K = kilo; + formatter_init( &speed_units, kilo, kb, mb, gb, tb ); +} + +char* +tr_formatter_speed_KBps( char * buf, double KBps, size_t buflen ) +{ + const double K = speed_units.units[TR_FMT_KB].value; + double speed = KBps; + + if( speed <= 999.95 ) /* 0.0 KB to 999.9 KB */ + tr_snprintf( buf, buflen, "%d %s", (int)speed, speed_units.units[TR_FMT_KB].name ); + else { + speed /= K; + if( speed <= 99.995 ) /* 0.98 MB to 99.99 MB */ + tr_snprintf( buf, buflen, "%.2f %s", speed, speed_units.units[TR_FMT_MB].name ); + else if (speed <= 999.95) /* 100.0 MB to 999.9 MB */ + tr_snprintf( buf, buflen, "%.1f %s", speed, speed_units.units[TR_FMT_MB].name ); + else { + speed /= K; + tr_snprintf( buf, buflen, "%.1f %s", speed, speed_units.units[TR_FMT_GB].name ); + } + } + + return buf; +} + +/* URL checkers. */ + gboolean is_magnet(gchar * string) { return g_str_has_prefix(string, "magnet:"); @@ -44,22 +176,40 @@ gboolean is_url(gchar * string) return g_regex_match_simple("^http[s]?://", string, 0, 0); } -void add_file_id_to_array(JsonObject * args, gchar * key, gint index) +/* + * Glib-ish Utility functions. + */ + +gchar *trg_base64encode(const gchar * filename) { - JsonArray *array; - if (json_object_has_member(args, key)) { - array = json_object_get_array_member(args, key); + GError *error = NULL; + GMappedFile *mf = g_mapped_file_new(filename, FALSE, &error); + gchar *b64out = NULL; + + if (error) { + g_error("%s", error->message); + g_error_free(error); } else { - array = json_array_new(); - json_object_set_array_member(args, key, array); + b64out = + g_base64_encode((guchar *) g_mapped_file_get_contents(mf), + g_mapped_file_get_length(mf)); } - json_array_add_int_element(array, index); + + g_mapped_file_unref(mf); + + return b64out; } -void g_str_slist_free(GSList * list) +gchar *trg_gregex_get_first(GRegex * rx, const gchar * src) { - g_slist_foreach(list, (GFunc) g_free, NULL); - g_slist_free(list); + GMatchInfo *mi = NULL; + gchar *dst = NULL; + g_regex_match(rx, src, 0, &mi); + if (mi) { + dst = g_match_info_fetch(mi, 1); + g_match_info_free(mi); + } + return dst; } GRegex *trg_uri_host_regex_new(void) @@ -70,6 +220,76 @@ GRegex *trg_uri_host_regex_new(void) G_REGEX_OPTIMIZE, 0, NULL); } +void g_str_slist_free(GSList * list) +{ + g_slist_foreach(list, (GFunc) g_free, NULL); + g_slist_free(list); +} + +void rm_trailing_slashes(gchar * str) +{ + if (!str) + return; + + int i, len; + if ((len = strlen(str)) < 1) + return; + + for (i = strlen(str) - 1; str[i]; i--) { + if (str[i] == '/') + str[i] = '\0'; + else + return; + } +} + +/* Working with torrents.. */ + +void add_file_id_to_array(JsonObject * args, gchar * key, gint index) +{ + JsonArray *array; + if (json_object_has_member(args, key)) { + array = json_object_get_array_member(args, key); + } else { + array = json_array_new(); + json_object_set_array_member(args, key, array); + } + json_array_add_int_element(array, index); +} + +/* GTK utilities. */ + +GtkWidget *gtr_combo_box_new_enum(const char *text_1, ...) +{ + GtkWidget *w; + GtkCellRenderer *r; + GtkListStore *store; + va_list vl; + const char *text; + va_start(vl, text_1); + + store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING); + + text = text_1; + if (text != NULL) + do { + const int val = va_arg(vl, int); + gtk_list_store_insert_with_values(store, NULL, INT_MAX, 0, val, + 1, text, -1); + text = va_arg(vl, const char *); + } + while (text != NULL); + + w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); + r = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), r, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, NULL); + + /* cleanup */ + g_object_unref(store); + return w; +} + GtkWidget *my_scrolledwin_new(GtkWidget * child) { GtkWidget *scrolled_win = gtk_scrolled_window_new(NULL, NULL); @@ -80,16 +300,15 @@ GtkWidget *my_scrolledwin_new(GtkWidget * child) return scrolled_win; } -gchar *trg_gregex_get_first(GRegex * rx, const gchar * src) +/* gtk_widget_set_sensitive() was introduced in 2.18, we can have a minimum of + * 2.16 otherwise. */ + +void trg_widget_set_visible(GtkWidget * w, gboolean visible) { - GMatchInfo *mi = NULL; - gchar *dst = NULL; - g_regex_match(rx, src, 0, &mi); - if (mi) { - dst = g_match_info_fetch(mi, 1); - g_match_info_free(mi); - } - return dst; + if (visible) + gtk_widget_show(w); + else + gtk_widget_hide(w); } void trg_error_dialog(GtkWindow * parent, trg_response * response) @@ -125,6 +344,8 @@ gchar *make_error_message(JsonObject * response, int status) } } +/* Formatters and Transmission basic utility functions.. */ + char *tr_strlpercent(char *buf, double x, size_t buflen) { return tr_strpercent(buf, x, buflen); @@ -172,34 +393,6 @@ char *tr_strlratio(char *buf, double ratio, size_t buflen) return tr_strratio(buf, buflen, ratio, "\xE2\x88\x9E"); } -char *tr_strlsize(char *buf, guint64 size, size_t buflen) -{ - if (!size) - g_strlcpy(buf, _("None"), buflen); - else { - char *tmp = g_format_size_for_display(size); - g_strlcpy(buf, tmp, buflen); - g_free(tmp); - } - return buf; -} - -char *tr_strlspeed(char *buf, double kb_sec, size_t buflen) -{ - const double speed = kb_sec; - - if (speed < 1000.0) /* 0.0 KB to 999.9 KB */ - g_snprintf(buf, buflen, _("%.1f KB/s"), speed); - else if (speed < 102400.0) /* 0.98 MB to 99.99 MB */ - g_snprintf(buf, buflen, _("%.2f MB/s"), (speed / KILOBYTE_FACTOR)); - else if (speed < 1024000.0) /* 100.0 MB to 999.9 MB */ - g_snprintf(buf, buflen, _("%.1f MB/s"), (speed / MEGABYTE_FACTOR)); - else /* insane speeds */ - g_snprintf(buf, buflen, _("%.2f GB/s"), (speed / GIGABYTE_FACTOR)); - - return buf; -} - char *tr_strltime_short(char *buf, long seconds, size_t buflen) { int hours, minutes; @@ -337,102 +530,3 @@ evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap) return r; #endif } - -void rm_trailing_slashes(gchar * str) -{ - if (!str) - return; - - int i, len; - if ((len = strlen(str)) < 1) - return; - - for (i = strlen(str) - 1; str[i]; i--) { - if (str[i] == '/') - str[i] = '\0'; - else - return; - } -} - -/* gtk_widget_set_sensitive() was introduced in 2.18, we can have a minimum of - * 2.16 otherwise. */ - -void trg_widget_set_visible(GtkWidget * w, gboolean visible) -{ - if (visible) - gtk_widget_show(w); - else - gtk_widget_hide(w); -} - -gdouble json_double_to_progress(JsonNode * n) -{ - return json_node_really_get_double(n) * 100.0; -} - -gdouble json_node_really_get_double(JsonNode * node) -{ - GValue a = { 0 }; - - json_node_get_value(node, &a); - switch (G_VALUE_TYPE(&a)) { - case G_TYPE_INT64: - return (gdouble) g_value_get_int64(&a); - case G_TYPE_DOUBLE: - return g_value_get_double(&a); - default: - return 0.0; - } -} - -gchar *trg_base64encode(const gchar * filename) -{ - GError *error = NULL; - GMappedFile *mf = g_mapped_file_new(filename, FALSE, &error); - gchar *b64out = NULL; - - if (error) { - g_error("%s", error->message); - g_error_free(error); - } else { - b64out = - g_base64_encode((guchar *) g_mapped_file_get_contents(mf), - g_mapped_file_get_length(mf)); - } - - g_mapped_file_unref(mf); - - return b64out; -} - -GtkWidget *gtr_combo_box_new_enum(const char *text_1, ...) -{ - GtkWidget *w; - GtkCellRenderer *r; - GtkListStore *store; - va_list vl; - const char *text; - va_start(vl, text_1); - - store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING); - - text = text_1; - if (text != NULL) - do { - const int val = va_arg(vl, int); - gtk_list_store_insert_with_values(store, NULL, INT_MAX, 0, val, - 1, text, -1); - text = va_arg(vl, const char *); - } - while (text != NULL); - - w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); - r = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), r, TRUE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, NULL); - - /* cleanup */ - g_object_unref(store); - return w; -} diff --git a/src/util.h b/src/util.h index 6dd6e23..990cafa 100644 --- a/src/util.h +++ b/src/util.h @@ -28,16 +28,25 @@ #include "trg-client.h" -#define trg_strlspeed(a, b) tr_strlspeed(a, b, sizeof(a)) +#define trg_strlspeed(a, b) tr_formatter_speed_KBps(a, b, sizeof(a)) #define trg_strlpercent(a, b) tr_strlpercent(a, b, sizeof(a)) -#define trg_strlsize(a, b) tr_strlsize(a, b, sizeof(a)) +#define trg_strlsize(a, b) tr_formatter_size_B(a, b, sizeof(a)) #define trg_strlratio(a, b) tr_strlratio(a, b, sizeof(a)) #define TR_RATIO_NA -1 #define TR_RATIO_INF -2 -#define KILOBYTE_FACTOR 1024.0 -#define MEGABYTE_FACTOR ( 1024.0 * 1024.0 ) -#define GIGABYTE_FACTOR ( 1024.0 * 1024.0 * 1024.0 ) + +extern const int disk_K; +extern const char * disk_K_str; +extern const char * disk_M_str; +extern const char * disk_G_str; +extern const char * disk_T_str; + +extern const int speed_K; +extern const char * speed_K_str; +extern const char * speed_M_str; +extern const char * speed_G_str; +extern const char * speed_T_str; void add_file_id_to_array(JsonObject * args, gchar * key, gint index); void g_str_slist_free(GSList * list); @@ -46,6 +55,20 @@ gchar *trg_gregex_get_first(GRegex * rx, const gchar * uri); gchar *make_error_message(JsonObject * response, int status); void trg_error_dialog(GtkWindow * parent, trg_response * response); +void +tr_formatter_size_init( unsigned int kilo, + const char * kb, const char * mb, + const char * gb, const char * tb ); +char* +tr_formatter_size_B( char * buf, gint64 bytes, size_t buflen ); + +void +tr_formatter_speed_init( unsigned int kilo, + const char * kb, const char * mb, + const char * gb, const char * tb ); +char* +tr_formatter_speed_KBps( char * buf, double KBps, size_t buflen ); + char *tr_strltime_long(char *buf, long seconds, size_t buflen); char *tr_strltime_short(char *buf, long seconds, size_t buflen); char *tr_strpercent(char *buf, double x, size_t buflen); @@ -53,8 +76,6 @@ char *tr_strlpercent(char *buf, double x, size_t buflen); char *tr_strratio(char *buf, size_t buflen, double ratio, const char *infinity); char *tr_strlratio(char *buf, double ratio, size_t buflen); -char *tr_strlspeed(char *buf, double kb_sec, size_t buflen); -char *tr_strlsize(char *buf, guint64 size, size_t buflen); char *gtr_localtime(time_t time); char *gtr_localtime2(char *buf, time_t time, size_t buflen); int tr_snprintf(char *buf, size_t buflen, const char *fmt, ...); @@ -65,12 +86,10 @@ int evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap); void rm_trailing_slashes(gchar * str); void trg_widget_set_visible(GtkWidget * w, gboolean visible); -gdouble json_double_to_progress(JsonNode * n); gchar *trg_base64encode(const gchar * filename); GtkWidget *my_scrolledwin_new(GtkWidget * child); gboolean is_url(gchar * string); gboolean is_magnet(gchar * string); -gdouble json_node_really_get_double(JsonNode * node); GtkWidget *gtr_combo_box_new_enum(const char *text_1, ...); #endif /* UTIL_H_ */ diff --git a/transmission-remote-gtk.pot b/transmission-remote-gtk.pot index df4e663..f57fc29 100644 --- a/transmission-remote-gtk.pot +++ b/transmission-remote-gtk.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-01-02 00:01+0000\n" +"POT-Creation-Date: 2012-01-02 13:36+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,36 +18,36 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/torrent.c:320 src/torrent.c:340 src/trg-state-selector.c:582 +#: src/torrent.c:321 src/torrent.c:341 src/trg-state-selector.c:584 msgid "Downloading" msgstr "" -#: src/torrent.c:322 +#: src/torrent.c:323 msgid "Queued download" msgstr "" -#: src/torrent.c:324 src/torrent.c:348 +#: src/torrent.c:325 src/torrent.c:349 msgid "Waiting To Check" msgstr "" -#: src/torrent.c:326 src/torrent.c:346 src/trg-state-selector.c:601 +#: src/torrent.c:327 src/torrent.c:347 src/trg-state-selector.c:603 msgid "Checking" msgstr "" -#: src/torrent.c:328 +#: src/torrent.c:329 msgid "Queued seed" msgstr "" -#: src/torrent.c:330 src/torrent.c:344 src/trg-remote-prefs-dialog.c:308 -#: src/trg-state-selector.c:587 src/trg-torrent-props-dialog.c:212 +#: src/torrent.c:331 src/torrent.c:345 src/trg-remote-prefs-dialog.c:308 +#: src/trg-state-selector.c:589 src/trg-torrent-props-dialog.c:212 msgid "Seeding" msgstr "" -#: src/torrent.c:332 src/torrent.c:342 src/trg-state-selector.c:592 +#: src/torrent.c:333 src/torrent.c:343 src/trg-state-selector.c:594 msgid "Paused" msgstr "" -#: src/torrent.c:353 +#: src/torrent.c:354 msgid "Unknown" msgstr "" @@ -130,9 +130,9 @@ msgid "(Public)" msgstr "" #: src/trg-general-panel.c:180 src/trg-main-window.c:987 -#: src/trg-main-window.c:1336 src/trg-main-window.c:1879 -#: src/trg-state-selector.c:475 src/trg-torrent-add-url-dialog.c:67 -#: src/util.c:103 +#: src/trg-main-window.c:1336 src/trg-main-window.c:1875 +#: src/trg-state-selector.c:477 src/trg-torrent-add-url-dialog.c:67 +#: src/util.c:322 msgid "Error" msgstr "" @@ -266,114 +266,114 @@ msgstr "" msgid "Request %d/%d failed: %s" msgstr "" -#: src/trg-main-window.c:1803 +#: src/trg-main-window.c:1799 msgid "No Limit" msgstr "" -#: src/trg-main-window.c:1899 src/trg-menu-bar.c:516 src/trg-toolbar.c:238 +#: src/trg-main-window.c:1895 src/trg-menu-bar.c:516 src/trg-toolbar.c:238 msgid "Properties" msgstr "" -#: src/trg-main-window.c:1902 src/trg-toolbar.c:231 +#: src/trg-main-window.c:1898 src/trg-toolbar.c:231 msgid "Resume" msgstr "" -#: src/trg-main-window.c:1905 src/trg-toolbar.c:234 +#: src/trg-main-window.c:1901 src/trg-toolbar.c:234 msgid "Pause" msgstr "" -#: src/trg-main-window.c:1908 +#: src/trg-main-window.c:1904 msgid "Verify" msgstr "" -#: src/trg-main-window.c:1911 +#: src/trg-main-window.c:1907 msgid "Re-announce" msgstr "" -#: src/trg-main-window.c:1914 src/trg-torrent-move-dialog.c:121 +#: src/trg-main-window.c:1910 src/trg-torrent-move-dialog.c:121 #: src/trg-torrent-move-dialog.c:128 msgid "Move" msgstr "" -#: src/trg-main-window.c:1917 src/trg-menu-bar.c:534 src/trg-toolbar.c:242 +#: src/trg-main-window.c:1913 src/trg-menu-bar.c:534 src/trg-toolbar.c:242 msgid "Remove" msgstr "" -#: src/trg-main-window.c:1920 +#: src/trg-main-window.c:1916 msgid "Remove & Delete" msgstr "" -#: src/trg-main-window.c:1945 src/trg-preferences-dialog.c:871 +#: src/trg-main-window.c:1941 src/trg-preferences-dialog.c:871 msgid "Actions" msgstr "" -#: src/trg-main-window.c:1974 src/trg-menu-bar.c:546 +#: src/trg-main-window.c:1970 src/trg-menu-bar.c:546 msgid "Start Now" msgstr "" -#: src/trg-main-window.c:1977 src/trg-menu-bar.c:551 +#: src/trg-main-window.c:1973 src/trg-menu-bar.c:551 msgid "Move Up Queue" msgstr "" -#: src/trg-main-window.c:1980 src/trg-menu-bar.c:556 +#: src/trg-main-window.c:1976 src/trg-menu-bar.c:556 msgid "Move Down Queue" msgstr "" -#: src/trg-main-window.c:1983 src/trg-menu-bar.c:561 +#: src/trg-main-window.c:1979 src/trg-menu-bar.c:561 msgid "Bottom Of Queue" msgstr "" -#: src/trg-main-window.c:1986 src/trg-menu-bar.c:565 +#: src/trg-main-window.c:1982 src/trg-menu-bar.c:565 msgid "Top Of Queue" msgstr "" -#: src/trg-main-window.c:1995 src/trg-main-window.c:2076 +#: src/trg-main-window.c:1991 src/trg-main-window.c:2072 msgid "Down Limit" msgstr "" -#: src/trg-main-window.c:2000 src/trg-main-window.c:2080 +#: src/trg-main-window.c:1996 src/trg-main-window.c:2076 msgid "Up Limit" msgstr "" -#: src/trg-main-window.c:2027 src/trg-main-window.c:2034 +#: src/trg-main-window.c:2023 src/trg-main-window.c:2030 #: src/trg-remote-prefs-dialog.c:427 msgid "Updating..." msgstr "" -#: src/trg-main-window.c:2048 src/trg-menu-bar.c:483 src/trg-toolbar.c:208 +#: src/trg-main-window.c:2044 src/trg-menu-bar.c:483 src/trg-toolbar.c:208 msgid "Connect" msgstr "" -#: src/trg-main-window.c:2055 src/trg-toolbar.c:218 +#: src/trg-main-window.c:2051 src/trg-toolbar.c:218 msgid "Disconnect" msgstr "" -#: src/trg-main-window.c:2059 src/trg-toolbar.c:221 +#: src/trg-main-window.c:2055 src/trg-toolbar.c:221 #: src/trg-trackers-tree-view.c:284 src/trg-trackers-tree-view.c:311 msgid "Add" msgstr "" -#: src/trg-main-window.c:2063 +#: src/trg-main-window.c:2059 msgid "Add from URL" msgstr "" -#: src/trg-main-window.c:2067 +#: src/trg-main-window.c:2063 msgid "Resume All" msgstr "" -#: src/trg-main-window.c:2071 +#: src/trg-main-window.c:2067 msgid "Pause All" msgstr "" -#: src/trg-main-window.c:2087 +#: src/trg-main-window.c:2083 msgid "Quit" msgstr "" -#: src/trg-main-window.c:2181 src/trg-menu-bar.c:397 +#: src/trg-main-window.c:2177 src/trg-menu-bar.c:397 msgid "Graph" msgstr "" -#: src/trg-main-window.c:2352 +#: src/trg-main-window.c:2348 msgid "Transmission Remote" msgstr "" @@ -642,11 +642,11 @@ msgid "Bandwidth limits" msgstr "" #: src/trg-remote-prefs-dialog.c:265 -msgid "Down Limit (KB/s)" +msgid "Down Limit (KiB/s)" msgstr "" #: src/trg-remote-prefs-dialog.c:272 -msgid "Up Limit (KB/s)" +msgid "Up Limit (KiB/s)" msgstr "" #: src/trg-remote-prefs-dialog.c:277 @@ -662,11 +662,11 @@ msgid "Alternate time range" msgstr "" #: src/trg-remote-prefs-dialog.c:291 -msgid "Alternate down limit (KB/s)" +msgid "Alternate down limit (KiB/s)" msgstr "" #: src/trg-remote-prefs-dialog.c:295 -msgid "Alternate up limit (KB/s)" +msgid "Alternate up limit (KiB/s)" msgstr "" #: src/trg-remote-prefs-dialog.c:311 @@ -803,7 +803,7 @@ msgid "Torrent done script" msgstr "" #: src/trg-remote-prefs-dialog.c:545 -msgid "Cache size (MB)" +msgid "Cache size (MiB)" msgstr "" #: src/trg-remote-prefs-dialog.c:548 @@ -834,27 +834,27 @@ msgstr "" msgid "Limits" msgstr "" -#: src/trg-state-selector.c:579 +#: src/trg-state-selector.c:581 msgid "All" msgstr "" -#: src/trg-state-selector.c:584 src/trg-state-selector.c:641 +#: src/trg-state-selector.c:586 src/trg-state-selector.c:643 msgid "Queue Down" msgstr "" -#: src/trg-state-selector.c:589 src/trg-state-selector.c:644 +#: src/trg-state-selector.c:591 src/trg-state-selector.c:646 msgid "Queue Up" msgstr "" -#: src/trg-state-selector.c:594 +#: src/trg-state-selector.c:596 msgid "Complete" msgstr "" -#: src/trg-state-selector.c:596 +#: src/trg-state-selector.c:598 msgid "Incomplete" msgstr "" -#: src/trg-state-selector.c:599 +#: src/trg-state-selector.c:601 msgid "Active" msgstr "" @@ -1049,11 +1049,11 @@ msgid "Queue Position:" msgstr "" #: src/trg-torrent-props-dialog.c:198 -msgid "Limit download speed (KB/s)" +msgid "Limit download speed (KiB/s)" msgstr "" #: src/trg-torrent-props-dialog.c:206 -msgid "Limit upload speed (KB/s)" +msgid "Limit upload speed (KiB/s)" msgstr "" #: src/trg-torrent-props-dialog.c:215 @@ -1189,65 +1189,77 @@ msgstr "" msgid "Delete" msgstr "" -#: src/util.c:112 -msgid "JSON decoding error." +#: src/util.c:41 +msgid "KiB" msgstr "" -#: src/util.c:117 -msgid "Server responded, but with no result." +#: src/util.c:42 +msgid "MiB" msgstr "" -#: src/util.c:121 -#, c-format -msgid "Request failed with HTTP code %d" +#: src/util.c:43 +msgid "GiB" msgstr "" -#: src/util.c:158 src/util.c:178 -msgid "None" +#: src/util.c:44 +msgid "TiB" msgstr "" -#: src/util.c:192 -#, c-format -msgid "%.1f KB/s" +#: src/util.c:47 +msgid "KiB/s" msgstr "" -#: src/util.c:194 -#, c-format -msgid "%.2f MB/s" +#: src/util.c:48 +msgid "MiB/s" msgstr "" -#: src/util.c:196 -#, c-format -msgid "%.1f MB/s" +#: src/util.c:49 +msgid "GiB/s" +msgstr "" + +#: src/util.c:50 +msgid "TiB/s" msgstr "" -#: src/util.c:198 +#: src/util.c:331 +msgid "JSON decoding error." +msgstr "" + +#: src/util.c:336 +msgid "Server responded, but with no result." +msgstr "" + +#: src/util.c:340 #, c-format -msgid "%.2f GB/s" +msgid "Request failed with HTTP code %d" +msgstr "" + +#: src/util.c:379 +msgid "None" msgstr "" -#: src/util.c:232 +#: src/util.c:425 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "" msgstr[1] "" -#: src/util.c:233 +#: src/util.c:426 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" msgstr[1] "" -#: src/util.c:235 +#: src/util.c:428 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" msgstr[1] "" -#: src/util.c:238 +#: src/util.c:431 #, c-format msgid "%ld second" msgid_plural "%ld seconds" -- cgit v1.2.3