24 Commits

Author SHA1 Message Date
Martin Wagner
2d6b83a94e preparations for 1.1.0 2021-02-13 12:03:08 +01:00
Martin Wagner
7610178497 removed empty tooltips 2021-02-13 11:56:16 +01:00
Martin Wagner
dedcca7bc4 changed default settings 2021-02-13 11:48:17 +01:00
Martin Wagner
95386b05bc removed separator 2021-02-12 21:48:54 +01:00
Martin Wagner
7c5f0b4fbf changed order of check buttons in settings window 2021-02-12 21:26:32 +01:00
Martin Wagner
8217a87f13 small formulation change 2021-02-12 17:00:06 +01:00
Martin Wagner
432a4d4425 dutch translation update 2021-02-12 09:34:02 +01:00
Martin Wagner
15ed338062 german translation update 2021-02-11 22:20:35 +01:00
Martin Wagner
6fc61f37e0 removed "combo_settings" from settings window 2021-02-11 19:09:12 +01:00
Martin Wagner
f07d7a3448 removed show-album-view-tooltips key 2021-02-11 18:10:39 +01:00
Martin Wagner
576bc088e9 remember mini player state 2021-02-08 17:49:45 +01:00
Martin Wagner
a5b2ad16dc fixed paned positions restoring 2021-02-08 09:32:55 +01:00
Martin Wagner
27b4efb49f improved column sizing in playlist window 2021-02-07 19:27:06 +01:00
Martin Wagner
b2cab7b188 removed unneeded vars 2021-02-07 19:14:38 +01:00
Martin Wagner
c4734d80b7 automatically save window layout 2021-02-07 19:05:30 +01:00
Martin Wagner
3ecb93b7b9 added mpd specific icons 2021-02-07 12:23:16 +01:00
Martin Wagner
4a0b6a0350 added symbolic app icon 2021-02-07 10:03:45 +01:00
Martin Wagner
7916112432 allow moving the miniplayer by dragging the cover 2021-02-04 21:33:51 +01:00
Martin Wagner
4e8ae30201 icon style fixes 2021-02-01 20:41:00 +01:00
Martin Wagner
a5a53032f2 small fix in german translation 2021-01-23 12:45:58 +01:00
Martin Wagner
24d5bd1ca3 fixed AudioType 2021-01-16 23:06:04 +01:00
Martin Wagner
959dc9b5ad improved sigular plural handling in translations 2021-01-16 14:55:06 +01:00
Martin Wagner
e8191eab7c preparations for 1.0.0 2021-01-02 11:49:04 +01:00
Martin Wagner
5db00fcd27 fixed release order in appdata file 2021-01-01 22:00:59 +01:00
23 changed files with 784 additions and 735 deletions

View File

@@ -2,7 +2,7 @@ README for mpdevil
================== ==================
Mpdevil is a simple music browser for the Music Player Daemon (MPD) which is focused on playing local music without the need of managing playlists. Instead of maintaining a client side database of your music library mpdevil loads all tags and covers on demand. So you'll never see any outdated information in the browser. Mpdevil strongly relies on tags. Mpdevil is a simple music browser for the Music Player Daemon (MPD) which is focused on playing local music without the need of managing playlists. Instead of maintaining a client side database of your music library mpdevil loads all tags and covers on demand. So you'll never see any outdated information in the browser. Mpdevil strongly relies on tags.
![ScreenShot](screenshots/mainwindow_0.9.5.png) ![ScreenShot](screenshots/mainwindow_1.1.0.png)
Features Features
-------- --------

View File

