From 2357bf555e67a52e0cbe1af040905bf162ac593d Mon Sep 17 00:00:00 2001 From: Botspot Date: Thu, 1 Oct 2020 21:19:21 -0500 Subject: [PATCH] more changes --- apps/myapp/install | 2 - apps/template/install | 4 +- binaries/xdotool | Bin 61116 -> 0 bytes createapp | 97 +++++++++++++++++++++++++----------------- gui | 40 ++++++++++++----- 5 files changed, 89 insertions(+), 54 deletions(-) delete mode 100755 binaries/xdotool diff --git a/apps/myapp/install b/apps/myapp/install index f9a1c3f..57189f6 100755 --- a/apps/myapp/install +++ b/apps/myapp/install @@ -6,8 +6,6 @@ function error { exit 1 } -false || error 'testing 1 2 3' - #use the error function often! #If a certain command is necessary for installation to continue, then add this to the end of it: # || error 'reason' diff --git a/apps/template/install b/apps/template/install index 3b2f37c..57189f6 100755 --- a/apps/template/install +++ b/apps/template/install @@ -6,8 +6,6 @@ function error { exit 1 } -false || error 'testing 1 2 3' - #use the error function often! #If a certain command is necessary for installation to continue, then add this to the end of it: # || error 'reason' @@ -15,4 +13,4 @@ false || error 'testing 1 2 3' git clone https://example.com || error 'Failed to clone example.com repository!' # Get dependencies -"${DIRECTORY}/pkg-install" "package1 package2 package3" "$(dirname "$0")" || exit 1 \ No newline at end of file +"${DIRECTORY}/pkg-install" "package1 package2 package3" "$(dirname "$0")" || exit 1 diff --git a/binaries/xdotool b/binaries/xdotool deleted file mode 100755 index 4c095b59f39cae1a5a0b2130fc2e10d2e2d5eef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61116 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/dev/null)" button=$? #get exit code to determine which button was pressed - #kill ctrl+s loop - kill $pid - if [ $button == 0 ];then #next - save changes step=4 @@ -162,41 +146,27 @@ A text editor should have openened and you can create your install script.' \ #find the best text editor if [ -f /usr/bin/geany ];then geany "${DIRECTORY}/apps/${name}/uninstall" & - windowname=Geany elif [ -f /usr/bin/mousepad ];then mousepad "${DIRECTORY}/apps/${name}/uninstall" & - windowname=Mousepad elif [ -f /usr/bin/leafpad ];then leafpad "${DIRECTORY}/apps/${name}/uninstall" & - windowname=Leafpad elif [ -f /bin/nano ];then lxterminal --title=Nano -e "nano ${DIRECTORY}/apps/${name}/uninstall" & - windowname=Nano else echo "No text editors found!" fi - #continually save work - (while true;do "${DIRECTORY}/binaries/xdotool" getwindowname "$windowname" ctrl+s;sleep 1;done) & - pid=$! - echo "pid is $pid" - #kill $pid - output="$(yad --form --on-top \ --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=300 \ --text='Now it'\''s time to make your uninstall script. This will be executed anytime somebody clicks the Uninstall button. A text editor should have openened... Never mind, you know what to do.' \ - --field="Run script":FBTN "lxterminal --title="\""Running uninstall script of $name"\"" -e "\""${DIRECTORY}/apps/${name}/uninstall;echo 'Closing in 10 seconds.';sleep 10"\" \ - --field="Shellcheck"!!'Having problems? This utility helps you locate syntax errors.':FBTN "lxterminal --title="\""Shellcheck"\"" -e "\""${DIRECTORY}/binaries/shellcheck ${DIRECTORY}/apps/${name}/sinstall;echo 'Press Enter to exit.';read enter"\" \ + --field="Run script":FBTN "lxterminal --title="\""Running uninstall script of $name"\"" -e "\""cd $HOME;${DIRECTORY}/apps/${name}/uninstall;echo 'Closing in 10 seconds.';sleep 10"\" \ + --field="Shellcheck"!!'Having problems? This utility helps you locate syntax errors.':FBTN "lxterminal --title="\""Shellcheck"\"" -e "\""${DIRECTORY}/binaries/shellcheck ${DIRECTORY}/apps/${name}/uninstall;echo 'Press Enter to exit.';read enter"\" \ --button=Previous!"${DIRECTORY}/icons/back.png":2 \ --button=Next!"${DIRECTORY}/icons/forward.png":0 \ 2>/dev/null)" button=$? #get exit code to determine which button was pressed - #kill ctrl+s loop - kill $pid - - if [ $button == 0 ];then step=5 elif [ $button == 2 ];then @@ -206,6 +176,57 @@ A text editor should have openened... Never mind, you know what to do.' \ exit 0 fi ;; + 5) + LIST="${DIRECTORY}/icons/uninstalled.png +${DIRECTORY}/apps/${name}/icon-24.png +$name +"\("uninstalled"\)" $(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | head -n1)" + + echo -e "$LIST" | yad --list \ + --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=300 \ + --text='Make sure everything looks right. +Here'\''s what it will look like in the app list:' \ + --column=:IMG --column=:IMG --column=Name --column=tip:HD --tooltip-column=4 --no-headers \ + --button=Previous!"${DIRECTORY}/icons/back.png":2 \ + --button=Next!"${DIRECTORY}/icons/forward.png":0 \ + 2>/dev/null + button=$? #get exit code to determine which button was pressed + + if [ $button == 0 ];then + step=6 + elif [ $button == 2 ];then + step=4 + else + #like clicking the X or something + exit 0 + fi + ;; + 6) + + text="$(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | head -n1) +Current status: uninstalled +Website: $(cat "${DIRECTORY}/apps/${name}/website" || echo "unavailable") +$(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | grep -v "$(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | head -n1)")" + + echo "$text" | yad --text-info --fontname=12 --wrap --show-uri \ + --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=700 --height=300 \ + --text='Make sure everything looks right. +Here'\''s a preview of the Details window:' \ + --image="${DIRECTORY}/apps/${name}/icon-64.png" --image-on-top \ + --button=Previous!"${DIRECTORY}/icons/back.png":2 \ + --button=Next!"${DIRECTORY}/icons/forward.png":0 \ + 2>/dev/null + button=$? #get exit code to determine which button was pressed + + if [ $button == 0 ];then + step=7 + elif [ $button == 2 ];then + step=5 + else + #like clicking the X or something + exit 0 + fi + ;; *) error "Unknown step ${step}!" ;; diff --git a/gui b/gui index 227a563..8d45499 100755 --- a/gui +++ b/gui @@ -13,6 +13,11 @@ function error { mkdir -p "${DIRECTORY}/data/installed-packages" "${DIRECTORY}/data/status" +#Variable 1 is used to view the details of the specefied app +if [ ! -z "$1" ];then + output="$1" +fi + while true;do APPS="$(echo "$(ls "${DIRECTORY}/apps")" | grep -v 'template')" @@ -31,13 +36,18 @@ while true;do LIST="$LIST$(echo "${DIRECTORY}/icons/$(cat "${DIRECTORY}/data/status/${i}" || echo "none").png") ${DIRECTORY}/apps/${i}/icon-24.png $i -"\("$(cat "${DIRECTORY}/data/status/${i}" || echo "probably uninstalled")"\)" $(echo "$(cat "${DIRECTORY}/apps/${i}/description" || echo "Description unavailable")" | head -n1) +"\("$(cat "${DIRECTORY}/data/status/${i}" || echo "uninstalled")"\)" $(echo "$(cat "${DIRECTORY}/apps/${i}/description" || echo "Description unavailable")" | head -n1) " done IFS="$PREIFS" LIST="$(echo -e "$LIST")" #echo "$LIST" - if [ -z "$output" ];then + + #if output is not empty then assume button pressed was Details + button=0 + + while [ -z "$output" ] + do output="$(echo -e "$LIST" | yad --center --title='Pi-Apps' --width=310 --height=300 --no-headers \ --list --separator='\n' --window-icon="${DIRECTORY}/icons/logo.png" \ @@ -54,10 +64,16 @@ $i fi echo "Output: ${output}EOO" - else - #if output is not empty then assume button pressed was Details - button=0 + + if [ -z "$output" ];then + echo "output variable empty!" + yad --center --title='Pi-Apps' --width=310 \ + --window-icon="${DIRECTORY}/icons/logo.png" \ + --text="Mind reading is not supported. +(You didn"\'"t select an App)" \ + --button=OK:0 fi + done case $button in @@ -68,10 +84,8 @@ $i 0) echo "Details" - info="$(if [ -f "${DIRECTORY}/data/status/${output}" ];then - echo -n "Current status: " - cat "${DIRECTORY}/data/status/${output}" - fi + info="$(echo -n "Current status: " + cat "${DIRECTORY}/data/status/${output}" || echo 'Uninstalled' if [ ! -z "$(cat "${DIRECTORY}/data/installed-packages/${output}")" ];then echo -n "This app installed these packages: " @@ -84,13 +98,17 @@ $info Website: $(cat "${DIRECTORY}/apps/${output}/website" || echo "unavailable") $(echo "$(cat "${DIRECTORY}/apps/${output}/description" || echo "Description unavailable")" | grep -v "$(echo "$(cat "${DIRECTORY}/apps/${output}/description" || echo "Description unavailable")" | head -n1)")" + #if already installed then no need to provide install button. And vice versa. whichbutton="$( - if [ "$(cat "${DIRECTORY}/data/status/${output}")" == 'installed' ];then + if [ -f "${DIRECTORY}/data/status/${output}" ];then + #Taking a chance here. If status file is nonexistent, assume uninstalled. + echo "--button=Install!${DIRECTORY}/icons/install.png:4" + elif [ "$(cat "${DIRECTORY}/data/status/${output}")" == 'installed' ];then echo "--button=Uninstall!${DIRECTORY}/icons/uninstall.png:2" elif [ "$(cat "${DIRECTORY}/data/status/${output}")" == 'uninstalled' ];then echo "--button=Install!${DIRECTORY}/icons/install.png:4" else - #if status is corrupted or unknown + #if status is corrupted or unknown, then show both buttons echo "--button=Uninstall!${DIRECTORY}/icons/uninstall.png:2 --button=Install!${DIRECTORY}/icons/install.png:4" fi )"