Hello community, here is the log from the commit of package cozy for openSUSE:Factory checked in at 2020-03-01 21:28:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cozy (Old) and /work/SRC/openSUSE:Factory/.cozy.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cozy" Sun Mar 1 21:28:34 2020 rev:11 rq:780753 version:0.6.14 Changes: -------- --- /work/SRC/openSUSE:Factory/cozy/cozy.changes 2020-02-28 15:20:47.945826892 +0100 +++ /work/SRC/openSUSE:Factory/.cozy.new.26092/cozy.changes 2020-03-01 21:29:06.516689888 +0100 @@ -1,0 +2,13 @@ +Sun Mar 1 16:39:55 UTC 2020 - [email protected] + +- Update to 0.6.14 + * A warning is displayed in the titlebar if network/external drives are not connected + * MPRIS desktop integration is more stable + * Fix: Last book was loaded on startup even when the storage medium was offline + * Fix: Bugs in audiobook location settings window + * Fix: Bug which sometimes could prevent playback of an audiobook + * Fix: Crash which could occur on startup + * Fix: Jumping in titlebar while dragging the position slider with long audio files + * Updated translations + +------------------------------------------------------------------- Old: ---- cozy-0.6.13.tar.gz New: ---- cozy-0.6.14.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cozy.spec ++++++ --- /var/tmp/diff_new_pack.1s5s6x/_old 2020-03-01 21:29:07.696692285 +0100 +++ /var/tmp/diff_new_pack.1s5s6x/_new 2020-03-01 21:29:07.696692285 +0100 @@ -17,7 +17,7 @@ Name: cozy -Version: 0.6.13 +Version: 0.6.14 Release: 0 Summary: Audio Book Player License: GPL-3.0-only ++++++ cozy-0.6.13.tar.gz -> cozy-0.6.14.tar.gz ++++++ ++++ 1872 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/README.md new/cozy-0.6.14/README.md --- old/cozy-0.6.13/README.md 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/README.md 2020-03-01 17:33:29.000000000 +0100 @@ -41,6 +41,8 @@ - `peewee >= 3.5` as object relation mapper - `python3-mutagen` for meta tag management - `python3-distro` +- `python3-requests` +- `python3-pytz` - `python3-gi-cairo` - `python3-gst-1.0` - `file` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/control/artwork_cache.py new/cozy-0.6.14/cozy/control/artwork_cache.py --- old/cozy-0.6.13/cozy/control/artwork_cache.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/control/artwork_cache.py 2020-03-01 17:33:29.000000000 +0100 @@ -106,7 +106,11 @@ query = ArtworkCache.select().where(ArtworkCache.book == book.id) if query.exists(): - uuid = query.first().uuid + try: + uuid = query.first().uuid + except Exception as e: + reporter.error("artwork_cache", "load_pixbuf_from_cache: query exists but query.first().uuid crashed.") + return None else: return None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/control/mpris.py new/cozy-0.6.14/cozy/control/mpris.py --- old/cozy-0.6.13/cozy/control/mpris.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/control/mpris.py 2020-03-01 17:33:29.000000000 +0100 @@ -40,9 +40,12 @@ method_inargs[method.name] = tuple( arg.signature for arg in method.in_args) - con.register_object(object_path=path, - interface_info=interface, - method_call_closure=self.on_method_call) + try: + con.register_object(object_path=path, + interface_info=interface, + method_call_closure=self.on_method_call) + except: + log.error("MPRIS is already connected from another cozy process.") self.method_inargs = method_inargs self.method_outargs = method_outargs @@ -58,7 +61,7 @@ args = list(parameters.unpack()) for i, sig in enumerate(self.method_inargs[method_name]): - if sig is "h": + if sig == "h": msg = invocation.get_message() fd_list = msg.get_unix_fd_list() args[i] = fd_list.get(args[i]) @@ -77,8 +80,9 @@ invocation.return_value(variant) else: invocation.return_value(None) - except: - reporter.error("mpris", "MPRIS method call failed") + except Exception as e: + log.error(e) + reporter.exception("mpris", e) pass @@ -195,25 +199,31 @@ self.__app.quit() def Next(self): - next_track() + if get_current_track(): + next_track() def Previous(self): - prev_track() + if get_current_track(): + prev_track() def Pause(self): - play_pause(None) + if get_current_track(): + play_pause(None) def PlayPause(self): - play_pause(None) + if get_current_track(): + play_pause(None) def Stop(self): stop() def Play(self): - play_pause(None) + if get_current_track(): + play_pause(None) def SetPosition(self, track_id, position): - jump_to_ns(position) + print(position) + jump_to_ns(position * 1e3) def Seek(self, offset): pass @@ -250,7 +260,7 @@ elif property_name == "Position": return GLib.Variant( "x", - get_current_duration()) + round(get_current_duration() * 1e-3)) elif property_name in ["CanGoNext", "CanGoPrevious", "CanPlay", "CanPause"]: return GLib.Variant("b", get_current_track() is not None) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/control/player.py new/cozy-0.6.14/cozy/control/player.py --- old/cozy-0.6.13/cozy/control/player.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/control/player.py 2020-03-01 17:33:29.000000000 +0100 @@ -377,7 +377,11 @@ if get_playbin().query(query): fmt, seek_enabled, start, end = query.parse_seeking() if seek_enabled: - jump_to_ns(get_current_track().position) + track = get_current_track() + if not track: + return + + jump_to_ns(track.position) __wait_to_seek = False __set_speed = False if __set_speed: @@ -498,7 +502,7 @@ else: path = OfflineCache().get_cached_path(last_track) if not path: - path = last_track.file + return __player.set_property("uri", "file://" + path) __player.set_state(Gst.State.PAUSED) __current_track = last_track @@ -544,9 +548,10 @@ if track is None: track = get_current_track() - - Track.update(position=pos).where( - Track.id == track.id).execute() + + if track: + Track.update(position=pos).where( + Track.id == track.id).execute() def emit_event(event, message=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/control/string_representation.py new/cozy-0.6.14/cozy/control/string_representation.py --- old/cozy-0.6.13/cozy/control/string_representation.py 1970-01-01 01:00:00.000000000 +0100 +++ new/cozy-0.6.14/cozy/control/string_representation.py 2020-03-01 17:33:29.000000000 +0100 @@ -0,0 +1,29 @@ +def seconds_to_str(seconds, max_length=None, include_seconds=True): + """ + Converts seconds to a string with the following apperance: + hh:mm:ss + + :param seconds: The seconds as float + """ + m, s = divmod(seconds, 60) + h, m = divmod(m, 60) + + if max_length: + max_m, max_s = divmod(max_length, 60) + max_h, max_m = divmod(max_m, 60) + else: + max_h = h + max_m = m + max_s = s + + if (max_h >= 10): + result = "%02d:%02d" % (h, m) + elif (max_h >= 1): + result = "%d:%02d" % (h, m) + else: + result = "%02d" % (m) + + if include_seconds: + result += ":%02d" % (s) + + return result diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/magic/magic.py new/cozy-0.6.14/cozy/magic/magic.py --- old/cozy-0.6.13/cozy/magic/magic.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/magic/magic.py 2020-03-01 17:33:29.000000000 +0100 @@ -195,7 +195,7 @@ return result def errorcheck_negative_one(result, func, args): - if result is -1: + if result == -1: err = magic_error(args[0]) raise MagicException(err) else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/report/report_to_loki.py new/cozy-0.6.14/cozy/report/report_to_loki.py --- old/cozy-0.6.13/cozy/report/report_to_loki.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/report/report_to_loki.py 2020-03-01 17:33:29.000000000 +0100 @@ -1,3 +1,5 @@ +import os + import requests import datetime import pytz @@ -46,6 +48,7 @@ labels = __append_label(labels, "peewee_version", PeeweeVersion) labels = __append_label(labels, "mutagen_version", MutagenVersion) labels = __append_label(labels, "gtk_version", "{}.{}".format(Gtk.get_major_version(), Gtk.get_minor_version())) + labels = __append_label(labels, "desktop_environment", os.environ.get('DESKTOP_SESSION')) labels = __append_label(labels, "version", CozyVersion) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/tools.py new/cozy-0.6.14/cozy/tools.py --- old/cozy-0.6.13/cozy/tools.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/tools.py 2020-03-01 17:33:29.000000000 +0100 @@ -9,10 +9,12 @@ from gi.repository import Gio import cozy.magic.magic as magic + class Platform(Enum): Linux = 0 Mac = 1 + def system_platform(): os = get_system().upper() if "LINUX" in os: @@ -30,23 +32,27 @@ """ return (string[:length] + '…') if len(string) > length else string + def is_elementary(): - """ - Currently we are only checking for elementaryOS - """ - dist = distro.linux_distribution(full_distribution_name=False) - log.debug(dist) - if '"elementary"' in dist or 'elementary' in dist: - return True - else: - return False + """ + Currently we are only checking for elementaryOS + """ + dist = distro.linux_distribution(full_distribution_name=False) + log.debug(dist) + if '"elementary"' in dist or 'elementary' in dist: + return True + else: + return False settings = Gio.Settings.new("com.github.geigi.cozy") + + def get_glib_settings(): global settings return settings + # https://stackoverflow.com/questions/323972/is-there-any-way-to-kill-a-thread-in-python class StoppableThread(threading.Thread): """Thread class with a stop() method. The thread itself has to check @@ -62,6 +68,7 @@ def stopped(self): return self._stop_event.is_set() + # From https://stackoverflow.com/questions/11488877/periodically-execute-function-in-thread-in-real-time-every-n-seconds class IntervalTimer(StoppableThread): @@ -76,41 +83,6 @@ time.sleep(self._interval) -def seconds_to_str(seconds, include_seconds=True, display_zero_h=False): - """ - Converts seconds to a string with the following apperance: - hh:mm:ss - - :param seconds: The seconds as float - """ - m, s = divmod(seconds, 60) - h, m = divmod(m, 60) - - if include_seconds: - if (h > 0): - result = "%d:%02d:%02d" % (h, m, s) - elif (m > 0): - result = "%02d:%02d" % (m, s) - if display_zero_h: - result = "0:" + result - else: - result = "00:%02d" % (s) - if display_zero_h: - result = "0:" + result - else: - if (h > 0): - result = "%d:%02d" % (h, m) - elif (m > 0): - result = "00:%02d" % (m) - if display_zero_h: - result = "0:" + result - else: - result = "00:00" - if display_zero_h: - result = "0:" + result - - return result - def remove_all_children(container): """ Removes all widgets from a gtk container. @@ -119,9 +91,10 @@ childs = container.get_children() for element in childs: container.remove(element) - #element.destroy() + # element.destroy() container.set_visible(True) + def seconds_to_human_readable(seconds): """ Create a string with the following format: @@ -143,7 +116,7 @@ result += _("hours") else: result += _("hour") - + if m > 0: result += " " @@ -153,7 +126,7 @@ result += _("minutes") else: result += _("minute") - + if h < 1 and m < 1: if s < 1: result += _("finished") @@ -166,6 +139,7 @@ return result + def past_date_to_human_readable(unix_time): """ Converts the date to the following strings (from today): @@ -199,6 +173,7 @@ else: return ngettext('{years} year ago', '{years} years ago', years).format(years=years) + def __get_media_type(path): """ Get the mime type of a file. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/ui/book_element.py new/cozy-0.6.14/cozy/ui/book_element.py --- old/cozy-0.6.13/cozy/ui/book_element.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/ui/book_element.py 2020-03-01 17:33:29.000000000 +0100 @@ -7,6 +7,7 @@ import cozy.ui from cozy.control.db import get_track_for_playback, is_external, blacklist_book, get_tracks from cozy.control.filesystem_monitor import FilesystemMonitor +from cozy.control.string_representation import seconds_to_str from cozy.model.book import Book from cozy.model.track import Track from cozy.report import reporter @@ -366,11 +367,18 @@ if message in get_tracks(self.book).first().file: super().set_sensitive(True) self.box.set_tooltip_text(self.ONLINE_TOOLTIP_TEXT) - elif (event == "storage-offline" and super().get_sensitive()) or event == "external-storage-added": + elif (event == "storage-offline" and super().get_sensitive()): self.refresh_book_object() if message in get_tracks(self.book).first().file and not self.book.offline: super().set_sensitive(False) self.box.set_tooltip_text(self.OFFLINE_TOOLTIP_TEXT) + elif event == "external-storage-added": + self.refresh_book_object() + if FilesystemMonitor().is_book_online(self.book): + super().set_sensitive(True) + else: + super().set_sensitive(False) + self.box.set_tooltip_text(self.OFFLINE_TOOLTIP_TEXT) if event == "external-storage-removed": first_track = get_tracks(self.book).first() if first_track and message in first_track.file: @@ -431,7 +439,7 @@ title_label.props.xalign = 0.0 title_label.set_ellipsize(Pango.EllipsizeMode.MIDDLE) - dur_label.set_text(tools.seconds_to_str(self.track.length)) + dur_label.set_text(seconds_to_str(self.track.length)) dur_label.set_halign(Gtk.Align.END) dur_label.props.margin = 4 dur_label.set_margin_left(60) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/ui/settings.py new/cozy-0.6.14/cozy/ui/settings.py --- old/cozy-0.6.13/cozy/ui/settings.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/ui/settings.py 2020-03-01 17:33:29.000000000 +0100 @@ -41,7 +41,7 @@ self.remove_storage_button = self.builder.get_object("remove_location_button") self.remove_storage_button.connect("clicked", self.__on_remove_storage_clicked) self.external_button = self.builder.get_object("external_button") - self.external_button.connect("clicked", self.__on_external_clicked) + self.external_button_handle_id = self.external_button.connect("clicked", self.__on_external_clicked) self.default_storage_button = self.builder.get_object("default_location_button") self.default_storage_button.connect("clicked", self.__on_default_storage_clicked) self.storage_list_box = self.builder.get_object("storage_list_box") @@ -213,8 +213,9 @@ default_sensitive = False else: default_sensitive = True - + self.external_button.handler_block(self.external_button_handle_id) self.external_button.set_active(row.external) + self.external_button.handler_unblock(self.external_button_handle_id) self.remove_storage_button.set_sensitive(default_sensitive) self.external_button.set_sensitive(sensitive) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/ui/titlebar.py new/cozy-0.6.14/cozy/ui/titlebar.py --- old/cozy-0.6.13/cozy/ui/titlebar.py 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/cozy/ui/titlebar.py 2020-03-01 17:33:29.000000000 +0100 @@ -3,17 +3,23 @@ import cozy.tools as tools import cozy.ui from cozy.control.db import get_book_remaining, get_book_progress, get_track_from_book_time, get_book_duration +from cozy.control.string_representation import seconds_to_str from cozy.model.settings import Settings from cozy.tools import IntervalTimer import gi + +from cozy.ui.warnings import Warnings + gi.require_version('Gtk', '3.0') gi.require_version('Gst', '1.0') from gi.repository import Gtk, Gdk, GLib import logging + log = logging.getLogger("titlebar") + class Titlebar: """ This class contains all titlebar logic. @@ -46,6 +52,7 @@ self.playback_speed_button = self.ui.get_object( "playback_speed_button") self.search_button = self.ui.get_object("search_button") + self.warnings_button = self.ui.get_object("warnings_button") self.menu_button = self.ui.get_object("menu_button") self.remaining_event_box = self.ui.get_object("remaining_event_box") @@ -119,6 +126,8 @@ self.timer_button.set_popover(self.ui.sleep_timer.get_popover()) self.playback_speed_button.set_popover(self.ui.speed.get_popover()) self.search_button.set_popover(self.ui.search.get_popover()) + self.warnings = Warnings(self.warnings_button) + self.warnings_button.set_popover(self.warnings.get_popover()) def block_ui_buttons(self, block, scan=False): """ @@ -192,27 +201,25 @@ """ Displays the value of the progress slider in the text boxes as time. """ + track = player.get_current_track() + + if not track: + log.debug("update_ui_time: track was None.") + return + val = int(self.progress_scale.get_value()) if tools.get_glib_settings().get_boolean("titlebar-remaining-time"): - label_text = tools.seconds_to_str(val, display_zero_h=True) + total = self.progress_scale.get_adjustment().get_upper() + remaining_secs: int = int((total - val)) + current_text = seconds_to_str(val, total) + remaining_text = seconds_to_str(remaining_secs, total) else: - label_text = tools.seconds_to_str(val) + remaining_secs = int((track.length / self.ui.speed.get_speed()) - val) + remaining_text = seconds_to_str(remaining_secs, track.length) + current_text = seconds_to_str(val, track.length) - self.current_label.set_markup( - "<tt><b>" + label_text + "</b></tt>") - track = player.get_current_track() - - if track: - if tools.get_glib_settings().get_boolean("titlebar-remaining-time"): - total = self.progress_scale.get_adjustment().get_upper() - remaining_secs: int = int((total - val)) - self.remaining_label.set_markup( - "<tt><b>-" + tools.seconds_to_str(remaining_secs, display_zero_h=True) + "</b></tt>") - else: - remaining_secs: int = int( - (track.length / self.ui.speed.get_speed()) - val) - self.remaining_label.set_markup( - "<tt><b>-" + tools.seconds_to_str(remaining_secs, display_zero_h=False) + "</b></tt>") + self.current_label.set_markup("<tt><b>" + current_text + "</b></tt>") + self.remaining_label.set_markup("<tt><b>-" + remaining_text + "</b></tt>") if self.ui.book_overview.book and self.current_book.id == self.ui.book_overview.book.id: self.ui.book_overview.update_time() @@ -298,7 +305,7 @@ """ Switch between displaying the time for a track or the whole book. """ - if widget.get_name is not "titlebar_remaining_time_eventbox": + if widget.get_name != "titlebar_remaining_time_eventbox": if tools.get_glib_settings().get_boolean("titlebar-remaining-time"): tools.get_glib_settings().set_boolean("titlebar-remaining-time", False) else: @@ -454,6 +461,8 @@ """ Handler for events that occur the playback speed object. """ + self.__ensure_book_object_is_up_to_date() + if event == "playback-speed-changed": speed = message m, s = player.get_current_duration_ui() @@ -462,6 +471,14 @@ self.__set_progress_scale_value(value) self.update_ui_time(None) + def __ensure_book_object_is_up_to_date(self): + # Racecondition: Sometimes the "track-changed" event is fired in playback_speed first before titlebar. Then it might happen, that the current_book is None or not uptodate. + # Only way to fix this is having a global truth that is accessed from everywhere. + # TODO + if player.get_current_track() and ( + not self.current_book or player.get_current_track() and self.current_book.id != player.get_current_track().book.id): + self.update_track_ui() + def __player_changed(self, event, message): """ Listen to and handle all gst player messages that are important for the ui. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/cozy/ui/warnings.py new/cozy-0.6.14/cozy/ui/warnings.py --- old/cozy-0.6.13/cozy/ui/warnings.py 1970-01-01 01:00:00.000000000 +0100 +++ new/cozy-0.6.14/cozy/ui/warnings.py 2020-03-01 17:33:29.000000000 +0100 @@ -0,0 +1,51 @@ +from gettext import gettext + +import gi + +from cozy.control.filesystem_monitor import FilesystemMonitor + +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + + +class Warnings(): + def __init__(self, button: Gtk.MenuButton): + self.button = button + + self.builder = Gtk.Builder.new_from_resource( + "/de/geigi/cozy/warning_popover.ui") + + self.popover = self.builder.get_object("warning_popover") + self.warning_container: Gtk.Box = self.builder.get_object("warning_container") + + FilesystemMonitor().add_listener(self.__on_storage_changed) + + for storage in FilesystemMonitor().get_offline_storages(): + self.append_text(gettext('{storage} is offline.').format(storage=storage)) + + self.__hide_show_button() + + def get_popover(self): + return self.popover + + def append_text(self, text): + label = Gtk.Label() + self.warning_container.add(label) + label.set_visible(True) + label.set_text(text) + + def __on_storage_changed(self, event, message): + if event == "storage-offline": + self.append_text(gettext('{storage} is offline.').format(storage=message)) + if event == "storage-online": + for label in self.warning_container.get_children(): + if message in label.get_text(): + self.warning_container.remove(label) + + self.__hide_show_button() + + def __hide_show_button(self): + if len(self.warning_container.get_children()) > 0: + self.button.set_visible(True) + else: + self.button.set_visible(False) \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/data/com.github.geigi.cozy.appdata.xml.in new/cozy-0.6.14/data/com.github.geigi.cozy.appdata.xml.in --- old/cozy-0.6.13/data/com.github.geigi.cozy.appdata.xml.in 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/data/com.github.geigi.cozy.appdata.xml.in 2020-03-01 17:33:29.000000000 +0100 @@ -49,6 +49,20 @@ <url type="donation">https://www.patreon.com/geigi</url> <update_contact>[email protected]</update_contact> <releases> + <release version="0.6.14" timestamp="1583080049"> + <description> + <ul> + <li>A warning is displayed in the titlebar if network/external drives are not connected</li> + <li>MPRIS desktop integration is more stable</li> + <li>Fix: Last book was loaded on startup even when the storage medium was offline</li> + <li>Fix: Bugs in audiobook location settings window</li> + <li>Fix: Bug which sometimes could prevent playback of an audiobook</li> + <li>Fix: Crash which could occur on startup</li> + <li>Fix: Jumping in titlebar while dragging the position slider with long audio files</li> + <li>Updated translations</li> + </ul> + </description> + </release> <release version="0.6.13" timestamp="1582820006"> <description> <ul> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/data/ui/gresource.xml new/cozy-0.6.14/data/ui/gresource.xml --- old/cozy-0.6.13/data/ui/gresource.xml 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/data/ui/gresource.xml 2020-03-01 17:33:29.000000000 +0100 @@ -13,5 +13,6 @@ <file preprocess="xml-stripblanks">import_failed.ui</file> <file preprocess="xml-stripblanks">playback_speed_popover.ui</file> <file preprocess="xml-stripblanks">titlebar_menu.ui</file> + <file preprocess="xml-stripblanks">warning_popover.ui</file> </gresource> </gresources> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/data/ui/main_window.ui new/cozy-0.6.14/data/ui/main_window.ui --- old/cozy-0.6.13/data/ui/main_window.ui 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/data/ui/main_window.ui 2020-03-01 17:33:29.000000000 +0100 @@ -163,6 +163,31 @@ </packing> </child> <child> + <object class="GtkMenuButton" id="warnings_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Warnings</property> + <property name="halign">center</property> + <property name="valign">center</property> + <property name="margin_left">5</property> + <property name="margin_right">5</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-dialog-warning</property> + <property name="icon_size">3</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> <object class="GtkBox" id="cover_img_box"> <property name="width_request">40</property> <property name="height_request">40</property> @@ -189,7 +214,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -259,7 +284,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> </object> @@ -1608,7 +1633,7 @@ </object> <packing> <property name="name">book_overview</property> - <property name="title" translatable="no">page0</property> + <property name="title">page0</property> <property name="position">3</property> </packing> </child> @@ -1641,7 +1666,7 @@ </object> <packing> <property name="name">nothing_here</property> - <property name="title" translatable="no">page0</property> + <property name="title">page0</property> <property name="position">4</property> </packing> </child> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/data/ui/warning_popover.ui new/cozy-0.6.14/data/ui/warning_popover.ui --- old/cozy-0.6.13/data/ui/warning_popover.ui 1970-01-01 01:00:00.000000000 +0100 +++ new/cozy-0.6.14/data/ui/warning_popover.ui 2020-03-01 17:33:29.000000000 +0100 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.1 --> +<interface> + <requires lib="gtk+" version="3.20"/> + <object class="GtkPopover" id="warning_popover"> + <property name="can_focus">False</property> + <child> + <object class="GtkBox" id="warning_container"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">10</property> + <property name="margin_right">10</property> + <property name="margin_top">10</property> + <property name="margin_bottom">10</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> + <child> + <placeholder/> + </child> + </object> + </child> + </object> +</interface> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/meson.build new/cozy-0.6.14/meson.build --- old/cozy-0.6.13/meson.build 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/meson.build 2020-03-01 17:33:29.000000000 +0100 @@ -1,4 +1,4 @@ -project('com.github.geigi.cozy', version: '0.6.13') +project('com.github.geigi.cozy', version: '0.6.14') python = import('python3') i18n = import('i18n') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/po/POTFILES new/cozy-0.6.14/po/POTFILES --- old/cozy-0.6.13/po/POTFILES 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/po/POTFILES 2020-03-01 17:33:29.000000000 +0100 @@ -13,6 +13,7 @@ cozy/control/sleep_timer.py cozy/ui/settings.py cozy/ui/disk_element.py +cozy/ui/warnings.py data/ui/main_window.ui data/ui/about.ui data/ui/file_not_found.ui diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/po/de.po new/cozy-0.6.14/po/de.po --- old/cozy-0.6.13/po/de.po 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/po/de.po 2020-03-01 17:33:29.000000000 +0100 @@ -2,7 +2,7 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.geigi.cozy package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# +# # Translators: # Julian Geywitz <[email protected]>, 2020 # @@ -11,41 +11,41 @@ msgstr "" "Project-Id-Version: com.github.geigi.cozy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-27 17:01+0100\n" +"POT-Creation-Date: 2020-03-01 14:44+0100\n" "PO-Revision-Date: 2019-09-08 09:31+0000\n" "Last-Translator: Julian Geywitz <[email protected]>, 2020\n" "Language-Team: German (https://www.transifex.com/geigi/teams/78138/de/)\n" -"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: cozy/ui/book_element.py:70 cozy/ui/search_results.py:123 +#: cozy/ui/book_element.py:71 cozy/ui/search_results.py:123 msgid "Play this book" msgstr "Höre dieses Buch" -#: cozy/ui/book_element.py:215 +#: cozy/ui/book_element.py:216 msgid "Open book overview" msgstr "Öffne die Buchübersicht" -#: cozy/ui/book_element.py:216 +#: cozy/ui/book_element.py:217 msgid "Currently offline" msgstr "Aktuell offline" -#: cozy/ui/book_element.py:322 +#: cozy/ui/book_element.py:323 msgid "Mark as read" msgstr "Markiere: Abgeschlossen" -#: cozy/ui/book_element.py:325 +#: cozy/ui/book_element.py:326 msgid "Open in file browser" msgstr "Öffne in Dateibrowser" -#: cozy/ui/book_element.py:328 +#: cozy/ui/book_element.py:329 msgid "Remove from library" msgstr "Aus Bibliothek entfernen" -#: cozy/ui/book_element.py:398 +#: cozy/ui/book_element.py:399 msgid "Play this part" msgstr "Höre dieses Kapitel" @@ -53,7 +53,7 @@ msgid "Downloaded" msgstr "Heruntergeladen" -#: cozy/ui/book_overview.py:233 data/ui/main_window.ui:1328 +#: cozy/ui/book_overview.py:233 data/ui/main_window.ui:1353 msgid "Download" msgstr "Herunterladen" @@ -81,66 +81,66 @@ msgid "Unknown Reader" msgstr "Unbekannter Leser" -#: cozy/tools.py:143 +#: cozy/tools.py:116 msgid "hours" msgstr "Stunden" -#: cozy/tools.py:145 +#: cozy/tools.py:118 msgid "hour" msgstr "Stunde" -#: cozy/tools.py:153 +#: cozy/tools.py:126 msgid "minutes" msgstr "Minuten" -#: cozy/tools.py:155 +#: cozy/tools.py:128 msgid "minute" msgstr "Minute" -#: cozy/tools.py:159 +#: cozy/tools.py:132 msgid "finished" msgstr "fertig" -#: cozy/tools.py:163 +#: cozy/tools.py:136 msgid "seconds" msgstr "Sekunden" -#: cozy/tools.py:165 +#: cozy/tools.py:138 msgid "second" msgstr "Sekunde" -#: cozy/tools.py:188 +#: cozy/tools.py:162 msgid "never" msgstr "nie" -#: cozy/tools.py:190 +#: cozy/tools.py:164 msgid "today" msgstr "heute" -#: cozy/tools.py:192 +#: cozy/tools.py:166 msgid "yesterday" msgstr "gestern" -#: cozy/tools.py:194 +#: cozy/tools.py:168 #, python-format msgid "%s days ago" msgstr "vor %s Tagen" -#: cozy/tools.py:196 +#: cozy/tools.py:170 #, python-brace-format msgid "{weeks} week ago" msgid_plural "{weeks} weeks ago" msgstr[0] "vor {weeks} Woche" msgstr[1] "vor {weeks} Wochen" -#: cozy/tools.py:198 +#: cozy/tools.py:172 #, python-brace-format msgid "{months} month ago" msgid_plural "{months} months ago" msgstr[0] "vor {months} Monat" msgstr[1] "vor {months} Monaten" -#: cozy/tools.py:200 +#: cozy/tools.py:174 #, python-brace-format msgid "{years} year ago" msgid_plural "{years} years ago" @@ -188,6 +188,11 @@ msgid "Disc" msgstr "Disc" +#: cozy/ui/warnings.py:24 cozy/ui/warnings.py:39 +#, python-brace-format +msgid "{storage} is offline." +msgstr "{storage} ist offline." + #: data/ui/main_window.ui:71 msgid "Rewind 30 seconds" msgstr "Springe 30 Sekunden zurück" @@ -216,193 +221,198 @@ msgid "Volume control" msgstr "Lautstärke" -#: data/ui/main_window.ui:200 +#: data/ui/main_window.ui:170 +msgid "Warnings" +msgstr "Warnungen" + +#: data/ui/main_window.ui:225 msgid "Currently playing" msgstr "Wird gerade wiedergegeben" -#: data/ui/main_window.ui:218 +#: data/ui/main_window.ui:243 msgid "Booktitle" msgstr "Buchtitel" -#: data/ui/main_window.ui:219 +#: data/ui/main_window.ui:244 msgid "Title of currently playing book" msgstr "Titel des aktuellen Buches" -#: data/ui/main_window.ui:244 +#: data/ui/main_window.ui:269 msgid "Part name" msgstr "Kapitelname" -#: data/ui/main_window.ui:245 +#: data/ui/main_window.ui:270 msgid "Title of the currently playing part" msgstr "Name des aktuell abgespielten Kapitels" -#: data/ui/main_window.ui:287 +#: data/ui/main_window.ui:312 msgid "Elapsed time" msgstr "Vergangene Zeit" -#: data/ui/main_window.ui:295 +#: data/ui/main_window.ui:320 msgid "Time elapsed" msgstr "Vergangene Zeit" -#: data/ui/main_window.ui:296 +#: data/ui/main_window.ui:321 msgid "Elapsed time of current part" msgstr "Vergangene Zeit des aktuellen Kapitels" -#: data/ui/main_window.ui:311 +#: data/ui/main_window.ui:336 msgid "Jump to position in current chapter" msgstr "Springe zu einer Position im aktuellen Kapitel" -#: data/ui/main_window.ui:317 +#: data/ui/main_window.ui:342 msgid "Position slider" msgstr "Positions-Slider" -#: data/ui/main_window.ui:318 +#: data/ui/main_window.ui:343 msgid "Position of the current part in seconds" msgstr "Position des aktuell abgespielten Kapitels in Sekunden" -#: data/ui/main_window.ui:336 +#: data/ui/main_window.ui:361 msgid "Remaining time" msgstr "Verbleibende Zeit" -#: data/ui/main_window.ui:344 +#: data/ui/main_window.ui:369 msgid "Time remaining" msgstr "Verbleibende Zeit" -#: data/ui/main_window.ui:345 +#: data/ui/main_window.ui:370 msgid "Remaining time of current part" msgstr "Verbleibende Zeit des aktuellen Kapitels" -#: data/ui/main_window.ui:421 +#: data/ui/main_window.ui:446 msgid "Working…" msgstr "Arbeite…" -#: data/ui/main_window.ui:426 +#: data/ui/main_window.ui:451 msgid "Currently working" msgstr "Am arbeiten..." -#: data/ui/main_window.ui:442 +#: data/ui/main_window.ui:467 msgid "Playback speed" msgstr "Geschwindigkeit" -#: data/ui/main_window.ui:464 data/ui/settings.ui:566 +#: data/ui/main_window.ui:489 data/ui/settings.ui:566 msgid "Sleep timer" msgstr "Schlafen Timer" -#: data/ui/main_window.ui:475 +#: data/ui/main_window.ui:500 msgid "Timer menu button" msgstr "Timer Menü-Knopf" -#: data/ui/main_window.ui:476 +#: data/ui/main_window.ui:501 msgid "Open the sleep timer popover" msgstr "Öffne das Schlafen Timer Popover" -#: data/ui/main_window.ui:492 +#: data/ui/main_window.ui:517 msgid "Search your library" msgstr "Durchsuche deine Bibliothek" -#: data/ui/main_window.ui:503 +#: data/ui/main_window.ui:528 msgid "Search menu button" msgstr "Suche Menü-Knopf" -#: data/ui/main_window.ui:504 +#: data/ui/main_window.ui:529 msgid "Open the search popover" msgstr "Öffne das Suchen Popover" -#: data/ui/main_window.ui:518 +#: data/ui/main_window.ui:543 msgid "Options" msgstr "Optionen" -#: data/ui/main_window.ui:529 +#: data/ui/main_window.ui:554 msgid "Options menu button" msgstr "Optionen Menü-Knopf" -#: data/ui/main_window.ui:530 +#: data/ui/main_window.ui:555 msgid "Open the options popover" msgstr "Öffne das Optionen Popover" -#: data/ui/main_window.ui:655 +#: data/ui/main_window.ui:680 msgid "Recent" msgstr "Zuletzt" -#: data/ui/main_window.ui:674 +#: data/ui/main_window.ui:699 msgid "List of authors" msgstr "Liste der Autoren" -#: data/ui/main_window.ui:690 data/ui/main_window.ui:798 +#: data/ui/main_window.ui:715 data/ui/main_window.ui:823 #: data/ui/search_popover.ui:107 msgid "Author" msgstr "Autor" -#: data/ui/main_window.ui:709 +#: data/ui/main_window.ui:734 msgid "List of readers" msgstr "Liste der Leser" -#: data/ui/main_window.ui:725 data/ui/search_popover.ui:201 +#: data/ui/main_window.ui:750 data/ui/search_popover.ui:201 msgid "Reader" msgstr "Leser" -#: data/ui/main_window.ui:778 +#: data/ui/main_window.ui:803 msgid "List of books" msgstr "Liste aller Bücher" -#: data/ui/main_window.ui:814 +#: data/ui/main_window.ui:839 msgid "Importing your audiobooks…" msgstr "Importiere deine Hörbücher…" -#: data/ui/main_window.ui:866 +#: data/ui/main_window.ui:891 msgid "Import your Audiobooks" msgstr "Importiere deine Hörbücher" -#: data/ui/main_window.ui:882 +#: data/ui/main_window.ui:907 msgid "" "Cozy automatically imports your audiobooks in one directory - your library" msgstr "" -"Cozy verwaltet automatisch alle Hörbücher in einem Ordner - deiner Bibliothek" +"Cozy verwaltet automatisch alle Hörbücher in einem Ordner - deiner " +"Bibliothek" -#: data/ui/main_window.ui:910 +#: data/ui/main_window.ui:935 msgid "External or Network drive?" msgstr "Externer Datenträger oder Netzwerklaufwerk?" -#: data/ui/main_window.ui:927 +#: data/ui/main_window.ui:952 msgid "Are your audiobooks stored on an external or network drive?" msgstr "" -"Sind Deine Hörbücher auf einem externen oder Netzwerkdatenträger gespeichert?" +"Sind Deine Hörbücher auf einem externen oder Netzwerkdatenträger " +"gespeichert?" -#: data/ui/main_window.ui:942 +#: data/ui/main_window.ui:967 msgid "" "If they are you can enable offline mode for a book in the book overview\n" "This keeps a local copy of the book that you can listen to on the go" msgstr "" -"Ist das der Fall, kannst du den Offline Modus in der Buchübersicht " -"aktivieren.\n" +"Ist das der Fall, kannst du den Offline Modus in der Buchübersicht aktivieren.\n" "Diese Funktion behält eine lokale Kopie des Buches, um es unterwegs zu hören." -#: data/ui/main_window.ui:968 data/ui/main_window.ui:1025 +#: data/ui/main_window.ui:993 data/ui/main_window.ui:1050 msgid "Auto scan switch" msgstr "Auto-Scan Schalter" -#: data/ui/main_window.ui:969 data/ui/main_window.ui:1007 -#: data/ui/main_window.ui:1026 +#: data/ui/main_window.ui:994 data/ui/main_window.ui:1032 +#: data/ui/main_window.ui:1051 msgid "Automatically import new audiobooks on startup" msgstr "Importiere neue Hörbücher automatisch beim Start" -#: data/ui/main_window.ui:1069 +#: data/ui/main_window.ui:1094 msgid "Drag & Drop" msgstr "Drag & Drop" -#: data/ui/main_window.ui:1086 +#: data/ui/main_window.ui:1111 msgid "Drag your audiobooks into cozy and they will be automatically imported" msgstr "Ziehe deine Hörbücher in Cozy um sie automatisch zu importieren" -#: data/ui/main_window.ui:1107 +#: data/ui/main_window.ui:1132 msgid "Location of your audiobooks" msgstr "Speicherort Deiner Hörbücher" -#: data/ui/main_window.ui:1128 +#: data/ui/main_window.ui:1153 msgid "Set Audiobooks Directory" msgstr "Wähle den Speicherort der Hörbücher" -#: data/ui/main_window.ui:1145 +#: data/ui/main_window.ui:1170 msgid "" "Load audiobooks from a directory, network drive or an external disk\n" "You can add more storage locations later in the settings" @@ -410,25 +420,26 @@ "Lade Hörbücher von einem Ordner, Netzwerklaufwerk oder externem Laufwerk\n" "Du kannst später mehr Speicherorte in den Einstellungen hinzufügen" -#: data/ui/main_window.ui:1376 +#: data/ui/main_window.ui:1401 msgid "Remaining" msgstr "Verbleibend" -#: data/ui/main_window.ui:1432 +#: data/ui/main_window.ui:1457 msgid "Total" msgstr "Gesamt" -#: data/ui/main_window.ui:1449 +#: data/ui/main_window.ui:1474 msgid "Last played" msgstr "Zuletzt gehört" -#: data/ui/main_window.ui:1466 +#: data/ui/main_window.ui:1491 msgid "Published" msgstr "Veröffentlicht" -#: data/ui/main_window.ui:1630 +#: data/ui/main_window.ui:1655 msgid "" -"Start exploring your library by switching to the Author or Reader view above." +"Start exploring your library by switching to the Author or Reader view " +"above." msgstr "" "Erkunde Deine Bibliothek indem du zur Autor oder Leser Ansicht wechselst." @@ -656,7 +667,7 @@ #: data/ui/timer_popover.ui:221 msgid "suspend" -msgstr "Schlafen" +msgstr "Energiesparen" #: data/ui/timer_popover.ui:237 msgid "shutdown" @@ -685,13 +696,3 @@ #: data/ui/titlebar_menu.ui:33 msgid "_Quit" msgstr "_Beenden" - -#~ msgid "By request" -#~ msgstr "Auf Nachfrage" - -#~ msgid "Use crc32 checksum for file modification detection" -#~ msgstr "Nutze crc32 Prüfsumme um geänderte Dateien zu erkennen" - -#~ msgid "" -#~ "Only recommended if cozy doesn't detect file modifications while scanning" -#~ msgstr "Nur empfohlen falls Cozy geänderte Dateien beim Scan nicht erkennt" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/po/extra/it.po new/cozy-0.6.14/po/extra/it.po --- old/cozy-0.6.13/po/extra/it.po 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/po/extra/it.po 2020-03-01 17:33:29.000000000 +0100 @@ -112,6 +112,7 @@ #: data/com.github.geigi.cozy.appdata.xml.in:55 msgid "Sleep timer: Automatic system power control" msgstr "" +"Timer di spegnimento: controllo automatico dell'alimentazione del sistema" #: data/com.github.geigi.cozy.appdata.xml.in:56 #: data/com.github.geigi.cozy.appdata.xml.in:73 @@ -124,18 +125,16 @@ msgstr "Traduzioni aggiornate" #: data/com.github.geigi.cozy.appdata.xml.in:63 -#, fuzzy msgid "Support for opus files" -msgstr "Supporto per file wav" +msgstr "Supporto per file opus" #: data/com.github.geigi.cozy.appdata.xml.in:64 msgid "Better support for ogg cover art" -msgstr "" +msgstr "Migliore supporto per la copertina ogg" #: data/com.github.geigi.cozy.appdata.xml.in:65 -#, fuzzy msgid "Swedish translation" -msgstr "Traduzioni aggiornate" +msgstr "Traduzione svedese" #: data/com.github.geigi.cozy.appdata.xml.in:72 msgid "Fix: some valid media files were not detected" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/po/it.po new/cozy-0.6.14/po/it.po --- old/cozy-0.6.13/po/it.po 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/po/it.po 2020-03-01 17:33:29.000000000 +0100 @@ -4,9 +4,9 @@ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # # Translators: -# Julian Geywitz <[email protected]>, 2019 -# albanobattistella <[email protected]>, 2019 -# +# Julian Geywitz <[email protected]>, 2020 +# albanobattistella <[email protected]>, 2020 +# #, fuzzy msgid "" msgstr "" @@ -14,7 +14,7 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-27 17:01+0100\n" "PO-Revision-Date: 2019-09-08 09:31+0000\n" -"Last-Translator: albanobattistella <[email protected]>, 2019\n" +"Last-Translator: albanobattistella <[email protected]>, 2020\n" "Language-Team: Italian (https://www.transifex.com/geigi/teams/78138/it/)\n" "Language: it\n" "MIME-Version: 1.0\n" @@ -132,7 +132,7 @@ msgid "{weeks} week ago" msgid_plural "{weeks} weeks ago" msgstr[0] "{weeks} settimane fa" -msgstr[1] "{weeks} weeks ago" +msgstr[1] "{weeks} settimane fa" #: cozy/tools.py:198 #, python-brace-format @@ -146,7 +146,7 @@ msgid "{years} year ago" msgid_plural "{years} years ago" msgstr[0] "{years} anni fa" -msgstr[1] "{years} ago" +msgstr[1] "{years} anni fa" #: cozy/ui/main_view.py:405 msgid "Audiobooks" @@ -642,7 +642,7 @@ #: data/ui/timer_popover.ui:164 msgid "Enable system power control" -msgstr "" +msgstr "Abilita il controllo dell'alimentazione del sistema" #: data/ui/timer_popover.ui:201 msgid "" @@ -650,20 +650,25 @@ "\"shutdown\" will attempt to turn your system off (also known as power off)\n" "\"suspend\" will attempt to suspend your system (also known as sleep)." msgstr "" +"Tipo di azione al termine del timer.\n" +"\"spegnimento\" tenterà di spegnere il sistema (noto anche come power off)\n" +"\"suspendi\" tenterà di sospendere il tuo sistema (noto anche come sleep)." #: data/ui/timer_popover.ui:205 msgid "" "System power action\n" "to perform" msgstr "" +"Azione di alimentazione del sistema\n" +"da eseguire" #: data/ui/timer_popover.ui:221 msgid "suspend" -msgstr "" +msgstr "sospendere" #: data/ui/timer_popover.ui:237 msgid "shutdown" -msgstr "" +msgstr "Spegnere" #: data/ui/titlebar_menu.ui:7 msgid "_Scan Directory" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/po/nl.po new/cozy-0.6.14/po/nl.po --- old/cozy-0.6.13/po/nl.po 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/po/nl.po 2020-03-01 17:33:29.000000000 +0100 @@ -4,9 +4,9 @@ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # # Translators: -# Julian Geywitz <[email protected]>, 2019 -# Heimen Stoffels <[email protected]>, 2019 -# +# Julian Geywitz <[email protected]>, 2020 +# Heimen Stoffels <[email protected]>, 2020 +# #, fuzzy msgid "" msgstr "" @@ -14,7 +14,7 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-27 17:01+0100\n" "PO-Revision-Date: 2019-09-08 09:31+0000\n" -"Last-Translator: Heimen Stoffels <[email protected]>, 2019\n" +"Last-Translator: Heimen Stoffels <[email protected]>, 2020\n" "Language-Team: Dutch (https://www.transifex.com/geigi/teams/78138/nl/)\n" "Language: nl\n" "MIME-Version: 1.0\n" @@ -635,13 +635,12 @@ msgstr "De slaaptimerduur, in minuten" #: data/ui/timer_popover.ui:116 -#, fuzzy msgid "Stop after current chapter" msgstr "Stoppen na huidig hoofdstuk" #: data/ui/timer_popover.ui:164 msgid "Enable system power control" -msgstr "" +msgstr "Energiebeheer inschakelen" #: data/ui/timer_popover.ui:201 msgid "" @@ -649,20 +648,25 @@ "\"shutdown\" will attempt to turn your system off (also known as power off)\n" "\"suspend\" will attempt to suspend your system (also known as sleep)." msgstr "" +"De uit te voeren actie na afloop van de timer.\n" +"'Afsluiten' tracht de computer af te sluiten (ook wel: 'uitschakelen')\n" +"'Pauzestand' tracht de computer in de pauzestand te zetten (ook wel: 'slaapstand')" #: data/ui/timer_popover.ui:205 msgid "" "System power action\n" "to perform" msgstr "" +"De uit te voeren\n" +"energie-actie" #: data/ui/timer_popover.ui:221 msgid "suspend" -msgstr "" +msgstr "Pauzestand" #: data/ui/timer_popover.ui:237 msgid "shutdown" -msgstr "" +msgstr "Afsluiten" #: data/ui/titlebar_menu.ui:7 msgid "_Scan Directory" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/cozy-0.6.13/po/sv.po new/cozy-0.6.14/po/sv.po --- old/cozy-0.6.13/po/sv.po 2020-02-27 17:20:04.000000000 +0100 +++ new/cozy-0.6.14/po/sv.po 2020-03-01 17:33:29.000000000 +0100 @@ -629,13 +629,12 @@ msgstr "Ange varaktighet för insomningsuret i minuter" #: data/ui/timer_popover.ui:116 -#, fuzzy msgid "Stop after current chapter" msgstr "Stoppa efter aktuell kapitel" #: data/ui/timer_popover.ui:164 msgid "Enable system power control" -msgstr "" +msgstr "Aktivera systemkraftkontroll" #: data/ui/timer_popover.ui:201 msgid "" @@ -643,20 +642,25 @@ "\"shutdown\" will attempt to turn your system off (also known as power off)\n" "\"suspend\" will attempt to suspend your system (also known as sleep)." msgstr "" +"Typ av åtgärd när insomningstiden gått ut.\n" +"\"Stäng av\" försöker stänga av systemet.\n" +"\"Viloläge\" försöker försätta datorn i viloläge." #: data/ui/timer_popover.ui:205 msgid "" "System power action\n" "to perform" msgstr "" +"Systemkraftåtgärd\n" +"att utföra" #: data/ui/timer_popover.ui:221 msgid "suspend" -msgstr "" +msgstr "Viloläge" #: data/ui/timer_popover.ui:237 msgid "shutdown" -msgstr "" +msgstr "Stäng av" #: data/ui/titlebar_menu.ui:7 msgid "_Scan Directory"
