#!/bin/bash
# Удаление пакетов PFS (PuppyRus), by Zay.
# Версия 0.6. Последнее изменение: 15.01.2013

function export_DIALOG_INFO () {
export DIALOG_INFO="<window title=\"$1\" resizable=\"false\">
<vbox border-width=\"16\"><text><label>\"$2\"</label></text></vbox>
</window>"
}

function export_DIALOG_MESSAGE () {
export DIALOG_MESSAGE="<window title=\"$1\" resizable=\"false\"><vbox>
<vbox border-width=\"12\"><hbox><text use-markup=\"true\"><label>\"$2\"</label></text></hbox></vbox>
<hbox homogeneous=\"true\"><button ok></button></hbox>
</vbox></window>"
}

function export_DIALOG_QUECTION () {
export DIALOG_QUECTION="<window title=\"$1\" resizable=\"false\"><vbox>
<vbox border-width=\"12\"><hbox><text use-markup=\"true\"><label>\"$2\"</label></text></hbox></vbox>
<hbox homogeneous=\"true\"><hbox><button yes></button><button no></button></hbox></hbox>
</vbox></window>"
}

function export_DIALOG_ERROR () {
export DIALOG_ERROR="<window title=\"$1\" resizable=\"false\" icon-name=\"gtk-stop\"><vbox>
<vbox border-width=\"12\"><hbox>
 <pixmap icon_size=\"3\"><input file stock=\"gtk-stop\"></input></pixmap>
 <text use-markup=\"true\"><label>\"$2\"</label></text>
</hbox></vbox>
<hbox homogeneous=\"true\"><button ok></button></hbox>
</vbox></window>"
}

# Подготовка окна диалога:
if [ -d "/etc/packages/install" ]; then
  listpack="$(find /etc/packages/install -mindepth 1 -maxdepth 1 -type d | sort)"
  numpack=1
  chboxlist="`echo "${listpack}" | while read package
    do
      if [ -f "${package}/pfs.files" ]; then
        echo -n "<checkbox>${IFS}<label> $(basename "${package}") </label>${IFS}<variable>PACKAGE_${numpack}</variable>${IFS}<default>no</default>${IFS}<visible>enabled</visible>${IFS}</checkbox>${IFS}${IFS}"
        numpack="$(expr ${numpack} + 1)"
      fi
    done`"
fi
    
if [ "${chboxlist}" = "" ]; then
  echo "No installed packages!"
  export_DIALOG_MESSAGE " Удаление PFS " " Установленные пакеты отсутствуют. "
  gtkdialog --program=DIALOG_MESSAGE --center &
  exit
fi
        
export MAIN_DIALOG="<window title=\" Удаление пакетов \">
<vbox>
 <text><label>\"
Список установленных пакетов: \"</label></text>
 <vbox scrollable=\"true\" height=\"410\" width=\"420\"> 
  ${chboxlist}
 </vbox>
  <hbox>
  <button use-stock=\"true\" label=\"gtk-delete\">
   <label>Удалить</label>
  </button>
  <button cancel>
  </button>  
 </hbox>
</vbox>
</window>"

REST="`gtkdialog --program=MAIN_DIALOG --center`"
eval "$REST"

# Удаление выбранных пакетов:
if [ "$EXIT" = "Удалить" ]; then
  numpack=1
  allpacks=0
  while :;do
    varpack="PACKAGE_${numpack}"
    [ "${!varpack}" = "" ] && break
    [ "${!varpack}" = "true" ] && allpacks="$(expr ${allpacks} + 1)"
    numpack="$(expr ${numpack} + 1)"
  done
  if [ ${allpacks} -gt 0 ]; then
  
    export_DIALOG_QUECTION " Удаление PFS " " Удалить выбранные пакеты (<b>${allpacks}</b>) ? "
    eval "`gtkdialog --program=DIALOG_QUECTION --center`"   
    if [ "$EXIT" = "Yes" ]; then 
    
      export_DIALOG_INFO " Удаление... " " Удаление пакетов... "
      gtkdialog --program=DIALOG_INFO --center & 
      dlgwait=$!
       
      udesk=1
      ufont=1 
      numpack=1 
      echo "${listpack}" | while read package
      do
        varpack="PACKAGE_${numpack}"
        if [ "${!varpack}" = "true" ]; then
          if [ -f "${package}/pfs.files" ]; then   
            grep -q ".desktop" "${package}/pfs.files" && udesk=0
            grep -q "/usr/X11R6/lib/X11/fonts/TTF" "${package}/pfs.files" && ufont=0
            grep -q "/usr/share/fonts/default/TTF" "${package}/pfs.files" && ufont=0
            pfsuninstall "$(basename "${package}")"
            if [ $? -gt 0 ]; then
              export_DIALOG_ERROR " Ошибка! " "  При удалении пакета <b>$(basename "${package}")</b> произошла ошибка! "
              kill ${dlgwait} 2>/dev/null
              gtkdialog --program=DIALOG_ERROR --center &
              exit 1
            fi
          fi
        fi
        numpack="$(expr ${numpack} + 1)"
      done
      
      [ ${udesk} -eq 0 ] && fixmenus
      if [ ${ufont} -eq 0 ]; then
        mfs="$(which mkfontscale)"
        mfd="$(which mkfontdir)"
        for fontdir in "/usr/X11R6/lib/X11/fonts/TTF" "/usr/share/fonts/default/TTF"
        do
          cd "${fontdir}"
          [ "${mfs}" !=  "" ] && "${mfs}" .
          [ "${mfd}" !=  "" ] && "${mfd}" .	
        done
      fi
      export_DIALOG_MESSAGE " Удаление PFS " " Пакеты удалены. "
      kill ${dlgwait} 2>/dev/null
      gtkdialog --program=DIALOG_MESSAGE --center &
    fi
  else
    export_DIALOG_MESSAGE " Удаление PFS " " Пакеты не выбраны. "
    gtkdialog --program=DIALOG_MESSAGE --center &
  fi
fi

exit