@@ -29,13 +29,12 @@ import datetime
import os import os
import sys import sys
import re import re
import gettext from gettext import gettext as _, ngettext, textdomain, bindtextdomain
gettext.textdomain("mpdevil") textdomain("mpdevil")
if os.path.isfile("/.flatpak-info"): # test for flatpak environment if os.path.isfile("/.flatpak-info"): # test for flatpak environment
gettext.bindtextdomain("mpdevil", "/app/share/locale") bindtextdomain("mpdevil", "/app/share/locale")
_=gettext.gettext
VERSION="0.9.9" # sync with setup.py VERSION="1.1.0" # sync with setup.py
COVER_REGEX=r"^\.?(album|cover|folder|front).*\.(gif|jpeg|jpg|png)$" COVER_REGEX=r"^\.?(album|cover|folder|front).*\.(gif|jpeg|jpg|png)$"
@@ -434,9 +433,13 @@ class MPRISInterface: # TODO emit Seeked if needed
class ClientHelper(): class ClientHelper():
def seconds_to_display_time(seconds): def seconds_to_display_time(seconds):
raw_time_string=str(datetime.timedelta(seconds=seconds)) delta=datetime.timedelta(seconds=seconds)
stript_time_string=raw_time_string.lstrip("0").lstrip(":") if delta.days > 0:
return stript_time_string.replace(":", "") # use 'ratio' as delimiter days=ngettext("{days} day", "{days} days", delta.days).format(days=delta.days)
time_string=days+", "+str(datetime.timedelta(seconds=delta.seconds))
else:
time_string=str(delta).lstrip("0").lstrip(":")
return time_string.replace(":", "") # use 'ratio' as delimiter
def song_to_str_dict(song): # converts tags with multiple values to comma separated strings def song_to_str_dict(song): # converts tags with multiple values to comma separated strings
return_song={} return_song={}
@@ -809,25 +812,6 @@ class GeneralSettings(Gtk.Box):
self._settings.connect("changed::{}".format(key), self._on_int_settings_changed, int_settings[key][1]) self._settings.connect("changed::{}".format(key), self._on_int_settings_changed, int_settings[key][1])
) )
# combo_settings
combo_settings={}
combo_settings_data=[
(_("Sort albums by:"), _("name"), _("year"), "sort-albums-by-year"),
(_("Position of playlist:"), _("bottom"), _("right"), "playlist-right")
]
for label, vfalse, vtrue, key in combo_settings_data:
combo_settings[key]=(Gtk.Label(label=label, xalign=0), Gtk.ComboBoxText(entry_text_column=0))
combo_settings[key][1].append_text(vfalse)
combo_settings[key][1].append_text(vtrue)
if self._settings.get_boolean(key):
combo_settings[key][1].set_active(1)
else:
combo_settings[key][1].set_active(0)
combo_settings[key][1].connect("changed", self._on_combo_changed, key)
self._settings_handlers.append(
self._settings.connect("changed::{}".format(key), self._on_combo_settings_changed, combo_settings[key][1])
)
# check buttons # check buttons
check_buttons={} check_buttons={}
check_buttons_data=[ check_buttons_data=[
@@ -835,13 +819,13 @@ class GeneralSettings(Gtk.Box):
(_("Show stop button"), "show-stop"), (_("Show stop button"), "show-stop"),
(_("Show lyrics button"), "show-lyrics-button"), (_("Show lyrics button"), "show-lyrics-button"),
(_("Show initials in artist view"), "show-initials"), (_("Show initials in artist view"), "show-initials"),
(_("Show tooltips in album view"), "show-album-view-tooltips"), (_("Place playlist at the side"), "playlist-right"),
(_("Use “Album Artist” tag"), "use-album-artist"), (_("Use “Album Artist” tag"), "use-album-artist"),
(_("Send notification on title change"), "send-notify"), (_("Send notification on title change"), "send-notify"),
(_("Stop playback on quit"), "stop-on-quit"), (_("Stop playback on quit"), "stop-on-quit"),
(_("Play selected albums and titles immediately"), "force-mode") (_("Play selected albums and titles immediately"), "force-mode"),
(_("Sort albums by year"), "sort-albums-by-year"),
] ]
for label, key in check_buttons_data: for label, key in check_buttons_data:
check_buttons[key]=Gtk.CheckButton(label=label) check_buttons[key]=Gtk.CheckButton(label=label)
check_buttons[key].set_active(self._settings.get_boolean(key)) check_buttons[key].set_active(self._settings.get_boolean(key))
@@ -862,22 +846,10 @@ class GeneralSettings(Gtk.Box):
view_grid.attach_next_to(int_settings["album-cover"][0], int_settings["track-cover"][0], Gtk.PositionType.BOTTOM, 1, 1) view_grid.attach_next_to(int_settings["album-cover"][0], int_settings["track-cover"][0], Gtk.PositionType.BOTTOM, 1, 1)
view_grid.attach_next_to(int_settings["icon-size"][0], int_settings["album-cover"][0], Gtk.PositionType.BOTTOM, 1, 1) view_grid.attach_next_to(int_settings["icon-size"][0], int_settings["album-cover"][0], Gtk.PositionType.BOTTOM, 1, 1)
view_grid.attach_next_to(int_settings["icon-size-sec"][0], int_settings["icon-size"][0], Gtk.PositionType.BOTTOM, 1, 1) view_grid.attach_next_to(int_settings["icon-size-sec"][0], int_settings["icon-size"][0], Gtk.PositionType.BOTTOM, 1, 1)
view_grid.attach_next_to(combo_settings["playlist-right"][0], int_settings["icon-size-sec"][0], Gtk.PositionType.BOTTOM, 1, 1)
view_grid.attach_next_to(int_settings["track-cover"][1], int_settings["track-cover"][0], Gtk.PositionType.RIGHT, 1, 1) view_grid.attach_next_to(int_settings["track-cover"][1], int_settings["track-cover"][0], Gtk.PositionType.RIGHT, 1, 1)
view_grid.attach_next_to(int_settings["album-cover"][1], int_settings["album-cover"][0], Gtk.PositionType.RIGHT, 1, 1) view_grid.attach_next_to(int_settings["album-cover"][1], int_settings["album-cover"][0], Gtk.PositionType.RIGHT, 1, 1)
view_grid.attach_next_to(int_settings["icon-size"][1], int_settings["icon-size"][0], Gtk.PositionType.RIGHT, 1, 1) view_grid.attach_next_to(int_settings["icon-size"][1], int_settings["icon-size"][0], Gtk.PositionType.RIGHT, 1, 1)
view_grid.attach_next_to(int_settings["icon-size-sec"][1], int_settings["icon-size-sec"][0], Gtk.PositionType.RIGHT, 1, 1) view_grid.attach_next_to(int_settings["icon-size-sec"][1], int_settings["icon-size-sec"][0], Gtk.PositionType.RIGHT, 1, 1)
view_grid.attach_next_to(combo_settings["playlist-right"][1], combo_settings["playlist-right"][0], Gtk.PositionType.RIGHT, 1, 1)
# behavior grid
behavior_grid=Gtk.Grid(row_spacing=6, column_spacing=12)
behavior_grid.set_margin_start(12)
behavior_grid.add(combo_settings["sort-albums-by-year"][0])
behavior_grid.attach_next_to(
combo_settings["sort-albums-by-year"][1],
combo_settings["sort-albums-by-year"][0],
Gtk.PositionType.RIGHT, 1, 1
)
# connect # connect
self.connect("destroy", self._remove_handlers) self.connect("destroy", self._remove_handlers)
@@ -891,14 +863,14 @@ class GeneralSettings(Gtk.Box):
self.pack_start(check_buttons["show-stop"], False, False, 0) self.pack_start(check_buttons["show-stop"], False, False, 0)
self.pack_start(check_buttons["show-lyrics-button"], False, False, 0) self.pack_start(check_buttons["show-lyrics-button"], False, False, 0)
self.pack_start(check_buttons["show-initials"], False, False, 0) self.pack_start(check_buttons["show-initials"], False, False, 0)
self.pack_start(check_buttons["show-album-view-tooltips"], False, False, 0) self.pack_start(check_buttons["playlist-right"], False, False, 0)
self.pack_start(view_grid, False, False, 0) self.pack_start(view_grid, False, False, 0)
self.pack_start(behavior_heading, False, False, 0) self.pack_start(behavior_heading, False, False, 0)
self.pack_start(check_buttons["use-album-artist"], False, False, 0) self.pack_start(check_buttons["use-album-artist"], False, False, 0)
self.pack_start(check_buttons["sort-albums-by-year"], False, False, 0)
self.pack_start(check_buttons["send-notify"], False, False, 0) self.pack_start(check_buttons["send-notify"], False, False, 0)
self.pack_start(check_buttons["stop-on-quit"], False, False, 0)
self.pack_start(check_buttons["force-mode"], False, False, 0) self.pack_start(check_buttons["force-mode"], False, False, 0)
self.pack_start(behavior_grid, False, False, 0) self.pack_start(check_buttons["stop-on-quit"], False, False, 0)
def _remove_handlers(self, *args): def _remove_handlers(self, *args):
for handler in self._settings_handlers: for handler in self._settings_handlers:
@@ -907,25 +879,12 @@ class GeneralSettings(Gtk.Box):
def _on_int_settings_changed(self, settings, key, entry): def _on_int_settings_changed(self, settings, key, entry):
entry.set_value(settings.get_int(key)) entry.set_value(settings.get_int(key))
def _on_combo_settings_changed(self, settings, key, combo):
if settings.get_boolean(key):
combo.set_active(1)
else:
combo.set_active(0)
def _on_check_settings_changed(self, settings, key, button): def _on_check_settings_changed(self, settings, key, button):
button.set_active(settings.get_boolean(key)) button.set_active(settings.get_boolean(key))
def _on_int_changed(self, widget, key): def _on_int_changed(self, widget, key):
self._settings.set_int(key, int(widget.get_value())) self._settings.set_int(key, int(widget.get_value()))
def _on_combo_changed(self, box, key):
active=box.get_active()
if active == 0:
self._settings.set_boolean(key, False)
else:
self._settings.set_boolean(key, True)
def _on_toggled(self, widget, key): def _on_toggled(self, widget, key):
self._settings.set_boolean(key, widget.get_active()) self._settings.set_boolean(key, widget.get_active())
@@ -1893,7 +1852,8 @@ class SearchWindow(Gtk.Box):
song["human_duration"], song["file"], song["human_duration"], song["file"],
int_track int_track
]) ])
self._hits_label.set_text(_("{num} hits").format(num=self._songs_view.count())) hits=self._songs_view.count()
self._hits_label.set_text(ngettext("{hits} hit", "{hits} hits", hits).format(hits=hits))
if self._songs_view.count() == 0: if self._songs_view.count() == 0:
self._action_bar.set_sensitive(False) self._action_bar.set_sensitive(False)
else: else:
@@ -2086,8 +2046,7 @@ class AlbumWindow(FocusFrame):
self._sort_settings() self._sort_settings()
# iconview # iconview
self._iconview=Gtk.IconView(model=self._store, item_width=0, pixbuf_column=0, markup_column=1) self._iconview=Gtk.IconView(model=self._store, item_width=0, pixbuf_column=0, markup_column=1, tooltip_column=3)
self._tooltip_settings()
# scroll # scroll
scroll=Gtk.ScrolledWindow() scroll=Gtk.ScrolledWindow()
@@ -2107,7 +2066,6 @@ class AlbumWindow(FocusFrame):
self._client.emitter.connect("update", self._clear) self._client.emitter.connect("update", self._clear)
self._client.emitter.connect("disconnected", self._on_disconnected) self._client.emitter.connect("disconnected", self._on_disconnected)
self._client.emitter.connect("reconnected", self._on_reconnected) self._client.emitter.connect("reconnected", self._on_reconnected)
self._settings.connect("changed::show-album-view-tooltips", self._tooltip_settings)
self._settings.connect("changed::sort-albums-by-year", self._sort_settings) self._settings.connect("changed::sort-albums-by-year", self._sort_settings)
self._settings.connect("changed::album-cover", self._on_cover_size_changed) self._settings.connect("changed::album-cover", self._on_cover_size_changed)
self._settings.connect("changed::use-album-artist", self._clear) self._settings.connect("changed::use-album-artist", self._clear)
@@ -2152,12 +2110,6 @@ class AlbumWindow(FocusFrame):
elif not self.scroll_to_current_album in self._pending: elif not self.scroll_to_current_album in self._pending:
self._pending.append(self.scroll_to_current_album) self._pending.append(self.scroll_to_current_album)
def _tooltip_settings(self, *args):
if self._settings.get_boolean("show-album-view-tooltips"):
self._iconview.set_tooltip_column(3)
else:
self._iconview.set_tooltip_column(-1)
def _sort_settings(self, *args): def _sort_settings(self, *args):
if self._settings.get_boolean("sort-albums-by-year"): if self._settings.get_boolean("sort-albums-by-year"):
self._store.set_sort_column_id(5, Gtk.SortType.ASCENDING) self._store.set_sort_column_id(5, Gtk.SortType.ASCENDING)
@@ -2219,17 +2171,16 @@ class AlbumWindow(FocusFrame):
for i, album in enumerate(albums): for i, album in enumerate(albums):
# tooltip # tooltip
length_human_readable=ClientHelper.calc_display_length(album["songs"]) length_human_readable=ClientHelper.calc_display_length(album["songs"])
titles=len(album["songs"])
discs=album["songs"][-1].get("disc", 1) discs=album["songs"][-1].get("disc", 1)
if type(discs) == list: if type(discs) == list:
discs=int(discs[0]) discs=int(discs[0])
else: else:
discs=int(discs) discs=int(discs)
tooltip=ngettext("{titles} title", "{titles} titles", titles).format(titles=titles)
if discs > 1: if discs > 1:
tooltip=_("{titles} titles on {discs} discs ({length})").format( tooltip=" ".join((tooltip, _("on {discs} discs").format(discs=discs)))
titles=len(album["songs"]), discs=discs, length=length_human_readable) tooltip=" ".join((tooltip, "({length})".format(length=length_human_readable)))
else:
tooltip=_("{titles} titles ({length})").format(
titles=len(album["songs"]), length=length_human_readable)
# album label # album label
if album["year"] == "": if album["year"] == "":
display_label="<b>{}</b>".format(album["album"]) display_label="<b>{}</b>".format(album["album"])
@@ -2306,7 +2257,7 @@ class AlbumWindow(FocusFrame):
artist=self._store[path][6] artist=self._store[path][6]
v=self._scroll_vadj.get_value() v=self._scroll_vadj.get_value()
h=self._scroll_hadj.get_value() h=self._scroll_hadj.get_value()
pop=AlbumPopover(self._client, self._settings, album, artist, year, widget, int(event.x-h), int(event.y-v)) pop=AlbumPopover(self._client, self._settings, album, artist, year, widget, event.x-h, event.y-v)
pop.popup() pop.popup()
self._button_event=(None, None) self._button_event=(None, None)
@@ -2351,7 +2302,7 @@ class Browser(Gtk.Paned):
__gsignals__={"search_focus_changed": (GObject.SignalFlags.RUN_FIRST, None, (bool,))} __gsignals__={"search_focus_changed": (GObject.SignalFlags.RUN_FIRST, None, (bool,))}
def __init__(self, client, settings): def __init__(self, client, settings):
super().__init__(orientation=Gtk.Orientation.HORIZONTAL) # paned1 super().__init__(orientation=Gtk.Orientation.HORIZONTAL)
# adding vars # adding vars
self._client=client self._client=client
@@ -2404,10 +2355,6 @@ class Browser(Gtk.Paned):
box1.pack_start(self._artist_window, True, True, 0) box1.pack_start(self._artist_window, True, True, 0)
self.pack1(box1, False, False) self.pack1(box1, False, False)
self.pack2(self._stack, True, False) self.pack2(self._stack, True, False)
self.set_position(self._settings.get_int("paned1"))
def save_settings(self):
self._settings.set_int("paned1", self.get_position())
def _back_to_current_album(self, *args): def _back_to_current_album(self, *args):
def callback(): def callback():
@@ -2460,10 +2407,15 @@ class Browser(Gtk.Paned):
self.search_button.set_active(False) self.search_button.set_active(False)
def _on_mini_player(self, obj, typestring): def _on_mini_player(self, obj, typestring):
visibility=not(obj.get_property("mini-player")) state=obj.get_property("mini-player")
self.set_property("visible", visibility) self.set_property("no-show-all", state)
self.back_to_current_album_button.set_property("visible", visibility) self.back_to_current_album_button.set_property("no-show-all", state)
self.search_button.set_property("visible", visibility) self.search_button.set_property("no-show-all", state)
self.set_property("visible", not(state))
self.back_to_current_album_button.set_property("visible", not(state))
self.search_button.set_property("visible", not(state))
if not state:
self.show_all()
###################### ######################
# playlist and cover # # playlist and cover #
@@ -2579,7 +2531,7 @@ class AudioType(Gtk.Label):
# adding vars # adding vars
self._client=client self._client=client
self._init_vars() self.freq, self.res, self.chan, self.brate, self.file_type=(0, 0, 0, 0, "")
# connect # connect
self._client.emitter.connect("audio", self._on_audio) self._client.emitter.connect("audio", self._on_audio)
@@ -2590,18 +2542,15 @@ class AudioType(Gtk.Label):
def clear(self, *args): def clear(self, *args):
self.set_text("") self.set_text("")
self._init_vars() self.freq, self.res, self.chan, self.brate, self.file_type=(0, 0, 0, 0, "")
def _init_vars(self):
self.freq=0
self.res=0
self.chan=0
self.brate=0
self.file_type=""
def _refresh(self, *args): def _refresh(self, *args):
string=_("{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} channels, {file_type}").format( try:
bitrate=self.brate, frequency=self.freq, resolution=self.res, channels=self.chan, file_type=self.file_type) int_chan=int(self.chan)
except:
int_chan=0
channels=ngettext("{channels} channel", "{channels} channels", int_chan).format(channels=self.chan)
string="{} kb/s, {} kHz, {} bit, {}, {}".format(self.brate, self.freq, self.res, channels, self.file_type)
self.set_text(string) self.set_text(string)
def _on_audio(self, emitter, freq, res, chan): def _on_audio(self, emitter, freq, res, chan):
@@ -2638,31 +2587,29 @@ class CoverEventBox(Gtk.EventBox):
# connect # connect
self._button_press_event=self.connect("button-press-event", self._on_button_press_event) self._button_press_event=self.connect("button-press-event", self._on_button_press_event)
self._settings.connect("notify::mini-player", self._on_mini_player)
def _on_button_press_event(self, widget, event): def _on_button_press_event(self, widget, event):
if self._client.connected(): if self._settings.get_property("mini-player"):
song=ClientHelper.song_to_first_str_dict(self._client.wrapped_call("currentsong")) if event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
if song != {}: window=self.get_toplevel()
try: window.begin_move_drag(1, event.x_root, event.y_root, Gdk.CURRENT_TIME)
artist=song[self._settings.get_artist_type()]
except:
artist=song.get("artist", "")
album=song.get("album", "")
album_year=song.get("date", "")
if event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
self._client.wrapped_call("album_to_playlist", album, artist, album_year)
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_PRESS:
self._client.wrapped_call("album_to_playlist", album, artist, album_year, "append")
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
pop=AlbumPopover(self._client, self._settings, album, artist, album_year, widget, int(event.x), int(event.y))
pop.popup()
def _on_mini_player(self, obj, typestring):
if obj.get_property("mini-player"):
self.handler_block(self._button_press_event)
else: else:
self.handler_unblock(self._button_press_event) if self._client.connected():
song=ClientHelper.song_to_first_str_dict(self._client.wrapped_call("currentsong"))
if song != {}:
try:
artist=song[self._settings.get_artist_type()]
except:
artist=song.get("artist", "")
album=song.get("album", "")
album_year=song.get("date", "")
if event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
self._client.wrapped_call("album_to_playlist", album, artist, album_year)
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_PRESS:
self._client.wrapped_call("album_to_playlist", album, artist, album_year, "append")
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
pop=AlbumPopover(self._client, self._settings, album, artist, album_year, widget, event.x, event.y)
pop.popup()
class MainCover(Gtk.Frame): class MainCover(Gtk.Frame):
def __init__(self, client, settings): def __init__(self, client, settings):
@@ -2765,11 +2712,11 @@ class PlaylistWindow(Gtk.Box):
Gtk.TreeViewColumn(_("Year"), renderer_text, text=6, weight=9), Gtk.TreeViewColumn(_("Year"), renderer_text, text=6, weight=9),
Gtk.TreeViewColumn(_("Genre"), renderer_text, text=7, weight=9) Gtk.TreeViewColumn(_("Genre"), renderer_text, text=7, weight=9)
) )
for i, column in enumerate(self._columns):
for column in self._columns:
column.set_property("resizable", True) column.set_property("resizable", True)
column.set_property("sizing", Gtk.TreeViewColumnSizing.FIXED)
column.set_min_width(30) column.set_min_width(30)
column.connect("notify::fixed-width", self._on_column_width, i)
self._load_settings() self._load_settings()
# scroll # scroll
@@ -2825,13 +2772,8 @@ class PlaylistWindow(Gtk.Box):
self.pack_start(self._frame, True, True, 0) self.pack_start(self._frame, True, True, 0)
self.pack_end(action_bar, False, False, 0) self.pack_end(action_bar, False, False, 0)
def save_settings(self): # only saves the column sizes def _on_column_width(self, obj, typestring, pos):
columns=self._treeview.get_columns() self._settings.array_modify("ai", "column-sizes", pos, obj.get_property("fixed-width"))
permutation=self._settings.get_value("column-permutation").unpack()
sizes=[0] * len(permutation)
for i in range(len(permutation)):
sizes[permutation[i]]=columns[i].get_width()
self._settings.set_value("column-sizes", GLib.Variant("ai", sizes))
def _load_settings(self, *args): def _load_settings(self, *args):
columns=self._treeview.get_columns() columns=self._treeview.get_columns()
@@ -2860,7 +2802,8 @@ class PlaylistWindow(Gtk.Box):
self._playlist_info.set_text("") self._playlist_info.set_text("")
else: else:
length_human_readable=ClientHelper.calc_display_length(songs) length_human_readable=ClientHelper.calc_display_length(songs)
self._playlist_info.set_text(_("{titles} titles ({length})").format(titles=len(songs), length=length_human_readable)) titles=ngettext("{titles} title", "{titles} titles", len(songs)).format(titles=len(songs))
self._playlist_info.set_text(" ".join((titles, "({length})".format(length=length_human_readable))))
def _scroll_to_selected_title(self, *args): def _scroll_to_selected_title(self, *args):
treeview, treeiter=self._selection.get_selected() treeview, treeiter=self._selection.get_selected()
@@ -3011,8 +2954,12 @@ class PlaylistWindow(Gtk.Box):
self._treeview.set_sensitive(True) self._treeview.set_sensitive(True)
def _on_mini_player(self, obj, typestring): def _on_mini_player(self, obj, typestring):
visibility=not(obj.get_property("mini-player")) if obj.get_property("mini-player"):
self.set_property("visible", visibility) self.set_property("no-show-all", True)
self.set_property("visible", False)
else:
self.set_property("no-show-all", False)
self.show_all()
class CoverPlaylistWindow(Gtk.Paned): class CoverPlaylistWindow(Gtk.Paned):
def __init__(self, client, settings): def __init__(self, client, settings):
@@ -3068,13 +3015,8 @@ class CoverPlaylistWindow(Gtk.Paned):
overlay.add_overlay(self._lyrics_button_revealer) overlay.add_overlay(self._lyrics_button_revealer)
self.pack1(overlay, False, False) self.pack1(overlay, False, False)
self.pack2(self._playlist_window, True, False) self.pack2(self._playlist_window, True, False)
self.set_position(self._settings.get_int("paned0"))
self._on_settings_changed() # hide lyrics button self._on_settings_changed() # hide lyrics button
def save_settings(self):
self._settings.set_int("paned0", self.get_position())
self._playlist_window.save_settings()
def _on_reconnected(self, *args): def _on_reconnected(self, *args):
self.lyrics_button.set_sensitive(True) self.lyrics_button.set_sensitive(True)
@@ -3146,8 +3088,10 @@ class PlaybackControl(Gtk.ButtonBox):
song=int(self._client.wrapped_call("status")["song"]) song=int(self._client.wrapped_call("status")["song"])
elapsed=ClientHelper.calc_display_length(songs[:song]) elapsed=ClientHelper.calc_display_length(songs[:song])
rest=ClientHelper.calc_display_length(songs[song+1:]) rest=ClientHelper.calc_display_length(songs[song+1:])
self._prev_button.set_tooltip_text(_("{titles} titles ({length})").format(titles=song, length=elapsed)) elapsed_titles=ngettext("{titles} title", "{titles} titles", song).format(titles=song)
self._next_button.set_tooltip_text(_("{titles} titles ({length})").format(titles=(len(songs)-(song+1)), length=rest)) rest_titles=ngettext("{titles} title", "{titles} titles", (len(songs)-(song+1))).format(titles=(len(songs)-(song+1)))
self._prev_button.set_tooltip_text(" ".join((elapsed_titles, "({length})".format(length=elapsed))))
self._next_button.set_tooltip_text(" ".join((rest_titles, "({length})".format(length=rest))))
except: except:
self._prev_button.set_tooltip_text("") self._prev_button.set_tooltip_text("")
self._next_button.set_tooltip_text("") self._next_button.set_tooltip_text("")
@@ -3350,15 +3294,16 @@ class PlaybackOptions(Gtk.Box):
# widgets # widgets
icons={} icons={}
for icon_name in ("media-playlist-shuffle-symbolic","media-playlist-repeat-symbolic","zoom-original-symbolic","edit-cut-symbolic"): for icon_name in ("media-playlist-shuffle-symbolic","media-playlist-repeat-symbolic",
"org.mpdevil.mpdevil-single-symbolic","org.mpdevil.mpdevil-consume-symbolic"):
icons[icon_name]=AutoSizedIcon(icon_name, "icon-size", self._settings) icons[icon_name]=AutoSizedIcon(icon_name, "icon-size", self._settings)
self._random_button=Gtk.ToggleButton(image=icons["media-playlist-shuffle-symbolic"], tooltip_text=_("Random mode")) self._random_button=Gtk.ToggleButton(image=icons["media-playlist-shuffle-symbolic"], tooltip_text=_("Random mode"))
self._random_button.set_can_focus(False) self._random_button.set_can_focus(False)
self._repeat_button=Gtk.ToggleButton(image=icons["media-playlist-repeat-symbolic"], tooltip_text=_("Repeat mode")) self._repeat_button=Gtk.ToggleButton(image=icons["media-playlist-repeat-symbolic"], tooltip_text=_("Repeat mode"))
self._repeat_button.set_can_focus(False) self._repeat_button.set_can_focus(False)
self._single_button=Gtk.ToggleButton(image=icons["zoom-original-symbolic"], tooltip_text=_("Single mode")) self._single_button=Gtk.ToggleButton(image=icons["org.mpdevil.mpdevil-single-symbolic"], tooltip_text=_("Single mode"))
self._single_button.set_can_focus(False) self._single_button.set_can_focus(False)
self._consume_button=Gtk.ToggleButton(image=icons["edit-cut-symbolic"], tooltip_text=_("Consume mode")) self._consume_button=Gtk.ToggleButton(image=icons["org.mpdevil.mpdevil-consume-symbolic"], tooltip_text=_("Consume mode"))
self._consume_button.set_can_focus(False) self._consume_button.set_can_focus(False)
self._volume_button=Gtk.VolumeButton(use_symbolic=True, size=self._settings.get_gtk_icon_size("icon-size")) self._volume_button=Gtk.VolumeButton(use_symbolic=True, size=self._settings.get_gtk_icon_size("icon-size"))
self._volume_button.set_can_focus(False) self._volume_button.set_can_focus(False)
@@ -3474,8 +3419,12 @@ class PlaybackOptions(Gtk.Box):
self._volume_refresh(None, -1) self._volume_refresh(None, -1)
def _on_mini_player(self, obj, typestring): def _on_mini_player(self, obj, typestring):
visibility=not(obj.get_property("mini-player")) if obj.get_property("mini-player"):
self._button_box.set_property("visible", visibility) self._button_box.set_property("no-show-all", True)
self._button_box.set_property("visible", False)
else:
self._button_box.set_property("no-show-all", False)
self._button_box.show_all()
def _on_icon_size_changed(self, *args): def _on_icon_size_changed(self, *args):
self._volume_button.set_property("size", self._settings.get_gtk_icon_size("icon-size")) self._volume_button.set_property("size", self._settings.get_gtk_icon_size("icon-size"))
@@ -3676,15 +3625,13 @@ class MainWindow(Gtk.ApplicationWindow):
self._client=client self._client=client
self._settings=settings self._settings=settings
self._use_csd=self._settings.get_boolean("use-csd") self._use_csd=self._settings.get_boolean("use-csd")
self._tmp_saved_size=None # needed to restore size after leaving mini player mode
self._tmp_saved_maximized=None # needed to restore maximize state after leaving mini player mode
# MPRIS # MPRIS
dbus_service=MPRISInterface(self, self._client, self._settings) dbus_service=MPRISInterface(self, self._client, self._settings)
# actions # actions
simple_actions_data=( simple_actions_data=(
"save","settings","stats","help","menu", "settings","stats","help","menu",
"toggle-lyrics","back-to-current-album","toggle-search", "toggle-lyrics","back-to-current-album","toggle-search",
"profile-next","profile-prev" "profile-next","profile-prev"
) )
@@ -3706,6 +3653,7 @@ class MainWindow(Gtk.ApplicationWindow):
else: else:
icons={"open-menu-symbolic": AutoSizedIcon("open-menu-symbolic", "icon-size", self._settings)} icons={"open-menu-symbolic": AutoSizedIcon("open-menu-symbolic", "icon-size", self._settings)}
self._paned=Gtk.Paned()
self._browser=Browser(self._client, self._settings) self._browser=Browser(self._client, self._settings)
self._cover_playlist_window=CoverPlaylistWindow(self._client, self._settings) self._cover_playlist_window=CoverPlaylistWindow(self._client, self._settings)
playback_control=PlaybackControl(self._client, self._settings) playback_control=PlaybackControl(self._client, self._settings)
@@ -3728,7 +3676,6 @@ class MainWindow(Gtk.ApplicationWindow):
menu=Gio.Menu() menu=Gio.Menu()
menu.append_submenu(_("Profiles"), self._profiles_submenu) menu.append_submenu(_("Profiles"), self._profiles_submenu)
menu.append(_("Mini player"), "win.mini-player") menu.append(_("Mini player"), "win.mini-player")
menu.append(_("Save window layout"), "win.save")
menu.append_section(None, mpd_subsection) menu.append_section(None, mpd_subsection)
menu.append_section(None, subsection) menu.append_section(None, subsection)
@@ -3754,15 +3701,18 @@ class MainWindow(Gtk.ApplicationWindow):
self._client.emitter.connect("disconnected", self._on_disconnected) self._client.emitter.connect("disconnected", self._on_disconnected)
self._client.emitter.connect("reconnected", self._on_reconnected) self._client.emitter.connect("reconnected", self._on_reconnected)
self._browser.connect("search_focus_changed", self._on_search_focus_changed) self._browser.connect("search_focus_changed", self._on_search_focus_changed)
# auto save window state and size
self.connect("size-allocate", self._on_size_allocate)
self._settings.bind("maximize", self, "is-maximized", Gio.SettingsBindFlags.SET)
# save and restore mini player
self._settings.bind("mini-player", self._settings, "mini-player", Gio.SettingsBindFlags.DEFAULT)
# packing # packing
self._paned2=Gtk.Paned()
self._paned2.set_position(self._settings.get_int("paned2"))
self._on_playlist_pos_changed() # set orientation self._on_playlist_pos_changed() # set orientation
self._paned2.pack1(self._browser, True, False) self._paned.pack1(self._browser, True, False)
self._paned2.pack2(self._cover_playlist_window, False, False) self._paned.pack2(self._cover_playlist_window, False, False)
vbox=Gtk.Box(orientation=Gtk.Orientation.VERTICAL) vbox=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
vbox.pack_start(self._paned2, True, True, 0) vbox.pack_start(self._paned, True, True, 0)
vbox.pack_start(action_bar, False, False, 0) vbox.pack_start(action_bar, False, False, 0)
overlay=Gtk.Overlay() overlay=Gtk.Overlay()
overlay.add(vbox) overlay.add(vbox)
@@ -3775,7 +3725,6 @@ class MainWindow(Gtk.ApplicationWindow):
self._header_bar.pack_end(self._menu_button) self._header_bar.pack_end(self._menu_button)
self._header_bar.pack_end(self._browser.search_button) self._header_bar.pack_end(self._browser.search_button)
else: else:
action_bar.pack_start(Gtk.Separator.new(orientation=Gtk.Orientation.VERTICAL))
action_bar.pack_start(self._menu_button) action_bar.pack_start(self._menu_button)
self.add(overlay) self.add(overlay)
self._client.emitter.emit("disconnected") # bring player in defined state self._client.emitter.emit("disconnected") # bring player in defined state
@@ -3787,6 +3736,15 @@ class MainWindow(Gtk.ApplicationWindow):
self.show_all() self.show_all()
while Gtk.events_pending(): # ensure window is visible while Gtk.events_pending(): # ensure window is visible
Gtk.main_iteration_do(True) Gtk.main_iteration_do(True)
# restore paned settings when window is visible (fixes a bug when window is maximized)
self._cover_playlist_window.set_position(self._settings.get_int("paned0"))
self._browser.set_position(self._settings.get_int("paned1"))
self._paned.set_position(self._settings.get_int("paned2"))
# auto save paned positions
self._cover_playlist_window.connect("notify::position", self._on_paned_position, "paned0")
self._browser.connect("notify::position", self._on_paned_position, "paned1")
self._paned.connect("notify::position", self._on_paned_position, "paned2")
# start client # start client
def callback(*args): def callback(*args):
@@ -3803,15 +3761,6 @@ class MainWindow(Gtk.ApplicationWindow):
def _on_toggle_search(self, action, param): def _on_toggle_search(self, action, param):
self._browser.search_button.set_active(not(self._browser.search_button.get_active())) self._browser.search_button.set_active(not(self._browser.search_button.get_active()))
def _on_save(self, action, param):
size=self.get_size()
self._settings.set_int("width", size[0])
self._settings.set_int("height", size[1])
self._settings.set_boolean("maximize", self.is_maximized())
self._browser.save_settings()
self._cover_playlist_window.save_settings()
self._settings.set_int("paned2", self._paned2.get_position())
def _on_settings(self, action, param): def _on_settings(self, action, param):
settings=SettingsDialog(self, self._client, self._settings) settings=SettingsDialog(self, self._client, self._settings)
settings.run() settings.run()
@@ -3868,34 +3817,35 @@ class MainWindow(Gtk.ApplicationWindow):
notify.show() notify.show()
def _on_reconnected(self, *args): def _on_reconnected(self, *args):
for action in ("save","stats","toggle-lyrics","back-to-current-album","toggle-search"): for action in ("stats","toggle-lyrics","back-to-current-album","toggle-search"):
self.lookup_action(action).set_enabled(True) self.lookup_action(action).set_enabled(True)
def _on_disconnected(self, *args): def _on_disconnected(self, *args):
self.set_title("mpdevil") self.set_title("mpdevil")
if self._use_csd: if self._use_csd:
self._header_bar.set_subtitle("") self._header_bar.set_subtitle("")
for action in ("save","stats","toggle-lyrics","back-to-current-album","toggle-search"): for action in ("stats","toggle-lyrics","back-to-current-album","toggle-search"):
self.lookup_action(action).set_enabled(False) self.lookup_action(action).set_enabled(False)
def _on_search_focus_changed(self, obj, focus): def _on_search_focus_changed(self, obj, focus):
self._mpd_action_group.lookup_action("toggle-play").set_enabled(not(focus)) self._mpd_action_group.lookup_action("toggle-play").set_enabled(not(focus))
def _on_size_allocate(self, widget, rect):
if not self.is_maximized() and not self._settings.get_property("mini-player"):
size=self.get_size()
self._settings.set_int("width", size[0])
self._settings.set_int("height", size[1])
def _on_paned_position(self, obj, typestring, key):
self._settings.set_int(key, obj.get_position())
def _on_mini_player(self, obj, typestring): def _on_mini_player(self, obj, typestring):
if obj.get_property("mini-player"): if obj.get_property("mini-player"):
self.lookup_action("save").set_enabled(False) if self.is_maximized():
self._tmp_saved_size=self.get_size()
self._tmp_saved_miximized=self.is_maximized()
if self._tmp_saved_miximized:
self.unmaximize() self.unmaximize()
self.resize(1,1) self.resize(1,1)
else: else:
self.lookup_action("save").set_enabled(True) self.resize(self._settings.get_int("width"), self._settings.get_int("height"))
self.resize(self._tmp_saved_size[0], self._tmp_saved_size[1])
if self._tmp_saved_miximized:
self.maximize()
self._tmp_saved_size=None
self._tmp_saved_maximized=None
def _on_cursor_watch(self, obj, typestring): def _on_cursor_watch(self, obj, typestring):
if obj.get_property("cursor-watch"): if obj.get_property("cursor-watch"):
@@ -3907,10 +3857,10 @@ class MainWindow(Gtk.ApplicationWindow):
def _on_playlist_pos_changed(self, *args): def _on_playlist_pos_changed(self, *args):
if self._settings.get_boolean("playlist-right"): if self._settings.get_boolean("playlist-right"):
self._cover_playlist_window.set_orientation(Gtk.Orientation.VERTICAL) self._cover_playlist_window.set_orientation(Gtk.Orientation.VERTICAL)
self._paned2.set_orientation(Gtk.Orientation.HORIZONTAL) self._paned.set_orientation(Gtk.Orientation.HORIZONTAL)
else: else:
self._cover_playlist_window.set_orientation(Gtk.Orientation.HORIZONTAL) self._cover_playlist_window.set_orientation(Gtk.Orientation.HORIZONTAL)
self._paned2.set_orientation(Gtk.Orientation.VERTICAL) self._paned.set_orientation(Gtk.Orientation.VERTICAL)
def _refresh_profiles_menu(self, *args): def _refresh_profiles_menu(self, *args):
self._profiles_submenu.remove_all() self._profiles_submenu.remove_all()
@@ -3984,4 +3934,3 @@ class mpdevil(Gtk.Application):
if __name__ == "__main__": if __name__ == "__main__":
app=mpdevil() app=mpdevil()
app.run(sys.argv) app.run(sys.argv)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="m2.0102 0.52917a1.5875 1.5875 0 0 1 1.5875 1.5875 1.5875 1.5875 0 0 1-1.5875 1.5875 1.5875 1.5875 0 0 1-1.3746-0.79375l1.3746-0.79375-1.3746-0.79375a1.5875 1.5875 0 0 1 1.3746-0.79375zm-0.14779 0.52917a0.26458 0.26458 0 0 0-0.14263 0.035657 0.26458 0.26458 0 0 0-0.096635 0.36122 0.26458 0.26458 0 0 0 0.36122 0.096635 0.26458 0.26458 0 0 0 0.096635-0.36122 0.26458 0.26458 0 0 0-0.21859-0.13229z" fill="#2e3436" stroke-linecap="round" stroke-width=".25194"/>
</svg>

