enabled search in playlist and artist list

This commit is contained in:
Martin Wagner 2020-03-25 23:36:59 +01:00
parent 6090324342
commit bd43099e71
3 changed files with 209 additions and 181 deletions

View File

@ -939,44 +939,52 @@ class ArtistView(Gtk.ScrolledWindow):
self.settings=settings self.settings=settings
self.emitter=emitter self.emitter=emitter
self.genre_select=genre_select self.genre_select=genre_select
self.last_artist_path=None
#artistStore #artistStore
#(name, initial-letter, weight, font-scale) #(name, weight, initial-letter, weight-initials)
self.store = Gtk.ListStore(str, str, Pango.Weight, float) self.store = Gtk.ListStore(str, Pango.Weight, str, Pango.Weight)
#TreeView #TreeView
self.treeview = Gtk.TreeView(model=self.store) self.treeview = Gtk.TreeView(model=self.store)
self.treeview.set_search_column(-1) self.treeview.set_search_column(0)
self.treeview.columns_autosize() self.treeview.columns_autosize()
self.treeview.set_property("activate-on-single-click", True)
#artistSelection #artistSelection
self.selection = self.treeview.get_selection() self.selection = self.treeview.get_selection()
self.selection.set_mode(Gtk.SelectionMode.MULTIPLE) self.selection.set_mode(Gtk.SelectionMode.SINGLE)
#Columns #Columns
renderer_text_malign = Gtk.CellRendererText(xalign=0.5) renderer_text_malign = Gtk.CellRendererText(xalign=0.5)
self.column_initials = Gtk.TreeViewColumn("", renderer_text_malign, text=1, weight=2, scale=3) self.column_initials = Gtk.TreeViewColumn("", renderer_text_malign, text=2, weight=3)
self.column_initials.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) self.column_initials.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
self.column_initials.set_property("resizable", False) self.column_initials.set_property("resizable", False)
self.column_initials.set_visible(self.settings.get_boolean("show-initials")) self.column_initials.set_visible(self.settings.get_boolean("show-initials"))
self.treeview.append_column(self.column_initials) self.treeview.append_column(self.column_initials)
renderer_text = Gtk.CellRendererText() renderer_text = Gtk.CellRendererText()
self.column_name = Gtk.TreeViewColumn("", renderer_text, text=0) self.column_name = Gtk.TreeViewColumn("", renderer_text, text=0, weight=1)
self.column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) self.column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
self.column_name.set_property("resizable", False) self.column_name.set_property("resizable", False)
self.treeview.append_column(self.column_name) self.treeview.append_column(self.column_name)
#connect #connect
self.treeview.connect("enter-notify-event", self.on_enter_event) self.treeview.connect("enter-notify-event", self.on_enter_event)
self.treeview.connect("row-activated", self.on_row_activated)
self.settings.connect("changed::show-all-artists", self.refresh) self.settings.connect("changed::show-all-artists", self.refresh)
self.settings.connect("changed::show-initials", self.on_show_initials_settings_changed) self.settings.connect("changed::show-initials", self.on_show_initials_settings_changed)
self.emitter.connect("update", self.refresh) self.emitter.connect("update", self.refresh)
self.add(self.treeview) self.add(self.treeview)
@GObject.Signal
def artists_changed(self):
pass
def clear(self): def clear(self):
self.store.clear() self.store.clear()
self.last_artist_iter=None
def refresh(self, *args): def refresh(self, *args):
self.selection.set_mode(Gtk.SelectionMode.NONE) self.selection.set_mode(Gtk.SelectionMode.NONE)
@ -985,6 +993,7 @@ class ArtistView(Gtk.ScrolledWindow):
self.column_name.set_title(_("Album Artist")) self.column_name.set_title(_("Album Artist"))
else: else:
self.column_name.set_title(_("Artist")) self.column_name.set_title(_("Artist"))
self.store.append([_("all artists"), Pango.Weight.BOOK, "", Pango.Weight.BOOK])
genre=self.genre_select.get_value() genre=self.genre_select.get_value()
if genre == None: if genre == None:
artists=self.client.list(self.settings.get_artist_type()) artists=self.client.list(self.settings.get_artist_type())
@ -994,27 +1003,40 @@ class ArtistView(Gtk.ScrolledWindow):
for artist in artists: for artist in artists:
try: try:
if current_char != artist[0]: if current_char != artist[0]:
self.store.append([artist, artist[0], Pango.Weight.BOLD, 1]) self.store.append([artist, Pango.Weight.BOOK, artist[0], Pango.Weight.BOLD])
current_char=artist[0] current_char=artist[0]
else: else:
self.store.append([artist, "", Pango.Weight.BOOK, 1]) self.store.append([artist, Pango.Weight.BOOK, "", Pango.Weight.BOOK])
except: except:
self.store.append([artist, "", Pango.Weight.BOOK, 1]) self.store.append([artist, Pango.Weight.BOOK, "", Pango.Weight.BOOK])
self.selection.set_mode(Gtk.SelectionMode.MULTIPLE) self.selection.set_mode(Gtk.SelectionMode.SINGLE)
def get_selected_artists(self): def get_selected_artists(self):
paths=self.selection.get_selected_rows()[1]
artists=[] artists=[]
for path in paths: if self.store[Gtk.TreePath(0)][1] == Pango.Weight.BOLD:
treeiter = self.store.get_iter(path) for row in self.store:
if not treeiter == None: artists.append(row[0])
selected_artist=self.store.get_value(treeiter, 0) return artists[1:]
artists.append(selected_artist) else:
return artists for row in self.store:
if row[1] == Pango.Weight.BOLD:
artists.append(row[0])
break
return artists
def on_enter_event(self, widget, event): def on_enter_event(self, widget, event):
self.treeview.grab_focus() self.treeview.grab_focus()
def on_row_activated(self, widget, path, view_column):
if self.last_artist_path != None:
try:
self.store[self.last_artist_path][1]=Pango.Weight.BOOK
except:
pass
self.last_artist_path=path
self.store[path][1]=Pango.Weight.BOLD
self.emit("artists_changed")
def on_show_initials_settings_changed(self, *args): def on_show_initials_settings_changed(self, *args):
self.column_initials.set_visible(self.settings.get_boolean("show-initials")) self.column_initials.set_visible(self.settings.get_boolean("show-initials"))
@ -1305,7 +1327,7 @@ class PlaylistView(Gtk.Box):
#TreeView #TreeView
self.treeview = Gtk.TreeView(model=self.store) self.treeview = Gtk.TreeView(model=self.store)
self.treeview.set_search_column(-1) self.treeview.set_search_column(2)
self.treeview.set_property("activate-on-single-click", True) self.treeview.set_property("activate-on-single-click", True)
#selection #selection
@ -1554,9 +1576,9 @@ class Browser(Gtk.Box):
self.icon_size=self.settings.get_gtk_icon_size("icon-size") self.icon_size=self.settings.get_gtk_icon_size("icon-size")
#widgets #widgets
self.go_home_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("go-previous-symbolic", self.icon_size)) self.back_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("go-previous-symbolic", self.icon_size))
self.go_home_button.set_can_focus(False) self.back_button.set_can_focus(False)
self.go_home_button.set_tooltip_text(_("Back to current album")) self.back_button.set_tooltip_text(_("Back to current album"))
self.search_button=Gtk.ToggleButton(image=Gtk.Image.new_from_icon_name("system-search-symbolic", self.icon_size)) self.search_button=Gtk.ToggleButton(image=Gtk.Image.new_from_icon_name("system-search-symbolic", self.icon_size))
self.search_button.set_can_focus(False) self.search_button.set_can_focus(False)
self.search_button.set_tooltip_text(_("Search")) self.search_button.set_tooltip_text(_("Search"))
@ -1570,9 +1592,9 @@ class Browser(Gtk.Box):
self.playlist_view=PlaylistView(self.client, self.settings, self.emitter) self.playlist_view=PlaylistView(self.client, self.settings, self.emitter)
#connect #connect
self.go_home_button.connect("clicked", self.go_home) self.back_button.connect("clicked", self.back)
self.search_button.connect("toggled", self.on_search_toggled) self.search_button.connect("toggled", self.on_search_toggled)
self.artist_change=self.artist_view.selection.connect("changed", self.on_artist_selection_change) self.artist_view.connect("artists_changed", self.on_artists_changed)
self.settings.connect("changed::alt-layout", self.on_layout_settings_changed) self.settings.connect("changed::alt-layout", self.on_layout_settings_changed)
self.emitter.connect("disconnected", self.on_disconnected) self.emitter.connect("disconnected", self.on_disconnected)
self.emitter.connect("reconnected", self.on_reconnected) self.emitter.connect("reconnected", self.on_reconnected)
@ -1580,7 +1602,7 @@ class Browser(Gtk.Box):
#packing #packing
hbox=Gtk.Box(spacing=6) hbox=Gtk.Box(spacing=6)
hbox.set_property("border-width", 6) hbox.set_property("border-width", 6)
hbox.pack_start(self.go_home_button, False, False, 0) hbox.pack_start(self.back_button, False, False, 0)
hbox.pack_start(self.search_button, False, False, 0) hbox.pack_start(self.search_button, False, False, 0)
hbox.pack_start(self.genre_select, True, True, 0) hbox.pack_start(self.genre_select, True, True, 0)
@ -1620,28 +1642,29 @@ class Browser(Gtk.Box):
self.paned2.set_position(self.settings.get_int("paned2")) self.paned2.set_position(self.settings.get_int("paned2"))
def clear(self, *args): def clear(self, *args):
self.artist_view.selection.handler_block(self.artist_change)
self.artist_view.clear() self.artist_view.clear()
self.artist_view.selection.handler_unblock(self.artist_change)
self.album_view.clear() self.album_view.clear()
self.playlist_view.clear() self.playlist_view.clear()
self.main_cover.clear() self.main_cover.clear()
def go_home(self, *args): def back(self, *args):
try: #since this can still be running when the connection is lost, various exceptions can occur try: #since this can still be running when the connection is lost, various exceptions can occur
song=self.client.currentsong() song=self.client.currentsong()
self.genre_select.deactivate() #deactivate genre filter to show all artists try:
row_num=len(self.artist_view.store) if not song['genre'] == self.genre_select.get_value():
for i in range(0, row_num): self.genre_select.deactivate() #deactivate genre filter to show all artists
path=Gtk.TreePath(i) except:
if self.artist_view.store[path][0] == song[self.settings.get_artist_type()]: pass
treeiter = self.artist_view.store.get_iter(path) if len(self.artist_view.get_selected_artists()) <= 1:
if not self.artist_view.selection.iter_is_selected(treeiter): row_num=len(self.artist_view.store)
self.artist_view.selection.handler_block(self.artist_change) for i in range(0, row_num):
self.artist_view.selection.unselect_all() path=Gtk.TreePath(i)
self.artist_view.selection.handler_unblock(self.artist_change) if self.artist_view.store[path][0] == song[self.settings.get_artist_type()]:
self.artist_view.treeview.set_cursor(path, None, False) self.artist_view.treeview.set_cursor(path, None, False)
break self.artist_view.treeview.row_activated(path, self.artist_view.column_name)
break
else:
self.artist_view.treeview.set_cursor(Gtk.TreePath(0), None, False) #set cursor to 'all artists'
self.album_view.scroll_to_selected_album() self.album_view.scroll_to_selected_album()
self.playlist_view.scroll_to_selected_title() self.playlist_view.scroll_to_selected_title()
except: except:
@ -1658,18 +1681,18 @@ class Browser(Gtk.Box):
self.search_win.destroy() self.search_win.destroy()
def on_reconnected(self, *args): def on_reconnected(self, *args):
self.go_home_button.set_sensitive(True) self.back_button.set_sensitive(True)
self.search_button.set_sensitive(True) self.search_button.set_sensitive(True)
self.genre_select.set_sensitive(True) self.genre_select.set_sensitive(True)
def on_disconnected(self, *args): def on_disconnected(self, *args):
self.go_home_button.set_sensitive(False) self.back_button.set_sensitive(False)
self.search_button.set_active(False) self.search_button.set_active(False)
self.search_button.set_sensitive(False) self.search_button.set_sensitive(False)
self.genre_select.clear() self.genre_select.clear()
self.genre_select.set_sensitive(False) self.genre_select.set_sensitive(False)
def on_artist_selection_change(self, *args): def on_artists_changed(self, *args):
artists=self.artist_view.get_selected_artists() artists=self.artist_view.get_selected_artists()
self.album_view.refresh(artists) self.album_view.refresh(artists)
@ -2868,7 +2891,7 @@ class MainWindow(Gtk.ApplicationWindow):
self.emitter.emit("options") self.emitter.emit("options")
self.emitter.emit("mixer") self.emitter.emit("mixer")
self.emitter.emit("update") self.emitter.emit("update")
self.browser.go_home() self.browser.back()
def on_disconnected(self, *args): def on_disconnected(self, *args):
self.dbus_service.release_name() self.dbus_service.release_name()
@ -2901,7 +2924,7 @@ class MainWindow(Gtk.ApplicationWindow):
elif event.keyval == 269025046 or event.keyval == 45 or event.keyval == 65453: #AudioPrev elif event.keyval == 269025046 or event.keyval == 45 or event.keyval == 65453: #AudioPrev
self.control.prev_button.emit("clicked") self.control.prev_button.emit("clicked")
elif event.keyval == 65307: #esc elif event.keyval == 65307: #esc
self.browser.go_home() self.browser.back()
elif event.keyval == 65450: #* elif event.keyval == 65450: #*
self.progress.seek_forward() self.progress.seek_forward()
elif event.keyval == 65455: #/ elif event.keyval == 65455: #/

143
po/de.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-24 22:21+0100\n" "POT-Creation-Date: 2020-03-25 23:35+0100\n"
"PO-Revision-Date: 2020-03-24 22:22+0100\n" "PO-Revision-Date: 2020-03-25 23:36+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: de\n" "Language: de\n"
@ -18,28 +18,28 @@ msgstr ""
"X-Generator: Poedit 2.2.4\n" "X-Generator: Poedit 2.2.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mpdevil.py:814 mpdevil.py:1320 mpdevil.py:1971 mpdevil.py:2549 #: mpdevil.py:814 mpdevil.py:1342 mpdevil.py:1994 mpdevil.py:2617
msgid "No" msgid "No"
msgstr "Nr." msgstr "Nr."
#: mpdevil.py:819 mpdevil.py:1326 mpdevil.py:1971 mpdevil.py:2555 #: mpdevil.py:819 mpdevil.py:1348 mpdevil.py:1994 mpdevil.py:2623
msgid "Title" msgid "Title"
msgstr "Titel" msgstr "Titel"
#: mpdevil.py:824 mpdevil.py:987 mpdevil.py:1329 mpdevil.py:1971 #: mpdevil.py:824 mpdevil.py:995 mpdevil.py:1351 mpdevil.py:1994
#: mpdevil.py:2561 #: mpdevil.py:2629
msgid "Artist" msgid "Artist"
msgstr "Interpret" msgstr "Interpret"
#: mpdevil.py:829 mpdevil.py:1335 mpdevil.py:1971 mpdevil.py:2573 #: mpdevil.py:829 mpdevil.py:1357 mpdevil.py:1994 mpdevil.py:2641
msgid "Length" msgid "Length"
msgstr "Länge" msgstr "Länge"
#: mpdevil.py:867 mpdevil.py:1488 mpdevil.py:2613 #: mpdevil.py:867 mpdevil.py:1510 mpdevil.py:2681
msgid "Unknown Title" msgid "Unknown Title"
msgstr "Unbekannter Titel" msgstr "Unbekannter Titel"
#: mpdevil.py:871 mpdevil.py:1500 mpdevil.py:2621 #: mpdevil.py:871 mpdevil.py:1522 mpdevil.py:2689
msgid "Unknown Artist" msgid "Unknown Artist"
msgstr "Unbekannter Interpret" msgstr "Unbekannter Interpret"
@ -47,182 +47,186 @@ msgstr "Unbekannter Interpret"
msgid "all genres" msgid "all genres"
msgstr "Alle Genres" msgstr "Alle Genres"
#: mpdevil.py:985 #: mpdevil.py:993
msgid "Album Artist" msgid "Album Artist"
msgstr "Albuminterpret" msgstr "Albuminterpret"
#: mpdevil.py:1077 mpdevil.py:1421 #: mpdevil.py:996
msgid "all artists"
msgstr "Alle Interpreten"
#: mpdevil.py:1099 mpdevil.py:1443
#, 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:1323 mpdevil.py:1971 #: mpdevil.py:1345 mpdevil.py:1994
msgid "Disc" msgid "Disc"
msgstr "CD" msgstr "CD"
#: mpdevil.py:1332 mpdevil.py:1971 mpdevil.py:2567 #: mpdevil.py:1354 mpdevil.py:1994 mpdevil.py:2635
msgid "Album" msgid "Album"
msgstr "Album" msgstr "Album"
#: mpdevil.py:1338 mpdevil.py:1971 #: mpdevil.py:1360 mpdevil.py:1994
msgid "Year" msgid "Year"
msgstr "Jahr" msgstr "Jahr"
#: mpdevil.py:1341 mpdevil.py:1971 #: mpdevil.py:1363 mpdevil.py:1994
msgid "Genre" msgid "Genre"
msgstr "Genre" msgstr "Genre"
#: mpdevil.py:1504 mpdevil.py:2625 #: mpdevil.py:1526 mpdevil.py:2693
msgid "Unknown Album" msgid "Unknown Album"
msgstr "Unbekanntes Album" msgstr "Unbekanntes Album"
#: mpdevil.py:1559 #: mpdevil.py:1581
msgid "Back to current album" msgid "Back to current album"
msgstr "Zurück zu aktuellem Album" msgstr "Zurück zu aktuellem Album"
#: mpdevil.py:1562 mpdevil.py:2513 #: mpdevil.py:1584 mpdevil.py:2581
msgid "Search" msgid "Search"
msgstr "Suche" msgstr "Suche"
#: mpdevil.py:1713 #: mpdevil.py:1736
msgid "Select" msgid "Select"
msgstr "Auswählen" msgstr "Auswählen"
#: mpdevil.py:1715 #: mpdevil.py:1738
msgid "Profile:" msgid "Profile:"
msgstr "Profil:" msgstr "Profil:"
#: mpdevil.py:1717 #: mpdevil.py:1740
msgid "Name:" msgid "Name:"
msgstr "Name:" msgstr "Name:"
#: mpdevil.py:1719 #: mpdevil.py:1742
msgid "Host:" msgid "Host:"
msgstr "Host:" msgstr "Host:"
#: mpdevil.py:1721 #: mpdevil.py:1744
msgid "Password:" msgid "Password:"
msgstr "Passwort:" msgstr "Passwort:"
#: mpdevil.py:1723 #: mpdevil.py:1746
msgid "Music lib:" msgid "Music lib:"
msgstr "Musikverzeichnis:" msgstr "Musikverzeichnis:"
#: mpdevil.py:1806 #: mpdevil.py:1829
msgid "Choose directory" msgid "Choose directory"
msgstr "Verzeichnis Wählen" msgstr "Verzeichnis Wählen"
#: mpdevil.py:1844 #: mpdevil.py:1867
msgid "Main cover size:" msgid "Main cover size:"
msgstr "Größe des Haupt-Covers:" msgstr "Größe des Haupt-Covers:"
#: mpdevil.py:1848 #: mpdevil.py:1871
msgid "Album view cover size:" msgid "Album view cover size:"
msgstr "Covergröße in Albumliste:" msgstr "Covergröße in Albumliste:"
#: mpdevil.py:1852 #: mpdevil.py:1875
msgid "Button icon size:" msgid "Button icon size:"
msgstr "Symbolgröße der Knöpfe:" msgstr "Symbolgröße der Knöpfe:"
#: mpdevil.py:1854 #: mpdevil.py:1877
msgid "(restart required)" msgid "(restart required)"
msgstr "(Neustart erforderlich)" msgstr "(Neustart erforderlich)"
#: mpdevil.py:1879 #: mpdevil.py:1902
msgid "<b>View</b>" msgid "<b>View</b>"
msgstr "<b>Ansicht</b>" msgstr "<b>Ansicht</b>"
#: mpdevil.py:1882 #: mpdevil.py:1905
msgid "<b>Behavior</b>" msgid "<b>Behavior</b>"
msgstr "<b>Verhalten</b>" msgstr "<b>Verhalten</b>"
#: mpdevil.py:1887 #: mpdevil.py:1910
msgid "Use alternative layout" msgid "Use alternative layout"
msgstr "Benutze alternatives Layout" msgstr "Benutze alternatives Layout"
#: mpdevil.py:1888 #: mpdevil.py:1911
msgid "Show stop button" msgid "Show stop button"
msgstr "Zeige Stopp-Knopf" msgstr "Zeige Stopp-Knopf"
#: mpdevil.py:1889 #: mpdevil.py:1912
msgid "Show initials in artist view" msgid "Show initials in artist view"
msgstr "Zeige Anfangsbuchstaben in Interpretenliste" msgstr "Zeige Anfangsbuchstaben in Interpretenliste"
#: mpdevil.py:1890 #: mpdevil.py:1913
msgid "Show tooltips in album view" msgid "Show tooltips in album view"
msgstr "Zeige Tooltips in Albumliste" msgstr "Zeige Tooltips in Albumliste"
#: mpdevil.py:1891 #: mpdevil.py:1914
msgid "Sort albums by year" msgid "Sort albums by year"
msgstr "Sortiere Alben nach Jahr" msgstr "Sortiere Alben nach Jahr"
#: mpdevil.py:1892 #: mpdevil.py:1915
msgid "Use 'Artist' instead of 'Album Artist'" msgid "Use 'Artist' instead of 'Album Artist'"
msgstr "Benutze \"Interpret\" statt \"Albuminterpret\"" msgstr "Benutze \"Interpret\" statt \"Albuminterpret\""
#: mpdevil.py:1893 #: mpdevil.py:1916
msgid "Send notification on title change" msgid "Send notification on title change"
msgstr "Sende Benachrichtigung bei Titelwechsel" msgstr "Sende Benachrichtigung bei Titelwechsel"
#: mpdevil.py:1894 #: mpdevil.py:1917
msgid "Stop playback on quit" msgid "Stop playback on quit"
msgstr "Wiedergabe beim Beenden stoppen" msgstr "Wiedergabe beim Beenden stoppen"
#: mpdevil.py:1895 #: mpdevil.py:1918
msgid "Don't interrupt current title on album select" msgid "Don't interrupt current title on album select"
msgstr "Laufenden Titel bei Albumauswahl nicht abbrechen" msgstr "Laufenden Titel bei Albumauswahl nicht abbrechen"
#: mpdevil.py:1943 #: mpdevil.py:1966
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:2056 mpdevil.py:2759 #: mpdevil.py:2079 mpdevil.py:2827
msgid "Settings" msgid "Settings"
msgstr "Einstellungen" msgstr "Einstellungen"
#: mpdevil.py:2070 #: mpdevil.py:2093
msgid "General" msgid "General"
msgstr "Allgemein" msgstr "Allgemein"
#: mpdevil.py:2071 #: mpdevil.py:2094
msgid "Profiles" msgid "Profiles"
msgstr "Profile" msgstr "Profile"
#: mpdevil.py:2072 #: mpdevil.py:2095
msgid "Playlist" msgid "Playlist"
msgstr "Wiedergabeliste" msgstr "Wiedergabeliste"
#: mpdevil.py:2266 #: mpdevil.py:2334
msgid "Random mode" msgid "Random mode"
msgstr "Zufallsmodus" msgstr "Zufallsmodus"
#: mpdevil.py:2269 #: mpdevil.py:2337
msgid "Repeat mode" msgid "Repeat mode"
msgstr "Dauerschleife" msgstr "Dauerschleife"
#: mpdevil.py:2272 #: mpdevil.py:2340
msgid "Single mode" msgid "Single mode"
msgstr "Einzelstückmodus" msgstr "Einzelstückmodus"
#: mpdevil.py:2275 #: mpdevil.py:2343
msgid "Consume mode" msgid "Consume mode"
msgstr "Wiedergabeliste verbrauchen" msgstr "Wiedergabeliste verbrauchen"
#: mpdevil.py:2365 #: mpdevil.py:2433
msgid "Click to show additional information" msgid "Click to show additional information"
msgstr "Klicken für weitere Informationen" msgstr "Klicken für weitere Informationen"
#: mpdevil.py:2391 #: mpdevil.py:2459
msgid "MPD-Tag" msgid "MPD-Tag"
msgstr "MPD-Tag" msgstr "MPD-Tag"
#: mpdevil.py:2395 mpdevil.py:2496 #: mpdevil.py:2463 mpdevil.py:2564
msgid "Value" msgid "Value"
msgstr "Wert" msgstr "Wert"
#: mpdevil.py:2417 #: mpdevil.py:2485
#, python-format #, python-format
msgid "" msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s " "%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
@ -231,64 +235,64 @@ msgstr ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s " "%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"Kanäle, %(file_type)s" "Kanäle, %(file_type)s"
#: mpdevil.py:2474 #: mpdevil.py:2542
msgid "Stats" msgid "Stats"
msgstr "Statistik" msgstr "Statistik"
#: mpdevil.py:2493 #: mpdevil.py:2561
msgid "Tag" msgid "Tag"
msgstr "Tag" msgstr "Tag"
#: mpdevil.py:2632 #: mpdevil.py:2700
#, python-format #, python-format
msgid "hits: %i" msgid "hits: %i"
msgstr "Treffer: %i" msgstr "Treffer: %i"
#: mpdevil.py:2636 #: mpdevil.py:2704
msgid "Lyrics" msgid "Lyrics"
msgstr "Liedtext" msgstr "Liedtext"
#: mpdevil.py:2669 #: mpdevil.py:2737
msgid "searching..." msgid "searching..."
msgstr "suche..." msgstr "suche..."
#: mpdevil.py:2673 #: mpdevil.py:2741
msgid "not found" msgid "not found"
msgstr "nicht gefunden" msgstr "nicht gefunden"
#: mpdevil.py:2748 #: mpdevil.py:2816
msgid "Select profile" msgid "Select profile"
msgstr "Profil auswählen" msgstr "Profil auswählen"
#: mpdevil.py:2753 #: mpdevil.py:2821
msgid "Show lyrics" msgid "Show lyrics"
msgstr "Zeige Liedtext" msgstr "Zeige Liedtext"
#: mpdevil.py:2758 #: mpdevil.py:2826
msgid "Save window layout" msgid "Save window layout"
msgstr "Fensterlayout speichern" msgstr "Fensterlayout speichern"
#: mpdevil.py:2760 #: mpdevil.py:2828
msgid "Update database" msgid "Update database"
msgstr "Datenbank aktualisieren" msgstr "Datenbank aktualisieren"
#: mpdevil.py:2761 #: mpdevil.py:2829
msgid "Server stats" msgid "Server stats"
msgstr "Serverstatistik" msgstr "Serverstatistik"
#: mpdevil.py:2762 #: mpdevil.py:2830
msgid "About" msgid "About"
msgstr "Über" msgstr "Über"
#: mpdevil.py:2763 #: mpdevil.py:2831
msgid "Quit" msgid "Quit"
msgstr "Beenden" msgstr "Beenden"
#: mpdevil.py:2769 #: mpdevil.py:2837
msgid "Menu" msgid "Menu"
msgstr "Menü" msgstr "Menü"
#: mpdevil.py:2926 #: mpdevil.py:2994
msgid "A small MPD client written in python" msgid "A small MPD client written in python"
msgstr "" msgstr ""
@ -304,9 +308,6 @@ msgstr ""
#~ msgid "Column" #~ msgid "Column"
#~ msgstr "Spalte" #~ msgstr "Spalte"
#~ msgid "Show all artists"
#~ msgstr "Zeige alle Interpreten"
#~ msgid "Play selected album after current title" #~ msgid "Play selected album after current title"
#~ msgstr "Ausgewähltes Album hinter aktuellem Titel einreihen" #~ msgstr "Ausgewähltes Album hinter aktuellem Titel einreihen"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-24 22:21+0100\n" "POT-Creation-Date: 2020-03-25 23:35+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,28 +17,28 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: mpdevil.py:814 mpdevil.py:1320 mpdevil.py:1971 mpdevil.py:2549 #: mpdevil.py:814 mpdevil.py:1342 mpdevil.py:1994 mpdevil.py:2617
msgid "No" msgid "No"
msgstr "" msgstr ""
#: mpdevil.py:819 mpdevil.py:1326 mpdevil.py:1971 mpdevil.py:2555 #: mpdevil.py:819 mpdevil.py:1348 mpdevil.py:1994 mpdevil.py:2623
msgid "Title" msgid "Title"
msgstr "" msgstr ""
#: mpdevil.py:824 mpdevil.py:987 mpdevil.py:1329 mpdevil.py:1971 #: mpdevil.py:824 mpdevil.py:995 mpdevil.py:1351 mpdevil.py:1994
#: mpdevil.py:2561 #: mpdevil.py:2629
msgid "Artist" msgid "Artist"
msgstr "" msgstr ""
#: mpdevil.py:829 mpdevil.py:1335 mpdevil.py:1971 mpdevil.py:2573 #: mpdevil.py:829 mpdevil.py:1357 mpdevil.py:1994 mpdevil.py:2641
msgid "Length" msgid "Length"
msgstr "" msgstr ""
#: mpdevil.py:867 mpdevil.py:1488 mpdevil.py:2613 #: mpdevil.py:867 mpdevil.py:1510 mpdevil.py:2681
msgid "Unknown Title" msgid "Unknown Title"
msgstr "" msgstr ""
#: mpdevil.py:871 mpdevil.py:1500 mpdevil.py:2621 #: mpdevil.py:871 mpdevil.py:1522 mpdevil.py:2689
msgid "Unknown Artist" msgid "Unknown Artist"
msgstr "" msgstr ""
@ -46,243 +46,247 @@ msgstr ""
msgid "all genres" msgid "all genres"
msgstr "" msgstr ""
#: mpdevil.py:985 #: mpdevil.py:993
msgid "Album Artist" msgid "Album Artist"
msgstr "" msgstr ""
#: mpdevil.py:1077 mpdevil.py:1421 #: mpdevil.py:996
msgid "all artists"
msgstr ""
#: mpdevil.py:1099 mpdevil.py:1443
#, python-format #, python-format
msgid "%(total_tracks)i titles (%(total_length)s)" msgid "%(total_tracks)i titles (%(total_length)s)"
msgstr "" msgstr ""
#: mpdevil.py:1323 mpdevil.py:1971 #: mpdevil.py:1345 mpdevil.py:1994
msgid "Disc" msgid "Disc"
msgstr "" msgstr ""
#: mpdevil.py:1332 mpdevil.py:1971 mpdevil.py:2567 #: mpdevil.py:1354 mpdevil.py:1994 mpdevil.py:2635
msgid "Album" msgid "Album"
msgstr "" msgstr ""
#: mpdevil.py:1338 mpdevil.py:1971 #: mpdevil.py:1360 mpdevil.py:1994
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: mpdevil.py:1341 mpdevil.py:1971 #: mpdevil.py:1363 mpdevil.py:1994
msgid "Genre" msgid "Genre"
msgstr "" msgstr ""
#: mpdevil.py:1504 mpdevil.py:2625 #: mpdevil.py:1526 mpdevil.py:2693
msgid "Unknown Album" msgid "Unknown Album"
msgstr "" msgstr ""
#: mpdevil.py:1559 #: mpdevil.py:1581
msgid "Back to current album" msgid "Back to current album"
msgstr "" msgstr ""
#: mpdevil.py:1562 mpdevil.py:2513 #: mpdevil.py:1584 mpdevil.py:2581
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: mpdevil.py:1713 #: mpdevil.py:1736
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: mpdevil.py:1715 #: mpdevil.py:1738
msgid "Profile:" msgid "Profile:"
msgstr "" msgstr ""
#: mpdevil.py:1717 #: mpdevil.py:1740
msgid "Name:" msgid "Name:"
msgstr "" msgstr ""
#: mpdevil.py:1719 #: mpdevil.py:1742
msgid "Host:" msgid "Host:"
msgstr "" msgstr ""
#: mpdevil.py:1721 #: mpdevil.py:1744
msgid "Password:" msgid "Password:"
msgstr "" msgstr ""
#: mpdevil.py:1723 #: mpdevil.py:1746
msgid "Music lib:" msgid "Music lib:"
msgstr "" msgstr ""
#: mpdevil.py:1806 #: mpdevil.py:1829
msgid "Choose directory" msgid "Choose directory"
msgstr "" msgstr ""
#: mpdevil.py:1844 #: mpdevil.py:1867
msgid "Main cover size:" msgid "Main cover size:"
msgstr "" msgstr ""
#: mpdevil.py:1848 #: mpdevil.py:1871
msgid "Album view cover size:" msgid "Album view cover size:"
msgstr "" msgstr ""
#: mpdevil.py:1852 #: mpdevil.py:1875
msgid "Button icon size:" msgid "Button icon size:"
msgstr "" msgstr ""
#: mpdevil.py:1854 #: mpdevil.py:1877
msgid "(restart required)" msgid "(restart required)"
msgstr "" msgstr ""
#: mpdevil.py:1879 #: mpdevil.py:1902
msgid "<b>View</b>" msgid "<b>View</b>"
msgstr "" msgstr ""
#: mpdevil.py:1882 #: mpdevil.py:1905
msgid "<b>Behavior</b>" msgid "<b>Behavior</b>"
msgstr "" msgstr ""
#: mpdevil.py:1887 #: mpdevil.py:1910
msgid "Use alternative layout" msgid "Use alternative layout"
msgstr "" msgstr ""
#: mpdevil.py:1888 #: mpdevil.py:1911
msgid "Show stop button" msgid "Show stop button"
msgstr "" msgstr ""
#: mpdevil.py:1889 #: mpdevil.py:1912
msgid "Show initials in artist view" msgid "Show initials in artist view"
msgstr "" msgstr ""
#: mpdevil.py:1890 #: mpdevil.py:1913
msgid "Show tooltips in album view" msgid "Show tooltips in album view"
msgstr "" msgstr ""
#: mpdevil.py:1891 #: mpdevil.py:1914
msgid "Sort albums by year" msgid "Sort albums by year"
msgstr "" msgstr ""
#: mpdevil.py:1892 #: mpdevil.py:1915
msgid "Use 'Artist' instead of 'Album Artist'" msgid "Use 'Artist' instead of 'Album Artist'"
msgstr "" msgstr ""
#: mpdevil.py:1893 #: mpdevil.py:1916
msgid "Send notification on title change" msgid "Send notification on title change"
msgstr "" msgstr ""
#: mpdevil.py:1894 #: mpdevil.py:1917
msgid "Stop playback on quit" msgid "Stop playback on quit"
msgstr "" msgstr ""
#: mpdevil.py:1895 #: mpdevil.py:1918
msgid "Don't interrupt current title on album select" msgid "Don't interrupt current title on album select"
msgstr "" msgstr ""
#: mpdevil.py:1943 #: mpdevil.py:1966
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:2056 mpdevil.py:2759 #: mpdevil.py:2079 mpdevil.py:2827
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
#: mpdevil.py:2070 #: mpdevil.py:2093
msgid "General" msgid "General"
msgstr "" msgstr ""
#: mpdevil.py:2071 #: mpdevil.py:2094
msgid "Profiles" msgid "Profiles"
msgstr "" msgstr ""
#: mpdevil.py:2072 #: mpdevil.py:2095
msgid "Playlist" msgid "Playlist"
msgstr "" msgstr ""
#: mpdevil.py:2266 #: mpdevil.py:2334
msgid "Random mode" msgid "Random mode"
msgstr "" msgstr ""
#: mpdevil.py:2269 #: mpdevil.py:2337
msgid "Repeat mode" msgid "Repeat mode"
msgstr "" msgstr ""
#: mpdevil.py:2272 #: mpdevil.py:2340
msgid "Single mode" msgid "Single mode"
msgstr "" msgstr ""
#: mpdevil.py:2275 #: mpdevil.py:2343
msgid "Consume mode" msgid "Consume mode"
msgstr "" msgstr ""
#: mpdevil.py:2365 #: mpdevil.py:2433
msgid "Click to show additional information" msgid "Click to show additional information"
msgstr "" msgstr ""
#: mpdevil.py:2391 #: mpdevil.py:2459
msgid "MPD-Tag" msgid "MPD-Tag"
msgstr "" msgstr ""
#: mpdevil.py:2395 mpdevil.py:2496 #: mpdevil.py:2463 mpdevil.py:2564
msgid "Value" msgid "Value"
msgstr "" msgstr ""
#: mpdevil.py:2417 #: mpdevil.py:2485
#, python-format #, python-format
msgid "" msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s " "%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"channels, %(file_type)s" "channels, %(file_type)s"
msgstr "" msgstr ""
#: mpdevil.py:2474 #: mpdevil.py:2542
msgid "Stats" msgid "Stats"
msgstr "" msgstr ""
#: mpdevil.py:2493 #: mpdevil.py:2561
msgid "Tag" msgid "Tag"
msgstr "" msgstr ""
#: mpdevil.py:2632 #: mpdevil.py:2700
#, python-format #, python-format
msgid "hits: %i" msgid "hits: %i"
msgstr "" msgstr ""
#: mpdevil.py:2636 #: mpdevil.py:2704
msgid "Lyrics" msgid "Lyrics"
msgstr "" msgstr ""
#: mpdevil.py:2669 #: mpdevil.py:2737
msgid "searching..." msgid "searching..."
msgstr "" msgstr ""
#: mpdevil.py:2673 #: mpdevil.py:2741
msgid "not found" msgid "not found"
msgstr "" msgstr ""
#: mpdevil.py:2748 #: mpdevil.py:2816
msgid "Select profile" msgid "Select profile"
msgstr "" msgstr ""
#: mpdevil.py:2753 #: mpdevil.py:2821
msgid "Show lyrics" msgid "Show lyrics"
msgstr "" msgstr ""
#: mpdevil.py:2758 #: mpdevil.py:2826
msgid "Save window layout" msgid "Save window layout"
msgstr "" msgstr ""
#: mpdevil.py:2760 #: mpdevil.py:2828
msgid "Update database" msgid "Update database"
msgstr "" msgstr ""
#: mpdevil.py:2761 #: mpdevil.py:2829
msgid "Server stats" msgid "Server stats"
msgstr "" msgstr ""
#: mpdevil.py:2762 #: mpdevil.py:2830
msgid "About" msgid "About"
msgstr "" msgstr ""
#: mpdevil.py:2763 #: mpdevil.py:2831
msgid "Quit" msgid "Quit"
msgstr "" msgstr ""
#: mpdevil.py:2769 #: mpdevil.py:2837
msgid "Menu" msgid "Menu"
msgstr "" msgstr ""
#: mpdevil.py:2926 #: mpdevil.py:2994
msgid "A small MPD client written in python" msgid "A small MPD client written in python"
msgstr "" msgstr ""