В какой-то момент Unity изменила тип Uri, который он возвращал, когда происходила операция перетаскивания приложений из Unity Dash в окно Gtk в приложении, которое я написал. В 13.04 (Unity 7.0) обратный вызов данных получил текстовый / uri-список с полным путем, например, file: //usr/share/applications/APP.desktop
Теперь, однако, это список test / uri, подобный следующему: application: //APP.desktop
Как мне его получить дать мне полный путь к APP.desktop? Или я могу использовать URI, чтобы получить объект AppInfo?
Смотря на документацию, необходимо смочь использовать get_path объекта AppInfoManager
Выполнение следующего в интерпретаторе Python:
>>> from gi.repository import 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()
метод