2011-08-15 5 views
15

はAppIndicatorの最小限の例です。Python AppIndicatorバインディング - > howtoがメニューが開いているかどうかを確認しますか?ここ

#!/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() 

残念ながら、これに関するドキュメントは非常に不完全です。私が探しているのは、AppIndicatorメニューがユーザーによって実行されたかどうかをチェックする方法です(インジケータアイコンがクリックされたなど)。それで、メニューが開いたときに放出される信号がありますか?

+0

ドキュメントが完全であり、機能が設計上のものであり、非常に制限されている可能性があります。まだ試していないのであれば、Freenodeに進み、Unityの人々に直接質問してみてください。 – dumbmatter

+1

それは不完全ではない、それは*慎重だった*。 AppIndicatorの*主な動機は、見た目と**使い方**の一貫性**と**統一性**です。人々がアイコンをクリックするためのランダムなアクションを作成したり、右クリックしたりすると、すぐに各アプリケーションが独自の方法で実行され、指標はSystrayのように乱されます。 – MestreLion

答えて

7

答えは残念なことです。

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') 

すべてを試しましたが、インジケータがクリックされたときにアクティブになるように見えませんでした。ユニティ開発者が価値のあることは、すべてのインジケータを統一的な方法で動作させたいと思うため、意図的に制限されている可能性が非常に高いです。

+0

それはまたドキュメントがhttp://developer.ubuntu.com/api/ubuntu-11.04/libappindicator/libappindicator-app-indicator.html#AppIndicator – skrat

+0

と言うことですもちろんこれは意図的でした。アプリケーションが右クリック、ダブルクリック、マウスオーバーなどのカスタムアクションを作成できるようにすると、一貫性と一貫性が失われます。これはWindowsの疫病であり、AppIndicatorでは許可されていないのでうれしいです – MestreLion

関連する問題