#!/bin/sh
#Barry Kauler 2008.
#Lesser GPL licence v2 (http://www.fsf.org/licensing/licenses/lgpl.html). 2007 www.puppylinux.com
#a gui to provide choices for "events" -- things that occur at a systems level,
#usually hardware related.
#v411 checkbox to redraw/realign icons.
#v412 workaround, someone exited with invalid settings.
#Translated for Russian by Valerij Kruvjalis (vkvkvk).

SHOWMODE=$1 #v405 optional to modify gui.

. /etc/rc.d/PUPSTATE
PUPPYVERSION="`cat /etc/puppyversion`"
KERNVER="`uname -r`"
. /etc/rc.d/MODULESCONFIG

[ -f /etc/eventmanager ] && . /etc/eventmanager
[ "$ICONDESK" != "true" -a "$ICONDESK" != "false" ] && ICONDESK="true"
[ ! $RAMSAVEINTERVAL ] && RAMSAVEINTERVAL=30
[ "$HOTPLUGNOISY" != "true" -a "$HOTPLUGNOISY" != "false" ] && HOTPLUGNOISY="false"
[ "$AUTOTARGET" != "true" -a "$AUTOTARGET" != "false" ] && AUTOTARGET="true"
[ "$ICONPARTITIONS" != "true" -a "$ICONPARTITIONS" != "false" ] && ICONPARTITIONS="true"
[ "$HOTPLUGON" != "true" -a "$HOTPLUGON" != "false" ] && HOTPLUGON="true"
[ "$BACKENDON" != "true" -a "$BACKENDON" != "false" ] && BACKENDON="true"
[ "$FD0ICON" != "true" -a "$FD0ICON" != "false" ] && FD0ICON="true"


if [ "$SHOWMODE" = "desktop" ];then
 #cutdown, only show choices for settng the desktop icons...
 export MAIN_DIALOG="
<window title=\"Менеджер событий: Значки дисков на Рабочем столе\" icon-name=\"gtk-execute\">
<vbox>

  <text use-markup=\"true\">
  <label>\"<b>Перезапустите сервер X для применения изменений</b>\"</label></text>

<notebook labels=\"Значки на Рабочем столе|Обработчик событий|Флоппи-дисковод\">

 <frame  Значки на Рабочем столе >
 <vbox>
  <text><label>При выбранном параметре на Рабочем столе будет появляться значок для каждого устройства хранения данных. При подключении, например, USB диска появится соответствующий значок, а при отключении - пропадёт. Если обозначения дисков на Рабочем столе не нужны - снимите \"галочку\" (но взамен появится значок, запускающий Pmount). Значки на Рабочем столе отображаются только для удобства и на работу Puppy не оказывают никакого влияния.</label></text>
  <checkbox>
   <label>Отображать значки устройств хранения данных</label>
   <default>${ICONDESK}</default>
   <variable>NEWICONDESK</variable>
  </checkbox>

  <hbox>
  <text><label>\"  \"</label></text>
  <vbox>
  <text><label>Если вышерасположенный параметр включен, можно обозначить значком каждый раздел вместо того, чтобы отображать целые диски:</label></text>
  <checkbox>
   <label>Отображать значком каждый раздел</label>
   <default>${ICONPARTITIONS}</default>
   <variable>NEWICONPARTITIONS</variable>
  </checkbox>
  </vbox>
  </hbox>

  <checkbox>
   <label>Перерисовать и перестроить существующие значки</label>
   <default>false</default>
   <variable>NEWICONWIPE</variable>
  </checkbox>

 </vbox>
 </frame>

 <frame  'Обработчик событий' устройств >
 
 <vbox>
  <text><label>'Обработчик событий' принимает решение, что делать при нажатии на значок. Обычно при нажатии значка диска происходит запуск Pmount или монтирование и открытие в файловом менеджере при нажатии значка раздела, но такое поведение может быть изменено.</label></text>
  
  <text><label>Этот параметр дополняет стандартные возможности и позволяет использовать большее количество соответствующих приложений. В настоящее время можно включить обнаружение видео DVD или аудио CD и запуск медиапроигрывателя:</label></text>
  <checkbox>
   <label>Включить автоопределение соответствующих прилоржений</label>
   <default>${AUTOTARGET}</default>
   <variable>NEWAUTOTARGET</variable>
  </checkbox>
 </vbox>
  
 <vbox>
  <text><label>Обычно необходимо нажать на значок, чтобы 'Обработчик событий' начал работать, но, выбрав данный параметр, можно заставить его работать при подключении устройства. Например, при установке DVD диска последний будет немедленно примонтирован и, если включен параметр выше, то и запущен медиапроигрыватель:</label></text>
  <checkbox>
   <label>Автозапуск 'Обработчика событий' при подключении носителя</label>
   <default>${HOTPLUGNOISY}</default>
   <variable>NEWHOTPLUGNOISY</variable>
  </checkbox>
 </vbox>

 </frame>
 
 <frame  Флоппи-дисковод >
  <text><label>Linux не располагает средствами автоматического определения установки или удаления дискет. Периодические проверки требуют запуска двигателя привода, который достаточно медленный -- хотите ли Вы, чтобы двигатель запускался каждые 4 секунды? Поэтому, если Ваш ПК имеет флоппи-дисковод, выбор данного параметра приведёт к постоянному отображению значка привода на Рабочем столе (независимо от того, установлена ли дискета в приводе!).</label></text>
  <checkbox>
   <label>Отображать значок флоппи-дисковода на Рабочем столе</label>
   <default>${FD0ICON}</default>
   <variable>NEWFD0ICON</variable>
  </checkbox>
 </frame>
 
 </notebook>

 <hbox>
   <button>
    <label>Показать полный Менеджер событий</label>
    <action type=\"exit\">fullem</action>
   </button>
   <button ok></button>
   <button cancel></button>
 </hbox>
