Правильная обработка URI приложений из Unity Dash

В какой-то момент 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?

4
задан 21 April 2014 в 05:27

1 ответ

Смотря на документацию, необходимо смочь использовать 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() метод

4
ответ дан 21 April 2014 в 05:27

Другие вопросы по тегам:

Похожие вопросы: