### Copyright (C) 1995, 1996, 1997 Jeppe Buk (buk@imada.ou.dk)
### This program is free software; you can redistribute it and/or modify
### it under the terms of the GNU General Public License as published by
### the Free Software Foundation; either version 2 of the License, or
### (at your option) any later version.
###
### This program is distributed in the hope that it will be useful,
### but WITHOUT ANY WARRANTY; without even the implied warranty of
### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
### GNU General Public License for more details.
###
### You should have received a copy of the GNU General Public License
### along with this program; if not, write to the Free Software
### Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
###
### Sun Feb 22 1998 Japanized by Mashio Motoyama <moto@ba.mbn.or.jp>
###

proc buttonsAndCursors {} {
  # 概観と操作性 / ボタンの設定
  Desc "ボタンとマウスカーソルのスタイル設定"
  ShortDesc "ボタンとカーソル"

  ########################################################################
  # Button styles
  #
  Header butH -text "ボタンの設定" -frame:relief flat
  Help butH \
      "このページではタイトルバー・ボタンの見た目を設定します。"
  Line butL

  for {set i 0} {$i <= 9} {incr i} {
    Label lab$i -text " $i"
    CheckBox but$i
    Help but$i "どのボタンを変更するか選択します。 button no. $i."
    Help lab$i "どのボタンを変更するか選択します。 button no. $i."
    Frame fram$i -entries " lab$i but$i " -orient top
  }
  Label empty -text "" -help ""
  Label butNo -text "ボタン番号:"
  Label space -text "    " -help "" -packFrame:expand no
  Frame framL -entries { empty butNo } -orient top
  Frame butS -entries { framL
    fram1 fram3 fram5 fram7 fram9 space
    fram0 fram8 fram6 fram4 fram2 }

  Help butNo "どのボタンを変更するか選択します。"

  Change {
    if {[regexp "but(\[0-9\])" $changeElm all no] && $changeElm == $all} {
      if {[set but$no] == 1} {
        for {set i 0} {$i <= 9} {incr i} {
          if {$i != $no} {set but$i 0}
        }
      }
    }
  }

  # User shape
  Header coordH -text "ボタンの大きさを入力します。" \
      -frame:relief flat
  Line coordL
  Int coordX -text "X 座標"
  Int coordY -text "Y 座標"
  Radio shade -entries { shadow highlight }
  ExtEntry coord -entries { coordX coordY shade }
  CheckBox butB -text "ユーザスタイル" -pack:expand no
  Window butW -text "座標" -entries { coordH coordL coord }
  Frame butF -entries { butB butW }

  # Pixmap
  CheckBox pixB -text "ピックスマップ" -pack:expand no
  Entry pixEup -text "上:"
  Entry pixEdown -text "下:"
  Frame pixE -entries { pixB pixEup pixEdown }
  Label pixRlabel -text "    ボタンの下をピックスマップで描画しますか？" \
      -packFrame:expand no
  Radio pixRbut -entries { "yes" "no" } -default "yes"
  Frame pixR -entries { pixRlabel pixRbut }
  Frame pixF -entries { pixE pixR } -orient top
  ExtEntry but -entries { butS butF pixF } -count 1 -orient top \
      -packFrame:expand yes -packFrame:fill x

  set userHelp1 [concat \
	  "ユーザ定義ボタンが選択されていれば、ポリゴンでの座標を指定できます。その座標はボタンの幅と高さのパーセンテージで、0 から 100 の間になります。"]
  set userHelp2 [concat \
	  "更に、ラインの色調を(影かハイライト)指定できます。"]
  # concat eats newline...
  set userHelp "$userHelp1\n\n$userHelp2"
  
  Help coordH $userHelp
  Help coordX "このポイントの X 座標を指定します。"
  Help coordY "このポイントの Y 座標を指定します。"
  Help shade "このポイントへ至るラインの色調を選択します。"
  Help butB $userHelp
  Help butW $userHelp

  set pixmapHelp1 [concat\
	  "ピックスマップボタンが押されていれば、二つまでのピックスマップを指定できます。\"上\"のピックスマップのみ指定しているのであれば、それはあらゆる状況下で使われます。\"下\"のピックスマップも指定してあるのであれば、それは\"下\"になっているときに使われます。"]
  set pixmapHelp2 [concat\
	  "ボタンの下をピックスマップ描画するかどうか指定できます。これが選択されているのであれば、FVWM は最初にこのボタンを描画し、それをピックスマップで満たします。これが選択されていないならば、FVWM はボタンの全ての領域をピックスマップで満たします。"]
  # concat eats newline...
  set pixmapHelp "$pixmapHelp1\n\n$pixmapHelp2"

  Help pixB $pixmapHelp
  Help pixEup "\"上\"で使うピックスマップを入力します。"
  Help pixEdown "\"下\"で使うピックスマップを入力します。"
  Help pixRlabel "FVWM がボタンを描画するかどうか選択します。"
  Help pixRbut "FVWM がボタンを描画するかどうか選択します。"

  Change {
    if {$changeElm == "butB"} {
      if {$butB == 1} {
        set pixB 0
        Disable pixEup pixEdown pixR
        Enable butW
      } else {
        Disable butW
      }
    }
    if {$changeElm == "pixB"} {
      if {$pixB == 1} {
        set butB 0
        Disable butW
        Enable pixEup pixR
        if { $pixEup != "" } { Enable pixEdown }
      } else {
        Disable pixEup pixEdown pixR
      }
    }
    if { $changeElm == "pixEup" } {
      if { $pixEup == "" } { Disable pixEdown } else { Enable pixEdown }
    }
  }

  Save {
    forevery but {
      set no -1
      for { set i 0 } { $i < 10 } { incr i } {
        if { [set but$i] == 1 } { set no $i }
      }
      if { $butB == 1 && $no != -1 } {
        # User style
        set coords 0
        set buttonStyle ""
        forevery coord {
          if { $coordX != "" && $coordY != "" } {
            append buttonStyle " ${coordX}x${coordY}@$shade(index)"
            incr coords
          }
        }
        if { $coords > 0 } {
          print "ButtonStyle\t$no $coords$buttonStyle"
        } else {
          error "No coordinates set for button $no"
        }
      }
      if { $pixB == 1 && $no != -1 && $pixEup != "" } {
        # Pixmap
        set buttonStyle "Pixmap $pixEup"
        if { $pixRbut(name) == "no" } { append buttonStyle " -- Flat" }
        print "ButtonStyle\t$no $buttonStyle"
        if { $pixEdown != "" } {
	  set buttonStyle "Pixmap $pixEdown"
          if { $pixRbut(name) == "no" } { append buttonStyle " -- Flat" }
          print "ButtonStyle\t$no ActiveDown $buttonStyle"
	}
      }
    }
  }
  #
  ########################################################################
}
