Como alterar as entradas do menu no AppIndicator, quando ele está sendo executado?

3

Existe uma pergunta semelhante no StackOverflow, mas não me ajudou: Alterar itens durante a execução . Eu tentei perguntar no StackOverflow, mas as pessoas lá não estavam muito ativas: Como alterar o menu GTK no applet Unity Indicator? .

O problema é que, se eu definir a função de mudança fora de Gtk.main (), ela nunca seria executada e, dentro dela, seria executada apenas uma vez. Se eu fizer um loop infinito dentro, Gtk.main () nunca seria executado. Este é o meu código (exemplo padrão modificado).

#!/usr/bin/env python

import sys

from gi.repository import Gtk, Gdk
from gi.repository import AppIndicator3 as appindicator

if __name__ == "__main__":
    ind = appindicator.Indicator.new ("example-simple-client",
                                      "indicator-messages",
                         appindicator.IndicatorCategory.APPLICATION_STATUS)
    ind.set_status (appindicator.IndicatorStatus.ACTIVE)
    ind.set_attention_icon ("indicator-messages-new")

    menu = Gtk.Menu()
    menu_quit = Gtk.MenuItem('Quit')
    def add_item(menu, label):
        menu.append(MenuItem(label))
    menu.append(menu_quit)
    def quit_app(w):
        sys.exit(0)
    menu_quit.connect('activate', quit_app)
    menu_quit.show()
    ind.set_menu(menu)   
    Gtk.main()

Onde coloco adicionando novos itens de menu (ou alterando existentes) no código? Eu sou um novato na programação de GUI ...

    
por Phlya 29.04.2013 / 10:20

1 resposta

3

É preciso usar

GLib.timeout_add(10, handler_timeout)

dentro do código do indicador, em que 10 - é 10 milissegundos, tempo entre a atualização e handler_timeout - função a ser chamada a cada atualização. Dentro desta função, você pode fazer todas as coisas necessárias, como verificar as alterações da área de transferência e editar o menu.

    
por Phlya 30.04.2013 / 10:32