Manipulação correta de URIs de aplicativo do Unity Dash

4

Em algum momento, o Unity mudou o tipo de Uri que retornou quando ocorreu uma operação de arrastar e soltar de aplicativos do Unity Dash para uma janela do Gtk em um aplicativo que eu escrevi. Em 13.04 (Unity 7.0), a chamada de dados recebeu uma lista de texto / uri com o caminho completo, e. file: //usr/share/applications/APP.desktop

Agora, no entanto, é uma lista de teste / uri assim: application: //APP.desktop

Como faço para obter o caminho completo para o APP.desktop? Ou posso usar o uri para obter um objeto AppInfo?

    
por Ian B. 21.04.2014 / 03:27

1 resposta

4

Olhando para a documentação , você poderá usar o get_path do objeto AppInfoManager

Executando o seguinte no interpretador python:

>>> from gi.repository import Unity
>>> a = Unity.AppInfoManager.get_instance()
>>> a.get_path("gedit.desktop")
'/usr/share/applications/gedit.desktop'

Como você pode ver, apenas passar o nome do arquivo da área de trabalho retorna o caminho completo para o nome do arquivo da área de trabalho.

Assim, a partir do seu aplicativo de arrastar e soltar - certifique-se de adicionar o destino uri:

widget.drag_dest_add_uri_targets()

conecte-se ao método 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())

Divida a partir de application://app.desktop ( string.split(str, 1)[1] ) e alimente isso no método appinfomanager.get_path()

    
por fossfreedom 12.05.2014 / 01:04