2011-08-15 8 views
15

Oto minimalne przykładem AppIndicator:Powiązania Python AppIndicator -> howto sprawdzić, czy menu jest otwarte?

#!/usr/bin/python 

import gobject 
import gtk 
import appindicator 

if __name__ == "__main__": 
    ind = appindicator.Indicator("example-simple-client", "gtk-execute", appindicator.CATEGORY_APPLICATION_STATUS) 
    ind.set_status (appindicator.STATUS_ACTIVE) 
    menu = gtk.Menu() 
    menu_items = gtk.MenuItem('Quit') 
    menu.append(menu_items) 
    menu_items.connect("activate", gtk.main_quit) 
    menu_items.show() 
    ind.set_menu(menu) 
    gtk.main() 

Niestety dokumentacja na ten temat jest bardzo niekompletny. To, czego szukam, to sposób sprawdzenia, czy menu AppIndicator zostało otwarte przez użytkownika (np. Kliknięto ikonę wskaźnika). Czy istnieje sygnał, który jest emitowany, gdy menu jest otwarte?

+0

Być może dokumentacja jest kompletna, a jej funkcjonalność jest po prostu bardzo ograniczona. Jeśli jeszcze nie próbowałeś, powinieneś udać się na Freenode i spróbować bezpośrednio zapytać ludzi Unity. – dumbmatter

+1

Nie jest niekompletne, było * celowe *. Główną motywacją AppIndicator jest ** spójność ** i ** jednolitość ** wyglądu i ** użycia **. Jeśli ludzie zaczęli tworzyć losowe akcje dla kliknięcia ikony lub klikając ją prawym przyciskiem myszy, wkrótce każda aplikacja zrobi to w swój własny niestandardowy sposób, a Wskaźniki będą tak zepsute, jak Systray. – MestreLion

Odpowiedz

7

Wygląda na to, że odpowiedź jest niestety niestety.

print gobject.signal_list_names(ind) 
('new-icon', 'new-attention-icon', 'new-status', 'new-label', 'x-ayatana-new-label', 'connection-changed', 'new-icon-theme-path') 

Próbowałem wszystkie z nich i żaden z nich nie wydaje się aktywować, gdy wskaźnik jest kliknięty. Dla tego, co warte jest jedności, twórcy wydają się chcieć zachować wszystkie wskaźniki w jednolity sposób, więc jest całkiem możliwe, że jest to celowo ograniczone.

+0

Taka też jest dokumentacja http://developer.ubuntu.com/api/ubuntu-11.04/libappindicator/libappindicator-app-indicator.html#AppIndicator – skrat

+0

Oczywiście, że było to celowe. Spójność i jednolitość zostaną odrzucone, gdy zezwolisz aplikacjom na tworzenie niestandardowych działań dla kliknięcia prawym przyciskiem, dwukrotnego kliknięcia, przesuwania kursora myszy itp. To jest plaga w oknach i cieszę się, że nie jest dozwolona w AppIndicator – MestreLion

Powiązane problemy