#!/bin/sh
##                            Time-stamp: <2004-08-07 23:20:27 cyamauch>

################################
select_main() {

if [ "$XSCREEN" = "" ]; then
  if [ "$LCD_CHK" = "" ]; then
    MSG_XSCREEN="ǥե(${DEFAULT_XSCREEN})"
  else
    MSG_XSCREEN="ư(Ԥǽͭ)"
  fi
else
  MSG_XSCREEN="$XSCREEN"
fi

if [ "$XDEPTH" = "" ]; then
  MSG_XDEPTH="ǥե(Ū16bpp)"
else
  MSG_XDEPTH="${XDEPTH}bpp"
fi  

if [ "$XVREFRESH" = "" ]; then
  if [ "$LCD_CHK" = "" ]; then
    MSG_XVREFRESH="ǥե"
  else
    MSG_XVREFRESH="ǥե(${LCDXVREFRESH}Hz)"
  fi
else
  MSG_XVREFRESH="${XVREFRESH}Hz"
fi  

if [ "$XMODULE" = "" ]; then
  MSG_XMODULE="ǥե(ư)"
else
  MSG_XMODULE="$XMODULE"
fi  

if [ "$MAXHSYNC" = "" ]; then
  MSG_MAXHSYNC="ǥե(${DEFAULT_MAXHSYNC}kHz)"
else
  MSG_MAXHSYNC="${MAXHSYNC}kHz"
fi  

if [ "$XKBMODEL" = "jp" ]; then
  MSG_XKBMODEL="ܸ106"
else
  MSG_XKBMODEL="Ѹ101"
fi

if [ "$XMOUSE" = "" ]; then
  if [ "$CDPLAMO_CHK" != "" ] ; then
    # CDplamo
    if [ "$LCD_CHK" != "" ] ; then
      # Laptop
      MSG_XMOUSE="ǥե(ۥʤ)"
    else
      MSG_XMOUSE="ǥե(ۥʤ)"
    fi
  else
    # Plamo-x.x
    if [ "$LCD_CHK" != "" ] ; then
      # Laptop
      MSG_XMOUSE="ǥե(USBޥʤ)"
    else
      MSG_XMOUSE="ǥե(ۥʤPS/2)"
    fi
  fi
else
  if [ "$XMOUSE" = "gpm" ]; then
    MSG_XMOUSE="gpmʻ"
  elif [ "$XMOUSE" = "laptop+ps2" ]; then
    MSG_XMOUSE="Laptop USBޥ2or3ܥ"
  elif [ "$XMOUSE" = "laptop+wheel" ]; then
    MSG_XMOUSE="Laptop USBޥϥۥ"
  elif [ "$XMOUSE" = "ps2" ]; then
    MSG_XMOUSE="2ܥ󤢤뤤3ܥޥ"
  elif [ "$XMOUSE" = "wheel" ]; then
    MSG_XMOUSE="ۥեޥ"
  elif [ "$XMOUSE" = "ps2_ps2" ]; then
    MSG_XMOUSE="2ܥ󤢤뤤3ܥPS/2ޥ"
  elif [ "$XMOUSE" = "ps2_wheel" ]; then
    MSG_XMOUSE="ۥ PS/2ޥ"
  elif [ "$XMOUSE" = "usb_ps2" ]; then
    MSG_XMOUSE="2ܥ󤢤뤤3ܥUSBޥ"
  elif [ "$XMOUSE" = "usb_wheel" ]; then
    MSG_XMOUSE="ۥ USBޥ"
  else
    MSG_XMOUSE="`echo ${XMOUSE}|tr a-z A-Z |sed -e 's|PS2|PS/2|'`"
  fi
fi  

dialog --title "XФ" \
--menu "\n\
XФԤʤޤʲɬפʹܤ򤷡ꤷ\n\
åץȥåץޥξ硤ǥեȤǤϲ٤ư\n\
ˤʤäƤޤФȤϸ¤ʤΤǡꤷ\n\
Ǥڡۤϸߤ򼨤Ƥޤ\
\n" 20 76 8 \
"Screen"   "              ${MSG_XSCREEN}" \
"Depth"    "bpp               ${MSG_XDEPTH}" \
"Vsync"    "ľƱȿ      ${MSG_XVREFRESH}" \
"Module"   "ɥ饤Х⥸塼  ${MSG_XMODULE}" \
"Keyboard" "ܡ          ${MSG_XKBMODEL}" \
"Mouse"    "ޥ              ${MSG_XMOUSE}" \
"Hsync"    "ʿƱκȿ${MSG_MAXHSYNC}" \
"OK"       "괰λ" 2> $TMP_REPLY 

}

