#!/bin/bash

Info () {
title="Info"
author="Peter Starfinger"
mail="E-Mail: info@die-starfingers.de"
year="2021"
app="$(basename $0)"
msgid="The Starbuntu application
<i>\$app</i>
was written by"
info="$(gettext "$msgid" | (export PATH `envsubst --variables "$msgid"`; envsubst "$msgid"))"

yad --center --fixed --title="$title" --window-icon="info" --image="info" --borders=20 --text="$info"$'\n'$'\n'"$author"$'\n'"$mail"$'\n'$'\n'"$year"$'\n' --text-align=center --selectable-labels --button="OK" &
wunwa "$title" > /dev/null; xdotool key Home key Down
}

if [ "$1" = "info" ]; then Info; exit 0; fi

memo="$@"

if [ -z "$memo" ]; then
    memo=$(xclip -o -se p)
fi
title=$"Create Memo"
if [ -z "$memo" ]; then
    text="$(echo $"
	<b>Please mark the text worth for a memo</b>
	<b>before calling up this program!</b>")"
    yad --center --title="$title" --window-icon=$HOME/.icons/xpad.png --image="dialog-warning" --borders=20 --fixed --text="$text"$'\n' --button="OK"
    exit 0
fi
memo="${memo//$'\n'/\&#10;}"
memo="${memo//$'\t'/\&#9;}"
memo="${memo// \&/ \&amp;}"
memo="${memo//\& /\&amp; }"
memo="$(echo "$memo" | sed 's/^-/\\-/g')"

text="$(echo $"
<b>Title of the memo?</b>")"
cancel=$"Cancel"
titel=`yad --center --title="$title" --window-icon=$HOME/.icons/xpad.png --height=120 --width=450 --borders=10 --text="$text"$'\n' --entry --button="$cancel":1 --button="Info":"$0 info" --button="OK":0`

if [ $? -eq 0 ]; then
  if [ -z "$titel" ]; then
    titel="$(echo $"Memo from ")"$(date +%D)" "$(date +%I:%M%P)
  fi

  IFS=$'\n'
  f_menu="$HOME/.config/gtk-3.0/notes.lst"
  id_fs=($(grep -n '}‖' $f_menu))
  if [ -n "$id_fs" ]; then
    for ((i=0; i<${#id_fs[*]}; i++)); do
      nr="${id_fs[$i]%%:*}"
      id_fs[$i]="${id_fs[$i]#*:}":$nr
    done
    idf=($(for ((i=0; i<${#id_fs[*]}; i++)); do
      label="${id_fs[$i]##*‖}"
      detail="${id_fs[$i]%‖*}"
      detail="${detail##*‖}"
      [ "${label::1}" = "{" ] && line="${label%\}*}}!$detail!‖$label" || line="$detail!!‖$label"
      echo "$line"
    done | sort -t'!' -k 1,1 -k 2,2 --ignore-case))
    main_id=$"Main Level:0"
    idf=($main_id ${idf[@]//\!/})
    h=${#idf[@]}; h=$(((h+11)*20))

    IFS='¦'
    id_f=($(for ((i=0; i<${#idf[*]}; i++)); do
      idf[$i]="${idf[$i]##*:}¦${idf[$i]##*‖}"
      echo "${idf[$i]%:*}¦"
    done))
    id_f=($(echo "${id_f[*]}" | sed 's/{[^}]*}/    /g'))

    title=$"Select Identifier"
    text=$"Select the place of the new memo:"
    oktext=$"Integrate memo there"
    cancel=$"Cancel"

    name=`yad --center --title="$title" --window-icon=format-indent-less-rtl --width=350 --height=$h --borders=20 --text="$text"$'\n' --list --no-headers --column="Idf":HD --column="Identifiers" ${id_f[@]} --button="$cancel":1 --button="Info":"$0 info $(basename $0)" --button="OK!!""$oktext":0`
    exit_code=$?
    [ $exit_code -eq 1 ] && exit $exit_code

    IFS=$'\n'
    n_id=${name%%\|*}
    label="${name#*▶ }"; label="${label::-1}:$n_id$"; label="${label/$'\n'/}"
    id="$(echo "${idf[*]}" | grep -e "$label")"
    id="${id%‖*}"
  else
    id=""
  fi

  echo "$memo‖$id$titel" >> $HOME/.config/gtk-3.0/notes.lst

  ready="$(get-text "\n\tMemo '\$titel' created!" "$titel")"

  yad --center --title="$title" --window-icon="info" --image="info" --borders=20 --text="$ready" --button="OK"

fi
