2014年3月21日金曜日

現時点の覚書

こんな物を作ってみたい。
Puppy Linuxでダブルクリックの調整方法が分かったので、それをGUIでやってみたいと思った。
前回Ideskの壁紙変更スクリプト(今見たら、ひどいミスがあったので、いずれ直したい)を
書いてから数年が経過しているので、また「初めてのおつかい」状態。

シェルスクリプト、gtkdialogを使ってみる。
※ 注意 
0)Precise Puppy 5.7.1JP でしか動作確認していません。
動作の保証はしません
隠しファイル(.gtkrc.mine)操作をしています
ダブルクリックの設定は隠しファイル.gtkrc-2.0競合しています
設定を反映させるには再起動が必要です
最悪の場合Puppy Linux自体の不具合が起こります

よって、スクリプトは読むだけにしてください

以上宜しくお願いします。







#! /bin/bash

if test ! -e /root/.gtkrc.mine;then
  touch /root/.gtkrc.mine
  echo "gtk-double-click-time=250" > /root/.gtkrc.mine
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
fi

def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
if [ "$def_time_str" = "" ]; then
  echo "gtk-double-click-time=250" >> /root/.gtkrc.mine
  def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
fi
def_time_value=`echo $def_time_str | cut -c 23-${#def_time_str}`
def_time_tag="<default>"$def_time_value"</default>"

def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
if [ "$def_distance_str" = "" ]; then
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
  def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
fi
def_distance_value=`echo $def_distance_str | cut -c 27-${#def_distance_str}`
def_distance_tag="<default>"$def_distance_value"</default>"

export ok_action='
  new_time_str="gtk-double-click-time="$TIME
  new_distance_str="gtk-double-click-distance="$DISTANCE

  if [ '$def_time_str' = "$new_time_str" -a '$def_distance_str' = "$new_distance_str" ];then
    mes0="設定が変更されていません"
    mes1="何もせずに終了します"
  else
    sed --in-place --expression=s/'$def_time_str'/$new_time_str/ /root/.gtkrc.mine
    sed --in-place --expression=s/'$def_distance_str'/$new_distance_str/ /root/.gtkrc.mine

    mes0="設定ファイル.gtkrc.mineを書き換えました"
    mes1="Xサーバをリスタートして効果を確認してください"
  fi

  export SUB_DIALOG="
    <window title=\"Double Click Adjust\" width_request=\"400\" height_request=\"200\">
      <vbox>
        <text height-request=\"50\">
          <label>"$mes0"</label>
        </text>
        <text height-request=\"50\">
          <label>"$mes1"</label>
        </text>
        <button height-request=\"80\"><label>閉じる</label>
          <action type=\"exit\">exit</action>
        </button>
      </vbox>
    </window>"

  gtkdialog -c --program SUB_DIALOG
'

export MAIN_DIALOG='
  <window title="Double Click Adjust" width_request="400" height_request="200">
    <vbox>
      <text>
        <label>ダブルクリック調整用スライダー</label>
      </text>
      <frame 間隔(ミリ秒)>
        <hscale range-min="250" range-max="2000" range-step="1">
          '$def_time_tag'
          <variable>TIME</variable>
        </hscale>
      </frame>
      <frame 距離(ピクセル)>
        <hscale range-min="5" range-max="100" range-step="1">
          '$def_distance_tag'
          <variable>DISTANCE</variable>
        </hscale>
      </frame>
      <hbox>
        <button ok>
          <action>bash -c "$ok_action"</action>
          <action type="exit">exit</action>
        </button>
        <button cancel></button>
      </hbox>
    </vbox>
  </window>'

gtkdialog -c --program MAIN_DIALOG

0 件のコメント :

コメントを投稿