ICONS

 ICONSは、Tcl/Tkで作るGUIアプリケーション向けに、 「ファイルを開く」「コピー&ペースト」 などの一般的なツールバーのアイコンとして使える画像データのライブラリです。 「標準」「KDE」など何種類かのタイプがあり、 いずれも16x16と22x22の綺麗なアイコンが含まれているので、 このライブラリの使い方を覚えるだけで綺麗なデスクトップアプリケーションを作ることができます。


インストール

 ICONSはこちらからダウンロードできます。 幾つかのアーカイブが配布されていますが、 中心になるのは「icons.zip」です。 他はオプションのアイコンライブラリですが、 面白いので何種類かダウンロードしてみましょう。 「icons-crystal.zip」「icons-ikons.zip」「icons-kde.zip」 「icons-klassic.zip」「icons-slick.zip」 などがあると思います。
 アーカイブを全部展開したら、iconsディレクトリを Tcl/Tkのライブラリディレクトリに移動します。 その他のディレクトリの中には、「tkIcons.***」というファイルがあるので、 これらをiconsディレクトリの中にコピーします。 インストールはこれで完了です。 iconsディレクトリの中に、「viewIcons.tcl」 というスクリプトがあるので、wishで起動してみましょう。 「Browse」ボタンを押して、適当なtkIcons.***ファイルを指定すると、 その中に含まれるアイコンとそれらの情報が表示されるはずです。

スクリーンショット

tkIcons.kde。KDEを基にしたオフィスツールっぽいデザインです。

スクリーンショット

tkIcons.ikons。可愛い矢印アイコンが特徴。

スクリーンショット

tkIcons.slick。立体的でスマートなデザイン。カコイイです。

スクリーンショット

tkIcons.crystal。カラフルで楽しいデスクトップになりそうですね。


サンプル

package require icons 1.0
namespace import icons::icons

icons create -file /Wintools/tcl/lib/icons/tkIcons.crystal \
  {actreload16 navhome16}

button .b1 -relief flat -image ::icon::actreload16
button .b2 -relief flat -image ::icon::navhome16

pack .b1 -padx 2 -side left
pack .b2 -padx 2 -side left

 とりあえず、 付属ドキュメントで紹介されているサンプルプログラムを真似て作ってみました。 -file で指定するファイルは、tkIcons.kde や tkIcons.crystal などの、 tkIconsファイルのパスを指定します。


サンプルビューア

 上のだけではあんまりなので、少しだけアイコンを実用的に見せるべく、 カット&ペーストができる(ように一見見える)うそ画像ビューアを作ってみました。 アイコンは出るのですが実際に使えるのは左端と右端のみ。 つまり、「開く」と「終了」以外はダミーポンです。

 だまされるなよ!(おまえだろ)

package require icons 1.0
package require img::jpeg
package require img::png
package require img::bmp

::icons::icons create -file /Wintools/tcl/lib/icons/tkIcons \
 {filedocument16 editcut16 navforward16 navback16 viewmag+16 viewmag-16 navhome16}

frame .bar
button .bar.b1 -relief flat -image ::icon::filedocument16 -command openFile
button .bar.b2 -relief flat -image ::icon::editcut16 -command setEditCutMode
button .bar.b3 -relief flat -image ::icon::navforward16 -command turnRight
button .bar.b4 -relief flat -image ::icon::navback16 -command turnLeft
button .bar.b5 -relief flat -image ::icon::viewmag+16 -command zoomin
button .bar.b6 -relief flat -image ::icon::viewmag-16 -command zoomout
button .bar.b7 -relief flat -image ::icon::navhome16 -command exit

# 画像ファイルを読みます。
proc openFile {} {
  global initialDir
  set fileName [tk_getOpenFile -initialdir $initialDir \
    -title 画像ファイルを開く]
  if {$fileName != ""} {
    set initialDir [file dirname $fileName]
    Image1 read $fileName
    adjustCanvasSize
  }
}

# 切り取りモードを切り替えます。
proc setEditCutMode {} {
  global editCutMode
  set editCutMode [expr 1-$editCutMode]
}

# 画像操作後に呼ばれ、キャンバスのサイズを調整します。
proc adjustCanvasSize {} {
  .can configure -width [image width Image1] -height [image height Image1]
}

set can [canvas .can -bg #cccccc]
image create photo Image1
$can create image 0 0 -anc nw -image Image1
bind $can <Button-1> {
  if {$editCutMode == 1} {
    set startx %x
    set starty %y
    set itemline [%W create rectangle $startx $starty $startx $starty \
      -fill {} -outline black -width 1]
  }
}
bind $can <Button1-Motion> {
  if {$editCutMode == 1} {
    %W coords $itemline $startx $starty %x %y
  }
}
bind $can <ButtonRelease-1> {
  if {$editCutMode == 1} {
    tk_messageBox -message "released: $startx $starty %x %y"
    %W delete $itemline
  }
}

foreach e {1 2 3 4 5 6 7} {
  pack .bar.b$e -padx 2 -side left
}
set editCutMode 0
set initialDir [pwd]
pack .bar .can -side top -pady 2 -anc w

スクリーンショット

まあ、これはこれだけ、のものですが…

拡張レビュー分室 top
(first uploaded 2003/05/18 last updated 2003/05/31, MISUMI URANO)