added extra buttons to SearchWindow to add/play all results at once

This commit is contained in:
Martin Wagner 2020-05-18 20:47:04 +02:00
parent 98d55d3caf
commit dffdfd73ae
3 changed files with 205 additions and 137 deletions

View File

@ -995,6 +995,12 @@ class SongsView(Gtk.TreeView):
def count(self):
return len(self.store)
def get_files(self):
return_list=[]
for row in self.store:
return_list.append(row[5])
return return_list
class AlbumDialog(Gtk.Dialog):
def __init__(self, parent, client, settings, album, artist, year):
Gtk.Dialog.__init__(self, transient_for=parent)
@ -2856,19 +2862,40 @@ class SearchWindow(Gtk.Box):
scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
scroll.add(self.songs_view)
#buttons
self.add_button=Gtk.Button(image=Gtk.Image(stock=Gtk.STOCK_ADD), label=_("Add"))
self.add_button.set_sensitive(False)
self.add_button.set_relief(Gtk.ReliefStyle.NONE)
self.play_button=Gtk.Button(image=Gtk.Image(stock=Gtk.STOCK_MEDIA_PLAY), label=_("Play"))
self.play_button.set_sensitive(False)
self.play_button.set_relief(Gtk.ReliefStyle.NONE)
self.open_button=Gtk.Button(image=Gtk.Image(stock=Gtk.STOCK_OPEN), label=_("Open"))
self.open_button.set_sensitive(False)
self.open_button.set_relief(Gtk.ReliefStyle.NONE)
#connect
self.search_entry.connect("search-changed", self.on_search_changed)
self.add_button.connect("clicked", self.on_add_clicked)
self.play_button.connect("clicked", self.on_play_clicked)
self.open_button.connect("clicked", self.on_open_clicked)
#packing
frame=FocusFrame()
frame.set_widget(self.songs_view)
frame.add(scroll)
ButtonBox=Gtk.ButtonBox(spacing=1)
ButtonBox.set_property("border-width", 1)
ButtonBox.pack_start(self.add_button, True, True, 0)
ButtonBox.pack_start(self.play_button, True, True, 0)
ButtonBox.pack_start(self.open_button, True, True, 0)
hbox=Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
hbox.pack_start(ButtonBox, 0, False, False)
hbox.pack_end(self.label, 0, False, False)
self.pack_start(self.search_entry, False, False, 6)
self.pack_start(Gtk.Separator.new(orientation=Gtk.Orientation.HORIZONTAL), False, False, 0)
self.pack_start(frame, True, True, 0)
self.pack_start(Gtk.Separator.new(orientation=Gtk.Orientation.HORIZONTAL), False, False, 0)
self.pack_start(self.label, False, False, 6)
self.pack_start(hbox, False, False, 0)
def start(self):
self.search_entry.grab_focus()
@ -2882,6 +2909,23 @@ class SearchWindow(Gtk.Box):
if len(self.search_entry.get_text()) > 1:
self.songs_view.populate(self.client.search("any", self.search_entry.get_text()))
self.label.set_text(_("hits: %i") % (self.songs_view.count()))
if self.songs_view.count() == 0:
self.add_button.set_sensitive(False)
self.play_button.set_sensitive(False)
self.open_button.set_sensitive(False)
else:
self.add_button.set_sensitive(True)
self.play_button.set_sensitive(True)
self.open_button.set_sensitive(True)
def on_add_clicked(self, *args):
self.client.files_to_playlist(self.songs_view.get_files(), True)
def on_play_clicked(self, *args):
self.client.files_to_playlist(self.songs_view.get_files(), False, True)
def on_open_clicked(self, *args):
self.client.files_to_playlist(self.songs_view.get_files(), self.year, False)
class LyricsWindow(Gtk.Frame):
def __init__(self, client, settings, width, height):

