#!/bin/sh
#*********************************************************************************************************
#*   __     __               __     ______                __   __                      _______ _______   *
#*  |  |--.|  |.---.-..----.|  |--.|   __ \.---.-..-----.|  |_|  |--..-----..----.    |       |     __|  *
#*  |  _  ||  ||  _  ||  __||    < |    __/|  _  ||     ||   _|     ||  -__||   _|    |   -   |__     |  *
#*  |_____||__||___._||____||__|__||___|   |___._||__|__||____|__|__||_____||__|      |_______|_______|  *
#* http://www.blackpantheros.eu | http://www.blackpanther.hu - kbarcza[]blackpanther.hu * Charles Barcza *
#*************************************************************************************(c)2002-2011********

#---------------------------------------------------------------
# Project         : blackPanther OS
# Module          : bin
# File            : default-editor
# Version         : $Id: editor,v 0.1
# Author          : Charles Barcza 
# Created On      : Fri Aug 29 16:26:54 2008
# Purpose         : launch a editor application
#---------------------------------------------------------------
 . /etc/blackPanther-default-apps.conf
appname=editor

if [ -f ~/.personal-${appname} ];then
    . ~/.personal-${appname}
    echo "Presonal conf found!"
fi

set_a_editor() {
echo "$EDITOR=$1" > ~/.personal-${appname}
echo "Personal ${appname} definied, please restart `basename $0` without parameter."
exit
}

strip_editor_var() {
    if [[ -n "$EDITOR" ]]; then
	if [[ `basename "$EDITOR"` == "default-${appname}" ]]; then
	    unset EDITOR
	else
	    set $EDITOR
	    if ! which $1 > /dev/null 2>&1; then
		unset EDITOR
	    fi
	fi
    fi
}

if [ "$1" = "-s" ];then
    echo "Define user ${appname}.."
    set_a_editor $2
elif [ "$1" = "-u" ];then
    rm -f $HOME/.personal-${appname}
    echo "Clear definied personal ${appname} conf.."
    exit
elif [ "$1" = "-h" ];then
    echo ""
    echo -e "${GRN}This is a$BLK blackPanther OS$GRN specific tool"
    echo ""
    echo -e "$MAG  Usage:"
    echo -e "$YEL       `basename $0` -s $DEF Set a personal ${appname} (You conf file: $HOME/.personal-${appname})"
    echo -e "$YEL       `basename $0` -u $DEF Unset definied ${appname} (Remove you conf file: $HOME/.personal-${appname})"
    echo -e "$YEL       `basename $0` -h $DEF This screen"
    echo ""
    echo -e "$CYN  [$RED Example:$CYN `basename $0` -s kwrite$RED OR to autodetect:$CYN `basename $0`]$DEF"
    echo ""
    exit
fi


strip_editor_var() {
    if [[ -n "$EDITOR" ]]; then
	if [[ `basename "$EDITOR"` == "default-editor" ]]; then
	    unset EDITOR
	else
	    set $EDITOR
	    if ! which $1 > /dev/null 2>&1; then
		unset EDITOR
	    fi
	fi
    fi
}

strip_editor_var

if [[ -z "$EDITOR" ]]; then

    [[ -z "$EDITOR" ]] && EDITOR=`which gedit 2> /dev/null` 
    [[ -z "$EDITOR" ]] && [[ -n "$KDE_FULL_SESSION" ]] && which kate > /dev/null 2>&1 && EDITOR="kate"
    [[ -z "$EDITOR" ]] && [[ -n "$KDE_FULL_SESSION" ]] && which kwrite > /dev/null 2>&1 && EDITOR="kwrite"
    [[ -z "$EDITOR" ]] && [[ -n "$KDE_FULL_SESSION" ]] && which kedit > /dev/null 2>&1 && EDITOR="kedit"
    [[ -z "$EDITOR" ]] && [[ -n "$KDE_FULL_SESSION" ]] && which kate > /dev/null 2>&1 && EDITOR="kate"
    [[ -z "$EDITOR" ]] && EDITOR=`which medit 2> /dev/null`
    [[ -z "$EDITOR" ]] && EDITOR=`which scite 2> /dev/null`
    [[ -z "$EDITOR" ]] && EDITOR=`which geany 2> /dev/null`
    [[ -z "$EDITOR" ]] && which nano > /dev/null 2>&1 && EDITOR="default-terminal -e nano"
    [[ -z "$EDITOR" ]] && which mcedit > /dev/null 2>&1 && EDITOR="default-terminal -e mcedit"
    [[ -z "$EDITOR" ]] && which joe > /dev/null 2>&1 && EDITOR="default-terminal -e joe"
    [[ -z "$EDITOR" ]] && which vim > /dev/null 2>&1 && EDITOR="default-terminal -e vim"
    [[ -z "$EDITOR" ]] && which vi > /dev/null 2>&1 && EDITOR="default-terminal -e vi"
    [[ -z "$EDITOR" ]] && which emacs > /dev/null 2>&1 && EDITOR="default-terminal -e emacs"
fi


errmsg() {
    xmsg=`which kdialog 2>/dev/null || which zenity 2>/dev/null`
    [ -n "$DISPLAY" ] && $xmsg --error "Sorry. Editor applications not detected, please install on PC (etc: installing kwrite)"
    [ ! -n "$DISPLAY" ] && echo -n "Sorry. Editor not detected! Please install on PC (etc: installing kwrite)"
}

if [[ -n "$EDITOR" ]]; then 
    exec $EDITOR "$@" || errmsg
else
    errmsg
fi
