#!/bin/sh
#Barry Kauler 2005,2006 GPL www.pupweb.org

PARAM1="$1"

if [ ! -f /etc/xlockscreenparams ];then
 echo -n ' -mousemotion -grabserver -echokeys -echokey X -mode goop'  > /etc/xlockscreenparams
fi
if [ ! -f /etc/xlockrootparams ];then
 echo -n ' -bg white -inroot -mode goop'  > /etc/xlockrootparams
fi
if [ "$PARAM1" = "-inroot" ];then
 CURRMODE="`cat /etc/xlockrootparams | tr -s ' ' | tr ' ' "\n" | tail -n 1`"
else
 CURRMODE="`cat /etc/xlockscreenparams | tr -s ' ' | tr ' ' "\n" | tail -n 1`"
fi
if [ "$CURRMODE" = "-mode" ];then
 CURRMODE=""
fi

if [ "$PARAM1" = "-password" ];then
 MAINDIALOG='<wtitle>xlockパスワードを削除</wtitle>
  <vbox>
   <text><label>"初めてXlockを起動するとパスワードとなるキーワードを尋ねられます。パスワードを変えるには/root/.xlockrcを削除する必要が有り、それら全てはこのボタンで行われます.."</label>
   </text>
   <button>
    <label>クリックするとパスワードをクリアします</label>
    <action>rm -f /root/.xlockrc</action>
    <action>exit:PASSWD</action>
   </button>
  </vbox>
'
 echo "$MAINDIALOG" | gtkdialog2 --stdin
 exit
fi

if [ "$PARAM1" = "-configure" ];then
 PRETEXT="\"このウインドウはXlockをスクリーンロッカーとして設定するためのものです。
Puppy もスクリーンセーバーを持っており, メニュー：デスクトップ ｰｰ>Xのプロパティ設定ｰｰ>screensaver で設定できます。
それは無稼働状態の後スクリーンを空白にします。.
しかしながら、システムには情報保護の必要が有り、手動で起動、パスワードでロックを解除ｰｰロック中は美しい画像を表示、これをXlockが行います。

プレビューの後, あなたの求めるところのOKボタンをクリックしてください...\""
 KILLBOX=""
else
 PRETEXT="\"このウィンドウは画面の背景の生成を選択するためのものです。
注：デスクトップ上のロックアイコンはアニメーションを表示し、画面をロックするだけのものです。
プレビューの後, あなたの求めるところのOKボタンをクリックしてください...\""
 KILLBOX="
 <hbox>
  <text>現在実行中のいかなるアニメーションも強制終了します:</label></text>
  <button>
   <label>強制終了</label>
   <action>exit:KILLED</action>
  </button>
 </hbox>
"
fi

if [ ! "`echo "$PARAM1" | grep --extended-regexp "configure|inroot"`" = "" ];then
 #configure xlock...
 MAINDIALOG="<wtitle>Xlock: 現在の選択は $CURRMODE</wtitle>
 <vbox>
  <text><label>$PRETEXT</label>
  </text>
  $KILLBOX
  <hbox>
   <text><label>Ball: バウンドするボール</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode ball</action>
   </button>
   <button ok><action>exit:ball</action></button>
  </hbox>
  <hbox>
   <text><label>Blank: 黒い画面</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode blank</action>
   </button>
   <button ok><action>exit:blank</action></button>
  </hbox>
  <hbox>
   <text><label>Dclock: 浮遊するデジタル時計</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode dclock</action>
   </button>
   <button ok><action>exit:dclock</action></button>
  </hbox>
  <hbox>
   <text><label>Goop: 溶岩ランプの液滴</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode goop</action>
   </button>
   <button ok><action>exit:goop</action></button>
  </hbox>
  <hbox>
   <text><label>Lyapunov: リアプノフ空間</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode lyapunov</action>
   </button>
   <button ok><action>exit:lyapunov</action></button>
  </hbox>
  <hbox>
   <text><label>Mandelbrot: マンデルブロート集合</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode mandelbrot</action>
   </button>
   <button ok><action>exit:mandelbrot</action></button>
  </hbox>
  <hbox>
   <text><label>Matrix: マトリックス (the movie)</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode matrix</action>
   </button>
   <button ok><action>exit:matrix</action></button>
  </hbox>
  <hbox>
   <text><label>Penrose: ペンローズタイリング</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode penrose</action>
   </button>
   <button ok><action>exit:penrose</action></button>
  </hbox>
  <hbox>
   <text><label>Solitare: ソリティア</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode solitare</action>
   </button>
   <button ok><action>exit:solitare</action></button>
  </hbox>
  <hbox>
   <text><label>Spiral: 螺旋状の軌跡</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode spiral</action>
   </button>
   <button ok><action>exit:spiral</action></button>
  </hbox>
  <hbox>
   <text><label>Swirl: 旋回パターンの生成</label></text>
   <button>
    <label>プレビュー</label>
    <action>xlock -inwindow -mode swirl</action>
   </button>
   <button ok><action>exit:swirl</action></button>
  </hbox>
 </vbox>
"

 RETVAL="`echo "$MAINDIALOG" | gtkdialog2 --stdin`"

 if [ ! "`echo "$RETVAL" | grep "KILLED"`" = "" ];then
  killall xlock
  exit
 fi

 MYCHOICE="`echo "$RETVAL" | grep "EXIT:" | cut -f 2 -d ':'`"

 #extra params chosen here...
 # -delay microseconds  --time between batch repeats
 # -count number        --number of things to do per batch
 # -size number         --size of an object
 # -erasemode           --random_lines, random_squares, venetian, triple_wipe, quad_wipe, circle_wipe, three_circle_wipe, squaretate,  fizzle,   spiral,   slide_lines,   losira, no_fade
 # -erasedelay microseconds --time of each step of erase

 #paranoid precaution...
 if [ "`echo "$MYCHOICE" | grep --extended-regexp "solitare|mandelbrot|swirl|spiral|penrose|matrix|lyapunov|goop|dclock|ball|blank"`" = "" ];then
  MYCHOICE="goop"
 fi

 if [ "$PARAM1" = "-inroot" ];then
  echo -n " -inroot -mode $MYCHOICE" > /etc/xlockrootparams
  XLOCKPARAMS="`cat /etc/xlockrootparams`"
  killall xlock
  xlock $XLOCKPARAMS &
  exit
 else
  echo -n " -grabserver -echokeys -echokey X -mode $MYCHOICE" > /etc/xlockscreenparams
  exit
 fi
fi


if [ ! -f /root/.xlockrc ];then
 XLOCKPARAMS="`cat /etc/xlockscreenparams`"
 rxvt -bg orange -g 36x1 -title "キーワードの作成 (パスワード)" -e xlock $XLOCKPARAMS
else
 xlock `cat /etc/xlockscreenparams`
fi

###end###
