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.emitter=emitter
self.genre_select=genre_select
self.last_artist_path=None
#artistStore
#(name, initial-letter, weight, font-scale)
self.store = Gtk.ListStore(str, str, Pango.Weight, float)
#(name, weight, initial-letter, weight-initials)
self.store = Gtk.ListStore(str, Pango.Weight, str, Pango.Weight)
#TreeView
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.set_property("activate-on-single-click", True)
#artistSelection
self.selection = self.treeview.get_selection()
self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.selection.set_mode(Gtk.SelectionMode.SINGLE)
#Columns
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_property("resizable", False)
self.column_initials.set_visible(self.settings.get_boolean("show-initials"))
self.treeview.append_column(self.column_initials)
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_property("resizable", False)
self.treeview.append_column(self.column_name)
#connect
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-initials", self.on_show_initials_settings_changed)
self.emitter.connect("update", self.refresh)
self.add(self.treeview)
@GObject.Signal
def artists_changed(self):
pass
def clear(self):
self.store.clear()
self.last_artist_iter=None
def refresh(self, *args):
self.selection.set_mode(Gtk.SelectionMode.NONE)
@ -985,6 +993,7 @@ class ArtistView(Gtk.ScrolledWindow):
self.column_name.set_title(_("Album Artist"))
else:
self.column_name.set_title(_("Artist"))
self.store.append([_("all artists"), Pango.Weight.BOOK, "", Pango.Weight.BOOK])
genre=self.genre_select.get_value()
if genre == None:
artists=self.client.list(self.settings.get_artist_type())
@ -994,27 +1003,40 @@ class ArtistView(Gtk.ScrolledWindow):
for artist in artists:
try:
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]
else:
self.store.append([artist, "", Pango.Weight.BOOK, 1])
self.store.append([artist, Pango.Weight.BOOK, "", Pango.Weight.BOOK])
except:
self.store.append([artist, "", Pango.Weight.BOOK, 1])
self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.store.append([artist, Pango.Weight.BOOK, "", Pango.Weight.BOOK])
self.selection.set_mode(Gtk.SelectionMode.SINGLE)
def get_selected_artists(self):
paths=self.selection.get_selected_rows()[1]
artists=[]
for path in paths:
treeiter = self.store.get_iter(path)
if not treeiter == None:
selected_artist=self.store.get_value(treeiter, 0)
artists.append(selected_artist)
return artists
if self.store[Gtk.TreePath(0)][1] == Pango.Weight.BOLD:
for row in self.store:
artists.append(row[0])
return artists[1:]
else:
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):
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):
self.column_initials.set_visible(self.settings.get_boolean("show-initials"))
@ -1305,7 +1327,7 @@ class PlaylistView(Gtk.Box):
#TreeView
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)
#selection
@ -1554,9 +1576,9 @@ class Browser(Gtk.Box):
self.icon_size=self.settings.get_gtk_icon_size("icon-size")
#widgets
self.go_home_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.go_home_button.set_tooltip_text(_("Back to current album"))
self.back_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("go-previous-symbolic", self.icon_size))
self.back_button.set_can_focus(False)
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.set_can_focus(False)
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)
#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.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.emitter.connect("disconnected", self.on_disconnected)
self.emitter.connect("reconnected", self.on_reconnected)
@ -1580,7 +1602,7 @@ class Browser(Gtk.Box):
#packing
hbox=Gtk.Box(spacing=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.genre_select, True, True, 0)
@ -1620,28 +1642,29 @@ class Browser(Gtk.Box):
self.paned2.set_position(self.settings.get_int("paned2"))
def clear(self, *args):
self.artist_view.selection.handler_block(self.artist_change)
self.artist_view.clear()
self.artist_view.selection.handler_unblock(self.artist_change)
self.album_view.clear()
self.playlist_view.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
song=self.client.currentsong()
self.genre_select.deactivate() #deactivate genre filter to show all artists
row_num=len(self.artist_view.store)
for i in range(0, row_num):
path=Gtk.TreePath(i)
if self.artist_view.store[path][0] == song[self.settings.get_artist_type()]:
treeiter = self.artist_view.store.get_iter(path)
if not self.artist_view.selection.iter_is_selected(treeiter):
self.artist_view.selection.handler_block(self.artist_change)
self.artist_view.selection.unselect_all()
self.artist_view.selection.handler_unblock(self.artist_change)
try:
if not song['genre'] == self.genre_select.get_value():
self.genre_select.deactivate() #deactivate genre filter to show all artists
except:
pass
if len(self.artist_view.get_selected_artists()) <= 1:
row_num=len(self.artist_view.store)
for i in range(0, row_num):
path=Gtk.TreePath(i)
if self.artist_view.store[path][0] == song[self.settings.get_artist_type()]:
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.playlist_view.scroll_to_selected_title()
except:
@ -1658,18 +1681,18 @@ class Browser(Gtk.Box):
self.search_win.destroy()
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.genre_select.set_sensitive(True)
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_sensitive(False)
self.genre_select.clear()
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()
self.album_view.refresh(artists)
@ -2868,7 +2891,7 @@ class MainWindow(Gtk.ApplicationWindow):
self.emitter.emit("options")
self.emitter.emit("mixer")
self.emitter.emit("update")
self.browser.go_home()
self.browser.back()
def on_disconnected(self, *args):
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
self.control.prev_button.emit("clicked")
elif event.keyval == 65307: #esc
self.browser.go_home()
self.browser.back()
elif event.keyval == 65450: #*
self.progress.seek_forward()
elif event.keyval == 65455: #/

143
po/de.po
View File

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

View File

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