Atalhos dinâmicos para o menu de mensagens?

7

Sou um desenvolvedor do Unity Mail e gostaria de saber se é possível adicionar um atalho ao Menu de Mensagens no aplicativo (é escrito em Python).

Eu preciso conectar seu user-display a uma função no aplicativo. Por exemplo, isso é necessário para o comando "Marcar tudo como lido".

A especificação diz apenas sobre os atalhos estáticos, que são adicionados ao arquivo .desktop:

  

No arquivo .desktop , um aplicativo pode especificar ações de atalho que podem ser chamadas independentemente de o programa estar sendo executado. A sintaxe dessas ações é definida em ApplicationShortcuts .

    
por Dmitry Shachnev 14.09.2011 / 07:52

2 respostas

3

Sim, embora as ligações criadas à mão não a exponham, você terá que usar as ligações do GObject Introspected para fazer isso. Infelizmente, não há um tutorial que os use ainda.

Para fazer isso, você precisará obter seu IndicateServer e chamar set_menu nele. Que tem como parâmetro o Dbusmenu que você gostaria de fornecer. Existem muitas maneiras de fazer isso, mas deixe-me dar um rápido pseudo código (já que não sou fluente em Python). Espero que alguém com edit privs possa ajudar.

menuserver = Dbusmenu.Server("/my/unique/path")
root = Dbusmenu.Menuitem()
menuserver.set_root(root)

first = Dbusmenu.Menuitem()
first.property_set("label", "First")
first.connect("item-activated", call_me_on_click)
root.child_append(first)

second = Dbusmenu.Menuitem()
second.property_set("label", "Second")
root.append_child(second)

indicateserver.set_menu(menuserver)

Existem outras propriedades que podem ser definidas nos itens de menu para fazer praticamente qualquer coisa que você queira. Você também pode criá-los a partir dos menus GTK, se isso for mais confortável para você usando o DbusmenuGtk.parse_menu_structure() . Há também Documentação da API para DbusMenu .

    
por Ted Gould 26.09.2011 / 20:51
0

Você sempre pode obter o arquivo da área de trabalho para executar um script que você usa para selecionar a ação necessária com base em algum arquivo salvo ou outra indicação.

    
por Martin Owens -doctormo- 26.09.2011 / 19:40