#! /bin/bash
#Translated for Russian by Pro and vkvkvk.
MODE="$1"

edit () {
MINUTE=`echo "$TREE" | cut -d " " -f 1`
HOUR=`echo "$TREE" | cut -d " " -f 2`
DAY=`echo "$TREE" | cut -d " " -f 3`
MONTH=`echo "$TREE" | cut -d " " -f 4`
WEEKDAY=`echo "$TREE" | cut -d " " -f 5`
TASK=`echo "$TREE" | cut -d " " -f 6-`
OLD="$MINUTE $HOUR $DAY $MONTH $WEEKDAY $TASK"
	
if [ "$MINUTE" = "*" ]; then MINUTE="любая"; fi
if [ `echo $MINUTE | wc -c` = 2 ]; then MINUTE=0"$MINUTE"; fi #place a zero in front when only 1 digit
if [ "$HOUR" = "*" ]; then HOUR="любой"; fi
if [ `echo $HOUR | wc -c` = 2 ]; then HOUR=0"$HOUR"; fi #place a zero in front when only 1 digit
if [ "$DAY" = "*" ]; then DAY="любое"; else DAY="$DAY."; fi
case $WEEKDAY in
	1)		WEEKDAY="Понедельник";;
	2)		WEEKDAY="Вторник";;
	3)		WEEKDAY="Среда";;
	4)		WEEKDAY="Четверг";;
	5)		WEEKDAY="Пятница";;
	6)		WEEKDAY="Суббота";;
	0)		WEEKDAY="Воскресенье";;
	"*")	WEEKDAY="любой";;
esac
case "$MONTH" in
	1)		MONTH="Январь";;
	2)		MONTH="Февраль";;
	3)		MONTH="Март";;
	4)		MONTH="Апрель";;
	5)		MONTH="Май";;
	6)		MONTH="Июнь";;
	7)		MONTH="Июль";;
	8)		MONTH="Август";;
	9)		MONTH="Сентябрь";;
	10)		MONTH="Октябрь";;
	11)		MONTH="Ноябрь";;
	12)		MONTH="Декабрь";;
	"*")	MONTH="любой";;
esac
ITEMS_HOUR="<item>$HOUR</item>$ITEMS_HOUR"
ITEMS_MINUTE="<item>$MINUTE</item>$ITEMS_MINUTE"
ITEMS_DAY="<item>$DAY</item>$ITEMS_DAY"	
ITEMS_MONTH="<item>$MONTH</item>$ITEMS_MONTH"	
ITEMS_WEEKDAY="<item>$WEEKDAY</item>$ITEMS_WEEKDAY"	
}

new () {
if [ "$MODE" != "-edit" ]; then TASK='gxmessage "Happy Puppy"'; fi
export new_task="
<window title=\"Pschedule - планировщик заданий\">
<vbox>
 <frame Задания>
  <entry><variable>TASK</variable><input>echo $TASK</input></entry>
 </frame>
 <frame Время>
  <hbox>
   <table>
    <width>75</width><height>100</height>
    <label>Час</label>
    <variable>HOUR</variable>
    $ITEMS_HOUR
    <action>. $PROGPATH/func_human_to_cron</action>
    <action>refresh:ENTRY_CRON</action>
    <action>. $PROGPATH/func_cron_to_human -new</action>
    <action>refresh:ENTRY_NEXT</action>
   </table>
   <table>
    <width>75</width><height>100</height>
    <label>Мин.</label>
    <variable>MINUTE</variable>
    $ITEMS_MINUTE
    <action>. $PROGPATH/func_human_to_cron</action>
    <action>refresh:ENTRY_CRON</action>
    <action>. $PROGPATH/func_cron_to_human -new</action>
    <action>refresh:ENTRY_NEXT</action>
   </table>
   <table>
    <width>120</width><height>100</height>
    <label>День</label>
    <variable>WEEKDAY</variable>
	$ITEMS_WEEKDAY
    <action>. $PROGPATH/func_human_to_cron</action>
    <action>refresh:ENTRY_CRON</action>
    <action>. $PROGPATH/func_cron_to_human -new</action>
    <action>refresh:ENTRY_NEXT</action>
   </table>
   <table>
    <width>70</width><height>100</height>
    <label>Число</label>
    <variable>DAY</variable>
    $ITEMS_DAY
    <action>. $PROGPATH/func_human_to_cron</action>
    <action>refresh:ENTRY_CRON</action>
    <action>. $PROGPATH/func_cron_to_human -new</action>
    <action>refresh:ENTRY_NEXT</action>
   </table>
   <table>
    <width>90</width><height>100</height>
    <label>Месяц</label>
    <variable>MONTH</variable>
    $ITEMS_MONTH
    <action>. $PROGPATH/func_human_to_cron</action>
    <action>refresh:ENTRY_CRON</action>
    <action>. $PROGPATH/func_cron_to_human -new</action>
    <action>refresh:ENTRY_NEXT</action>
   </table>
  </hbox>
  <hbox>
   <text><label>Команда запуска Cron:</label></text>
   <vbox>
    <entry><variable>ENTRY_CRON</variable><width>250</width><height>27</height><input>cat /tmp/pschedule-cron</input></entry>
   </vbox>
  </hbox>
  <hbox>
   <text><label>Следующий запуск:</label></text>
   <entry><visible>disabled</visible><variable>ENTRY_NEXT</variable><input>cat /tmp/pschedule-next</input></entry>
  </hbox>
 </frame>
 <hbox>
  <button cancel></button>
  <button ok></button>
 </hbox>
</vbox>
</window>"
I=$IFS; IFS=""
for STATEMENTS in  $(gtkdialog3 --program=new_task --center); do
	eval $STATEMENTS
done
IFS=$I
case $EXIT in
	OK) if [ "$MODE" = "-edit" ]; then
			sed -i -e 's%*%{ð®STARđþ}%g' /var/spool/cron/crontabs/$USER
			OLD=`echo "$OLD" | sed -e 's%*%{ð®STARđþ}%g'`
			PATTERN="s%$OLD%$ENTRY_CRON $TASK%g"
			sed -i -e "$PATTERN" /var/spool/cron/crontabs/$USER
			sed -i -e 's%{ð®STARđþ}%*%g' /var/spool/cron/crontabs/$USER
		else
			echo "$ENTRY_CRON $TASK" >> /var/spool/cron/crontabs/$USER
		fi
		killall -q crond; crond #restart cron
		;;
	*)	exit;;
esac
}

if [ "$MODE" = "-edit" ]; then
	if [ ! "$TREE" ]; then
		FRAME="ОШИБКА"; IMG="dialog-error"; TXT2="Не выбрано задание"
		. $PROGPATH/box_ok
	else
		edit #generate lists of cron command
		new
	fi
else
	new
fi