added mini player mode

This commit is contained in:
Martin Wagner 2020-09-15 18:45:30 +02:00
parent 79ce749f61
commit 68160fc4c7
3 changed files with 263 additions and 210 deletions

View File

@ -41,7 +41,7 @@ import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
VERSION='0.9.1' # sync with setup.py
VERSION='0.9.1-dev' # sync with setup.py
COVER_REGEX="^\.?(album|cover|folder|front).*\.(gif|jpeg|jpg|png)$"
@ -844,6 +844,8 @@ class Client(MPDClient):
class Settings(Gio.Settings):
BASE_KEY="org.mpdevil"
# temp settings
mini_player=GObject.Property(type=bool, default=False)
def __init__(self):
super().__init__(schema=self.BASE_KEY)
@ -1746,6 +1748,7 @@ class Browser(Gtk.Paned):
self.back_to_current_album_button.connect("clicked", self.back_to_current_album)
self.search_button.connect("toggled", self._on_search_toggled)
self._artist_window.connect("artists_changed", self._on_artists_changed)
self._settings.connect("notify::mini-player", self._on_mini_player)
if not self._use_csd:
self._settings.connect("changed::icon-size-sec", self._on_icon_size_changed)
self._client.emitter.connect("disconnected", self._on_disconnected)
@ -1831,6 +1834,13 @@ class Browser(Gtk.Paned):
def _on_artists_changed(self, *args):
self.search_button.set_active(False)
def _on_mini_player(self, obj, typestring):
visibility=not(obj.get_property("mini-player"))
self.set_property("visible", visibility)
self.back_to_current_album_button.set_property("visible", visibility)
self.search_button.set_property("visible", visibility)
self.genre_select.set_property("visible", visibility)
def _on_icon_size_changed(self, *args):
pixel_size=self._settings.get_int("icon-size-sec")
for icon in self._icons.values():
@ -2019,7 +2029,7 @@ class MainCover(Gtk.Frame):
self._window=window
# event box
event_box=Gtk.EventBox()
self._event_box=Gtk.EventBox()
# cover
self._cover=Gtk.Image.new()
@ -2029,14 +2039,15 @@ class MainCover(Gtk.Frame):
self._cover.set_size_request(size, size)
# connect
event_box.connect("button-press-event", self._on_button_press_event)
self._button_press_event=self._event_box.connect("button-press-event", self._on_button_press_event)
self._client.emitter.connect("current_song_changed", self._refresh)
self._client.emitter.connect("disconnected", self._on_disconnected)
self._client.emitter.connect("reconnected", self._on_reconnected)
self._settings.connect("notify::mini-player", self._on_mini_player)
self._settings.connect("changed::track-cover", self._on_settings_changed)
event_box.add(self._cover)
self.add(event_box)
self._event_box.add(self._cover)
self.add(self._event_box)
def _refresh(self, *args):
current_song=self._client.wrapped_call("currentsong")
@ -2079,6 +2090,12 @@ class MainCover(Gtk.Frame):
def _on_reconnected(self, *args):
self._cover.set_sensitive(True)
def _on_mini_player(self, obj, typestring):
if obj.get_property("mini-player"):
self._event_box.handler_block(self._button_press_event)
else:
self._event_box.handler_unblock(self._button_press_event)
def _on_settings_changed(self, *args):
size=self._settings.get_int("track-cover")
self._cover.set_size_request(size, size)
@ -2193,6 +2210,7 @@ class PlaylistWindow(Gtk.Box):
self._client.emitter.connect("disconnected", self._on_disconnected)
self._client.emitter.connect("reconnected", self._on_reconnected)
self._settings.connect("notify::mini-player", self._on_mini_player)
self._settings.connect("changed::column-visibilities", self._load_settings)
self._settings.connect("changed::column-permutation", self._load_settings)
self._settings.connect("changed::icon-size-sec", self._on_icon_size_changed)
@ -2364,6 +2382,10 @@ class PlaylistWindow(Gtk.Box):
self._clear_button.set_sensitive(True)
self._treeview.set_sensitive(True)
def _on_mini_player(self, obj, typestring):
visibility=not(obj.get_property("mini-player"))
self.set_property("visible", visibility)
def _on_icon_size_changed(self, *args):
pixel_size=self._settings.get_int("icon-size-sec")
for icon in self._icons.values():
@ -3018,8 +3040,10 @@ class PlaybackControl(Gtk.ButtonBox):
# connect
self.play_button.connect("clicked", self._on_play_clicked)
self.stop_button.connect("clicked", self._on_stop_clicked)
self.stop_button.set_property("no-show-all", not(self._settings.get_boolean("show-stop")))
self.prev_button.connect("clicked", self._on_prev_clicked)
self.next_button.connect("clicked", self._on_next_clicked)
self._settings.connect("notify::mini-player", self._on_mini_player)
self._settings.connect("changed::show-stop", self._on_show_stop_changed)
self._settings.connect("changed::icon-size", self._on_icon_size_changed)
self._client.emitter.connect("state", self._on_state)
@ -3027,8 +3051,7 @@ class PlaybackControl(Gtk.ButtonBox):
# packing
self.pack_start(self.prev_button, True, True, 0)
self.pack_start(self.play_button, True, True, 0)
if self._settings.get_boolean("show-stop"):
self.pack_start(self.stop_button, True, True, 0)
self.pack_start(self.stop_button, True, True, 0)
self.pack_start(self.next_button, True, True, 0)
def _on_state(self, emitter, state):
@ -3070,13 +3093,13 @@ class PlaybackControl(Gtk.ButtonBox):
if self._client.connected():
self._client.wrapped_call("next")
def _on_mini_player(self, obj, typestring):
self._on_show_stop_changed()
def _on_show_stop_changed(self, *args):
if self._settings.get_boolean("show-stop"):
self.pack_start(self.stop_button, True, True, 0)
self.reorder_child(self.stop_button, 2)
self.stop_button.show()
else:
self.remove(self.stop_button)
visibility=(self._settings.get_boolean("show-stop") and not self._settings.get_property("mini-player"))
self.stop_button.set_property("visible", visibility)
self.stop_button.set_property("no-show-all", not(visibility))
def _on_icon_size_changed(self, *args):
pixel_size=self._settings.get_int("icon-size")
@ -3262,15 +3285,16 @@ class PlaybackOptions(Gtk.Box):
self._volume_changed=self._client.emitter.connect("volume_changed", self._volume_refresh)
self._client.emitter.connect("disconnected", self._on_disconnected)
self._client.emitter.connect("reconnected", self._on_reconnected)
self._settings.connect("notify::mini-player", self._on_mini_player)
self._settings.connect("changed::icon-size", self._on_icon_size_changed)
# packing
ButtonBox=Gtk.ButtonBox(layout_style=Gtk.ButtonBoxStyle.EXPAND)
ButtonBox.pack_start(self._repeat_button, True, True, 0)
ButtonBox.pack_start(self._random_button, True, True, 0)
ButtonBox.pack_start(self._single_button, True, True, 0)
ButtonBox.pack_start(self._consume_button, True, True, 0)
self.pack_start(ButtonBox, True, True, 0)
self._button_box=Gtk.ButtonBox(layout_style=Gtk.ButtonBoxStyle.EXPAND)
self._button_box.pack_start(self._repeat_button, True, True, 0)
self._button_box.pack_start(self._random_button, True, True, 0)
self._button_box.pack_start(self._single_button, True, True, 0)
self._button_box.pack_start(self._consume_button, True, True, 0)
self.pack_start(self._button_box, True, True, 0)
self.pack_start(self._volume_button, True, True, 0)
def _set_option(self, widget, option):
@ -3312,12 +3336,6 @@ class PlaybackOptions(Gtk.Box):
self._volume_button.set_sensitive(True)
self._volume_button.handler_unblock(self._volume_button_changed)
def _on_icon_size_changed(self, *args):
pixel_size=self._settings.get_int("icon-size")
for icon in self._icons.values():
icon.set_pixel_size(pixel_size)
self._volume_button.set_property("size", self._settings.get_gtk_icon_size("icon-size"))
def _on_reconnected(self, *args):
self._repeat_button.set_sensitive(True)
self._random_button.set_sensitive(True)
@ -3335,6 +3353,16 @@ class PlaybackOptions(Gtk.Box):
self._consume_refresh(None, False)
self._volume_refresh(None, -1)
def _on_mini_player(self, obj, typestring):
visibility=not(obj.get_property("mini-player"))
self._button_box.set_property("visible", visibility)
def _on_icon_size_changed(self, *args):
pixel_size=self._settings.get_int("icon-size")
for icon in self._icons.values():
icon.set_pixel_size(pixel_size)
self._volume_button.set_property("size", self._settings.get_gtk_icon_size("icon-size"))
#################
# other dialogs #
#################
@ -3411,11 +3439,11 @@ class AboutDialog(Gtk.AboutDialog):
###############
class ProfileSelect(Gtk.ComboBoxText):
def __init__(self, client, settings):
def __init__(self, settings):
super().__init__(tooltip_text=_("Select profile"))
self.set_property("no-show-all", not(len(settings.get_value("profiles")) > 1))
# adding vars
self._client=client
self._settings=settings
# connect
@ -3426,6 +3454,7 @@ class ProfileSelect(Gtk.ComboBoxText):
self._settings.connect("changed::passwords", self._refresh)
self._settings.connect("changed::paths", self._refresh)
self._settings.connect("changed::active-profile", self._on_active_profile_changed)
self._settings.connect("changed::profiles", self._on_profiles_changed)
self._refresh()
@ -3446,6 +3475,14 @@ class ProfileSelect(Gtk.ComboBoxText):
self.set_active(self._settings.get_int("active-profile"))
self.handler_unblock(self._changed)
def _on_profiles_changed(self, *args):
if len(self._settings.get_value("profiles")) > 1:
self.set_property("no-show-all", False)
self.set_property("visible", True)
else:
self.set_property("no-show-all", True)
self.set_property("visible", False)
class ConnectionNotify(Gtk.Revealer):
def __init__(self, client, settings):
super().__init__(valign=Gtk.Align.START, halign=Gtk.Align.CENTER)
@ -3506,14 +3543,18 @@ class MainWindow(Gtk.ApplicationWindow):
self._icon_size=0
else:
self._icon_size=self._settings.get_int("icon-size")
self.tmp_saved_size=None # needed to restore size after leaving mini player mode
# MPRIS
dbus_service=MPRISInterface(self, self._client, self._settings)
# actions
save_action=Gio.SimpleAction.new("save", None)
save_action.connect("activate", self._on_save)
self.add_action(save_action)
self._save_action=Gio.SimpleAction.new("save", None)
self._save_action.connect("activate", self._on_save)
self.add_action(self._save_action)
mini_player_action=Gio.PropertyAction.new("mini-player", self._settings, "mini-player")
self.add_action(mini_player_action)
settings_action=Gio.SimpleAction.new("settings", None)
settings_action.connect("activate", self._on_settings)
@ -3539,7 +3580,7 @@ class MainWindow(Gtk.ApplicationWindow):
self._browser=Browser(self._client, self._settings, self)
self._cover_playlist_window=CoverPlaylistWindow(self._client, self._settings, self)
self._profile_select=ProfileSelect(self._client, self._settings)
self._profile_select=ProfileSelect(self._settings)
self._playback_control=PlaybackControl(self._client, self._settings)
self._seek_bar=SeekBar(self._client)
playback_options=PlaybackOptions(self._client, self._settings)
@ -3558,6 +3599,7 @@ class MainWindow(Gtk.ApplicationWindow):
menu=Gio.Menu()
menu.append(_("Save window layout"), "win.save")
menu.append(_("Mini player"), "win.mini-player")
menu.append_section(None, mpd_subsection)
menu.append_section(None, subsection)
@ -3572,7 +3614,7 @@ class MainWindow(Gtk.ApplicationWindow):
action_bar.pack_start(playback_options)
# connect
self._settings.connect("changed::profiles", self._on_profiles_changed)
self._settings.connect_after("notify::mini-player", self._on_mini_player)
self._settings.connect("changed::playlist-right", self._on_playlist_pos_changed)
if not self._use_csd:
self._settings.connect("changed::icon-size", self._on_icon_size_changed)
@ -3617,7 +3659,6 @@ class MainWindow(Gtk.ApplicationWindow):
self.show_all()
if self._settings.get_boolean("maximize"):
self.maximize()
self._on_profiles_changed() # hide profiles button
self._client.start() # connect client
def _on_song_changed(self, *args):
@ -3724,11 +3765,15 @@ class MainWindow(Gtk.ApplicationWindow):
def _on_help(self, action, param):
Gtk.show_uri_on_window(self, "https://github.com/SoongNoonien/mpdevil/wiki/Usage", Gdk.CURRENT_TIME)
def _on_profiles_changed(self, *args):
if len(self._settings.get_value("profiles")) > 1:
self._profile_select.set_property("visible", True)
def _on_mini_player(self, obj, typestring):
if obj.get_property("mini-player"):
self.tmp_saved_size=self.get_size()
self._save_action.set_enabled(False)
self.resize(1,1)
else:
self._profile_select.set_property("visible", False)
self._save_action.set_enabled(True)
self.resize(self.tmp_saved_size[0], self.tmp_saved_size[1])
self.tmp_saved_size=None
def _on_playlist_pos_changed(self, *args):
if self._settings.get_boolean("playlist-right"):

