#!/bin/bash

##This app was developed by MX Devs xxx 2023 and released under GPLv3

# version 230518-01

#TEXTDOMAINDIR=/usr/share/locale 
#export TEXTDOMAIN="mxfb-font"
#source gettext.sh

# buttons
export BTN_CLOSE=$(gettext "Close")  ; BTN_CLOSE+='!window-close'
export BTN_HELP=$(gettext "Help")    ; BTN_HELP+='!help-contents'
export BTN_OK=$(gettext "OK")        ; BTN_OK+='!object-select'
export BTN_APPLY=$(gettext "Apply")        ; BTN_OK+='!object-select'

####check overlay file
CHECK_WINTITLE="$(grep "window.font: " $HOME/.fluxbox/overlay)"
if [ -z "$CHECK_WINTITLE" ]; then
    echo '#window.font: Sans-12:Regular' >> $HOME/.fluxbox/overlay
fi

CHECK_MENUTITLE="$(grep "menu.title.font: " $HOME/.fluxbox/overlay)"
if [ -z "$CHECK_MENUTITLE" ]; then
    echo '#menu.title.font: Sans-11:Regular' >> $HOME/.fluxbox/overlay
fi

CHECK_MENUFRAME="$(grep "menu.frame.font: " $HOME/.fluxbox/overlay)"
if [ -z "$CHECK_MENUFRAME" ]; then
    echo '#menu.frame.font: Sans-10:Regular' >> $HOME/.fluxbox/overlay
fi

####

function choose_font() {

STYLE="$(grep 'session.styleFile:' $HOME/.fluxbox/init | sed -e "s/session\.styleFile\://")"

STYLE_MENU_FRAME="$(grep 'menu.frame.font:' $STYLE/theme.cfg | sed -e "s/menu\.frame\.font\://")"
STYLE_MENU_TITLE="$(grep 'menu.title.font:' $STYLE/theme.cfg | sed -e "s/menu\.title\.font\://")"
STYLE_WINDOW_TITLE="$(grep 'window.font:' $STYLE/theme.cfg | sed -e "s/window\.font\://")"

WINDOW_TITLE_NOW="$(grep "#window.font: " $HOME/.fluxbox/overlay)"
MENU_TITLE_NOW="$(grep "#menu.title.font: " $HOME/.fluxbox/overlay)"
MENU_FRAME_NOW="$(grep "#menu.frame.font: " $HOME/.fluxbox/overlay)"


if [ -z "$WINDOW_TITLE_NOW" ]; then
    WINDOW_TITLE_OVERRIDE=true
else
    WINDOW_TITLE_OVERRIDE=false
fi

if [ -z "$MENU_TITLE_NOW" ]; then
    MENU_TITLE_OVERRIDE=true
else
    MENU_TITLE_OVERRIDE=false
fi

if [ -z "$MENU_FRAME_NOW" ]; then
    MENU_FRAME_OVERRIDE=true
else
    MENU_FRAME_OVERRIDE=false
fi

####

WINDOW_TITLE_NOW="$(grep "window.font: " $HOME/.fluxbox/overlay | sed -e "s/window\.font\://" | sed -e "s/-/ /g" | sed -e "s/\:/ /g" | sed -e "s/\#/ /g")"
window_title_now=($WINDOW_TITLE_NOW)
WINDOW_TITLE_SIZE="${window_title_now[-2]}"
unset 'window_title_now[-2]'
WINDOW_TITLE_NOW=$(echo "${window_title_now[@]}" $WINDOW_TITLE_SIZE)

MENU_TITLE_NOW="$(grep "menu.title.font: " $HOME/.fluxbox/overlay | sed -e "s/menu\.title\.font\://" | sed -e "s/-/ /g" | sed -e "s/\:/ /g" | sed -e "s/\#/ /g")"
menu_title_now=($MENU_TITLE_NOW)
MENU_TITLE_SIZE="${menu_title_now[-2]}"
unset 'menu_title_now[-2]'
MENU_TITLE_NOW=$(echo "${menu_title_now[@]}" $MENU_TITLE_SIZE)

MENU_FRAME_NOW="$(grep "menu.frame.font: " $HOME/.fluxbox/overlay | sed -e "s/menu\.frame\.font\://" | sed -e "s/-/ /g" | sed -e "s/\:/ /g" | sed -e "s/\#/ /g")"
menu_frame_now=($MENU_FRAME_NOW)
MENU_FRAME_SIZE="${menu_frame_now[-2]}"
unset 'menu_frame_now[-2]'
MENU_FRAME_NOW=$(echo "${menu_frame_now[@]}" $MENU_FRAME_SIZE)

GTK_FONT_NOW="$(grep "gtk-font-name" $HOME/.config/gtk-3.0/settings.ini | sed -e "s/gtk-font-name\=//" )"


####

TITLE="$(gettext 'MXFB-Font')"
CLASS="mxfb-font"
ICONPATH="/usr/share/pixmaps/mxfb-font.svg"
#helpfile=/usr/share/mxflux/HELP_Windowoverlay

TEXT1="Default fonts are defined in the current fluxbox style."
TEXT2="Gtk-font is independent of fluxbox style settings"


MAINPOS=$(yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" \
--borders=20 --center --width=400 --form --columns=2 --output-by-row \
--align=left --separator="_" --button="${BTN_CLOSE}":7 --button="${BTN_APPLY}":6 \
--text="<i>$TEXT1\n$TEXT2\n</i>" \
--field="<b>$(gettext 'Window Title Default'):</b>":LBL "" \
--field="$(gettext 'Override with') ":CHK "$WINDOW_TITLE_OVERRIDE" \
--field=" ":LBL "|" \
--field="<b>$(gettext 'Menu Title Default'):</b>":LBL "" \
--field="$(gettext 'Override with') ":CHK "$MENU_TITLE_OVERRIDE" \
--field=" ":LBL "|" \
--field="<b>$(gettext 'Menu Text Default'):</b>":LBL "" \
--field="$(gettext 'Override with') ":CHK "$MENU_FRAME_OVERRIDE" \
--field=" ":LBL "|" \
--field="<b>$(gettext 'Gtk Font'): </b>":LBL "|" \
--field="<b>$STYLE_WINDOW_TITLE</b>":LBL "|" \
--field=" ":FN "$WINDOW_TITLE_NOW" \
--field=" ":LBL "|" \
--field="<b>$STYLE_MENU_TITLE</b>":LBL "|" \
--field=" ":FN "$MENU_TITLE_NOW" \
--field=" ":LBL "|" \
--field="<b>$STYLE_MENU_FRAME</b>":LBL "|" \
--field=" ":FN "$MENU_FRAME_NOW" \
--field=" ":LBL "|" \
--field=" ":FN "$GTK_FONT_NOW"
)

ret=$?

case $ret in
    7 | 252 )
        ENDLOOP=getouttahere
    ;;

    6 )

    RES=$(echo "$MAINPOS" | sed -e "s/ /-/g" | sed -e "s/_/ /g" | sed -e "s/__/ /g" | sed -e "s/___/ /g" | sed -e "s/____/ /g")

    override=($RES)