################################
select_xscreen() {

MODES=""
I=0
while [ ${MODES43[$I]} ] ; do
  MODES="$MODES ${MODES43[$I]} 4:3or5:4⡼"
  let I=I+1
done
I=0
while [ ${MODESWIDE[$I]} ] ; do
  MODES="$MODES ${MODESWIDE[$I]} 磻ɥ⡼"
  let I=I+1
done

dialog --title "̥⡼ɤ" \
--menu "ɤβ̥⡼ɤꤷޤ\
" 21 60 14 \
"Default" "ǥեȤ᤹" \
$MODES 2> $TMP_REPLY

if [ $? = 0 ] ; then
  XSCREEN="`cat $TMP_REPLY`"
  if [ "$XSCREEN" = "Default" ] ; then
    XSCREEN=""
  fi
fi

if [ "$CDPLAMO_CHK" = "" -a "$XSCREEN" != "" -a -x /usr/X11R6/bin/855resolution ] ; then
  # 855GM ʥޥ VBIOS ٤֤ʤåץȥåץޥѤк
  # See http://wiki.0-24.jp/?Linux%2FY2%A4%C7SXGA%2B
  if [ "$LCD_CHK" != "" ]; then
    # Intel Corp. 82852/855GM Integrated Graphics Device
    if [ "$VENDOR" = "0x8086" -a "$DEVICE" = "0x3582" ]; then
      CHK855="`/usr/X11R6/bin/855resolution -l | grep 'Mode ' | grep \" ${XSCREEN},\"`"
      if [ "$CHK855" = "" ] ; then
        NOXXSCREEN="`echo $XSCREEN|tr 'x' ' '`"
        dialog --title "WARNING: VBIOS does not have $XSCREEN mode" --msgbox "\
ꤷ٤ VBIOS ¸ߤޤ/usr/X11R6/bin/855resolution\n\
ȤäơVBIOS ˲٤Ϳɬפޤ\n\
\n\
855resolutionλȤ\n\
# /usr/X11R6/bin/855resolution -l\n\
ȤȡVBIOS λäƤٰФޤ\n\
ɬפʲ٤ Mode ֹ(ʲǤMode 52)
# /usr/X11R6/bin/855resolution 52 ${NOXXSCREEN}\n\
ȤơŪβ٤ VBIOS Ϳޤޥ֡Ȥȡ\n\
񤭤٤ϥꥻåȤΤǡư 855resolution ¹Ԥ\n\
褦 /etc/rc.d/rc.local ˽񤤤Ƥޤ礦" 16 72
      fi
    fi
  fi
fi

}

################################
select_xdepth() {

dialog --title "bppͤ" \
--menu "\nɤbppͤꤷޤ\n\
24bppꤹΤ̤ǤӥǥåפˤäƤϡ24bpp\n\
ǤɽǤʤޤξ 16bpp \n\
Ƥ\n\
" 16 66 4 \
"Default" "ǥեȤ᤹" \
"24" "24bpp(16777216)" \
"16" "16bpp(65536)" \
"8" "8bpp(256)" 2> $TMP_REPLY

if [ $? = 0 ] ; then
  XDEPTH="`cat $TMP_REPLY`"
  if [ "$XDEPTH" = "Default" ] ; then
    XDEPTH=""
  fi
fi

}

################################
select_xvrefresh() {

dialog --title "ľƱȿ" \
--menu "\nɤοľƱȿꤷޤ\n\
磻ɥ⡼ɤβ٤ꤷϡDefault  60 \n\
򤷤Ƥ\n\
" 16 60 5 \
"Default" "ǥեȤ᤹" \
"75" "75Hz(4:3or5:4⡼ɤΤ)" \
"72" "72Hz(4:3or5:4⡼ɤΤ)" \
"70" "70Hz(4:3or5:4⡼ɤΤ)" \
"60" "60Hz" 2> $TMP_REPLY

if [ $? = 0 ] ; then
  XVREFRESH="`cat $TMP_REPLY`"
  if [ "$XVREFRESH" = "Default" ] ; then
    XVREFRESH=""
  fi
fi

}