After

Width:  |  Height:  |  Size: 980 B

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path transform="scale(.26458)" d="m8.4023 2a6 6 0 0 0-6 6 6 6 0 0 0 6 6 6 6 0 0 0 5.1953-3l-5.1953-3 5.1953-3a6 6 0 0 0-5.1953-3zm0.55859 2a1 1 0 0 1 0.53906 0.13477 1 1 0 0 1 0.36523 1.3652 1 1 0 0 1-1.3652 0.36523 1 1 0 0 1-0.36523-1.3652 1 1 0 0 1 0.82617-0.5z" fill="#2e3436" stroke-linecap="round" stroke-width=".9522"/>
</svg>

After

Width:  |  Height:  |  Size: 838 B

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="15.982" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="m7.9902 2a6 6 0 0 0-5.9902 5.6914v0.62891a6 6 0 0 0 5.9902 5.6797 6 6 0 0 0 6-6 6 6 0 0 0-6-6zm-0.99023 3h2v6h-2v-4h-1v-1c0.694 0 1-0.348 1-1z" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 657 B

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(-156.79 -48.192)">
<path transform="matrix(.26458 0 0 .26458 156.79 48.192)" d="m4.1621 0s-1.8317 4.1425-0.50781 9.791a22.525 23.103 0 0 0-3.6543 5.5703v0.63867h2.5234a19.982 20.495 0 0 1 2.0664-3.3125h0.0039062c0.44122 1.0742 1.008 2.1855 1.7266 3.3125h9.6797v-6.1543a17.886 17.886 0 0 0-4.5488 1.8223c-1.1979-0.89234-2.2001-1.8385-3.0391-2.791a19.982 20.495 0 0 1 7.5879-3.5469v-2.6621a22.525 23.103 0 0 0-9.1621 4.1504c-2.3946-3.6216-2.6738-6.8184-2.6738-6.8184h-0.0019531z" fill="#2e3436" stroke-linecap="round" stroke-width=".053119"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,5 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="linearGradient871">
<stop stop-opacity=".5" offset="0"/>
<stop stop-opacity=".1" offset=".5"/>
<stop stop-opacity=".5" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient904" x1="142" x2="238" y1="74.998" y2="74.998" gradientTransform="matrix(.26458 0 0 .26458 123.45 54.013)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient871"/>
<linearGradient id="linearGradient912" x1="157.72" x2="189.71" y1="58.908" y2="58.908" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient871"/>
<linearGradient id="linearGradient1026" x1="195.81" x2="197.92" y1="69.668" y2="69.668" gradientTransform="translate(-11.506 4.4716)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient871"/>
<linearGradient id="linearGradient1030" x1="195.81" x2="197.92" y1="69.668" y2="69.668" gradientTransform="matrix(-1 0 0 1 358.94 4.4716)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient871"/>
<linearGradient id="linearGradient1043" x1="146.99" x2="161.99" y1="83.478" y2="83.478" gradientTransform="matrix(.26458 0 0 .26458 147.53 49.338)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient871"/>
<linearGradient id="linearGradient1047" x1="146.99" x2="161.99" y1="83.478" y2="83.478" gradientTransform="matrix(-.26458 0 0 .26458 199.91 49.338)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient871"/>
<linearGradient id="linearGradient885" x1="144.82" x2="154.08" y1="51.721" y2="51.721" gradientTransform="translate(16.728 4.9575)" gradientUnits="userSpaceOnUse">
<stop stop-opacity=".4" offset="0"/>
<stop stop-opacity=".1" offset=".5"/>
<stop stop-opacity=".5" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient889" x1="144.82" x2="154.08" y1="51.721" y2="51.721" gradientTransform="matrix(-1 0 0 1 330.71 4.9575)" gradientUnits="userSpaceOnUse">
<stop stop-opacity=".4" offset="0"/>
<stop stop-opacity=".1" offset=".5"/>
<stop stop-opacity=".5" offset="1"/>
</linearGradient>
</defs>
<metadata> <metadata>
<rdf:RDF> <rdf:RDF>
<cc:Work rdf:about=""> <cc:Work rdf:about="">
@@ -10,47 +33,34 @@
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
<g transform="translate(-156.79 -48.192)"> <g transform="translate(-156.79 -48.192)">
<path d="m173.69 50.573a15.994 16.404 0 0 0-15.965 16.404h1.8056a14.188 14.552 0 0 1 14.08-14.552 14.188 14.552 0 0 1 0.10852 0 14.188 14.552 0 0 1 14.188 14.552h1.8061a15.994 16.404 0 0 0-15.994-16.404 15.994 16.404 0 0 0-0.0289 0z" opacity=".3" stroke-linecap="round" stroke-width=".037717"/>
<path d="m173.69 50.044a15.994 16.404 0 0 0-15.965 16.404h1.8056a14.188 14.552 0 0 1 14.08-14.552 14.188 14.552 0 0 1 0.10852 0 14.188 14.552 0 0 1 14.188 14.552h1.8061a15.994 16.404 0 0 0-15.994-16.404 15.994 16.404 0 0 0-0.0289 0z" fill="#3d3846" stroke-linecap="round" stroke-width=".037717"/> <path d="m173.69 50.044a15.994 16.404 0 0 0-15.965 16.404h1.8056a14.188 14.552 0 0 1 14.08-14.552 14.188 14.552 0 0 1 0.10852 0 14.188 14.552 0 0 1 14.188 14.552h1.8061a15.994 16.404 0 0 0-15.994-16.404 15.994 16.404 0 0 0-0.0289 0z" fill="#3d3846" stroke-linecap="round" stroke-width=".037717"/>
<path d="m173.61 51.367a14.188 14.552 0 0 0-14.079 14.552h-1.7973a15.994 16.404 0 0 0-8e-3 0.52917h1.8056a14.188 14.552 0 0 1 14.08-14.552 14.188 14.552 0 0 1 0.10852 0 14.188 14.552 0 0 1 14.188 14.552h1.8061a15.994 16.404 0 0 0-8e-3 -0.52917h-1.7978a14.188 14.552 0 0 0-14.188-14.552 14.188 14.552 0 0 0-0.10852 0 14.188 14.552 0 0 1-5.2e-4 0z" fill="url(#linearGradient912)" stroke-linecap="round" stroke-width=".037717"/>
<g> <g>
<path d="m173.69 50.044a15.994 16.404 0 0 0-15.965 16.404h8e-3a15.994 16.404 0 0 1 15.957-15.875 15.994 16.404 0 0 1 0.0289 0 15.994 16.404 0 0 1 15.986 15.875h8e-3a15.994 16.404 0 0 0-15.994-16.404 15.994 16.404 0 0 0-0.0289 0z" fill="#fff" opacity=".1" stroke-linecap="round" stroke-width=".037717"/>
<path d="m162.25 48.986s-2.7703 6.254 2.6891 12.965l5.8685-2.7602c-7.9486-3.3925-8.5576-10.204-8.5576-10.204z" opacity=".2"/>
<path d="m162.25 48.457s-2.7703 6.254 2.6891 12.965l5.8685-2.7602c-7.9486-3.3925-8.5576-10.204-8.5576-10.204z" fill="#c01c28"/> <path d="m162.25 48.457s-2.7703 6.254 2.6891 12.965l5.8685-2.7602c-7.9486-3.3925-8.5576-10.204-8.5576-10.204z" fill="#c01c28"/>
<path d="m185.19 48.986s2.7703 6.254-2.6891 12.965l-5.8685-2.7602c7.9486-3.3925 8.5576-10.204 8.5576-10.204z" opacity=".2"/> <path d="m161.56 51.936c-0.10501 2.4408 0.46065 5.8972 3.3796 9.4852l5.8684-2.76c-0.39365-0.16801-0.76447-0.34666-1.1229-0.5302l-4.7454 2.2319c-2.5193-3.0967-3.2844-6.0943-3.3796-8.4269z" fill="url(#linearGradient885)"/>
<path d="m185.19 48.457s2.7703 6.254-2.6891 12.965l-5.8685-2.7602c7.9486-3.3925 8.5576-10.204 8.5576-10.204z" fill="#c01c28"/> <path d="m185.19 48.457s2.7703 6.254-2.6891 12.965l-5.8685-2.7602c7.9486-3.3925 8.5576-10.204 8.5576-10.204z" fill="#c01c28"/>
<path transform="matrix(.26458 0 0 .26458 156.79 48.192)" d="m107.34 1s-2.3018 25.746-32.344 38.568l2.166 1.0176c27.975-13.105 30.178-37.586 30.178-37.586s2.4572 5.5725 2.6387 14.197c0.20388-9.7558-2.6387-16.197-2.6387-16.197z" fill="#fffefe" opacity=".1"/> <path d="m185.88 51.936c0.10501 2.4408-0.46065 5.8972-3.3796 9.4852l-5.8684-2.76c0.39365-0.16801 0.76447-0.34666 1.1229-0.5302l4.7454 2.2319c2.5193-3.0967 3.2844-6.0943 3.3796-8.4269z" fill="url(#linearGradient889)"/>
<circle transform="rotate(12.584)" cx="184.43" cy="28.813" r="12.7" opacity=".2"/>
<path d="m162.25 48.457s0.609 6.812 8.5576 10.205l-0.57309 0.26924c-7.4018-3.4675-7.9845-9.9446-7.9845-9.9446s-0.65013 1.4744-0.69815 3.7564c-0.0539-2.5812 0.69815-4.2855 0.69815-4.2855z" fill="#fffefe" opacity=".1"/>
<circle transform="rotate(12.584)" cx="184.31" cy="28.296" r="12.7" fill="#e01b24"/> <circle transform="rotate(12.584)" cx="184.31" cy="28.296" r="12.7" fill="#e01b24"/>
<path d="m173.67 55.071a12.7 12.7 0 0 0-12.345 9.9332 12.7 12.7 0 0 0-0.30179 3.0272 12.7 12.7 0 0 1 0.30179-2.498 12.7 12.7 0 0 1 15.162-9.6284 12.7 12.7 0 0 1 9.9301 12.135 12.7 12.7 0 0 0-9.9301-12.664 12.7 12.7 0 0 0-2.8169-0.30489z" fill="#fff" opacity=".1"/> <path d="m161.03 67.241a12.7 12.7 0 0 0 9.9224 12.925 12.7 12.7 0 0 0 15.162-9.6284 12.7 12.7 0 0 0 0.29403-3.2949 12.7 12.7 0 0 1-0.29403 2.2366 12.7 12.7 0 0 1-15.162 9.6284 12.7 12.7 0 0 1-9.9224-11.867z" fill="url(#linearGradient904)"/>
<circle cx="172.13" cy="69.888" r=".79375" opacity=".4"/>
<circle cx="175.31" cy="69.888" r=".79375" opacity=".4"/>
</g>
<path d="m181.92 64.332c0 1.8995-1.5395 3.4396-3.4396 3.4396-1.8995 0-3.4396-1.5401-3.4396-3.4396 0-1.8995 1.5401-3.4396 3.4396-3.4396 1.9001 0 3.4396 1.5401 3.4396 3.4396z" fill="#f6f5f4"/>
<g>
<g> <g>
<circle cx="172.13" cy="70.417" r=".79375" opacity=".3"/> <circle cx="178.22" cy="63.273" r="1.5875" fill="#241f31"/>
<circle cx="175.31" cy="70.417" r=".79375" opacity=".3"/> <path d="m172.4 64.332c0 1.8995-1.5395 3.4396-3.4396 3.4396-1.8995 0-3.4396-1.5401-3.4396-3.4396 0-1.8995 1.5401-3.4396 3.4396-3.4396 1.9001 0 3.4396 1.5401 3.4396 3.4396z" fill="#f6f5f4"/>
<circle cx="178.48" cy="65.39" r="3.4396" opacity=".2"/> <circle cx="168.69" cy="63.273" r="1.5875" fill="#241f31"/>
<circle cx="178.48" cy="64.861" r="3.4396" fill="#f6f5f4"/>
<circle cx="168.96" cy="65.39" r="3.4396" opacity=".2"/>
<circle cx="168.96" cy="64.861" r="3.4396" fill="#f6f5f4"/>
<circle cx="178.22" cy="63.802" r="1.5875" fill="#241f31"/>
<circle cx="168.69" cy="63.802" r="1.5875" fill="#241f31"/>
<path transform="matrix(.26458 0 0 .26458 156.79 48.192)" d="m69.949 81a3 3 0 0 0-2.9492 3 3 3 0 0 0 0.042969 0.50195 3 3 0 0 1 2.957-2.502 3 3 0 0 1 2.957 2.498 3 3 0 0 0 0.042969-0.49805 3 3 0 0 0-3-3 3 3 0 0 0-0.050781 0z" opacity=".3"/>
<path d="m172.12 69.623a0.79375 0.79375 0 0 0-0.78031 0.79375 0.79375 0.79375 0 0 0 0.0114 0.13281 0.79375 0.79375 0 0 1 0.78238-0.66198 0.79375 0.79375 0 0 1 0.78238 0.66094 0.79375 0.79375 0 0 0 0.0114-0.13178 0.79375 0.79375 0 0 0-0.79375-0.79375 0.79375 0.79375 0 0 0-0.0134 0z" opacity=".3"/>
</g> </g>
<path d="m169.95 71.211c-3.1753 0.04728-2.4014 1.419-2.9983 2.5048-0.29211 0.53135 0.422-0.06077 1.2252-0.80047 1.263 1.9524 3.5805 3.7996 7.6435 2.3347-3.622-0.25777-5.8309-1.5312-7.1556-2.7967 0.66518-0.6314 1.2852-1.2423 1.2852-1.2423z" opacity=".4"/>
<path d="m161.02 60.204v15.135s-0.25743-0.09764-0.39066-0.13303c-0.65036-0.17255-1.39-0.07614-1.9848-0.38276-0.32991-0.17009-0.60935-0.45083-0.79371-0.76449-0.26875-0.45726-0.3681-0.83192-0.44542-1.3501-0.20943-1.4036-0.34842-2.7238-0.35396-4.6762v-0.5219c6e-3 -1.9524 0.14453-3.273 0.35396-4.6767 0.0773-0.51818 0.17667-0.89233 0.44542-1.3496 0.18436-0.31367 0.4638-0.5944 0.79371-0.7645 0.59475-0.30662 1.3344-0.21021 1.9848-0.38276 0.13323-0.03538 0.39066-0.13302 0.39066-0.13302z" fill="#3d3846"/>
<path d="m162.07 59.834c-0.34403 5.04e-4 -1.0521 0.37002-1.0521 0.37002v15.135s0.7081 0.36951 1.0521 0.37002c0.34403 5.11e-4 0.54179-0.12749 0.71262-0.43627 0.17083-0.30878 0.35792-0.67862 0.35192-1.8119l-5.2e-4 -0.36135h5.2e-4v-10.656h-5.2e-4l5.2e-4 -0.36135c6e-3 -1.1332-0.18109-1.5031-0.35192-1.8119-0.17083-0.30878-0.36859-0.43678-0.71262-0.43627z" fill="#9a9996"/>
<path d="m186.42 60.204v15.135s0.25743-0.09764 0.39066-0.13303c0.65036-0.17255 1.39-0.07614 1.9848-0.38276 0.32991-0.17009 0.60935-0.45083 0.79371-0.76449 0.26875-0.45726 0.3681-0.83192 0.44542-1.3501 0.20943-1.4036 0.34842-2.7238 0.35396-4.6762v-0.5219c-6e-3 -1.9524-0.14453-3.273-0.35396-4.6767-0.0773-0.51818-0.17667-0.89233-0.44542-1.3496-0.18436-0.31367-0.4638-0.5944-0.79371-0.7645-0.59475-0.30662-1.3344-0.21021-1.9848-0.38276-0.13323-0.03538-0.39066-0.13302-0.39066-0.13302z" fill="#3d3846"/>
<path d="m185.37 59.834c0.34403 5.04e-4 1.0521 0.37002 1.0521 0.37002v15.135s-0.7081 0.36951-1.0521 0.37002c-0.34403 5.11e-4 -0.54179-0.12749-0.71262-0.43627-0.17083-0.30878-0.35792-0.67862-0.35192-1.8119l5.2e-4 -0.36135h-5.2e-4v-10.656h5.2e-4l-5.2e-4 -0.36135c-6e-3 -1.1332 0.18109-1.5031 0.35192-1.8119 0.17083-0.30878 0.36859-0.43678 0.71262-0.43627z" fill="#9a9996"/>
<path d="m184.3 72.57v0.36122l5.1e-4 -0.36122zm0 0.36122v0.16795h5.1e-4l-5.1e-4 0.36122c-6e-3 1.1332 0.18108 1.5035 0.35191 1.8123 0.17083 0.30878 0.36859 0.43666 0.71262 0.43615 0.34403-5.04e-4 1.0521-0.37 1.0521-0.37v-0.52917s-0.7081 0.3695-1.0521 0.37c-0.34403 5.11e-4 -0.54179-0.12737-0.71262-0.43615-0.17083-0.30878-0.35791-0.67905-0.35191-1.8123z" fill="url(#linearGradient1026)"/>
<path d="m163.13 72.57v0.36122l-5.1e-4 -0.36122zm0 0.36122v0.16795h-5.1e-4l5.1e-4 0.36122c6e-3 1.1332-0.18108 1.5035-0.35191 1.8123-0.17083 0.30878-0.36859 0.43666-0.71262 0.43615-0.34403-5.04e-4 -1.0521-0.37-1.0521-0.37v-0.52917s0.7081 0.3695 1.0521 0.37c0.34403 5.11e-4 0.54179-0.12737 0.71262-0.43615 0.17083-0.30878 0.35791-0.67905 0.35191-1.8123z" fill="url(#linearGradient1030)"/>
<path d="m190.39 67.51c-6e-3 1.9481-0.14483 3.2672-0.35398 4.669-0.0773 0.51818-0.1767 0.89253-0.44545 1.3498-0.18436 0.31366-0.46384 0.59472-0.79375 0.76481-0.59475 0.30662-1.334 0.21038-1.9844 0.38292-0.13323 0.03539-0.39067 0.13281-0.39067 0.13281v0.52917s0.25744-0.09742 0.39067-0.13281c0.65036-0.17255 1.3896-0.07631 1.9844-0.38292 0.32991-0.17009 0.60939-0.45115 0.79375-0.76481 0.26875-0.45726 0.36813-0.83161 0.44545-1.3498 0.20943-1.4036 0.34844-2.7238 0.35398-4.6762z" fill="url(#linearGradient1043)"/>
<path d="m157.05 67.51c6e-3 1.9481 0.14483 3.2672 0.35398 4.669 0.0773 0.51818 0.1767 0.89253 0.44545 1.3498 0.18436 0.31366 0.46384 0.59472 0.79375 0.76481 0.59475 0.30662 1.334 0.21038 1.9844 0.38292 0.13323 0.03539 0.39067 0.13281 0.39067 0.13281v0.52917s-0.25744-0.09742-0.39067-0.13281c-0.65036-0.17255-1.3896-0.07631-1.9844-0.38292-0.32991-0.17009-0.60939-0.45115-0.79375-0.76481-0.26875-0.45726-0.36813-0.83161-0.44545-1.3498-0.20943-1.4036-0.34844-2.7238-0.35398-4.6762z" fill="url(#linearGradient1047)"/>
</g> </g>
<g transform="translate(-3.3391 -25.538)">
<path d="m188.71 85.901c-0.34403-5.19e-4 -0.54174 0.12927-0.71257 0.44235-0.17083 0.31308-0.3579 0.68807-0.3519 1.8371l5.2e-4 0.36639h-5.2e-4v10.583h5.2e-4l-5.2e-4 0.3669c-6e-3 1.149 0.18107 1.524 0.3519 1.8371s0.36854 0.44236 0.71257 0.44184c0.34403-5.1e-4 1.0521-0.37466 1.0521-0.37466v0.11059s0.25742-0.099 0.39065-0.13488c0.65036-0.17495 1.39-0.0772 1.9848-0.38809 0.32991-0.17245 0.60935-0.45711 0.79371-0.77514 0.26875-0.46363 0.3681-0.84351 0.44542-1.3689 0.20943-1.4232 0.34843-2.7617 0.35397-4.7413v-0.52917c-6e-3 -1.9796-0.14454-3.3186-0.35397-4.7418-0.0773-0.5254-0.17667-0.90476-0.44542-1.3684-0.18436-0.31804-0.4638-0.60268-0.79371-0.77515-0.59475-0.31089-1.3344-0.21314-1.9848-0.38809-0.13323-0.03587-0.39065-0.13488-0.39065-0.13488v0.11007s-0.70804-0.37466-1.0521-0.37517z" opacity=".2"/>
<path d="m189.76 85.637v15.346s0.25743-0.099 0.39066-0.13488c0.65036-0.17495 1.39-0.0772 1.9848-0.38809 0.32991-0.17246 0.60935-0.45711 0.79371-0.77514 0.26875-0.46363 0.3681-0.84351 0.44542-1.3689 0.20943-1.4232 0.34842-2.7617 0.35396-4.7413v-0.52917c-6e-3 -1.9796-0.14453-3.3186-0.35396-4.7418-0.0773-0.5254-0.17667-0.90476-0.44542-1.3684-0.18436-0.31804-0.4638-0.60269-0.79371-0.77515-0.59475-0.31089-1.3344-0.21314-1.9848-0.38809-0.13323-0.03587-0.39066-0.13488-0.39066-0.13488z" fill="#3d3846"/>
<path d="m188.71 85.372c-0.34403-5.19e-4 -0.54174 0.12927-0.71257 0.44235-0.17083 0.31308-0.35789 0.68807-0.35189 1.8371l5.1e-4 0.36638h-5.1e-4v10.583h5.1e-4l-5.1e-4 0.3669c-6e-3 1.149 0.18106 1.524 0.35189 1.8371s0.36854 0.44235 0.71257 0.44183c0.34403-5.1e-4 1.0521-0.37465 1.0521-0.37465v-15.125s-0.70804-0.37466-1.0521-0.37517z" fill="#9a9996"/>
<path d="m188.71 85.372c-0.34404-5.19e-4 -0.54175 0.12927-0.71257 0.44235-0.17083 0.31308-0.3579 0.68807-0.3519 1.8371l5.2e-4 0.36639h-5.2e-4v0.16278c-6e-3 -1.149 0.18107-1.524 0.3519-1.8371 0.17082-0.31308 0.36853-0.44287 0.71257-0.44235 0.34403 5.11e-4 1.0521 0.37517 1.0521 0.37517v-0.52917s-0.70804-0.37466-1.0521-0.37517zm-1.0645 2.8086v0.36639h5.2e-4z" fill="#fff" opacity=".2"/>
<path d="m189.76 85.637v0.52917s0.25743 0.09901 0.39065 0.13488c0.65036 0.17495 1.39 0.0772 1.9848 0.38809 0.32991 0.17246 0.60934 0.45711 0.7937 0.77515 0.26875 0.46363 0.36813 0.84299 0.44542 1.3684 0.20944 1.4232 0.34796 2.7622 0.35396 4.7418v-0.52917c-6e-3 -1.9796-0.14452-3.3186-0.35396-4.7418-0.0773-0.5254-0.17667-0.90476-0.44542-1.3684-0.18436-0.31804-0.46379-0.60269-0.7937-0.77515-0.59476-0.31089-1.3344-0.21314-1.9848-0.38809-0.13322-0.03587-0.39065-0.13488-0.39065-0.13488z" fill="#fff" opacity=".1"/>
</g>
<g transform="matrix(-1 0 0 1 350.78 -25.538)">
<path d="m188.71 85.901c-0.34403-5.19e-4 -0.54174 0.12927-0.71257 0.44235-0.17083 0.31308-0.3579 0.68807-0.3519 1.8371l5.2e-4 0.36639h-5.2e-4v10.583h5.2e-4l-5.2e-4 0.3669c-6e-3 1.149 0.18107 1.524 0.3519 1.8371s0.36854 0.44236 0.71257 0.44184c0.34403-5.1e-4 1.0521-0.37466 1.0521-0.37466v0.11059s0.25742-0.099 0.39065-0.13488c0.65036-0.17495 1.39-0.0772 1.9848-0.38809 0.32991-0.17245 0.60935-0.45711 0.79371-0.77514 0.26875-0.46363 0.3681-0.84351 0.44542-1.3689 0.20943-1.4232 0.34843-2.7617 0.35397-4.7413v-0.52917c-6e-3 -1.9796-0.14454-3.3186-0.35397-4.7418-0.0773-0.5254-0.17667-0.90476-0.44542-1.3684-0.18436-0.31804-0.4638-0.60268-0.79371-0.77515-0.59475-0.31089-1.3344-0.21314-1.9848-0.38809-0.13323-0.03587-0.39065-0.13488-0.39065-0.13488v0.11007s-0.70804-0.37466-1.0521-0.37517z" opacity=".2"/>
<path d="m189.76 85.637v15.346s0.25743-0.099 0.39066-0.13488c0.65036-0.17495 1.39-0.0772 1.9848-0.38809 0.32991-0.17246 0.60935-0.45711 0.79371-0.77514 0.26875-0.46363 0.3681-0.84351 0.44542-1.3689 0.20943-1.4232 0.34842-2.7617 0.35396-4.7413v-0.52917c-6e-3 -1.9796-0.14453-3.3186-0.35396-4.7418-0.0773-0.5254-0.17667-0.90476-0.44542-1.3684-0.18436-0.31804-0.4638-0.60269-0.79371-0.77515-0.59475-0.31089-1.3344-0.21314-1.9848-0.38809-0.13323-0.03587-0.39066-0.13488-0.39066-0.13488z" fill="#3d3846"/>
<path d="m188.71 85.372c-0.34403-5.19e-4 -0.54174 0.12927-0.71257 0.44235-0.17083 0.31308-0.35789 0.68807-0.35189 1.8371l5.1e-4 0.36638h-5.1e-4v10.583h5.1e-4l-5.1e-4 0.3669c-6e-3 1.149 0.18106 1.524 0.35189 1.8371s0.36854 0.44235 0.71257 0.44183c0.34403-5.1e-4 1.0521-0.37465 1.0521-0.37465v-15.125s-0.70804-0.37466-1.0521-0.37517z" fill="#9a9996"/>
<path d="m188.71 85.372c-0.34404-5.19e-4 -0.54175 0.12927-0.71257 0.44235-0.17083 0.31308-0.3579 0.68807-0.3519 1.8371l5.2e-4 0.36639h-5.2e-4v0.16278c-6e-3 -1.149 0.18107-1.524 0.3519-1.8371 0.17082-0.31308 0.36853-0.44287 0.71257-0.44235 0.34403 5.11e-4 1.0521 0.37517 1.0521 0.37517v-0.52917s-0.70804-0.37466-1.0521-0.37517zm-1.0645 2.8086v0.36639h5.2e-4z" fill="#fff" opacity=".2"/>
<path d="m189.76 85.637v0.52917s0.25743 0.09901 0.39065 0.13488c0.65036 0.17495 1.39 0.0772 1.9848 0.38809 0.32991 0.17246 0.60934 0.45711 0.7937 0.77515 0.26875 0.46363 0.36813 0.84299 0.44542 1.3684 0.20944 1.4232 0.34796 2.7622 0.35396 4.7418v-0.52917c-6e-3 -1.9796-0.14452-3.3186-0.35396-4.7418-0.0773-0.5254-0.17667-0.90476-0.44542-1.3684-0.18436-0.31804-0.46379-0.60269-0.7937-0.77515-0.59476-0.31089-1.3344-0.21314-1.9848-0.38809-0.13322-0.03587-0.39065-0.13488-0.39065-0.13488z" fill="#fff" opacity=".1"/>
</g>
<path d="m169.95 71.565c-3.1753 0.04728-2.4014 1.419-2.9983 2.5048-0.29211 0.53135 0.422-0.06077 1.2252-0.80047 1.263 1.9524 3.5805 3.7996 7.6435 2.3347-3.622-0.25777-5.8309-1.5312-7.1556-2.7967 0.66518-0.6314 1.2852-1.2423 1.2852-1.2423z" opacity=".29966"/>
<path d="m169.95 71.565c-3.1753 0.04728-2.4014 1.419-2.9983 2.5048-0.10728 0.19514-0.0779 0.23786 0.0408 0.17828 0.49788-1.0351-0.0815-2.2821 2.6712-2.4061 0.0552-0.05415 0.28628-0.27699 0.28628-0.27699zm-1.1446 1.371c-0.0709 0.0678-0.0678 0.06684-0.14056 0.13591 1.2446 1.1891 3.2705 2.3848 6.5148 2.7389 0.20894-0.06021 0.42181-0.12776 0.64079-0.20671-3.4991-0.24902-5.6768-1.446-7.0151-2.6681z" opacity=".29966"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -23,13 +23,12 @@
</ul> </ul>
</description> </description>
<releases> <releases>
<release version="0.9.8" date="2020-12-27"/> <release version="1.1.0" date="2021-02-13"/>
<release version="0.9.9" date="2021-01-01"/>
</releases> </releases>
<launchable type="desktop-id">org.mpdevil.mpdevil.desktop</launchable> <launchable type="desktop-id">org.mpdevil.mpdevil.desktop</launchable>
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
<image type="source" width="1016" height="1024">https://raw.githubusercontent.com/SoongNoonien/mpdevil/v0.9.7/screenshots/mainwindow_0.9.5.png</image> <image type="source" width="1008" height="1039">https://raw.githubusercontent.com/SoongNoonien/mpdevil/v1.1.0/screenshots/mainwindow_1.1.0.png</image>
</screenshot> </screenshot>
</screenshots> </screenshots>
<url type="homepage">https://github.com/SoongNoonien/mpdevil</url> <url type="homepage">https://github.com/SoongNoonien/mpdevil</url>

