在我编写的应用程序中,当应用程序从 Unity Dash 拖放到 Gtk 窗口时,Unity 更改了它返回的 Uri 类型。在 13.04(Unity 7.0)中,数据回调收到带有完整路径的 text/uri-list,例如 file://usr/share/applications/APP.desktop
但是现在,它是一个这样的测试/uri 列表:application://APP.desktop
我如何让它提供 APP.desktop 的完整路径?或者我可以使用 uri 获取 AppInfo 对象吗?
答案1
看看文档,您应该能够使用 AppInfoManager 对象的 get_path
在 Python 解释器中运行以下命令:
>>> 从 gi.repository 导入 Unity >>> a = Unity.AppInfoManager.get_instance() >>> a.get_path("gedit.desktop") ‘/usr/share/applications/gedit.desktop’
如您所见,只需传递桌面文件名即可返回桌面文件名的完整路径。
因此,从您的拖放应用程序中 - 确保添加 uri 目标:
widget.drag_dest_add_uri_targets()
连接到 drag_data_get 方法
connect("drag-data-get", self.on_drag_data_get)
def on_drag_data_received(self, widget, drag_context, x,y, data,info, time):
print (data.get_uris())
application://app.desktop
从( )中分离出来string.split(str, 1)[1]
并将其输入到appinfomanager.get_path()
方法中