####

    WINDOW_TITLE_OVERRIDE="${override[0]}"

    if [ "$WINDOW_TITLE_OVERRIDE" = FALSE ]; then
        WINDOW_TITLE_NOW="$(grep "#window.font: " $HOME/.fluxbox/overlay)"
            if [ -z "$WINDOW_TITLE_NOW" ]; then
                sed -i 's/^window.font:/#&/' $HOME/.fluxbox/overlay
            fi
    fi

    if [ "$WINDOW_TITLE_OVERRIDE" = TRUE ]; then
        WINDOW_TITLE_NEW=$(echo "${override[1]}" | sed -e "s/-/ /g")
        window_title_new=($WINDOW_TITLE_NEW)
        WINDOW_TITLE_NEWSIZE="${window_title_new[-1]}"
        unset 'window_title_new[-1]'
        WINDOW_TITLE_NEWTYPE="${window_title_new[-1]}"

        echo $WINDOW_TITLE_NEWTYPE

            if [ "$WINDOW_TITLE_NEWTYPE" = "Italic" -o "$WINDOW_TITLE_NEWTYPE" = "Bold" ]; then
                unset 'window_title_new[-1]'
            else
                WINDOW_TITLE_NEWTYPE=Regular
            fi

        WINDOW_TITLE_NEW=$(echo "${window_title_new[@]}")
        WINDOW_TITLE_NEW="window.font: $WINDOW_TITLE_NEW-$WINDOW_TITLE_NEWSIZE:$WINDOW_TITLE_NEWTYPE"

        WINDOW_TITLE_NOW="$(grep "window.font: " $HOME/.fluxbox/overlay)"

            if [ "$WINDOW_TITLE_NEW" != "$WINDOW_TITLE_NOW" ]; then
                sed -i "s/$WINDOW_TITLE_NOW/$WINDOW_TITLE_NEW/" $HOME/.fluxbox/overlay
            fi

    fi