148
po/de.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-18 17:20+0200\n"
"PO-Revision-Date: 2020-05-18 17:21+0200\n"
"POT-Creation-Date: 2020-05-18 20:45+0200\n"
"PO-Revision-Date: 2020-05-18 20:46+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\n"
@ -30,223 +30,223 @@ msgstr "Unbekannter Interpret"
msgid "Unknown Album"
msgstr "Unbekanntes Album"
#: mpdevil.py:922 mpdevil.py:1537 mpdevil.py:2222
#: mpdevil.py:919 mpdevil.py:1543 mpdevil.py:2228
msgid "No"
msgstr "Nr."
#: mpdevil.py:927 mpdevil.py:1543 mpdevil.py:2222
#: mpdevil.py:924 mpdevil.py:1549 mpdevil.py:2228
msgid "Title"
msgstr "Titel"
#: mpdevil.py:932 mpdevil.py:1146 mpdevil.py:1546 mpdevil.py:2222
#: mpdevil.py:929 mpdevil.py:1152 mpdevil.py:1552 mpdevil.py:2228
msgid "Artist"
msgstr "Interpret"
#: mpdevil.py:937 mpdevil.py:1549 mpdevil.py:2222
#: mpdevil.py:934 mpdevil.py:1555 mpdevil.py:2228
msgid "Album"
msgstr "Album"
#: mpdevil.py:943 mpdevil.py:1552 mpdevil.py:2222
#: mpdevil.py:940 mpdevil.py:1558 mpdevil.py:2228
msgid "Length"
msgstr "Länge"
#: mpdevil.py:1060
#: mpdevil.py:1066
msgid "all genres"
msgstr "Alle Genres"
#: mpdevil.py:1144
#: mpdevil.py:1150
msgid "Album Artist"
msgstr "Albuminterpret"
#: mpdevil.py:1147
#: mpdevil.py:1153
msgid "all artists"
msgstr "Alle Interpreten"
#: mpdevil.py:1283
#: mpdevil.py:1289
#, 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.py:1285 mpdevil.py:1635
#: mpdevil.py:1291 mpdevil.py:1641
#, python-format
msgid "%(total_tracks)i titles (%(total_length)s)"
msgstr "%(total_tracks)i Titel (%(total_length)s)"
#: mpdevil.py:1540 mpdevil.py:2222
#: mpdevil.py:1546 mpdevil.py:2228
msgid "Disc"
msgstr "CD"
#: mpdevil.py:1555 mpdevil.py:2222
#: mpdevil.py:1561 mpdevil.py:2228
msgid "Year"
msgstr "Jahr"
#: mpdevil.py:1558 mpdevil.py:2222
#: mpdevil.py:1564 mpdevil.py:2228
msgid "Genre"
msgstr "Genre"
#: mpdevil.py:1726
#: mpdevil.py:1732
msgid "Back to current album"
msgstr "Zurück zu aktuellem Album"
#: mpdevil.py:1728
#: mpdevil.py:1734
msgid "Search"
msgstr "Suche"
#: mpdevil.py:1739
#: mpdevil.py:1745
msgid "Show lyrics"
msgstr "Zeige Liedtext"
#: mpdevil.py:1933
#: mpdevil.py:1939
msgid "Profile:"
msgstr "Profil:"
#: mpdevil.py:1935
#: mpdevil.py:1941
msgid "Name:"
msgstr "Name:"
#: mpdevil.py:1937
#: mpdevil.py:1943
msgid "Host:"
msgstr "Host:"
#: mpdevil.py:1939
#: mpdevil.py:1945
msgid "Password:"
msgstr "Passwort:"
#: mpdevil.py:1941
#: mpdevil.py:1947
msgid "Music lib:"
msgstr "Musikverzeichnis:"
#: mpdevil.py:2028
#: mpdevil.py:2034
msgid "Choose directory"
msgstr "Verzeichnis Wählen"
#: mpdevil.py:2066
#: mpdevil.py:2072
msgid "Main cover size:"
msgstr "Größe des Haupt-Covers:"
#: mpdevil.py:2070
#: mpdevil.py:2076
msgid "Album view cover size:"
msgstr "Covergröße in Albumliste:"
#: mpdevil.py:2074
#: mpdevil.py:2080
msgid "Button icon size:"
msgstr "Symbolgröße der Knöpfe:"
#: mpdevil.py:2076
#: mpdevil.py:2082
msgid "(restart required)"
msgstr "(Neustart erforderlich)"
#: mpdevil.py:2087
#: mpdevil.py:2093
msgid "Sort albums by:"
msgstr "Sortiere Alben nach:"
#: mpdevil.py:2087
#: mpdevil.py:2093
msgid "name"
msgstr "Name"
#: mpdevil.py:2087
#: mpdevil.py:2093
msgid "year"
msgstr "Jahr"
#: mpdevil.py:2088
#: mpdevil.py:2094
msgid "Position of playlist:"
msgstr "Wiedergabelistenposition:"
#: mpdevil.py:2088
#: mpdevil.py:2094
msgid "bottom"
msgstr "unten"
#: mpdevil.py:2088
#: mpdevil.py:2094
msgid "right"
msgstr "rechts"
#: mpdevil.py:2104
#: mpdevil.py:2110
msgid "<b>View</b>"
msgstr "<b>Ansicht</b>"
#: mpdevil.py:2107
#: mpdevil.py:2113
msgid "<b>Behavior</b>"
msgstr "<b>Verhalten</b>"
#: mpdevil.py:2112
#: mpdevil.py:2118
msgid "Show stop button"
msgstr "Zeige Stopp-Knopf"
#: mpdevil.py:2113
#: mpdevil.py:2119
msgid "Show initials in artist view"
msgstr "Zeige Anfangsbuchstaben in Interpretenliste"
#: mpdevil.py:2114
#: mpdevil.py:2120
msgid "Show tooltips in album view"
msgstr "Zeige Tooltips in Albumliste"
#: mpdevil.py:2115
#: mpdevil.py:2121
msgid "Use 'Album Artist' tag"
msgstr "Benutze \"Album Artist\" Tag"
#: mpdevil.py:2116
#: mpdevil.py:2122
msgid "Send notification on title change"
msgstr "Sende Benachrichtigung bei Titelwechsel"
#: mpdevil.py:2117
#: mpdevil.py:2123
msgid "Stop playback on quit"
msgstr "Wiedergabe beim Beenden stoppen"
#: mpdevil.py:2118
#: mpdevil.py:2124
msgid "Play selected albums and titles immediately"
msgstr "Ausgewählte Alben und Titel sofort abspielen"
#: mpdevil.py:2194
#: mpdevil.py:2200
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:2307 mpdevil.py:3006
#: mpdevil.py:2313 mpdevil.py:3055
msgid "Settings"
msgstr "Einstellungen"
#: mpdevil.py:2321
#: mpdevil.py:2327
msgid "General"
msgstr "Allgemein"
#: mpdevil.py:2322
#: mpdevil.py:2328
msgid "Profiles"
msgstr "Profile"
#: mpdevil.py:2323
#: mpdevil.py:2329
msgid "Playlist"
msgstr "Wiedergabeliste"
#: mpdevil.py:2574
#: mpdevil.py:2580
msgid "Random mode"
msgstr "Zufallsmodus"
#: mpdevil.py:2576
#: mpdevil.py:2582
msgid "Repeat mode"
msgstr "Dauerschleife"
#: mpdevil.py:2578
#: mpdevil.py:2584
msgid "Single mode"
msgstr "Einzelstückmodus"
#: mpdevil.py:2580
#: mpdevil.py:2586
msgid "Consume mode"
msgstr "Wiedergabeliste verbrauchen"
#: mpdevil.py:2670
#: mpdevil.py:2676
msgid "Show additional information"
msgstr "Zeige weitere Informationen"
#: mpdevil.py:2696
#: mpdevil.py:2702
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: mpdevil.py:2700
#: mpdevil.py:2706
msgid "Value"
msgstr "Wert"
#: mpdevil.py:2732
#: mpdevil.py:2738
#, python-format
msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
@ -255,52 +255,64 @@ msgstr ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"Kanäle, %(file_type)s"
#: mpdevil.py:2786
#: mpdevil.py:2792
msgid "Stats"
msgstr "Statistik"
#: mpdevil.py:2879
#: mpdevil.py:2866
msgid "Add"
msgstr "Hinzufügen"
#: mpdevil.py:2869
msgid "Play"
msgstr "Wiedergabe"
#: mpdevil.py:2872
msgid "Open"
msgstr "Öffnen"
#: mpdevil.py:2911
#, python-format
msgid "hits: %i"
msgstr "Treffer: %i"
#: mpdevil.py:2920
#: mpdevil.py:2969
msgid "searching..."
msgstr "suche..."
#: mpdevil.py:2924
#: mpdevil.py:2973
msgid "lyrics not found"
msgstr "Liedtext nicht gefunden"
#: mpdevil.py:2998
#: mpdevil.py:3047
msgid "Select profile"
msgstr "Profil auswählen"
#: mpdevil.py:3005
#: mpdevil.py:3054
msgid "Save window layout"
msgstr "Fensterlayout speichern"
#: mpdevil.py:3007
#: mpdevil.py:3056
msgid "Update database"
msgstr "Datenbank aktualisieren"
#: mpdevil.py:3008
#: mpdevil.py:3057
msgid "Server stats"
msgstr "Serverstatistik"
#: mpdevil.py:3009
#: mpdevil.py:3058
msgid "About"
msgstr "Über"
#: mpdevil.py:3010
#: mpdevil.py:3059
msgid "Quit"
msgstr "Beenden"
#: mpdevil.py:3015
#: mpdevil.py:3064
msgid "Menu"
msgstr "Menü"
#: mpdevil.py:3164
#: mpdevil.py:3213
msgid "A small MPD client written in python"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-18 17:20+0200\n"
"POT-Creation-Date: 2020-05-18 20:45+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"
@ -29,272 +29,284 @@ msgstr ""
msgid "Unknown Album"
msgstr ""
#: mpdevil.py:922 mpdevil.py:1537 mpdevil.py:2222
#: mpdevil.py:919 mpdevil.py:1543 mpdevil.py:2228
msgid "No"
msgstr ""
#: mpdevil.py:927 mpdevil.py:1543 mpdevil.py:2222
#: mpdevil.py:924 mpdevil.py:1549 mpdevil.py:2228
msgid "Title"
msgstr ""
#: mpdevil.py:932 mpdevil.py:1146 mpdevil.py:1546 mpdevil.py:2222
#: mpdevil.py:929 mpdevil.py:1152 mpdevil.py:1552 mpdevil.py:2228
msgid "Artist"
msgstr ""
#: mpdevil.py:937 mpdevil.py:1549 mpdevil.py:2222
#: mpdevil.py:934 mpdevil.py:1555 mpdevil.py:2228
msgid "Album"
msgstr ""
#: mpdevil.py:943 mpdevil.py:1552 mpdevil.py:2222
#: mpdevil.py:940 mpdevil.py:1558 mpdevil.py:2228
msgid "Length"
msgstr ""
#: mpdevil.py:1060
#: mpdevil.py:1066
msgid "all genres"
msgstr ""
#: mpdevil.py:1144
#: mpdevil.py:1150
msgid "Album Artist"
msgstr ""
#: mpdevil.py:1147
#: mpdevil.py:1153
msgid "all artists"
msgstr ""
#: mpdevil.py:1283
#: mpdevil.py:1289
#, python-format
msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)"
msgstr ""
#: mpdevil.py:1285 mpdevil.py:1635
#: mpdevil.py:1291 mpdevil.py:1641
#, python-format
msgid "%(total_tracks)i titles (%(total_length)s)"
msgstr ""
#: mpdevil.py:1540 mpdevil.py:2222
#: mpdevil.py:1546 mpdevil.py:2228
msgid "Disc"
msgstr ""
#: mpdevil.py:1555 mpdevil.py:2222
#: mpdevil.py:1561 mpdevil.py:2228
msgid "Year"
msgstr ""
#: mpdevil.py:1558 mpdevil.py:2222
#: mpdevil.py:1564 mpdevil.py:2228
msgid "Genre"
msgstr ""
#: mpdevil.py:1726
#: mpdevil.py:1732
msgid "Back to current album"
msgstr ""
#: mpdevil.py:1728
#: mpdevil.py:1734
msgid "Search"
msgstr ""
#: mpdevil.py:1739
#: mpdevil.py:1745
msgid "Show lyrics"
msgstr ""
#: mpdevil.py:1933
#: mpdevil.py:1939
msgid "Profile:"
msgstr ""
#: mpdevil.py:1935
#: mpdevil.py:1941
msgid "Name:"
msgstr ""
#: mpdevil.py:1937
#: mpdevil.py:1943
msgid "Host:"
msgstr ""
#: mpdevil.py:1939
#: mpdevil.py:1945
msgid "Password:"
msgstr ""
#: mpdevil.py:1941
#: mpdevil.py:1947
msgid "Music lib:"
msgstr ""
#: mpdevil.py:2028
#: mpdevil.py:2034
msgid "Choose directory"
msgstr ""
#: mpdevil.py:2066
#: mpdevil.py:2072
msgid "Main cover size:"
msgstr ""
#: mpdevil.py:2070
#: mpdevil.py:2076
msgid "Album view cover size:"
msgstr ""
#: mpdevil.py:2074
#: mpdevil.py:2080
msgid "Button icon size:"
msgstr ""
#: mpdevil.py:2076
#: mpdevil.py:2082
msgid "(restart required)"
msgstr ""
#: mpdevil.py:2087
#: mpdevil.py:2093
msgid "Sort albums by:"
msgstr ""
#: mpdevil.py:2087
#: mpdevil.py:2093
msgid "name"
msgstr ""
#: mpdevil.py:2087
#: mpdevil.py:2093
msgid "year"
msgstr ""
#: mpdevil.py:2088
#: mpdevil.py:2094
msgid "Position of playlist:"
msgstr ""
#: mpdevil.py:2088
#: mpdevil.py:2094
msgid "bottom"
msgstr ""
#: mpdevil.py:2088
#: mpdevil.py:2094
msgid "right"
msgstr ""
#: mpdevil.py:2104
#: mpdevil.py:2110
msgid "<b>View</b>"
msgstr ""
#: mpdevil.py:2107
#: mpdevil.py:2113
msgid "<b>Behavior</b>"
msgstr ""
#: mpdevil.py:2112
#: mpdevil.py:2118
msgid "Show stop button"
msgstr ""
#: mpdevil.py:2113
#: mpdevil.py:2119
msgid "Show initials in artist view"
msgstr ""
#: mpdevil.py:2114
#: mpdevil.py:2120
msgid "Show tooltips in album view"
msgstr ""
#: mpdevil.py:2115
#: mpdevil.py:2121
msgid "Use 'Album Artist' tag"
msgstr ""
#: mpdevil.py:2116
#: mpdevil.py:2122
msgid "Send notification on title change"
msgstr ""
#: mpdevil.py:2117
#: mpdevil.py:2123
msgid "Stop playback on quit"
msgstr ""
#: mpdevil.py:2118
#: mpdevil.py:2124
msgid "Play selected albums and titles immediately"
msgstr ""
#: mpdevil.py:2194
#: mpdevil.py:2200
msgid "Choose the order of information to appear in the playlist:"
msgstr ""
#: mpdevil.py:2307 mpdevil.py:3006
#: mpdevil.py:2313 mpdevil.py:3055
msgid "Settings"
msgstr ""
#: mpdevil.py:2321
#: mpdevil.py:2327
msgid "General"
msgstr ""
#: mpdevil.py:2322
#: mpdevil.py:2328
msgid "Profiles"
msgstr ""
#: mpdevil.py:2323
#: mpdevil.py:2329
msgid "Playlist"
msgstr ""
#: mpdevil.py:2574
#: mpdevil.py:2580
msgid "Random mode"
msgstr ""
#: mpdevil.py:2576
#: mpdevil.py:2582
msgid "Repeat mode"
msgstr ""
#: mpdevil.py:2578
#: mpdevil.py:2584
msgid "Single mode"
msgstr ""
#: mpdevil.py:2580
#: mpdevil.py:2586
msgid "Consume mode"
msgstr ""
#: mpdevil.py:2670
#: mpdevil.py:2676
msgid "Show additional information"
msgstr ""
#: mpdevil.py:2696
#: mpdevil.py:2702
msgid "MPD-Tag"
msgstr ""
#: mpdevil.py:2700
#: mpdevil.py:2706
msgid "Value"
msgstr ""
#: mpdevil.py:2732
#: mpdevil.py:2738
#, python-format
msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"channels, %(file_type)s"
msgstr ""
#: mpdevil.py:2786
#: mpdevil.py:2792
msgid "Stats"
msgstr ""
#: mpdevil.py:2879
#: mpdevil.py:2866
msgid "Add"
msgstr ""
#: mpdevil.py:2869
msgid "Play"
msgstr ""
#: mpdevil.py:2872
msgid "Open"
msgstr ""
#: mpdevil.py:2911
#, python-format
msgid "hits: %i"
msgstr ""
#: mpdevil.py:2920
#: mpdevil.py:2969
msgid "searching..."
msgstr ""
#: mpdevil.py:2924
#: mpdevil.py:2973
msgid "lyrics not found"
msgstr ""
#: mpdevil.py:2998
#: mpdevil.py:3047
msgid "Select profile"
msgstr ""
#: mpdevil.py:3005
#: mpdevil.py:3054
msgid "Save window layout"
msgstr ""
#: mpdevil.py:3007
#: mpdevil.py:3056
msgid "Update database"
msgstr ""
#: mpdevil.py:3008
#: mpdevil.py:3057
msgid "Server stats"
msgstr ""
#: mpdevil.py:3009
#: mpdevil.py:3058
msgid "About"
msgstr ""
#: mpdevil.py:3010
#: mpdevil.py:3059
msgid "Quit"
msgstr ""
#: mpdevil.py:3015
#: mpdevil.py:3064
msgid "Menu"
msgstr ""
#: mpdevil.py:3164
#: mpdevil.py:3213
msgid "A small MPD client written in python"
msgstr ""