Creando interfaces en GtkDialog

Message
Author
User avatar
josejp2424
Posts: 556
Joined: Sun 01 Aug 2010, 22:35
Contact:

mister electronico

#41 Post by josejp2424 »

muy bueno lo que estas presentando mister electronico

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Arrastrar iconos a un entry.

#42 Post by mister_electronico »

El siguiente programita es muy interesante, normalmente en cualquier programa como los de configuracion u otro tipo se nos puede dar la ocasion de la necesidad de pedir al usuario el arrastrar el icono de un archivo para que haga algo con ese archivo.


El ejemplo mas claro lo tenemos cuando arrastramos un imagen, a unos de los iconos del escritorio para ponerle la imagen que nosotros queremos.

Nos pide que arrastremos una imagen a una ventanita de entry.


El siguiente programa muestra como hacerlo salvo que en este caso lo que tenemos que es arrastrar un archivo de audio o video para luego mas tarde sea reproducido al apretar el boton Ok.


Bueno aqui lo dejo.

Code: Select all

#! /bin/bash
function LEER_ARCHIVO(){

   A=$(cat /tmp/arch234.txt)
   echo "$A"
   exec mplayer "$A"   
}

export -f LEER_ARCHIVO

export MAIN_DIALOG='
<vbox>
   <text>
     <label>Arrastre un archivo de audio o video a la ventanita.</label>
   </text>
   <entry>
    <variable>ARCHIVO</variable>
   </entry>
 <hbox>
   <button ok>
      <action>"echo $ARCHIVO > /tmp/arch234.txt"</action>
      <action>LEER_ARCHIVO</action>
	  <action>exit:Exit</action>
   </button>
 </hbox>
</vbox>
'
gtkdialog --program=MAIN_DIALOG


User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Arrastrar iconos a un entry.

#43 Post by mister_electronico »

Bueno unos comentarios con respecto el programa anterior.

Ver tambien el uso de las funciones exteriores en este caso la de LEER_ARCHIVO

Y como se exporta para que pueda ser leida por el programa.

Las funciones so muy utililes en multiples programas de Gtkdialog.


Otra cosa interesante es como el nombre del archivo arrastrado es capturado en la variable ARCHIVO y como este nombre se almacena dentro del archivo temporal /tmp/arch234.txt para luego poder ser recuperado por la funcion
LEER_ARCHIVO, una forma de pasarse datos atraves de ficheros.

Saludos.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Progress bar

#44 Post by mister_electronico »

El progressbar es una ventana para indicarnos algo que esta en proceso.

Code: Select all

#! /bin/bash

export MAIN_DIALOG='
<vbox>
  <frame Ejecutando>
    <text>
      <label>Proceso en ejecucion.</label>
    </text>
    <progressbar>
      <label>Ejecutando</label>
      <input>for i in $(seq 0 10 100); do echo $i; sleep 0.3; done</input>
      <action type="exit">Ready</action>
    </progressbar>
  </frame>
  <hbox>
   <button cancel></button>
  </hbox>
 </vbox>
'

gtkdialog --program=MAIN_DIALOG

Tener en consideracion en input podriamos poner una variable que fuera variando externamente y por ejemplo esta podria varias segun va instalandose un programa externo o segun se va ejecutando un proceso.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Menubar

#45 Post by mister_electronico »

menubar nos abre una ventana con la tipica barra de menus superior

Code: Select all

#! /bin/bash

export MAIN_DIALOG='
<vbox>
  <menubar>
    <menu>
      <menuitem stock="gtk-open">
        <action>echo Tu seleccionaste menu Open</action>
      </menuitem>
      <menuitem stock="gtk-save">
        <action>echo Tu seleccionaste mun Salvar.</action>
      </menuitem>
      <separator></separator>
      <menuitem stock="gtk-quit">
        <action>echo Tu selecionastes salir item</action>
        <action type="exit">exit by menu</action>
      </menuitem>
      <label>File</label>
    </menu>
    <menu>
      <menuitem stock="gtk-copy">
        <action>echo Tu selecionaste copy.</action>
      </menuitem>
      <menuitem stock="gtk-cut">
        <action>echo Tu seleccionaste cut.</action>
      </menuitem>
      <menuitem stock="gtk-paste">
        <action>echo Tu selecionaste Paste.</action>
      </menuitem>
      <label>Edit</label>
    </menu>
    <menu>
        <menuitem>
          <label>menu_prueba</label>
          <action>echo Tu seleccionaste menu_prueba.</action>
        </menuitem>
        <label>Item</label>
    </menu>
  </menubar>
  <hbox>
    <button cancel></button>
    <button ok></button>
  </hbox>
</vbox>
'

gtkdialog --program=MAIN_DIALOG


User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Mejorando el menubar

#46 Post by mister_electronico »

En el menubar anterior los nombres de los menus principales vienen por defecto asi como los iconos, en el siguiente podemos elegir los nombres del menu y los iconos por defecto asi como su tamaño de presentracion.

Code: Select all

#!/bin/sh

GTKDIALOG=gtkdialog