####

    MENU_TITLE_OVERRIDE="${override[2]}"

    if [ "$MENU_TITLE_OVERRIDE" = FALSE ]; then
        MENU_TITLE_NOW="$(grep "#menu.title.font: " $HOME/.fluxbox/overlay)"
            if [ -z "$WINDOW_TITLE_NOW" ]; then
                sed -i 's/^menu.title.font:/#&/' $HOME/.fluxbox/overlay
            fi
    fi

    if [ "$MENU_TITLE_OVERRIDE" = TRUE ]; then
        MENU_TITLE_NEW=$(echo "${override[3]}" | sed -e "s/-/ /g")
        menu_title_new=($MENU_TITLE_NEW)
        MENU_TITLE_NEWSIZE="${menu_title_new[-1]}"
        unset 'menu_title_new[-1]'
        MENU_TITLE_NEWTYPE="${menu_title_new[-1]}"

            if [ "$MENU_TITLE_NEWTYPE" = "Italic" -o "$MENU_TITLE_NEWTYPE" = "Bold" ]; then
                unset 'menu_title_new[-1]'
            else
                MENU_TITLE_NEWTYPE=Regular
            fi

        MENU_TITLE_NEW=$(echo "${menu_title_new[@]}")
        MENU_TITLE_NEW="menu.title.font: $MENU_TITLE_NEW-$MENU_TITLE_NEWSIZE:$MENU_TITLE_NEWTYPE"
        MENU_TITLE_NOW="$(grep "menu.title.font: " $HOME/.fluxbox/overlay)"

            if [ "$MENU_FRAME_NEW" != "$MENU_FRAME_NOW" ]; then
                sed -i "s/$MENU_TITLE_NOW/$MENU_TITLE_NEW/" $HOME/.fluxbox/overlay
            fi

    fi


####

    MENU_FRAME_OVERRIDE="${override[4]}"

    if [ "$MENU_FRAME_OVERRIDE" = FALSE ]; then
        MENU_FRAME_NOW="$(grep "#menu.frame.font: " $HOME/.fluxbox/overlay)"
            if [ -z "$WINDOW_FRAME_NOW" ]; then
                sed -i 's/^menu.frame.font:/#&/' $HOME/.fluxbox/overlay
            fi
    fi

    if [ "$MENU_FRAME_OVERRIDE" = TRUE ]; then
        MENU_FRAME_NEW=$(echo "${override[5]}" | sed -e "s/-/ /g")
        menu_frame_new=($MENU_FRAME_NEW)
        MENU_FRAME_NEWSIZE="${menu_frame_new[-1]}"
        unset 'menu_frame_new[-1]'
        MENU_FRAME_NEWTYPE="${menu_frame_new[-1]}"

            if [ "$MENU_FRAME_NEWTYPE" = "Italic" -o "$MENU_FRAME_NEWTYPE" = "Bold" ]; then
                unset 'menu_frame_new[-1]'
            else
                MENU_FRAME_NEWTYPE=Regular
            fi

        MENU_FRAME_NEW=$(echo "${menu_frame_new[@]}")
        MENU_FRAME_NEW="menu.frame.font: $MENU_FRAME_NEW-$MENU_FRAME_NEWSIZE:$MENU_FRAME_NEWTYPE"
        MENU_FRAME_NOW="$(grep "menu.frame.font: " $HOME/.fluxbox/overlay)"

            if [ "$MENU_FRAME_NEW" != "$MENU_FRAME_NOW" ]; then
                sed -i "s/$MENU_FRAME_NOW/$MENU_FRAME_NEW/" $HOME/.fluxbox/overlay
            fi

    fi


####

    GTK_FONT_NOW="$(grep "gtk-font-name" $HOME/.config/gtk-3.0/settings.ini | sed -e "s/gtk-font-name\=//" )"
    GTK_FONT_NEW=$(echo "${override[6]}" | sed -e "s/-/ /g")
    if [ -z "$GTK_FONT_NEW" ]; then
        GTK_FONT_NEW='Zekton 11'
    fi

    if [ "$GTK_FONT_NOW" != "$GTK_FONT_NEW" ]; then
        #sed -i "s/$GTK_FONT_NOW/$GTK_FONT_NEW/" $HOME/.config/gtk-3.0/settings.ini
        #sed -i "s/$GTK_FONT_NOW/$GTK_FONT_NEW/" $HOME/.gtkrc-2.0
        
        GTK_FONT_NEW=$(echo "_$GTK_FONT_NEW_" / sed -e "s/\_/\'/g")
        gsettings set org.gnome.desktop.interface font-name $GTK_FONT_NEW

        theme=$(gsettings get org.gnome.desktop.interface gtk-theme)
        gsettings set org.gnome.desktop.interface gtk-theme ''
        sleep 1
        gsettings set org.gnome.desktop.interface gtk-theme $theme
    fi


    fluxbox-remote reloadstyle ; fluxbox-remote reconfigure
    ;;
esac

}

export choose_font

####

until [ "$ENDLOOP" = "getouttahere" ]; do
    choose_font
done


exit
