summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2012-01-02 14:14:41 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2012-01-02 14:14:41 +0000
commitcd3800287297bdcd9fb8c90ee01a2414be3b9312 (patch)
tree93c4718a5f8dab79f9fd3c0af22c7ab1fc892a26
parent8259ceddd02f76a337bb7037cdf5b86872ad09c6 (diff)
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.
-rw-r--r--po/de.po42
-rw-r--r--po/es.po42
-rw-r--r--po/ko.po46
-rw-r--r--po/pl.po42
-rw-r--r--po/ru.po37
-rw-r--r--po/uk.po45
-rw-r--r--src/json.c20
-rw-r--r--src/json.h2
-rw-r--r--src/torrent.c1
-rw-r--r--src/trg-cell-renderer-speed.c2
-rw-r--r--src/trg-client.c5
-rw-r--r--src/trg-general-panel.c4
-rw-r--r--src/trg-json-widgets.c1
-rw-r--r--src/trg-main-window.c6
-rw-r--r--src/trg-remote-prefs-dialog.c10
-rw-r--r--src/trg-status-bar.c4
-rw-r--r--src/trg-torrent-graph.c2
-rw-r--r--src/trg-torrent-props-dialog.c4
-rw-r--r--src/util.c388
-rw-r--r--src/util.h37
-rw-r--r--transmission-remote-gtk.pot166
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 <json-glib/json-glib.h>
#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 <string.h>
#include <glib.h>
#include <glib/gprintf.h>
+#include <glib/gi18n.h>
#ifdef HAVE_LIBPROXY
#include <proxy.h>
@@ -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 <json-glib/json-glib.h>
#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("<span font_size=\"small\" color=\""
GRAPH_OUT_COLOR "\">%s: %s</span>",
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 <stdlib.h>
#include <math.h>
@@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"