#!/bin/bash
#-------------------------------------------------------------------------------
# fxmenusetup
#
# This will generate a menu structure (freedesktop compatible) of common
# found application on Linux Systems. It will use the PATH variable to check
# if an application is available. Since this primarly used for the FOX Desktop
# we write out to the users .foxrc directory.
#-------------------------------------------------------------------------------

# Output Directory
OUTPUTDIR="$HOME/.foxdesktop/applnk"

# Make sure output directory exists
if [ -f $OUTPUTDIR ] ; then
	mkdir -p $OUTPUTDIR
fi

echo ": FOX Desktop Menu Setup"
echo ": Configured Output Directory: $OUTPUTDIR"

# Function Definitions
#-------------------------------------------------------------------------------
make_directory() {
	#echo "[${CATEGORYDIR}]"
	mkdir -p ${OUTPUTDIR}/${CATEGORYDIR}
	echo "[Desktop Entry]" > ${OUTPUTDIR}/${CATEGORYDIR}/.directory
	echo "Name=\"${CATEGORY}\"" >> ${OUTPUTDIR}/${CATEGORYDIR}/.directory
	echo "Type=Directory" >> ${OUTPUTDIR}/${CATEGORYDIR}/.directory
	}

# Write a Application Entry
make_application() {
	echo "[Desktop Entry]" > ${FILENAME}
	echo "Exec=\"${EXEC}\"" >> ${FILENAME}
	echo "Name=\"${NAME}\"" >> ${FILENAME}
	echo "Comment=\"${COMMENT}\"" >> ${FILENAME}
	echo "Type=Application" >> ${FILENAME}
	}