################################
select_xmodule() {

dialog --title "ɥ饤С⥸塼" \
--menu "\n̾ Default ΤޤޤǤޤޤ\n\
ȥ֥뤬ȯϡvesa ǤߤƤ\n\
" 13 58 3 \
"Default" "ǥե(ư)᤹" \
"vesa" "vesaѥ⥸塼" \
"vga"  "vga⥸塼" 2> $TMP_REPLY

if [ $? = 0 ] ; then
  XMODULE="`cat $TMP_REPLY`"
  if [ "$XMODULE" = "Default" ] ; then
    XMODULE=""
  fi
fi

}

################################
select_xkbmodel() {

dialog --title "ܡɥǥ" \
--menu "\nѤ륭ܡɤ򤷤Ƥ\n\
" 11 58 2 \
"jp" "ܸ106ܡ" \
"us" "Ѹ101ܡ" 2> $TMP_REPLY

if [ $? = 0 ] ; then
  XKBMODEL="`cat $TMP_REPLY`"
fi

}

################################
select_xmouse() {

if [ "$CDPLAMO_CHK" = "" ] ; then

if [ "$LCD_CHK" = "" ] ; then
# desktop
dialog --title "ޥ(Desktop)" \
--menu "\nޥ򤷤Ƥ\n\
" 14 64 5 \
"Default" "ǥեȤ᤹" \
"ps2_ps2" "2ܥ󤢤뤤3ܥ PS/2ޥ" \
"ps2_wheel" "ۥդ PS/2ޥ" \
"usb_ps2" "2ܥ󤢤뤤3ܥ USBޥ" \
"usb_wheel" "ۥդ USBޥ" 2> $TMP_REPLY
else
# laptop
dialog --title "ޥ(Laptop)" \
--menu "\nޥ򤷤Ƥ\n\
laptop+ps2  laptop+wheel 򤹤ȡPS/2USBξΥ\n\
Ѳǽˤʤޤ(USBޥϳƤƤOK!)\n\
" 14 65 3 \
"Default" "ǥեȤ᤹(USBޥϻѤʤ)" \
"laptop+ps2" "USBޥ 2ܥ󤢤뤤3ܥ" \
"laptop+wheel" "USBޥ ۥդ" 2> $TMP_REPLY
fi

else
# for CDplamo

if [ "$LCD_CHK" = "" ] ; then
# desktop
dialog --title "ޥ(Desktop)" \
--menu "\nޥ򤷤Ƥ\n\
USBޥȤϡΤ³ƤƤ\n\
³ƤϡUSBޥȤˤޤ\n\
" 14 64 3 \
"Default" "ǥեȤ᤹" \
"ps2" "2ܥ󤢤뤤3ܥPS/2ޤUSBޥ" \
"wheel" "ۥդPS/2ޤUSBޥ" 2> $TMP_REPLY
else
# laptop
dialog --title "ޥ(Laptop)" \
--menu "\nޥ򤷤Ƥ\n\
laptop+ps2  laptop+wheel 򤹤ȡPS/2USBξΥ\n\
Ѳǽˤʤޤ(USBޥϳƤƤOK!)\n\
Default򤷤硤USBޥ³Ƥϡ\n\
USBޥΤߤѲǽˤʤޤξ硤USBޥϺ\n\
Τ³ƤƤ\n\
" 17 64 3 \
"Default" "ǥեȤ᤹" \
"laptop+ps2" "USBޥ 2ܥ󤢤뤤3ܥ" \
"laptop+wheel" "USBޥ ۥդ" 2> $TMP_REPLY
fi

fi

#if [ "$CDPLAMO_CHK" = "" ] ; then
#dialog --title "ޥΥץȥ" \
#--menu "\nޥ򤷤Ƥ\n\
#USBޥȤϡΤ³ƤƤ\n\
#³ƤϡUSBޥȤˤޤ\n\
#" 14 64 3 \
#"Default" "ǥեȤ᤹" \
#"ps2" "2ܥ󤢤뤤3ܥPS/2ޤUSBޥ" \
#"imps2" "ۥդPS/2ޤUSBޥ" 2> $TMP_REPLY
#else
#dialog --title "ޥΥץȥ" \
#--menu "\nޥ򤷤Ƥ\n\
#USBޥ³Ƥ硤餬ͥˤʤޤ\n\
#gpmʻѤξ硤PS/2USBξΥޥѲǽˤʤޤ\n\
#ۥѤǤޤ\n\
#USBޥϺΤ³ƤƤ\n\
#" 17 64 4 \
#"Default" "ǥեȤ᤹" \
#"ps2" "2ܥ󤢤뤤3ܥPS/2ޤUSBޥ" \
#"imps2" "ۥդPS/2ޤUSBޥ" \
#"gpm" "gpmʻ(PS/2USBξΥޥѲǽ)" 2> $TMP_REPLY
#fi

if [ $? = 0 ] ; then
  XMOUSE="`cat $TMP_REPLY`"
  if [ "$XMOUSE" = "Default" ] ; then
    XMOUSE=""
  fi
fi

}