View File

@@ -31,6 +31,11 @@
<summary>Default position of paned1/paned0 separator</summary> <summary>Default position of paned1/paned0 separator</summary>
<description></description> <description></description>
</key> </key>
<key type="b" name="mini-player">
<default>false</default>
<summary>Start player in mini player mode</summary>
<description></description>
</key>
<key type="i" name="album-cover"> <key type="i" name="album-cover">
<default>170</default> <default>170</default>
<summary>Size of covers in album view</summary> <summary>Size of covers in album view</summary>
@@ -52,7 +57,7 @@
<description></description> <description></description>
</key> </key>
<key type="b" name="use-csd"> <key type="b" name="use-csd">
<default>false</default> <default>true</default>
<summary>Use Client-side decoration</summary> <summary>Use Client-side decoration</summary>
<description></description> <description></description>
</key> </key>
@@ -71,11 +76,6 @@
<summary>Show initial letters in artist-view</summary> <summary>Show initial letters in artist-view</summary>
<description></description> <description></description>
</key> </key>
<key type="b" name="show-album-view-tooltips">
<default>true</default>
<summary>Show tooltips in album-view</summary>
<description></description>
</key>
<key type="b" name="sort-albums-by-year"> <key type="b" name="sort-albums-by-year">
<default>true</default> <default>true</default>
<summary>Sort albums by year</summary> <summary>Sort albums by year</summary>

