Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package hamster-time-tracker for openSUSE:Factory checked in at 2023-06-20 16:48:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/hamster-time-tracker (Old) and /work/SRC/openSUSE:Factory/.hamster-time-tracker.new.15902 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hamster-time-tracker" Tue Jun 20 16:48:42 2023 rev:8 rq:1093837 version:unknown Changes: -------- --- /work/SRC/openSUSE:Factory/hamster-time-tracker/hamster-time-tracker.changes 2022-03-26 22:31:48.134014119 +0100 +++ /work/SRC/openSUSE:Factory/.hamster-time-tracker.new.15902/hamster-time-tracker.changes 2023-06-20 16:48:51.567542112 +0200 @@ -1,0 +2,47 @@ +Mon Jun 19 15:50:30 UTC 2023 - Martin Wilck <mwi...@suse.com> + +- Update to version 3.0.3~20 (git d10ae12): + * Had to bump pre-release to 20 to fix artefact of broken version + for shell extension ("3.0.3~10.10.0_42" instead of "3.0.3~1_0.10.0_42") + * Fix hamster startup failure under python 3.11 + (remove call to deprecated bind_textdomain_codeset gettext function) + * HTML export fixes and clean up (gh#projecthamster/hamster#665) + * Apply escaping and preserve newlines in HTML export (gh#projecthamster/hamster#704) + * Update Croatian translation, add hr.po + * Fix time-activity overlap with wide fonts +- Update GNOME shell extension to upstream 75541ac + * use upstream patches for GNOME shell 44 support + * Fix GNOME shell dependency on TW + * gracefully handle hamster DBUS service disappearing + * del 0154-metadata.json.in-add-support-for-GNOME-44.patch + * add 0154-prefs.js-handle-different-return-values-of-Gtk.accel.patch + * add 0155-Use-of-ellipsis-instead-of-tripledot.patch + * add 0156-Use-ellipsis-instead-of-triple-dot-.-in-translations.patch + * add 0157-Add-Gnome-Shell-43-compatibility.patch + * add 0158-Add-basic-gnome-44-support.patch + * add 0159-Report-errors-in-DBUS-calls.patch + * add 0160-Report-errors-on-initial-DBUS-connection.patch + * add 0161-Gracefully-handle-hamster-DBUS-disappearing.patch + - spec file: Fix GNOME shell dependency so that it works for "44.2" + +------------------------------------------------------------------- +Mon May 1 09:41:00 UTC 2023 - Andrey Gankov <g...@qsolution.ru> + +- GNOME 43 and GNOME 44 support for GNOME shell extension + * added 0154-metadata.json.in-add-support-for-GNOME-44.patch + +------------------------------------------------------------------- +Wed Nov 30 00:41:45 UTC 2022 - Steve Kowalik <steven.kowa...@suse.com> + +- Remove unneeded BuildRequires on Python 2. + +------------------------------------------------------------------- +Tue Mar 29 07:23:50 UTC 2022 - Martin Wilck <mwi...@suse.com> + +- Fix version ranges for GNOME shell extension + * Avoid "nothing provides gnome-shell >= 42" errors from factory + bot for s390x/ppc64 + * This will cause conflicts on future GNOME shell updates, but + that's what we want, actually. + +------------------------------------------------------------------- Old: ---- hamster-time-tracker-3.0.3~1.tar.xz New: ---- 0154-prefs.js-handle-different-return-values-of-Gtk.accel.patch 0155-Use-of-ellipsis-instead-of-tripledot.patch 0156-Use-ellipsis-instead-of-triple-dot-.-in-translations.patch 0157-Add-Gnome-Shell-43-compatibility.patch 0158-Add-basic-gnome-44-support.patch 0159-Report-errors-in-DBUS-calls.patch 0160-Report-errors-on-initial-DBUS-connection.patch 0161-Gracefully-handle-hamster-DBUS-disappearing.patch hamster-time-tracker-3.0.3~20.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ hamster-time-tracker.spec ++++++ --- /var/tmp/diff_new_pack.ACzVzC/_old 2023-06-20 16:48:54.215558026 +0200 +++ /var/tmp/diff_new_pack.ACzVzC/_new 2023-06-20 16:48:54.223558074 +0200 @@ -1,7 +1,7 @@ # # spec file for package hamster-time-tracker # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,16 +18,22 @@ %global ext_version 0.10.0 +# ext_gnome_version: latest GNOME shell version supported +# min_gnome_version: earliest GNOME shell version supported %if 0%{?suse_version} >= 1550 -%global ext_gnome_version 42 +%global ext_gnome_version 44 +%global min_gnome_version 3.34 %else %if 0%{?sle_version} >= 150400 %global ext_gnome_version 41 +%global min_gnome_version 3.34 %else %if 0%{?sle_version} >= 150200 %global ext_gnome_version 3.34 +%global min_gnome_version 3.32 %else -%global ext_gnome_version 3.26 +%global ext_gnome_version 3.30 +%global min_gnome_version 3.10 %endif %endif %endif @@ -36,7 +42,7 @@ %bcond_without extension Name: hamster-time-tracker -Version: 3.0.3~1 +Version: 3.0.3~20 Release: 0 Summary: A time tracker for GNOME License: CC-BY-SA-3.0 AND GPL-3.0-or-later @@ -108,16 +114,22 @@ Patch149: 0149-Extension-configuration-add-a-new-option-center-with.patch Patch150: 0150-Improve-description-of-center-positioning.patch Patch151: 0151-Default-shortcut-Super-t.patch -# GNOME 3.41 / 3.42 +# GNOME 41-44 Patch152: 0152-metadata.json-add-support-for-GNOME-41.patch Patch153: 0153-metadata.json.in-add-support-for-GNOME-42.patch +Patch154: 0154-prefs.js-handle-different-return-values-of-Gtk.accel.patch +Patch155: 0155-Use-of-ellipsis-instead-of-tripledot.patch +Patch156: 0156-Use-ellipsis-instead-of-triple-dot-.-in-translations.patch +Patch157: 0157-Add-Gnome-Shell-43-compatibility.patch +Patch158: 0158-Add-basic-gnome-44-support.patch +Patch159: 0159-Report-errors-in-DBUS-calls.patch +Patch160: 0160-Report-errors-on-initial-DBUS-connection.patch +Patch161: 0161-Gracefully-handle-hamster-DBUS-disappearing.patch BuildRequires: fdupes BuildRequires: intltool # For detecting typelib() dependencies BuildRequires: gobject-introspection -# waf requires python2 -BuildRequires: python # "waf configure" checks for these BuildRequires: dbus-1-glib-devel BuildRequires: glib2-devel @@ -231,6 +243,14 @@ %patch151 -p1 %patch152 -p1 %patch153 -p1 +%patch154 -p1 +%patch155 -p1 +%patch156 -p1 +%patch157 -p1 +%patch158 -p1 +%patch159 -p1 +%patch160 -p1 +%patch161 -p1 %endif %endif @@ -288,20 +308,19 @@ %{_datadir}/glib-2.0/schemas/org.gnome.hamster.gschema.xml %{_datadir}/help/C/hamster +# Derive "next higher" GNOME version to be able to use "<" in Requires +%define next_higher() %{lua: x = tonumber(rpm.expand('%1')) + if x < 4 then print(string.format("%.02f", x + 0.01)) else print(x + 1) end} + %package -n gnome-shell-extension-hamster-time-tracker -Version: 3.0.3~1%{ext_version}_%{ext_gnome_version} +Version: 3.0.3~20_%{ext_version}_%{ext_gnome_version} Release: 0 Summary: Hamster time tracker extension for GNOME Shell License: GPL-3.0-only Group: System/GUI/GNOME -Requires: gnome-shell >= %{ext_gnome_version} -%if 0%{?sle_version} >= 150200 && 0%{?suse_version} < 1550 -Requires: gnome-shell < 3.36 -%endif -%if 0%{?sle_version} < 150200 && 0%{?suse_version} < 1550 -Requires: gnome-shell < 3.32 -%endif Requires: %{name} +Requires: gnome-shell < %{next_higher %{ext_gnome_version}} +Requires: gnome-shell >= %{min_gnome_version} Supplements: packageand(gnome-shell:%{name}) # The predecessor package had a broken version number. Obsoletes: gnome-shell-extension-hamster < 2.2.20.10.1 ++++++ 0154-prefs.js-handle-different-return-values-of-Gtk.accel.patch ++++++ >From db317cfa815edfbd18f2d53b445f3b98a0da4bce Mon Sep 17 00:00:00 2001 From: Martin Wilck <mwi...@suse.com> Date: Fri, 19 Aug 2022 12:23:58 +0200 Subject: [PATCH 154/161] prefs.js: handle different return values of Gtk.accelerator_parse() See https://github.com/projecthamster/hamster-shell-extension/issues/350 --- extension/prefs.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/extension/prefs.js b/extension/prefs.js index e20b62c..86b2f5e 100644 --- a/extension/prefs.js +++ b/extension/prefs.js @@ -161,9 +161,15 @@ class HamsterSettingsWidget extends Gtk.Grid { } _onHotkeyChange(widget, bananas) { - //global.log(widget, bananas); let hotkey = widget.get_text(); - let [key, mods] = Gtk.accelerator_parse(hotkey); + let [key, mods] = [null, null]; + + if (Gtk.MAJOR_VERSION >= 4) { + let _r = null; + [_r, key, mods] = Gtk.accelerator_parse(hotkey); + } else { + [key, mods] = Gtk.accelerator_parse(hotkey); + } if (key != 0) { let parsedName = Gtk.accelerator_name(key, mods); -- 2.41.0 ++++++ 0155-Use-of-ellipsis-instead-of-tripledot.patch ++++++ >From 885f55e7deb44519ebcc99b46d006500a4a7e4a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= <ep...@anotheragency.no> Date: Fri, 13 Apr 2018 03:20:05 +0200 Subject: [PATCH 155/161] Use of ellipsis instead of tripledot (cherry picked from commit f88d196fad8d047dfdbf894976ed94b47178de81) --- extension/widgets/ongoingFactEntry.js | 2 +- extension/widgets/panelWidget.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extension/widgets/ongoingFactEntry.js b/extension/widgets/ongoingFactEntry.js index 00d24ac..6c23199 100644 --- a/extension/widgets/ongoingFactEntry.js +++ b/extension/widgets/ongoingFactEntry.js @@ -46,7 +46,7 @@ class OngoingFactEntry extends St.Entry { name: 'searchEntry', can_focus: true, track_hover: true, - hint_text: _("Enter activity..."), + hint_text: _("Enter activityâ¦"), style_class: "search-entry" }); diff --git a/extension/widgets/panelWidget.js b/extension/widgets/panelWidget.js index 41d9bf1..8aaaa85 100644 --- a/extension/widgets/panelWidget.js +++ b/extension/widgets/panelWidget.js @@ -82,7 +82,7 @@ class PanelWidget extends PanelMenu.Button { _actor.add_style_class_name('panel-status-button'); this.panelLabel = new St.Label({ - text: _("Loading..."), + text: _("Loadingâ¦"), y_align: Clutter.ActorAlign.CENTER }); -- 2.41.0 ++++++ 0156-Use-ellipsis-instead-of-triple-dot-.-in-translations.patch ++++++ >From d7e5ab04a6185380e0adad6f59cf4f6c348d4726 Mon Sep 17 00:00:00 2001 From: Martin Wilck <mwi...@suse.com> Date: Fri, 21 May 2021 11:42:32 +0200 Subject: [PATCH 156/161] =?UTF-8?q?Use=20ellipsis=20(=E2=80=A6)=20instead?= =?UTF-8?q?=20of=20triple=20dot=20(...)=20in=20translations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on previous work from ep...@anotheragency.no. Resolves: https://github.com/projecthamster/hamster-shell-extension/pull/279 (cherry picked from commit f7c775f85287f06171b8bcbf90b3a7cf068d2f8a) --- data/locale/cs/LC_MESSAGES/hamster-shell-extension.po | 4 ++-- data/locale/de/LC_MESSAGES/hamster-shell-extension.po | 6 +++--- data/locale/es/LC_MESSAGES/hamster-shell-extension.po | 8 ++++---- data/locale/fr/LC_MESSAGES/hamster-shell-extension.po | 4 ++-- data/locale/messages.pot | 4 ++-- data/locale/nb_NO/LC_MESSAGES/hamster-shell-extension.po | 4 ++-- data/locale/nl/LC_MESSAGES/hamster-shell-extension.po | 8 ++++---- data/locale/pl/LC_MESSAGES/hamster-shell-extension.po | 8 ++++---- data/locale/pt-BR/LC_MESSAGES/hamster-shell-extension.po | 8 ++++---- data/locale/ru/LC_MESSAGES/hamster-shell-extension.po | 8 ++++---- data/locale/sv/LC_MESSAGES/hamster-shell-extension.po | 4 ++-- 11 files changed, 33 insertions(+), 33 deletions(-) diff --git a/data/locale/cs/LC_MESSAGES/hamster-shell-extension.po b/data/locale/cs/LC_MESSAGES/hamster-shell-extension.po index 2ed5e2e..22dae47 100644 --- a/data/locale/cs/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/cs/LC_MESSAGES/hamster-shell-extension.po @@ -24,11 +24,11 @@ msgid "Today's activities" msgstr "DneÅ¡nà aktivity" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." +msgid "Enter activityâ¦" msgstr "Zadejte aktivituâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." +msgid "Loadingâ¦" msgstr "NaÄÃtánÃâ¦" #: widgets/panelWidget.js:103 diff --git a/data/locale/de/LC_MESSAGES/hamster-shell-extension.po b/data/locale/de/LC_MESSAGES/hamster-shell-extension.po index 013829e..6423a02 100644 --- a/data/locale/de/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/de/LC_MESSAGES/hamster-shell-extension.po @@ -23,11 +23,11 @@ msgid "Today's activities" msgstr "Heutige Tätigkeiten" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." -msgstr "Tätigkeit starten..." +msgid "Enter activityâ¦" +msgstr "Tätigkeit startenâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." +msgid "Loadingâ¦" msgstr "Ladeâ¦" #: widgets/panelWidget.js:103 diff --git a/data/locale/es/LC_MESSAGES/hamster-shell-extension.po b/data/locale/es/LC_MESSAGES/hamster-shell-extension.po index 69a5e7c..59923de 100644 --- a/data/locale/es/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/es/LC_MESSAGES/hamster-shell-extension.po @@ -22,12 +22,12 @@ msgid "Today's activities" msgstr "Actividades de hoy" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." -msgstr "Introduzca actividad..." +msgid "Enter activityâ¦" +msgstr "Introduzca actividadâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." -msgstr "Cargando..." +msgid "Loadingâ¦" +msgstr "Cargandoâ¦" #: widgets/panelWidget.js:103 msgid "Show Overview" diff --git a/data/locale/fr/LC_MESSAGES/hamster-shell-extension.po b/data/locale/fr/LC_MESSAGES/hamster-shell-extension.po index 7150be1..7284da2 100644 --- a/data/locale/fr/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/fr/LC_MESSAGES/hamster-shell-extension.po @@ -24,11 +24,11 @@ msgid "Today's activities" msgstr "Activités du jour" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." +msgid "Enter activityâ¦" msgstr "Entrez l'activitéâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." +msgid "Loadingâ¦" msgstr "Chargementâ¦" #: widgets/panelWidget.js:103 diff --git a/data/locale/messages.pot b/data/locale/messages.pot index a3ae48c..7ff2e98 100644 --- a/data/locale/messages.pot +++ b/data/locale/messages.pot @@ -26,11 +26,11 @@ msgid "Today's activities" msgstr "" #: extension/widgets/ongoingFactEntry.js:51 -msgid "Enter activity..." +msgid "Enter activityâ¦" msgstr "" #: extension/widgets/panelWidget.js:85 -msgid "Loading..." +msgid "Loadingâ¦" msgstr "" #: extension/widgets/panelWidget.js:106 diff --git a/data/locale/nb_NO/LC_MESSAGES/hamster-shell-extension.po b/data/locale/nb_NO/LC_MESSAGES/hamster-shell-extension.po index c2d20b5..1da4760 100644 --- a/data/locale/nb_NO/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/nb_NO/LC_MESSAGES/hamster-shell-extension.po @@ -25,11 +25,11 @@ msgid "Today's activities" msgstr "" #: extension/widgets/ongoingFactEntry.js:51 -msgid "Enter activity..." +msgid "Enter activityâ¦" msgstr "" #: extension/widgets/panelWidget.js:85 -msgid "Loading..." +msgid "Loadingâ¦" msgstr "" #: extension/widgets/panelWidget.js:106 diff --git a/data/locale/nl/LC_MESSAGES/hamster-shell-extension.po b/data/locale/nl/LC_MESSAGES/hamster-shell-extension.po index 2095166..3eb087d 100644 --- a/data/locale/nl/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/nl/LC_MESSAGES/hamster-shell-extension.po @@ -21,12 +21,12 @@ msgid "Today's activities" msgstr "Huidige activiteiten" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." -msgstr "Activiteit starten..." +msgid "Enter activityâ¦" +msgstr "Activiteit startenâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." -msgstr "Laden..." +msgid "Loadingâ¦" +msgstr "Ladenâ¦" #: widgets/panelWidget.js:103 msgid "Show Overview" diff --git a/data/locale/pl/LC_MESSAGES/hamster-shell-extension.po b/data/locale/pl/LC_MESSAGES/hamster-shell-extension.po index 72f35c1..95c103c 100644 --- a/data/locale/pl/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/pl/LC_MESSAGES/hamster-shell-extension.po @@ -22,12 +22,12 @@ msgid "Today's activities" msgstr "Dzisiejsze aktywnoÅci" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." -msgstr "Wpisz aktywnoÅÄ..." +msgid "Enter activityâ¦" +msgstr "Wpisz aktywnoÅÄâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." -msgstr "Åadowanie..." +msgid "Loadingâ¦" +msgstr "Åadowanieâ¦" #: widgets/panelWidget.js:103 msgid "Show Overview" diff --git a/data/locale/pt-BR/LC_MESSAGES/hamster-shell-extension.po b/data/locale/pt-BR/LC_MESSAGES/hamster-shell-extension.po index 538d0d4..ffec6e6 100644 --- a/data/locale/pt-BR/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/pt-BR/LC_MESSAGES/hamster-shell-extension.po @@ -20,12 +20,12 @@ msgid "Today's activities" msgstr "Atividades de hoje" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." -msgstr "Digite a atividade..." +msgid "Enter activityâ¦" +msgstr "Digite a atividadeâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." -msgstr "Carregando..." +msgid "Loadingâ¦" +msgstr "Carregandoâ¦" #: widgets/panelWidget.js:103 msgid "Show Overview" diff --git a/data/locale/ru/LC_MESSAGES/hamster-shell-extension.po b/data/locale/ru/LC_MESSAGES/hamster-shell-extension.po index eea96ef..637869d 100644 --- a/data/locale/ru/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/ru/LC_MESSAGES/hamster-shell-extension.po @@ -22,12 +22,12 @@ msgid "Today's activities" msgstr "СегоднÑ" #: widgets/ongoingFactEntry.js:48 -msgid "Enter activity..." -msgstr "ÐанÑÑие..." +msgid "Enter activityâ¦" +msgstr "ÐанÑÑиеâ¦" #: widgets/panelWidget.js:82 -msgid "Loading..." -msgstr "ÐагÑÑзка..." +msgid "Loadingâ¦" +msgstr "ÐагÑÑзкаâ¦" #: widgets/panelWidget.js:103 msgid "Show Overview" diff --git a/data/locale/sv/LC_MESSAGES/hamster-shell-extension.po b/data/locale/sv/LC_MESSAGES/hamster-shell-extension.po index abed02d..8145736 100644 --- a/data/locale/sv/LC_MESSAGES/hamster-shell-extension.po +++ b/data/locale/sv/LC_MESSAGES/hamster-shell-extension.po @@ -25,11 +25,11 @@ msgid "Today's activities" msgstr "" #: extension/widgets/ongoingFactEntry.js:51 -msgid "Enter activity..." +msgid "Enter activityâ¦" msgstr "" #: extension/widgets/panelWidget.js:85 -msgid "Loading..." +msgid "Loadingâ¦" msgstr "" #: extension/widgets/panelWidget.js:106 -- 2.41.0 ++++++ 0157-Add-Gnome-Shell-43-compatibility.patch ++++++ >From 9983c451e366c72f73de46901ccc12663be72743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Soto?= <jesus.s...@canonical.com> Date: Mon, 19 Sep 2022 11:15:14 +0200 Subject: [PATCH 157/161] Add Gnome Shell 43 compatibility (cherry picked from commit 2919d4f4ca59722bb23c5bbce3fe8e3b12dcef2b) --- data/metadata.json.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/metadata.json.in b/data/metadata.json.in index 61f6731..78eef73 100644 --- a/data/metadata.json.in +++ b/data/metadata.json.in @@ -15,7 +15,8 @@ "3.38", "40", "41", - "42" + "42", + "43" ], "url": "https://github.com/projecthamster/hamster-shell-extension.git", "uuid": @UUID@ -- 2.41.0 ++++++ 0158-Add-basic-gnome-44-support.patch ++++++ >From 9a8a80acfb19b131ae13a01b80939448ae666fc5 Mon Sep 17 00:00:00 2001 From: "J. Nathanael Philipp" <nathan...@philipp.land> Date: Tue, 14 Mar 2023 13:19:00 +0100 Subject: [PATCH 158/161] Add basic gnome 44 support. (cherry picked from commit 4e8fdeaab6c79f0538e22be14f41d9237282f9fe) --- data/metadata.json.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/metadata.json.in b/data/metadata.json.in index 78eef73..162a7cf 100644 --- a/data/metadata.json.in +++ b/data/metadata.json.in @@ -16,7 +16,8 @@ "40", "41", "42", - "43" + "43", + "44" ], "url": "https://github.com/projecthamster/hamster-shell-extension.git", "uuid": @UUID@ -- 2.41.0 ++++++ 0159-Report-errors-in-DBUS-calls.patch ++++++ >From 21db3e1f6446b1a2c298ae7859ede206465edafa Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman <matth...@stdin.nl> Date: Sun, 30 Apr 2023 23:02:42 +0200 Subject: [PATCH 159/161] Report errors in DBUS calls This catches all errors in DBUS calls to hamster and passes them to a new reportError method, which logs them and creates a notification to also inform the user. (cherry picked from commit b957a4975f65ae41ddbd476aedea6f0888f009d2) --- extension/extension.js | 18 +++++++++++++++ extension/widgets/ongoingFactEntry.js | 1 + extension/widgets/panelWidget.js | 32 ++++++++++++++++++++------ extension/widgets/todaysFactsWidget.js | 4 ++++ 4 files changed, 48 insertions(+), 7 deletions(-) diff --git a/extension/extension.js b/extension/extension.js index d91e719..3964c6d 100644 --- a/extension/extension.js +++ b/extension/extension.js @@ -210,12 +210,30 @@ class Controller { this.runningActivitiesQuery = true; this.apiProxy.GetActivitiesRemote("", function([response], err) { + this.reportIfError(_("Failed to get activities"), err); this.runningActivitiesQuery = false; this.activities = response; // global.log('ACTIVITIES HAMSTER: ', this.activities); }.bind(this)); } + /** + * Report an error if one is passed. If error is falsey (e.g. + * null), nothing is reported. + */ + reportIfError(msg, error) { + if (error) { + // Use toString, error can be a string, exception, etc. + global.log("error: Hamster: " + msg + ": " + error.toString()); + // Prefix msg to details (second argument), since the + // details are word-wrapped and the title is not. + Main.notify("Hamster: " + msg, msg + "\n" + error.toString()); + // Close menu so notification can be seen + if (this.panelWidget) + this.panelWidget.close_menu(); + } + } + /** * Place the actual extension wi * get in the right place according to settings. diff --git a/extension/widgets/ongoingFactEntry.js b/extension/widgets/ongoingFactEntry.js index 6c23199..cce4929 100644 --- a/extension/widgets/ongoingFactEntry.js +++ b/extension/widgets/ongoingFactEntry.js @@ -71,6 +71,7 @@ class OngoingFactEntry extends St.Entry { _onEntryActivated() { let text = this.get_text(); this._controller.apiProxy.AddFactRemote(text, 0, 0, false, function(response, error) { + this._controller.reportIfError(_("Failed to add activity"), error); // not interested in the new id - this shuts up the warning }.bind(this)); this.set_text(''); diff --git a/extension/widgets/panelWidget.js b/extension/widgets/panelWidget.js index 8aaaa85..0d9e870 100644 --- a/extension/widgets/panelWidget.js +++ b/extension/widgets/panelWidget.js @@ -178,10 +178,8 @@ class PanelWidget extends PanelMenu.Button { let facts = []; - // [FIXME] - // This seems a rather naive way to handle potential errors. if (err) { - log(err); + this._controller.reportIfError(_("Failed to get activities"), err); } else if (response.length > 0) { facts = Stuff.fromDbusFacts(response); } @@ -207,6 +205,12 @@ class PanelWidget extends PanelMenu.Button { this.menu.toggle(); } + /** + * Close the 'popup menu' + */ + close_menu() { + this.menu.close(); + } /** * Update the rendering of the PanelWidget in the panel itself. @@ -286,7 +290,9 @@ class PanelWidget extends PanelMenu.Button { now.getMinutes(), now.getSeconds()); epochSeconds = Math.floor(epochSeconds / 1000); - this._controller.apiProxy.StopTrackingRemote(GLib.Variant.new('i', [epochSeconds])); + this._controller.apiProxy.StopTrackingRemote(GLib.Variant.new('i', [epochSeconds]), function(response, err) { + this._controller.reportIfError(_("Failed to stop tracking"), err); + }.bind(this)); } /** @@ -295,7 +301,11 @@ class PanelWidget extends PanelMenu.Button { * @callback panelWidget~_onOpenOverview */ _onOpenOverview() { - this._controller.windowsProxy.overviewSync(); + try { + this._controller.windowsProxy.overviewSync(); + } catch (error) { + this._controller.reportIfError(_("Failed to open overview window"), error); + } } /** @@ -304,7 +314,11 @@ class PanelWidget extends PanelMenu.Button { * @callback panelWidget~_onOpenAddFact */ _onOpenAddFact() { - this._controller.windowsProxy.editSync(GLib.Variant.new('i', [0])); + try { + this._controller.windowsProxy.editSync(GLib.Variant.new('i', [0])); + } catch (error) { + this._controller.reportIfError(_("Failed to open add window"), error); + } } /** @@ -315,6 +329,10 @@ class PanelWidget extends PanelMenu.Button { * Note: This will open the GUI settings, not the extension settings! */ _onOpenSettings() { - this._controller.windowsProxy.preferencesSync(); + try { + this._controller.windowsProxy.preferencesSync(); + } catch (error) { + this._controller.reportIfError(_("Failed to open settings window"), error); + } } }); diff --git a/extension/widgets/todaysFactsWidget.js b/extension/widgets/todaysFactsWidget.js index 9f327f6..778f964 100644 --- a/extension/widgets/todaysFactsWidget.js +++ b/extension/widgets/todaysFactsWidget.js @@ -26,6 +26,9 @@ const Clutter = imports.gi.Clutter; const GLib = imports.gi.GLib; const GObject = imports.gi.GObject; +const Gettext = imports.gettext.domain('hamster-shell-extension'); +const _ = Gettext.gettext; + const Me = imports.misc.extensionUtils.getCurrentExtension(); const Stuff = Me.imports.stuff; @@ -114,6 +117,7 @@ class TodaysFactsWidget extends St.ScrollView { /* jshint validthis: true */ controller.apiProxy.AddFactRemote(factStr, 0, 0, false, function(response, err) { + controller.reportIfError(_("Failed to continue activity"), err); // not interested in the new id - this shuts up the warning }.bind(this)); menu.close(); -- 2.41.0 ++++++ 0160-Report-errors-on-initial-DBUS-connection.patch ++++++ >From c067f51edaf9e6a4caba12a93b60809b49a6edf1 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman <matth...@stdin.nl> Date: Sun, 30 Apr 2023 23:17:37 +0200 Subject: [PATCH 160/161] Report errors on initial DBUS connection When either dbus proxy cannot be created (i.e. hamster is not running and cannot be autostarted), report that to the user. This only reports these errors, not other handling is changed (on error, the proxy objects passed will be undefined or null, so further initialization of the extension should already be skipped). Making error handling more robust (and e.g. recovering of hamster is started later) would be nice, but is too complex to handle now. (cherry picked from commit 22ba1e62b6b7ae481bfb1d703bab4feac895c9c4) --- extension/extension.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/extension/extension.js b/extension/extension.js index 3964c6d..97e421e 100644 --- a/extension/extension.js +++ b/extension/extension.js @@ -120,13 +120,15 @@ class Controller { enable() { this.shouldEnable = true; new ApiProxy(Gio.DBus.session, 'org.gnome.Hamster', '/org/gnome/Hamster', - function(proxy) { + function(proxy, err) { + this.reportIfError(_("Connection to DBUS service failed"), err); this.apiProxy = proxy; this.deferred_enable(); }.bind(this)); new WindowsProxy(Gio.DBus.session, "org.gnome.Hamster.WindowServer", "/org/gnome/Hamster/WindowServer", - function(proxy) { + function(proxy, err) { + this.reportIfError(_("Connection to DBUS window service failed"), err); this.windowsProxy = proxy; this.deferred_enable(); }.bind(this)); -- 2.41.0 ++++++ 0161-Gracefully-handle-hamster-DBUS-disappearing.patch ++++++ >From 42fd7b7328cd9f0d866f0552c1d11114dad332da Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman <matth...@stdin.nl> Date: Sun, 30 Apr 2023 23:54:54 +0200 Subject: [PATCH 161/161] Gracefully handle hamster DBUS disappearing Previously, if this happened the extension would be disabled using the `disable()` method. However, this caused an error (because disable was called twice, once for each DBUS service) and gnome-shell would not be told that the extension was disabled, so the user could not re-enable it. With this commit, when the apiProxy disappears, the panel widget is hidden. When it reappears, the panel widget is shown again. Note that there are still some rough edges, but this change is mostly intended to simplify hamster development - you can now restart hamster after making changes (or to switch between installed and source versions) and still have the extension work without needing to restart gnome-shell (which means logging out with wayland). This commit does not attempt to handle windowsProxy disappearing, since keeping track of the status of both services can get messy quickly. Also, now you can restart just the api service, and leave the windows service to be autostarted when needed if you want (and if autostart fails, the user will be shown a proper error message). Also, this does not disable the keybindings, so pressing that while the DBUS proxy is down will probably still allow opening up the menu (but that's ok - making any changes will just autostart hamster again, or show an error message otherwise). (cherry picked from commit 6d9807c370198b016a4c628011042f487d0a355a) --- extension/extension.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/extension/extension.js b/extension/extension.js index 97e421e..8ece31e 100644 --- a/extension/extension.js +++ b/extension/extension.js @@ -148,23 +148,21 @@ class Controller { // Callbacks that handle appearing/vanishing dbus services. function apiProxy_appeared_callback() { + if (this.shouldEnable) + this.panelWidget.show(); } function apiProxy_vanished_callback() { /* jshint validthis: true */ - global.log(_("hamster-shell-extension: 'hamster-service' not running. Shutting down.")); - Main.notify(_("hamster-shell-extension: 'hamster-service' not running. Shutting down.")); - this.disable(); + this.reportIfError(_("DBUS proxy disappeared"), _("Disabling extension until it comes back")); + if (this.shouldEnable) + this.panelWidget.hide(); } function windowsProxy_appeared_callback() { } function windowsProxy_vanished_callback() { - /* jshint validthis: true */ - global.log(_("hamster-shell-extension: 'hamster-windows-service' not running. Shutting down.")); - Main.notify(_("hamster-shell-extension: 'hamster-windows-service' not running. Shutting down.")); - this.disable(); } // Set-up watchers that watch for required dbus services. -- 2.41.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ACzVzC/_old 2023-06-20 16:48:54.455559469 +0200 +++ /var/tmp/diff_new_pack.ACzVzC/_new 2023-06-20 16:48:54.459559493 +0200 @@ -4,8 +4,8 @@ <param name="url">https://github.com/projecthamster/hamster.git</param> <param name="filename">hamster-time-tracker</param> <!-- <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> --> - <param name="version">3.0.3~1</param> - <param name="revision">19d16009</param> + <param name="version">3.0.3~20</param> + <param name="revision">d10ae12</param> <!-- <param name="versionrewrite-pattern">v(.*)[+]0$</param> <param name="versionrewrite-replacement">\1</param> --> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.ACzVzC/_old 2023-06-20 16:48:54.483559637 +0200 +++ /var/tmp/diff_new_pack.ACzVzC/_new 2023-06-20 16:48:54.487559661 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/projecthamster/hamster.git</param> - <param name="changesrevision">19d160090de30e756bdc3122ff935bdaa86e2843</param></service></servicedata> + <param name="changesrevision">d10ae12cde0370233189574d255c831e3eb267ab</param></service></servicedata> (No newline at EOF) ++++++ hamster-time-tracker-3.0.3~1.tar.xz -> hamster-time-tracker-3.0.3~20.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/.github/workflows/artifact-links.yml new/hamster-time-tracker-3.0.3~20/.github/workflows/artifact-links.yml --- old/hamster-time-tracker-3.0.3~1/.github/workflows/artifact-links.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/hamster-time-tracker-3.0.3~20/.github/workflows/artifact-links.yml 2023-04-29 20:31:17.000000000 +0200 @@ -0,0 +1,30 @@ +# This adds a comment to a PR with a link to any build artifacts. Because build +# artifacts are not available until a workflow is completed, this is done in a +# second workflow that triggers on completion of the workflow that builds the +# artifacts. +name: Linking to artifacts in PR +on: + workflow_run: + workflows: ["Testing"] + types: [completed] + +jobs: + artifacts-url-comments: + name: Add artifact links to PRs + runs-on: ubuntu-20.04 + if: ${{ github.event.workflow_run.event == 'pull_request' }} + steps: + # This uses a third-party action that handles figuring out the + # pull request to comment on (which is no longer easily available + # in a followup workflow) and formatting the comment. + - name: Add artifact links to PR and issues + uses: tonyhallett/artifacts-url-comments@v1.1.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + prefix: "Automatically generated build artifacts for commit ${{ github.event.workflow_run.head_sha }} (note: these links will expire after some time):\n" + format: " - {name}: [:arrow_double_down: Download]({url})" + # This adds a hline to terminate the artifact list, just + # newlines should work, but it seems they are eaten + # somewhere... + suffix: "---\n\nTo test this PR, download and unzip the flatpak application above and then install with:\n\n flatpak install Hamster.flatpak\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/.github/workflows/testing.yml new/hamster-time-tracker-3.0.3~20/.github/workflows/testing.yml --- old/hamster-time-tracker-3.0.3~1/.github/workflows/testing.yml 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/.github/workflows/testing.yml 2023-04-29 20:31:17.000000000 +0200 @@ -16,10 +16,15 @@ fail-fast: false matrix: include: - # Test 3.5, which is our minimum version, on 16.04 since the - # latest Ubuntu does not have it. - - os: ubuntu-16.04 - python-version: 3.5 + # This tests uses the oldest Ubuntu and its oldest Python + # version, to get as close to our minimum required version as + # possible. This does mean that we will not catch changes to + # the code that unintentionally reaise the required python + # version, but there's no easy way to run an older python + # version (without having to install all or dependencies from + # source) it seems. + - os: ubuntu-20.04 + python-version: 3.8 # On the latest ubuntu, just test the default 3.x version. - os: ubuntu-latest python-version: 3 @@ -33,16 +38,7 @@ # Install a specific python version as configured PACKAGES="$PACKAGES python${{matrix.python-version}}" # Normal dependencies - PACKAGES="$PACKAGES gettext intltool python3-gi python3-cairo python3-dbus python3-xdg libglib2.0-dev libglib2.0-bin gir1.2-gtk-3.0" - # The gtk-update-icon-cache used to live in libgtk2.0-bin, - # but was moved to its own package. Similar for distutils - # (included by default in python stdlib). - if [ "${{ matrix.os }}" == "ubuntu-16.04" ]; then - PACKAGES="$PACKAGES libgtk2.0-bin" - else - PACKAGES="$PACKAGES gtk-update-icon-cache" - PACKAGES="$PACKAGES python3-distutils" - fi + PACKAGES="$PACKAGES gettext intltool python3-gi python3-cairo python3-gi-cairo python3-distutils python3-dbus python3-xdg libglib2.0-dev libglib2.0-bin gir1.2-gtk-3.0 gtk-update-icon-cache" # For dbus-launch PACKAGES="$PACKAGES dbus-x11" @@ -63,14 +59,14 @@ flake8: name: Run code linting and checks - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Prepare repo uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v1 with: - python-version: '3.5' + python-version: '3.6' - name: Install flake8 run: | pip install flake8 @@ -99,13 +95,13 @@ - name: Install GNOME SDK for flatpak run: | flatpak remote-add --user --if-not-exists --from flathub https://flathub.org/repo/flathub.flatpakrepo - flatpak install --user -y flathub org.gnome.Platform//3.36 org.gnome.Sdk//3.36 + flatpak install --user -y flathub org.gnome.Platform//41 org.gnome.Sdk//41 - name: Build application run: | - flatpak-builder --repo=build/flatpak/repo build/flatpak/tmp org.gnome.Hamster.json + flatpak-builder --repo=build/flatpak/repo build/flatpak/tmp org.gnome.Hamster.yml - name: Run tests inside sandbox run: | - dbus-launch flatpak-builder --run build/flatpak/tmp org.gnome.Hamster.json python3 -m unittest + dbus-launch flatpak-builder --run build/flatpak/tmp org.gnome.Hamster.yml python3 -m unittest - name: Export bundle and try to install it run: | mkdir -p dist diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/README.md new/hamster-time-tracker-3.0.3~20/README.md --- old/hamster-time-tracker-3.0.3~1/README.md 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/README.md 2023-04-29 20:31:17.000000000 +0200 @@ -64,6 +64,7 @@ (or graphical package installer). ##### Snap + Easy installation on any distribution supporting snap: https://snapcraft.io/hamster-snap @@ -77,18 +78,16 @@ at runtime. Permissions are limited to what the application really needs to function properly. -If you downloaded the file with the Hamster bundle (ending in ``.flatpak``), you -can directly install it with: +You can install the Hamster Flatpak from [Flathub](https://flathub.org/apps/details/org.gnome.Hamster) via: ```bash -flatpak install --reinstall Hamster.flatpak +flatpak install flathub org.gnome.Hamster ``` -If you would like to install Hamster only for your user, please pass the -``--user`` option to the above command. +If you would like to install Hamster only for your user, simply pass the +`--user` option to the above command. -After installation, if you need to invoke Hamster from the command line, -you can do so with: +To invoke Hamster from the command line, use: ```bash flatpak run org.gnome.Hamster [args...] @@ -97,7 +96,7 @@ ### Install from sources #### Dependencies -Hamster needs python 3.5 or newer (not included in below install +Hamster needs python 3.6 or newer (not included in below install commands). Older versions are not supported. ##### Debian-based @@ -105,7 +104,7 @@ ###### Ubuntu (tested in 19.04 and 18.04) ```bash -sudo apt install gettext intltool python3-gi python3-cairo python3-distutils python3-dbus python3-xdg libglib2.0-dev libglib2.0-bin gir1.2-gtk-3.0 gtk-update-icon-cache +sudo apt install gettext intltool python3-gi python3-cairo python3-gi-cairo python3-distutils python3-dbus python3-xdg libglib2.0-dev libglib2.0-bin gir1.2-gtk-3.0 gtk-update-icon-cache # and for documentation sudo apt install itstool yelp ``` @@ -171,7 +170,7 @@ ```bash flatpak-builder --force-clean --user --install \ - build/flatpak org.gnome.Hamster.json + build/flatpak org.gnome.Hamster.yml ``` This creates a temporary flatpack build folder in the ``build/flatpak`` @@ -243,7 +242,7 @@ To run the tests inside the flatpak, use: ```bash -flatpak-builder --run build/flatpak org.gnome.Hamster.json \ +flatpak-builder --run build/flatpak org.gnome.Hamster.yml \ python3 -m unittest ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/data/report_template.html new/hamster-time-tracker-3.0.3~20/data/report_template.html --- old/hamster-time-tracker-3.0.3~1/data/report_template.html 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/data/report_template.html 2023-04-29 20:31:17.000000000 +0200 @@ -260,25 +260,6 @@ return false; }) - $("#show_details").click(function() { - if ($(this).attr("checked")) { - $(".by_date_row").show(); - } else { - $(".by_date_row").hide(); - } - - }) - - $("#show_totals").click(function() { - if ($(this).attr("checked")) { - $(".by_date_total_row").show(); - } else { - $(".by_date_total_row").hide(); - } - - - }) - populateFactTable(); @@ -297,13 +278,13 @@ // determine if we will be doing any internal counting var keys = []; - if ($("#show_activities").attr("checked")) + if ($("#show_activities")[0].checked) keys.push("activity"); - if ($("#show_categories").attr("checked")) + if ($("#show_categories")[0].checked) keys.push("category"); - if ($("#show_tags").attr("checked")) + if ($("#show_tags")[0].checked) keys.push("tags"); @@ -404,13 +385,13 @@ <div class="by_day_controls"> $show_prompt <input type="checkbox" id="show_activities" checked="checked"></input> - <label for="show_details">$activity_totals_heading</label> + <label for="show_activities">$activity_totals_heading</label> <input type="checkbox" id="show_categories" checked="checked"></input> - <label for="show_totals">$category_totals_heading</label> + <label for="show_categories">$category_totals_heading</label> <input type="checkbox" id="show_tags" checked="checked"></input> - <label for="show_totals">$tag_totals_heading</label> + <label for="show_tags">$tag_totals_heading</label> </div> <table id="date_facts"></table> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/org.gnome.Hamster.json new/hamster-time-tracker-3.0.3~20/org.gnome.Hamster.json --- old/hamster-time-tracker-3.0.3~1/org.gnome.Hamster.json 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/org.gnome.Hamster.json 1970-01-01 01:00:00.000000000 +0100 @@ -1,68 +0,0 @@ -{ - "app-id": "org.gnome.Hamster", - "runtime": "org.gnome.Platform", - "runtime-version": "3.36", - "sdk": "org.gnome.Sdk", - "command": "hamster", - "modules": [ - { - "name": "intltool", - "sources": [ - { - "type": "archive", - "url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz", - "md5": "12e517cac2b57a0121cda351570f1e63" - } - ], - "cleanup": [ "*" ] - }, - { - "name": "python3-hamster-dependencies", - "buildsystem": "simple", - "ensure-writable": [ - "easy-install.pth", - "setuptools.pth" - ], - "build-commands": [ - "pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} dbus-python pyxdg" - ], - "sources": [ - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/62/7e/d4fb56a1695fa65da0c8d3071855fa5408447b913c58c01933c2f81a269a/dbus-python-1.2.16.tar.gz", - "sha256": "11238f1d86c995d8aed2e22f04a1e3779f0d70e587caffeab4857f3c662ed5a4" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/39/03/12eb9062f43adb94e30f366743cb5c83fd15fef026500cd4de42c7c12280/pyxdg-0.26-py2.py3-none-any.whl", - "sha256": "1948ff8e2db02156c0cccd2529b43c0cff56ebaa71f5f021bbd755bc1419190e" - } - ] - }, - { - "name": "hamster", - "buildsystem": "simple", - "builddir": true, - "prefix": "/app", - "build-commands": [ - "./waf configure --prefix=${FLATPAK_DEST}", - "./waf build", - "./waf install" - ], - "sources": [ - { - "type": "dir", - "path": "." - } - ] - } - ], - "finish-args": [ - "--socket=wayland", - "--socket=fallback-x11", - "--filesystem=xdg-documents", - "--own-name=org.gnome.Hamster", - "--own-name=org.gnome.Hamster.GUI", - "--own-name=org.gnome.Hamster.WindowServer" - ] -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/org.gnome.Hamster.yml new/hamster-time-tracker-3.0.3~20/org.gnome.Hamster.yml --- old/hamster-time-tracker-3.0.3~1/org.gnome.Hamster.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/hamster-time-tracker-3.0.3~20/org.gnome.Hamster.yml 2023-04-29 20:31:17.000000000 +0200 @@ -0,0 +1,47 @@ +--- +app-id: org.gnome.Hamster +runtime: org.gnome.Platform +runtime-version: '41' +sdk: org.gnome.Sdk +command: hamster +modules: +- name: intltool + sources: + - type: archive + url: https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz + md5: 12e517cac2b57a0121cda351570f1e63 + cleanup: + - "*" +- name: python3-hamster-dependencies + buildsystem: simple + ensure-writable: + - easy-install.pth + - setuptools.pth + build-commands: + - pip3 install --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST} + dbus-python pyxdg + sources: + - type: file + url: https://dbus.freedesktop.org/releases/dbus-python/dbus-python-1.2.18.tar.gz + sha256: 92bdd1e68b45596c833307a5ff4b217ee6929a1502f5341bae28fd120acf7260 + - type: file + url: https://files.pythonhosted.org/packages/ea/13/de39ddf4f9f9cea0c7684cd54a50d79c97ea99c9f6aed798fd13d0bd4609/pyxdg-0.27-py2.py3-none-any.whl + sha256: 2d6701ab7c74bbab8caa6a95e0a0a129b1643cf6c298bf7c569adec06d0709a0 +- name: hamster + buildsystem: simple + builddir: true + prefix: "/app" + build-commands: + - "./waf configure --prefix=${FLATPAK_DEST}" + - "./waf build" + - "./waf install" + sources: + - type: dir + path: "." +finish-args: +- "--socket=wayland" +- "--socket=fallback-x11" +- "--filesystem=xdg-documents" +- "--own-name=org.gnome.Hamster" +- "--own-name=org.gnome.Hamster.GUI" +- "--own-name=org.gnome.Hamster.WindowServer" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/po/LINGUAS new/hamster-time-tracker-3.0.3~20/po/LINGUAS --- old/hamster-time-tracker-3.0.3~1/po/LINGUAS 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/po/LINGUAS 2023-04-29 20:31:17.000000000 +0200 @@ -25,6 +25,7 @@ gu he hi +hr hu id it diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/po/hr.po new/hamster-time-tracker-3.0.3~20/po/hr.po --- old/hamster-time-tracker-3.0.3~1/po/hr.po 1970-01-01 01:00:00.000000000 +0100 +++ new/hamster-time-tracker-3.0.3~20/po/hr.po 2023-04-29 20:31:17.000000000 +0200 @@ -0,0 +1,921 @@ +# Croatian translation of hamster-time-tracker +# Copyright (C) 2008 Project Hamster Team +# This file is distributed under the same license as the hamster-time-tracker package. +# Milo Ivir <m...@milotype.de>, 2020. +msgid "" +msgstr "" +"Project-Id-Version: hamster-time-tracker\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-02 19:21+0100\n" +"PO-Revision-Date: 2023-03-27 16:44+0200\n" +"Last-Translator: Milo Ivir <m...@milotype.de>\n" +"Language-Team: \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 3.0\n" + +#: ../data/edit_activity.ui.h:1 ../data/today.ui.h:15 +msgid "Add Earlier Activity" +msgstr "Dodaj raniju aktivnost" + +#: ../data/edit_activity.ui.h:2 ../data/range_pick.ui.h:5 +msgid "to" +msgstr "do" + +#: ../data/edit_activity.ui.h:3 +msgid "in progress" +msgstr "u tijeku" + +#: ../data/edit_activity.ui.h:4 +msgid "Description:" +msgstr "Opis:" + +#: ../data/edit_activity.ui.h:5 +msgid "Time:" +msgstr "Vrijeme:" + +#: ../data/edit_activity.ui.h:6 +msgid "Activity:" +msgstr "Aktivnost:" + +#: ../data/edit_activity.ui.h:7 +msgid "Tags:" +msgstr "Oznake:" + +#: ../data/hamster.schemas.in.h:1 +msgid "Stop tracking on idle" +msgstr "Prekini praÄenje kad nema aktivnosti" + +#: ../data/hamster.schemas.in.h:2 +msgid "Stop tracking current activity when computer becomes idle" +msgstr "Prekini praÄenje trenutaÄne aktivnosti kad raÄunalo niÅ¡ta ne radi" + +#: ../data/hamster.schemas.in.h:3 ../data/preferences.ui.h:2 +msgid "Stop tracking on shutdown" +msgstr "Prekini praÄenje kad se raÄunalo iskljuÄa" + +#: ../data/hamster.schemas.in.h:4 +msgid "Stop tracking current activity on shutdown" +msgstr "Prekini praÄenje trenutaÄne aktivnosti kad se raÄunalo iskljuÄa" + +#: ../data/hamster.schemas.in.h:5 +msgid "Remind of current task every x minutes" +msgstr "Podsjeti o trenutaÄnom zadatku svakih x minuta" + +#: ../data/hamster.schemas.in.h:6 +msgid "" +"Remind of current task every specified amount of minutes. Set to 0 or " +"greater than 120 to disable reminder." +msgstr "" +"Podsjeti o trenutaÄnom zadatku nakon odreÄenog intervala u minutama. Postavi " +"na 0 ili na viÅ¡e od 120 minuta za iskljuÄivanje podsjetnika." + +#: ../data/hamster.schemas.in.h:7 ../data/preferences.ui.h:4 +msgid "Also remind when no activity is set" +msgstr "TakoÄe me i podseti kada nema aktivnosti" + +#: ../data/hamster.schemas.in.h:8 +msgid "" +"Also remind every notify_interval minutes if no activity has been started." +msgstr "" +"Ukoliko ni jedna aktivnost nije zapoÄeta podseti me nakon odreÄenog boja " +"minuta, koje odreÄuje kljuÄ notify_interval." + +#: ../data/hamster.schemas.in.h:9 +msgid "At what time does the day start (defaults to 5:30AM)" +msgstr "Kada poÄinje novi dan (podrazumevano je 5:30)" + +#: ../data/hamster.schemas.in.h:10 +msgid "" +"Activities will be counted as to belong to yesterday if the current time is " +"less than the specified day start; and today, if it is over the time. " +"Activities that span two days, will tip over to the side where the largest " +"part of the activity is." +msgstr "" +"Aktivnosti se smatraju juÄeraÅ¡njim ukoliko je trenutno vreme u proÅ¡losti u " +"odnosu na dan poÄetka; danaÅ¡njim ako je preko tog vremena. Ukoliko aktivnost " +"obuhvata dva dana, ona Äe preÄi u onaj dan kada je izvrÅ¡en veÄi deo te " +"aktivnosti." + +#: ../data/hamster.schemas.in.h:11 +msgid "Should workspace switch trigger activity switch" +msgstr "Treba li mijenjanje radnog prostora pokrenuti mijenjanje aktivnost" + +#: ../data/hamster.schemas.in.h:12 +msgid "" +"List of enabled tracking methods. \"name\" will enable switching activities " +"by name defined in workspace_mapping. \"memory\" will enable switching to " +"the last activity when returning to a previous workspace." +msgstr "" +"Popis ukljuÄenih naÄina praÄenja. ânameâ (ime) Äe omoguÄiti mijenjanje " +"aktivnosti po imenima koje su definirane u workspace_mapping. " +"âmemoryâ (memorija) Äe omoguÄiti prebacivanje na zadnju aktivnosti pri " +"povratku na prethodni radni prostor." + +#: ../data/hamster.schemas.in.h:13 +msgid "Switch activity on workspace change" +msgstr "Promijeni aktivnost pri mijenjaju radnog prostora" + +#: ../data/hamster.schemas.in.h:14 +msgid "" +"If switching by name is enabled, this list sets the activity names that " +"should be switched to, workspaces represented by the index of item." +msgstr "" +"Ako je mijenjanje po imenu ukljuÄeno, ovaj popis postavlja imena aktivnosti " +"na koje se treba prebaciti (radni prostori predstavljeni njihovim indeksima)." + +#: ../data/hamster.schemas.in.h:15 +msgid "Show / hide Time Tracker Window" +msgstr "Prikaži / sakrij prozor praÄenja vremena" + +#: ../data/hamster.schemas.in.h:16 +msgid "Keyboard shortcut for showing / hiding the Time Tracker window." +msgstr "Tipkovni preÄac za prikazivanje / skrivanje prozora praÄenja vremena." + +#: ../data/hamster.schemas.in.h:17 +msgid "Toggle hamster application window action" +msgstr "Radnja za mijenjanje vidljivosti prozora programa Hamster" + +#: ../data/hamster.schemas.in.h:18 +msgid "Command for toggling visibility of the hamster application window." +msgstr "Naredba za mijenjanje vidljivosti glavnog prozora programa Hamster." + +#: ../data/hamster.schemas.in.h:19 +msgid "Toggle hamster application window" +msgstr "Promijeni vidljivost prozora programa" + +#: ../data/hamster.schemas.in.h:20 +msgid "Toggle visibility of the hamster application window." +msgstr "Promijeni vidljivost prozora programa Hamster." + +#: ../data/hamster.desktop.in.in.h:1 +#: ../data/hamster-windows-service.desktop.in.in.h:1 ../data/today.ui.h:1 +#: ../src/hamster-cli:133 ../src/hamster/about.py:39 ../src/hamster/about.py:40 +#: ../src/hamster/today.py:63 +msgid "Time Tracker" +msgstr "PraÄenja vremena" + +#: ../data/hamster.desktop.in.in.h:2 +#: ../data/hamster-windows-service.desktop.in.in.h:2 +msgid "Project Hamster - track your time" +msgstr "Projekt Hamster â prati svoje vreme" + +#: ../data/hamster-time-tracker-overview.desktop.in.in.h:1 +msgid "Time Tracking Overview" +msgstr "Pregled praÄenja vremena" + +#: ../data/hamster-time-tracker-overview.desktop.in.in.h:2 +msgid "The overview window of hamster time tracker" +msgstr "Prozor pregleda programa Hamster za praÄenje vremena" + +#: ../data/overview_totals.ui.h:1 +msgid "Show Statistics" +msgstr "Prikaži statistiku" + +#: ../data/overview_totals.ui.h:2 +msgid "Categories" +msgstr "Kategorije" + +#: ../data/overview_totals.ui.h:3 ../data/overview.ui.h:9 +msgid "Activities" +msgstr "Aktivnosti" + +#: ../data/overview_totals.ui.h:4 ../src/hamster-cli:278 +#: ../src/hamster/reports.py:319 ../src/hamster/today.py:150 +msgid "Tags" +msgstr "Oznake" + +#: ../data/overview_totals.ui.h:5 +msgid "No data for this interval" +msgstr "Nema podataka za ovaj interval" + +#: ../data/overview.ui.h:1 +msgid "Save report..." +msgstr "Spremi izveÅ¡taj â¦" + +#: ../data/overview.ui.h:2 +msgid "Day" +msgstr "Dan" + +#: ../data/overview.ui.h:3 +msgid "Week" +msgstr "Tjedan" + +#: ../data/overview.ui.h:4 +msgid "Month" +msgstr "Mjesec" + +#: ../data/overview.ui.h:5 +msgid "Overview â Hamster" +msgstr "Pregled â Hamster" + +#: ../data/overview.ui.h:6 +msgid "_Overview" +msgstr "_Pregled" + +#: ../data/overview.ui.h:7 ../src/hamster-cli:276 +#: ../src/hamster/preferences.py:212 ../src/hamster/reports.py:317 +#: ../src/hamster/today.py:144 +msgid "Activity" +msgstr "Aktivnost" + +#: ../data/overview.ui.h:8 +msgid "_View" +msgstr "P_rikaz" + +#: ../data/overview.ui.h:10 ../src/hamster/reports.py:308 +msgid "Totals" +msgstr "Ukupno" + +#: ../data/overview.ui.h:11 +msgid "Remove" +msgstr "Ukloni" + +#: ../data/overview.ui.h:12 +msgid "Add new" +msgstr "Dodaj novo" + +#: ../data/overview.ui.h:13 +msgid "Edit" +msgstr "Uredi" + +#: ../data/preferences.ui.h:1 +msgid "Time Tracker Preferences" +msgstr "Postavke praÄenja vremena" + +#: ../data/preferences.ui.h:3 +msgid "Stop tracking when computer becomes idle" +msgstr "Prekini praÄenje kad raÄunalo niÅ¡ta ne radi" + +#: ../data/preferences.ui.h:5 +msgid "Remind of current activity every:" +msgstr "Podsjeti o trenutaÄnoj aktivnosti svakih:" + +#: ../data/preferences.ui.h:6 +msgid "New day starts at" +msgstr "Novi dan poÄinje u" + +#: ../data/preferences.ui.h:7 +msgid "Use following todo list if available:" +msgstr "Koristi sljedeÄi popis zadataka ako je dostupan:" + +#: ../data/preferences.ui.h:8 +msgid "Integration" +msgstr "Integracija" + +#: ../data/preferences.ui.h:9 +msgid "Tracking" +msgstr "PraÄenje" + +#: ../data/preferences.ui.h:10 +msgid "_Categories" +msgstr "_Kategorije" + +#: ../data/preferences.ui.h:11 +msgid "Category list" +msgstr "Popis kategorija" + +#: ../data/preferences.ui.h:12 +msgid "Add category" +msgstr "Dodaj kategoriju" + +#: ../data/preferences.ui.h:13 +msgid "Remove category" +msgstr "Ukloni kategoriju" + +#: ../data/preferences.ui.h:14 +msgid "Edit category" +msgstr "Uredi kategoriju" + +#: ../data/preferences.ui.h:15 +msgid "_Activities" +msgstr "_Aktivnosti" + +#: ../data/preferences.ui.h:16 +msgid "Activity list" +msgstr "Popis aktivnosti" + +#: ../data/preferences.ui.h:17 +msgid "Add activity" +msgstr "Dodaj aktivnost" + +#: ../data/preferences.ui.h:18 +msgid "Remove activity" +msgstr "Ukloni aktivnost" + +#: ../data/preferences.ui.h:19 +msgid "Edit activity" +msgstr "Uredi aktivnost" + +#: ../data/preferences.ui.h:20 +msgid "Tags that should appear in autocomplete" +msgstr "Oznake koje se pojavljuju u automatskom dovrÅ¡avanju" + +#: ../data/preferences.ui.h:21 +msgid "Categories and Tags" +msgstr "Kategorije i oznake" + +#: ../data/preferences.ui.h:22 +msgid "Resume the last activity when returning to a workspace" +msgstr "Nastavi zadnju aktivnost pri povratku u radni prostor" + +#: ../data/preferences.ui.h:23 +msgid "Start new activity when switching workspaces:" +msgstr "ZapoÄni novu aktivnost pri mijenjanju radnih prostora:" + +#: ../data/preferences.ui.h:24 +msgid "Workspaces" +msgstr "Radni prostori" + +#: ../data/range_pick.ui.h:1 +msgid "Day:" +msgstr "Dan:" + +#: ../data/range_pick.ui.h:2 +msgid "Week:" +msgstr "Tjedan:" + +#: ../data/range_pick.ui.h:3 +msgid "Month:" +msgstr "Mjesec:" + +#: ../data/range_pick.ui.h:4 +msgid "Range:" +msgstr "Raspon:" + +#: ../data/range_pick.ui.h:6 +msgid "Apply" +msgstr "Primijeni" + +#: ../data/today.ui.h:2 +msgid "_Tracking" +msgstr "PraÄ_enje" + +#: ../data/today.ui.h:3 +msgid "Add earlier activity" +msgstr "Dodaj raniju aktivnost" + +#: ../data/today.ui.h:4 +msgid "Overview" +msgstr "Pregled" + +#: ../data/today.ui.h:5 +msgid "Statistics" +msgstr "Statistike" + +#: ../data/today.ui.h:6 +msgid "_Edit" +msgstr "_Uredi" + +#: ../data/today.ui.h:7 +msgid "_Help" +msgstr "_PomoÄ" + +#: ../data/today.ui.h:8 +msgid "Contents" +msgstr "Sadržaj" + +#: ../data/today.ui.h:9 +msgid "Sto_p tracking" +msgstr "Prekini _praÄenje" + +#: ../data/today.ui.h:10 +msgid "S_witch" +msgstr "Pro_mijeni" + +#: ../data/today.ui.h:11 +msgid "Start _Tracking" +msgstr "Po_kreni praÄenje" + +#: ../data/today.ui.h:12 +msgid "Start new activity" +msgstr "Pokreni novu aktivnost" + +#: ../data/today.ui.h:13 +msgid "Today" +msgstr "Danas" + +#: ../data/today.ui.h:14 +msgid "totals" +msgstr "ukupno" + +#: ../data/today.ui.h:16 +msgid "Show Overview" +msgstr "Prikaži pregled" + +#: ../src/hamster-cli:254 ../src/hamster/today.py:289 +msgid "No activity" +msgstr "Nema aktivnosti" + +#: ../src/hamster-cli:277 ../src/hamster/preferences.py:155 +#: ../src/hamster/reports.py:318 +msgid "Category" +msgstr "Kategorija" + +#: ../src/hamster-cli:279 ../src/hamster/reports.py:323 +msgid "Description" +msgstr "Opis" + +#: ../src/hamster-cli:280 ../src/hamster/reports.py:320 +msgid "Start" +msgstr "PoÄetak" + +#: ../src/hamster-cli:281 ../src/hamster/reports.py:321 +msgid "End" +msgstr "Kraj" + +#: ../src/hamster-cli:282 ../src/hamster/reports.py:322 +msgid "Duration" +msgstr "Trajanje" + +#: ../src/hamster-cli:308 +msgid "Uncategorized" +msgstr "Nekategorizirano" + +#: ../src/hamster/about.py:42 +msgid "Project Hamster â track your time" +msgstr "Projekt Hamster â prati svoje vreme" + +#: ../src/hamster/about.py:43 +msgid "Copyright © 2007â2010 Toms BauÄ£is and others" +msgstr "Autorska prava © 2007. â 2010. Toms BauÄ£is i ostali" + +#: ../src/hamster/about.py:45 +msgid "Project Hamster Website" +msgstr "Web-stranica projekta Hamster" + +#: ../src/hamster/about.py:46 +msgid "About Time Tracker" +msgstr "O programu PraÄenje vremena" + +#: ../src/hamster/about.py:56 +msgid "translator-credits" +msgstr "Milo Ivir <m...@milotype.de>" + +#: ../src/hamster/db.py:288 ../src/hamster/db.py:298 ../src/hamster/db.py:354 +#: ../src/hamster/db.py:658 ../src/hamster/db.py:845 +#: ../src/hamster/edit_activity.py:59 ../src/hamster/preferences.py:58 +#: ../src/hamster/reports.py:88 ../src/hamster/reports.py:127 +#: ../src/hamster/reports.py:256 ../src/hamster/today.py:275 +msgid "Unsorted" +msgstr "Nerazvrstano" + +#. defaults +#: ../src/hamster/db.py:937 +msgid "Work" +msgstr "Posao" + +#: ../src/hamster/db.py:938 +msgid "Reading news" +msgstr "Äitanje vijesti" + +#: ../src/hamster/db.py:939 +msgid "Checking stocks" +msgstr "Provjeravanje dionica" + +#: ../src/hamster/db.py:940 +msgid "Super secret project X" +msgstr "Super tajni projekt X" + +#: ../src/hamster/db.py:941 +msgid "World domination" +msgstr "World domination" + +#: ../src/hamster/db.py:943 +msgid "Day-to-day" +msgstr "Iz dana u dan" + +#: ../src/hamster/db.py:944 +msgid "Lunch" +msgstr "RuÄak" + +#: ../src/hamster/db.py:945 +msgid "Watering flowers" +msgstr "Zalijevanje cvijeÄa" + +#: ../src/hamster/db.py:946 +msgid "Doing handstands" +msgstr "IzvoÄenje stoja na rukama" + +#: ../src/hamster/edit_activity.py:75 +msgid "Update activity" +msgstr "Aktualiziraj aktivnost" + +#. duration in round hours +#: ../src/hamster/lib/stuff.py:57 +#, python-format +msgid "%dh" +msgstr "%d h" + +#. duration less than hour +#: ../src/hamster/lib/stuff.py:60 +#, python-format +msgid "%dmin" +msgstr "%d min" + +#. x hours, y minutes +#: ../src/hamster/lib/stuff.py:63 +#, python-format +msgid "%dh %dmin" +msgstr "%d h %d min" + +#. label of date range if looking on single day +#. date format for overview label when only single day is visible +#. Using python datetime formatting syntax. See: +#. http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/lib/stuff.py:80 +msgid "%B %d, %Y" +msgstr "%d. %m. %Y." + +#. label of date range if start and end years don't match +#. letter after prefixes (start_, end_) is the one of +#. standard python date formatting ones- you can use all of them +#. see http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/lib/stuff.py:86 +#, python-format +msgid "%(start_B)s %(start_d)s, %(start_Y)s â %(end_B)s %(end_d)s, %(end_Y)s" +msgstr "" +"%(start_d)s. %(start_m)s. %(start_Y)s. â %(end_d)s. %(end_m)s. %(end_Y)s." + +#. label of date range if start and end month do not match +#. letter after prefixes (start_, end_) is the one of +#. standard python date formatting ones- you can use all of them +#. see http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/lib/stuff.py:92 +#, python-format +msgid "%(start_B)s %(start_d)s â %(end_B)s %(end_d)s, %(end_Y)s" +msgstr "%(start_d)s. %(start_m)s. â %(end_d)s. %(end_m)s. %(end_Y)s." + +#. label of date range for interval in same month +#. letter after prefixes (start_, end_) is the one of +#. standard python date formatting ones- you can use all of them +#. see http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/lib/stuff.py:98 +#, python-format +msgid "%(start_B)s %(start_d)s â %(end_d)s, %(end_Y)s" +msgstr "%(start_d)s. â %(end_d)s. %(start_m)s. %(end_Y)s." + +#: ../src/hamster/overview_activities.py:88 +msgctxt "overview list" +msgid "%A, %b %d" +msgstr "%A, %d. %m." + +#: ../src/hamster/overview_totals.py:161 +#, python-format +msgid "%s hours tracked total" +msgstr "Ukupno je praÄeno %s h" + +#. Translators: 'None' refers here to the Todo list choice in Hamster preferences (Tracking tab) +#: ../src/hamster/preferences.py:113 +msgid "None" +msgstr "NiÅ¡ta" + +#: ../src/hamster/preferences.py:130 ../src/hamster/preferences.py:208 +msgid "Name" +msgstr "Ime" + +#: ../src/hamster/preferences.py:664 +msgid "New category" +msgstr "Nova kategorija" + +#: ../src/hamster/preferences.py:677 +msgid "New activity" +msgstr "Nova aktivnost" + +#. notify interval slider value label +#: ../src/hamster/preferences.py:738 +#, python-format +msgid "%(interval_minutes)d minute" +msgid_plural "%(interval_minutes)d minutes" +msgstr[0] "%(interval_minutes)d minuta" +msgstr[1] "%(interval_minutes)d minute" +msgstr[2] "%(interval_minutes)d minuta" + +#. notify interval slider value label +#: ../src/hamster/preferences.py:743 +msgid "Never" +msgstr "Nikada" + +#. column title in the TSV export format +#: ../src/hamster/reports.py:148 +msgid "activity" +msgstr "aktivnost" + +#. column title in the TSV export format +#: ../src/hamster/reports.py:150 +msgid "start time" +msgstr "vrijeme poÄetka" + +#. column title in the TSV export format +#: ../src/hamster/reports.py:152 +msgid "end time" +msgstr "vrijeme kraja" + +#. column title in the TSV export format +#: ../src/hamster/reports.py:154 +msgid "duration minutes" +msgstr "trajanje u minutima" + +#. column title in the TSV export format +#: ../src/hamster/reports.py:156 +msgid "category" +msgstr "kategorija" + +#. column title in the TSV export format +#: ../src/hamster/reports.py:158 +msgid "description" +msgstr "opis" + +#. column title in the TSV export format +#: ../src/hamster/reports.py:160 ../src/hamster/reports.py:312 +msgid "tags" +msgstr "oznake" + +#: ../src/hamster/reports.py:207 +#, python-format +msgid "" +"Activity report for %(start_B)s %(start_d)s, %(start_Y)s â %(end_B)s " +"%(end_d)s, %(end_Y)s" +msgstr "" +"IzvjeÅ¡taj o aktivnostima za %(start_d)s. %(start_m)s. %(start_Y)s. â " +"%(end_d)s. %(end_m)s. %(end_Y)s." + +#: ../src/hamster/reports.py:209 +#, python-format +msgid "" +"Activity report for %(start_B)s %(start_d)s â %(end_B)s %(end_d)s, %(end_Y)s" +msgstr "" +"IzvjeÅ¡taj o aktivnostima za %(start_d)s. %(start_m)s. â %(end_d)s. " +"%(end_m)s. %(end_Y)s." + +#: ../src/hamster/reports.py:211 +#, python-format +msgid "Activity report for %(start_B)s %(start_d)s, %(start_Y)s" +msgstr "IzvjeÅ¡taj o aktivnostima za %(start_d)s. %(start_m)s. %(start_Y)s." + +#: ../src/hamster/reports.py:213 +#, python-format +msgid "Activity report for %(start_B)s %(start_d)s â %(end_d)s, %(end_Y)s" +msgstr "" +"IzvjeÅ¡taj o aktivnostima za %(start_d)s â %(end_d)s. %(start_m)s. %(end_Y)s." + +#. date column format for each row in HTML report +#. Using python datetime formatting syntax. See: +#. http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/reports.py:265 ../src/hamster/reports.py:297 +msgctxt "html report" +msgid "%b %d, %Y" +msgstr "%d. %m. %Y." + +#. grand_total = _("%s hours") % ("%.1f" % (total_duration.seconds / 60.0 / 60 + total_duration.days * 24)), +#: ../src/hamster/reports.py:306 +msgid "Totals by Day" +msgstr "Ukupno po danima" + +#: ../src/hamster/reports.py:307 +msgid "Activity Log" +msgstr "Dnevnik aktivnosti" + +#: ../src/hamster/reports.py:310 +msgid "activities" +msgstr "aktivnosti" + +#: ../src/hamster/reports.py:311 +msgid "categories" +msgstr "kategorije" + +#: ../src/hamster/reports.py:314 +msgid "Distinguish:" +msgstr "Razlikuj:" + +#: ../src/hamster/reports.py:316 +msgid "Date" +msgstr "Datum" + +#: ../src/hamster/reports.py:326 +msgid "Show template" +msgstr "Prikaži predložak" + +#: ../src/hamster/reports.py:327 +#, python-format +msgid "You can override it by storing your version in %(home_folder)s" +msgstr "MožeÅ¡ ga promijeniti spremanjem tvoje verzije u mapu %(home_folder)s" + +#: ../src/hamster/stats.py:147 +msgctxt "years" +msgid "All" +msgstr "Sve" + +#: ../src/hamster/stats.py:177 +msgid "" +"There is no data to generate statistics yet.\n" +"A week of usage would be nice!" +msgstr "" +"JoÅ¡ nema podataka za generiranje statistike.\n" +"Tjedan dana koriÅ¡tenja bi pomoglo!" + +#: ../src/hamster/stats.py:180 +msgid "Collecting data â check back after a week has passed!" +msgstr "Prikupljanje podataka â pogledaj ponovo za tjedan dana!" + +#. date format for the first record if the year has not been selected +#. Using python datetime formatting syntax. See: +#. http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/stats.py:331 +msgctxt "first record" +msgid "%b %d, %Y" +msgstr "%d. %m. %Y." + +#. date of first record when year has been selected +#. Using python datetime formatting syntax. See: +#. http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/stats.py:336 +msgctxt "first record" +msgid "%b %d" +msgstr "%d. %m." + +#: ../src/hamster/stats.py:338 +#, python-format +msgid "First activity was recorded on %s." +msgstr "Prva aktivnost je zabilježena %s." + +#: ../src/hamster/stats.py:347 ../src/hamster/stats.py:351 +#, python-format +msgid "%(num)s year" +msgid_plural "%(num)s years" +msgstr[0] "%(num)s godina" +msgstr[1] "%(num)s godine" +msgstr[2] "%(num)s godina" + +#. FIXME: difficult string to properly pluralize +#: ../src/hamster/stats.py:356 +#, python-format +msgid "" +"Time tracked so far is %(human_days)s human days (%(human_years)s) or " +"%(working_days)s working days (%(working_years)s)." +msgstr "" +"Do sada praÄeno vrijeme iznosi %(human_days)s dana (%(human_years)s) ili " +"%(working_days)s radnih dana (%(working_years)s)." + +#. How the date of the longest activity should be displayed in statistics +#. Using python datetime formatting syntax. See: +#. http://docs.python.org/library/time.html#time.strftime +#: ../src/hamster/stats.py:374 +msgctxt "date of the longest activity" +msgid "%b %d, %Y" +msgstr "%d. %m. %Y." + +#: ../src/hamster/stats.py:379 +#, python-format +msgid "Longest continuous work happened on %(date)s and was %(hours)s hour." +msgid_plural "" +"Longest continuous work happened on %(date)s and was %(hours)s hours." +msgstr[0] "Najduži neprekidni posao je bio %(date)s i trajao je %(hours)s sat." +msgstr[1] "" +"Najduži neprekidni posao je bio %(date)s i trajao je %(hours)s sata." +msgstr[2] "" +"Najduži neprekidni posao je bio %(date)s i trajao je %(hours)s sati." + +#. total records (in selected scope) +#: ../src/hamster/stats.py:387 +#, python-format +msgid "There is %s record." +msgid_plural "There are %s records." +msgstr[0] "Postoji %s zapis." +msgstr[1] "Postoje %s zapisa." +msgstr[2] "Postoji %s zapisa." + +#: ../src/hamster/stats.py:407 +msgid "Hamster would like to observe you some more!" +msgstr "Hamster bi te želio joÅ¡ malo viÅ¡e nadgledati!" + +#: ../src/hamster/stats.py:409 +#, python-format +msgid "" +"With %s percent of all activities starting before 9am, you seem to be an " +"early bird." +msgstr "" +"Sa %s posto svih aktivnosti zapoÄete prije 9 sati prijepodne, izgleda da si " +"ranoranilac." + +#: ../src/hamster/stats.py:412 +#, python-format +msgid "" +"With %s percent of all activities starting after 11pm, you seem to be a " +"night owl." +msgstr "" +"Sa %s posto svih aktivnosti zapoÄete nakon 11 sati naveÄer, izgleda da si " +"noÄna ptica." + +#: ../src/hamster/stats.py:415 +#, python-format +msgid "" +"With %s percent of all activities being shorter than 15 minutes, you seem to " +"be a busy bee." +msgstr "" +"Sa %s posto svih aktivnosti kraÄe od 15 minuta, izgleda da si zaposlena " +"pÄelica." + +#: ../src/hamster/today.py:243 +msgid "No records today" +msgstr "Danas nema zapisa" + +#: ../src/hamster/today.py:250 +#, python-format +msgid "%(category)s: %(duration)s" +msgstr "%(category)s: %(duration)s" + +#. duration in main drop-down per category in hours +#: ../src/hamster/today.py:253 +#, python-format +msgid "%sh" +msgstr "%s h" + +#: ../src/hamster/today.py:280 +msgid "Just started" +msgstr "Upravo pokrenuto" + +#: ../src/hamster/widgets/reportchooserdialog.py:39 +msgid "Save Report â Time Tracker" +msgstr "Spremi izveÅ¡taj â PraÄenje vremena" + +#: ../src/hamster/widgets/reportchooserdialog.py:57 +msgid "HTML Report" +msgstr "HTML izveÅ¡taj" + +#: ../src/hamster/widgets/reportchooserdialog.py:65 +msgid "Tab-Separated Values (TSV)" +msgstr "Tabulatorom odvojene vrijednosti (TSV)" + +#: ../src/hamster/widgets/reportchooserdialog.py:73 +msgid "XML" +msgstr "XML" + +#: ../src/hamster/widgets/reportchooserdialog.py:80 +msgid "iCal" +msgstr "iCal" + +#. title in the report file name +#: ../src/hamster/widgets/reportchooserdialog.py:97 +msgid "Time track" +msgstr "PraÄenje vremena" + +#~| msgid "activities" +#~ msgid "Show activities window" +#~ msgstr "Prikažite prozor aktivnosti" + +#~ msgid "Sto_p Tracking" +#~ msgstr "Zaustavi _praÄenje" + +#~ msgid "To_day" +#~ msgstr "_Danas" + +#~ msgid "_Add earlier activity" +#~ msgstr "Dod_aj raniju aktivnost" + +#~ msgid "Show _Overview" +#~ msgstr "Prikaži _pregled" + +#~ msgid "_Preferences" +#~ msgstr "_Postavke" + +#~ msgid "_About" +#~ msgstr "_O programu" + +#~ msgid "Year:" +#~ msgstr "Godina:" + +#~ msgid "Starts and ends" +#~ msgstr "PoÄetak i kraj" + +#~ msgid "Preferences" +#~ msgstr "Postavke" + +#~ msgid "Changed activity" +#~ msgstr "Izmenjena aktivnost" + +#~ msgid "Switched to '%s'" +#~ msgstr "PrebaÄena u â%sâ" + +#~ msgid "Working on <b>%s</b>" +#~ msgstr "Radim na <b>%s</b>" + +#~ msgid "Hamster time tracker. Usage:" +#~ msgstr "Vredni hrÄak praÄenje vremena. KoriÅ¡Äenje:" + +#~ msgid "Project Hamster (GNOME Time Tracker)" +#~ msgstr "Vredni hrÄak (PraÄenje vremena za Gnom)" + +#~ msgid "totals by activity" +#~ msgstr "ukupno po aktivnostima" + +#~ msgid "totals by category" +#~ msgstr "ukupno po kategorijama" + +#~ msgid "Show:" +#~ msgstr "Prikaži:" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/src/hamster/lib/i18n.py new/hamster-time-tracker-3.0.3~20/src/hamster/lib/i18n.py --- old/hamster-time-tracker-3.0.3~1/src/hamster/lib/i18n.py 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/src/hamster/lib/i18n.py 2023-04-29 20:31:17.000000000 +0200 @@ -21,8 +21,6 @@ module.bindtextdomain('hamster', locale_dir) module.textdomain('hamster') - module.bind_textdomain_codeset('hamster','utf8') - gettext.install("hamster", locale_dir) else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/src/hamster/lib/pytweener.py new/hamster-time-tracker-3.0.3~20/src/hamster/lib/pytweener.py --- old/hamster-time-tracker-3.0.3~1/src/hamster/lib/pytweener.py 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/src/hamster/lib/pytweener.py 2023-04-29 20:31:17.000000000 +0200 @@ -314,7 +314,7 @@ def _elastic_in(t, springiness = 0, wave_length = 0): - if t in(0, 1): + if t in (0, 1): return t wave_length = wave_length or (1 - t) * 0.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/src/hamster/reports.py new/hamster-time-tracker-3.0.3~20/src/hamster/reports.py --- old/hamster-time-tracker-3.0.3~1/src/hamster/reports.py 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/src/hamster/reports.py 2023-04-29 20:31:17.000000000 +0200 @@ -26,6 +26,7 @@ import itertools import re import codecs +import html from string import Template from textwrap import dedent @@ -248,9 +249,9 @@ # http://docs.python.org/library/time.html#time.strftime C_("html report","%b %d, %Y")), date_iso = fact.date.isoformat(), - activity = fact.activity, - category = category, - tags = ", ".join(fact.tags), + activity = html.escape(fact.activity), + category = html.escape(category), + tags = html.escape(", ".join(fact.tags)), start = fact.start_time.strftime('%H:%M'), start_iso = fact.start_time.isoformat(), end = end_time_str, @@ -258,7 +259,8 @@ duration = fact.delta.format(), duration_minutes = "%d" % (stuff.duration_minutes(fact.delta)), duration_decimal = "%.2f" % (stuff.duration_minutes(fact.delta) / 60.0), - description = fact.description or "" + # not only escape html characters, but ensure \n is respected in output + description = html.escape(fact.description).replace('\n', '<br />') or "" ) self.fact_rows.append(Template(self.fact_row_template).safe_substitute(data)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamster-time-tracker-3.0.3~1/src/hamster/widgets/facttree.py new/hamster-time-tracker-3.0.3~20/src/hamster/widgets/facttree.py --- old/hamster-time-tracker-3.0.3~1/src/hamster/widgets/facttree.py 2021-06-16 10:56:56.000000000 +0200 +++ new/hamster-time-tracker-3.0.3~20/src/hamster/widgets/facttree.py 2023-04-29 20:31:17.000000000 +0200 @@ -76,7 +76,7 @@ self._label_context = cairo.Context(cairo.ImageSurface(cairo.FORMAT_A1, 0, 0)) self.layout = pangocairo.create_layout(self._label_context) self.layout.set_font_description(pango.FontDescription(graphics._font_desc)) - self.set_text("Hamster") # dummy + self.set_text("00:00 - 00:00") # dummy time_label for finding width @property def height(self): @@ -128,7 +128,8 @@ class FactRow(object): def __init__(self): self.time_label = Label() - self.activity_label = Label(x=100) + x = self.time_label.layout.get_pixel_size()[0] + 10 + self.activity_label = Label(x=x) self.category_label = Label() self.description_label = Label()