</vbox>
</window>
"
else
 export MAIN_DIALOG="
<window title=\"Puppy - Менеджер событий\" icon-name=\"gtk-execute\">
<vbox>

  <text use-markup=\"true\">
  <label>\"<b>Перезапустите сервер X для применения изменений</b>\"</label></text>

<notebook labels=\"Включение|Сохранение сессии|Значки на Рабочем столе|Обработчик событий|Флоппи-дисковод\">

 <frame  Включить 'Puppy - Менеджер событий' >
  <text><label>'Puppy - Менеджер событий' работает в фоновом режиме и управляет автоматическим подключением устройств, включая вывод их значков на Рабочий стол. Он также осуществляет автоматическую загрузку модулей и встроенных программ (firmware), необходимых при обнаружении нового оборудования. В то же время, отключение этого режима заставит Puppy работать также, как и его версии до 4.x, которые не имели поддержки автоматической настройки подключаемых устройств. При этом будет получен некоторый выигрыш в использовании системных ресурсов, что бывает важным при работе на очень старых и медленных ПК, а монтирование и размонтирование разделов можно выполнить и вручную с помощью Pmount.</label></text>
  <checkbox>
   <label>Включить автоматическую загрузку модулей / встроенных программ</label>
   <default>${BACKENDON}</default>
   <variable>NEWBACKENDON</variable>
  </checkbox>

  <hbox>
  <text><label>\"  \"</label></text>
  <vbox>
  <text><label>Если вышеописанный параметр выбран, можно также включить поддержку автоматического подключения на Рабочем столе:</label></text>
  <checkbox>
   <label>Включить поддержку автоматического подключения на Рабочем столе</label>
   <default>${HOTPLUGON}</default>
   <variable>NEWHOTPLUGON</variable>
  </checkbox>
  </vbox>
  </hbox>

 </frame>

 <frame  Периодичность сохранения из RAM >
 <vbox>
  <text><label>При загрузке Puppy определяет т.н. 'режим запуска', который хранится в переменной PUPMODE и зависит от типа установки и использованного оборудования. В настоящее время PUPMODE=${PUPMODE}. При нечётном значении  числа, например 13, Puppy выполняет всю работу в оперативной памяти (RAM), периодически сохраняя текущую сессию на диск -- это позволяет, в частности, продлить срок службы Flash-памяти и уменьшить время выключения ПК. При работе в этом режиме на Рабочем столе отображается значок 'save'. Здесь можно указать периодичность выполнения сохранений:</label></text>
  <hbox>
   <text><label>Интервал сохранений (0=никогда):</label></text>
   <entry max_length=\"4\">
    <default>${RAMSAVEINTERVAL}</default>
    <variable>NEWRAMSAVEINTERVAL</variable>
   </entry>
   <text><label>минут</label></text>
   <text><label>\"       \"</label></text>
  </hbox>
  <text><label>ПРИМЕЧАНИЕ 1: В режиме PUPMODE=77 (мультисессионный DVD) периодичное сохранение отключено, допускается сохранение только вручную (с использованием значка на Рабочем столе) и при выключении ПК.</label></text>
  <text><label>ПРИМЕЧАНИЕ 2: В режиме PUPMODE=5 сохранения недоступны, вышеописанные значения игнорируются.</label></text>
 </vbox>
 </frame>
 
 <frame  Значки на Рабочем столе >
 <vbox>
  <text><label>При выбранном параметре на Рабочем столе будет появляться значок для каждого устройства хранения данных. При подключении, например, USB диска появится соответствующий значок, а при отключении - пропадёт. Если обозначения дисков на Рабочем столе не нужны - снимите \"галочку\" (но взамен появится значок, запускающий Pmount). Значки на Рабочем столе отображаются только для удобства и на работу Puppy не оказывают никакого влияния.</label></text>
  <checkbox>
   <label>Отображать значки устройств хранения данных</label>
   <default>${ICONDESK}</default>
   <variable>NEWICONDESK</variable>
  </checkbox>

  <hbox>
  <text><label>\"  \"</label></text>
  <vbox>
  <text><label>Если вышерасположенный параметр включен, можно обозначить значком каждый раздел вместо того, чтобы отображать целые диски:</label></text>
  <checkbox>
   <label>Отображать значком каждый раздел</label>
   <default>${ICONPARTITIONS}</default>
   <variable>NEWICONPARTITIONS</variable>
  </checkbox>
  </vbox>
  </hbox>

  <checkbox>
   <label>Перерисовать и перестроить существующие значки</label>
   <default>false</default>
   <variable>NEWICONWIPE</variable>
  </checkbox>

 </vbox>
 </frame>


 <frame  'Обработчик событий' устройств >
 
 <vbox>
  <text><label>'Обработчик событий' принимает решение, что делать при нажатии на значок. Обычно при нажатии значка диска происходит запуск Pmount или монтирование и открытие в файловом менеджере при нажатии значка раздела, но такое поведение может быть изменено.</label></text>
  
  <text><label>Этот параметр дополняет стандартные возможности и позволяет использовать большее количество соответствующих приложений. В настоящее время можно включить обнаружение видео DVD или аудио CD и запуск медиапроигрывателя:</label></text>
  <checkbox>
   <label>Включить автоопределение соответствующих прилоржений</label>
   <default>${AUTOTARGET}</default>
   <variable>NEWAUTOTARGET</variable>
  </checkbox>
 </vbox>
  
 <vbox>
  <text><label>Обычно необходимо нажать на значок, чтобы 'Обработчик событий' начал работать, но, выбрав данный параметр, можно заставить его работать при подключении устройства. Например, при установке DVD диска последний будет немедленно примонтирован и, если включен параметр выше, то и запущен медиапроигрыватель:</label></text>
  <checkbox>
   <label>Автозапуск 'Обработчика событий' при подключении носителя</label>
   <default>${HOTPLUGNOISY}</default>
   <variable>NEWHOTPLUGNOISY</variable>
  </checkbox>
 </vbox>

 </frame>
 
 <frame  Флоппи-дисковод >
  <text><label>Linux не располагает средствами автоматического определения установки или удаления дискет. Периодические проверки требуют запуска двигателя привода, который достаточно медленный -- хотите ли Вы, чтобы двигатель запускался каждые 4 секунды? Поэтому, если Ваш ПК имеет флоппи-дисковод, выбор данного параметра приведёт к постоянному отображению значка привода на Рабочем столе (независимо от того, установлена ли дискета в приводе!).</label></text>
  <checkbox>
   <label>Отображать значок флоппи-дисковода на Рабочем столе</label>
   <default>${FD0ICON}</default>
   <variable>NEWFD0ICON</variable>
  </checkbox>
 </frame>
 
 </notebook>

 <hbox>
   <button ok></button>
   <button cancel></button>
 </hbox>
