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

if [ "$1" != "--all" ];then
  if [ -f /tmp/permanent_pfs_load.log ]; then
    permanents="`cat /tmp/permanent_pfs_load.log | sort -u`"
  fi
fi

# Подготовка окна диалога:
listgen="`find /mnt -mindepth 1 -maxdepth 1 -type d -name '.*.pfs' | sort -f | while read pfsfile
  do
    if [ "$(ls -A "${pfsfile}")" != "" ]; then
      pfsname="$(basename "${pfsfile}")"
      if [ "$1" != "--all" ];then
        if [ "${permanents}" != "" ]; then
          echo "${permanents}" | grep -q -F "${pfsname:1}"
          [ $? -eq 0 ] && continue
        fi
      fi
      if [ -d "${pfsfile}/etc/packages/mount" ];then
        PACKLST="$(find "${pfsfile}/etc/packages/mount" -mindepth 1 -maxdepth 1 -type d -exec basename "{}" \; | sort -f | while read package
          do
            echo -n "<text>${IFS}<label>\" ${package} \"</label>${IFS}</text>"
          done)"
      else
        PACKLST="${IFS}<text>${IFS}<label> (Пакеты отсутствуют) </label>${IFS}</text>${IFS}"
      fi
      echo -n "<vbox>${IFS}<text>${IFS}<label>"'  '"${pfsname:1}"'  '"</label>${IFS}</text>${IFS}<hbox "'homogeneous=\"true\"'">${IFS}<vbox>${IFS} ${PACKLST} ${IFS}</vbox>${IFS}<vbox "'homogeneous=\"true\"'">${IFS}<button>${IFS}<label>"'\"  Отключить  \"'"</label>${IFS}<action "'type=\"exit\"'">""${pfsname}""</action>${IFS}</button>${IFS}</vbox>${IFS}</hbox>${IFS}</vbox>${IFS}<hseparator></hseparator>${IFS}"
    fi
  done`"

[ "${listgen}" = "" ] && listgen="<hbox homogeneous=\"true\"><text>${IFS}<label>\"${IFS}( Нет подключенных пакетов )\"</label>${IFS}</text></hbox>"

[ "${permanents}" != "" ] && SHOWALL="<hbox homogeneous=\"true\">${IFS}<button>${IFS}<label>\"  Показать постоянно подключенные PFS  \"</label>${IFS}<action type=\"exit\">showall</action>${IFS}</button>${IFS}</hbox>"
        
export MAIN_DIALOG="<window title=\" Отключение пакетов \">
<vbox>
 <vbox scrollable=\"true\" height=\"470\" width=\"420\"> 
  ${listgen}
  ${SHOWALL}
 </vbox>
</vbox>
</window>"

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

if [ "${EXIT}" = "showall" ]; then
  "$0" --all
else
  if [ "${EXIT:0:1}" = "." ]; then
    # Отключение PFS:
    export WAIT_DIALOG="<window title=\" Отключение... \" resizable=\"false\"><vbox border-width=\"16\">
    <text><label>\"Отключение пакета...\"</label></text>
    </vbox></window>"
    gtkdialog --program=UMNT_DIALOG --center &
    dlgwait=$!
    fm="$(find "/mnt/${EXIT}" 2>/dev/null | grep -ic "desktop$")"
    [ -d "/mnt/${EXIT}/usr/X11R6/lib/X11/fonts/TTF" -o -d "/mnt/${EXIT}/usr/share/fonts/default/TTF" ] && nf=1 || nf=0
    
    pfsunload "${EXIT:1}"
    status=$?
        
    if [ ${status} -eq 0 ]; then
      cmdfree="$(which pfsramfree)"
      [ "${cmdfree}" != "" ] && "${cmdfree}" "${filemnt}"
      [ ${fm} -gt 0 ] && fixmenus
      if [ ${nf} -gt 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
    fi
    kill ${dlgwait} 2>/dev/null
    
    if [ $status -eq 0 ]; then
      sfsevent="$(which sfs_event_rem)"
      [ "${sfsevent}" != "" ] && "${sfsevent}" "${EXIT:1}" &
      Xdialog --title " Отключение PFS " --msgbox " Пакет \"${EXIT:1}\" отключен. \n"  6 0
    else
      Xdialog --title " Ошибка! " --msgbox " ОШИБКА! Пакет \"${EXIT:1}\" не удалось отключить! "  6 0
    fi
    [ "${SHOWALL}" != "" ] && "$0" || "$0" --all
  fi
fi

exit