383
po/de.po
View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-01 12:34+0100\n" "POT-Creation-Date: 2021-02-12 16:57+0100\n"
"PO-Revision-Date: 2021-01-01 14:33+0100\n" "PO-Revision-Date: 2021-02-12 16:58+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: de\n" "Language: de\n"
@@ -18,103 +18,90 @@ msgstr ""
"X-Generator: Poedit 2.3.1\n" "X-Generator: Poedit 2.3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mpdevil:471 #: mpdevil:438
#, python-brace-format
msgid "{days} day"
msgid_plural "{days} days"
msgstr[0] "{days} Tag"
msgstr[1] "{days} Tage"
#: mpdevil:473
msgid "Unknown Title" msgid "Unknown Title"
msgstr "Unbekannter Titel" msgstr "Unbekannter Titel"
#: mpdevil:795 #: mpdevil:802
msgid "Main cover size:" msgid "Main cover size:"
msgstr "Größe des Haupt-Covers:" msgstr "Größe des Haupt-Covers:"
#: mpdevil:796 #: mpdevil:803
msgid "Album view cover size:" msgid "Album view cover size:"
msgstr "Covergröße in Albumliste:" msgstr "Covergröße in Albumliste:"
#: mpdevil:797 #: mpdevil:804
msgid "Action bar icon size:" msgid "Action bar icon size:"
msgstr "Symbolgröße Aktionsleiste:" msgstr "Symbolgröße Aktionsleiste:"
#: mpdevil:798 #: mpdevil:805
msgid "Secondary icon size:" msgid "Secondary icon size:"
msgstr "Sekundäre Symbolgröße:" msgstr "Sekundäre Symbolgröße:"
#: mpdevil:811 #: mpdevil:818
msgid "Sort albums by:"
msgstr "Sortiere Alben nach:"
#: mpdevil:811
msgid "name"
msgstr "Name"
#: mpdevil:811
msgid "year"
msgstr "Jahr"
#: mpdevil:812
msgid "Position of playlist:"
msgstr "Wiedergabelistenposition:"
#: mpdevil:812
msgid "bottom"
msgstr "unten"
#: mpdevil:812
msgid "right"
msgstr "rechts"
#: mpdevil:830
msgid "Use Client-side decoration" msgid "Use Client-side decoration"
msgstr "Benutze „Client-side decoration“" msgstr "„Client-side decoration“ benutzen"
#: mpdevil:831 #: mpdevil:819
msgid "Show stop button" msgid "Show stop button"
msgstr "Zeige Stopp-Knopf" msgstr "Stopp-Knopf anzeigen"
#: mpdevil:832 #: mpdevil:820
msgid "Show lyrics button" msgid "Show lyrics button"
msgstr "Zeige Liedtext-Knopf" msgstr "Liedtext-Knopf anzeigen"
#: mpdevil:833 #: mpdevil:821
msgid "Show initials in artist view" msgid "Show initials in artist view"
msgstr "Zeige Anfangsbuchstaben in Interpretenliste" msgstr "Anfangsbuchstaben in Interpretenliste anzeigen"
#: mpdevil:834 #: mpdevil:822
msgid "Show tooltips in album view" msgid "Place playlist at the side"
msgstr "Zeige Tooltips in Albumliste" msgstr "Wiedergabeliste seitlich anzeigen"
#: mpdevil:835 #: mpdevil:823
msgid "Use “Album Artist” tag" msgid "Use “Album Artist” tag"
msgstr "Benutze „Album Artist“ Tag" msgstr "„Album Artist“ Tag benutzen"
#: mpdevil:836 #: mpdevil:824
msgid "Send notification on title change" msgid "Send notification on title change"
msgstr "Sende Benachrichtigung bei Titelwechsel" msgstr "Über Titelwechsel benachrichtigen"
#: mpdevil:837 #: mpdevil:825
msgid "Stop playback on quit" msgid "Stop playback on quit"
msgstr "Wiedergabe beim Beenden stoppen" msgstr "Wiedergabe beim Beenden stoppen"
#: mpdevil:838 #: mpdevil:826
msgid "Play selected albums and titles immediately" msgid "Play selected albums and titles immediately"
msgstr "Ausgewählte Alben und Titel sofort abspielen" msgstr "Ausgewählte Alben und Titel sofort abspielen"
#: mpdevil:851 #: mpdevil:827
msgid "Sort albums by year"
msgstr "Alben nach Jahr sortieren"
#: mpdevil:839
msgid "<b>View</b>" msgid "<b>View</b>"
msgstr "<b>Ansicht</b>" msgstr "<b>Ansicht</b>"
#: mpdevil:852 #: mpdevil:840
msgid "<b>Behavior</b>" msgid "<b>Behavior</b>"
msgstr "<b>Verhalten</b>" msgstr "<b>Verhalten</b>"
#: mpdevil:884 #: mpdevil:860
msgid "(restart required)" msgid "(restart required)"
msgstr "(Neustart erforderlich)" msgstr "(Neustart erforderlich)"
#: mpdevil:946 #: mpdevil:909
msgid "_Connect" msgid "_Connect"
msgstr "_Verbinden" msgstr "_Verbinden"
#: mpdevil:962 #: mpdevil:925
msgid "" msgid ""
"The first image in the same directory as the song file matching this regex " "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 " "will be displayed. %AlbumArtist% and %Album% will be replaced by the "
@@ -124,161 +111,161 @@ msgstr ""
"regulären Ausdruck entspricht, wird angezeigt. %AlbumArtist% und %Album% " "regulären Ausdruck entspricht, wird angezeigt. %AlbumArtist% und %Album% "
"werden durch die entsprechenden Tags des Liedes ersetzt." "werden durch die entsprechenden Tags des Liedes ersetzt."
#: mpdevil:967 #: mpdevil:930
msgid "Profile:" msgid "Profile:"
msgstr "Profil:" msgstr "Profil:"
#: mpdevil:968 #: mpdevil:931
msgid "Name:" msgid "Name:"
msgstr "Name:" msgstr "Name:"
#: mpdevil:969 #: mpdevil:932
msgid "Host:" msgid "Host:"
msgstr "Host:" msgstr "Host:"
#: mpdevil:970 #: mpdevil:933
msgid "Password:" msgid "Password:"
msgstr "Passwort:" msgstr "Passwort:"
#: mpdevil:971 #: mpdevil:934
msgid "Music lib:" msgid "Music lib:"
msgstr "Musikverzeichnis:" msgstr "Musikverzeichnis:"
#: mpdevil:972 #: mpdevil:935
msgid "Cover regex:" msgid "Cover regex:"
msgstr "Cover-Regex:" msgstr "Cover-Regex:"
#: mpdevil:1107 #: mpdevil:1070
msgid "Choose directory" msgid "Choose directory"
msgstr "Verzeichnis wählen" msgstr "Verzeichnis wählen"
#: mpdevil:1140 #: mpdevil:1101
msgid "Choose the order of information to appear in the playlist:" msgid "Choose the order of information to appear in the playlist:"
msgstr "" msgstr ""
"Lege die Reihenfolge fest, in der Informationen in der Wiedergabeliste " "Lege die Reihenfolge fest, in der Informationen in der Wiedergabeliste "
"angezeigt werden sollen:" "angezeigt werden sollen:"
#: mpdevil:1157 mpdevil:1703 mpdevil:1799 mpdevil:2753 #: mpdevil:1118 mpdevil:1671 mpdevil:1766 mpdevil:2706
msgid "No" msgid "No"
msgstr "Nr." msgstr "Nr."
#: mpdevil:1157 mpdevil:2754 #: mpdevil:1118 mpdevil:2707
msgid "Disc" msgid "Disc"
msgstr "CD" msgstr "CD"
#: mpdevil:1157 mpdevil:1706 mpdevil:1804 mpdevil:2755 #: mpdevil:1118 mpdevil:1674 mpdevil:1771 mpdevil:2708
msgid "Title" msgid "Title"
msgstr "Titel" msgstr "Titel"
#: mpdevil:1157 mpdevil:1810 mpdevil:2756 #: mpdevil:1118 mpdevil:1777 mpdevil:2709
msgid "Artist" msgid "Artist"
msgstr "Interpret" msgstr "Interpret"
#: mpdevil:1157 mpdevil:1816 mpdevil:2757 #: mpdevil:1118 mpdevil:1783 mpdevil:2710
msgid "Album" msgid "Album"
msgstr "Album" msgstr "Album"
#: mpdevil:1157 mpdevil:1710 mpdevil:1822 mpdevil:2758 #: mpdevil:1118 mpdevil:1678 mpdevil:1789 mpdevil:2711
msgid "Length" msgid "Length"
msgstr "Länge" msgstr "Länge"
#: mpdevil:1157 mpdevil:2759 #: mpdevil:1118 mpdevil:2712
msgid "Year" msgid "Year"
msgstr "Jahr" msgstr "Jahr"
#: mpdevil:1157 mpdevil:2760 #: mpdevil:1118 mpdevil:2713
msgid "Genre" msgid "Genre"
msgstr "Genre" msgstr "Genre"
#: mpdevil:1273 mpdevil:1275 mpdevil:3714 #: mpdevil:1234 mpdevil:1236 mpdevil:3666
msgid "Settings" msgid "Settings"
msgstr "Einstellungen" msgstr "Einstellungen"
#: mpdevil:1288 mpdevil:1297 mpdevil:3560 #: mpdevil:1249 mpdevil:1258 mpdevil:3513
msgid "General" msgid "General"
msgstr "Allgemein" msgstr "Allgemein"
#: mpdevil:1289 mpdevil:1298 mpdevil:3725 #: mpdevil:1250 mpdevil:1259 mpdevil:3677
msgid "Profiles" msgid "Profiles"
msgstr "Profile" msgstr "Profile"
#: mpdevil:1290 mpdevil:1299 mpdevil:3564 #: mpdevil:1251 mpdevil:1260 mpdevil:3517
msgid "Playlist" msgid "Playlist"
msgstr "Wiedergabeliste" msgstr "Wiedergabeliste"
#: mpdevil:1313 #: mpdevil:1273
msgid "Stats" msgid "Stats"
msgstr "Statistik" msgstr "Statistik"
#: mpdevil:1323 #: mpdevil:1283
msgid "<b>Protocol:</b>" msgid "<b>Protocol:</b>"
msgstr "<b>Protokoll:</b>" msgstr "<b>Protokoll:</b>"
#: mpdevil:1324 #: mpdevil:1284
msgid "<b>Uptime:</b>" msgid "<b>Uptime:</b>"
msgstr "<b>Uptime:</b>" msgstr "<b>Uptime:</b>"
#: mpdevil:1325 #: mpdevil:1285
msgid "<b>Playtime:</b>" msgid "<b>Playtime:</b>"
msgstr "<b>Wiedergabezeit:</b>" msgstr "<b>Wiedergabezeit:</b>"
#: mpdevil:1326 #: mpdevil:1286
msgid "<b>Artists:</b>" msgid "<b>Artists:</b>"
msgstr "<b>Künstler:</b>" msgstr "<b>Künstler:</b>"
#: mpdevil:1327 #: mpdevil:1287
msgid "<b>Albums:</b>" msgid "<b>Albums:</b>"
msgstr "<b>Alben:</b>" msgstr "<b>Alben:</b>"
#: mpdevil:1328 #: mpdevil:1288
msgid "<b>Songs:</b>" msgid "<b>Songs:</b>"
msgstr "<b>Titel:</b>" msgstr "<b>Titel:</b>"
#: mpdevil:1329 #: mpdevil:1289
msgid "<b>Total Playtime:</b>" msgid "<b>Total Playtime:</b>"
msgstr "<b>Gesamt Wiedergabezeit:</b>" msgstr "<b>Gesamtwiedergabezeit:</b>"
#: mpdevil:1330 #: mpdevil:1290
msgid "<b>Database Update:</b>" msgid "<b>Database Update:</b>"
msgstr "<b>Datenbankaktualisierung:</b>" msgstr "<b>Datenbankaktualisierung:</b>"
#: mpdevil:1355 #: mpdevil:1314
msgid "A simple music browser for MPD" msgid "A simple music browser for MPD"
msgstr "Ein einfacher Musikbrowser für MPD" msgstr "Ein einfacher Musikbrowser für MPD"
#: mpdevil:1461 #: mpdevil:1412
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: mpdevil:1464
msgid "Value"
msgstr "Wert"
#: mpdevil:1490
msgid "Open with…" msgid "Open with…"
msgstr "Öffnen mit…" msgstr "Öffnen mit…"
#: mpdevil:1596 #: mpdevil:1430
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: mpdevil:1433
msgid "Value"
msgstr "Wert"
#: mpdevil:1564
msgid "_Append" msgid "_Append"
msgstr "_Anhängen" msgstr "_Anhängen"
#: mpdevil:1598 #: mpdevil:1566
msgid "Add all titles to playlist" msgid "Add all titles to playlist"
msgstr "Alle Titel der Wiedergabeliste anhängen" msgstr "Alle Titel der Wiedergabeliste anhängen"
#: mpdevil:1599 #: mpdevil:1567
msgid "_Play" msgid "_Play"
msgstr "Ab_spielen" msgstr "Ab_spielen"
#: mpdevil:1601 #: mpdevil:1569
msgid "Directly play all titles" msgid "Directly play all titles"
msgstr "Alle Titel sofort abspielen" msgstr "Alle Titel sofort abspielen"
#: mpdevil:1602 #: mpdevil:1570
msgid "_Enqueue" msgid "_Enqueue"
msgstr "_Einreihen" msgstr "_Einreihen"
#: mpdevil:1604 #: mpdevil:1572
msgid "" msgid ""
"Append all titles after the currently playing track and clear the playlist " "Append all titles after the currently playing track and clear the playlist "
"from all other songs" "from all other songs"
@@ -286,259 +273,301 @@ msgstr ""
"Alle Titel hinter dem aktuellen Stück einreihen und die weitere " "Alle Titel hinter dem aktuellen Stück einreihen und die weitere "
"Wiedergabeliste leeren" "Wiedergabeliste leeren"
#: mpdevil:1860 #: mpdevil:1827
msgid "all tags" msgid "all tags"
msgstr "Alle Tags" msgstr "Alle Tags"
#: mpdevil:1888 #: mpdevil:1856
#, python-brace-format #, python-brace-format
msgid "{num} hits" msgid "{hits} hit"
msgstr "{num} Treffer" msgid_plural "{hits} hits"
msgstr[0] "{hits} Treffer"
msgstr[1] "{hits} Treffer"
#: mpdevil:1926 #: mpdevil:1894
msgid "all genres" msgid "all genres"
msgstr "Alle Genres" msgstr "Alle Genres"
#: mpdevil:2028 #: mpdevil:1996
msgid "all artists" msgid "all artists"
msgstr "Alle Interpreten" msgstr "Alle Interpreten"
#: mpdevil:2220 #: mpdevil:2180 mpdevil:2805 mpdevil:3091 mpdevil:3092
#, python-brace-format #, python-brace-format
msgid "{titles} titles on {discs} discs ({length})" msgid "{titles} title"
msgstr "{titles} Titel auf {discs} CDs ({length})" msgid_plural "{titles} titles"
msgstr[0] "{titles} Titel"
msgstr[1] "{titles} Titel"
#: mpdevil:2223 mpdevil:2857 mpdevil:3144 mpdevil:3145 #: mpdevil:2182
#, python-brace-format #, python-brace-format
msgid "{titles} titles ({length})" msgid "on {discs} discs"
msgstr "{titles} Titel ({length})" msgstr "auf {discs} CDs"
#: mpdevil:2363 mpdevil:3583 #: mpdevil:2322 mpdevil:3536
msgid "Back to current album" msgid "Back to current album"
msgstr "Zurück zu aktuellem Album" msgstr "Zurück zu aktuellem Album"
#: mpdevil:2365 #: mpdevil:2324
msgid "Search" msgid "Search"
msgstr "Suche" msgstr "Suche"
#: mpdevil:2542 #: mpdevil:2500
msgid "searching..." msgid "searching..."
msgstr "suche..." msgstr "suche..."
#: mpdevil:2547 #: mpdevil:2505
msgid "connection error" msgid "connection error"
msgstr "Verbindungsfehler" msgstr "Verbindungsfehler"
#: mpdevil:2549 #: mpdevil:2507
msgid "lyrics not found" msgid "lyrics not found"
msgstr "Liedtext nicht gefunden" msgstr "Liedtext nicht gefunden"
#: mpdevil:2597 #: mpdevil:2552
#, python-brace-format #, python-brace-format
msgid "" msgid "{channels} channel"
"{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} channels, " msgid_plural "{channels} channels"
"{file_type}" msgstr[0] "{channels} Kanal"
msgstr "" msgstr[1] "{channels} Kanäle"
"{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} Kanäle, "
"{file_type}"
#: mpdevil:2727 #: mpdevil:2680
msgid "Scroll to current song" msgid "Scroll to current song"
msgstr "Gehe zu aktuellem Lied" msgstr "Gehe zu aktuellem Lied"
#: mpdevil:2735 mpdevil:3599 #: mpdevil:2688 mpdevil:3552
msgid "Clear playlist" msgid "Clear playlist"
msgstr "Wiedergabeliste leeren" msgstr "Wiedergabeliste leeren"
#: mpdevil:3029 #: mpdevil:2982
msgid "Show lyrics" msgid "Show lyrics"
msgstr "Zeige Liedtext" msgstr "Zeige Liedtext"
#: mpdevil:3351 #: mpdevil:3300
msgid "Random mode" msgid "Random mode"
msgstr "Zufallsmodus" msgstr "Zufallsmodus"
#: mpdevil:3353 #: mpdevil:3302
msgid "Repeat mode" msgid "Repeat mode"
msgstr "Dauerschleife" msgstr "Dauerschleife"
#: mpdevil:3355 #: mpdevil:3304
msgid "Single mode" msgid "Single mode"
msgstr "Einzelstückmodus" msgstr "Einzelstückmodus"
#: mpdevil:3357 #: mpdevil:3306
msgid "Consume mode" msgid "Consume mode"
msgstr "Wiedergabeliste verbrauchen" msgstr "Wiedergabeliste verbrauchen"
#: mpdevil:3561 #: mpdevil:3514
msgid "Window" msgid "Window"
msgstr "Fenster" msgstr "Fenster"
#: mpdevil:3562 #: mpdevil:3515
msgid "Playback" msgid "Playback"
msgstr "Wiedergabe" msgstr "Wiedergabe"
#: mpdevil:3563 #: mpdevil:3516
msgid "Search, Album Dialog and Album List" msgid "Search, Album Dialog and Album List"
msgstr "Suche, Albumdialog und Albumliste" msgstr "Suche, Albumdialog und Albumliste"
#: mpdevil:3573 #: mpdevil:3526
msgid "Open online help" msgid "Open online help"
msgstr "Onlinehilfe öffnen" msgstr "Onlinehilfe öffnen"
#: mpdevil:3574 #: mpdevil:3527
msgid "Open shortcuts window" msgid "Open shortcuts window"
msgstr "Tastenkürzelfenster öffnen" msgstr "Tastenkürzelfenster öffnen"
#: mpdevil:3575 #: mpdevil:3528
msgid "Open menu" msgid "Open menu"
msgstr "Menü öffnen" msgstr "Menü öffnen"
#: mpdevil:3576 mpdevil:3720 #: mpdevil:3529 mpdevil:3672
msgid "Update database" msgid "Update database"
msgstr "Datenbank aktualisieren" msgstr "Datenbank aktualisieren"
#: mpdevil:3577 mpdevil:3718 #: mpdevil:3530 mpdevil:3670
msgid "Quit" msgid "Quit"
msgstr "Beenden" msgstr "Beenden"
#: mpdevil:3578 #: mpdevil:3531
msgid "Cycle through profiles" msgid "Cycle through profiles"
msgstr "Profile durchschalten" msgstr "Profile durchschalten"
#: mpdevil:3579 #: mpdevil:3532
msgid "Cycle through profiles in reversed order" msgid "Cycle through profiles in reversed order"
msgstr "Profile rückwärts durchschalten" msgstr "Profile rückwärts durchschalten"
#: mpdevil:3580 #: mpdevil:3533
msgid "Toggle mini player" msgid "Toggle mini player"
msgstr "Miniplayer ein-/ausschalten" msgstr "Miniplayer ein-/ausschalten"
#: mpdevil:3581 #: mpdevil:3534
msgid "Toggle lyrics" msgid "Toggle lyrics"
msgstr "Liedtext ein-/ausblenden" msgstr "Liedtext ein-/ausblenden"
#: mpdevil:3582 #: mpdevil:3535
msgid "Toggle search" msgid "Toggle search"
msgstr "Suche ein-/ausblenden" msgstr "Suche ein-/ausblenden"
#: mpdevil:3584 #: mpdevil:3537
msgid "Play/Pause" msgid "Play/Pause"
msgstr "Wiedergabe/Pause" msgstr "Wiedergabe/Pause"
#: mpdevil:3585 #: mpdevil:3538
msgid "Stop" msgid "Stop"
msgstr "Stopp" msgstr "Stopp"
#: mpdevil:3586 #: mpdevil:3539
msgid "Next title" msgid "Next title"
msgstr "Nächster Titel" msgstr "Nächster Titel"
#: mpdevil:3587 #: mpdevil:3540
msgid "Previous title" msgid "Previous title"
msgstr "Vorheriger Titel" msgstr "Vorheriger Titel"
#: mpdevil:3588 #: mpdevil:3541
msgid "Seek forward" msgid "Seek forward"
msgstr "Vorspulen" msgstr "Vorspulen"
#: mpdevil:3589 #: mpdevil:3542
msgid "Seek backward" msgid "Seek backward"
msgstr "Zurückspulen" msgstr "Zurückspulen"
#: mpdevil:3590 #: mpdevil:3543
msgid "Toggle repeat mode" msgid "Toggle repeat mode"
msgstr "Dauerschleife ein-/ausschalten" msgstr "Dauerschleife ein-/ausschalten"
#: mpdevil:3591 #: mpdevil:3544
msgid "Toggle random mode" msgid "Toggle random mode"
msgstr "Zufallsmodus ein-/ausschalten" msgstr "Zufallsmodus ein-/ausschalten"
#: mpdevil:3592 #: mpdevil:3545
msgid "Toggle single mode" msgid "Toggle single mode"
msgstr "Einzelstückmodus ein-/ausschalten" msgstr "Einzelstückmodus ein-/ausschalten"
#: mpdevil:3593 #: mpdevil:3546
msgid "Toggle consume mode" msgid "Toggle consume mode"
msgstr "Wiedergabeliste verbrauchen ein-/ausschalten" msgstr "Wiedergabeliste verbrauchen ein-/ausschalten"
#: mpdevil:3594 #: mpdevil:3547
msgid "Play selected item (next)" msgid "Play selected item (next)"
msgstr "Ausgewähltes Element (als Nächstes) abspielen" msgstr "Ausgewähltes Element (als Nächstes) abspielen"
#: mpdevil:3594 #: mpdevil:3547
msgid "Left-click" msgid "Left-click"
msgstr "Linksklick" msgstr "Linksklick"
#: mpdevil:3595 #: mpdevil:3548
msgid "Append selected item" msgid "Append selected item"
msgstr "Ausgewähltes Element anhängen" msgstr "Ausgewähltes Element anhängen"
#: mpdevil:3595 mpdevil:3598 #: mpdevil:3548 mpdevil:3551
msgid "Middle-click" msgid "Middle-click"
msgstr "Mittelklick" msgstr "Mittelklick"
#: mpdevil:3596 #: mpdevil:3549
msgid "Play selected item immediately" msgid "Play selected item immediately"
msgstr "Ausgewähltes Element sofort abspielen" msgstr "Ausgewähltes Element sofort abspielen"
#: mpdevil:3596 #: mpdevil:3549
msgid "Double-click" msgid "Double-click"
msgstr "Doppelklick" msgstr "Doppelklick"
#: mpdevil:3597 mpdevil:3600 #: mpdevil:3550 mpdevil:3553
msgid "Show additional information" msgid "Show additional information"
msgstr "Zeige weitere Informationen" msgstr "Zeige weitere Informationen"
#: mpdevil:3597 mpdevil:3600 #: mpdevil:3550 mpdevil:3553
msgid "Right-click" msgid "Right-click"
msgstr "Rechtsklick" msgstr "Rechtsklick"
#: mpdevil:3598 #: mpdevil:3551
msgid "Remove selected song" msgid "Remove selected song"
msgstr "Ausgewählten Titel entfernen" msgstr "Ausgewählten Titel entfernen"
#: mpdevil:3624 #: mpdevil:3577
msgid "Connect" msgid "Connect"
msgstr "Verbinden" msgstr "Verbinden"
#: mpdevil:3642 #: mpdevil:3595
#, python-brace-format #, python-brace-format
msgid "Connection to “{profile}” ({host}:{port}) failed" msgid "Connection to “{profile}” ({host}:{port}) failed"
msgstr "Verbindung zu „{profile}“ ({host}:{port}) fehlgeschlagen" msgstr "Verbindung zu „{profile}“ ({host}:{port}) fehlgeschlagen"
#: mpdevil:3715 #: mpdevil:3667
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Tastenkürzel" msgstr "Tastenkürzel"
#: mpdevil:3716 #: mpdevil:3668
msgid "Help" msgid "Help"
msgstr "Hilfe" msgstr "Hilfe"
#: mpdevil:3717 #: mpdevil:3669
msgid "About" msgid "About"
msgstr "Über" msgstr "Über"
#: mpdevil:3721 #: mpdevil:3673
msgid "Server stats" msgid "Server stats"
msgstr "Serverstatistik" msgstr "Serverstatistik"
#: mpdevil:3726 #: mpdevil:3678
msgid "Mini player" msgid "Mini player"
msgstr "Miniplayer" msgstr "Miniplayer"
#: mpdevil:3727 #: mpdevil:3683
msgid "Save window layout"
msgstr "Fensterlayout speichern"
#: mpdevil:3732
msgid "Menu" msgid "Menu"
msgstr "Menü" msgstr "Menü"
#: mpdevil:3783 mpdevil:3785 #: mpdevil:3734 mpdevil:3736
msgid "connecting…" msgid "connecting…"
msgstr "verbinden…" msgstr "verbinden…"
#~ msgid "Sort albums in chronological order"
#~ msgstr "Alben chronologisch sortieren"
#~ msgid "name"
#~ msgstr "Name"
#~ msgid "year"
#~ msgstr "Jahr"
#~ msgid "Position of playlist:"
#~ msgstr "Wiedergabelistenposition:"
#~ msgid "bottom"
#~ msgstr "unten"
#~ msgid "right"
#~ msgstr "rechts"
#~ msgid "Show tooltips in album view"
#~ msgstr "Zeige Tooltips in Albumliste"
#~ msgid "Save window layout"
#~ msgstr "Fensterlayout speichern"
#, python-brace-format
#~ msgid ""
#~ "{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} channels, "
#~ "{file_type}"
#~ msgstr ""
#~ "{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} Kanäle, "
#~ "{file_type}"
#, python-brace-format
#~ msgid "{titles} titles on {discs} discs ({length})"
#~ msgstr "{titles} Titel auf {discs} CDs ({length})"
#, python-brace-format
#~ msgid "{titles} titles ({length})"
#~ msgstr "{titles} Titel ({length})"
#, python-brace-format
#~ msgid "{num} hits"
#~ msgstr "{num} Treffer"
#~ msgid "Close" #~ msgid "Close"
#~ msgstr "Schließen" #~ msgstr "Schließen"
@@ -562,10 +591,6 @@ msgstr "verbinden…"
#~ msgid "not connected" #~ msgid "not connected"
#~ msgstr "nicht verbunden" #~ msgstr "nicht verbunden"
#, python-format
#~ msgid "hits: %i"
#~ msgstr "Treffer: %i"
#~ msgid "Add" #~ msgid "Add"
#~ msgstr "Hinzufügen" #~ msgstr "Hinzufügen"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-01 12:34+0100\n" "POT-Creation-Date: 2021-02-12 16:57+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,515 +16,503 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: mpdevil:471 #: mpdevil:438
#, python-brace-format
msgid "{days} day"
msgid_plural "{days} days"
msgstr[0] ""
msgstr[1] ""
#: mpdevil:473
msgid "Unknown Title" msgid "Unknown Title"
msgstr "" msgstr ""
#: mpdevil:795 #: mpdevil:802
msgid "Main cover size:" msgid "Main cover size:"
msgstr "" msgstr ""
#: mpdevil:796 #: mpdevil:803
msgid "Album view cover size:" msgid "Album view cover size:"
msgstr "" msgstr ""
#: mpdevil:797 #: mpdevil:804
msgid "Action bar icon size:" msgid "Action bar icon size:"
msgstr "" msgstr ""
#: mpdevil:798 #: mpdevil:805
msgid "Secondary icon size:" msgid "Secondary icon size:"
msgstr "" msgstr ""
#: mpdevil:811 #: mpdevil:818
msgid "Sort albums by:"
msgstr ""
#: mpdevil:811
msgid "name"
msgstr ""
#: mpdevil:811
msgid "year"
msgstr ""
#: mpdevil:812
msgid "Position of playlist:"
msgstr ""
#: mpdevil:812
msgid "bottom"
msgstr ""
#: mpdevil:812
msgid "right"
msgstr ""
#: mpdevil:830
msgid "Use Client-side decoration" msgid "Use Client-side decoration"
msgstr "" msgstr ""
#: mpdevil:831 #: mpdevil:819
msgid "Show stop button" msgid "Show stop button"
msgstr "" msgstr ""
#: mpdevil:832 #: mpdevil:820
msgid "Show lyrics button" msgid "Show lyrics button"
msgstr "" msgstr ""
#: mpdevil:833 #: mpdevil:821
msgid "Show initials in artist view" msgid "Show initials in artist view"
msgstr "" msgstr ""
#: mpdevil:834 #: mpdevil:822
msgid "Show tooltips in album view" msgid "Place playlist at the side"
msgstr "" msgstr ""
#: mpdevil:835 #: mpdevil:823
msgid "Use “Album Artist” tag" msgid "Use “Album Artist” tag"
msgstr "" msgstr ""
#: mpdevil:836 #: mpdevil:824
msgid "Send notification on title change" msgid "Send notification on title change"
msgstr "" msgstr ""
#: mpdevil:837 #: mpdevil:825
msgid "Stop playback on quit" msgid "Stop playback on quit"
msgstr "" msgstr ""
#: mpdevil:838 #: mpdevil:826
msgid "Play selected albums and titles immediately" msgid "Play selected albums and titles immediately"
msgstr "" msgstr ""
#: mpdevil:851 #: mpdevil:827
msgid "Sort albums by year"
msgstr ""
#: mpdevil:839
msgid "<b>View</b>" msgid "<b>View</b>"
msgstr "" msgstr ""
#: mpdevil:852 #: mpdevil:840
msgid "<b>Behavior</b>" msgid "<b>Behavior</b>"
msgstr "" msgstr ""
#: mpdevil:884 #: mpdevil:860
msgid "(restart required)" msgid "(restart required)"
msgstr "" msgstr ""
#: mpdevil:946 #: mpdevil:909
msgid "_Connect" msgid "_Connect"
msgstr "" msgstr ""
#: mpdevil:962 #: mpdevil:925
msgid "" msgid ""
"The first image in the same directory as the song file matching this regex " "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 " "will be displayed. %AlbumArtist% and %Album% will be replaced by the "
"corresponding tags of the song." "corresponding tags of the song."
msgstr "" msgstr ""
#: mpdevil:967 #: mpdevil:930
msgid "Profile:" msgid "Profile:"
msgstr "" msgstr ""
#: mpdevil:968 #: mpdevil:931
msgid "Name:" msgid "Name:"
msgstr "" msgstr ""
#: mpdevil:969 #: mpdevil:932
msgid "Host:" msgid "Host:"
msgstr "" msgstr ""
#: mpdevil:970 #: mpdevil:933
msgid "Password:" msgid "Password:"
msgstr "" msgstr ""
#: mpdevil:971 #: mpdevil:934
msgid "Music lib:" msgid "Music lib:"
msgstr "" msgstr ""
#: mpdevil:972 #: mpdevil:935
msgid "Cover regex:" msgid "Cover regex:"
msgstr "" msgstr ""
#: mpdevil:1107 #: mpdevil:1070
msgid "Choose directory" msgid "Choose directory"
msgstr "" msgstr ""
#: mpdevil:1140 #: mpdevil:1101
msgid "Choose the order of information to appear in the playlist:" msgid "Choose the order of information to appear in the playlist:"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:1703 mpdevil:1799 mpdevil:2753 #: mpdevil:1118 mpdevil:1671 mpdevil:1766 mpdevil:2706
msgid "No" msgid "No"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:2754 #: mpdevil:1118 mpdevil:2707
msgid "Disc" msgid "Disc"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:1706 mpdevil:1804 mpdevil:2755 #: mpdevil:1118 mpdevil:1674 mpdevil:1771 mpdevil:2708
msgid "Title" msgid "Title"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:1810 mpdevil:2756 #: mpdevil:1118 mpdevil:1777 mpdevil:2709
msgid "Artist" msgid "Artist"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:1816 mpdevil:2757 #: mpdevil:1118 mpdevil:1783 mpdevil:2710
msgid "Album" msgid "Album"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:1710 mpdevil:1822 mpdevil:2758 #: mpdevil:1118 mpdevil:1678 mpdevil:1789 mpdevil:2711
msgid "Length" msgid "Length"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:2759 #: mpdevil:1118 mpdevil:2712
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: mpdevil:1157 mpdevil:2760 #: mpdevil:1118 mpdevil:2713
msgid "Genre" msgid "Genre"
msgstr "" msgstr ""
#: mpdevil:1273 mpdevil:1275 mpdevil:3714 #: mpdevil:1234 mpdevil:1236 mpdevil:3666
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
#: mpdevil:1288 mpdevil:1297 mpdevil:3560 #: mpdevil:1249 mpdevil:1258 mpdevil:3513
msgid "General" msgid "General"
msgstr "" msgstr ""
#: mpdevil:1289 mpdevil:1298 mpdevil:3725 #: mpdevil:1250 mpdevil:1259 mpdevil:3677
msgid "Profiles" msgid "Profiles"
msgstr "" msgstr ""
#: mpdevil:1290 mpdevil:1299 mpdevil:3564 #: mpdevil:1251 mpdevil:1260 mpdevil:3517
msgid "Playlist" msgid "Playlist"
msgstr "" msgstr ""
#: mpdevil:1313 #: mpdevil:1273
msgid "Stats" msgid "Stats"
msgstr "" msgstr ""
#: mpdevil:1323 #: mpdevil:1283
msgid "<b>Protocol:</b>" msgid "<b>Protocol:</b>"
msgstr "" msgstr ""
#: mpdevil:1324 #: mpdevil:1284
msgid "<b>Uptime:</b>" msgid "<b>Uptime:</b>"
msgstr "" msgstr ""
#: mpdevil:1325 #: mpdevil:1285
msgid "<b>Playtime:</b>" msgid "<b>Playtime:</b>"
msgstr "" msgstr ""
#: mpdevil:1326 #: mpdevil:1286
msgid "<b>Artists:</b>" msgid "<b>Artists:</b>"
msgstr "" msgstr ""
#: mpdevil:1327 #: mpdevil:1287
msgid "<b>Albums:</b>" msgid "<b>Albums:</b>"
msgstr "" msgstr ""
#: mpdevil:1328 #: mpdevil:1288
msgid "<b>Songs:</b>" msgid "<b>Songs:</b>"
msgstr "" msgstr ""
#: mpdevil:1329 #: mpdevil:1289
msgid "<b>Total Playtime:</b>" msgid "<b>Total Playtime:</b>"
msgstr "" msgstr ""
#: mpdevil:1330 #: mpdevil:1290
msgid "<b>Database Update:</b>" msgid "<b>Database Update:</b>"
msgstr "" msgstr ""
#: mpdevil:1355 #: mpdevil:1314
msgid "A simple music browser for MPD" msgid "A simple music browser for MPD"
msgstr "" msgstr ""
#: mpdevil:1461 #: mpdevil:1412
msgid "MPD-Tag"
msgstr ""
#: mpdevil:1464
msgid "Value"
msgstr ""
#: mpdevil:1490
msgid "Open with…" msgid "Open with…"
msgstr "" msgstr ""
#: mpdevil:1596 #: mpdevil:1430
msgid "MPD-Tag"
msgstr ""
#: mpdevil:1433
msgid "Value"
msgstr ""
#: mpdevil:1564
msgid "_Append" msgid "_Append"
msgstr "" msgstr ""
#: mpdevil:1598 #: mpdevil:1566
msgid "Add all titles to playlist" msgid "Add all titles to playlist"
msgstr "" msgstr ""
#: mpdevil:1599 #: mpdevil:1567
msgid "_Play" msgid "_Play"
msgstr "" msgstr ""
#: mpdevil:1601 #: mpdevil:1569
msgid "Directly play all titles" msgid "Directly play all titles"
msgstr "" msgstr ""
#: mpdevil:1602 #: mpdevil:1570
msgid "_Enqueue" msgid "_Enqueue"
msgstr "" msgstr ""
#: mpdevil:1604 #: mpdevil:1572
msgid "" msgid ""
"Append all titles after the currently playing track and clear the playlist " "Append all titles after the currently playing track and clear the playlist "
"from all other songs" "from all other songs"
msgstr "" msgstr ""
#: mpdevil:1860 #: mpdevil:1827
msgid "all tags" msgid "all tags"
msgstr "" msgstr ""
#: mpdevil:1888 #: mpdevil:1856
#, python-brace-format #, python-brace-format
msgid "{num} hits" msgid "{hits} hit"
msgstr "" msgid_plural "{hits} hits"
msgstr[0] ""
msgstr[1] ""
#: mpdevil:1926 #: mpdevil:1894
msgid "all genres" msgid "all genres"
msgstr "" msgstr ""
#: mpdevil:2028 #: mpdevil:1996
msgid "all artists" msgid "all artists"
msgstr "" msgstr ""
#: mpdevil:2220 #: mpdevil:2180 mpdevil:2805 mpdevil:3091 mpdevil:3092
#, python-brace-format #, python-brace-format
msgid "{titles} titles on {discs} discs ({length})" msgid "{titles} title"
msgid_plural "{titles} titles"
msgstr[0] ""
msgstr[1] ""
#: mpdevil:2182
#, python-brace-format
msgid "on {discs} discs"
msgstr "" msgstr ""
#: mpdevil:2223 mpdevil:2857 mpdevil:3144 mpdevil:3145 #: mpdevil:2322 mpdevil:3536
#, python-brace-format
msgid "{titles} titles ({length})"
msgstr ""
#: mpdevil:2363 mpdevil:3583
msgid "Back to current album" msgid "Back to current album"
msgstr "" msgstr ""
#: mpdevil:2365 #: mpdevil:2324
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: mpdevil:2542 #: mpdevil:2500
msgid "searching..." msgid "searching..."
msgstr "" msgstr ""
#: mpdevil:2547 #: mpdevil:2505
msgid "connection error" msgid "connection error"
msgstr "" msgstr ""
#: mpdevil:2549 #: mpdevil:2507
msgid "lyrics not found" msgid "lyrics not found"
msgstr "" msgstr ""
#: mpdevil:2597 #: mpdevil:2552
#, python-brace-format #, python-brace-format
msgid "" msgid "{channels} channel"
"{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} channels, " msgid_plural "{channels} channels"
"{file_type}" msgstr[0] ""
msgstr "" msgstr[1] ""
#: mpdevil:2727 #: mpdevil:2680
msgid "Scroll to current song" msgid "Scroll to current song"
msgstr "" msgstr ""
#: mpdevil:2735 mpdevil:3599 #: mpdevil:2688 mpdevil:3552
msgid "Clear playlist" msgid "Clear playlist"
msgstr "" msgstr ""
#: mpdevil:3029 #: mpdevil:2982
msgid "Show lyrics" msgid "Show lyrics"
msgstr "" msgstr ""
#: mpdevil:3351 #: mpdevil:3300
msgid "Random mode" msgid "Random mode"
msgstr "" msgstr ""
#: mpdevil:3353 #: mpdevil:3302
msgid "Repeat mode" msgid "Repeat mode"
msgstr "" msgstr ""
#: mpdevil:3355 #: mpdevil:3304
msgid "Single mode" msgid "Single mode"
msgstr "" msgstr ""
#: mpdevil:3357 #: mpdevil:3306
msgid "Consume mode" msgid "Consume mode"
msgstr "" msgstr ""
#: mpdevil:3561 #: mpdevil:3514
msgid "Window" msgid "Window"
msgstr "" msgstr ""
#: mpdevil:3562 #: mpdevil:3515
msgid "Playback" msgid "Playback"
msgstr "" msgstr ""
#: mpdevil:3563 #: mpdevil:3516
msgid "Search, Album Dialog and Album List" msgid "Search, Album Dialog and Album List"
msgstr "" msgstr ""
#: mpdevil:3573 #: mpdevil:3526
msgid "Open online help" msgid "Open online help"
msgstr "" msgstr ""
#: mpdevil:3574 #: mpdevil:3527
msgid "Open shortcuts window" msgid "Open shortcuts window"
msgstr "" msgstr ""
#: mpdevil:3575 #: mpdevil:3528
msgid "Open menu" msgid "Open menu"
msgstr "" msgstr ""
#: mpdevil:3576 mpdevil:3720 #: mpdevil:3529 mpdevil:3672
msgid "Update database" msgid "Update database"
msgstr "" msgstr ""
#: mpdevil:3577 mpdevil:3718 #: mpdevil:3530 mpdevil:3670
msgid "Quit" msgid "Quit"
msgstr "" msgstr ""
#: mpdevil:3578 #: mpdevil:3531
msgid "Cycle through profiles" msgid "Cycle through profiles"
msgstr "" msgstr ""
#: mpdevil:3579 #: mpdevil:3532
msgid "Cycle through profiles in reversed order" msgid "Cycle through profiles in reversed order"
msgstr "" msgstr ""
#: mpdevil:3580 #: mpdevil:3533
msgid "Toggle mini player" msgid "Toggle mini player"
msgstr "" msgstr ""
#: mpdevil:3581 #: mpdevil:3534
msgid "Toggle lyrics" msgid "Toggle lyrics"
msgstr "" msgstr ""
#: mpdevil:3582 #: mpdevil:3535
msgid "Toggle search" msgid "Toggle search"
msgstr "" msgstr ""
#: mpdevil:3584 #: mpdevil:3537
msgid "Play/Pause" msgid "Play/Pause"
msgstr "" msgstr ""
#: mpdevil:3585 #: mpdevil:3538
msgid "Stop" msgid "Stop"
msgstr "" msgstr ""
#: mpdevil:3586 #: mpdevil:3539
msgid "Next title" msgid "Next title"
msgstr "" msgstr ""
#: mpdevil:3587 #: mpdevil:3540
msgid "Previous title" msgid "Previous title"
msgstr "" msgstr ""
#: mpdevil:3588 #: mpdevil:3541
msgid "Seek forward" msgid "Seek forward"
msgstr "" msgstr ""
#: mpdevil:3589 #: mpdevil:3542
msgid "Seek backward" msgid "Seek backward"
msgstr "" msgstr ""
#: mpdevil:3590 #: mpdevil:3543
msgid "Toggle repeat mode" msgid "Toggle repeat mode"
msgstr "" msgstr ""
#: mpdevil:3591 #: mpdevil:3544
msgid "Toggle random mode" msgid "Toggle random mode"
msgstr "" msgstr ""
#: mpdevil:3592 #: mpdevil:3545
msgid "Toggle single mode" msgid "Toggle single mode"
msgstr "" msgstr ""
#: mpdevil:3593 #: mpdevil:3546
msgid "Toggle consume mode" msgid "Toggle consume mode"
msgstr "" msgstr ""
#: mpdevil:3594 #: mpdevil:3547
msgid "Play selected item (next)" msgid "Play selected item (next)"
msgstr "" msgstr ""
#: mpdevil:3594 #: mpdevil:3547
msgid "Left-click" msgid "Left-click"
msgstr "" msgstr ""
#: mpdevil:3595 #: mpdevil:3548
msgid "Append selected item" msgid "Append selected item"
msgstr "" msgstr ""
#: mpdevil:3595 mpdevil:3598 #: mpdevil:3548 mpdevil:3551
msgid "Middle-click" msgid "Middle-click"
msgstr "" msgstr ""
#: mpdevil:3596 #: mpdevil:3549
msgid "Play selected item immediately" msgid "Play selected item immediately"
msgstr "" msgstr ""
#: mpdevil:3596 #: mpdevil:3549
msgid "Double-click" msgid "Double-click"
msgstr "" msgstr ""
#: mpdevil:3597 mpdevil:3600 #: mpdevil:3550 mpdevil:3553
msgid "Show additional information" msgid "Show additional information"
msgstr "" msgstr ""
#: mpdevil:3597 mpdevil:3600 #: mpdevil:3550 mpdevil:3553
msgid "Right-click" msgid "Right-click"
msgstr "" msgstr ""
#: mpdevil:3598 #: mpdevil:3551
msgid "Remove selected song" msgid "Remove selected song"
msgstr "" msgstr ""
#: mpdevil:3624 #: mpdevil:3577
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
#: mpdevil:3642 #: mpdevil:3595
#, python-brace-format #, python-brace-format
msgid "Connection to “{profile}” ({host}:{port}) failed" msgid "Connection to “{profile}” ({host}:{port}) failed"
msgstr "" msgstr ""
#: mpdevil:3715 #: mpdevil:3667
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "" msgstr ""
#: mpdevil:3716 #: mpdevil:3668
msgid "Help" msgid "Help"
msgstr "" msgstr ""
#: mpdevil:3717 #: mpdevil:3669
msgid "About" msgid "About"
msgstr "" msgstr ""
#: mpdevil:3721 #: mpdevil:3673
msgid "Server stats" msgid "Server stats"
msgstr "" msgstr ""
#: mpdevil:3726 #: mpdevil:3678
msgid "Mini player" msgid "Mini player"
msgstr "" msgstr ""
#: mpdevil:3727 #: mpdevil:3683
msgid "Save window layout"
msgstr ""
#: mpdevil:3732
msgid "Menu" msgid "Menu"
msgstr "" msgstr ""
#: mpdevil:3783 mpdevil:3785 #: mpdevil:3734 mpdevil:3736
msgid "connecting…" msgid "connecting…"
msgstr "" msgstr ""

357
po/nl.po
View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-01 12:34+0100\n" "POT-Creation-Date: 2021-02-12 16:57+0100\n"
"PO-Revision-Date: 2021-01-01 12:35+0100\n" "PO-Revision-Date: 2021-02-12 16:59+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: nl\n" "Language: nl\n"
@@ -18,103 +18,90 @@ msgstr ""
"X-Generator: Poedit 2.3.1\n" "X-Generator: Poedit 2.3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mpdevil:471 #: mpdevil:438
#, python-brace-format
msgid "{days} day"
msgid_plural "{days} days"
msgstr[0] "{days} dag"
msgstr[1] "{days} dagen"
#: mpdevil:473
msgid "Unknown Title" msgid "Unknown Title"
msgstr "Onbekende titel" msgstr "Onbekende titel"
#: mpdevil:795 #: mpdevil:802
msgid "Main cover size:" msgid "Main cover size:"
msgstr "Grootte albumhoes:" msgstr "Grootte albumhoes:"
#: mpdevil:796 #: mpdevil:803
msgid "Album view cover size:" msgid "Album view cover size:"
msgstr "Hoesgrootte in albumlijst:" msgstr "Hoesgrootte in albumlijst:"
#: mpdevil:797 #: mpdevil:804
msgid "Action bar icon size:" msgid "Action bar icon size:"
msgstr "Grootte iconen werkbalk:" msgstr "Grootte iconen werkbalk:"
#: mpdevil:798 #: mpdevil:805
msgid "Secondary icon size:" msgid "Secondary icon size:"
msgstr "Grootte overige iconen:" msgstr "Grootte overige iconen:"
#: mpdevil:811 #: mpdevil:818
msgid "Sort albums by:"
msgstr "Albums sorteren op:"
#: mpdevil:811
msgid "name"
msgstr "naam"
#: mpdevil:811
msgid "year"
msgstr "jaar"
#: mpdevil:812
msgid "Position of playlist:"
msgstr "Positie afspeellijst:"
#: mpdevil:812
msgid "bottom"
msgstr "onder"
#: mpdevil:812
msgid "right"
msgstr "rechts"
#: mpdevil:830
msgid "Use Client-side decoration" msgid "Use Client-side decoration"
msgstr "Gebruik vensterdecoratie van mpdevil" msgstr "Gebruik vensterdecoratie van mpdevil"
#: mpdevil:831 #: mpdevil:819
msgid "Show stop button" msgid "Show stop button"
msgstr "Toon stopknop" msgstr "Toon stopknop"
#: mpdevil:832 #: mpdevil:820
msgid "Show lyrics button" msgid "Show lyrics button"
msgstr "Toon songtekstknop" msgstr "Toon songtekstknop"
#: mpdevil:833 #: mpdevil:821
msgid "Show initials in artist view" msgid "Show initials in artist view"
msgstr "Toon beginletters in artiestenlijst" msgstr "Toon beginletters in artiestenlijst"
#: mpdevil:834 #: mpdevil:822
msgid "Show tooltips in album view" msgid "Place playlist at the side"
msgstr "Toon tooltip in albumlijst" msgstr "Plaats afspeellijst aan de zijkant"
#: mpdevil:835 #: mpdevil:823
msgid "Use “Album Artist” tag" msgid "Use “Album Artist” tag"
msgstr "Gebruik tag \"Album Artist\"" msgstr "Gebruik tag \"Album Artist\""
#: mpdevil:836 #: mpdevil:824
msgid "Send notification on title change" msgid "Send notification on title change"
msgstr "Verstuur een melding bij titelwisseling" msgstr "Verstuur een melding bij titelwisseling"
#: mpdevil:837 #: mpdevil:825
msgid "Stop playback on quit" msgid "Stop playback on quit"
msgstr "Stop afspelen bij afsluiten" msgstr "Stop afspelen bij afsluiten"
#: mpdevil:838 #: mpdevil:826
msgid "Play selected albums and titles immediately" msgid "Play selected albums and titles immediately"
msgstr "Geselecteerde albums en titels direct afspelen" msgstr "Geselecteerde albums en titels direct afspelen"
#: mpdevil:851 #: mpdevil:827
msgid "Sort albums by year"
msgstr "Sorteer albums op jaar"
#: mpdevil:839
msgid "<b>View</b>" msgid "<b>View</b>"
msgstr "<b>Beeld</b>" msgstr "<b>Beeld</b>"
#: mpdevil:852 #: mpdevil:840
msgid "<b>Behavior</b>" msgid "<b>Behavior</b>"
msgstr "<b>Gedrag</b>" msgstr "<b>Gedrag</b>"
#: mpdevil:884 #: mpdevil:860
msgid "(restart required)" msgid "(restart required)"
msgstr "(herstart vereist)" msgstr "(herstart vereist)"
#: mpdevil:946 #: mpdevil:909
msgid "_Connect" msgid "_Connect"
msgstr "_Verbinden" msgstr "_Verbinden"
#: mpdevil:962 #: mpdevil:925
msgid "" msgid ""
"The first image in the same directory as the song file matching this regex " "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 " "will be displayed. %AlbumArtist% and %Album% will be replaced by the "
@@ -124,159 +111,159 @@ msgstr ""
"met deze regex wordt getoond. %AlbumArtist% en %Album% worden vervangen door " "met deze regex wordt getoond. %AlbumArtist% en %Album% worden vervangen door "
"de bijbehorende tags van het muziekbestand." "de bijbehorende tags van het muziekbestand."
#: mpdevil:967 #: mpdevil:930
msgid "Profile:" msgid "Profile:"
msgstr "Profiel:" msgstr "Profiel:"
#: mpdevil:968 #: mpdevil:931
msgid "Name:" msgid "Name:"
msgstr "Naam:" msgstr "Naam:"
#: mpdevil:969 #: mpdevil:932
msgid "Host:" msgid "Host:"
msgstr "Host:" msgstr "Host:"
#: mpdevil:970 #: mpdevil:933
msgid "Password:" msgid "Password:"
msgstr "Wachtwoord:" msgstr "Wachtwoord:"
#: mpdevil:971 #: mpdevil:934
msgid "Music lib:" msgid "Music lib:"
msgstr "Muziekmap:" msgstr "Muziekmap:"
#: mpdevil:972 #: mpdevil:935
msgid "Cover regex:" msgid "Cover regex:"
msgstr "Regex albumhoes:" msgstr "Regex albumhoes:"
#: mpdevil:1107 #: mpdevil:1070
msgid "Choose directory" msgid "Choose directory"
msgstr "Kies een map" msgstr "Kies een map"
#: mpdevil:1140 #: mpdevil:1101
msgid "Choose the order of information to appear in the playlist:" msgid "Choose the order of information to appear in the playlist:"
msgstr "Kies de volgorde van de informatie getoond in de afspeellijst:" msgstr "Kies de volgorde van de informatie getoond in de afspeellijst:"
#: mpdevil:1157 mpdevil:1703 mpdevil:1799 mpdevil:2753 #: mpdevil:1118 mpdevil:1671 mpdevil:1766 mpdevil:2706
msgid "No" msgid "No"
msgstr "Nr" msgstr "Nr"
#: mpdevil:1157 mpdevil:2754 #: mpdevil:1118 mpdevil:2707
msgid "Disc" msgid "Disc"
msgstr "Disc" msgstr "Disc"
#: mpdevil:1157 mpdevil:1706 mpdevil:1804 mpdevil:2755 #: mpdevil:1118 mpdevil:1674 mpdevil:1771 mpdevil:2708
msgid "Title" msgid "Title"
msgstr "Titel" msgstr "Titel"
#: mpdevil:1157 mpdevil:1810 mpdevil:2756 #: mpdevil:1118 mpdevil:1777 mpdevil:2709
msgid "Artist" msgid "Artist"
msgstr "Artiest" msgstr "Artiest"
#: mpdevil:1157 mpdevil:1816 mpdevil:2757 #: mpdevil:1118 mpdevil:1783 mpdevil:2710
msgid "Album" msgid "Album"
msgstr "Album" msgstr "Album"
#: mpdevil:1157 mpdevil:1710 mpdevil:1822 mpdevil:2758 #: mpdevil:1118 mpdevil:1678 mpdevil:1789 mpdevil:2711
msgid "Length" msgid "Length"
msgstr "Lengte" msgstr "Lengte"
#: mpdevil:1157 mpdevil:2759 #: mpdevil:1118 mpdevil:2712
msgid "Year" msgid "Year"
msgstr "Jaar" msgstr "Jaar"
#: mpdevil:1157 mpdevil:2760 #: mpdevil:1118 mpdevil:2713
msgid "Genre" msgid "Genre"
msgstr "Genre" msgstr "Genre"
#: mpdevil:1273 mpdevil:1275 mpdevil:3714 #: mpdevil:1234 mpdevil:1236 mpdevil:3666
msgid "Settings" msgid "Settings"
msgstr "Instellingen" msgstr "Instellingen"
#: mpdevil:1288 mpdevil:1297 mpdevil:3560 #: mpdevil:1249 mpdevil:1258 mpdevil:3513
msgid "General" msgid "General"
msgstr "Algemeen" msgstr "Algemeen"
#: mpdevil:1289 mpdevil:1298 mpdevil:3725 #: mpdevil:1250 mpdevil:1259 mpdevil:3677
msgid "Profiles" msgid "Profiles"
msgstr "Profielen" msgstr "Profielen"
#: mpdevil:1290 mpdevil:1299 mpdevil:3564 #: mpdevil:1251 mpdevil:1260 mpdevil:3517
msgid "Playlist" msgid "Playlist"
msgstr "Afspeellijst" msgstr "Afspeellijst"
#: mpdevil:1313 #: mpdevil:1273
msgid "Stats" msgid "Stats"
msgstr "Statistieken" msgstr "Statistieken"
#: mpdevil:1323 #: mpdevil:1283
msgid "<b>Protocol:</b>" msgid "<b>Protocol:</b>"
msgstr "<b>Protocol:</b>" msgstr "<b>Protocol:</b>"
#: mpdevil:1324 #: mpdevil:1284
msgid "<b>Uptime:</b>" msgid "<b>Uptime:</b>"
msgstr "<b>Uptime:</b>" msgstr "<b>Uptime:</b>"
#: mpdevil:1325 #: mpdevil:1285
msgid "<b>Playtime:</b>" msgid "<b>Playtime:</b>"
msgstr "<b>Afspeeltijd:</b>" msgstr "<b>Afspeeltijd:</b>"
#: mpdevil:1326 #: mpdevil:1286
msgid "<b>Artists:</b>" msgid "<b>Artists:</b>"
msgstr "<b>Artiesten:</b>" msgstr "<b>Artiesten:</b>"
#: mpdevil:1327 #: mpdevil:1287
msgid "<b>Albums:</b>" msgid "<b>Albums:</b>"
msgstr "<b>Albums:</b>" msgstr "<b>Albums:</b>"
#: mpdevil:1328 #: mpdevil:1288
msgid "<b>Songs:</b>" msgid "<b>Songs:</b>"
msgstr "<b>Titels:</b>" msgstr "<b>Titels:</b>"
#: mpdevil:1329 #: mpdevil:1289
msgid "<b>Total Playtime:</b>" msgid "<b>Total Playtime:</b>"
msgstr "<b>Totale speelduur:</b>" msgstr "<b>Totale speelduur:</b>"
#: mpdevil:1330 #: mpdevil:1290
msgid "<b>Database Update:</b>" msgid "<b>Database Update:</b>"
msgstr "<b>Database bijgewerkt:</b>" msgstr "<b>Database bijgewerkt:</b>"
#: mpdevil:1355 #: mpdevil:1314
msgid "A simple music browser for MPD" msgid "A simple music browser for MPD"
msgstr "Een simpele muziekspeler voor MPD" msgstr "Een simpele muziekspeler voor MPD"
#: mpdevil:1461 #: mpdevil:1412
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: mpdevil:1464
msgid "Value"
msgstr "Waarde"
#: mpdevil:1490
msgid "Open with…" msgid "Open with…"
msgstr "Openen met…" msgstr "Openen met…"
#: mpdevil:1596 #: mpdevil:1430
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: mpdevil:1433
msgid "Value"
msgstr "Waarde"
#: mpdevil:1564
msgid "_Append" msgid "_Append"
msgstr "_Toevoegen" msgstr "_Toevoegen"
#: mpdevil:1598 #: mpdevil:1566
msgid "Add all titles to playlist" msgid "Add all titles to playlist"
msgstr "Voeg alle titels toe aan de afspeellijst" msgstr "Voeg alle titels toe aan de afspeellijst"
#: mpdevil:1599 #: mpdevil:1567
msgid "_Play" msgid "_Play"
msgstr "_Afspelen" msgstr "_Afspelen"
#: mpdevil:1601 #: mpdevil:1569
msgid "Directly play all titles" msgid "Directly play all titles"
msgstr "Alle titels direct afspelen" msgstr "Alle titels direct afspelen"
#: mpdevil:1602 #: mpdevil:1570
msgid "_Enqueue" msgid "_Enqueue"
msgstr "_In wachtrij plaatsen" msgstr "_In wachtrij plaatsen"
#: mpdevil:1604 #: mpdevil:1572
msgid "" msgid ""
"Append all titles after the currently playing track and clear the playlist " "Append all titles after the currently playing track and clear the playlist "
"from all other songs" "from all other songs"
@@ -284,258 +271,292 @@ msgstr ""
"Alle titels toevoegen na de nu spelende titel en alle overige titels uit de " "Alle titels toevoegen na de nu spelende titel en alle overige titels uit de "
"afspeellijst verwijderen" "afspeellijst verwijderen"
#: mpdevil:1860 #: mpdevil:1827
msgid "all tags" msgid "all tags"
msgstr "alle tags" msgstr "alle tags"
#: mpdevil:1888 #: mpdevil:1856
#, python-brace-format #, python-brace-format
msgid "{num} hits" msgid "{hits} hit"
msgstr "{num} hits" msgid_plural "{hits} hits"
msgstr[0] "{hits} hit"
msgstr[1] "{hits} treffers"
#: mpdevil:1926 #: mpdevil:1894
msgid "all genres" msgid "all genres"
msgstr "alle genres" msgstr "alle genres"
#: mpdevil:2028 #: mpdevil:1996
msgid "all artists" msgid "all artists"
msgstr "alle artiesten" msgstr "alle artiesten"
#: mpdevil:2220 #: mpdevil:2180 mpdevil:2805 mpdevil:3091 mpdevil:3092
#, python-brace-format #, python-brace-format
msgid "{titles} titles on {discs} discs ({length})" msgid "{titles} title"
msgstr "{titles} titels op {discs} discs ({length})" msgid_plural "{titles} titles"
msgstr[0] "{titles} titel"
msgstr[1] "{titles} titels"
#: mpdevil:2223 mpdevil:2857 mpdevil:3144 mpdevil:3145 #: mpdevil:2182
#, python-brace-format #, python-brace-format
msgid "{titles} titles ({length})" msgid "on {discs} discs"
msgstr "{titles} titels ({length})" msgstr "op {discs} discs"
#: mpdevil:2363 mpdevil:3583 #: mpdevil:2322 mpdevil:3536
msgid "Back to current album" msgid "Back to current album"
msgstr "Terug naar huidige album" msgstr "Terug naar huidige album"
#: mpdevil:2365 #: mpdevil:2324
msgid "Search" msgid "Search"
msgstr "Zoeken" msgstr "Zoeken"
#: mpdevil:2542 #: mpdevil:2500
msgid "searching..." msgid "searching..."
msgstr "bezig met zoeken..." msgstr "bezig met zoeken..."
#: mpdevil:2547 #: mpdevil:2505
msgid "connection error" msgid "connection error"
msgstr "verbindingsfout" msgstr "verbindingsfout"
#: mpdevil:2549 #: mpdevil:2507
msgid "lyrics not found" msgid "lyrics not found"
msgstr "geen songtekst gevonden" msgstr "geen songtekst gevonden"
#: mpdevil:2597 #: mpdevil:2552
#, python-brace-format #, python-brace-format
msgid "" msgid "{channels} channel"
"{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} channels, " msgid_plural "{channels} channels"
"{file_type}" msgstr[0] "{channels} kanaal"
msgstr "" msgstr[1] "{channels} kanalen"
"{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} kanalen, "
"{file_type}"
#: mpdevil:2727 #: mpdevil:2680
msgid "Scroll to current song" msgid "Scroll to current song"
msgstr "Naar de huidige titel scrollen" msgstr "Naar de huidige titel scrollen"
#: mpdevil:2735 mpdevil:3599 #: mpdevil:2688 mpdevil:3552
msgid "Clear playlist" msgid "Clear playlist"
msgstr "Afspeellijst legen" msgstr "Afspeellijst legen"
#: mpdevil:3029 #: mpdevil:2982
msgid "Show lyrics" msgid "Show lyrics"
msgstr "Toon songtekst" msgstr "Toon songtekst"
#: mpdevil:3351 #: mpdevil:3300
msgid "Random mode" msgid "Random mode"
msgstr "Willekeurige modus" msgstr "Willekeurige modus"
#: mpdevil:3353 #: mpdevil:3302
msgid "Repeat mode" msgid "Repeat mode"
msgstr "Herhaalmodus" msgstr "Herhaalmodus"
#: mpdevil:3355 #: mpdevil:3304
msgid "Single mode" msgid "Single mode"
msgstr "Enkele modus" msgstr "Enkele modus"
#: mpdevil:3357 #: mpdevil:3306
msgid "Consume mode" msgid "Consume mode"
msgstr "Verbruiksmodus" msgstr "Verbruiksmodus"
#: mpdevil:3561 #: mpdevil:3514
msgid "Window" msgid "Window"
msgstr "Venster" msgstr "Venster"
#: mpdevil:3562 #: mpdevil:3515
msgid "Playback" msgid "Playback"
msgstr "Afspelen" msgstr "Afspelen"
#: mpdevil:3563 #: mpdevil:3516
msgid "Search, Album Dialog and Album List" msgid "Search, Album Dialog and Album List"
msgstr "Zoeken, Albumdialoog en Albumlijst" msgstr "Zoeken, Albumdialoog en Albumlijst"
#: mpdevil:3573 #: mpdevil:3526
msgid "Open online help" msgid "Open online help"
msgstr "Online hulp openen" msgstr "Online hulp openen"
#: mpdevil:3574 #: mpdevil:3527
msgid "Open shortcuts window" msgid "Open shortcuts window"
msgstr "Venster met sneltoetsen openen" msgstr "Venster met sneltoetsen openen"
#: mpdevil:3575 #: mpdevil:3528
msgid "Open menu" msgid "Open menu"
msgstr "Menu openen" msgstr "Menu openen"
#: mpdevil:3576 mpdevil:3720 #: mpdevil:3529 mpdevil:3672
msgid "Update database" msgid "Update database"
msgstr "Database bijwerken" msgstr "Database bijwerken"
#: mpdevil:3577 mpdevil:3718 #: mpdevil:3530 mpdevil:3670
msgid "Quit" msgid "Quit"
msgstr "Stoppen" msgstr "Stoppen"
#: mpdevil:3578 #: mpdevil:3531
msgid "Cycle through profiles" msgid "Cycle through profiles"
msgstr "Profielen doorlopen" msgstr "Profielen doorlopen"
#: mpdevil:3579 #: mpdevil:3532
msgid "Cycle through profiles in reversed order" msgid "Cycle through profiles in reversed order"
msgstr "Profielen doorlopen in omgekeerde volgorde" msgstr "Profielen doorlopen in omgekeerde volgorde"
#: mpdevil:3580 #: mpdevil:3533
msgid "Toggle mini player" msgid "Toggle mini player"
msgstr "Omschakelen naar minispeler" msgstr "Omschakelen naar minispeler"
#: mpdevil:3581 #: mpdevil:3534
msgid "Toggle lyrics" msgid "Toggle lyrics"
msgstr "Omschakelen naar songtekst" msgstr "Omschakelen naar songtekst"
#: mpdevil:3582 #: mpdevil:3535
msgid "Toggle search" msgid "Toggle search"
msgstr "Omschakelen naar zoeken" msgstr "Omschakelen naar zoeken"
#: mpdevil:3584 #: mpdevil:3537
msgid "Play/Pause" msgid "Play/Pause"
msgstr "Afspelen/Pauzeren" msgstr "Afspelen/Pauzeren"
#: mpdevil:3585 #: mpdevil:3538
msgid "Stop" msgid "Stop"
msgstr "Stoppen" msgstr "Stoppen"
#: mpdevil:3586 #: mpdevil:3539
msgid "Next title" msgid "Next title"
msgstr "Volgende titel" msgstr "Volgende titel"
#: mpdevil:3587 #: mpdevil:3540
msgid "Previous title" msgid "Previous title"
msgstr "Vorige titel" msgstr "Vorige titel"
#: mpdevil:3588 #: mpdevil:3541
msgid "Seek forward" msgid "Seek forward"
msgstr "Vooruit spoelen" msgstr "Vooruit spoelen"
#: mpdevil:3589 #: mpdevil:3542
msgid "Seek backward" msgid "Seek backward"
msgstr "Achteruit spoelen" msgstr "Achteruit spoelen"
#: mpdevil:3590 #: mpdevil:3543
msgid "Toggle repeat mode" msgid "Toggle repeat mode"
msgstr "Omschakelen naar herhaalmodus" msgstr "Omschakelen naar herhaalmodus"
#: mpdevil:3591 #: mpdevil:3544
msgid "Toggle random mode" msgid "Toggle random mode"
msgstr "Omschakelen naar willekeurige modus" msgstr "Omschakelen naar willekeurige modus"
#: mpdevil:3592 #: mpdevil:3545
msgid "Toggle single mode" msgid "Toggle single mode"
msgstr "Omschakelen naar enkele modus" msgstr "Omschakelen naar enkele modus"
#: mpdevil:3593 #: mpdevil:3546
msgid "Toggle consume mode" msgid "Toggle consume mode"
msgstr "Omschakelen naar verbruiksmodus" msgstr "Omschakelen naar verbruiksmodus"
#: mpdevil:3594 #: mpdevil:3547
msgid "Play selected item (next)" msgid "Play selected item (next)"
msgstr "Geselecteerde item afspelen (volgende)" msgstr "Geselecteerde item afspelen (volgende)"
#: mpdevil:3594 #: mpdevil:3547
msgid "Left-click" msgid "Left-click"
msgstr "Linksklik" msgstr "Linksklik"
#: mpdevil:3595 #: mpdevil:3548
msgid "Append selected item" msgid "Append selected item"
msgstr "Geselecteerde item toevoegen" msgstr "Geselecteerde item toevoegen"
#: mpdevil:3595 mpdevil:3598 #: mpdevil:3548 mpdevil:3551
msgid "Middle-click" msgid "Middle-click"
msgstr "Middelklik" msgstr "Middelklik"
#: mpdevil:3596 #: mpdevil:3549
msgid "Play selected item immediately" msgid "Play selected item immediately"
msgstr "Geselecteerde item direct afspelen" msgstr "Geselecteerde item direct afspelen"
#: mpdevil:3596 #: mpdevil:3549
msgid "Double-click" msgid "Double-click"
msgstr "Dubbelklik" msgstr "Dubbelklik"
#: mpdevil:3597 mpdevil:3600 #: mpdevil:3550 mpdevil:3553
msgid "Show additional information" msgid "Show additional information"
msgstr "Toon extra informatie" msgstr "Toon extra informatie"
#: mpdevil:3597 mpdevil:3600 #: mpdevil:3550 mpdevil:3553
msgid "Right-click" msgid "Right-click"
msgstr "Rechtsklik" msgstr "Rechtsklik"
#: mpdevil:3598 #: mpdevil:3551
msgid "Remove selected song" msgid "Remove selected song"
msgstr "Geselecteerde titel verwijderen" msgstr "Geselecteerde titel verwijderen"
#: mpdevil:3624 #: mpdevil:3577
msgid "Connect" msgid "Connect"
msgstr "Verbinden" msgstr "Verbinden"
#: mpdevil:3642 #: mpdevil:3595
#, python-brace-format #, python-brace-format
msgid "Connection to “{profile}” ({host}:{port}) failed" msgid "Connection to “{profile}” ({host}:{port}) failed"
msgstr "Verbinding met “{profile}” ({host}:{port}) mislukt" msgstr "Verbinding met “{profile}” ({host}:{port}) mislukt"
#: mpdevil:3715 #: mpdevil:3667
msgid "Keyboard shortcuts" msgid "Keyboard shortcuts"
msgstr "Sneltoetsen" msgstr "Sneltoetsen"
#: mpdevil:3716 #: mpdevil:3668
msgid "Help" msgid "Help"
msgstr "Hulp" msgstr "Hulp"
#: mpdevil:3717 #: mpdevil:3669
msgid "About" msgid "About"
msgstr "Over" msgstr "Over"
#: mpdevil:3721 #: mpdevil:3673
msgid "Server stats" msgid "Server stats"
msgstr "Serverstatistieken" msgstr "Serverstatistieken"
#: mpdevil:3726 #: mpdevil:3678
msgid "Mini player" msgid "Mini player"
msgstr "Minispeler" msgstr "Minispeler"
#: mpdevil:3727 #: mpdevil:3683
msgid "Save window layout"
msgstr "Vensterindeling opslaan"
#: mpdevil:3732
msgid "Menu" msgid "Menu"
msgstr "Menu" msgstr "Menu"
#: mpdevil:3783 mpdevil:3785 #: mpdevil:3734 mpdevil:3736
msgid "connecting…" msgid "connecting…"
msgstr "verbinding maken…" msgstr "verbinding maken…"
#~ msgid "Sort albums in chronological order"
#~ msgstr "Sorteer albums in chronologische volgorde"
#~ msgid "name"
#~ msgstr "naam"
#~ msgid "year"
#~ msgstr "jaar"
#~ msgid "Position of playlist:"
#~ msgstr "Positie afspeellijst:"
#~ msgid "bottom"
#~ msgstr "onder"
#~ msgid "right"
#~ msgstr "rechts"
#~ msgid "Show tooltips in album view"
#~ msgstr "Toon tooltip in albumlijst"
#~ msgid "Save window layout"
#~ msgstr "Vensterindeling opslaan"
#, python-brace-format
#~ msgid ""
#~ "{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} channels, "
#~ "{file_type}"
#~ msgstr ""
#~ "{bitrate} kb/s, {frequency} kHz, {resolution} bit, {channels} kanalen, "
#~ "{file_type}"
#, python-brace-format
#~ msgid "{titles} titles on {discs} discs ({length})"
#~ msgstr "{titles} titels op {discs} discs ({length})"
#~ msgid "Close" #~ msgid "Close"
#~ msgstr "Afsluiten" #~ msgstr "Afsluiten"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1013 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@@ -4,7 +4,7 @@ import DistUtilsExtra.auto
DistUtilsExtra.auto.setup( DistUtilsExtra.auto.setup(
name='mpdevil', name='mpdevil',
version='0.9.9', # sync with bin/mpdevil version='1.1.0', # sync with bin/mpdevil
author="Martin Wagner", author="Martin Wagner",
author_email="martin.wagner.dev@gmail.com", author_email="martin.wagner.dev@gmail.com",
description=('A simple music browser for MPD'), description=('A simple music browser for MPD'),
@@ -13,14 +13,17 @@ DistUtilsExtra.auto.setup(
data_files=[ data_files=[
('share/metainfo/', ['data/org.mpdevil.mpdevil.appdata.xml']), ('share/metainfo/', ['data/org.mpdevil.mpdevil.appdata.xml']),
('share/icons/hicolor/16x16/apps/', ['data/icons/16x16/org.mpdevil.mpdevil.png']), ('share/icons/hicolor/16x16/apps/', ['data/icons/16x16/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/22x22/apps/', ['data/icons/22x22/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/24x24/apps/', ['data/icons/24x24/org.mpdevil.mpdevil.png']), ('share/icons/hicolor/24x24/apps/', ['data/icons/24x24/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/32x32/apps/', ['data/icons/32x32/org.mpdevil.mpdevil.png']), ('share/icons/hicolor/32x32/apps/', ['data/icons/32x32/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/48x48/apps/', ['data/icons/48x48/org.mpdevil.mpdevil.png']), ('share/icons/hicolor/48x48/apps/', ['data/icons/48x48/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/64x64/apps/', ['data/icons/64x64/org.mpdevil.mpdevil.png']), ('share/icons/hicolor/64x64/apps/', ['data/icons/64x64/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/128x128/apps/', ['data/icons/128x128/org.mpdevil.mpdevil.png']), ('share/icons/hicolor/128x128/apps/', ['data/icons/128x128/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/256x256/apps/', ['data/icons/256x256/org.mpdevil.mpdevil.png']), ('share/icons/hicolor/256x256/apps/', ['data/icons/256x256/org.mpdevil.mpdevil.png']),
('share/icons/hicolor/scalable/apps/', ['data/icons/scalable/org.mpdevil.mpdevil.svg']) ('share/icons/hicolor/scalable/apps/', ['data/icons/scalable/org.mpdevil.mpdevil.svg']),
('share/icons/hicolor/scalable/apps/', ['data/icons/scalable/org.mpdevil.mpdevil-symbolic.svg']),
('share/icons/hicolor/scalable/status/', ['data/icons/scalable/org.mpdevil.mpdevil-single-symbolic.svg']),
('share/icons/hicolor/scalable/status/', ['data/icons/scalable/org.mpdevil.mpdevil-consume-symbolic.svg']),
('share/icons/hicolor/scalable/status/', ['data/icons/scalable/org.mpdevil.mpdevil-consume-symbolic-rtl.svg']),
], ],
) )