</vbox>
</window>
"
fi

RETSTRING="`gtkdialog3 --program=MAIN_DIALOG --center`"
[ $? -ne 0 ] && exit

eval "$RETSTRING"

#echo "$RETSTRING" #TEST

[ "$EXIT" = "abort" ] && exit
[ "$EXIT" = "Cancel" ] && exit
[ "$EXIT" = "" ] && exit

#v405 it is running with 'desktop' param, now rerun with all tabs...
[ "$EXIT" = "fullem" ] && exec eventmanager

#make sure that RAMSAVEINTERVAL is an integer only...
[ "$NEWRAMSAVEINTERVAL" = "" ] && NEWRAMSAVEINTERVAL=30 #412
NEWRAMSAVEINTERVAL=`echo -n "$NEWRAMSAVEINTERVAL" | sed -e 's/[^0-9]//g'`
#do not allow too-frequent saves...
[ $NEWRAMSAVEINTERVAL -gt 0 -a $NEWRAMSAVEINTERVAL -lt 5 ] && NEWRAMSAVEINTERVAL=5

#v403 if major-switch has turned off hotplug support, only show one icon...
[ "$NEWBACKENDON" = "" ] && NEWBACKENDON="true" #v412
[ "$NEWHOTPLUGON" = "" ] && NEWHOTPLUGON="true" #v412
[ "$NEWBACKENDON" = "false" ] && NEWHOTPLUGON="false"
if [ "$NEWHOTPLUGON" = "false" ];then
 NEWICONDESK="false"
 NEWICONPARTITIONS="false"
 NEWHOTPLUGNOISY="false"
 NEWAUTOTARGET="false"
