Calculadora Shell com Yad

Publicado por Raimundo Alves Portela (última atualização em 01/01/2012)

[ Hits: 5.203 ]

Homepage: http://portelanet.com

Download calculadora_shell_yad.tar.gz




Script para demonstrar algumas das novidades do form no Yad, sendo a possibilidade de imprimir conteúdo dentro de um campo texto e também de podermos capturar o conteúdo de um campo texto, para ser usado em outro campo, tudo isso sem que o Dialog seja fechado.

Para imprimir conteúdo em um campo, o campo tipo BTN, deve ser iniciado com um @, e deve imprimir um texto iniciado com o número do campo a ter o conteúdo mudado,.

Exemplo:
yad --form --field='Mostrar aqui' '' --field='Testar':BTN "@echo '1:Hello world'"

No caso acima, o campo 1 é o --field='Mostrar aqui' ''.

Para capturar o texto de um campo, basta referenciar o campo, usando um %1 (primeiro campo), %2 (segundo), e assim por diante.
Exemplo:
yad --form --field='Texto' 'Hello World' --field='Testar':BTN "yad --text '%1'"

Ok, abaixo segue uma calculadora completa, usando os recursos descritos. Após descompactar, execute com o comando:

./calc_yad.sh

No código descrito, observe que é composto por 2 arquivos calc_yad.sh e calc.sh, separados por #-------------------------------------

  



Esconder código-fonte

#!/bin/bash
# arquivo calc_yad.sh
# Calculadora em Shell com Yad
yad --form --title='Calc Shell + Yad' --columns=5 --width=400 \
--field='' '' \
--field='':LBL '' --field='':LBL '' --field='':LBL '' --field=7:BTN "@./calc.sh %1 7" --field=4:BTN "@./calc.sh %1 4" --field=1:BTN "@./calc.sh %1 1" \
--field=0:BTN "@./calc.sh %1 0" --field=8:BTN "@./calc.sh %1 8" --field=5:BTN "@./calc.sh %1 5" --field=2:BTN "@./calc.sh %1 2" \
--field='+':BTN "@./calc.sh %1 +" --field=9:BTN "@./calc.sh %1 9" --field=6:BTN "@./calc.sh %1 6" --field=3:BTN "@./calc.sh %1 3" \
--field='-':BTN "@./calc.sh %1 -" --field='/':BTN "@./calc.sh %1 /" --field='x':BTN "@./calc.sh %1 x" --field='C':BTN "@echo 1:" \
--field='=':BTN "@./calc.sh calc %1" --no-buttons

# --------------------------------------------------------------------------------------------------------

#!/bin/bash
# arquivo calc.sh
# engine da calculadora ;-)
function calc() {
   ajusta $*
   RESULTADO=$(echo $DADOS | sed 's/x/\\*/g' | xargs expr)
   [ "$RESULTADO" ] && echo "1:$RESULTADO" || echo '1:ERRO AO CALCULAR'
}

function ajusta() {
   CALCULAR=$1
   shift
   for i in $*
   do
      if echo $i | egrep '\+|-|x|/'
      then
         CALCULAR="$CALCULAR $i "
         continue
      fi
      CALCULAR="${CALCULAR}$i"
   done
   export DADOS="$CALCULAR"
}

case "$1" in
'calc') shift
   calc $* ;;

*) ajusta $*
   echo "1:$DADOS" ;;
esac

Scripts recomendados

Backup avançado

Backup, restore e leitura de log com Dialog

Mais um backup

cpb - copia arquivos executáveis

Sincronia com o rsync


  

Comentários
[1] Comentário enviado por danniel-lara em 02/01/2012 - 10:20h

Parabéns Raimundo
ficou bem bagual a calculadora
muito tri mesmo

[2] Comentário enviado por alexandremc em 15/08/2019 - 16:21h

Muito bom.

Curiosidade, como faria para deixar as funções no mesmo arquivo?

Consegui sem usar o form, mas com form, não consigo execuar funões, mesmo exportanto elas ao término.

Abraços


Contribuir com comentário