ウィンドウ、システムトレイ、バージョン情報ダイアログでアイコンを指定(覚え書き)
ここでは、PyGTKを使用して、ウィンドウ(ダイアログも同様)・システムトレイのアイコンやバージョン情報ダイアログのロゴといったところでアイコン画像を指定する方法についてを扱う。
スペースの関係で、ここでは覚え書きのみを書き、コード例は別記事で扱う。
ウィンドウやダイアログのアイコン
ここで指定したアイコン画像は、パネルのウィンドウ一覧やウィンドウマネージャ装飾上、他にはCompiz Fusionの「スケール」プラグイン使用時の画像といったところなどでも使用される。
- gtk.Windowオブジェクトのメンバ関数set_icon_from_file()を使用すると、画像ファイルの場所を引数に指定することで、その画像をアイコンとして使用できる・画像形式は自動検出されるが、PNGかXPMが使用されることが多い
- 同様にメンバ関数set_icon()で画像データを指定することもできるが、ここで指定するのは後述のgtk.gdk.Pixbufオブジェクト
- メンバ関数set_icon_name()ではアイコン名による指定ができる
アイコン名による指定というのは、/usr/share/icons/[使用しているアイコンテーマ名]/以下や/usr/share/pixmaps/以下にある画像ファイルのファイル名から拡張子を除いた部分(アイコン名)を指定するもの。
システムトレイのアイコン
gtk.StatusIconオブジェクトの以下のメンバ関数を使用してアイコンを設定する。
- set_from_file()は画像ファイルの場所を指定して開く
- set_from_pixbuf()はgtk.gdk.Pixbufオブジェクトを使用する形
- set_from_icon_name()はアイコン名による指定ができる
- set_from_stock()では、アイコンテーマのストックアイコン*1を「gtk.STOCK_QUIT」のような形で引数に指定する
ストックアイコンの一覧は、デモプログラムpygtk-demo*2にある「Stock Item and Icon Browser」が便利。
バージョン情報ダイアログのロゴアイコン
- set_logo()はgtk.gdk.Pixbufオブジェクトによる指定
- set_logo_icon_name()はアイコン名による指定
ファイルから直接読み込みたい場合はset_logo()の引数にgtk.gdk.pixbuf_new_from_file()を指定するしかない?
gtk.gdk.Pixbufオブジェクト関係
表示可能な画像データを持つgtk.gdk.Pixbufオブジェクトは色々なところで使える。
gtk.gdk.Pixbufオブジェクトを生成する関数について
XPMアイコンの埋め込み方
gtk.gdk.pixbuf_new_from_xpm_data()で使用するXPMデータは、文字列のリストとして埋め込む(C言語の形式のままではダメ)。
例えば
ファイル名: testicon.xpm
/* XPM */ static char * testicon_xpm[] = { "48 48 2 1", " c None", ". c #66C8FF", " ", " ", " .. ", " .. ", " .. ", " .... ", " .... ", " .... ", " ...... ", " ...... ", " ...... ", " ........ ", " ........ ", " ........ ", " .......... ", " .......... ", " .......... ", " ............ ", " .......................................... ", " .............................................. ", " .......................................... ", " ........................................ ", " ...................................... ", " .................................... ", " ................................ ", " .............................. ", " ............................ ", " ........................ ", " ...................... ", " .................... ", " .................... ", " .................... ", " .................... ", " ...................... ", " ...................... ", " ...................... ", " ........................ ", " ........... ........... ", " ......... ......... ", " ......... ......... ", " ....... ....... ", " ...... ...... ", " ..... ..... ", " .... .... ", " ... ... ", " . . ", " ", " "};
というXPMファイルを埋め込むためには
testicon_xpm = ["48 48 2 1", " c None", ". c #66C8FF", " ", " ", " .. ", " .. ", " .. ", (中略) " .... .... ", " ... ... ", " . . ", " ", " ",]
のようにしてPythonの文法でリストに格納してから引数に指定する。最初と最後だけはいじるが、途中の文字列配列の部分はそのまま。
参考URL: