mirror of
https://github.com/SoongNoonien/mpdevil.git
synced 2023-08-10 21:12:44 +03:00
fixed gui stall caused by auto reconnect
This commit is contained in:
parent
291507ca1c
commit
053dbbe08f
120
bin/mpdevil
120
bin/mpdevil
@ -610,6 +610,7 @@ class MpdEventEmitter(GObject.Object):
|
||||
'update': (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
'disconnected': (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
'reconnected': (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
'connection_error': (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
'current_song_changed': (GObject.SignalFlags.RUN_FIRST, None, ()),
|
||||
'state': (GObject.SignalFlags.RUN_FIRST, None, (str,)),
|
||||
'elapsed_changed': (GObject.SignalFlags.RUN_FIRST, None, (float,float,)),
|
||||
@ -636,6 +637,9 @@ class MpdEventEmitter(GObject.Object):
|
||||
def do_reconnected(self):
|
||||
pass
|
||||
|
||||
def do_connection_error(self):
|
||||
print("Connection error!")
|
||||
|
||||
def do_current_file_changed(self):
|
||||
pass
|
||||
|
||||
@ -666,6 +670,7 @@ class Client(MPDClient):
|
||||
self.emitter=MpdEventEmitter()
|
||||
self._last_status={}
|
||||
self._refresh_interval=self._settings.get_int("refresh-interval")
|
||||
self._main_timeout_id=None
|
||||
|
||||
#connect
|
||||
self._settings.connect("changed::active-profile", self._on_active_profile_changed)
|
||||
@ -678,9 +683,27 @@ class Client(MPDClient):
|
||||
return func(*args)
|
||||
|
||||
def start(self):
|
||||
if self._disconnected_loop():
|
||||
self.emitter.emit("disconnected")
|
||||
self._disconnected_timeout_id=GLib.timeout_add(1000, self._disconnected_loop)
|
||||
self.emitter.emit("disconnected") # bring player in defined state
|
||||
active=self._settings.get_int("active-profile")
|
||||
try:
|
||||
self.connect(self._settings.get_value("hosts")[active], self._settings.get_value("ports")[active])
|
||||
if self._settings.get_value("passwords")[active] != "":
|
||||
self.password(self._settings.get_value("passwords")[active])
|
||||
except:
|
||||
self.emitter.emit("connection_error")
|
||||
return False
|
||||
# connect successful
|
||||
self._main_timeout_id=GLib.timeout_add(self._refresh_interval, self._main_loop)
|
||||
self.emitter.emit("reconnected")
|
||||
return True
|
||||
|
||||
def reconnect(self):
|
||||
if self._main_timeout_id is not None:
|
||||
GLib.source_remove(self._main_timeout_id)
|
||||
self._main_timeout_id=None
|
||||
self._last_status={}
|
||||
self.disconnect()
|
||||
self.start()
|
||||
|
||||
def connected(self):
|
||||
try:
|
||||
@ -785,27 +808,13 @@ class Client(MPDClient):
|
||||
self.disconnect()
|
||||
self._last_status={}
|
||||
self.emitter.emit("disconnected")
|
||||
if self._disconnected_loop():
|
||||
self._disconnected_timeout_id=GLib.timeout_add(1000, self._disconnected_loop)
|
||||
self.emitter.emit("connection_error")
|
||||
self._main_timeout_id=None
|
||||
return False
|
||||
return True
|
||||
|
||||
def _disconnected_loop(self, *args):
|
||||
active=self._settings.get_int("active-profile")
|
||||
try:
|
||||
self.connect(self._settings.get_value("hosts")[active], self._settings.get_value("ports")[active])
|
||||
if self._settings.get_value("passwords")[active] != "":
|
||||
self.password(self._settings.get_value("passwords")[active])
|
||||
except:
|
||||
print("connect failed")
|
||||
return True
|
||||
# connect successful
|
||||
self._main_timeout_id=GLib.timeout_add(self._refresh_interval, self._main_loop)
|
||||
self.emitter.emit("reconnected")
|
||||
return False
|
||||
|
||||
def _on_active_profile_changed(self, *args):
|
||||
self.disconnect()
|
||||
self.reconnect()
|
||||
|
||||
########################
|
||||
# gio settings wrapper #
|
||||
@ -2488,10 +2497,11 @@ class GeneralSettings(Gtk.Box):
|
||||
self._settings.set_boolean(key, widget.get_active())
|
||||
|
||||
class ProfileSettings(Gtk.Grid):
|
||||
def __init__(self, parent, settings):
|
||||
def __init__(self, parent, client, settings):
|
||||
super().__init__(row_spacing=6, column_spacing=12, border_width=18)
|
||||
|
||||
# adding vars
|
||||
self._client=client
|
||||
self._settings=settings
|
||||
self._gui_modification=False # indicates whether the settings were changed from the settings dialog
|
||||
|
||||
@ -2504,6 +2514,8 @@ class ProfileSettings(Gtk.Grid):
|
||||
add_delete_buttons.pack_start(add_button, True, True, 0)
|
||||
add_delete_buttons.pack_start(delete_button, True, True, 0)
|
||||
|
||||
connect_button=Gtk.Button(label=_("Connect"), image=Gtk.Image.new_from_icon_name("system-run", Gtk.IconSize.BUTTON))
|
||||
|
||||
self._profile_entry=Gtk.Entry(hexpand=True)
|
||||
self._host_entry=Gtk.Entry(hexpand=True)
|
||||
self._port_entry=Gtk.SpinButton.new_with_range(0, 65535, 1)
|
||||
@ -2529,6 +2541,7 @@ class ProfileSettings(Gtk.Grid):
|
||||
# connect
|
||||
add_button.connect("clicked", self._on_add_button_clicked)
|
||||
delete_button.connect("clicked", self._on_delete_button_clicked)
|
||||
connect_button.connect("clicked", self._on_connect_button_clicked)
|
||||
self._path_select_button.connect("clicked", self._on_path_select_button_clicked, parent)
|
||||
self._profiles_combo.connect("changed", self._on_profiles_changed)
|
||||
self.entry_changed_handlers=[]
|
||||
@ -2564,6 +2577,8 @@ class ProfileSettings(Gtk.Grid):
|
||||
self.attach_next_to(self._password_entry, password_label, Gtk.PositionType.RIGHT, 2, 1)
|
||||
self.attach_next_to(path_box, path_label, Gtk.PositionType.RIGHT, 2, 1)
|
||||
self.attach_next_to(self._regex_entry, regex_label, Gtk.PositionType.RIGHT, 2, 1)
|
||||
connect_button.set_margin_top(12)
|
||||
self.attach_next_to(connect_button, self._regex_entry, Gtk.PositionType.BOTTOM, 2, 1)
|
||||
|
||||
def _block_entry_changed_handlers(self, *args):
|
||||
for obj, handler in self.entry_changed_handlers:
|
||||
@ -2620,6 +2635,10 @@ class ProfileSettings(Gtk.Grid):
|
||||
new_pos=max(pos-1,0)
|
||||
self._profiles_combo.set_active(new_pos)
|
||||
|
||||
def _on_connect_button_clicked(self, *args):
|
||||
self._settings.set_int("active-profile", self._profiles_combo.get_active())
|
||||
self._client.reconnect()
|
||||
|
||||
def _on_profile_entry_changed(self, *args):
|
||||
self._gui_modification=True
|
||||
pos=self._profiles_combo.get_active()
|
||||
@ -2818,7 +2837,7 @@ class PlaylistSettings(Gtk.Box):
|
||||
self._store.handler_unblock(self._row_deleted)
|
||||
|
||||
class SettingsDialog(Gtk.Dialog):
|
||||
def __init__(self, parent, settings):
|
||||
def __init__(self, parent, client, settings):
|
||||
use_csd=settings.get_boolean("use-csd")
|
||||
if use_csd:
|
||||
super().__init__(title=_("Settings"), transient_for=parent, use_header_bar=True)
|
||||
@ -2835,7 +2854,7 @@ class SettingsDialog(Gtk.Dialog):
|
||||
|
||||
# widgets
|
||||
general=GeneralSettings(settings)
|
||||
profiles=ProfileSettings(parent, settings)
|
||||
profiles=ProfileSettings(parent, client, settings)
|
||||
playlist=PlaylistSettings(settings)
|
||||
|
||||
# packing
|
||||
@ -3017,6 +3036,7 @@ class SeekBar(Gtk.Box):
|
||||
|
||||
def _disable(self, *args):
|
||||
self.set_sensitive(False)
|
||||
self.scale.set_fill_level(0)
|
||||
self.scale.set_range(0, 0)
|
||||
self._elapsed.set_text("00:00")
|
||||
self._rest.set_text("-00:00")
|
||||
@ -3298,6 +3318,52 @@ class ProfileSelect(Gtk.ComboBoxText):
|
||||
active=self.get_active()
|
||||
self._settings.set_int("active-profile", active)
|
||||
|
||||
class ConnectionNotify(Gtk.Revealer):
|
||||
def __init__(self, client, settings):
|
||||
super().__init__(valign=Gtk.Align.START, halign=Gtk.Align.CENTER)
|
||||
|
||||
# adding vars
|
||||
self._client=client
|
||||
self._settings=settings
|
||||
|
||||
# widgets
|
||||
self._label=Gtk.Label(wrap=True)
|
||||
close_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("window-close-symbolic", Gtk.IconSize.BUTTON))
|
||||
close_button.set_relief(Gtk.ReliefStyle.NONE)
|
||||
connect_button=Gtk.Button(label=_("Connect"))
|
||||
|
||||
# connect
|
||||
close_button.connect("clicked", self._on_close_button_clicked)
|
||||
connect_button.connect("clicked", self._on_connect_button_clicked)
|
||||
self._client.emitter.connect("connection_error", self._on_connection_error)
|
||||
self._client.emitter.connect("reconnected", self._on_reconnected)
|
||||
|
||||
# packing
|
||||
box=Gtk.Box(spacing=12)
|
||||
box.get_style_context().add_class("app-notification")
|
||||
box.pack_start(self._label, False, True, 6)
|
||||
box.pack_end(close_button, False, True, 0)
|
||||
box.pack_end(connect_button, False, True, 0)
|
||||
self.add(box)
|
||||
|
||||
def _on_connection_error(self, *args):
|
||||
active=self._settings.get_int("active-profile")
|
||||
profile=self._settings.get_value("profiles")[active]
|
||||
host=self._settings.get_value("hosts")[active]
|
||||
port=self._settings.get_value("ports")[active]
|
||||
string=_('Connection to "%(profile)s" (%(host)s:%(port)s) failed') % {"profile": profile, "host": host, "port": port}
|
||||
self._label.set_text(string)
|
||||
self.set_reveal_child(True)
|
||||
|
||||
def _on_reconnected(self, *args):
|
||||
self.set_reveal_child(False)
|
||||
|
||||
def _on_close_button_clicked(self, *args):
|
||||
self.set_reveal_child(False)
|
||||
|
||||
def _on_connect_button_clicked(self, *args):
|
||||
self._client.reconnect()
|
||||
|
||||
class MainWindow(Gtk.ApplicationWindow):
|
||||
def __init__(self, app, client, settings):
|
||||
super().__init__(title=("mpdevil"), icon_name="mpdevil", application=app)
|
||||
@ -3350,6 +3416,7 @@ class MainWindow(Gtk.ApplicationWindow):
|
||||
self._playback_control=PlaybackControl(self._client, self._settings)
|
||||
self._seek_bar=SeekBar(self._client)
|
||||
playback_options=PlaybackOptions(self._client, self._settings)
|
||||
connection_notify=ConnectionNotify(self._client, self._settings)
|
||||
|
||||
# menu
|
||||
subsection=Gio.Menu()
|
||||
@ -3397,6 +3464,9 @@ class MainWindow(Gtk.ApplicationWindow):
|
||||
vbox=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
vbox.pack_start(self._paned2, True, True, 0)
|
||||
vbox.pack_start(action_bar, False, False, 0)
|
||||
overlay=Gtk.Overlay()
|
||||
overlay.add(vbox)
|
||||
overlay.add_overlay(connection_notify)
|
||||
|
||||
if self._use_csd:
|
||||
self._header_bar=Gtk.HeaderBar()
|
||||
@ -3412,7 +3482,7 @@ class MainWindow(Gtk.ApplicationWindow):
|
||||
action_bar.pack_start(self._profile_select)
|
||||
action_bar.pack_start(menu_button)
|
||||
|
||||
self.add(vbox)
|
||||
self.add(overlay)
|
||||
|
||||
self.show_all()
|
||||
if self._settings.get_boolean("maximize"):
|
||||
@ -3511,7 +3581,7 @@ class MainWindow(Gtk.ApplicationWindow):
|
||||
self._settings.set_int("paned2", self._paned2.get_position())
|
||||
|
||||
def _on_settings(self, action, param):
|
||||
settings=SettingsDialog(self, self._settings)
|
||||
settings=SettingsDialog(self, self._client, self._settings)
|
||||
settings.run()
|
||||
settings.destroy()
|
||||
|
||||
|
171
po/de.po
171
po/de.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-09-10 16:59+0200\n"
|
||||
"PO-Revision-Date: 2020-09-10 17:00+0200\n"
|
||||
"POT-Creation-Date: 2020-09-10 21:43+0200\n"
|
||||
"PO-Revision-Date: 2020-09-10 21:45+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
@ -38,52 +38,52 @@ msgstr "Unbekannter Interpret"
|
||||
msgid "Unknown Album"
|
||||
msgstr "Unbekanntes Album"
|
||||
|
||||
#: mpdevil:898 mpdevil:1198 mpdevil:2056 mpdevil:2708
|
||||
#: mpdevil:907 mpdevil:1207 mpdevil:2065 mpdevil:2727
|
||||
msgid "No"
|
||||
msgstr "Nr."
|
||||
|
||||
#: mpdevil:903 mpdevil:1203 mpdevil:2058 mpdevil:2708
|
||||
#: mpdevil:912 mpdevil:1212 mpdevil:2067 mpdevil:2727
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: mpdevil:909 mpdevil:1380 mpdevil:2059 mpdevil:2708
|
||||
#: mpdevil:918 mpdevil:1389 mpdevil:2068 mpdevil:2727
|
||||
msgid "Artist"
|
||||
msgstr "Interpret"
|
||||
|
||||
#: mpdevil:915 mpdevil:2060 mpdevil:2708
|
||||
#: mpdevil:924 mpdevil:2069 mpdevil:2727
|
||||
msgid "Album"
|
||||
msgstr "Album"
|
||||
|
||||
#: mpdevil:921 mpdevil:1209 mpdevil:2061 mpdevil:2708
|
||||
#: mpdevil:930 mpdevil:1218 mpdevil:2070 mpdevil:2727
|
||||
msgid "Length"
|
||||
msgstr "Länge"
|
||||
|
||||
#: mpdevil:981
|
||||
#: mpdevil:990
|
||||
#, python-format
|
||||
msgid "%i hits"
|
||||
msgstr "%i Treffer"
|
||||
|
||||
#: mpdevil:1082
|
||||
#: mpdevil:1091
|
||||
msgid "Append"
|
||||
msgstr "Anhängen"
|
||||
|
||||
#: mpdevil:1083
|
||||
#: mpdevil:1092
|
||||
msgid "Add all titles to playlist"
|
||||
msgstr "Alle Titel der Wiedergabeliste anhängen"
|
||||
|
||||
#: mpdevil:1084
|
||||
#: mpdevil:1093
|
||||
msgid "Play"
|
||||
msgstr "Abspielen"
|
||||
|
||||
#: mpdevil:1085
|
||||
#: mpdevil:1094
|
||||
msgid "Directly play all titles"
|
||||
msgstr "Alle Titel sofort abspielen"
|
||||
|
||||
#: mpdevil:1086
|
||||
#: mpdevil:1095
|
||||
msgid "Enqueue"
|
||||
msgstr "Einreihen"
|
||||
|
||||
#: mpdevil:1087
|
||||
#: mpdevil:1096
|
||||
msgid ""
|
||||
"Append all titles after the currently playing track and clear the playlist "
|
||||
"from all other songs"
|
||||
@ -91,49 +91,49 @@ msgstr ""
|
||||
"Alle Titel hinter dem aktuellen Stück einreihen und die weitere "
|
||||
"Wiedergabeliste leeren"
|
||||
|
||||
#: mpdevil:1215
|
||||
#: mpdevil:1224
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: mpdevil:1268
|
||||
#: mpdevil:1277
|
||||
msgid "all genres"
|
||||
msgstr "Alle Genres"
|
||||
|
||||
#: mpdevil:1378
|
||||
#: mpdevil:1387
|
||||
msgid "Album Artist"
|
||||
msgstr "Albuminterpret"
|
||||
|
||||
#: mpdevil:1381
|
||||
#: mpdevil:1390
|
||||
msgid "all artists"
|
||||
msgstr "Alle Interpreten"
|
||||
|
||||
#: mpdevil:1554
|
||||
#: mpdevil:1563
|
||||
#, python-format
|
||||
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
|
||||
msgstr "%(total_tracks)i Titel auf %(discs)i CDs (%(total_length)s)"
|
||||
|
||||
#: mpdevil:1556 mpdevil:2150
|
||||
#: mpdevil:1565 mpdevil:2159
|
||||
#, python-format
|
||||
msgid "%(total_tracks)i titles (%(total_length)s)"
|
||||
msgstr "%(total_tracks)i Titel (%(total_length)s)"
|
||||
|
||||
#: mpdevil:1672
|
||||
#: mpdevil:1681
|
||||
msgid "Back to current album"
|
||||
msgstr "Zurück zu aktuellem Album"
|
||||
|
||||
#: mpdevil:1673
|
||||
#: mpdevil:1682
|
||||
msgid "Search"
|
||||
msgstr "Suche"
|
||||
|
||||
#: mpdevil:1827
|
||||
#: mpdevil:1836
|
||||
msgid "searching..."
|
||||
msgstr "suche..."
|
||||
|
||||
#: mpdevil:1831
|
||||
#: mpdevil:1840
|
||||
msgid "lyrics not found"
|
||||
msgstr "Liedtext nicht gefunden"
|
||||
|
||||
#: mpdevil:1901
|
||||
#: mpdevil:1910
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
|
||||
@ -142,119 +142,123 @@ msgstr ""
|
||||
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
|
||||
"Kanäle, %(file_type)s"
|
||||
|
||||
#: mpdevil:2031
|
||||
#: mpdevil:2040
|
||||
msgid "Scroll to current song"
|
||||
msgstr "Gehe zu aktuellem Lied"
|
||||
|
||||
#: mpdevil:2034
|
||||
#: mpdevil:2043
|
||||
msgid "Clear playlist"
|
||||
msgstr "Wiedergabeliste leeren"
|
||||
|
||||
#: mpdevil:2057 mpdevil:2708
|
||||
#: mpdevil:2066 mpdevil:2727
|
||||
msgid "Disc"
|
||||
msgstr "CD"
|
||||
|
||||
#: mpdevil:2062 mpdevil:2708
|
||||
#: mpdevil:2071 mpdevil:2727
|
||||
msgid "Year"
|
||||
msgstr "Jahr"
|
||||
|
||||
#: mpdevil:2063 mpdevil:2708
|
||||
#: mpdevil:2072 mpdevil:2727
|
||||
msgid "Genre"
|
||||
msgstr "Genre"
|
||||
|
||||
#: mpdevil:2280
|
||||
#: mpdevil:2289
|
||||
msgid "Show lyrics"
|
||||
msgstr "Zeige Liedtext"
|
||||
|
||||
#: mpdevil:2372
|
||||
#: mpdevil:2381
|
||||
msgid "Main cover size:"
|
||||
msgstr "Größe des Haupt-Covers:"
|
||||
|
||||
#: mpdevil:2373
|
||||
#: mpdevil:2382
|
||||
msgid "Album view cover size:"
|
||||
msgstr "Covergröße in Albumliste:"
|
||||
|
||||
#: mpdevil:2374
|
||||
#: mpdevil:2383
|
||||
msgid "Action bar icon size:"
|
||||
msgstr "Symbolgröße Aktionsleiste:"
|
||||
|
||||
#: mpdevil:2375
|
||||
#: mpdevil:2384
|
||||
msgid "Secondary icon size:"
|
||||
msgstr "Sekundäre Symbolgröße:"
|
||||
|
||||
#: mpdevil:2384
|
||||
#: mpdevil:2393
|
||||
msgid "Sort albums by:"
|
||||
msgstr "Sortiere Alben nach:"
|
||||
|
||||
#: mpdevil:2384
|
||||
#: mpdevil:2393
|
||||
msgid "name"
|
||||
msgstr "Name"
|
||||
|
||||
#: mpdevil:2384
|
||||
#: mpdevil:2393
|
||||
msgid "year"
|
||||
msgstr "Jahr"
|
||||
|
||||
#: mpdevil:2385
|
||||
#: mpdevil:2394
|
||||
msgid "Position of playlist:"
|
||||
msgstr "Wiedergabelistenposition:"
|
||||
|
||||
#: mpdevil:2385
|
||||
#: mpdevil:2394
|
||||
msgid "bottom"
|
||||
msgstr "unten"
|
||||
|
||||
#: mpdevil:2385
|
||||
#: mpdevil:2394
|
||||
msgid "right"
|
||||
msgstr "rechts"
|
||||
|
||||
#: mpdevil:2399
|
||||
#: mpdevil:2408
|
||||
msgid "Use Client-side decoration"
|
||||
msgstr "Benutze \"Client-side decoration\""
|
||||
|
||||
#: mpdevil:2400
|
||||
#: mpdevil:2409
|
||||
msgid "Show stop button"
|
||||
msgstr "Zeige Stopp-Knopf"
|
||||
|
||||
#: mpdevil:2401
|
||||
#: mpdevil:2410
|
||||
msgid "Show lyrics button"
|
||||
msgstr "Zeige Liedtext-Knopf"
|
||||
|
||||
#: mpdevil:2402
|
||||
#: mpdevil:2411
|
||||
msgid "Show initials in artist view"
|
||||
msgstr "Zeige Anfangsbuchstaben in Interpretenliste"
|
||||
|
||||
#: mpdevil:2403
|
||||
#: mpdevil:2412
|
||||
msgid "Show tooltips in album view"
|
||||
msgstr "Zeige Tooltips in Albumliste"
|
||||
|
||||
#: mpdevil:2404
|
||||
#: mpdevil:2413
|
||||
msgid "Use 'Album Artist' tag"
|
||||
msgstr "Benutze \"Album Artist\" Tag"
|
||||
|
||||
#: mpdevil:2405
|
||||
#: mpdevil:2414
|
||||
msgid "Send notification on title change"
|
||||
msgstr "Sende Benachrichtigung bei Titelwechsel"
|
||||
|
||||
#: mpdevil:2406
|
||||
#: mpdevil:2415
|
||||
msgid "Stop playback on quit"
|
||||
msgstr "Wiedergabe beim Beenden stoppen"
|
||||
|
||||
#: mpdevil:2407
|
||||
#: mpdevil:2416
|
||||
msgid "Play selected albums and titles immediately"
|
||||
msgstr "Ausgewählte Alben und Titel sofort abspielen"
|
||||
|
||||
#: mpdevil:2417
|
||||
#: mpdevil:2426
|
||||
msgid "<b>View</b>"
|
||||
msgstr "<b>Ansicht</b>"
|
||||
|
||||
#: mpdevil:2418
|
||||
#: mpdevil:2427
|
||||
msgid "<b>Behavior</b>"
|
||||
msgstr "<b>Verhalten</b>"
|
||||
|
||||
#: mpdevil:2446
|
||||
#: mpdevil:2455
|
||||
msgid "(restart required)"
|
||||
msgstr "(Neustart erforderlich)"
|
||||
|
||||
#: mpdevil:2520
|
||||
#: mpdevil:2517 mpdevil:3333
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#: mpdevil:2532
|
||||
msgid ""
|
||||
"The first image in the same directory as the song file matching this regex "
|
||||
"will be displayed. %AlbumArtist% and %Album% will be replaced by the "
|
||||
@ -264,113 +268,118 @@ msgstr ""
|
||||
"regulären Ausdruck entspricht, wird angezeigt. %AlbumArtist% und %Album% "
|
||||
"werden durch die entsprechenden Tags des Liedes ersetzt."
|
||||
|
||||
#: mpdevil:2522
|
||||
#: mpdevil:2534
|
||||
msgid "Profile:"
|
||||
msgstr "Profil:"
|
||||
|
||||
#: mpdevil:2523
|
||||
#: mpdevil:2535
|
||||
msgid "Name:"
|
||||
msgstr "Name:"
|
||||
|
||||
#: mpdevil:2524
|
||||
#: mpdevil:2536
|
||||
msgid "Host:"
|
||||
msgstr "Host:"
|
||||
|
||||
#: mpdevil:2525
|
||||
#: mpdevil:2537
|
||||
msgid "Password:"
|
||||
msgstr "Passwort:"
|
||||
|
||||
#: mpdevil:2526
|
||||
#: mpdevil:2538
|
||||
msgid "Music lib:"
|
||||
msgstr "Musikverzeichnis:"
|
||||
|
||||
#: mpdevil:2527
|
||||
#: mpdevil:2539
|
||||
msgid "Cover regex:"
|
||||
msgstr "Cover-Regex:"
|
||||
|
||||
#: mpdevil:2651
|
||||
#: mpdevil:2670
|
||||
msgid "Choose directory"
|
||||
msgstr "Verzeichnis Wählen"
|
||||
|
||||
#: mpdevil:2684
|
||||
#: mpdevil:2703
|
||||
msgid "Choose the order of information to appear in the playlist:"
|
||||
msgstr ""
|
||||
"Lege die Reihenfolge fest, in der Informationen in der Wiedergabeliste "
|
||||
"angezeigt werden sollen:"
|
||||
|
||||
#: mpdevil:2824 mpdevil:2832 mpdevil:3356
|
||||
#: mpdevil:2843 mpdevil:2851 mpdevil:3423
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: mpdevil:2843
|
||||
#: mpdevil:2862
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: mpdevil:2844
|
||||
#: mpdevil:2863
|
||||
msgid "Profiles"
|
||||
msgstr "Profile"
|
||||
|
||||
#: mpdevil:2845
|
||||
#: mpdevil:2864
|
||||
msgid "Playlist"
|
||||
msgstr "Wiedergabeliste"
|
||||
|
||||
#: mpdevil:3100
|
||||
#: mpdevil:3120
|
||||
msgid "Random mode"
|
||||
msgstr "Zufallsmodus"
|
||||
|
||||
#: mpdevil:3101
|
||||
#: mpdevil:3121
|
||||
msgid "Repeat mode"
|
||||
msgstr "Dauerschleife"
|
||||
|
||||
#: mpdevil:3102
|
||||
#: mpdevil:3122
|
||||
msgid "Single mode"
|
||||
msgstr "Einzelstückmodus"
|
||||
|
||||
#: mpdevil:3103
|
||||
#: mpdevil:3123
|
||||
msgid "Consume mode"
|
||||
msgstr "Wiedergabeliste verbrauchen"
|
||||
|
||||
#: mpdevil:3204 mpdevil:3212
|
||||
#: mpdevil:3224 mpdevil:3232
|
||||
msgid "Stats"
|
||||
msgstr "Statistik"
|
||||
|
||||
#: mpdevil:3261
|
||||
#: mpdevil:3281
|
||||
msgid "A small MPD client written in python"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3273
|
||||
#: mpdevil:3293
|
||||
msgid "Select profile"
|
||||
msgstr "Profil auswählen"
|
||||
|
||||
#: mpdevil:3357
|
||||
#: mpdevil:3354
|
||||
#, python-format
|
||||
msgid "Connection to \"%(profile)s\" (%(host)s:%(port)s) failed"
|
||||
msgstr "Verbindung zu \"%(profile)s\" (%(host)s:%(port)s) fehlgeschlagen"
|
||||
|
||||
#: mpdevil:3424
|
||||
msgid "Help"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#: mpdevil:3358
|
||||
#: mpdevil:3425
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: mpdevil:3359
|
||||
#: mpdevil:3426
|
||||
msgid "Quit"
|
||||
msgstr "Beenden"
|
||||
|
||||
#: mpdevil:3362
|
||||
#: mpdevil:3429
|
||||
msgid "Save window layout"
|
||||
msgstr "Fensterlayout speichern"
|
||||
|
||||
#: mpdevil:3363
|
||||
#: mpdevil:3430
|
||||
msgid "Update database"
|
||||
msgstr "Datenbank aktualisieren"
|
||||
|
||||
#: mpdevil:3364
|
||||
#: mpdevil:3431
|
||||
msgid "Server stats"
|
||||
msgstr "Serverstatistik"
|
||||
|
||||
#: mpdevil:3367
|
||||
#: mpdevil:3434
|
||||
msgid "Menu"
|
||||
msgstr "Menü"
|
||||
|
||||
#: mpdevil:3457 mpdevil:3459
|
||||
#: mpdevil:3527 mpdevil:3529
|
||||
msgid "not connected"
|
||||
msgstr "nicht verbunden"
|
||||
|
||||
|
169
po/mpdevil.pot
169
po/mpdevil.pot
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-09-10 16:59+0200\n"
|
||||
"POT-Creation-Date: 2020-09-10 21:43+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -37,329 +37,338 @@ msgstr ""
|
||||
msgid "Unknown Album"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:898 mpdevil:1198 mpdevil:2056 mpdevil:2708
|
||||
#: mpdevil:907 mpdevil:1207 mpdevil:2065 mpdevil:2727
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:903 mpdevil:1203 mpdevil:2058 mpdevil:2708
|
||||
#: mpdevil:912 mpdevil:1212 mpdevil:2067 mpdevil:2727
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:909 mpdevil:1380 mpdevil:2059 mpdevil:2708
|
||||
#: mpdevil:918 mpdevil:1389 mpdevil:2068 mpdevil:2727
|
||||
msgid "Artist"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:915 mpdevil:2060 mpdevil:2708
|
||||
#: mpdevil:924 mpdevil:2069 mpdevil:2727
|
||||
msgid "Album"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:921 mpdevil:1209 mpdevil:2061 mpdevil:2708
|
||||
#: mpdevil:930 mpdevil:1218 mpdevil:2070 mpdevil:2727
|
||||
msgid "Length"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:981
|
||||
#: mpdevil:990
|
||||
#, python-format
|
||||
msgid "%i hits"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1082
|
||||
#: mpdevil:1091
|
||||
msgid "Append"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1083
|
||||
#: mpdevil:1092
|
||||
msgid "Add all titles to playlist"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1084
|
||||
#: mpdevil:1093
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1085
|
||||
#: mpdevil:1094
|
||||
msgid "Directly play all titles"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1086
|
||||
#: mpdevil:1095
|
||||
msgid "Enqueue"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1087
|
||||
#: mpdevil:1096
|
||||
msgid ""
|
||||
"Append all titles after the currently playing track and clear the playlist "
|
||||
"from all other songs"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1215
|
||||
#: mpdevil:1224
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1268
|
||||
#: mpdevil:1277
|
||||
msgid "all genres"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1378
|
||||
#: mpdevil:1387
|
||||
msgid "Album Artist"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1381
|
||||
#: mpdevil:1390
|
||||
msgid "all artists"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1554
|
||||
#: mpdevil:1563
|
||||
#, python-format
|
||||
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1556 mpdevil:2150
|
||||
#: mpdevil:1565 mpdevil:2159
|
||||
#, python-format
|
||||
msgid "%(total_tracks)i titles (%(total_length)s)"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1672
|
||||
#: mpdevil:1681
|
||||
msgid "Back to current album"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1673
|
||||
#: mpdevil:1682
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1827
|
||||
#: mpdevil:1836
|
||||
msgid "searching..."
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1831
|
||||
#: mpdevil:1840
|
||||
msgid "lyrics not found"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:1901
|
||||
#: mpdevil:1910
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
|
||||
"channels, %(file_type)s"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2031
|
||||
#: mpdevil:2040
|
||||
msgid "Scroll to current song"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2034
|
||||
#: mpdevil:2043
|
||||
msgid "Clear playlist"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2057 mpdevil:2708
|
||||
#: mpdevil:2066 mpdevil:2727
|
||||
msgid "Disc"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2062 mpdevil:2708
|
||||
#: mpdevil:2071 mpdevil:2727
|
||||
msgid "Year"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2063 mpdevil:2708
|
||||
#: mpdevil:2072 mpdevil:2727
|
||||
msgid "Genre"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2280
|
||||
#: mpdevil:2289
|
||||
msgid "Show lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2372
|
||||
#: mpdevil:2381
|
||||
msgid "Main cover size:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2373
|
||||
#: mpdevil:2382
|
||||
msgid "Album view cover size:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2374
|
||||
#: mpdevil:2383
|
||||
msgid "Action bar icon size:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2375
|
||||
#: mpdevil:2384
|
||||
msgid "Secondary icon size:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2384
|
||||
#: mpdevil:2393
|
||||
msgid "Sort albums by:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2384
|
||||
#: mpdevil:2393
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2384
|
||||
#: mpdevil:2393
|
||||
msgid "year"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2385
|
||||
#: mpdevil:2394
|
||||
msgid "Position of playlist:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2385
|
||||
#: mpdevil:2394
|
||||
msgid "bottom"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2385
|
||||
#: mpdevil:2394
|
||||
msgid "right"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2399
|
||||
#: mpdevil:2408
|
||||
msgid "Use Client-side decoration"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2400
|
||||
#: mpdevil:2409
|
||||
msgid "Show stop button"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2401
|
||||
#: mpdevil:2410
|
||||
msgid "Show lyrics button"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2402
|
||||
#: mpdevil:2411
|
||||
msgid "Show initials in artist view"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2403
|
||||
#: mpdevil:2412
|
||||
msgid "Show tooltips in album view"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2404
|
||||
#: mpdevil:2413
|
||||
msgid "Use 'Album Artist' tag"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2405
|
||||
#: mpdevil:2414
|
||||
msgid "Send notification on title change"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2406
|
||||
#: mpdevil:2415
|
||||
msgid "Stop playback on quit"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2407
|
||||
#: mpdevil:2416
|
||||
msgid "Play selected albums and titles immediately"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2417
|
||||
#: mpdevil:2426
|
||||
msgid "<b>View</b>"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2418
|
||||
#: mpdevil:2427
|
||||
msgid "<b>Behavior</b>"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2446
|
||||
#: mpdevil:2455
|
||||
msgid "(restart required)"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2520
|
||||
#: mpdevil:2517 mpdevil:3333
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2532
|
||||
msgid ""
|
||||
"The first image in the same directory as the song file matching this regex "
|
||||
"will be displayed. %AlbumArtist% and %Album% will be replaced by the "
|
||||
"corresponding tags of the song."
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2522
|
||||
#: mpdevil:2534
|
||||
msgid "Profile:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2523
|
||||
#: mpdevil:2535
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2524
|
||||
#: mpdevil:2536
|
||||
msgid "Host:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2525
|
||||
#: mpdevil:2537
|
||||
msgid "Password:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2526
|
||||
#: mpdevil:2538
|
||||
msgid "Music lib:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2527
|
||||
#: mpdevil:2539
|
||||
msgid "Cover regex:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2651
|
||||
#: mpdevil:2670
|
||||
msgid "Choose directory"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2684
|
||||
#: mpdevil:2703
|
||||
msgid "Choose the order of information to appear in the playlist:"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2824 mpdevil:2832 mpdevil:3356
|
||||
#: mpdevil:2843 mpdevil:2851 mpdevil:3423
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2843
|
||||
#: mpdevil:2862
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2844
|
||||
#: mpdevil:2863
|
||||
msgid "Profiles"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:2845
|
||||
#: mpdevil:2864
|
||||
msgid "Playlist"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3100
|
||||
#: mpdevil:3120
|
||||
msgid "Random mode"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3101
|
||||
#: mpdevil:3121
|
||||
msgid "Repeat mode"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3102
|
||||
#: mpdevil:3122
|
||||
msgid "Single mode"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3103
|
||||
#: mpdevil:3123
|
||||
msgid "Consume mode"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3204 mpdevil:3212
|
||||
#: mpdevil:3224 mpdevil:3232
|
||||
msgid "Stats"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3261
|
||||
#: mpdevil:3281
|
||||
msgid "A small MPD client written in python"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3273
|
||||
#: mpdevil:3293
|
||||
msgid "Select profile"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3357
|
||||
#: mpdevil:3354
|
||||
#, python-format
|
||||
msgid "Connection to \"%(profile)s\" (%(host)s:%(port)s) failed"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3424
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3358
|
||||
#: mpdevil:3425
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3359
|
||||
#: mpdevil:3426
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3362
|
||||
#: mpdevil:3429
|
||||
msgid "Save window layout"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3363
|
||||
#: mpdevil:3430
|
||||
msgid "Update database"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3364
|
||||
#: mpdevil:3431
|
||||
msgid "Server stats"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3367
|
||||
#: mpdevil:3434
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#: mpdevil:3457 mpdevil:3459
|
||||
#: mpdevil:3527 mpdevil:3529
|
||||
msgid "not connected"
|
||||
msgstr ""
|
||||
|
Loading…
Reference in New Issue
Block a user