mirror of
https://github.com/SoongNoonien/mpdevil.git
synced 2023-08-10 21:12:44 +03:00
reworked AlbumDialog and SearchWindow
This commit is contained in:
parent
6bf3c86068
commit
49ae372b43
234
bin/mpdevil.py
234
bin/mpdevil.py
@ -837,19 +837,21 @@ class Client(MPDClient):
|
|||||||
def on_settings_changed(self, *args):
|
def on_settings_changed(self, *args):
|
||||||
self.disconnect()
|
self.disconnect()
|
||||||
|
|
||||||
def files_to_playlist(self, files, append, force=False):
|
def files_to_playlist(self, files, mode="default"): # modes: default, play, append, enqueue
|
||||||
if append:
|
def append(files):
|
||||||
for f in files:
|
for f in files:
|
||||||
self.add(f)
|
self.add(f)
|
||||||
else:
|
def play(files):
|
||||||
if self.settings.get_boolean("force-mode") or force or self.status()["state"] == "stop":
|
|
||||||
if not files == []:
|
if not files == []:
|
||||||
self.clear()
|
self.clear()
|
||||||
for f in files:
|
for f in files:
|
||||||
self.add(f)
|
self.add(f)
|
||||||
self.play()
|
self.play()
|
||||||
else:
|
def enqueue(files):
|
||||||
status=self.status()
|
status=self.status()
|
||||||
|
if status["state"] == "stop":
|
||||||
|
play(files)
|
||||||
|
else:
|
||||||
self.moveid(status["songid"], 0)
|
self.moveid(status["songid"], 0)
|
||||||
current_song_file=self.playlistinfo()[0]["file"]
|
current_song_file=self.playlistinfo()[0]["file"]
|
||||||
try:
|
try:
|
||||||
@ -861,10 +863,21 @@ class Client(MPDClient):
|
|||||||
self.add(f)
|
self.add(f)
|
||||||
else:
|
else:
|
||||||
self.move(0, (len(self.playlistinfo())-1))
|
self.move(0, (len(self.playlistinfo())-1))
|
||||||
|
if mode == "append":
|
||||||
|
append(files)
|
||||||
|
elif mode == "enqueue":
|
||||||
|
enqueue(files)
|
||||||
|
elif mode == "play":
|
||||||
|
play(files)
|
||||||
|
elif mode == "default":
|
||||||
|
if self.settings.get_boolean("force-mode"):
|
||||||
|
play(files)
|
||||||
|
else:
|
||||||
|
enqueue(files)
|
||||||
|
|
||||||
def album_to_playlist(self, album, artist, year, append, force=False):
|
def album_to_playlist(self, album, artist, year, mode="default"):
|
||||||
songs=self.find("album", album, "date", year, self.settings.get_artist_type(), artist)
|
songs=self.find("album", album, "date", year, self.settings.get_artist_type(), artist)
|
||||||
self.files_to_playlist([song['file'] for song in songs], append, force)
|
self.files_to_playlist([song['file'] for song in songs], mode)
|
||||||
|
|
||||||
def comp_list(self, *args): # simulates listing behavior of python-mpd2 1.0
|
def comp_list(self, *args): # simulates listing behavior of python-mpd2 1.0
|
||||||
native_list=self.list(*args)
|
native_list=self.list(*args)
|
||||||
@ -1009,14 +1022,20 @@ class SearchWindow(Gtk.Box):
|
|||||||
# label
|
# label
|
||||||
self.label=Gtk.Label()
|
self.label=Gtk.Label()
|
||||||
self.label.set_xalign(1)
|
self.label.set_xalign(1)
|
||||||
self.label.set_margin_end(6)
|
|
||||||
|
|
||||||
# store
|
# store
|
||||||
# (track, title, artist, album, duration, file)
|
# (track, title, artist, album, duration, file)
|
||||||
self.store=Gtk.ListStore(int, str, str, str, str, str)
|
self.store=Gtk.ListStore(int, str, str, str, str, str)
|
||||||
|
|
||||||
|
# songs window
|
||||||
|
self.songs_window=SongsWindow(self.client, self.store, 5)
|
||||||
|
|
||||||
|
# action bar
|
||||||
|
self.action_bar=self.songs_window.get_actionbar()
|
||||||
|
self.action_bar.set_sensitive(False)
|
||||||
|
|
||||||
# songs view
|
# songs view
|
||||||
self.songs_view=SongsView(self.client, self.store, 5)
|
self.songs_view=self.songs_window.get_treeview()
|
||||||
|
|
||||||
# columns
|
# columns
|
||||||
renderer_text=Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END, ellipsize_set=True)
|
renderer_text=Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END, ellipsize_set=True)
|
||||||
@ -1056,52 +1075,21 @@ class SearchWindow(Gtk.Box):
|
|||||||
self.column_album.set_sort_column_id(3)
|
self.column_album.set_sort_column_id(3)
|
||||||
self.column_time.set_sort_column_id(4)
|
self.column_time.set_sort_column_id(4)
|
||||||
|
|
||||||
# scroll
|
|
||||||
scroll=Gtk.ScrolledWindow()
|
|
||||||
scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
|
||||||
scroll.add(self.songs_view)
|
|
||||||
|
|
||||||
# buttons
|
|
||||||
self.add_button=Gtk.Button(image=Gtk.Image(stock=Gtk.STOCK_ADD), label=_("Add"))
|
|
||||||
self.add_button.set_sensitive(False)
|
|
||||||
self.add_button.set_relief(Gtk.ReliefStyle.NONE)
|
|
||||||
self.play_button=Gtk.Button(image=Gtk.Image(stock=Gtk.STOCK_MEDIA_PLAY), label=_("Play"))
|
|
||||||
self.play_button.set_sensitive(False)
|
|
||||||
self.play_button.set_relief(Gtk.ReliefStyle.NONE)
|
|
||||||
self.open_button=Gtk.Button(image=Gtk.Image(stock=Gtk.STOCK_OPEN), label=_("Open"))
|
|
||||||
self.open_button.set_sensitive(False)
|
|
||||||
self.open_button.set_relief(Gtk.ReliefStyle.NONE)
|
|
||||||
|
|
||||||
# connect
|
# connect
|
||||||
self.search_entry.connect("search-changed", self.on_search_changed)
|
self.search_entry.connect("search-changed", self.on_search_changed)
|
||||||
self.tags.connect("changed", self.on_search_changed)
|
self.tags.connect("changed", self.on_search_changed)
|
||||||
self.add_button.connect("clicked", self.on_add_clicked)
|
|
||||||
self.play_button.connect("clicked", self.on_play_clicked)
|
|
||||||
self.open_button.connect("clicked", self.on_open_clicked)
|
|
||||||
self.client.emitter.connect("reconnected", self.on_reconnected)
|
self.client.emitter.connect("reconnected", self.on_reconnected)
|
||||||
self.client.emitter.connect("disconnected", self.on_disconnected)
|
self.client.emitter.connect("disconnected", self.on_disconnected)
|
||||||
|
|
||||||
# packing
|
# packing
|
||||||
vbox=Gtk.Box(spacing=6)
|
hbox=Gtk.Box(spacing=6)
|
||||||
vbox.set_property("border-width", 6)
|
hbox.set_property("border-width", 6)
|
||||||
vbox.pack_start(self.search_entry, True, True, 0)
|
hbox.pack_start(self.search_entry, True, True, 0)
|
||||||
vbox.pack_end(self.tags, False, False, 0)
|
hbox.pack_end(self.tags, False, False, 0)
|
||||||
frame=FocusFrame()
|
self.action_bar.pack_end(self.label)
|
||||||
frame.set_widget(self.songs_view)
|
|
||||||
frame.add(scroll)
|
|
||||||
ButtonBox=Gtk.ButtonBox(spacing=1)
|
|
||||||
ButtonBox.set_property("border-width", 1)
|
|
||||||
ButtonBox.pack_start(self.add_button, True, True, 0)
|
|
||||||
ButtonBox.pack_start(self.play_button, True, True, 0)
|
|
||||||
ButtonBox.pack_start(self.open_button, True, True, 0)
|
|
||||||
hbox=Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
|
||||||
hbox.pack_start(ButtonBox, 0, False, False)
|
|
||||||
hbox.pack_end(self.label, 0, False, False)
|
|
||||||
self.pack_start(vbox, False, False, 0)
|
|
||||||
self.pack_start(Gtk.Separator.new(orientation=Gtk.Orientation.HORIZONTAL), False, False, 0)
|
|
||||||
self.pack_start(frame, True, True, 0)
|
|
||||||
self.pack_start(Gtk.Separator.new(orientation=Gtk.Orientation.HORIZONTAL), False, False, 0)
|
|
||||||
self.pack_start(hbox, False, False, 0)
|
self.pack_start(hbox, False, False, 0)
|
||||||
|
self.pack_start(Gtk.Separator.new(orientation=Gtk.Orientation.HORIZONTAL), False, False, 0)
|
||||||
|
self.pack_start(self.songs_window, True, True, 0)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.search_entry.grab_focus()
|
self.search_entry.grab_focus()
|
||||||
@ -1138,22 +1126,9 @@ class SearchWindow(Gtk.Box):
|
|||||||
self.store.append([int(song["track"]), song["title"], song["artist"], song["album"], song["human_duration"], song["file"]])
|
self.store.append([int(song["track"]), song["title"], song["artist"], song["album"], song["human_duration"], song["file"]])
|
||||||
self.label.set_text(_("hits: %i") % (self.songs_view.count()))
|
self.label.set_text(_("hits: %i") % (self.songs_view.count()))
|
||||||
if self.songs_view.count() == 0:
|
if self.songs_view.count() == 0:
|
||||||
self.add_button.set_sensitive(False)
|
self.action_bar.set_sensitive(False)
|
||||||
self.play_button.set_sensitive(False)
|
|
||||||
self.open_button.set_sensitive(False)
|
|
||||||
else:
|
else:
|
||||||
self.add_button.set_sensitive(True)
|
self.action_bar.set_sensitive(True)
|
||||||
self.play_button.set_sensitive(True)
|
|
||||||
self.open_button.set_sensitive(True)
|
|
||||||
|
|
||||||
def on_add_clicked(self, *args):
|
|
||||||
self.client.wrapped_call("files_to_playlist", self.songs_view.get_files(), True)
|
|
||||||
|
|
||||||
def on_play_clicked(self, *args):
|
|
||||||
self.client.wrapped_call("files_to_playlist", self.songs_view.get_files(), False, True)
|
|
||||||
|
|
||||||
def on_open_clicked(self, *args):
|
|
||||||
self.client.wrapped_call("files_to_playlist", self.songs_view.get_files(), False)
|
|
||||||
|
|
||||||
class SongsView(Gtk.TreeView):
|
class SongsView(Gtk.TreeView):
|
||||||
def __init__(self, client, store, file_column_id):
|
def __init__(self, client, store, file_column_id):
|
||||||
@ -1177,19 +1152,19 @@ class SongsView(Gtk.TreeView):
|
|||||||
self.key_press_event=self.connect("key-press-event", self.on_key_press_event)
|
self.key_press_event=self.connect("key-press-event", self.on_key_press_event)
|
||||||
|
|
||||||
def on_row_activated(self, widget, path, view_column):
|
def on_row_activated(self, widget, path, view_column):
|
||||||
self.client.wrapped_call("files_to_playlist", [self.store[path][self.file_column_id]], False, True)
|
self.client.wrapped_call("files_to_playlist", [self.store[path][self.file_column_id]], "play")
|
||||||
|
|
||||||
def on_button_press_event(self, widget, event):
|
def on_button_press_event(self, widget, event):
|
||||||
if event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
|
if event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
|
||||||
try:
|
try:
|
||||||
path=widget.get_path_at_pos(int(event.x), int(event.y))[0]
|
path=widget.get_path_at_pos(int(event.x), int(event.y))[0]
|
||||||
self.client.wrapped_call("files_to_playlist", [self.store[path][self.file_column_id]], False)
|
self.client.wrapped_call("files_to_playlist", [self.store[path][self.file_column_id]])
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_PRESS:
|
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_PRESS:
|
||||||
try:
|
try:
|
||||||
path=widget.get_path_at_pos(int(event.x), int(event.y))[0]
|
path=widget.get_path_at_pos(int(event.x), int(event.y))[0]
|
||||||
self.client.wrapped_call("files_to_playlist", [self.store[path][self.file_column_id]], True)
|
self.client.wrapped_call("files_to_playlist", [self.store[path][self.file_column_id]], "append")
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
|
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
|
||||||
@ -1207,11 +1182,11 @@ class SongsView(Gtk.TreeView):
|
|||||||
if event.keyval == 112: # p
|
if event.keyval == 112: # p
|
||||||
treeview, treeiter=self.selection.get_selected()
|
treeview, treeiter=self.selection.get_selected()
|
||||||
if not treeiter == None:
|
if not treeiter == None:
|
||||||
self.client.wrapped_call("files_to_playlist", [self.store.get_value(treeiter, self.file_column_id)], False)
|
self.client.wrapped_call("files_to_playlist", [self.store.get_value(treeiter, self.file_column_id)])
|
||||||
elif event.keyval == 97: # a
|
elif event.keyval == 97: # a
|
||||||
treeview, treeiter=self.selection.get_selected()
|
treeview, treeiter=self.selection.get_selected()
|
||||||
if not treeiter == None:
|
if not treeiter == None:
|
||||||
self.client.wrapped_call("files_to_playlist", [self.store.get_value(treeiter, self.file_column_id)], True)
|
self.client.wrapped_call("files_to_playlist", [self.store.get_value(treeiter, self.file_column_id)], "append")
|
||||||
elif event.keyval == 65383: # menu key
|
elif event.keyval == 65383: # menu key
|
||||||
treeview, treeiter=self.selection.get_selected()
|
treeview, treeiter=self.selection.get_selected()
|
||||||
if not treeiter == None:
|
if not treeiter == None:
|
||||||
@ -1235,10 +1210,81 @@ class SongsView(Gtk.TreeView):
|
|||||||
return_list.append(row[self.file_column_id])
|
return_list.append(row[self.file_column_id])
|
||||||
return return_list
|
return return_list
|
||||||
|
|
||||||
|
class SongsWindow(Gtk.Box):
|
||||||
|
def __init__(self, client, store, file_column_id):
|
||||||
|
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
|
||||||
|
|
||||||
|
# adding vars
|
||||||
|
self.client=client
|
||||||
|
self.store=store
|
||||||
|
|
||||||
|
# treeview
|
||||||
|
self.songs_view=SongsView(client, store, file_column_id)
|
||||||
|
|
||||||
|
# scroll
|
||||||
|
scroll=Gtk.ScrolledWindow()
|
||||||
|
scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||||
|
scroll.add(self.songs_view)
|
||||||
|
|
||||||
|
# buttons
|
||||||
|
self.append_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("list-add", Gtk.IconSize.BUTTON), label=_("Append"))
|
||||||
|
self.append_button.set_tooltip_text(_("Add all titles to playlist"))
|
||||||
|
self.play_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("media-playback-start", Gtk.IconSize.BUTTON), label=_("Play"))
|
||||||
|
self.play_button.set_tooltip_text(_("Directly play all titles"))
|
||||||
|
self.enqueue_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("insert-object", Gtk.IconSize.BUTTON), label=_("Enqueue"))
|
||||||
|
self.enqueue_button.set_tooltip_text(_("Append all titles after the currently playing track and clear the playlist from all other songs"))
|
||||||
|
|
||||||
|
# button box
|
||||||
|
button_box=Gtk.ButtonBox()
|
||||||
|
button_box.set_property("layout-style", Gtk.ButtonBoxStyle.EXPAND)
|
||||||
|
|
||||||
|
# action bar
|
||||||
|
self.action_bar=Gtk.ActionBar()
|
||||||
|
|
||||||
|
# connect
|
||||||
|
self.append_button.connect("clicked", self.on_append_button_clicked)
|
||||||
|
self.play_button.connect("clicked", self.on_play_button_clicked)
|
||||||
|
self.enqueue_button.connect("clicked", self.on_enqueue_button_clicked)
|
||||||
|
|
||||||
|
# packing
|
||||||
|
frame=FocusFrame()
|
||||||
|
frame.set_widget(self.songs_view)
|
||||||
|
frame.add(scroll)
|
||||||
|
self.pack_start(frame, True, True, 0)
|
||||||
|
button_box.pack_start(self.append_button, True, True, 0)
|
||||||
|
button_box.pack_start(self.play_button, True, True, 0)
|
||||||
|
button_box.pack_start(self.enqueue_button, True, True, 0)
|
||||||
|
self.action_bar.pack_start(button_box)
|
||||||
|
self.pack_start(self.action_bar, False, False, 0)
|
||||||
|
|
||||||
|
def get_treeview(self):
|
||||||
|
return self.songs_view
|
||||||
|
|
||||||
|
def get_actionbar(self):
|
||||||
|
return self.action_bar
|
||||||
|
|
||||||
|
def on_append_button_clicked(self, *args):
|
||||||
|
self.client.wrapped_call("files_to_playlist", self.songs_view.get_files(), "append")
|
||||||
|
|
||||||
|
def on_play_button_clicked(self, *args):
|
||||||
|
self.client.wrapped_call("files_to_playlist", self.songs_view.get_files(), "play")
|
||||||
|
|
||||||
|
def on_enqueue_button_clicked(self, *args):
|
||||||
|
self.client.wrapped_call("files_to_playlist", self.songs_view.get_files(), "enqueue")
|
||||||
|
|
||||||
class AlbumDialog(Gtk.Dialog):
|
class AlbumDialog(Gtk.Dialog):
|
||||||
def __init__(self, parent, client, settings, album, artist, year):
|
def __init__(self, parent, client, settings, album, artist, year):
|
||||||
|
use_csd=settings.get_boolean("use-csd")
|
||||||
|
if use_csd:
|
||||||
|
Gtk.Dialog.__init__(self, transient_for=parent, use_header_bar=True)
|
||||||
|
# css
|
||||||
|
style_context=self.get_style_context()
|
||||||
|
provider=Gtk.CssProvider()
|
||||||
|
css=b"""* {-GtkDialog-content-area-border: 0px;}"""
|
||||||
|
provider.load_from_data(css)
|
||||||
|
style_context.add_provider(provider, 800)
|
||||||
|
else:
|
||||||
Gtk.Dialog.__init__(self, transient_for=parent)
|
Gtk.Dialog.__init__(self, transient_for=parent)
|
||||||
self.add_buttons(Gtk.STOCK_ADD, Gtk.ResponseType.ACCEPT, Gtk.STOCK_MEDIA_PLAY, Gtk.ResponseType.YES, Gtk.STOCK_OPEN, Gtk.ResponseType.OK, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
|
|
||||||
|
|
||||||
# metadata
|
# metadata
|
||||||
self.album=album
|
self.album=album
|
||||||
@ -1267,9 +1313,6 @@ class AlbumDialog(Gtk.Dialog):
|
|||||||
# store
|
# store
|
||||||
# (track, title (artist), duration, file)
|
# (track, title (artist), duration, file)
|
||||||
self.store=Gtk.ListStore(int, str, str, str)
|
self.store=Gtk.ListStore(int, str, str, str)
|
||||||
|
|
||||||
# songs view
|
|
||||||
self.songs_view=SongsView(self.client, self.store, 3)
|
|
||||||
for s in songs:
|
for s in songs:
|
||||||
song=ClientHelper.extend_song_for_display(s)
|
song=ClientHelper.extend_song_for_display(s)
|
||||||
if type(song["title"]) == list: # could be impossible
|
if type(song["title"]) == list: # could be impossible
|
||||||
@ -1291,6 +1334,12 @@ class AlbumDialog(Gtk.Dialog):
|
|||||||
title_artist=title_artist.replace("&", "&")
|
title_artist=title_artist.replace("&", "&")
|
||||||
self.store.append([int(song["track"]), title_artist, song["human_duration"], song["file"]])
|
self.store.append([int(song["track"]), title_artist, song["human_duration"], song["file"]])
|
||||||
|
|
||||||
|
# songs window
|
||||||
|
self.songs_window=SongsWindow(self.client, self.store, 3)
|
||||||
|
|
||||||
|
# songs view
|
||||||
|
self.songs_view=self.songs_window.get_treeview()
|
||||||
|
|
||||||
# columns
|
# columns
|
||||||
renderer_text=Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END, ellipsize_set=True)
|
renderer_text=Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END, ellipsize_set=True)
|
||||||
renderer_text_ralign=Gtk.CellRendererText(xalign=1.0)
|
renderer_text_ralign=Gtk.CellRendererText(xalign=1.0)
|
||||||
@ -1311,24 +1360,25 @@ class AlbumDialog(Gtk.Dialog):
|
|||||||
self.column_time.set_property("resizable", False)
|
self.column_time.set_property("resizable", False)
|
||||||
self.songs_view.append_column(self.column_time)
|
self.songs_view.append_column(self.column_time)
|
||||||
|
|
||||||
# scroll
|
# close button
|
||||||
scroll=Gtk.ScrolledWindow()
|
close_button=Gtk.ToggleButton(image=Gtk.Image.new_from_icon_name("window-close", Gtk.IconSize.BUTTON), label=_("Close"))
|
||||||
scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
|
||||||
scroll.add(self.songs_view)
|
# action bar
|
||||||
|
action_bar=self.songs_window.get_actionbar()
|
||||||
|
action_bar.pack_end(close_button)
|
||||||
|
|
||||||
|
# connect
|
||||||
|
close_button.connect("clicked", self.on_close_button_clicked)
|
||||||
|
|
||||||
# packing
|
# packing
|
||||||
self.vbox.pack_start(scroll, True, True, 0) # vbox default widget of dialogs
|
self.vbox.pack_start(self.songs_window, True, True, 0) # vbox default widget of dialogs
|
||||||
self.vbox.set_spacing(3)
|
|
||||||
self.show_all()
|
self.show_all()
|
||||||
|
|
||||||
def open(self):
|
def open(self):
|
||||||
response=self.run()
|
response=self.run()
|
||||||
if response == Gtk.ResponseType.OK:
|
|
||||||
self.client.wrapped_call("album_to_playlist", self.album, self.artist, self.year, False)
|
def on_close_button_clicked(self, *args):
|
||||||
elif response == Gtk.ResponseType.ACCEPT:
|
self.destroy()
|
||||||
self.client.wrapped_call("album_to_playlist", self.album, self.artist, self.year, True)
|
|
||||||
elif response == Gtk.ResponseType.YES:
|
|
||||||
self.client.wrapped_call("album_to_playlist", self.album, self.artist, self.year, False, True)
|
|
||||||
|
|
||||||
class GenreSelect(Gtk.ComboBoxText):
|
class GenreSelect(Gtk.ComboBoxText):
|
||||||
def __init__(self, client, settings):
|
def __init__(self, client, settings):
|
||||||
@ -1649,11 +1699,11 @@ class AlbumIconView(Gtk.IconView):
|
|||||||
self.scroll_to_path(path, True, 0, 0)
|
self.scroll_to_path(path, True, 0, 0)
|
||||||
break
|
break
|
||||||
|
|
||||||
def path_to_playlist(self, path, add, force=False):
|
def path_to_playlist(self, path, mode="default"):
|
||||||
album=self.store[path][4]
|
album=self.store[path][4]
|
||||||
year=self.store[path][5]
|
year=self.store[path][5]
|
||||||
artist=self.store[path][6]
|
artist=self.store[path][6]
|
||||||
self.client.wrapped_call("album_to_playlist", album, artist, year, add, force)
|
self.client.wrapped_call("album_to_playlist", album, artist, year, mode)
|
||||||
|
|
||||||
def open_album_dialog(self, path):
|
def open_album_dialog(self, path):
|
||||||
if self.client.connected():
|
if self.client.connected():
|
||||||
@ -1674,9 +1724,9 @@ class AlbumIconView(Gtk.IconView):
|
|||||||
if not path == None:
|
if not path == None:
|
||||||
if self.button_event == (event.button, path):
|
if self.button_event == (event.button, path):
|
||||||
if event.button == 1 and event.type == Gdk.EventType.BUTTON_RELEASE:
|
if event.button == 1 and event.type == Gdk.EventType.BUTTON_RELEASE:
|
||||||
self.path_to_playlist(path, False)
|
self.path_to_playlist(path)
|
||||||
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_RELEASE:
|
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_RELEASE:
|
||||||
self.path_to_playlist(path, True)
|
self.path_to_playlist(path, "append")
|
||||||
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_RELEASE:
|
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_RELEASE:
|
||||||
self.open_album_dialog(path)
|
self.open_album_dialog(path)
|
||||||
|
|
||||||
@ -1685,11 +1735,11 @@ class AlbumIconView(Gtk.IconView):
|
|||||||
if event.keyval == 112: # p
|
if event.keyval == 112: # p
|
||||||
paths=self.get_selected_items()
|
paths=self.get_selected_items()
|
||||||
if not len(paths) == 0:
|
if not len(paths) == 0:
|
||||||
self.path_to_playlist(paths[0], False)
|
self.path_to_playlist(paths[0])
|
||||||
elif event.keyval == 97: # a
|
elif event.keyval == 97: # a
|
||||||
paths=self.get_selected_items()
|
paths=self.get_selected_items()
|
||||||
if not len(paths) == 0:
|
if not len(paths) == 0:
|
||||||
self.path_to_playlist(paths[0], True)
|
self.path_to_playlist(paths[0], "append")
|
||||||
elif event.keyval == 65383: # menu key
|
elif event.keyval == 65383: # menu key
|
||||||
paths=self.get_selected_items()
|
paths=self.get_selected_items()
|
||||||
if not len(paths) == 0:
|
if not len(paths) == 0:
|
||||||
@ -1701,7 +1751,7 @@ class AlbumIconView(Gtk.IconView):
|
|||||||
selected_album=self.store.get_value(treeiter, 4)
|
selected_album=self.store.get_value(treeiter, 4)
|
||||||
selected_album_year=self.store.get_value(treeiter, 5)
|
selected_album_year=self.store.get_value(treeiter, 5)
|
||||||
selected_artist=self.store.get_value(treeiter, 6)
|
selected_artist=self.store.get_value(treeiter, 6)
|
||||||
self.client.wrapped_call("album_to_playlist", selected_album, selected_artist, selected_album_year, False, True)
|
self.client.wrapped_call("album_to_playlist", selected_album, selected_artist, selected_album_year, "play")
|
||||||
|
|
||||||
class AlbumView(FocusFrame):
|
class AlbumView(FocusFrame):
|
||||||
def __init__(self, client, settings, genre_select, window):
|
def __init__(self, client, settings, genre_select, window):
|
||||||
@ -2126,9 +2176,9 @@ class MainCover(Gtk.Frame):
|
|||||||
except:
|
except:
|
||||||
album_year=""
|
album_year=""
|
||||||
if event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
|
if event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
|
||||||
self.client.wrapped_call("album_to_playlist", album, artist, album_year, False)
|
self.client.wrapped_call("album_to_playlist", album, artist, album_year)
|
||||||
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_PRESS:
|
elif event.button == 2 and event.type == Gdk.EventType.BUTTON_PRESS:
|
||||||
self.client.wrapped_call("album_to_playlist", album, artist, album_year, True)
|
self.client.wrapped_call("album_to_playlist", album, artist, album_year, "append")
|
||||||
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
|
elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
|
||||||
album_dialog=AlbumDialog(self.window, self.client, self.settings, album, artist, album_year)
|
album_dialog=AlbumDialog(self.window, self.client, self.settings, album, artist, album_year)
|
||||||
album_dialog.open()
|
album_dialog.open()
|
||||||
|
192
po/de.po
192
po/de.po
@ -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: 2020-08-09 22:22+0200\n"
|
"POT-Creation-Date: 2020-08-16 17:01+0200\n"
|
||||||
"PO-Revision-Date: 2020-08-09 22:23+0200\n"
|
"PO-Revision-Date: 2020-08-16 17:07+0200\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
@ -38,82 +38,102 @@ msgstr "Unbekannter Interpret"
|
|||||||
msgid "Unknown Album"
|
msgid "Unknown Album"
|
||||||
msgstr "Unbekanntes Album"
|
msgstr "Unbekanntes Album"
|
||||||
|
|
||||||
#: mpdevil.py:1026 mpdevil.py:1291 mpdevil.py:2145 mpdevil.py:2823
|
#: mpdevil.py:1044 mpdevil.py:1347 mpdevil.py:2225 mpdevil.py:2910
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "Nr."
|
msgstr "Nr."
|
||||||
|
|
||||||
#: mpdevil.py:1031 mpdevil.py:1296 mpdevil.py:2151 mpdevil.py:2823
|
#: mpdevil.py:1049 mpdevil.py:1352 mpdevil.py:2231 mpdevil.py:2910
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Titel"
|
msgstr "Titel"
|
||||||
|
|
||||||
#: mpdevil.py:1037 mpdevil.py:1435 mpdevil.py:2154 mpdevil.py:2823
|
#: mpdevil.py:1055 mpdevil.py:1502 mpdevil.py:2234 mpdevil.py:2910
|
||||||
msgid "Artist"
|
msgid "Artist"
|
||||||
msgstr "Interpret"
|
msgstr "Interpret"
|
||||||
|
|
||||||
#: mpdevil.py:1043 mpdevil.py:2157 mpdevil.py:2823
|
#: mpdevil.py:1061 mpdevil.py:2237 mpdevil.py:2910
|
||||||
msgid "Album"
|
msgid "Album"
|
||||||
msgstr "Album"
|
msgstr "Album"
|
||||||
|
|
||||||
#: mpdevil.py:1049 mpdevil.py:1302 mpdevil.py:2160 mpdevil.py:2823
|
#: mpdevil.py:1067 mpdevil.py:1358 mpdevil.py:2240 mpdevil.py:2910
|
||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Länge"
|
msgstr "Länge"
|
||||||
|
|
||||||
#: mpdevil.py:1066
|
#: mpdevil.py:1127
|
||||||
msgid "Add"
|
|
||||||
msgstr "Hinzufügen"
|
|
||||||
|
|
||||||
#: mpdevil.py:1069
|
|
||||||
msgid "Play"
|
|
||||||
msgstr "Wiedergabe"
|
|
||||||
|
|
||||||
#: mpdevil.py:1072
|
|
||||||
msgid "Open"
|
|
||||||
msgstr "Öffnen"
|
|
||||||
|
|
||||||
#: mpdevil.py:1132
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "hits: %i"
|
msgid "hits: %i"
|
||||||
msgstr "Treffer: %i"
|
msgstr "Treffer: %i"
|
||||||
|
|
||||||
#: mpdevil.py:1345
|
#: mpdevil.py:1230
|
||||||
|
msgid "Append"
|
||||||
|
msgstr "Anhängen"
|
||||||
|
|
||||||
|
#: mpdevil.py:1231
|
||||||
|
msgid "Add all titles to playlist"
|
||||||
|
msgstr "Alle Titel der Wiedergabeliste anhängen"
|
||||||
|
|
||||||
|
#: mpdevil.py:1232
|
||||||
|
msgid "Play"
|
||||||
|
msgstr "Abspielen"
|
||||||
|
|
||||||
|
#: mpdevil.py:1233
|
||||||
|
msgid "Directly play all titles"
|
||||||
|
msgstr "Alle Titel sofort abspielen"
|
||||||
|
|
||||||
|
#: mpdevil.py:1234
|
||||||
|
msgid "Enqueue"
|
||||||
|
msgstr "Einreihen"
|
||||||
|
|
||||||
|
#: mpdevil.py:1235
|
||||||
|
msgid ""
|
||||||
|
"Append all titles after the currently playing track and clear the playlist "
|
||||||
|
"from all other songs"
|
||||||
|
msgstr ""
|
||||||
|
"Alle Titel hinter dem aktuellen Stück einreihen und die Wiedergabeliste "
|
||||||
|
"sonst leeren"
|
||||||
|
|
||||||
|
#: mpdevil.py:1364
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Schließen"
|
||||||
|
|
||||||
|
#: mpdevil.py:1403
|
||||||
msgid "all genres"
|
msgid "all genres"
|
||||||
msgstr "Alle Genres"
|
msgstr "Alle Genres"
|
||||||
|
|
||||||
#: mpdevil.py:1433
|
#: mpdevil.py:1500
|
||||||
msgid "Album Artist"
|
msgid "Album Artist"
|
||||||
msgstr "Albuminterpret"
|
msgstr "Albuminterpret"
|
||||||
|
|
||||||
#: mpdevil.py:1436
|
#: mpdevil.py:1503
|
||||||
msgid "all artists"
|
msgid "all artists"
|
||||||
msgstr "Alle Interpreten"
|
msgstr "Alle Interpreten"
|
||||||
|
|
||||||
#: mpdevil.py:1582
|
#: mpdevil.py:1665
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
|
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
|
||||||
msgstr "%(total_tracks)i Titel auf %(discs)i CDs (%(total_length)s)"
|
msgstr "%(total_tracks)i Titel auf %(discs)i CDs (%(total_length)s)"
|
||||||
|
|
||||||
#: mpdevil.py:1584 mpdevil.py:2249
|
#: mpdevil.py:1667 mpdevil.py:2330
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(total_tracks)i titles (%(total_length)s)"
|
msgid "%(total_tracks)i titles (%(total_length)s)"
|
||||||
msgstr "%(total_tracks)i Titel (%(total_length)s)"
|
msgstr "%(total_tracks)i Titel (%(total_length)s)"
|
||||||
|
|
||||||
#: mpdevil.py:1759
|
#: mpdevil.py:1848
|
||||||
msgid "Back to current album"
|
msgid "Back to current album"
|
||||||
msgstr "Zurück zu aktuellem Album"
|
msgstr "Zurück zu aktuellem Album"
|
||||||
|
|
||||||
#: mpdevil.py:1761
|
#: mpdevil.py:1850
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Suche"
|
msgstr "Suche"
|
||||||
|
|
||||||
#: mpdevil.py:1938
|
#: mpdevil.py:2018
|
||||||
msgid "searching..."
|
msgid "searching..."
|
||||||
msgstr "suche..."
|
msgstr "suche..."
|
||||||
|
|
||||||
#: mpdevil.py:1942
|
#: mpdevil.py:2022
|
||||||
msgid "lyrics not found"
|
msgid "lyrics not found"
|
||||||
msgstr "Liedtext nicht gefunden"
|
msgstr "Liedtext nicht gefunden"
|
||||||
|
|
||||||
#: mpdevil.py:2010
|
#: mpdevil.py:2090
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)i bit, %(channels)i "
|
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)i bit, %(channels)i "
|
||||||
@ -122,111 +142,111 @@ msgstr ""
|
|||||||
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)i bit, %(channels)i "
|
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)i bit, %(channels)i "
|
||||||
"Kanäle, %(file_type)s"
|
"Kanäle, %(file_type)s"
|
||||||
|
|
||||||
#: mpdevil.py:2124
|
#: mpdevil.py:2204
|
||||||
msgid "Scroll to current song"
|
msgid "Scroll to current song"
|
||||||
msgstr "Gehe zu aktuellem Lied"
|
msgstr "Gehe zu aktuellem Lied"
|
||||||
|
|
||||||
#: mpdevil.py:2148 mpdevil.py:2823
|
#: mpdevil.py:2228 mpdevil.py:2910
|
||||||
msgid "Disc"
|
msgid "Disc"
|
||||||
msgstr "CD"
|
msgstr "CD"
|
||||||
|
|
||||||
#: mpdevil.py:2163 mpdevil.py:2823
|
#: mpdevil.py:2243 mpdevil.py:2910
|
||||||
msgid "Year"
|
msgid "Year"
|
||||||
msgstr "Jahr"
|
msgstr "Jahr"
|
||||||
|
|
||||||
#: mpdevil.py:2166 mpdevil.py:2823
|
#: mpdevil.py:2246 mpdevil.py:2910
|
||||||
msgid "Genre"
|
msgid "Genre"
|
||||||
msgstr "Genre"
|
msgstr "Genre"
|
||||||
|
|
||||||
#: mpdevil.py:2363
|
#: mpdevil.py:2448
|
||||||
msgid "Show lyrics"
|
msgid "Show lyrics"
|
||||||
msgstr "Zeige Liedtext"
|
msgstr "Zeige Liedtext"
|
||||||
|
|
||||||
#: mpdevil.py:2462
|
#: mpdevil.py:2547
|
||||||
msgid "Main cover size:"
|
msgid "Main cover size:"
|
||||||
msgstr "Größe des Haupt-Covers:"
|
msgstr "Größe des Haupt-Covers:"
|
||||||
|
|
||||||
#: mpdevil.py:2463
|
#: mpdevil.py:2548
|
||||||
msgid "Album view cover size:"
|
msgid "Album view cover size:"
|
||||||
msgstr "Covergröße in Albumliste:"
|
msgstr "Covergröße in Albumliste:"
|
||||||
|
|
||||||
#: mpdevil.py:2464
|
#: mpdevil.py:2549
|
||||||
msgid "Button icon size:"
|
msgid "Button icon size:"
|
||||||
msgstr "Symbolgröße der Knöpfe:"
|
msgstr "Symbolgröße der Knöpfe:"
|
||||||
|
|
||||||
#: mpdevil.py:2474
|
#: mpdevil.py:2559
|
||||||
msgid "Sort albums by:"
|
msgid "Sort albums by:"
|
||||||
msgstr "Sortiere Alben nach:"
|
msgstr "Sortiere Alben nach:"
|
||||||
|
|
||||||
#: mpdevil.py:2474
|
#: mpdevil.py:2559
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
#: mpdevil.py:2474
|
#: mpdevil.py:2559
|
||||||
msgid "year"
|
msgid "year"
|
||||||
msgstr "Jahr"
|
msgstr "Jahr"
|
||||||
|
|
||||||
#: mpdevil.py:2475
|
#: mpdevil.py:2560
|
||||||
msgid "Position of playlist:"
|
msgid "Position of playlist:"
|
||||||
msgstr "Wiedergabelistenposition:"
|
msgstr "Wiedergabelistenposition:"
|
||||||
|
|
||||||
#: mpdevil.py:2475
|
#: mpdevil.py:2560
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "unten"
|
msgstr "unten"
|
||||||
|
|
||||||
#: mpdevil.py:2475
|
#: mpdevil.py:2560
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "rechts"
|
msgstr "rechts"
|
||||||
|
|
||||||
#: mpdevil.py:2492
|
#: mpdevil.py:2577
|
||||||
msgid "Use Client-side decoration"
|
msgid "Use Client-side decoration"
|
||||||
msgstr "Benutze \"Client-side decoration\""
|
msgstr "Benutze \"Client-side decoration\""
|
||||||
|
|
||||||
#: mpdevil.py:2493
|
#: mpdevil.py:2578
|
||||||
msgid "Show stop button"
|
msgid "Show stop button"
|
||||||
msgstr "Zeige Stopp-Knopf"
|
msgstr "Zeige Stopp-Knopf"
|
||||||
|
|
||||||
#: mpdevil.py:2494
|
#: mpdevil.py:2579
|
||||||
msgid "Show lyrics button"
|
msgid "Show lyrics button"
|
||||||
msgstr "Zeige Liedtext-Knopf"
|
msgstr "Zeige Liedtext-Knopf"
|
||||||
|
|
||||||
#: mpdevil.py:2495
|
#: mpdevil.py:2580
|
||||||
msgid "Show initials in artist view"
|
msgid "Show initials in artist view"
|
||||||
msgstr "Zeige Anfangsbuchstaben in Interpretenliste"
|
msgstr "Zeige Anfangsbuchstaben in Interpretenliste"
|
||||||
|
|
||||||
#: mpdevil.py:2496
|
#: mpdevil.py:2581
|
||||||
msgid "Show tooltips in album view"
|
msgid "Show tooltips in album view"
|
||||||
msgstr "Zeige Tooltips in Albumliste"
|
msgstr "Zeige Tooltips in Albumliste"
|
||||||
|
|
||||||
#: mpdevil.py:2497
|
#: mpdevil.py:2582
|
||||||
msgid "Use 'Album Artist' tag"
|
msgid "Use 'Album Artist' tag"
|
||||||
msgstr "Benutze \"Album Artist\" Tag"
|
msgstr "Benutze \"Album Artist\" Tag"
|
||||||
|
|
||||||
#: mpdevil.py:2498
|
#: mpdevil.py:2583
|
||||||
msgid "Send notification on title change"
|
msgid "Send notification on title change"
|
||||||
msgstr "Sende Benachrichtigung bei Titelwechsel"
|
msgstr "Sende Benachrichtigung bei Titelwechsel"
|
||||||
|
|
||||||
#: mpdevil.py:2499
|
#: mpdevil.py:2584
|
||||||
msgid "Stop playback on quit"
|
msgid "Stop playback on quit"
|
||||||
msgstr "Wiedergabe beim Beenden stoppen"
|
msgstr "Wiedergabe beim Beenden stoppen"
|
||||||
|
|
||||||
#: mpdevil.py:2500
|
#: mpdevil.py:2585
|
||||||
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.py:2511
|
#: mpdevil.py:2596
|
||||||
msgid "<b>View</b>"
|
msgid "<b>View</b>"
|
||||||
msgstr "<b>Ansicht</b>"
|
msgstr "<b>Ansicht</b>"
|
||||||
|
|
||||||
#: mpdevil.py:2514
|
#: mpdevil.py:2599
|
||||||
msgid "<b>Behavior</b>"
|
msgid "<b>Behavior</b>"
|
||||||
msgstr "<b>Verhalten</b>"
|
msgstr "<b>Verhalten</b>"
|
||||||
|
|
||||||
#: mpdevil.py:2545
|
#: mpdevil.py:2630
|
||||||
msgid "(restart required)"
|
msgid "(restart required)"
|
||||||
msgstr "(Neustart erforderlich)"
|
msgstr "(Neustart erforderlich)"
|
||||||
|
|
||||||
#: mpdevil.py:2626
|
#: mpdevil.py:2711
|
||||||
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 "
|
||||||
@ -236,112 +256,118 @@ 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.py:2628
|
#: mpdevil.py:2713
|
||||||
msgid "Profile:"
|
msgid "Profile:"
|
||||||
msgstr "Profil:"
|
msgstr "Profil:"
|
||||||
|
|
||||||
#: mpdevil.py:2630
|
#: mpdevil.py:2715
|
||||||
msgid "Name:"
|
msgid "Name:"
|
||||||
msgstr "Name:"
|
msgstr "Name:"
|
||||||
|
|
||||||
#: mpdevil.py:2632
|
#: mpdevil.py:2717
|
||||||
msgid "Host:"
|
msgid "Host:"
|
||||||
msgstr "Host:"
|
msgstr "Host:"
|
||||||
|
|
||||||
#: mpdevil.py:2634
|
#: mpdevil.py:2719
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Passwort:"
|
msgstr "Passwort:"
|
||||||
|
|
||||||
#: mpdevil.py:2636
|
#: mpdevil.py:2721
|
||||||
msgid "Music lib:"
|
msgid "Music lib:"
|
||||||
msgstr "Musikverzeichnis:"
|
msgstr "Musikverzeichnis:"
|
||||||
|
|
||||||
#: mpdevil.py:2638
|
#: mpdevil.py:2723
|
||||||
msgid "Cover regex:"
|
msgid "Cover regex:"
|
||||||
msgstr "Cover-Regex:"
|
msgstr "Cover-Regex:"
|
||||||
|
|
||||||
#: mpdevil.py:2761
|
#: mpdevil.py:2848
|
||||||
msgid "Choose directory"
|
msgid "Choose directory"
|
||||||
msgstr "Verzeichnis Wählen"
|
msgstr "Verzeichnis Wählen"
|
||||||
|
|
||||||
#: mpdevil.py:2795
|
#: mpdevil.py:2882
|
||||||
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.py:2937 mpdevil.py:3447
|
#: mpdevil.py:3026 mpdevil.py:3034 mpdevil.py:3569
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Einstellungen"
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
#: mpdevil.py:2951
|
#: mpdevil.py:3045
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Allgemein"
|
msgstr "Allgemein"
|
||||||
|
|
||||||
#: mpdevil.py:2952
|
#: mpdevil.py:3046
|
||||||
msgid "Profiles"
|
msgid "Profiles"
|
||||||
msgstr "Profile"
|
msgstr "Profile"
|
||||||
|
|
||||||
#: mpdevil.py:2953
|
#: mpdevil.py:3047
|
||||||
msgid "Playlist"
|
msgid "Playlist"
|
||||||
msgstr "Wiedergabeliste"
|
msgstr "Wiedergabeliste"
|
||||||
|
|
||||||
#: mpdevil.py:3212
|
#: mpdevil.py:3310
|
||||||
msgid "Random mode"
|
msgid "Random mode"
|
||||||
msgstr "Zufallsmodus"
|
msgstr "Zufallsmodus"
|
||||||
|
|
||||||
#: mpdevil.py:3214
|
#: mpdevil.py:3312
|
||||||
msgid "Repeat mode"
|
msgid "Repeat mode"
|
||||||
msgstr "Dauerschleife"
|
msgstr "Dauerschleife"
|
||||||
|
|
||||||
#: mpdevil.py:3216
|
#: mpdevil.py:3314
|
||||||
msgid "Single mode"
|
msgid "Single mode"
|
||||||
msgstr "Einzelstückmodus"
|
msgstr "Einzelstückmodus"
|
||||||
|
|
||||||
#: mpdevil.py:3218
|
#: mpdevil.py:3316
|
||||||
msgid "Consume mode"
|
msgid "Consume mode"
|
||||||
msgstr "Wiedergabeliste verbrauchen"
|
msgstr "Wiedergabeliste verbrauchen"
|
||||||
|
|
||||||
#: mpdevil.py:3295
|
#: mpdevil.py:3408 mpdevil.py:3416
|
||||||
msgid "Stats"
|
msgid "Stats"
|
||||||
msgstr "Statistik"
|
msgstr "Statistik"
|
||||||
|
|
||||||
#: mpdevil.py:3348
|
#: mpdevil.py:3470
|
||||||
msgid "A small MPD client written in python"
|
msgid "A small MPD client written in python"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3440
|
#: mpdevil.py:3562
|
||||||
msgid "Select profile"
|
msgid "Select profile"
|
||||||
msgstr "Profil auswählen"
|
msgstr "Profil auswählen"
|
||||||
|
|
||||||
#: mpdevil.py:3448
|
#: mpdevil.py:3570
|
||||||
msgid "Help"
|
msgid "Help"
|
||||||
msgstr "Hilfe"
|
msgstr "Hilfe"
|
||||||
|
|
||||||
#: mpdevil.py:3449
|
#: mpdevil.py:3571
|
||||||
msgid "About"
|
msgid "About"
|
||||||
msgstr "Über"
|
msgstr "Über"
|
||||||
|
|
||||||
#: mpdevil.py:3450
|
#: mpdevil.py:3572
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Beenden"
|
msgstr "Beenden"
|
||||||
|
|
||||||
#: mpdevil.py:3453
|
#: mpdevil.py:3575
|
||||||
msgid "Save window layout"
|
msgid "Save window layout"
|
||||||
msgstr "Fensterlayout speichern"
|
msgstr "Fensterlayout speichern"
|
||||||
|
|
||||||
#: mpdevil.py:3454
|
#: mpdevil.py:3576
|
||||||
msgid "Update database"
|
msgid "Update database"
|
||||||
msgstr "Datenbank aktualisieren"
|
msgstr "Datenbank aktualisieren"
|
||||||
|
|
||||||
#: mpdevil.py:3455
|
#: mpdevil.py:3577
|
||||||
msgid "Server stats"
|
msgid "Server stats"
|
||||||
msgstr "Serverstatistik"
|
msgstr "Serverstatistik"
|
||||||
|
|
||||||
#: mpdevil.py:3461
|
#: mpdevil.py:3583
|
||||||
msgid "Menu"
|
msgid "Menu"
|
||||||
msgstr "Menü"
|
msgstr "Menü"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Hinzufügen"
|
||||||
|
|
||||||
|
#~ msgid "Open"
|
||||||
|
#~ msgstr "Öffnen"
|
||||||
|
|
||||||
#~ msgid "Show additional information"
|
#~ msgid "Show additional information"
|
||||||
#~ msgstr "Zeige weitere Informationen"
|
#~ msgstr "Zeige weitere Informationen"
|
||||||
|
|
||||||
|
182
po/mpdevil.pot
182
po/mpdevil.pot
@ -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: 2020-08-09 22:22+0200\n"
|
"POT-Creation-Date: 2020-08-16 17:01+0200\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"
|
||||||
@ -37,299 +37,317 @@ msgstr ""
|
|||||||
msgid "Unknown Album"
|
msgid "Unknown Album"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1026 mpdevil.py:1291 mpdevil.py:2145 mpdevil.py:2823
|
#: mpdevil.py:1044 mpdevil.py:1347 mpdevil.py:2225 mpdevil.py:2910
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1031 mpdevil.py:1296 mpdevil.py:2151 mpdevil.py:2823
|
#: mpdevil.py:1049 mpdevil.py:1352 mpdevil.py:2231 mpdevil.py:2910
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1037 mpdevil.py:1435 mpdevil.py:2154 mpdevil.py:2823
|
#: mpdevil.py:1055 mpdevil.py:1502 mpdevil.py:2234 mpdevil.py:2910
|
||||||
msgid "Artist"
|
msgid "Artist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1043 mpdevil.py:2157 mpdevil.py:2823
|
#: mpdevil.py:1061 mpdevil.py:2237 mpdevil.py:2910
|
||||||
msgid "Album"
|
msgid "Album"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1049 mpdevil.py:1302 mpdevil.py:2160 mpdevil.py:2823
|
#: mpdevil.py:1067 mpdevil.py:1358 mpdevil.py:2240 mpdevil.py:2910
|
||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1066
|
#: mpdevil.py:1127
|
||||||
msgid "Add"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mpdevil.py:1069
|
|
||||||
msgid "Play"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mpdevil.py:1072
|
|
||||||
msgid "Open"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: mpdevil.py:1132
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "hits: %i"
|
msgid "hits: %i"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1345
|
#: mpdevil.py:1230
|
||||||
|
msgid "Append"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mpdevil.py:1231
|
||||||
|
msgid "Add all titles to playlist"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mpdevil.py:1232
|
||||||
|
msgid "Play"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mpdevil.py:1233
|
||||||
|
msgid "Directly play all titles"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mpdevil.py:1234
|
||||||
|
msgid "Enqueue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mpdevil.py:1235
|
||||||
|
msgid ""
|
||||||
|
"Append all titles after the currently playing track and clear the playlist "
|
||||||
|
"from all other songs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mpdevil.py:1364
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: mpdevil.py:1403
|
||||||
msgid "all genres"
|
msgid "all genres"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1433
|
#: mpdevil.py:1500
|
||||||
msgid "Album Artist"
|
msgid "Album Artist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1436
|
#: mpdevil.py:1503
|
||||||
msgid "all artists"
|
msgid "all artists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1582
|
#: mpdevil.py:1665
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
|
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1584 mpdevil.py:2249
|
#: mpdevil.py:1667 mpdevil.py:2330
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(total_tracks)i titles (%(total_length)s)"
|
msgid "%(total_tracks)i titles (%(total_length)s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1759
|
#: mpdevil.py:1848
|
||||||
msgid "Back to current album"
|
msgid "Back to current album"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1761
|
#: mpdevil.py:1850
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1938
|
#: mpdevil.py:2018
|
||||||
msgid "searching..."
|
msgid "searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:1942
|
#: mpdevil.py:2022
|
||||||
msgid "lyrics not found"
|
msgid "lyrics not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2010
|
#: mpdevil.py:2090
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)i bit, %(channels)i "
|
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)i bit, %(channels)i "
|
||||||
"channels, %(file_type)s"
|
"channels, %(file_type)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2124
|
#: mpdevil.py:2204
|
||||||
msgid "Scroll to current song"
|
msgid "Scroll to current song"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2148 mpdevil.py:2823
|
#: mpdevil.py:2228 mpdevil.py:2910
|
||||||
msgid "Disc"
|
msgid "Disc"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2163 mpdevil.py:2823
|
#: mpdevil.py:2243 mpdevil.py:2910
|
||||||
msgid "Year"
|
msgid "Year"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2166 mpdevil.py:2823
|
#: mpdevil.py:2246 mpdevil.py:2910
|
||||||
msgid "Genre"
|
msgid "Genre"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2363
|
#: mpdevil.py:2448
|
||||||
msgid "Show lyrics"
|
msgid "Show lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2462
|
#: mpdevil.py:2547
|
||||||
msgid "Main cover size:"
|
msgid "Main cover size:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2463
|
#: mpdevil.py:2548
|
||||||
msgid "Album view cover size:"
|
msgid "Album view cover size:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2464
|
#: mpdevil.py:2549
|
||||||
msgid "Button icon size:"
|
msgid "Button icon size:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2474
|
#: mpdevil.py:2559
|
||||||
msgid "Sort albums by:"
|
msgid "Sort albums by:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2474
|
#: mpdevil.py:2559
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2474
|
#: mpdevil.py:2559
|
||||||
msgid "year"
|
msgid "year"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2475
|
#: mpdevil.py:2560
|
||||||
msgid "Position of playlist:"
|
msgid "Position of playlist:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2475
|
#: mpdevil.py:2560
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2475
|
#: mpdevil.py:2560
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2492
|
#: mpdevil.py:2577
|
||||||
msgid "Use Client-side decoration"
|
msgid "Use Client-side decoration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2493
|
#: mpdevil.py:2578
|
||||||
msgid "Show stop button"
|
msgid "Show stop button"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2494
|
#: mpdevil.py:2579
|
||||||
msgid "Show lyrics button"
|
msgid "Show lyrics button"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2495
|
#: mpdevil.py:2580
|
||||||
msgid "Show initials in artist view"
|
msgid "Show initials in artist view"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2496
|
#: mpdevil.py:2581
|
||||||
msgid "Show tooltips in album view"
|
msgid "Show tooltips in album view"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2497
|
#: mpdevil.py:2582
|
||||||
msgid "Use 'Album Artist' tag"
|
msgid "Use 'Album Artist' tag"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2498
|
#: mpdevil.py:2583
|
||||||
msgid "Send notification on title change"
|
msgid "Send notification on title change"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2499
|
#: mpdevil.py:2584
|
||||||
msgid "Stop playback on quit"
|
msgid "Stop playback on quit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2500
|
#: mpdevil.py:2585
|
||||||
msgid "Play selected albums and titles immediately"
|
msgid "Play selected albums and titles immediately"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2511
|
#: mpdevil.py:2596
|
||||||
msgid "<b>View</b>"
|
msgid "<b>View</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2514
|
#: mpdevil.py:2599
|
||||||
msgid "<b>Behavior</b>"
|
msgid "<b>Behavior</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2545
|
#: mpdevil.py:2630
|
||||||
msgid "(restart required)"
|
msgid "(restart required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2626
|
#: mpdevil.py:2711
|
||||||
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.py:2628
|
#: mpdevil.py:2713
|
||||||
msgid "Profile:"
|
msgid "Profile:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2630
|
#: mpdevil.py:2715
|
||||||
msgid "Name:"
|
msgid "Name:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2632
|
#: mpdevil.py:2717
|
||||||
msgid "Host:"
|
msgid "Host:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2634
|
#: mpdevil.py:2719
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2636
|
#: mpdevil.py:2721
|
||||||
msgid "Music lib:"
|
msgid "Music lib:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2638
|
#: mpdevil.py:2723
|
||||||
msgid "Cover regex:"
|
msgid "Cover regex:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2761
|
#: mpdevil.py:2848
|
||||||
msgid "Choose directory"
|
msgid "Choose directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2795
|
#: mpdevil.py:2882
|
||||||
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.py:2937 mpdevil.py:3447
|
#: mpdevil.py:3026 mpdevil.py:3034 mpdevil.py:3569
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2951
|
#: mpdevil.py:3045
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2952
|
#: mpdevil.py:3046
|
||||||
msgid "Profiles"
|
msgid "Profiles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:2953
|
#: mpdevil.py:3047
|
||||||
msgid "Playlist"
|
msgid "Playlist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3212
|
#: mpdevil.py:3310
|
||||||
msgid "Random mode"
|
msgid "Random mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3214
|
#: mpdevil.py:3312
|
||||||
msgid "Repeat mode"
|
msgid "Repeat mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3216
|
#: mpdevil.py:3314
|
||||||
msgid "Single mode"
|
msgid "Single mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3218
|
#: mpdevil.py:3316
|
||||||
msgid "Consume mode"
|
msgid "Consume mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3295
|
#: mpdevil.py:3408 mpdevil.py:3416
|
||||||
msgid "Stats"
|
msgid "Stats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3348
|
#: mpdevil.py:3470
|
||||||
msgid "A small MPD client written in python"
|
msgid "A small MPD client written in python"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3440
|
#: mpdevil.py:3562
|
||||||
msgid "Select profile"
|
msgid "Select profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3448
|
#: mpdevil.py:3570
|
||||||
msgid "Help"
|
msgid "Help"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3449
|
#: mpdevil.py:3571
|
||||||
msgid "About"
|
msgid "About"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3450
|
#: mpdevil.py:3572
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3453
|
#: mpdevil.py:3575
|
||||||
msgid "Save window layout"
|
msgid "Save window layout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3454
|
#: mpdevil.py:3576
|
||||||
msgid "Update database"
|
msgid "Update database"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3455
|
#: mpdevil.py:3577
|
||||||
msgid "Server stats"
|
msgid "Server stats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mpdevil.py:3461
|
#: mpdevil.py:3583
|
||||||
msgid "Menu"
|
msgid "Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user