Не получается получить сигнал activ_uri при создании объектива

Я пытаюсь разработать линзу для единства в Ubuntu 11.10 и не могу заставить работать сигнал activ_uri. Это фрагмент моего кода:

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

, и вот что я получаю:

Ошибка типа: невозможно преобразовать возвращаемое значение в требуемый тип ../lens/appslens.py : 230: Предупреждение: g_object_get_qdata: утверждение G_IS_OBJECT (object)' failed GObject.MainLoop().run() ../lens/appslens.py:230: Warning: g_object_set_qdata_full: assertion G_IS_OBJECT (object) 'не удалось GObject.MainLoop (). Run () ../lens/appslens.py:230: Предупреждение: g_object_unref: утверждение `G_IS_OBJECT (object)' не удалось GObject .MainLoop (). Run ()

У кого-нибудь есть идеи, где моя ошибка?

Заранее благодарю за помощь

3
задан 14 May 2012 в 21:31

2 ответа

Кажется, что это ошибка в gir-файле Unity или в python-gobject. Во всяком случае, как обходной путь, это похоже на работу:

ret = Unity.ActivationResponse(handled=Unity.HandledType.HIDE_DASH,goto_uri='')
0
ответ дан 14 May 2012 в 21:31

У меня та же проблема, и я не знаю, как избежать ошибки. Однако, если вы можете жить с уродливым сообщением об ошибке, спамом на консоли, вы можете обойти его:

В момент возникновения ошибки _on_activate_uri был выполнен, таким образом, все, что вы, возможно, захотите сделать там ( печать, в вашем примере) должно было случиться. Это, безусловно, работает для меня.

По сути, мудро выбирая схему URI для ресурсов модели, мы можем эмулировать либо HIDE_DASH, либо стандартное отступление (использовать установленное приложение, подходящее для схемы uri).

В моем случае и в вашем примере мы хотим поведение HIDE_DASH. Когда выдается ошибка, очевидно, единица пытается справиться с ситуацией, открывая URI с подходящим приложением. Таким образом, чтобы заставить его вести себя так же, как в HIDE_DASH, нам просто нужно предоставить URI ресурсов модели со схемой, которую не может обработать ни одно установленное приложение. В моем случае это могло бы заставить URI начинаться с "pidgin-lens: //".

Если ваши URI начинаются с «http: //», браузер будет открыт после запуска _on_activate_uri, поэтому поведение (NOT_HANDELED / GOTO_DASH_URI) также легко эмулируется.

SHOW_DASH, вероятно, нельзя эмулировать.

0
ответ дан 14 May 2012 в 21:31

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

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