check_application() {
	cnt=${#EXECUTABLES[@]}
	for (( i = 0 ; i < cnt ; i++ ))
	do
		OLDIFS="$IFS"
 		IFS=":"
 		for dir in $PATH
 		do
			if [ -f ${dir}/${EXECUTABLES[$i]} ] ; then
				FILENAME="${OUTPUTDIR}/${CATEGORYDIR}/${EXECUTABLES[$i]}.desktop"
				NAME=${NAMES[$i]}
				COMMENT=${NAMES[$i]}
				EXEC=${dir}/${EXECUTABLES[$i]}
				make_application
				break
		 	fi
 		done
 		IFS=$OLDIFS
	done
	}
#-------------------------------------------------------------------------------




#---------------------------------------------------------------
#
# Check Internet Category
#
#----------------------------------------------------------------
CATEGORYDIR="internet"
CATEGORY="Internet"

EXECUTABLES=(
firefox
konqueror
mozilla
opera
)

NAMES=(
"Firefox Browser"
"Konqueror Browser"
"Mozilla Browser"
"Opera Browser"
)

make_directory
check_application


#---------------------------------------------------------------
#
# Check Internet Category
#
#----------------------------------------------------------------
CATEGORYDIR="internet/message"
CATEGORY="Messaging"

EXECUTABLES=(
gnomemeeting
gaim
kmess
xchat
)

NAMES=(
"Gnome Meeting"
"Gaim"
"KDE Messenger"
"X-Chat"
)

make_directory
check_application


#---------------------------------------------------------------
#
# Check Internet Category
#
#----------------------------------------------------------------
CATEGORYDIR="internet/mail"
CATEGORY="Mail"

EXECUTABLES=(
kmail
evolution
)

NAMES=(
"KMail"
"Evolution"
)

make_directory
check_application


#---------------------------------------------------------------
#
# Check System
#
#----------------------------------------------------------------
CATEGORYDIR="system"
CATEGORY="System"

EXECUTABLES=(
ControlPanel
nvidia-settings
Xnest
)

NAMES=(
"FOX Desktop Control"
"NVIDIA X Server Settings"
"XNest"
)

make_directory
check_application

#---------------------------------------------------------------
#
# Check System/Tools
#
#----------------------------------------------------------------
CATEGORYDIR="system/tools"
CATEGORY="Tools"

EXECUTABLES=(
fxprocessview
xload
xosview
xmag
)

NAMES=(
"Process Viewer"
"X-Load"
"X-OSView"
"X-Mag"
)

make_directory
check_application




#---------------------------------------------------------------
#
# Check Multimedia Category
#
#----------------------------------------------------------------
CATEGORYDIR="multimedia"
CATEGORY="Multimedia"

EXECUTABLES=(
gmm
goggles
xine
gmplayer
xawtv
)

NAMES=(
"Goggles Music Manager"
"Goggles DVD Player"
"xine media player"
"MPlayer"
"XawTv"
)

make_directory
check_application




#---------------------------------------------------------------
#
# Check Application Category
#
#----------------------------------------------------------------
CATEGORYDIR="application"
CATEGORY="Applications"
make_directory


#---------------------------------------------------------------
#
# Check Application/science Category
#
#----------------------------------------------------------------
CATEGORYDIR="application/science"
CATEGORY="Scientific"

EXECUTABLES=(
calculator
kcalc
)

NAMES=(
"FOX Calculator"
"KDE Calculator"
)

make_directory
check_application



#---------------------------------------------------------------
#
# Check Application/image Category
#
#----------------------------------------------------------------
CATEGORYDIR="application/image"
CATEGORY="Image Manipulation"

EXECUTABLES=(
gimp
shutterbug
kiconedit
)

NAMES=(
"The Gimp"
"Shutterbug"
"KDE Icon Editor"
)

make_directory
check_application


#---------------------------------------------------------------
#
# Check Application/sound Category
#
#----------------------------------------------------------------
CATEGORYDIR="application/sound"
CATEGORY="Sound Editors"

EXECUTABLES=(
rezound
grip
)

NAMES=(
"ReZound"
"grip"
)

make_directory
check_application



#---------------------------------------------------------------
#
# Check Application/Editors
#
#----------------------------------------------------------------
CATEGORYDIR="application/text"
CATEGORY="Text Editors"

EXECUTABLES=(
adie
nedit
xedit
kate
kedit
)

NAMES=(
"Adie Text Editor"
"NEdit"
"XEdit"
"Kate"
"KDE Text Editor"
)

make_directory
check_application



#---------------------------------------------------------------
#
# Check Application/File Managers
#
#----------------------------------------------------------------
CATEGORYDIR="application/file"
CATEGORY="File Managers"

EXECUTABLES=(
PathFinder
xfe
nautilus
konqueror
)

NAMES=(
"PathFinder"
"X File Explorer"
"Nautilus"
"Konqueror"
)

make_directory
check_application





#---------------------------------------------------------------
#
# Check Terminals
#
#----------------------------------------------------------------
CATEGORYDIR="terminals"
CATEGORY="Terminals"

EXECUTABLES=(
konsole
xterm
gnome-terminal
rxvt
rxvt-unicode
eterm
aterm
)

NAMES=(
"Konsole"
"X Terminal"
"Gnome Terminal"
"rxvt"
"rxvt unicode"
"eterm"
"aterm"
)

make_directory
check_application



#---------------------------------------------------------------
#
# Check Games
#
#----------------------------------------------------------------
CATEGORYDIR="games"
CATEGORY="Games"

EXECUTABLES=(
xboard
frozen-bubble
kasteroids
katomic
kbackgammon
kbattleship
kgoldrunner
khangman
kmahjongg
kpoker
)

NAMES=(
"X-Board"
"Frozen Bubble"
"KAsteroids"
"KAtomic"
"KBackgammon"
"KBattleShip"
"KGoldrunner"
"KHangman"
"KMahjongg"
"KPoker"
)

make_directory
check_application



#---------------------------------------------------------------
#
# Check Games
#
#----------------------------------------------------------------
CATEGORYDIR="games/freeciv"
CATEGORY="Freeciv"

EXECUTABLES=(
civclient
civserver
)

NAMES=(
"Client"
"Server"
)

make_directory
check_application


#---------------------------------------------------------------
#
# Check OpenOffice
#
#----------------------------------------------------------------
CATEGORYDIR="office"
CATEGORY="Office"

EXECUTABLES=(
soffice
kghostview
xpdf
kpdf
)

NAMES=(
"OpenOffice"
"Ghostview"
"X PDF Viewer"
"KDE PDF Viewer"
)

make_directory
check_application


#---------------------------------------------------------------
#
# Check OpenOffice
#
#----------------------------------------------------------------
CATEGORYDIR="office/openoffice"
CATEGORY="OpenOffice"

EXECUTABLES=(
swriter
scalc
sbase
sdraw
smath
)

NAMES=(
"Writer"
"Calc"
"Base"
"Draw"
"Math"
)

make_directory
check_application

#---------------------------------------------------------------
# We're Done; Report Status
#---------------------------------------------------------------
echo ": Done"
