jueves, 30 de diciembre de 2010

Ruby Gnome 2 - Parte 1 - Contenedores de Pestañas

Los elementos en una aplicación que utiliza Ruby Gnome 2 puede hacer uso de pestañas para la organización de sus elementos y esto se puede lograr de una forma muy fácil como se muestra a continuación en el ejemplo:


#!/usr/bin/env ruby


require 'gtk2'


ventana=Gtk::Window.new
ventana.set_title("Titulo Ventana")
ventana.border_width=10
ventana.set_default_size(500,500)
ventana.set_window_position(Gtk::Window::POS_MOUSE)


#CREANDO EL CONTENEDOR PESTAÑA
pestana=Gtk::Notebook.new


#CREANDO LA ETIQUETA PARA LA PRIMERA PESTAÑA
etiPestana1=Gtk::Label.new("Pestaña 1")


#AHORA AGREGUEMOS ALGUNAS PESTAÑAS CADA UNA
#DE ELLAS CON UTILIZANDO UN CONTENEDOR EXPLICADO 
#CON ANTERIORIDAD PARA HACERLO UN POCO MAS INTERESANTE


#AGREDANDO UNA TABLA COMO PESTAÑA
tabla=Gtk::Table.new(2,2,true)


#CREACION DE ELEMENTOS DE LA TABLA
etiqueta1=Gtk::Label.new("Etiqueta 1")
etiqueta2=Gtk::Label.new("Etiquera 2")
boton1=Gtk::Button.new("Boton 1")
boton2=Gtk::Button.new("Boton 2")


#OPCIONES PARA QUE LOS ELEMENTOS SE LLENEN TODA LA VENTANA
opciones = Gtk::EXPAND|Gtk::FILL


#ESQUINA SUPERIOR IZQUIERDA CUADRICULA 2X2
tabla.attach(etiqueta1,0,1,0,1,opciones,opciones,0,0)
#ESQUINA SUPERIOR DERECHA CUADRICULA 2X2
tabla.attach(etiqueta2,0,1,1,2,opciones,opciones,0,0)
#ESQUINA INFERIOR IZQUIERDA CUADRICULA 2X2
tabla.attach(boton1,1,2,0,1,opciones,opciones,0,0)
#ESQUINA INFERIOR DERECHA CUADRICULA 2X2
tabla.attach(boton2,1,2,1,2,opciones,opciones,0,0)


#AGREGANDO ETIQUETA DE PESTAÑA Y ELEMENTOS
pestana=pestana.append_page(tabla,etiPestana1)


#AGREGANDO EL CONTENEDOR DE PESTAÑA A LA VENTANA
ventana.add(pestana)
ventana.show_all


Gtk.main


El resultado del código anterior da como resultado lo siguiente:

Ruby Gnome 2 - Parte 1 - Contenedores Fijos

Otra diferente forma de organizar los elementos en pantalla utilizando Ruby Gnome 2 son los contenedores fijos, estos permiten el posicionamiento de los elementos en una posicion "x,y" especifica, como se muestra en el siguiente ejemplo:


#!/usr/bin/env ruby


require 'gtk2'


ventana=Gtk::Window.new
ventana.border_width=10
ventana.set_title("Titulo Ventana")
ventana.set_default_size(300,300)
ventana.set_window_position(Gtk::Window::POS_MOUSE)


#CREACION DE VENTANA CON ELEMENTOS FIJOS
contenedorFijo=Gtk::Fixed.new


#CREACION DE ELEMENTOS PARA LA VENTANA


boton1=Gtk::Button.new("Boton 1")
boton2=Gtk::Button.new("Boton 2")
etiqueta1=Gtk::Label.new("Etiqueta 1")


#AGREGANDO ELEMENTOS AL CONTENEDOR
#parametros=nombreElemento,posicionX,posicionY
contenedorFijo.put(boton1,0,50)
contenedorFijo.put(boton2,100,223)
contenedorFijo.put(etiqueta1,125,75)


ventana.add(contenedorFijo)
ventana.show_all


Gtk.main


El resultado del codigo anterior es:

Ruby Gnome 2 - Parte 1 - Contenedores Tablas

Otro elemento que se puede utilizar ademas de los contenedores verticales y horizontales en las ventanas es el contenedor de tabla, el cual es capaz de organizar los elementos en una cuadricula, como se muestra en el siguiente ejemplo:

#!/usr/bin/env ruby


require 'gtk2'


#CREACION DE LA VENTANA PRINCIPAL
ventana=Gtk::Window.new
ventana.set_title("Titulo Ventana")
ventana.border_width=10
ventana.set_default_size(300,300)
ventana.set_window_position(Gtk::Window::POS_MOUSE)


#CREACION DE LA TABLA DE 2X2 PARA ORDENAR LOS ELEMENTOS
#LOS PARAMETROS SON EL ANCHO,ALTO Y SI SON HOMOGENEOS
tabla=Gtk::Table.new(2,2,true)


#CREACION DE ELEMENTOS DE LA TABLA
etiqueta1=Gtk::Label.new("Etiqueta 1")
etiqueta2=Gtk::Label.new("Etiquera 2")
boton1=Gtk::Button.new("Boton 1")
boton2=Gtk::Button.new("Boton 2")


#LOS ELEMENTOS SE AGREGAN A LA TABLA ESTABLECIENDO
#EL PUNTO DE LA ESQUINA SUPERIOR IZQUIERDA
#Y EL PUNTO DE LA ESQUINA INFERIOR DERECHA


#OPCIONES PARA QUE LOS ELEMENTOS SE LLENEN TODA LA VENTANA
opciones = Gtk::EXPAND|Gtk::FILL


#AGREGANDO BOTONES Y ETIQUETAS
# parametros=nombreElemento,x1,x2,y1,y2,opciones,opciones,xpad,ypad


#ESQUINA SUPERIOR IZQUIERDA CUADRICULA 2X2
tabla.attach(etiqueta1,0,1,0,1,opciones,opciones,0,0)
#ESQUINA SUPERIOR DERECHA CUADRICULA 2X2
tabla.attach(etiqueta2,0,1,1,2,opciones,opciones,0,0)
#ESQUINA INFERIOR IZQUIERDA CUADRICULA 2X2
tabla.attach(boton1,1,2,0,1,opciones,opciones,0,0)
#ESQUINA INFERIOR DERECHA CUADRICULA 2X2
tabla.attach(boton2,1,2,1,2,opciones,opciones,0,0)


#AGREGANDO TABLA EN LA VENTANA PRINCIPAL
ventana.add(tabla)


#MOSTRANDO ELEMENTOS
ventana.show_all


Gtk.main


El resultado del codigo anterior será el siguiente:

martes, 7 de diciembre de 2010

Ruby Gnome 2 - Parte 1 - Contenedores Horizontales y Verticales

Para poder organizar elementos en las ventanas ruby-gnome2 hace uso de los que se conoce como "contenedores". Existen varios tipos de contenedores pero por el momento solo explicare como utilizar los contenedores horizontales y verticales. También utilizare el ejemplo para mostrar como se crean botones y etiquetas.

Contenedores Horizontales
Como su nombre lo indica estos sirven para poder ordenar los elementos de una forma horizontal como se muestra en el siguiente ejemplo:

#!/usr/bin/env ruby
require 'gtk2'

ventana=Gtk::Window.new
ventana.set_title("Titulo Ventana")
ventana.set_default_size(300,300)
ventana.set_window_position(Gtk::Window::POS_MOUSE)

#Creacion de elementos para la ventana

#Creacion de boton 1
boton1=Gtk::Button.new("Boton 1")

#Creacion de boton 2
boton2=Gtk::Button.new("Boton 2")

#Creacion de etiqueta 1
etiqueta1=Gtk::Label.new("Etiqueta 1")

#Creacion de etiqueta 2
etiqueta2=Gtk::Label.new("Etiqueta 2")

#Creacion del contenedor horizontal
contenedorH=Gtk::HBox.new

