diff --git a/bin/mpdevil b/bin/mpdevil
index e114534..f51795a 100755
--- a/bin/mpdevil
+++ b/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()
diff --git a/po/de.po b/po/de.po
index 70c4fe8..75c6a11 100644
--- a/po/de.po
+++ b/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 "View"
msgstr "Ansicht"
-#: mpdevil:2418
+#: mpdevil:2427
msgid "Behavior"
msgstr "Verhalten"
-#: 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"
diff --git a/po/mpdevil.pot b/po/mpdevil.pot
index 5bbfa6b..8c608ce 100644
--- a/po/mpdevil.pot
+++ b/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 \n"
"Language-Team: LANGUAGE \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 "View"
msgstr ""
-#: mpdevil:2418
+#: mpdevil:2427
msgid "Behavior"
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 ""