Calculadora Shell com Yad

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

[ Hits: 6.966 ]

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

Firewall Iptables

Criar políticas para o SELinux

Monitorando espaço em disco com IP dinâmico.

Agendador de Taferas

iptables, sem frescuras!


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts