#!/usr/bin/ksh93

#
# This file is a part of the NsCDE - Not so Common Desktop Environment
# Author: Hegel3DReloaded
# Licence: GPLv3
#

while getopts wfsh OPT
do
   case $OPT in
   w)
      HAS_WINDOWNAME=0
   ;;  
   f)
      HAS_WINDOWNAME=1
   ;;
   s)
      SYSMODE=1
   ;;
   h)
      echo "Usage: ${0##*/} [ -w ] [ -f ] [ -h ]"
   ;;
   esac
done

if [ -z $HAS_WINDOWNAME ]; then
   HAS_WINDOWNAME=0
fi

if [ -z $FVWM_USERDIR ]; then
   if [[ -z $SYSMODE ]]; then
      echo "Error: FVWM_USERDIR is not set."
      exit 2
   fi
fi

echo "#"
echo "# This file is a part of the NsCDE - Not so Common Desktop Environment"
echo "# Author: Hegel3DReloaded"
echo "# Licence: GPLv3"
echo "#"
echo "# WARNING: THIS FILE IS AUTOGENERATED. DO NOT EDIT, IT WILL BE OVERWRITTEN."
echo "# by Subpanels Manager or libexec/NsCDE/generate_subpanels on refresh action."
echo "# Edit ~/.NsCDE/Subpanels.actions instead and regenerate menus."
echo "#"
echo ""

for subpn in {1..20}
do
   if [ "x$SYSMODE" == "x1" ]; then
      spactfile="$NSCDE_DATADIR/defaults/Subpanels.actions"
   else
      egrep -q "^S${subpn},NAME," "$FVWM_USERDIR/Subpanels.actions"
      if (($? == 0)); then
         spactfile="$FVWM_USERDIR/Subpanels.actions"
      else
         spactfile="$NSCDE_DATADIR/defaults/Subpanels.actions"
      fi
   fi

   Name=$(egrep "S${subpn},NAME," $spactfile | cut -d"," -f3)
   if [ "x${Name}" == "x" ]; then
      Name=$(egrep "S${subpn},NAME," "$NSCDE_DATADIR/defaults/Subpanels.actions" | cut -d"," -f3)
   fi

   Width=$(egrep "S${subpn},WIDTH," $spactfile | cut -d"," -f3)
   echo $Width | egrep -q '^[[:digit:]]+$'
   if (($? != 0)); then
      Width=194
   fi

   if [ ! -z $NSCDE_FONT_DPI ]; then
      if (($NSCDE_FONT_DPI > 100 && $NSCDE_FONT_DPI <= 124)); then
         Width=$((Width + ($Width * 25 / 100)))
      elif (($NSCDE_FONT_DPI > 124 && $NSCDE_FONT_DPI <= 148)); then
         Width=$((Width + ($Width * 50 / 100)))
      elif (($NSCDE_FONT_DPI > 148)); then
         Width=$((Width + ($Width * 100 / 100)))
      fi
   fi

   EntryRows=$(egrep "^S${subpn},ENTRY," $spactfile | wc -l)
   Rows=$(($EntryRows + 3))

   Enabled=$(egrep "S${subpn},ENABLED," $spactfile | cut -d"," -f3)
   echo "$Enabled" | egrep -q '0|1'
   if (($? != 0)); then
      Enabled=0
   fi

   echo "InfoStoreAdd NsCDE-Subpanel${subpn}-Name \"$Name\""
   echo "InfoStoreAdd NsCDE-Subpanel${subpn}-Width $Width"
   echo "InfoStoreAdd NsCDE-Subpanel${subpn}-Rows $Rows"
   echo "InfoStoreAdd NsCDE-Subpanel${subpn}-Enabled $Enabled"
   echo "InfoStoreAdd subpanel_NsCDE-Subpanel${subpn}_last_sel_id inst_ico_s${subpn}"
   echo ""
   if (($HAS_WINDOWNAME == 0)); then
      echo "Schedule 3200 Exec exec xdotool search --name \"NsCDE-Subpanel${subpn}\$\" set_window --name \"\$[infostore.NsCDE-Subpanel${subpn}-Name]\" --icon-name \"\$[infostore.NsCDE-Subpanel${subpn}-Name]\""
      echo ""
   fi

   echo "DestroyModuleConfig NsCDE-Subpanel${subpn}: *"

   echo ""

   echo "*NsCDE-Subpanel${subpn}: Colorset 49"
   if (($HAS_WINDOWNAME == 1)); then
      echo "*NsCDE-Subpanel${subpn}: WindowName \$[infostore.NsCDE-Subpanel${subpn}-Name]"
   fi
   echo "*NsCDE-Subpanel${subpn}: Font Shadow=1 0 SE:\$[infostore.font.variable.normal.medium]"
   echo "*NsCDE-Subpanel${subpn}: (Frame 1, Padding 0 0, \\"
   echo " Container(Rows \$[infostore.NsCDE-Subpanel${subpn}-Rows], Columns 1,Frame 0, Padding 4 2))"
   echo ""

   echo "*NsCDE-Subpanel${subpn}: (Size \$[infostore.NsCDE-Subpanel${subpn}-Width] 32, Frame 1, \\"
   echo " Id inst_ico_s${subpn}, PressColorset 26, Title(side, left) \"$[gt.Install Icon]\" Icon NsCDE/FpInstIcon.xpm, \\"
   echo " Action \"Module FvwmScript SubpanelMgr ${subpn}\")"
   echo ""

   id=1
   egrep -v '^#' $spactfile | ${NSCDE_TOOLSDIR}/ised -c 's/\\"/\\\\\\"/g' -o -f - | egrep "^S${subpn},ENTRY,.*,.*,.*,.*" | \
   while IFS="," read subp esign title check iconfile cmdargs
   do
      subp="${subp##*S}"
      newid="Btn-${subpn}-${id}"
      entryid="${newid##*-}"
      if [ "$check" == "FVWM-M" ]; then
         echo "*NsCDE-Subpanel${subp}: \\"
         echo " (Size \$[infostore.NsCDE-Subpanel${subp}-Width] 32, \\"
         echo " Frame 0, Id $newid, PressColorset 26, Title(side, left) \"$title\" \\"
         echo " Icon \"$iconfile\", \\"
         echo " Action (Mouse 1) f_SubpanelItemExec NsCDE-Subpanel${subp} $newid Module ${cmdargs}, \\"
         echo " Action (Mouse 2) Nop, \\"
         echo " Action (Mouse 3) f_SubpanelPropsMenu ${subpn} $entryid \"$title\")"
         echo ""
      elif [ "$check" == "FVWM-F" ]; then
         echo "*NsCDE-Subpanel${subp}: \\"
         echo " (Size \$[infostore.NsCDE-Subpanel${subp}-Width] 32, \\"
         echo " Frame 0, Id $newid, PressColorset 26, Title(side, left) \"$title\" \\"
         echo " Icon \"$iconfile\", \\"
         echo " Action (Mouse 1) f_SubpanelItemExec NsCDE-Subpanel${subp} $newid ${cmdargs}, \\"
         echo " Action (Mouse 2) Nop, \\"
         echo " Action (Mouse 3) f_SubpanelPropsMenu ${subpn} $entryid \"$title\")"
         echo ""
      elif [ "$check" == "NOCHK" ]; then
         echo "*NsCDE-Subpanel${subp}: \\"
         echo " (Size \$[infostore.NsCDE-Subpanel${subp}-Width] 32, \\"
         echo " Frame 0, Id $newid, PressColorset 26, Title(side, left) \"$title\" \\"
         echo " Icon \"$iconfile\", \\"
         echo " Action (Mouse 1) f_SubpanelItemExec NsCDE-Subpanel${subp} $newid Exec exec ${cmdargs}, \\"
         echo " Action (Mouse 2) Nop, \\"
         echo " Action (Mouse 3) f_SubpanelPropsMenu ${subpn} $entryid \"$title\")"
         echo ""
      elif [ "${check%%:*}" == "CHECK" ]; then
         echo "Test (x ${check##*:}) *NsCDE-Subpanel${subp}: \\"
         echo " (Size \$[infostore.NsCDE-Subpanel${subp}-Width] 32, \\"
         echo " Frame 0, Id $newid, PressColorset 26, Title(side, left) \"$title\" \\"
         echo " Icon \"$iconfile\", \\"
         echo " Action (Mouse 1) f_SubpanelItemExec NsCDE-Subpanel${subp} $newid Exec exec ${cmdargs}, \\"
         echo " Action (Mouse 2) Nop, \\"
         echo " Action (Mouse 3) f_SubpanelPropsMenu ${subpn} $entryid \"$title\")"
         echo ""
      else
         echo "Test (x ${cmdargs%% *}) *NsCDE-Subpanel${subp}: \\"
         echo " (Size \$[infostore.NsCDE-Subpanel${subp}-Width] 32, \\"
         echo " Frame 0, Id $newid, PressColorset 26, Title(side, left) \"$title\" \\"
         echo " Icon \"$iconfile\", \\"
         echo " Action (Mouse 1) f_SubpanelItemExec NsCDE-Subpanel${subp} $newid Exec exec ${cmdargs}, \\"
         echo " Action (Mouse 2) Nop, \\"
         echo " Action (Mouse 3) f_SubpanelPropsMenu ${subpn} $entryid \"$title\")"
         echo ""
      fi

      ((id = id + 1))
   done
done

