diff --git a/data/gtk.glade b/data/gtk.glade index 3443bee..e31a70c 100644 --- a/data/gtk.glade +++ b/data/gtk.glade @@ -1708,10 +1708,12 @@ - + + 200 True False - {} of {} images loaded + 0.01 + True False @@ -1719,19 +1721,6 @@ 1 - - - 200 - True - False - 0.5 - - - False - True - 2 - - False diff --git a/locale/de/LC_MESSAGES/mcg.mo b/locale/de/LC_MESSAGES/mcg.mo index dbda698..db52e43 100644 Binary files a/locale/de/LC_MESSAGES/mcg.mo and b/locale/de/LC_MESSAGES/mcg.mo differ diff --git a/locale/de/LC_MESSAGES/mcg.po b/locale/de/LC_MESSAGES/mcg.po index f5081ff..2271fa7 100644 --- a/locale/de/LC_MESSAGES/mcg.po +++ b/locale/de/LC_MESSAGES/mcg.po @@ -1,15 +1,15 @@ msgid "" msgstr "" "Project-Id-Version: CoverGrid (mcg)\n" -"POT-Creation-Date: 2019-02-16 23:50+0100\n" -"PO-Revision-Date: 2019-02-16 23:51+0100\n" +"POT-Creation-Date: 2020-03-22 00:15+0100\n" +"PO-Revision-Date: 2020-03-22 00:16+0100\n" "Last-Translator: coderkun \n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -42,151 +42,147 @@ msgstr "nach Titel" msgid "sort by year" msgstr "nach Jahr" -#: data/gtk.glade:292 data/gtk.shortcuts.ui:74 +#: data/gtk.glade:293 data/gtk.shortcuts.ui:74 msgid "Connect or disconnect" msgstr "Die Verbindung herstellen oder trennen" -#: data/gtk.glade:314 data/gtk.shortcuts.ui:81 +#: data/gtk.glade:315 data/gtk.shortcuts.ui:81 msgid "Switch between play and pause" msgstr "Zwischen Abspielen und Pause wechseln" -#: data/gtk.glade:334 +#: data/gtk.glade:335 msgid "Adjust the volume" msgstr "Die Lautstärke anpassen" -#: data/gtk.glade:378 +#: data/gtk.glade:379 msgid "Connect to MPD" msgstr "Zu MPD verbinden" -#: data/gtk.glade:420 data/gtk.shortcuts.ui:101 +#: data/gtk.glade:421 data/gtk.shortcuts.ui:101 msgid "Show the cover in fullscreen mode" msgstr "Das Cover im Vollbildmodus anzeigen" -#: data/gtk.glade:469 data/gtk.glade:548 +#: data/gtk.glade:470 data/gtk.glade:549 msgid "Select multiple albums" msgstr "Mehrere Alben auswählen" -#: data/gtk.glade:491 data/gtk.shortcuts.ui:88 +#: data/gtk.glade:492 data/gtk.shortcuts.ui:88 msgid "Clear the playlist" msgstr "Die Wiedergabeliste leeren" -#: data/gtk.glade:525 data/gtk.shortcuts.ui:114 +#: data/gtk.glade:526 data/gtk.shortcuts.ui:114 msgid "Search the library" msgstr "Die Bibliothek durchsuchen" -#: data/gtk.glade:570 +#: data/gtk.glade:571 msgid "Settings and actions" msgstr "Einstellungen und Aktionen" -#: data/gtk.glade:675 +#: data/gtk.glade:676 msgid "Enter hostname or IP address" msgstr "Hostnamen oder IP-Adresse eingeben" -#: data/gtk.glade:687 +#: data/gtk.glade:688 msgid "Enter URL or local path" msgstr "URL oder lokalen Pfad eingeben" -#: data/gtk.glade:700 +#: data/gtk.glade:701 msgid "Enter password or leave blank" msgstr "Passwort eingeben oder leer lassen" -#: data/gtk.glade:728 +#: data/gtk.glade:729 msgid "Host:" msgstr "Host:" -#: data/gtk.glade:740 +#: data/gtk.glade:741 msgid "Port:" msgstr "Port:" -#: data/gtk.glade:752 +#: data/gtk.glade:753 msgid "Password:" msgstr "Passwort:" -#: data/gtk.glade:764 +#: data/gtk.glade:765 msgid "Image Directory:" msgstr "Bildordner:" -#: data/gtk.glade:865 +#: data/gtk.glade:866 msgid "File:" msgstr "Datei:" -#: data/gtk.glade:878 +#: data/gtk.glade:879 msgid "Audio:" msgstr "Audio:" -#: data/gtk.glade:891 +#: data/gtk.glade:892 msgid "Bitrate:" msgstr "Bitrate:" -#: data/gtk.glade:904 +#: data/gtk.glade:905 msgid "Error:" msgstr "Fehler:" -#: data/gtk.glade:916 data/gtk.glade:932 data/gtk.glade:948 data/gtk.glade:964 +#: data/gtk.glade:917 data/gtk.glade:933 data/gtk.glade:949 data/gtk.glade:965 msgid "none" msgstr "nichts" -#: data/gtk.glade:999 +#: data/gtk.glade:1000 msgid "Status" msgstr "Status" -#: data/gtk.glade:1084 +#: data/gtk.glade:1085 msgid "Albums" msgstr "Alben" -#: data/gtk.glade:1096 +#: data/gtk.glade:1097 msgid "Songs" msgstr "Songs" -#: data/gtk.glade:1108 +#: data/gtk.glade:1109 msgid "Artists" msgstr "Künstler" -#: data/gtk.glade:1132 +#: data/gtk.glade:1133 msgid "Seconds" msgstr "Sekunden" -#: data/gtk.glade:1179 +#: data/gtk.glade:1180 msgid "Seconds played" msgstr "Sekunden gespielt" -#: data/gtk.glade:1190 +#: data/gtk.glade:1191 msgid "Seconds running" msgstr "Sekunden laufend" -#: data/gtk.glade:1221 +#: data/gtk.glade:1222 msgid "Statistics" msgstr "Statistiken" -#: data/gtk.glade:1291 +#: data/gtk.glade:1292 msgid "Audio Devices" msgstr "Audiogeräte" -#: data/gtk.glade:1305 +#: data/gtk.glade:1306 msgid "Server" msgstr "Server" -#: data/gtk.glade:1486 data/gtk.menu.ui:30 +#: data/gtk.glade:1487 data/gtk.menu.ui:30 msgid "Cover" msgstr "Cover" -#: data/gtk.glade:1628 data/gtk.menu.ui:36 +#: data/gtk.glade:1629 data/gtk.menu.ui:36 msgid "Playlist" msgstr "Wiedergabeliste" -#: data/gtk.glade:1655 +#: data/gtk.glade:1656 msgid "search library" msgstr "Bibliothek durchsuchen" -#: data/gtk.glade:1713 -msgid "{} of {} images loaded" -msgstr "{} von {} Bildern geladen" - -#: data/gtk.glade:1891 data/gtk.menu.ui:42 +#: data/gtk.glade:1881 data/gtk.menu.ui:42 msgid "Library" msgstr "Bibliothek" -#: data/gtk.glade:1974 +#: data/gtk.glade:1964 msgid "" "CoverGrid is a client for the Music Player Daemon, focusing on albums " "instead of single tracks." @@ -270,22 +266,33 @@ msgstr "Bibliothekspaneel" msgid "{} feat. {}" msgstr "{} mit {}" -#: mcg/widgets.py:1267 mcg/widgets.py:1601 +#: mcg/widgets.py:1281 mcg/widgets.py:1621 msgid "cancel" msgstr "abbrechen" -#: mcg/widgets.py:1284 mcg/widgets.py:1618 +#: mcg/widgets.py:1298 mcg/widgets.py:1638 msgid "play" msgstr "abspielen" -#: mcg/widgets.py:1287 +#: mcg/widgets.py:1301 msgid "remove" msgstr "entfernen" -#: mcg/widgets.py:1604 mcg/widgets.py:1621 +#: mcg/widgets.py:1624 mcg/widgets.py:1641 msgid "queue" msgstr "einreihen" +#: mcg/widgets.py:1873 +msgid "Loading albums" +msgstr "Alben werden geladen" + +#: mcg/widgets.py:1954 +msgid "Loading images" +msgstr "Bilder werden geladen" + +#~ msgid "{} of {} images loaded" +#~ msgstr "{} von {} Bildern geladen" + #~ msgid "Tracklist" #~ msgstr "Titelliste" diff --git a/locale/en/LC_MESSAGES/mcg.mo b/locale/en/LC_MESSAGES/mcg.mo index c4a9f18..6f34756 100644 Binary files a/locale/en/LC_MESSAGES/mcg.mo and b/locale/en/LC_MESSAGES/mcg.mo differ diff --git a/locale/en/LC_MESSAGES/mcg.po b/locale/en/LC_MESSAGES/mcg.po index 8638d9d..3008809 100644 --- a/locale/en/LC_MESSAGES/mcg.po +++ b/locale/en/LC_MESSAGES/mcg.po @@ -1,15 +1,15 @@ msgid "" msgstr "" "Project-Id-Version: CoverGrid (mcg)\n" -"POT-Creation-Date: 2019-02-16 23:52+0100\n" -"PO-Revision-Date: 2019-02-16 23:52+0100\n" +"POT-Creation-Date: 2020-03-22 00:16+0100\n" +"PO-Revision-Date: 2020-03-22 00:16+0100\n" "Last-Translator: coderkun \n" "Language-Team: \n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SearchPath-0: data/gtk.glade\n" @@ -41,151 +41,147 @@ msgstr "by Title" msgid "sort by year" msgstr "by Year" -#: data/gtk.glade:292 data/gtk.shortcuts.ui:74 +#: data/gtk.glade:293 data/gtk.shortcuts.ui:74 msgid "Connect or disconnect" msgstr "Connect or disconnect" -#: data/gtk.glade:314 data/gtk.shortcuts.ui:81 +#: data/gtk.glade:315 data/gtk.shortcuts.ui:81 msgid "Switch between play and pause" msgstr "Switch between play and pause" -#: data/gtk.glade:334 +#: data/gtk.glade:335 msgid "Adjust the volume" msgstr "Adjust the volume" -#: data/gtk.glade:378 +#: data/gtk.glade:379 msgid "Connect to MPD" msgstr "Connect to MPD" -#: data/gtk.glade:420 data/gtk.shortcuts.ui:101 +#: data/gtk.glade:421 data/gtk.shortcuts.ui:101 msgid "Show the cover in fullscreen mode" msgstr "Show the cover in fullscreen mode" -#: data/gtk.glade:469 data/gtk.glade:548 +#: data/gtk.glade:470 data/gtk.glade:549 msgid "Select multiple albums" msgstr "Select multiple albums" -#: data/gtk.glade:491 data/gtk.shortcuts.ui:88 +#: data/gtk.glade:492 data/gtk.shortcuts.ui:88 msgid "Clear the playlist" msgstr "Clear the playlist" -#: data/gtk.glade:525 data/gtk.shortcuts.ui:114 +#: data/gtk.glade:526 data/gtk.shortcuts.ui:114 msgid "Search the library" msgstr "Search the library" -#: data/gtk.glade:570 +#: data/gtk.glade:571 msgid "Settings and actions" msgstr "Settings and actions" -#: data/gtk.glade:675 +#: data/gtk.glade:676 msgid "Enter hostname or IP address" msgstr "Enter hostname or IP address" -#: data/gtk.glade:687 +#: data/gtk.glade:688 msgid "Enter URL or local path" msgstr "Enter URL or local path" -#: data/gtk.glade:700 +#: data/gtk.glade:701 msgid "Enter password or leave blank" msgstr "Enter password or leave blank" -#: data/gtk.glade:728 +#: data/gtk.glade:729 msgid "Host:" msgstr "Host:" -#: data/gtk.glade:740 +#: data/gtk.glade:741 msgid "Port:" msgstr "Port:" -#: data/gtk.glade:752 +#: data/gtk.glade:753 msgid "Password:" msgstr "Password:" -#: data/gtk.glade:764 +#: data/gtk.glade:765 msgid "Image Directory:" msgstr "Image Directory:" -#: data/gtk.glade:865 +#: data/gtk.glade:866 msgid "File:" msgstr "File:" -#: data/gtk.glade:878 +#: data/gtk.glade:879 msgid "Audio:" msgstr "Audio:" -#: data/gtk.glade:891 +#: data/gtk.glade:892 msgid "Bitrate:" msgstr "Bitrate:" -#: data/gtk.glade:904 +#: data/gtk.glade:905 msgid "Error:" msgstr "Error:" -#: data/gtk.glade:916 data/gtk.glade:932 data/gtk.glade:948 data/gtk.glade:964 +#: data/gtk.glade:917 data/gtk.glade:933 data/gtk.glade:949 data/gtk.glade:965 msgid "none" msgstr "none" -#: data/gtk.glade:999 +#: data/gtk.glade:1000 msgid "Status" msgstr "Status" -#: data/gtk.glade:1084 +#: data/gtk.glade:1085 msgid "Albums" msgstr "Albums" -#: data/gtk.glade:1096 +#: data/gtk.glade:1097 msgid "Songs" msgstr "Songs" -#: data/gtk.glade:1108 +#: data/gtk.glade:1109 msgid "Artists" msgstr "Artists" -#: data/gtk.glade:1132 +#: data/gtk.glade:1133 msgid "Seconds" msgstr "Seconds" -#: data/gtk.glade:1179 +#: data/gtk.glade:1180 msgid "Seconds played" msgstr "Seconds" -#: data/gtk.glade:1190 +#: data/gtk.glade:1191 msgid "Seconds running" msgstr "Seconds running" -#: data/gtk.glade:1221 +#: data/gtk.glade:1222 msgid "Statistics" msgstr "Statistics" -#: data/gtk.glade:1291 +#: data/gtk.glade:1292 msgid "Audio Devices" msgstr "Audio Devices" -#: data/gtk.glade:1305 +#: data/gtk.glade:1306 msgid "Server" msgstr "Server" -#: data/gtk.glade:1486 data/gtk.menu.ui:30 +#: data/gtk.glade:1487 data/gtk.menu.ui:30 msgid "Cover" msgstr "Cover" -#: data/gtk.glade:1628 data/gtk.menu.ui:36 +#: data/gtk.glade:1629 data/gtk.menu.ui:36 msgid "Playlist" msgstr "Playlist" -#: data/gtk.glade:1655 +#: data/gtk.glade:1656 msgid "search library" msgstr "search library" -#: data/gtk.glade:1713 -msgid "{} of {} images loaded" -msgstr "{} of {} images loaded" - -#: data/gtk.glade:1891 data/gtk.menu.ui:42 +#: data/gtk.glade:1881 data/gtk.menu.ui:42 msgid "Library" msgstr "Library" -#: data/gtk.glade:1974 +#: data/gtk.glade:1964 msgid "" "CoverGrid is a client for the Music Player Daemon, focusing on albums " "instead of single tracks." @@ -269,22 +265,33 @@ msgstr "Library Panel" msgid "{} feat. {}" msgstr "{} feat. {}" -#: mcg/widgets.py:1267 mcg/widgets.py:1601 +#: mcg/widgets.py:1281 mcg/widgets.py:1621 msgid "cancel" msgstr "cancel" -#: mcg/widgets.py:1284 mcg/widgets.py:1618 +#: mcg/widgets.py:1298 mcg/widgets.py:1638 msgid "play" msgstr "play" -#: mcg/widgets.py:1287 +#: mcg/widgets.py:1301 msgid "remove" msgstr "remove" -#: mcg/widgets.py:1604 mcg/widgets.py:1621 +#: mcg/widgets.py:1624 mcg/widgets.py:1641 msgid "queue" msgstr "queue" +#: mcg/widgets.py:1873 +msgid "Loading albums" +msgstr "Loading albums" + +#: mcg/widgets.py:1954 +msgid "Loading images" +msgstr "Loading images" + +#~ msgid "{} of {} images loaded" +#~ msgstr "{} of {} images loaded" + #~ msgid "Tracklist" #~ msgstr "Tracklist" diff --git a/mcg/client.py b/mcg/client.py index 9e60207..b191511 100644 --- a/mcg/client.py +++ b/mcg/client.py @@ -110,6 +110,10 @@ class Client(Base): SIGNAL_STATUS = 'status' # Signal: stats SIGNAL_STATS = 'stats' + # Signal: init loading of albums + SIGNAL_INIT_ALBUMS = 'init-albums' + # Signal: pulse loading of albums + SIGNAL_PULSE_ALBUMS = 'pulse-albums' # Signal: load albums SIGNAL_LOAD_ALBUMS = 'load-albums' # Signal: load playlist @@ -498,9 +502,12 @@ class Client(Base): def _load_albums(self): """Action: Perform the real update.""" + self._callback(Client.SIGNAL_INIT_ALBUMS) self._albums = {} # Albums for album in self._parse_list(self._call('list album'), ['album']): + self._callback(Client.SIGNAL_PULSE_ALBUMS) + # Album album = self._extract_album(album) self._logger.debug("album: %r", album) diff --git a/mcg/widgets.py b/mcg/widgets.py index abf1b34..f964a5d 100644 --- a/mcg/widgets.py +++ b/mcg/widgets.py @@ -179,6 +179,8 @@ class Window(): self._mcg.connect_signal(client.Client.SIGNAL_STATS, self.on_mcg_stats) self._mcg.connect_signal(client.Client.SIGNAL_LOAD_OUTPUT_DEVICES, self.on_mcg_load_output_devices) self._mcg.connect_signal(client.Client.SIGNAL_LOAD_PLAYLIST, self.on_mcg_load_playlist) + self._mcg.connect_signal(client.Client.SIGNAL_PULSE_ALBUMS, self.on_mcg_pulse_albums) + self._mcg.connect_signal(client.Client.SIGNAL_INIT_ALBUMS, self.on_mcg_init_albums) self._mcg.connect_signal(client.Client.SIGNAL_LOAD_ALBUMS, self.on_mcg_load_albums) self._mcg.connect_signal(client.Client.SIGNAL_CUSTOM, self.on_mcg_custom) self._mcg.connect_signal(client.Client.SIGNAL_ERROR, self.on_mcg_error) @@ -430,6 +432,14 @@ class Window(): self._panels[self._PANEL_INDEX_PLAYLIST].set_playlist(self._connection_panel.get_host(), playlist) + def on_mcg_init_albums(self): + GObject.idle_add(self._panels[self._PANEL_INDEX_LIBRARY].init_albums) + + + def on_mcg_pulse_albums(self): + GObject.idle_add(self._panels[self._PANEL_INDEX_LIBRARY].load_albums) + + def on_mcg_load_albums(self, albums): self._panels[self._PANEL_INDEX_LIBRARY].set_albums(self._connection_panel.get_host(), albums) @@ -1578,8 +1588,6 @@ class LibraryPanel(GObject.GObject): self._progress_box = builder.get_object('library-progress-box') self._pgross_image = builder.get_object('library-progress-image') self._pgross_image.set_from_pixbuf(self._get_default_image()) - self._progress_label = builder.get_object('library-progress-label') - self._loading_text = self._progress_label.get_label() self._progress_bar = builder.get_object('library-progress') self._scroll = builder.get_object('library-scroll') # Toolbar menu @@ -1859,6 +1867,14 @@ class LibraryPanel(GObject.GObject): return (self._sort_type != Gtk.SortType.ASCENDING) + def init_albums(self): + self._progress_bar.set_text(gettext.gettext("Loading albums")) + + + def load_albums(self): + self._progress_bar.pulse() + + def set_albums(self, host, albums): self._host = host self._library_stop.set() @@ -1933,7 +1949,7 @@ class LibraryPanel(GObject.GObject): i += 1 GObject.idle_add(self._progress_bar.set_fraction, i/n) - GObject.idle_add(self._progress_label.set_markup, self._loading_text.format(i, n)) + GObject.idle_add(self._progress_bar.set_text, gettext.gettext("Loading images")) if self._library_stop.is_set(): self._library_lock.release() return