http://alfespa17.blogspot.com/

sudo apt-get install ruby-gnome2 ruby-gnome2-dev

Creación de Ventanas.

Contenedores.

Contenedores Horizontales

Contenedores Verticales.

Contenedores de tablas

Contenedores Fijos

Contenedores de Pestañas

Creacion de Menus

ACTUALIZADO: 29/01/2011Hola amigos desde hace algún he estado aprendiendo como programar Ruby y he encontrado que existen muchos tutoriales para aprenderlo en internet, pero no hay muchos acerca de como utilizar ruby-gnome2 para crear una interfaz gráfica, por lo que he decidido aportar un granito de arena a la comunidad.Así que he creado un blog con ejemplos de ruby utilizando ruby-gnome2 y compartir también esa información en Taringa para que sea de fácil acceso a muchas personas.Espero que esta informacion le sirva de ayuda a todos aquellos programadores que quieran aprender a utilizar ruby-gnome 2 o los que quieran disfrutar un rato aprendiendo algo de Ruby.De ahora en adelante asumiré que conocen por lo menos lo básico de la sintaxis de Ruby, que lo tienen instalado correctamente en su sistemas y que están utilizando Ubuntu como sistema operativo, he tratado de comentar la mayor parte de código para que sea fácilmente comprendido.Para comenzar hay que instalar ruby-gnome2 para lo cual realizaremos los siguienteInstalación Ubuntu 10.04(Creo que para otras versiones el comando debe de ser igual).Ahora que ya tenemos instaladas las librerías adecuadas podemos empezar el tutorialBueno 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-Gnome2require 'gtk2'#Creacion de la ventana principalventana=Gtk::Window.new#Establecer titulo de la ventanaventana.set_title("Titulo Ventana"#Establecer el tamaño de la ventanaventana.set_default_size(300,300)#Establecer la posicion de la ventana#posibles opciones#Gtk::Window:OS_NONE#Gtk::Window:OS_CENTER#Gtk::Window:OS_MOUSE#Gtk::Window:OS_CENTER_ALWAYS#Gtk::Window:OS_CENTER_ON_PARENT#Establecer la posicion de la ventana en el mismo lugar#donde se encuentra el mouseventana.set_window_position(Gtk::Window:OS_MOUSE)#Se muestra la ventanaventana.show_allGtk.mainPara 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.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 rubyrequire 'gtk2'ventana=Gtk::Window.newventana.set_title( "Titulo Ventana" )ventana.set_default_size(300,300)ventana.set_window_position(Gtk::Window:OS_MOUSE)#Creacion de elementos para la ventana#Creacion de boton 1boton1=Gtk::Button.new( "Boton 1" )#Creacion de boton 2boton2=Gtk::Button.new( "Boton 2" )#Creacion de etiqueta 1etiqueta1=Gtk::Label.new( "Etiqueta 1" )#Creacion de etiqueta 2etiqueta2=Gtk::Label.new( "Etiqueta 2" )#Creacion del contenedor horizontalcontenedorH=Gtk::HBox.new#Funcion para agregar un elemento al contenedorcontenedorH.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 VENTANAventana.add(contenedorH)#Se muestra la ventanaventana.show_allGtk.mainAhora un ejemplo para la creación de contenedores verticales#!/usr/bin/env rubyrequire 'gtk2'ventana=Gtk::Window.newventana.set_title("Titulo Ventana"ventana.set_default_size(300,300)ventana.set_window_position(Gtk::Window:OS_MOUSE)#Creacion de elementos para la ventana#Creacion de boton 1boton1=Gtk::Button.new("Boton 1"#Creacion de boton 2boton2=Gtk::Button.new("Boton 2"#Creacion de etiqueta 1etiqueta1=Gtk::Label.new("Etiqueta 1"#Creacion de etiqueta 2etiqueta2=Gtk::Label.new("Etiqueta 2"#Creacion del contenedor verticalcontenedorH=Gtk::VBox.new#Funcion para agregar un elemento al contenedorcontenedorH.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 VENTANAventana.add(contenedorH)#Se muestra la ventanaventana.show_allGtk.mainOtro 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 rubyrequire 'gtk2'#CREACION DE LA VENTANA PRINCIPALventana=Gtk::Window.newventana.set_title("Titulo Ventana"ventana.border_width=10ventana.set_default_size(300,300)ventana.set_window_position(Gtk::Window:OS_MOUSE)#CREACION DE LA TABLA DE 2X2 PARA ORDENAR LOS ELEMENTOS#LOS PARAMETROS SON EL ANCHO,ALTO Y SI SON HOMOGENEOStabla=Gtk::Table.new(2,2,true)#CREACION DE ELEMENTOS DE LA TABLAetiqueta1=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 VENTANAopciones = Gtk::EXPAND|Gtk:ILL#AGREGANDO BOTONES Y ETIQUETAS# parametros=nombreElemento,x1,x2,y1,y2,opciones,opciones,xpad,ypad#ESQUINA SUPERIOR IZQUIERDA CUADRICULA 2X2tabla.attach(etiqueta1,0,1,0,1,opciones,opciones,0,0)#ESQUINA SUPERIOR DERECHA CUADRICULA 2X2tabla.attach(etiqueta2,0,1,1,2,opciones,opciones,0,0)#ESQUINA INFERIOR IZQUIERDA CUADRICULA 2X2tabla.attach(boton1,1,2,0,1,opciones,opciones,0,0)#ESQUINA INFERIOR DERECHA CUADRICULA 2X2tabla.attach(boton2,1,2,1,2,opciones,opciones,0,0)#AGREGANDO TABLA EN LA VENTANA PRINCIPALventana.add(tabla)#MOSTRANDO ELEMENTOSventana.show_allGtk.mainEl resultado del codigo anterior será el siguiente: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 rubyrequire 'gtk2'ventana=Gtk::Window.newventana.border_width=10ventana.set_title("Titulo Ventana"ventana.set_default_size(300,300)ventana.set_window_position(Gtk::Window:OS_MOUSE)#CREACION DE VENTANA CON ELEMENTOS FIJOScontenedorFijo=Gtk:ixed.new#CREACION DE ELEMENTOS PARA LA VENTANAboton1=Gtk::Button.new("Boton 1"boton2=Gtk::Button.new("Boton 2"etiqueta1=Gtk::Label.new("Etiqueta 1"#AGREGANDO ELEMENTOS AL CONTENEDOR#parametros=nombreElemento,posicionX,posicionYcontenedorFijo.put(boton1,0,50)contenedorFijo.put(boton2,100,223)contenedorFijo.put(etiqueta1,125,75)ventana.add(contenedorFijo)ventana.show_allGtk.mainEl resultado del codigo anterior es: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 rubyrequire 'gtk2'ventana=Gtk::Window.newventana.set_title("Titulo Ventana"ventana.border_width=10ventana.set_default_size(500,500)ventana.set_window_position(Gtk::Window:OS_MOUSE)#CREANDO EL CONTENEDOR PESTAÑApestana=Gtk::Notebook.new#CREANDO LA ETIQUETA PARA LA PRIMERA PESTAÑAetiPestana1=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ÑAtabla=Gtk::Table.new(2,2,true)#CREACION DE ELEMENTOS DE LA TABLAetiqueta1=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 VENTANAopciones = Gtk::EXPAND|Gtk:ILL#ESQUINA SUPERIOR IZQUIERDA CUADRICULA 2X2tabla.attach(etiqueta1,0,1,0,1,opciones,opciones,0,0)#ESQUINA SUPERIOR DERECHA CUADRICULA 2X2tabla.attach(etiqueta2,0,1,1,2,opciones,opciones,0,0)#ESQUINA INFERIOR IZQUIERDA CUADRICULA 2X2tabla.attach(boton1,1,2,0,1,opciones,opciones,0,0)#ESQUINA INFERIOR DERECHA CUADRICULA 2X2tabla.attach(boton2,1,2,1,2,opciones,opciones,0,0)#AGREGANDO ETIQUETA DE PESTAÑA Y ELEMENTOSpestana=pestana.append_page(tabla,etiPestana1)#AGREGANDO EL CONTENEDOR DE PESTAÑA A LA VENTANAventana.add(pestana)ventana.show_allGtk.mainEl resultado del código anterior da como resultado lo siguiente:Al crear aplicaciones utilizando ruby-gnome2 es posible la utilización de menú, los cuales se pueden desarrollar de una forma muy sencilla como se muestra en el siguiente ejemplo:#!/usr/bin/env rubyrequire 'gtk2'ventana=Gtk::Window.newventana.set_title("Titulo Ventana"ventana.set_default_size(300,50)#CREACION DE LA BARRA DE MENUbarraMenu=Gtk::MenuBar.new#CREANDO EL MENU DE ARCHIVOmenuArchivo=Gtk::Menu.new#CREANDO EL MENU DE AYUDAmenuAyuda=Gtk::Menu.new#CREANDO ELEMENTOS DEL MENU ARCHIVOelementoArchivoAbrir=Gtk::MenuItem.new("Abrir"elementoArchivoCerrar=Gtk::MenuItem.new("Cerrar"#CREANO ELEMENTO DEL MENU DE AYUDAelementoAyudaAcerca=Gtk::MenuItem.new("Ayuda"#AGREGANDO ELEMENTOS AL MENU DE ARCHIVOmenuArchivo.append(elementoArchivoAbrir)menuArchivo.append(elementoArchivoCerrar)#AGREGANDO ELEMENTOS AL MENU DE AYUDAmenuAyuda.append(elementoAyudaAcerca)#ELEMENTO DE LA BARRA DE MENU QUE TENDRAN LOS MENU DE ARCHIVO Y AYUDAarchivo=Gtk::MenuItem.new("Abrir"ayuda=Gtk::MenuItem.new("Acerca"#AL HACER CLICK SOBRE LOS ELEMENTOS DE LA BARRA#DE MENU SE LLAMA A UN DETERMINADO SUBMENU#EN ESTE CASO SERIA LOS MENU DE ARCHIVO Y AYUDAarchivo.submenu=menuArchivoayuda.submenu=menuAyuda#AGREGANDO ELEMENTOS DEL MENU A LA BARRA DE MENUbarraMenu.append(archivo)barraMenu.append(ayuda)#AGREGANDO MENU A LA VENTANAventana.add(barraMenu)ventana.show_allGtk.mainEl resultado del código anterior da como resultado una barra con 2 menús uno de archivo y el otro de ayuda. El menú archivo tiene dos elementos y el menú de ayuda uno.Bueno eso será todo por este tutorial en los siguientes días tratare de ir agregando mas información