ICONS

GUIを作る時に、標準アイコンが用意されていると便利なんですが、
Javaには、Java Look and Feel Graphics Repositoryがあるように、
Tcl/Tkには、標準アイコン・ライブラリのICONSパッケージがあります。

ICONSパッケージの特徴

ICONSパッケージのインストール

icons.tgz または icons.zip のアーカイブを解凍して、アイコン・ライブラリとアイコン拡張をインストールします。
アイコン拡張は、通常の拡張パッケージと同じディレクトリに置きます。
アイコン・ライブラリは、info libraryで示すディレクトリに置かなければなりません。

Tcl/Tk 8.3の場合のインストール例
Tcl/
    lib/
        icons1.1/
            icons.tcl
            pkgIndex.tcl
            viewIcons.tcl
        tcl8.3/
            tkIcons
            tkIcons.kde
            tkIcons.ikons

アイコン・ライブラリ

現在のICONSパッケージには、5種類のアイコン・ライブラリが含まれています。
作者は、WindowsやMacスタイルのアイコンも追加されることを望んでいるようです。

ライブラリ名説明
tkIcons
tkIcons.kde
Linux KDEアイコン
(標準アイコン・ライブラリの候補) - デフォルト(省略時)
tkIcons.ikonsKristof BorreyのiKonsアイコンとLinux KDEアイコン
(標準アイコン・ライブラリの候補)
tkIcons.crystalCrystal アイコン
(標準アイコン・ライブラリの候補)
tkIcons.klassicklassicアイコン
(標準アイコン・ライブラリの候補)
tkIcons.slickSlickアイコン
(標準アイコン・ライブラリの候補)

アイコン拡張

ICONSパッケージには、アイコン・ライブラリを簡単に使うためのICONS拡張が含まれています。
アイコン・ライブラリ名を省略した場合は、tkIcons(tkIcons.kdsと同じ)になります。

package require icons
namespace import icons::*

icons create {actreload16 navhome16}
button .b1 -relief flat -image ::icon::actreload16
button .b2 -relief flat -image ::icon::navhome16
pack .b1 .b2 -side left

-fileオプションで、アイコン・ライブラリ名を指定することができます。

package require icons
namespace import icons::*

icons create -file tkIcons.ikons {actreload16 navhome16}
button .b1 -relief flat -image ::icon::actreload16
button .b2 -relief flat -image ::icon::navhome16
pack .b1 .b2 -side left

アイコン・ブラウザ

ICONSパッケージには、アイコン・ブラウザ(viewIcons.tcl)が添付されているので、
使いたいアイコンを素早く確認できます。
アイコンのサイズは、6,8,10,12,14,16,18,20から選べます。
アイコンにマウスポインタを合わせると、アイコンの説明が表示されます。

アイコンをクリックすると、次のようなTclコードがクリップボードへコピーされます。
これは便利な機能ですね。

image create photo callist16 -data {
   R0lGODlhEAAQAIUAAISu5Iyy5Iyy7Hyu5Hyq7HSm5Gyi7GSe5GSe7GSi7ESa
   7AQ2XPwCBLTW/JTG/Hy6/FSm/DSW/AyG/AR+/AR2/AQyVJS65Mzi/Mze/Lza
   /KTK/JzK/IzG9IzC/Fy2/Jy+7Pz+/Pz6/PT6/Oz2/Oz6/KS+7PzerMRaBPT+
   /OT2/Nzy/ITG/EQCBISChNz2/Jy+5NTu/NTy/HzC9Mzu/GSq5JTK/ITG9AQy
   XAQ6ZAQeNAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAwALAAAAAAQABAAAAaz
   QEBAMCAUDAfEIXEwKBYMQcPxgEQkE4pWO6kwLBdMpqHZOBwcTmfj8X5AIZBI
   LheNSCGOtwQynVAhIiIkKSMqJCtuICcsJC0tKY+PLnoMfCiDIyMpKSqeKZUv
   ICQkm5yeMDAxMnujdoUqKaowKqEofpEtKpItMKyWI4ydKqkzxr5eL4TDMTHG
   zw97KISazCozlFA0NSsc3Rw2Dxwy5B43DAsV6hU37Ow38Dg5DPT19vf0fkEA
   If5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2
   ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDov
   L3d3dy5kZXZlbGNvci5jb20AOw==
}

参考文献