#!/bin/bash

# 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.

# Bugs to: Jun Kobayashi <kobayashi@ubuntulinux.jp>

TITLE="日本語版セットアップヘルパ"
ZENITY_CMD="zenity --title=$TITLE"

UBUNTU_JA_REPO="deb http://archive.ubuntulinux.jp/ubuntu-ja gutsy/"
UBUNTU_JA_JA_REPO="deb http://archive.ubuntulinux.jp/ubuntu-ja gutsy-ja/"
JAREPO[0]=$UBUNTU_JA_REPO
JAREPO[1]=$UBUNTU_JA_JA_REPO
NUMJAREPO=2

SKYPE_REPO="deb http://download.skype.com/linux/repos/debian/ stable non-free"

SOURCESLIST="/etc/apt/sources.list"
SYNAPTICCMD="/usr/sbin/synaptic --hide-main-window --non-interactive -t $TITLE"

INSTALL_TMPLIST="/tmp/ubuntu-ja-setup-helper.install"

function install_menu {
	universe_packages=`
	         $ZENITY_CMD --list --checklist --height=500 --width=700 \
	           --text="Universeコンポーネントからアプリケーションをインストールすることができます。
以下のアプリケーションはフリーソフトウェアです。" \
	           --column="" --column="パッケージ名" --column="解説" \
	           TRUE	ebview			"辞書ブラウザ" \
	           TRUE	edict-fpw		"和英辞書" \
	           TRUE	gjiten			"日本語辞書" \
	           FALSE	thunderbird	"Thunderbirdメール/ニュースクライアント" \
	           FALSE	sylpheed	"Sylpheedメールクライアント" \
	           FALSE	kazehakase	"風博士ウェブブラウザ" \
		   FALSE	spamassassin-rules-ja	"spamassassin用 日本語フィルタルール" \
	         | sed -e 's/|/ /g'
	`
	multiverse_packages=`
	         $ZENITY_CMD --list --checklist --height=500 --width=700 \
	           --text="Multiverseコンポーネントからパッケージをインストールすることができます。
ubuntu-restricted-extrasパッケージをインストールすることにより、マルチメディアコーデック、Javaプラグイン、
Adobe Flashプラグインなどがセットアップされます。
これらのソフトウェアは、各国の法律で利用や配布が制限されています。
ライセンスについては http://www.ubuntu.com/ubuntu/licensing を参照してください。" \
	           --column="" --column="パッケージ名" --column="解説" \
	           TRUE	ubuntu-restricted-extras	"制限付き拡張パッケージ" \
	           TRUE	xpdf-japanese			"xpdfの日本語サポート" \
	         | sed -e 's/|/ /g'
	`
	japanese_packages=`
	         $ZENITY_CMD --list --checklist --height=500 --width=700 \
	           --text="Japanese Teamのレポジトリからアプリケーションをインストールすることができます。
インストールするパッケージを選択してください。" \
	           --column="" --column="パッケージ名" --column="解説" \
	           TRUE	realplayer		"Real Player 10 (一次配布元から取得)" \
	           TRUE	adobereader-jpn		"Adobe Reader 日本語版 (一次配布元から取得)" \
	           TRUE	adobereader-jpn-ipamonafont	"Adobe Reader用IPAモナーフォント" \
	           TRUE	lha-sjis		"Shift-JISファイル名対応LHA" \
		   FALSE	emacs-env-ja	"Emacs日本語環境" \
		   FALSE	latex-env-ja	"LaTeX日本語環境" \
		   FALSE	latex-extra-ja	"LaTeX日本語環境拡張" \
		   FALSE	jd		"2chブラウザ JD" \
		   FALSE	ochusha		"2chブラウザ おちゅ〜しゃ" \
	         | sed -e 's/|/ /g'
	`
	thirdparty_packages=`
	         $ZENITY_CMD --list --checklist --height=500 --width=700 \
	           --text="サードパーティのレポジトリからアプリケーションをインストールすることができます。
インストールするパッケージを選択してください。" \
	           --column="" --column="パッケージ名" --column="解説" \
		   FALSE	skype	"Skype インターネット電話" \
	         | sed -e 's/|/ /g'
	`
	if [[ `echo "$universe_packages" | wc -w` -gt 0 ]] || [[ `echo "$japanese_packages" | wc -w` -gt 0 ]] ; then
		$SP_CMD -e universe
	fi
	if [[ `echo "$multiverse_packages" | wc -w` -gt 0 ]] ; then
		$SP_CMD -e multiverse
	fi
	if [[ `echo "$japanese_packages" | wc -w` -gt 0 ]] ; then
		add_ja_repositories
	fi
	echo "$thirdparty_packages" | grep -q 'skype' 2>&1 > /dev/null
	if [[ $? -eq 0 ]] ; then
		add_repository "$SKYPE_REPO"
	fi
	packages="${universe_packages} ${multiverse_packages} ${japanese_packages} ${thirdparty_packages}"
	if [[ `echo "$packages"| wc -w` -le 0 ]] ; then
		$ZENITY_CMD --info --text \
"パッケージは選択されませんでした。
$TITLEを終了します。"
		exit 0
	fi
	reload_sources
	install_packages "$packages"

        echo "$multiverse_packages" | grep -q 'xpdf-japanese' 2>&1 > /dev/null
	if [[ $? -eq 0 ]] ; then
		if [ ! -e /usr/share/poppler/cidToUnicode ]; then
			mkdir -p /usr/share/poppler/cidToUnicode
		fi
		if [ -e /usr/share/xpdf/japanese/Adobe-Japan1.cidToUnicode ] && [ ! -e /usr/share/poppler/cidToUnicode/Adobe-Japan1 ]; then
			sudo ln -s /usr/share/xpdf/japanese/Adobe-Japan1.cidToUnicode /usr/share/poppler/cidToUnicode/Adobe-Japan1
		fi
		if [ ! -e /usr/share/poppler/cMap ]; then
			mkdir -p /usr/share/poppler/cMap
		fi
		if [ -e /usr/share/fonts/cmap/adobe-japan1 ] && [ ! -e /usr/share/poppler/cMap/Adobe-Japan1 ]; then
			sudo ln -s /usr/share/fonts/cmap/adobe-japan1 /usr/share/poppler/cMap/Adobe-Japan1
		fi
	fi

        echo "$japanese_packages" | grep -q 'adobereader-jpn' 2>&1 > /dev/null
	if [[ $? -eq 0 ]] ; then
		perl -p -i.ubuntu-ja-old -e 's/^application\/pdf=.*$/application\/pdf=AdobeReader.desktop/' /etc/gnome/defaults.list
		update-desktop-database /usr/share/applications
	fi

        echo "$japanese_packages" | grep -q 'latex-extra-ja' 2>&1 > /dev/null
	if [[ $? -eq 0 ]] ; then
		/usr/sbin/jisftconfig add
		$ZENITY_CMD --info --text \
"LaTeXでjarticleなどのクラスファイルを利用可能な状態にするため、jiftconfig add コマンドを実行しました。"
	fi

        echo "$japanese_packages" | grep -q 'emacs-env-ja' 2>&1 > /dev/null
	if [[ $? -eq 0 ]] && [ -f /usr/share/doc/emacs-env-ja/dot.emacs.example ] && [ ! -f /home/${SUDO_USER}/.emacs ] ; then
		$ZENITY_CMD --info --text \
".emacs のサンプルとして /usr/share/doc/emacs-env-ja/dot.emacs.example がインストールされています。
必要に応じて、ホームディレクトリにコピーして利用してください。"
        fi
}

