#!/bin/bash
# coding: utf-8
#
# original filename: /usr/games/mame-language-select.sh
## ver 0.3, 2020-5-07, updated by Careone <emacslocale@126.com>
## ver 0.4, 2020-5-23, updated by Careone

### defines ###
APPNAME='mame-language'
APPVER='0.4'

prefix="/usr/local"
APP_DIR="$prefix/share"

## ---- debug switches ----
DEBUG=1	#1: show debug output; 0: quiet

SHOW_CFG=1
## ==== debug switches ====

## probe current LANG is zh_CN or others, to auto select information
## language
CLANG=`echo $LANG | cut -d'.' -f1`

## back old files with time stamp
#TIMESTAMP="$(date +"%Y-%m-%d_%H%M%S")"
TIMESTAMP="$(date +"%Y-%m-%d")"

### ------------

## line 182 in ~/.mame/mame.ini
## optional:
#
#uifont                    default
#
#uifont                    WenQuanYi Zen Hei Sharp|Regular
#uifont                    文泉驿点阵正黑|Regular
#
#uifont                    WenQuanYi Zen Hei|Regular
#uifont                    文泉驿正黑|Regular
#
#uifont                    WenQuanYi Micro Hei|Regular
#uifont                    文泉驿微米黑|Regular
### ------------

## line 194 in ~/.mame/mame.ini
## optional:
#
#language                  English
#language                  "Chinese (Simplified)"
#language                  "Chinese (Traditional)"

### ------------
## ~/.mame/mame.ini
user_mame_ini=".mame/mame.ini"

## example mame.ini, for English
#default_mame_ini=/usr/share/doc/mame/examples/default.mame.ini.gz

# 简体中文/繁体中文界面的 mame.ini
#zh_mame_ini=/usr/share/games/mame/language/Chinese_Simplified/mame.ini

UI_LANG_STR= #optional: English, "Chinese (Simplified)", "Chinese (Traditional)"

ZH_UIFONT=
DEFAULT_ZH_UIFONT="WenQuanYi Micro Hei"	#推荐选用 '文泉驿微米黑' 作为中文字体
#
declare -a ui_lang user_font font_file

ui_lang[0]="English"
ui_lang[1]="Chinese (Simplified)"
ui_lang[2]="Chinese (Traditional)"

user_font[0]="default"
user_font[1]="WenQuanYi Zen Hei"	#recommended
user_font[2]="WenQuanYi Micro Hei"	#optional 2

font_file[0]="/usr/share/fonts/truetype/wqy/wqy-microhei.ttc"

font_file[1]="/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc"
font_file[2]="/usr/share/fonts/truetype/wqy/wqy-microhei.ttc"

#
## tag 001:
# Usage: usage
# Print the usage.
_usage () {
    cat <<EOF
Usage: $APPNAME [OPTION]

OPTIONS
      -0               删除 ~/.mame/mame.ini 配置文件
      -1, -en          设定 MAME 菜单语言为英文
      -2, -cn          设定 MAME 菜单语言为简体中文
      -3, -tw          设定 MAME 菜单语言为繁体中文

      -v, --version    print the version information and exit
      -h, --help       print this message and exit

Please report bugs to Careone <emacslocale@126.com>.

homepage:

https://sourceforge.net/projects/emacslocale/files/contrib/mame/ 
EOF
}

## tag 002:
_usage_zh_cn () {
cat <<EOF
用法: $APPNAME [选项]

选项
      -0               删除 ~/.mame/mame.ini 配置文件
      -2, -cn          设定 MAME 菜单语言为 简体中文
      -3, -tw          设定 MAME 菜单语言为 繁体中文

      -1, -en          设定 MAME 菜单语言为 英文

      -v, --version    显示版本信息并退出
      -h, --help       显示帮助信息并退出

请报告缺陷给 Careone <emacslocale@126.com>.

下载地址:
https://sourceforge.net/projects/emacslocale/files/mame/
EOF
}

## tag 003:
_usage_mini_zh_cn () {
cat <<EOF
  用法: $APPNAME -2   设置 MAME 菜单语言为 简体中文
        $APPNAME -3   设置 MAME 菜单语言为 繁体中文

        $APPNAME -0   删除 MAME 配置文件 ~/$user_mame_ini
        $APPNAME -1   设置 MAME 菜单语言为 英文
EOF
}

### head end ###

### body ###

echo " 查看已安装的中文字体..."
echo "   说明1: mame 当前只支持 ttf/ttc 格式的中文字体; "
echo "       2: 设定中文字体时, 本程序默认使用搜索到的第一种 [黑体];"
echo

  fc-list | grep -E "黑" | grep -i --color=auto '\.tt[fc]: '

sleep 1 
echo

if fc-list | grep -E "黑" | grep -i '\.tt[fc]: ' &>/dev/null; then
  ZH_UIFONT="`fc-list | grep -E "黑" | grep -i '\.tt[fc]: ' | head -1 | cut -d':' -f2 | sed '/\,/s//\n/g' | tail -1`"