#Funcion para agregar un elemento al contenedor
contenedorH.pack_start(boton1)
contenedorH.pack_start(etiqueta1)
contenedorH.pack_start(boton2)
contenedorH.pack_start(etiqueta2)

#AHORA QUE SE TIENE EL CONTENEDOR HORIZONTAL CON LOS ELEMENTOS
#ES NECESARIO AGREGAR EL CONTENEDOR A LA VENTANA
ventana.add(contenedorH)


#Se muestra la ventana
ventana.show_all

Gtk.main

El resultado del código anterior sera el siguiente:

Contenedores Verticales.
Ahora un ejemplo para la creación de contenedores verticales
#!/usr/bin/env ruby

require 'gtk2'


ventana=Gtk::Window.new
ventana.set_title("Titulo Ventana")
ventana.set_default_size(300,300)
ventana.set_window_position(Gtk::Window::POS_MOUSE)


#Creacion de elementos para la ventana


#Creacion de boton 1
boton1=Gtk::Button.new("Boton 1")


#Creacion de boton 2
boton2=Gtk::Button.new("Boton 2")


#Creacion de etiqueta 1
etiqueta1=Gtk::Label.new("Etiqueta 1")


#Creacion de etiqueta 2
etiqueta2=Gtk::Label.new("Etiqueta 2")


#Creacion del contenedor vertical
contenedorH=Gtk::VBox.new


#Funcion para agregar un elemento al contenedor
contenedorH.pack_start(boton1)
contenedorH.pack_start(etiqueta1)
contenedorH.pack_start(boton2)
contenedorH.pack_start(etiqueta2)


#AHORA QUE SE TIENE EL CONTENEDOR HORIZONTAL CON LOS ELEMENTOS
#ES NECESARIO AGREGAR EL CONTENEDOR A LA VENTANA
ventana.add(contenedorH)




#Se muestra la ventana
ventana.show_all


Gtk.main


El resultado del codigo anterior es:

Ruby Gnome 2 - Parte 1 - Creación de Ventanas

Bueno para comenzar a aprender como utilizar Ruby-Gnome2 lo primero que se necesita conocer es como poder crear una ventana y los metodos basicos de las ventanas:

Ejemplo 1:
#!/usr/bin/env ruby
#Libreria Ruby-Gnome2
require 'gtk2'


#Creacion de la ventana principal
ventana=Gtk::Window.new


#Establecer titulo de la ventana
ventana.set_title("Titulo Ventana")


#Establecer el tamaño de la ventana
ventana.set_default_size(300,300)


#Establecer la posicion de la ventana
#posibles opciones
#Gtk::Window::POS_NONE 
#Gtk::Window::POS_CENTER 
#Gtk::Window::POS_MOUSE
#Gtk::Window::POS_CENTER_ALWAYS
#Gtk::Window::POS_CENTER_ON_PARENT


#Establecer la posicion de la ventana en el mismo lugar
#donde se encuentra el mouse
ventana.set_window_position(Gtk::Window::POS_MOUSE)


#Se muestra la ventana
ventana.show_all


Gtk.main


El resultado del codigo anterior sera es siguiente:

Aprendiendo Ruby Gnome 2

Hace algunas semanas estaba pensando en aprender un nuevo lenguaje de programación y empece a buscar en Internet, luego de ver en Google encontré dos lenguajes de programación que me parecieron muy interesantes Python y Ruby, luego de leer un poco acerca de los dos lenguajes me decidí por Ruby cuya sintaxis es bastante clara.
Pero el motivo mas importante por el cual escogí este lenguaje es una frase que leí hace mucho tiempo

"A language that doesn't affect the way you think about programming, is not worth knowing"
"Un lenguaje que no afecte la forma en la cual pienses acerca de programación, no vale la pena conocerlo"

Ruby es muy diferente a los lenguajes que conozco Java, C#, Php y C++(aprendidos en la Universidad) por lo que durante las ultimas semanas me di a la tarea de aprender este lenguaje. El principal problema que encontré es la poca documentación en español así que decidí  crear un blog para compartir lo que he logrado aprender en especial lo relacionado a la creación de interfaces gráficas con Ruby-Gnome2.