5 Commits

Author SHA1 Message Date
Martin Wagner
8783e9b33b preparations for 1.10.2 2023-03-18 13:11:31 +01:00
Martin Wagner
7054643080 fixed dbus timeouts 2023-02-28 00:32:18 +01:00
Martin Wagner
0ee982f7e4 work around inactive but available org.freedesktop.FileManager1 2023-02-28 00:30:41 +01:00
Martin Wagner
2b150f8a19 fixed some return types in MPRIS interface 2023-02-27 23:38:11 +01:00
Martin Wagner
c1b8fd211c test for org.freedesktop.FileManager1 2023-02-26 11:53:32 +01:00
4 changed files with 19 additions and 13 deletions

View File

@@ -3,7 +3,7 @@
<object class="GtkAboutDialog" id="about_dialog">
<property name="modal">True</property>
<property name="program_name">mpdevil</property>
<property name="version">1.10.1</property>
<property name="version">1.10.2</property>
<property name="comments" translatable="yes">A simple music browser for MPD</property>
<property name="authors">Martin Wagner</property>
<property name="translator_credits">Martin Wagner

View File

@@ -17,7 +17,7 @@
</ul>
</description>
<releases>
<release version="1.10.1" date="2023-01-30"/>
<release version="1.10.2" date="2023-03-18"/>
</releases>
<launchable type="desktop-id">org.mpdevil.mpdevil.desktop</launchable>
<screenshots>

View File

@@ -1,4 +1,4 @@
project('mpdevil', version: '1.10.1')
project('mpdevil', version: '1.10.2')
i18n = import('i18n')
gnome = import('gnome')

View File

@@ -185,8 +185,8 @@ class MPRISInterface: # TODO emit Seeked if needed
"HasTrackList": (GLib.Variant("b", False), None),
"Identity": (GLib.Variant("s", "mpdevil"), None),
"DesktopEntry": (GLib.Variant("s", "org.mpdevil.mpdevil"), None),
"SupportedUriSchemes": (GLib.Variant("s", "None"), None),
"SupportedMimeTypes": (GLib.Variant("s", "None"), None)},
"SupportedUriSchemes": (GLib.Variant("as", []), None),
"SupportedMimeTypes": (GLib.Variant("as", []), None)},
self._MPRIS_PLAYER_IFACE:
{"PlaybackStatus": (self._get_playback_status, None),
"LoopStatus": (self._get_loop_status, self._set_loop_status),
@@ -656,6 +656,7 @@ class Client(MPDClient):
self._start_idle_id=None
self.music_directory=None
self.current_cover=None
self._bus=Gio.bus_get_sync(Gio.BusType.SESSION, None) # used for "show in file manager"
# connect
self._settings.connect("changed::socket-connection", lambda *args: self.reconnect())
@@ -868,13 +869,18 @@ class Client(MPDClient):
else:
return None
def can_show_in_file_manager(self, uri):
try:
self._bus.call_sync("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", "StartServiceByName",
GLib.Variant("(su)",("org.freedesktop.FileManager1",0)), GLib.VariantType("(u)"), Gio.DBusCallFlags.NONE, -1, None)
except GLib.GError:
return False
return self.get_absolute_path(uri) is not None
def show_in_file_manager(self, uri):
if (path:=self.get_absolute_path(uri)) is not None:
file=Gio.File.new_for_path(path)
bus=Gio.bus_get_sync(Gio.BusType.SESSION, None)
proxy=Gio.DBusProxy.new_sync(bus, Gio.DBusProxyFlags.NONE, None, "org.freedesktop.FileManager1",
"/org/freedesktop/FileManager1", "org.freedesktop.FileManager1", None)
proxy.call_sync("ShowItems", GLib.Variant("(ass)", ((file.get_uri(),),"")), Gio.DBusCallFlags.NONE, 500, None)
file=Gio.File.new_for_path(self.get_absolute_path(uri))
self._bus.call_sync("org.freedesktop.FileManager1", "/org/freedesktop/FileManager1", "org.freedesktop.FileManager1",
"ShowItems", GLib.Variant("(ass)", ((file.get_uri(),),"")), None, Gio.DBusCallFlags.NONE, -1, None)
def toggle_play(self):
status=self.status()
@@ -1358,7 +1364,7 @@ class SongsList(TreeView):
rect=Gdk.Rectangle()
rect.x,rect.y=x,y
self._menu.set_pointing_to(rect)
self._show_action.set_enabled(self._client.get_absolute_path(uri) is not None)
self._show_action.set_enabled(self._client.can_show_in_file_manager(uri))
self._menu.popup()
def _on_row_activated(self, widget, path, view_column):
@@ -2223,7 +2229,7 @@ class PlaylistView(TreeView):
rect=Gdk.Rectangle()
rect.x,rect.y=x,y
self._menu.set_pointing_to(rect)
self._show_action.set_enabled(self._client.get_absolute_path(uri) is not None)
self._show_action.set_enabled(self._client.can_show_in_file_manager(uri))
self._menu.popup()
def _clear(self, *args):