else 
  echo " 错误(E155): 未找到可用的 ttf/ttc 字体格式的中文黑体！" 1>&2
  echo "   建议先安装 '文泉驿微米黑' 或者 '文泉驿正黑' 中文字体，然后再运行 $APPNAME"
  echo "   字体安装命令: sudo apt-get install fonts-wqy-microhei fonts-wqy-zenhei"
  ZH_UIFONT="$DEFAULT_ZH_UIFONT"
  sleep 3
fi

echo " 默认指定的中文字体: '$ZH_UIFONT'"
echo

#
if [ ! -d "$HOME/.mame" ]; then
  mkdir -p "$HOME/.mame"
fi

if [ "$#" -ge 1 ]; then

  for option in "$@"; do
  	case "$option" in
	  -h | --help)
		_usage_zh_cn
		exit 0 ;;

	  -0)
		if [ -f "$HOME/$user_mame_ini" ]; then
		  echo " * 清除 MAME 配置文件 ~/$user_mame_ini ..."
		  rm "$HOME/$user_mame_ini"
		fi
		 ;;


	  -1 | -en)
		UI_LANG="英文"
		if [ -s "$HOME/$user_mame_ini" ]; then
		  echo " * 设置 MAME 菜单语言为: $UI_LANG"
		  sed -i "/^language /clanguage \tEnglish" "$HOME/$user_mame_ini"
		  #echo
		  echo " * 设置 MAME 菜单字体为: ${user_font[0]}"
		  sed -i "/^uifont /cuifont \tdefault" "$HOME/$user_mame_ini"
		else 
		  mame -showconfig > "$HOME/$user_mame_ini"
		  # zcat "$default_mame_ini" > "$HOME/$user_mame_ini"
		fi

		if [ "$?" = 0 ]; then
		  echo " * 完成。请重新运行 mame"
		fi
		 ;;

	  -2 | -cn | -3 | -tw)
	  	# v0.4, 2020-5-22 updated 
	  	
	  	#custom_mame_ini="/usr/share/games/mame/language/Chinese_Simplified/mame.ini"
	  	
	  	case "$option" in
	  	  -2 | -cn) UI_LANG="简体中文"; UI_LANG_STR="Chinese (Simplified)" ;;
		  -3 | -tw) UI_LANG="繁体中文"; UI_LANG_STR="Chinese (Traditional)" ;;
		  *) UI_LANG="未知"; UI_LANG_STR="English" ;;
		 esac	

		## 重要提示：
		#  mame -createconfig 的作用是在“当前目录下”生成  mame.ini 文件.
		#  而 mame 程序读取的是 ~/.mame/mame.ini (~/mame.ini 无效)。
		#  
		# 实际操作是用以下命令来生成默认的 mame.ini 文件(默认为英语界面):
		# mame -showconfig > ~/.mame/mame.ini
		
		echo " * 设置 MAME 菜单语言为: $UI_LANG ..." | grep --color=auto "$UI_LANG"
		echo " * 设置 MAME 菜单字体为: \"$ZH_UIFONT\""		
		echo 
		
		if [ ! -s "$HOME/$user_mame_ini" ]; then
		  echo "   自动生成 MAME 用户配置文件 ~/$user_mame_ini..."
		  
		  mame -showconfig > "$HOME/$user_mame_ini"
		  ##cp -u "$custom_mame_ini" "$HOME/$user_mame_ini"
		fi

		  echo "   更新 MAME 用户配置文件 ~/$user_mame_ini ..." 
		  
		if [ -s "$HOME/$user_mame_ini" ]; then		  	  
		  sed -i "/^language /clanguage \t$UI_LANG_STR" "$HOME/$user_mame_ini"
		  sed -i "/^uifont /cuifont \t\"$ZH_UIFONT\"" "$HOME/$user_mame_ini"
		else
		  echo " 错误(E210): 更新文件 ~/$user_mame_ini 失败！" 1>&2
		  #exit 1 
		fi
		
		if [ "$?" = 0 ]; then
		  echo
		  echo " 完成。请重新运行 mame"
		fi
		 ;;

	  -v | --version)
		echo "$APPNAME $APPVER"
		exit 0 ;;

	    -*)
		:
		#echo "Unrecognized option \`$option'" 1>&2
		exit 1 ;;

	esac
  done


if [ $SHOW_CFG = 1 ]  && [ -s "$HOME/$user_mame_ini" ]; then
  sleep 2
  echo
  echo " * 显示 MAME 菜单语言和字体设置 (~/$user_mame_ini) ..."
  grep -n --color=auto "^uifont " "$HOME/$user_mame_ini"
  grep -n --color=auto "^language " "$HOME/$user_mame_ini"
fi


  else _usage_mini_zh_cn
  exit 0;
fi

  if [ "$?" = 0 ]; then
    echo " Done."
  fi
exit 0;
