Não é possível ativar o sinal activate_uri ao fazer uma lente

3

Estou tentando desenvolver uma lente para a unidade no Ubuntu 11.10 e não consigo ativar o sinal activate_uri. Este é um extrato do meu código:

def _on_activate_uri (self, scop, uri):
    print "----> " + uri + "<-"
    ret=Unity.ActivationResponse.new(Unity.HandledType.HIDE_DASH,'')
    return ret

e é isso que eu recebo de volta:

TypeError: não é possível converter o valor de retorno para o tipo desejado ../lens/appslens.py:230: Aviso: g_object_get_qdata: assertion G_IS_OBJECT (object)' failed GObject.MainLoop().run() ../lens/appslens.py:230: Warning: g_object_set_qdata_full: assertion G_IS_OBJECT (object) 'falhou   GObject.MainLoop (). Run () ../lens/appslens.py:230: Aviso: g_object_unref: afirmação 'G_IS_OBJECT (object)' falhou   GObject.MainLoop (). Run ()

Alguém tem uma ideia de qual é o meu erro?

Agradecemos antecipadamente pela sua ajuda

    
por pub.david 13.11.2011 / 15:29

2 respostas

1

Eu tenho o mesmo problema e não sei como evitar o erro. No entanto, se você puder conviver com a mensagem de erro feia que faz spam no console, você pode contornar:

No momento em que o erro é lançado, o _on_activate_uri foi executado, portanto, tudo o que você gostaria de fazer lá (impressão, no seu exemplo) deveria ter acontecido. Certamente funciona assim para mim.

Basicamente, escolhendo o esquema URI para os recursos do modelo sabiamente, podemos emular HIDE_DASH ou o comportamento padrão de fallback (use o aplicativo instalado adequado para o esquema uri).

No meu caso, e no seu exemplo, queremos o comportamento HIDE_DASH. Quando o erro é lançado, aparentemente a unidade tenta lidar com a situação abrindo o URI com um aplicativo adequado. Assim, para fazer com que ele se comporte como em HIDE_DASH, basta nos certificarmos de fornecer aos URIs de recursos do nosso modelo um esquema que nenhum aplicativo instalado possa manipular. No meu caso, isso faria com que os URIs começassem com "pidgin-lens: //".

Se os seus URIs começarem com "http: //", o navegador será aberto após _on_activate_uri ser executado, para que o comportamento (NOT_HANDELED / GOTO_DASH_URI) seja facilmente emulado também.

SHOW_DASH provavelmente não pode ser emulado.

    
por Wolfgang Groiss 15.11.2011 / 23:03
1

Parece ser um bug no arquivo Unity gir ou no python-gobject. De qualquer forma, como solução, isso parece funcionar:

ret = Unity.ActivationResponse(handled=Unity.HandledType.HIDE_DASH,goto_uri='')
    
por mhr3 07.12.2011 / 22:17