export MAIN_DIALOG='
<window title="MenuBar" resizable="false">
   <vbox spacing="0">
    <hbox>
      <menubar>
         <menu label="_Archivo" use-underline="true">
            <menuitem icon-name="dir_o" label="Abrir"></menuitem>
            <menuitem icon-name="mini-diskette" label="Salvar"></menuitem>
            <menuitemseparator></menuitemseparator>
            <menuitem icon-name="mini-cross" label="Salir"><action>exit:Quit</action></menuitem>
         </menu>
         <menu use-underline="true">
            <menuitem icon-name="abiword" label="AbiWord"></menuitem>
            <menuitem icon-name="gnumeric" label="Gnumeric 32px">
               <height>32</height>
            </menuitem>
            <menuitem icon-name="mini-palette" label="_Mtpaint 48px" use-underline="true">
               <height>48</height>
            </menuitem>
            <label>"_Utilidades"</label>
         </menu>
      </menubar>
    </hbox>
    <hbox>
      <button cancel></button>
      <button ok></button>
  </hbox>
   </vbox>   
</window>
'
Last edited by mister_electronico on Sun 31 Aug 2014, 17:55, edited 1 time in total.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

con respecto al menubar anterior.

#47 Post by mister_electronico »

Bueno como podemos ver en el menu anterior podemos poner nombres en español.

Para realizar las acciones a ejecutar en los menos usamos como siempre la action como en la linea:

<menuitem icon-name="mini-cross" label="Salir"><action>exit:Quit</action></menuitem>

Que nos sirve para salir del programa.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Ejemplo de radiobutton

#48 Post by mister_electronico »

Un ejemplo de funcionamiento de radiobutton:

Code: Select all

#! /bin/bash

function ejecutar()
{
	if [ $radiobutton1 = true ]; then abiword; fi
	if [ $radiobutton2 = true ]; then mtpaint; fi	
}

export radiobutton1  radiobutton2 

export -f ejecutar
export MAIN_DIALOG='
 <vbox>
  <frame Ejemplo de radiobutton>
    <radiobutton>
      <label>Abiword</label>    
      <variable>radiobutton1</variable>
    </radiobutton>
    <radiobutton>
      <label>Mtpaint</label>       
      <variable>radiobutton2</variable>
    </radiobutton>
  </frame>
  <hbox>
	<button>
	  <label>Ejecuta</label>	  
	  <action>ejecutar radiobutton1</action>
	</button>
   <button cancel></button>
  </hbox>
 </vbox>
'

gtkdialog --program=MAIN_DIALOG

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Atributos de radiobutton

#49 Post by mister_electronico »

Atributos de radiobutton:

Code: Select all

#! /bin/bash

export MAIN_DIALOG='
 <vbox>
  <frame Ejemplos de Radiobutton atributos>
    <radiobutton active="true">
      <label>Radiobutton_1</label>
      <variable>RADIOBUTTON1</variable>
      <action>echo Radiobutton es ahora $RADIOBUTTON1.</action>
    </radiobutton>

    <radiobutton draw_indicator="false">
      <label>Radiobutton con la pestañita de picar desahabilitada</label>
      <variable>RADIOBUTTON2</variable>
      <action>echo Radiobutton es ahora $RADIOBUTTON2.</action>
    </radiobutton>

    <radiobutton inconsistent="true">
      <label>Radiobutton con inconsistente fijado a true</label>
      <variable>RADIOBUTTON3</variable>
      <action>echo Radiobutton es ahora $RADIOBUTTON3.</action>
    </radiobutton>
  </frame>
  <hbox>
   <button ok>
     <variable>OKBUTTON</variable>
   </button>
   <button cancel></button>
  </hbox>
 </vbox>
'

gtkdialog --program=MAIN_DIALOG

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Cacharreando con Gtkdialog y SVG

#50 Post by mister_electronico »

Cacharreando con Gtkdialog y SVG monte este programita como letrero movil para dar mejor aspecto a nuestros programas, bueno pues aqui va..

Code: Select all

#!/bin/bash
[ -z $GTKDIALOG ] && GTKDIALOG=gtkdialog

export DAT=/dev/shm/var1
echo "800" > $DAT


# Letro movil
funcion1 () {
VAR=( `cat $DAT` )
echo '<svg width="800" height="150" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text x="'$VAR'" y="46" xml:space="preserve" style="font-family:monospace;font-size:64px;" font-weight="bold" fill="#7F0D0D" opacity="0.8">ESTO ES UNA PRUEBA</text>
</svg>' > /dev/shm/var2.svg

  VAR=`echo "$VAR - 10" | bc -l`
  echo ${VAR} > $DAT
  NUM=${VAR%%} 
  if [ $NUM -lt -720 ]; then  echo "800" > $DAT; else deci=0; fi      
}  
export -f funcion1

export MAIN='
<window title="Mobile sign" resizable="false">
  <vbox>
    <pixmap>
      <variable>IMG</variable>
      <input file>/dev/shm/var2.svg</input>
    </pixmap>
    <button ok></button>
    <timer visible="false" milliseconds="true" interval="100">
      <action>funcion1</action>
      <action type="refresh">IMG</action>
    </timer>
  </vbox>
</window>
'

case $1 in
	-d | --dump) echo "$MAIN" ;;
	*) $GTKDIALOG -cp MAIN ;;
esac
unset letrero_movil
unset funcion1
killall -9 letrero_movil
Saludos

Post Reply