fi

#v403 /sbin/clean_desk_icons can read this, then wipe all current icons...
[ "$ICONPARTITIONS" != "$NEWICONPARTITIONS" ] && echo "ICONPARTITIONS" > /tmp/pup_event_icon_change_flag
[ "$ICONDESK" != "$NEWICONDESK" ] && echo "ICONDESK" > /tmp/pup_event_icon_change_flag
[ "$NEWICONWIPE" = "true" ] && echo "ICONWIPE" > /tmp/pup_event_icon_change_flag #v411

CONFIG="`cat /etc/eventmanager`"

rsPATTERN="s/^RAMSAVEINTERVAL=.*/RAMSAVEINTERVAL=${NEWRAMSAVEINTERVAL}/"
CONFIG="`echo "$CONFIG" | sed -e "$rsPATTERN"`"

idPATTERN="s/^ICONDESK=.*/ICONDESK=${NEWICONDESK}/"
CONFIG="`echo "$CONFIG" | sed -e "$idPATTERN"`"

ipPATTERN="s/^ICONPARTITIONS=.*/ICONPARTITIONS=${NEWICONPARTITIONS}/"
CONFIG="`echo "$CONFIG" | sed -e "$ipPATTERN"`"

hnPATTERN="s/^HOTPLUGNOISY=.*/HOTPLUGNOISY=${NEWHOTPLUGNOISY}/"
CONFIG="`echo "$CONFIG" | sed -e "$hnPATTERN"`"

atPATTERN="s/^AUTOTARGET=.*/AUTOTARGET=${NEWAUTOTARGET}/"
CONFIG="`echo "$CONFIG" | sed -e "$atPATTERN"`"

hoPATTERN="s/^HOTPLUGON=.*/HOTPLUGON=${NEWHOTPLUGON}/"
CONFIG="`echo "$CONFIG" | sed -e "$hoPATTERN"`"

boPATTERN="s/^BACKENDON=.*/BACKENDON=${NEWBACKENDON}/"
CONFIG="`echo "$CONFIG" | sed -e "$boPATTERN"`"

fiPATTERN="s/^FD0ICON=.*/FD0ICON=${NEWFD0ICON}/"
CONFIG="`echo "$CONFIG" | sed -e "$fiPATTERN"`"

echo "$CONFIG" > /etc/eventmanager

###END###
