#!/bin/bash

# ==================================================================
# gsetime - ver.0.85
#  GUI版 setime スクリプト for PCLinuxOS
#
# このスクリプトは Vine Linux 5.0 の gsetime スクリプトを基にして、
# PCLinuxOS 用として改変したものです。
# Vine Linux の gsetime の開発者である Jun Nishii 氏に謝意を表します。
#                               tomcat <webmaster2@tomcat.nyanta.jp>
# ==================================================================

## 変数設定
SETIME_PATH=/usr/share/setime
source $SETIME_PATH/imelib

## zenity 画面設定
WINDOW_TITLE="gsetime - $VER"
#WINDOW_WIDTH=570
#WINDOW_HEIGHT=360
ICON=/usr/share/pixmaps/gsetime.png

## ロケール設定
setLocale


## システムに問題がないかチェックする
# 問題が在る場合には修正用のスクリプトを実行する
CheckSystem
if [ $NEED_FIX = 1 ]; then
  MSG="$(CheckSystemMsg_$LOCALE)"
  zenity --warning --title="$WINDOW_TITLE" --text="$MSG" --window-icon=$ICON --width=570 --height=360
  if [ $UID = 0 ]; then
    setime-delete-old-settings || exit 1
  else
    gksu -u root -k setime-delete-old-settings || exit 1
  fi
  if [ $LOCALE = ja ]; then
    MSG="処理は正常に終了しました。"
  else
    MSG="Completed."
  fi
  zenity --info --title="$WINDOW_TITLE" --text="$MSG" --window-icon=$ICON --width=400 --height=150
fi


## 現在の入力メソッドを調べる
CheckXIMStatus


## zenity を用いて選択項目を表示
if [ $LOCALE = ja ]; then
  IM=$(zenity --list \
   --radiolist \
   --text="使用する入力メソッドを選択してください。\n現在使用している入力メソッドは <b>$STATUS</b> です。" \
   --hide-column=2 \
   --column="選択" --column=dummy --column="入力メソッド" --column="説明" \
	 --title="$WINDOW_TITLE" \
   --window-icon=$ICON \
   --width=570 --height=360 \
   true ibus ibus "入力メソッドとして IBus を使用します" \
   false scim-bridge scim-bride "入力メソッドとして scim-bridge を使用します" \
   false scim scim "入力メソッドとして scim を使用します" \
   false uim uim "入力メソッドとして uim を使用します" \
   false fcitx fcitx "入力メソッドとして fcitx を使用します" \
   false none none "入力メソッドは使用しません" \
   false status status "現在の入力メソッドに関する情報を表示します")
else
  IM=$(zenity --list \
   --radiolist \
   --text "Select input method.\nCurrent input method is <b>$STATUS</b>." \
   --hide-column 2 \
   --column="Select" --column=dummy --column="Input method" --column="Description" \
   --title="$WINDOW_TITLE" \
   --window-icon=$ICON \
   --width=570 --height=360 \
   true ibus ibus "set IBus as default input method" \
   false scim-bridge scim-bridge "set scim-bridge as default input methods" \
   false scim scim "set scim as default input method" \
   false uim uim "set uim as default input method" \
   false fcitx fcitx "set fcitx as default input method" \
   false none none "do not use input method" \
   false status status "get information about current environment for input methods")
fi


## 何も選択されなかった場合には、そのまま終了
if [ "$IM" = "" ]; then
  unsetImeFuncs
  unset WINDOW_TITLE ICON MSG
  exit 1
fi


## 選択項目の処理
# ステータス表示
if [ $IM = status ]; then
  CheckXIMStatus
  # 表示内容設定
  MSG="$(CurIMEMsg_$LOCALE)\n\n$(EnvVarMsg_$LOCALE)\nXMODIFIERS=${XMODIFIERS}\nGTK_IM_MODULE=${GTK_IM_MODULE}\nQT_IM_MODULE=${QT_IM_MODULE}\nXIM_PROGRAM=${XIM_PROGRAM}"
  # 表示
  zenity --info --title="$WINDOW_TITLE" --window-icon=$ICON --text="$MSG" --width=400 --height=250
#
else
# 入力メソッドの設定
if [ $UID = 0 ]; then
  ASROOT=1
  $SETIME_PATH/setime-sub $IM $ASROOT || exit 1
else
  # （ユーザーで実行している場合は、システムワイドな設定にするか質問）
  if [ $LOCALE = ja ]; then
    ASROOT=$(zenity --list \
     --text="入力メソッドとして <b>$IM</b> が選択されました。\nどちらの設定を行いますか？" \
     --radiolist \
     --column="選択" --column=dummy --column="設定方法" \
     --hide-column=2 \
     --title="$WINDOW_TITLE" \
     --window-icon=$ICON \
     --width=570 --height=250 \
     true 1 "$IM をシステムの標準の入力メソッドとして設定する" \
     false 2 "$IM は現在のユーザー ($USER) のみに有効とする")
  else
    ASROOT=$(zenity --list \
     --text="You selected <b>$IM</b>.\nWhich do you choice for setting ?" \
     --radiolist \
     --column="Select" --column=dummy --column="Setting method" \
     --hide-column=2 \
     --title="$WINDOW_TITLE" \
     --window-icon=$ICON \
     --width=570 --height=250 \
     true 1 "$IM is set as a default input method of the system." \
     false 2 "$IM is set for a current user only.")
  fi
  case $ASROOT in
    1)
      gksu -u root -k eval $SETIME_PATH/setime-sub $IM $ASROOT || exit 1
      ;;
    2)
      eval $SETIME_PATH/setime-sub $IM $ASROOT || exit 1
      ;;
    *)
      unsetImeFuncs
      unset WINDOW_TITLE ICON MSG
      exit 1
      ;;
  esac
fi
#
# 終了ダイアログの表示
MSG="$(eval ExitMsg_$LOCALE $IM $ASROOT)"
zenity --info --title="$WINDOW_TITLE" --text="$MSG" --window-icon=$ICON --width=570 --height=400
fi


## 終了処理
unsetImeFuncs
unset WINDOW_TITLE ICON MSG


exit 0
