From dffdfd73ae827e4fe439072c6c61f62525dcb76e Mon Sep 17 00:00:00 2001 From: Martin Wagner Date: Mon, 18 May 2020 20:47:04 +0200 Subject: [PATCH] added extra buttons to SearchWindow to add/play all results at once --- bin/mpdevil.py | 48 +++++++++++++++- po/de.po | 148 ++++++++++++++++++++++++++----------------------- po/mpdevil.pot | 146 ++++++++++++++++++++++++++---------------------- 3 files changed, 205 insertions(+), 137 deletions(-) diff --git a/bin/mpdevil.py b/bin/mpdevil.py index f376726..61b3c5b 100644 --- a/bin/mpdevil.py +++ b/bin/mpdevil.py @@ -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): diff --git a/po/de.po b/po/de.po index 489ada9..2ba124e 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-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 "View" msgstr "Ansicht" -#: mpdevil.py:2107 +#: mpdevil.py:2113 msgid "Behavior" msgstr "Verhalten" -#: 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 "" diff --git a/po/mpdevil.pot b/po/mpdevil.pot index f15cb92..d6f474d 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-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 \n" "Language-Team: LANGUAGE \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 "View" msgstr "" -#: mpdevil.py:2107 +#: mpdevil.py:2113 msgid "Behavior" 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 ""