178
po/de.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-13 21:30+0200\n"
"PO-Revision-Date: 2020-09-13 21:32+0200\n"
"POT-Creation-Date: 2020-09-15 18:44+0200\n"
"PO-Revision-Date: 2020-09-15 18:45+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\n"
@ -18,72 +18,72 @@ msgstr ""
"X-Generator: Poedit 2.3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mpdevil:518
#: bin/mpdevil:518
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: mpdevil:522
#: bin/mpdevil:522
msgid "Value"
msgstr "Wert"
#: mpdevil:605
#: bin/mpdevil:605
msgid "Unknown Title"
msgstr "Unbekannter Titel"
#: mpdevil:608
#: bin/mpdevil:608
msgid "Unknown Artist"
msgstr "Unbekannter Interpret"
#: mpdevil:609
#: bin/mpdevil:609
msgid "Unknown Album"
msgstr "Unbekanntes Album"
#: mpdevil:936 mpdevil:1240 mpdevil:2141 mpdevil:2846
#: bin/mpdevil:938 bin/mpdevil:1242 bin/mpdevil:2158 bin/mpdevil:2868
msgid "No"
msgstr "Nr."
#: mpdevil:941 mpdevil:1245 mpdevil:2143 mpdevil:2846
#: bin/mpdevil:943 bin/mpdevil:1247 bin/mpdevil:2160 bin/mpdevil:2868
msgid "Title"
msgstr "Titel"
#: mpdevil:947 mpdevil:1422 mpdevil:2144 mpdevil:2846
#: bin/mpdevil:949 bin/mpdevil:1424 bin/mpdevil:2161 bin/mpdevil:2868
msgid "Artist"
msgstr "Interpret"
#: mpdevil:953 mpdevil:2145 mpdevil:2846
#: bin/mpdevil:955 bin/mpdevil:2162 bin/mpdevil:2868
msgid "Album"
msgstr "Album"
#: mpdevil:959 mpdevil:1251 mpdevil:2146 mpdevil:2846
#: bin/mpdevil:961 bin/mpdevil:1253 bin/mpdevil:2163 bin/mpdevil:2868
msgid "Length"
msgstr "Länge"
#: mpdevil:1023
#: bin/mpdevil:1025
#, python-format
msgid "%i hits"
msgstr "%i Treffer"
#: mpdevil:1124
#: bin/mpdevil:1126
msgid "Append"
msgstr "Anhängen"
#: mpdevil:1125
#: bin/mpdevil:1127
msgid "Add all titles to playlist"
msgstr "Alle Titel der Wiedergabeliste anhängen"
#: mpdevil:1126
#: bin/mpdevil:1128
msgid "Play"
msgstr "Abspielen"
#: mpdevil:1127
#: bin/mpdevil:1129
msgid "Directly play all titles"
msgstr "Alle Titel sofort abspielen"
#: mpdevil:1128
#: bin/mpdevil:1130
msgid "Enqueue"
msgstr "Einreihen"
#: mpdevil:1129
#: bin/mpdevil:1131
msgid ""
"Append all titles after the currently playing track and clear the playlist "
"from all other songs"
@ -91,49 +91,49 @@ msgstr ""
"Alle Titel hinter dem aktuellen Stück einreihen und die weitere "
"Wiedergabeliste leeren"
#: mpdevil:1257
#: bin/mpdevil:1259
msgid "Close"
msgstr "Schließen"
#: mpdevil:1310
#: bin/mpdevil:1312
msgid "all genres"
msgstr "Alle Genres"
#: mpdevil:1420
#: bin/mpdevil:1422
msgid "Album Artist"
msgstr "Albuminterpret"
#: mpdevil:1423
#: bin/mpdevil:1425
msgid "all artists"
msgstr "Alle Interpreten"
#: mpdevil:1611
#: bin/mpdevil:1613
#, python-format
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
msgstr "%(total_tracks)i Titel auf %(discs)i CDs (%(total_length)s)"
#: mpdevil:1614 mpdevil:2235
#: bin/mpdevil:1616 bin/mpdevil:2253
#, python-format
msgid "%(total_tracks)i titles (%(total_length)s)"
msgstr "%(total_tracks)i Titel (%(total_length)s)"
#: mpdevil:1738
#: bin/mpdevil:1740
msgid "Back to current album"
msgstr "Zurück zu aktuellem Album"
#: mpdevil:1739
#: bin/mpdevil:1741
msgid "Search"
msgstr "Suche"
#: mpdevil:1899
#: bin/mpdevil:1909
msgid "searching..."
msgstr "suche..."
#: mpdevil:1903
#: bin/mpdevil:1913
msgid "lyrics not found"
msgstr "Liedtext nicht gefunden"
#: mpdevil:1977
#: bin/mpdevil:1987
#, python-format
msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
@ -142,123 +142,123 @@ msgstr ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"Kanäle, %(file_type)s"
#: mpdevil:2110
#: bin/mpdevil:2127
msgid "Scroll to current song"
msgstr "Gehe zu aktuellem Lied"
#: mpdevil:2117
#: bin/mpdevil:2134
msgid "Clear playlist"
msgstr "Wiedergabeliste leeren"
#: mpdevil:2142 mpdevil:2846
#: bin/mpdevil:2159 bin/mpdevil:2868
msgid "Disc"
msgstr "CD"
#: mpdevil:2147 mpdevil:2846
#: bin/mpdevil:2164 bin/mpdevil:2868
msgid "Year"
msgstr "Jahr"
#: mpdevil:2148 mpdevil:2846
#: bin/mpdevil:2165 bin/mpdevil:2868
msgid "Genre"
msgstr "Genre"
#: mpdevil:2387
#: bin/mpdevil:2409
msgid "Show lyrics"
msgstr "Zeige Liedtext"
#: mpdevil:2481
#: bin/mpdevil:2503
msgid "Main cover size:"
msgstr "Größe des Haupt-Covers:"
#: mpdevil:2482
#: bin/mpdevil:2504
msgid "Album view cover size:"
msgstr "Covergröße in Albumliste:"
#: mpdevil:2483
#: bin/mpdevil:2505
msgid "Action bar icon size:"
msgstr "Symbolgröße Aktionsleiste:"
#: mpdevil:2484
#: bin/mpdevil:2506
msgid "Secondary icon size:"
msgstr "Sekundäre Symbolgröße:"
#: mpdevil:2497
#: bin/mpdevil:2519
msgid "Sort albums by:"
msgstr "Sortiere Alben nach:"
#: mpdevil:2497
#: bin/mpdevil:2519
msgid "name"
msgstr "Name"
#: mpdevil:2497
#: bin/mpdevil:2519
msgid "year"
msgstr "Jahr"
#: mpdevil:2498
#: bin/mpdevil:2520
msgid "Position of playlist:"
msgstr "Wiedergabelistenposition:"
#: mpdevil:2498
#: bin/mpdevil:2520
msgid "bottom"
msgstr "unten"
#: mpdevil:2498
#: bin/mpdevil:2520
msgid "right"
msgstr "rechts"
#: mpdevil:2516
#: bin/mpdevil:2538
msgid "Use Client-side decoration"
msgstr "Benutze \"Client-side decoration\""
#: mpdevil:2517
#: bin/mpdevil:2539
msgid "Show stop button"
msgstr "Zeige Stopp-Knopf"
#: mpdevil:2518
#: bin/mpdevil:2540
msgid "Show lyrics button"
msgstr "Zeige Liedtext-Knopf"
#: mpdevil:2519
#: bin/mpdevil:2541
msgid "Show initials in artist view"
msgstr "Zeige Anfangsbuchstaben in Interpretenliste"
#: mpdevil:2520
#: bin/mpdevil:2542
msgid "Show tooltips in album view"
msgstr "Zeige Tooltips in Albumliste"
#: mpdevil:2521
#: bin/mpdevil:2543
msgid "Use 'Album Artist' tag"
msgstr "Benutze \"Album Artist\" Tag"
#: mpdevil:2522
#: bin/mpdevil:2544
msgid "Send notification on title change"
msgstr "Sende Benachrichtigung bei Titelwechsel"
#: mpdevil:2523
#: bin/mpdevil:2545
msgid "Stop playback on quit"
msgstr "Wiedergabe beim Beenden stoppen"
#: mpdevil:2524
#: bin/mpdevil:2546
msgid "Play selected albums and titles immediately"
msgstr "Ausgewählte Alben und Titel sofort abspielen"
#: mpdevil:2537
#: bin/mpdevil:2559
msgid "<b>View</b>"
msgstr "<b>Ansicht</b>"
#: mpdevil:2538
#: bin/mpdevil:2560
msgid "<b>Behavior</b>"
msgstr "<b>Verhalten</b>"
#: mpdevil:2570
#: bin/mpdevil:2592
msgid "(restart required)"
msgstr "(Neustart erforderlich)"
#: mpdevil:2632 mpdevil:3461
#: bin/mpdevil:2654 bin/mpdevil:3498
msgid "Connect"
msgstr "Verbinden"
#: mpdevil:2648
#: bin/mpdevil:2670
msgid ""
"The first image in the same directory as the song file matching this regex "
"will be displayed. %AlbumArtist% and %Album% will be replaced by the "
@ -268,114 +268,118 @@ msgstr ""
"regulären Ausdruck entspricht, wird angezeigt. %AlbumArtist% und %Album% "
"werden durch die entsprechenden Tags des Liedes ersetzt."
#: mpdevil:2653
#: bin/mpdevil:2675
msgid "Profile:"
msgstr "Profil:"
#: mpdevil:2654
#: bin/mpdevil:2676
msgid "Name:"
msgstr "Name:"
#: mpdevil:2655
#: bin/mpdevil:2677
msgid "Host:"
msgstr "Host:"
#: mpdevil:2656
#: bin/mpdevil:2678
msgid "Password:"
msgstr "Passwort:"
#: mpdevil:2657
#: bin/mpdevil:2679
msgid "Music lib:"
msgstr "Musikverzeichnis:"
#: mpdevil:2658
#: bin/mpdevil:2680
msgid "Cover regex:"
msgstr "Cover-Regex:"
#: mpdevil:2789
#: bin/mpdevil:2811
msgid "Choose directory"
msgstr "Verzeichnis Wählen"
#: mpdevil:2822
#: bin/mpdevil:2844
msgid "Choose the order of information to appear in the playlist:"
msgstr ""
"Lege die Reihenfolge fest, in der Informationen in der Wiedergabeliste "
"angezeigt werden sollen:"
#: mpdevil:2962 mpdevil:2970 mpdevil:3550
#: bin/mpdevil:2984 bin/mpdevil:2992 bin/mpdevil:3591
msgid "Settings"
msgstr "Einstellungen"
#: mpdevil:2981
#: bin/mpdevil:3003
msgid "General"
msgstr "Allgemein"
#: mpdevil:2982
#: bin/mpdevil:3004
msgid "Profiles"
msgstr "Profile"
#: mpdevil:2983
#: bin/mpdevil:3005
msgid "Playlist"
msgstr "Wiedergabeliste"
#: mpdevil:3242
#: bin/mpdevil:3265
msgid "Random mode"
msgstr "Zufallsmodus"
#: mpdevil:3243
#: bin/mpdevil:3266
msgid "Repeat mode"
msgstr "Dauerschleife"
#: mpdevil:3244
#: bin/mpdevil:3267
msgid "Single mode"
msgstr "Einzelstückmodus"
#: mpdevil:3245
#: bin/mpdevil:3268
msgid "Consume mode"
msgstr "Wiedergabeliste verbrauchen"
#: mpdevil:3346 mpdevil:3354
#: bin/mpdevil:3374 bin/mpdevil:3382
msgid "Stats"
msgstr "Statistik"
#: mpdevil:3403
#: bin/mpdevil:3431
msgid "A simple music browser for MPD"
msgstr "Ein einfacher Musikbrowser für MPD"
#: mpdevil:3415
#: bin/mpdevil:3443
msgid "Select profile"
msgstr "Profil auswählen"
#: mpdevil:3482
#: bin/mpdevil:3519
#, python-format
msgid "Connection to \"%(profile)s\" (%(host)s:%(port)s) failed"
msgstr "Verbindung zu \"%(profile)s\" (%(host)s:%(port)s) fehlgeschlagen"
#: mpdevil:3551
#: bin/mpdevil:3592
msgid "Help"
msgstr "Hilfe"
#: mpdevil:3552
#: bin/mpdevil:3593
msgid "About"
msgstr "Über"
#: mpdevil:3553
#: bin/mpdevil:3594
msgid "Quit"
msgstr "Beenden"
#: mpdevil:3556
#: bin/mpdevil:3597
msgid "Update database"
msgstr "Datenbank aktualisieren"
#: mpdevil:3557
#: bin/mpdevil:3598
msgid "Server stats"
msgstr "Serverstatistik"
#: mpdevil:3560
#: bin/mpdevil:3601
msgid "Save window layout"
msgstr "Fensterlayout speichern"
#: mpdevil:3564
#: bin/mpdevil:3602
msgid "Mini player"
msgstr "Miniplayer"
#: bin/mpdevil:3606
msgid "Menu"
msgstr "Menü"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-13 21:30+0200\n"
"POT-Creation-Date: 2020-09-15 18:44+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,354 +17,358 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: mpdevil:518
#: bin/mpdevil:518
msgid "MPD-Tag"
msgstr ""
#: mpdevil:522
#: bin/mpdevil:522
msgid "Value"
msgstr ""
#: mpdevil:605
#: bin/mpdevil:605
msgid "Unknown Title"
msgstr ""
#: mpdevil:608
#: bin/mpdevil:608
msgid "Unknown Artist"
msgstr ""
#: mpdevil:609
#: bin/mpdevil:609
msgid "Unknown Album"
msgstr ""
#: mpdevil:936 mpdevil:1240 mpdevil:2141 mpdevil:2846
#: bin/mpdevil:938 bin/mpdevil:1242 bin/mpdevil:2158 bin/mpdevil:2868
msgid "No"
msgstr ""
#: mpdevil:941 mpdevil:1245 mpdevil:2143 mpdevil:2846
#: bin/mpdevil:943 bin/mpdevil:1247 bin/mpdevil:2160 bin/mpdevil:2868
msgid "Title"
msgstr ""
#: mpdevil:947 mpdevil:1422 mpdevil:2144 mpdevil:2846
#: bin/mpdevil:949 bin/mpdevil:1424 bin/mpdevil:2161 bin/mpdevil:2868
msgid "Artist"
msgstr ""
#: mpdevil:953 mpdevil:2145 mpdevil:2846
#: bin/mpdevil:955 bin/mpdevil:2162 bin/mpdevil:2868
msgid "Album"
msgstr ""
#: mpdevil:959 mpdevil:1251 mpdevil:2146 mpdevil:2846
#: bin/mpdevil:961 bin/mpdevil:1253 bin/mpdevil:2163 bin/mpdevil:2868
msgid "Length"
msgstr ""
#: mpdevil:1023
#: bin/mpdevil:1025
#, python-format
msgid "%i hits"
msgstr ""
#: mpdevil:1124
#: bin/mpdevil:1126
msgid "Append"
msgstr ""
#: mpdevil:1125
#: bin/mpdevil:1127
msgid "Add all titles to playlist"
msgstr ""
#: mpdevil:1126
#: bin/mpdevil:1128
msgid "Play"
msgstr ""
#: mpdevil:1127
#: bin/mpdevil:1129
msgid "Directly play all titles"
msgstr ""
#: mpdevil:1128
#: bin/mpdevil:1130
msgid "Enqueue"
msgstr ""
#: mpdevil:1129
#: bin/mpdevil:1131
msgid ""
"Append all titles after the currently playing track and clear the playlist "
"from all other songs"
msgstr ""
#: mpdevil:1257
#: bin/mpdevil:1259
msgid "Close"
msgstr ""
#: mpdevil:1310
#: bin/mpdevil:1312
msgid "all genres"
msgstr ""
#: mpdevil:1420
#: bin/mpdevil:1422
msgid "Album Artist"
msgstr ""
#: mpdevil:1423
#: bin/mpdevil:1425
msgid "all artists"
msgstr ""
#: mpdevil:1611
#: bin/mpdevil:1613
#, python-format
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
msgstr ""
#: mpdevil:1614 mpdevil:2235
#: bin/mpdevil:1616 bin/mpdevil:2253
#, python-format
msgid "%(total_tracks)i titles (%(total_length)s)"
msgstr ""
#: mpdevil:1738
#: bin/mpdevil:1740
msgid "Back to current album"
msgstr ""
#: mpdevil:1739
#: bin/mpdevil:1741
msgid "Search"
msgstr ""
#: mpdevil:1899
#: bin/mpdevil:1909
msgid "searching..."
msgstr ""
#: mpdevil:1903
#: bin/mpdevil:1913
msgid "lyrics not found"
msgstr ""
#: mpdevil:1977
#: bin/mpdevil:1987
#, python-format
msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"channels, %(file_type)s"
msgstr ""
#: mpdevil:2110
#: bin/mpdevil:2127
msgid "Scroll to current song"
msgstr ""
#: mpdevil:2117
#: bin/mpdevil:2134
msgid "Clear playlist"
msgstr ""
#: mpdevil:2142 mpdevil:2846
#: bin/mpdevil:2159 bin/mpdevil:2868
msgid "Disc"
msgstr ""
#: mpdevil:2147 mpdevil:2846
#: bin/mpdevil:2164 bin/mpdevil:2868
msgid "Year"
msgstr ""
#: mpdevil:2148 mpdevil:2846
#: bin/mpdevil:2165 bin/mpdevil:2868
msgid "Genre"
msgstr ""
#: mpdevil:2387
#: bin/mpdevil:2409
msgid "Show lyrics"
msgstr ""
#: mpdevil:2481
#: bin/mpdevil:2503
msgid "Main cover size:"
msgstr ""
#: mpdevil:2482
#: bin/mpdevil:2504
msgid "Album view cover size:"
msgstr ""
#: mpdevil:2483
#: bin/mpdevil:2505
msgid "Action bar icon size:"
msgstr ""
#: mpdevil:2484
#: bin/mpdevil:2506
msgid "Secondary icon size:"
msgstr ""
#: mpdevil:2497
#: bin/mpdevil:2519
msgid "Sort albums by:"
msgstr ""
#: mpdevil:2497
#: bin/mpdevil:2519
msgid "name"
msgstr ""
#: mpdevil:2497
#: bin/mpdevil:2519
msgid "year"
msgstr ""
#: mpdevil:2498
#: bin/mpdevil:2520
msgid "Position of playlist:"
msgstr ""
#: mpdevil:2498
#: bin/mpdevil:2520
msgid "bottom"
msgstr ""
#: mpdevil:2498
#: bin/mpdevil:2520
msgid "right"
msgstr ""
#: mpdevil:2516
#: bin/mpdevil:2538
msgid "Use Client-side decoration"
msgstr ""
#: mpdevil:2517
#: bin/mpdevil:2539
msgid "Show stop button"
msgstr ""
#: mpdevil:2518
#: bin/mpdevil:2540
msgid "Show lyrics button"
msgstr ""
#: mpdevil:2519
#: bin/mpdevil:2541
msgid "Show initials in artist view"
msgstr ""
#: mpdevil:2520
#: bin/mpdevil:2542
msgid "Show tooltips in album view"
msgstr ""
#: mpdevil:2521
#: bin/mpdevil:2543
msgid "Use 'Album Artist' tag"
msgstr ""
#: mpdevil:2522
#: bin/mpdevil:2544
msgid "Send notification on title change"
msgstr ""
#: mpdevil:2523
#: bin/mpdevil:2545
msgid "Stop playback on quit"
msgstr ""
#: mpdevil:2524
#: bin/mpdevil:2546
msgid "Play selected albums and titles immediately"
msgstr ""
#: mpdevil:2537
#: bin/mpdevil:2559
msgid "<b>View</b>"
msgstr ""
#: mpdevil:2538
#: bin/mpdevil:2560
msgid "<b>Behavior</b>"
msgstr ""
#: mpdevil:2570
#: bin/mpdevil:2592
msgid "(restart required)"
msgstr ""
#: mpdevil:2632 mpdevil:3461
#: bin/mpdevil:2654 bin/mpdevil:3498
msgid "Connect"
msgstr ""
#: mpdevil:2648
#: bin/mpdevil:2670
msgid ""
"The first image in the same directory as the song file matching this regex "
"will be displayed. %AlbumArtist% and %Album% will be replaced by the "
"corresponding tags of the song."
msgstr ""
#: mpdevil:2653
#: bin/mpdevil:2675
msgid "Profile:"
msgstr ""
#: mpdevil:2654
#: bin/mpdevil:2676
msgid "Name:"
msgstr ""
#: mpdevil:2655
#: bin/mpdevil:2677
msgid "Host:"
msgstr ""
#: mpdevil:2656
#: bin/mpdevil:2678
msgid "Password:"
msgstr ""
#: mpdevil:2657
#: bin/mpdevil:2679
msgid "Music lib:"
msgstr ""
#: mpdevil:2658
#: bin/mpdevil:2680
msgid "Cover regex:"
msgstr ""
#: mpdevil:2789
#: bin/mpdevil:2811
msgid "Choose directory"
msgstr ""
#: mpdevil:2822
#: bin/mpdevil:2844
msgid "Choose the order of information to appear in the playlist:"
msgstr ""
#: mpdevil:2962 mpdevil:2970 mpdevil:3550
#: bin/mpdevil:2984 bin/mpdevil:2992 bin/mpdevil:3591
msgid "Settings"
msgstr ""
#: mpdevil:2981
#: bin/mpdevil:3003
msgid "General"
msgstr ""
#: mpdevil:2982
#: bin/mpdevil:3004
msgid "Profiles"
msgstr ""
#: mpdevil:2983
#: bin/mpdevil:3005
msgid "Playlist"
msgstr ""
#: mpdevil:3242
#: bin/mpdevil:3265
msgid "Random mode"
msgstr ""
#: mpdevil:3243
#: bin/mpdevil:3266
msgid "Repeat mode"
msgstr ""
#: mpdevil:3244
#: bin/mpdevil:3267
msgid "Single mode"
msgstr ""
#: mpdevil:3245
#: bin/mpdevil:3268
msgid "Consume mode"
msgstr ""
#: mpdevil:3346 mpdevil:3354
#: bin/mpdevil:3374 bin/mpdevil:3382
msgid "Stats"
msgstr ""
#: mpdevil:3403
#: bin/mpdevil:3431
msgid "A simple music browser for MPD"
msgstr ""
#: mpdevil:3415
#: bin/mpdevil:3443
msgid "Select profile"
msgstr ""
#: mpdevil:3482
#: bin/mpdevil:3519
#, python-format
msgid "Connection to \"%(profile)s\" (%(host)s:%(port)s) failed"
msgstr ""
#: mpdevil:3551
#: bin/mpdevil:3592
msgid "Help"
msgstr ""
#: mpdevil:3552
#: bin/mpdevil:3593
msgid "About"
msgstr ""
#: mpdevil:3553
#: bin/mpdevil:3594
msgid "Quit"
msgstr ""
#: mpdevil:3556
#: bin/mpdevil:3597
msgid "Update database"
msgstr ""
#: mpdevil:3557
#: bin/mpdevil:3598
msgid "Server stats"
msgstr ""
#: mpdevil:3560
#: bin/mpdevil:3601
msgid "Save window layout"
msgstr ""
#: mpdevil:3564
#: bin/mpdevil:3602
msgid "Mini player"
msgstr ""
#: bin/mpdevil:3606
msgid "Menu"
msgstr ""