################################
select_maxhsync() {

dialog --title "ʿƱȿ(kHz)" \
--inputbox "\n٤򲼤СʿƱȿⲼΤǡ\n\
̾ꤹɬפϤޤ\n\
ǥեȤ᤹ϡΤޤ Enter 򲡤\n\
Ƥ\n\
" 14 50 2> $TMP_REPLY

if [ $? = 0 ] ; then
  MAXHSYNC="`cat $TMP_REPLY`"
fi

}

################################################################

TMP_REPLY=`mktemp /tmp/tmp_reply_$$.XXXXXX`

INSTDIR="/sbin"
XFPLAMOCONFIG="${INSTDIR}/xfplamoconfig.sh"
GPMPLAMOCONFIG="${INSTDIR}/gpmplamoconfig.sh"

. $XFPLAMOCONFIG --initonly
#LCD_CHK="hoge"

MAXHSYNC=""

################

while [ 1 ] ; do

  select_main
  RTV=$?
  if [ $? != 0 ] ; then
    break
  fi
  case "`cat $TMP_REPLY`" in
    Screen)
      select_xscreen
      ;;
    Depth)
      select_xdepth
      ;;
    Hsync)
      select_maxhsync
      ;;
    Vsync)
      select_xvrefresh
      ;;
    Module)
      select_xmodule
      ;;
    Keyboard)
      select_xkbmodel
      ;;
    Mouse)
      select_xmouse
      ;;
    *)
      break
      ;;
  esac
done

rm -f $TMP_REPLY

if [ $RTV = 0 ] ; then

  ARGS=""
  if [ "$XSCREEN" != "" ]; then
    ARGS="$ARGS xscreen=$XSCREEN"
  fi
  if [ "$XDEPTH" != "" ]; then
    ARGS="$ARGS xdepth=$XDEPTH"
  fi
  if [ "$XVREFRESH" != "" ]; then
    ARGS="$ARGS xvrefresh=$XVREFRESH"
  fi
  if [ "$XMODULE" != "" ]; then
    ARGS="$ARGS xmodule=$XMODULE"
  fi
  if [ "$MAXHSYNC" != "" ]; then
    ARGS="$ARGS maxhsync=$MAXHSYNC"
  fi
  if [ "$XKBMODEL" != "" ]; then
    ARGS="$ARGS xkbmodel=$XKBMODEL"
  fi
  if [ "$XMOUSE" != "" ]; then
    ARGS="$ARGS xmouse=`echo $XMOUSE | sed -e 's/usb_//' -e 's/ps2_//'`"
    USBMCHK="`echo $XMOUSE|sed -e 's/_ps2//' -e 's/_wheel//'|grep 'usb'`"
  fi

  if [ "$CDPLAMO_CHK" != "" ]; then
    $GPMPLAMOCONFIG $ARGS > /etc/rc.d/rc.gpm
    chmod 755 /etc/rc.d/rc.gpm
  fi
  if [ "$USBMCHK" = "usb" ] ; then
    USBMOUSE_CHK=$USBMCHK $XFPLAMOCONFIG $ARGS > /etc/X11/XF86Config
  else
    $XFPLAMOCONFIG $ARGS > /etc/X11/XF86Config
  fi
  if [ "$CDPLAMO_CHK" = "" ]; then
    dialog --title "Complete!" --msgbox "\n\
/etc/X11/XF86Config ޤ!\n" 7 40
  fi

fi

