#!/bin/sh
#BK video-wizard (c) Copyright 2007 Barry Kauler
#2007 Lesser GPL licence v2 (http://www.fsf.org/licensing/licenses/lgpl.html)
#written for Puppy v3.00
#bugfix v3.02
#v404 flag to rebuild drive icons (see /sbin/clean_desk_icons).
#Translated for Russian by Valerij Kruvjalis (vkvkvk).

. /etc/rc.d/PUPSTATE

CURRENTX="`readlink /usr/X11R7/bin/X`"
if [ "$CURRENTX" != "Xvesa" ];then
 Xdialog --title "Мастер настройки сервера X Xvesa" --msgbox "Сервер X Xvesa в настоящее время не запущен.
Выберите Мастер настройки сервера Xorg в меню 
-- в нём есть возможность переключиться на использование
сервера Xvesa. Нажмите кнопку OK для выхода..." 0 0
 exit
fi

ALLMODES="`Xvesa -listmodes 2>&1 | grep '^0x' | tr ':' ' ' | tr -s ' ' | cut -f 1,2 -d ' ' | sort -g -k 2 | tr ' ' '|' | tr '\n' ' '`"

#v3.02 verify correct mode-number for 640x480x16... (0x0111)
MODEBASENUM="`echo "$ALLMODES" | tr ' ' '\n' | grep '640x480x16' | cut -f 1 -d '|'`"

if [ -e /tmp/videomode ];then
 CURRENTMODE="`cat /tmp/videomode`"
 #in case new mode no good, ctrl-alt-backspace will come up in safe mode...
 [ "$MODEBASENUM" ] && echo -n "$MODEBASENUM 640x480x16" > /tmp/videomode #v3.02
else
 CURRENTMODE="`cat /etc/videomode`"
fi
echo "$CURRENTMODE" > /tmp/xvesacurrentmode #v3.02
CURRENTNUMBER="`echo -n "$CURRENTMODE" | cut -f 1 -d ' '`"
CURRENTVALS="`echo -n "$CURRENTMODE" | cut -f 2 -d ' '`"

[ -f /etc/xextraoptions ] && CURRENTXOPTIONS="`cat /etc/xextraoptions`"

RADIOSECTION=""
for ONEMODE in $ALLMODES
do
 MODENUMBER="`echo -n "$ONEMODE" | cut -f 1 -d '|'`"
 MODEVALS="`echo -n "$ONEMODE" | cut -f 2 -d '|'`"
 XVAL=`echo -n "$MODEVALS" | cut -f 1 -d 'x'`
 YVAL=`echo -n "$MODEVALS" | cut -f 2 -d 'x'`
 COLDEPTH=`echo -n "$MODEVALS" | cut -f 3 -d 'x'`
 [ $XVAL -lt 640 ] && continue
 [ $YVAL -lt 480 ] && continue
 [ $COLDEPTH -lt 16 ] && continue
 RADIOSTATE="false"
 [ "$CURRENTNUMBER" = "$MODENUMBER" ] && RADIOSTATE="true"
 RADIOSECTION="${RADIOSECTION}
    <radiobutton active=\"${RADIOSTATE}\">
      <label>${MODEVALS}</label>
      <variable>RADIO_${ONEMODE}</variable>
    </radiobutton>
"
done

# icon-name=\"gtk-preferences\"
export MAIN_DIALOG="
<window title=\"Мастер настройки графического сервера Xvesa\">
<hbox>
 <vbox>
  <frame Видео режимы>
   ${RADIOSECTION}
  </frame> 
 </vbox>
 <vbox>
  <text>
    <label>\" \"</label>
  </text>
  <text>
    <label>Добро пожаловать в Мастер настройки сервера X Xvesa!</label>
  </text>
  <text>
    <label>Текущий видеорежим ${CURRENTVALS}. Для изменения выберите необходимый режим в левой панели и нажмите кнопку 'ИЗМЕНИТЬ'. Для сохранения нажмите кнопку 'OK'.</label>
  </text>
  <text>
    <label>ПРИМЕЧАНИЕ: x16 означает 16-битный режим с поддержкой 65536 цветов (HighColor), x24 - 24-битный, 16 миллионов цветов (TrueColor).</label>
  </text>
  <text>
    <label>ВАЖНО: если выбранный видеорежим не работает, нажмите CTRL+ALT+BACKSPACE одновременно. Запомните, пожалуйста, эту комбинацию клавиш. Это стандартный способ аварийного завершения работы графического сервера X в Linux.</label>
  </text>
  <text>
    <label>\" \"</label>
  </text>
  
  <hbox>
   <vbox>
    <text>
     <label>Для специалистов, параметры запуска сервера X:</label>
    </text>
    <entry>
     <default>\"${CURRENTXOPTIONS}\"</default>
     <variable>ENTRY</variable>
    </entry>
   </vbox>
   <text>
    <label>\"    \"</label>
   </text>
   
    
    <button>
      <label>ИЗМЕНИТЬ</label>
      <action type=\"exit\">TESTBUTTON</action>
    </button>
    <button>
      <label>OK</label>
      <action type=\"exit\">OKAYBUTTON</action>
    </button>
    
   
  </hbox>
 </vbox>
</hbox>
</window>
"

RETVALS="`gtkdialog3 --program=MAIN_DIALOG`"

echo "$RETVALS"

[ "`echo "$RETVALS" | grep '^EXIT='`" = "" ] && exit #invalid stuff.
[ "`echo "$RETVALS" | grep 'abort'`" != "" ] && exit #invalid stuff.

CHOSENMODE="`echo "$RETVALS" | grep 'RADIO' | grep '"true"' | cut -f 2 -d '_' | cut -f 1 -d '=' | tr '|' ' '`"
CHOSENBUTTON="`echo "$RETVALS" | grep '^EXIT' | cut -f 2 -d '"'`" #'geany
CHOSENXOPTIONS="`echo "$RETVALS" | grep '^ENTRY' | cut -f 2 -d '"'`" #'geany

echo "CHOSENMODE=$CHOSENMODE CHOSENBUTON=$CHOSENBUTTON"

echo -n "$CHOSENMODE"  > /tmp/videomode
echo -n "$CHOSENXOPTIONS" > /etc/xextraoptions

if [ "$CHOSENBUTTON" = "TESTBUTTON" ];then
 touch /tmp/pup_event_icon_change_flag #v404 see /sbin/clean_desk_icons (called from .xinitrc).
 rm -f /tmp/Xflag #prevent endless restarts. see /usr/X11R7/bin/xwin.
 exec killall X #restart X in new test mode.
fi

if [ "$CHOSENBUTTON" = "OKAYBUTTON" ];then
 echo -n "$CHOSENMODE" > /etc/videomode
 rm -f /tmp/videomode
 rm -f /tmp/Xflag #prevent endless restarts. see xwin*.
fi

if [ $PUPMODE -eq 5 ];then
 if [ ! "`grep 'alias snd\-card\-0' /etc/modprobe.conf`" = "" ];then
  wavplay /usr/share/audio/2barks.wav &
  sleep 3
  killall wavplay 2> /dev/null
 fi
fi

###END###
