インラインアイコンの作成とセット

概要

外部ファイルではなくプログラムに埋め込んだインラインデータからアイコン画像を作ってウィンドウにセットする

Gdk::Pixbuf::create_from_inline() を使ってインラインデータから画像(Gdk::PixBuf)を作る。 後は画像をアイコンリストに登録してGtk::Window::set_default_icon_list()を呼ぶだけである。

インラインデータはコマンドラインから gdk-pixbuf-csource コマンドによって作成する。 例えば hoge.png を inline_icon[] という変数名で inline_icon.h にcスタイルで保存するには

gdk-pixbuf-csource --raw --name=inline_icon hoge.png > inline_icon.h

とコマンドラインに打ち込む。

ソース

icon3.cpp

#include <gtkmm.h>
#include "inline_icon.h"

class MainWin : public Gtk::Window
{
public:
    MainWin();
    virtual ~MainWin(){}
};


MainWin::MainWin()
{
    resize( 100, 100 );
    show_all_children();
}


int main( int argc, char *argv[] )
{
    Gtk::Main kit( argc, argv );

    // デフォルトのアイコンをセット
    try{
        std::vector< Glib::RefPtr< Gdk::Pixbuf > > iconlist;
        iconlist.push_back( Gdk::Pixbuf::create_from_inline( sizeof( inline_icon ), inline_icon ) );
        Gtk::Window::set_default_icon_list( iconlist );
    }
    catch(...)
    {
        Glib::exception_handlers_invoke();
        exit(1);
    }

    MainWin hw;
    Gtk::Main::run( hw );

    return 0;
}

コンパイル

必要なコンパイルオプションは pkg-config を使って取得する。

g++ icon3.cpp -o icon3 `pkg-config gtkmm-2.4 --cflags --libs`

結果