#!/bin/sh
# (c) Robert Shingledecker 2009, 2010
# Typically called from /usr/bin/desktop.sh
# makemenu APPNAME

. /etc/init.d/tc-functions
. /usr/local/bin/fluxbox_menu_common

[ -z "$1" ] && exit 1
WM_MENU=/usr/local/tce.fluxbox
OUTFILE=/tmp/menu.tmp
> "$OUTFILE"

# Check for freedesktop item                       
FREEDESK="/usr/share/applications"
if [ -e "$FREEDESK"/"$1".desktop ]; then                        
  if [ -e "$FREEDESK"/"$1"~1.desktop ]; then
    echo "[submenu]("$1")" > "$OUTFILE"
    for F in $(ls "$FREEDESK"/* | grep -E "$1"'(~[1-9][1-9]*)*'.desktop); do
      writeMenuItem "$F" >> "$OUTFILE"
    done
    echo "[end]" >> "$OUTFILE"
  else
	if ! grep "NotShowIn" "$FREEDESK"/"$1".desktop > /dev/null 2>&1 && ! grep "OnlyShowIn" "$FREEDESK"/"$1".desktop > /dev/null 2>&1 && ! grep "NoDisplay=true" "$FREEDESK"/"$1".desktop > /dev/null 2>&1 ! grep "Categories=" | grep "Settings" "$FREEDESK"/"$1".desktop > /dev/null 2>&1   ; then
   		writeMenuItem  "$FREEDESK"/"$1".desktop >> "$OUTFILE"
	fi
  fi
  merge "$OUTFILE" "$WM_MENU" "[end] TCE" > /tmp/newmenu
  sudo mv /tmp/newmenu "$WM_MENU"
fi          

FREEDESK="/usr/local/share/applications"
if [ -e "$FREEDESK"/"$1".desktop ]; then                        
  if [ -e "$FREEDESK"/"$1"~1.desktop ]; then
    echo "[submenu]("$1")" > "$OUTFILE"
    for F in $(ls "$FREEDESK"/* | grep -E "$1"'(~[1-9][1-9]*)*'.desktop); do
      writeMenuItem "$F" >> "$OUTFILE"
    done
    echo "[end]" >> "$OUTFILE"
  else
	if ! grep "NotShowIn" "$FREEDESK"/"$1".desktop > /dev/null 2>&1 && ! grep "OnlyShowIn" "$FREEDESK"/"$1".desktop > /dev/null 2>&1 && ! grep "NoDisplay=true" "$FREEDESK"/"$1".desktop > /dev/null 2>&1 ! grep "Categories=" | grep "Settings" "$FREEDESK"/"$1".desktop > /dev/null 2>&1 ; then
   		writeMenuItem  "$FREEDESK"/"$1".desktop >> "$OUTFILE"
	fi
  fi
  merge "$OUTFILE" "$WM_MENU" "[end] TCE" > /tmp/newmenu
  sudo mv /tmp/newmenu "$WM_MENU"
fi          