function add_ja_repositories {
	i=0
	sourcesok=0
	while [[ $i < $NUMJAREPO ]]; do
		grep_sources "${JAREPO[$i]}"
		if [[ $? == 1 ]]; then
			echo "${JAREPO[$i]}" >> $SOURCESLIST
		fi
		let "i += 1"
	done
}

function add_repository {
	repo="$1"
	grep_sources "${repo}"
	if [[ $? == 1 ]]; then
		echo "${repo}" >> $SOURCESLIST
	fi
}

function grep_sources {
	repo="$1"
	if grep -q "^\s*$repo" $SOURCESLIST; then
		exitstatus=0
	else
		exitstatus=1
	fi
	
	return $exitstatus
}

function reload_sources {
	$SYNAPTICCMD --update-at-startup
	return
}

function install_packages {
	packages="$1"
	echo インストールされるパッケージ - \[$packages\]
	if [ -f  $INSTALL_TMPLIST ] ; then
		rm $INSTALL_TMPLIST
	fi
	for p in $packages
	do
		echo -e "${p}\tinstall" >> $INSTALL_TMPLIST
	done
	MSG=`$SYNAPTICCMD --set-selections < $INSTALL_TMPLIST`
        if [ $? -ne 0 ] ; then
		$ZENITY_CMD --info --text \
"インストールに失敗しました。
Synapticパッケージマネージャやアップデートマネージャなど、
他のパッケージマネージャが動作している場合、それらを
終了させてから再度このプログラムを実行してください。"
	elif [ ! -z $MSG ] ; then
		$ZENITY_CMD --info --text \
"Synapticパッケージマネージャが次のメッセージを出力しました:
$MSG"
	fi
	rm $INSTALL_TMPLIST
	return 0
}

function start {
	$ZENITY_CMD --question --text="$TITLEを開始します。
パッケージをインストールするために、インターネット接続が必要です。
接続していない場合は、先にネットワーク設定を行ってください。"
	return $?
}

function finish {
	$ZENITY_CMD --question --text="$TITLEを終了します。"
	return $?
}



#
# Main Routine
#

start
if [ $? -ne 0 ] ; then
	exit 0
fi
if [ -x /usr/bin/software-properties-gtk ] ; then
  SP_CMD=/usr/bin/software-properties-gtk
elif [ -x /usr/bin/software-properties-kde ] ; then
  SP_CMD=/usr/bin/software-properties-kde
else
  $ZENITY_CMD --error --text="software-properties-gtk もしくは software-properties-kde をインストールしてから再度実行してください。"
  exit 1
fi
install_menu
finish

exit 0
