19 jul 2019

redsky-ruby

https://sourceforge.net/projects/redsky-ruby/files/RedSky%20Stable%20Setup/RedSky%20Ruby%20v2019.1%20SETUP.exe/download

Aplicaciones de escritorio GUI con Ruby

https://aula301.com/aplicaciones-de-escritorio-gui-con-ruby/


Aplicaciones de escritorio GUI con Ruby


Programas con interfaz gráfica con Ruby

Esta entrada quiero hablar de un tema muy concreto que la gente suele preguntarme ocasionalmente, y es si es posible realizar programas con interfaz gráfica con el lenguaje de programación Ruby, la respuesta es sí.
Para hacerlo debemos por supuesto conocer el lenguaje de programación Ruby (muy orientado a objetos) y además las librerías que nos permiten realizar aplicaciones de escritorio visuales, a continuación paso a nombrar las más conocidas:

  • Ruby GTK
  • Shoes
  • FxRuby
  • Zenity
  • VisualRuby
  • QtRuby
  • SharedDevelop

Tenemos librerías visuales donde elegir, pero nosotros nos vamos a decantar por mostrarte en esta entrada Ruby GTK(The GIMP Toolkit), como hemos comentado antes es un conjunto de librería GUI que podemos impletar en nuestros programas. El motivo de escoger Ruby GTK entre las demás es sobretodo por la documentación existente y como valor añadido el resultado final de nuestras aplicaciones. Si eres programador en Java y has utilizado librerías gráficas podrás comprobar que la estructura de composición es muy parecida a la hora de crear nuestras ventanas y elementos que la componen.

Instalación de GTK


La instalación es bien sencilla, simplemente tenemos que introducir en el terminal o CMD la gema que deseamos instalar en nuestro caso GTK2.
gem install gtk2
Simple y sencillo como cualquier otra gema del mundo Ruby.

Conceptos básicos


Vamos a realizar una pequeña aplicación paso a paso y explicando el significado de cada uno de las líneas de código que implementemos. En primer lugar abre tu editor preferido que vamos ‘al lío!’. En nuestra primera línea poco que comentar, simplemente incorporamos la librería GTK, y en la segunda línea llamamos a las funciones necesarias para hacer funcionar las herramientas gráficas con GTK.init.
require 'gtk2'
GTK.init
Llegados a este punto podemos generar nuestra primera ventana, en definitiva es donde iremos incorporando todo lo elementos necesarios para realizar nuestro programa. En primer lugar creamos una instancia de la ventana gráfica y a el objeto “ventana” vamos llamando métodos o atributos para asignarles los valores que deseamos, en el ejemplo le indicamos el nombre de la ventana creada, tamaño y la posición de esta. Podemos ver todos los atributos en la documentación de esta aquí

ventana = Gtk::Window.new
ventana.set_title "Mi primera ventana"
ventana.set_default_size 500, 500
ventana.set_window_position Gtk::Window::Position::CENTER
ventana.show
Gtk.main

La penúltima línea “ventana.show” es la más importante y la que a los novatos suele olvidarse de introducir, llevando a quebraderos de cabezas de no ver su preciosa ventana generada. Su función es muestrar la ventana por pantalla, si llamar a ella no veríamos el resultado del código.
En la última línea tenemos “gtk.main”, llamando a la función principal y generando un bucle hasta que en el código se encuentre “gtk.main_quit” y salga de nuestro programa. En nuestro programa carecemos del código para salir de la aplicación.
Si ejecutamos nuestro primer programa, te mostrará una ventana en el centro de la pantalla, con el tamaño y título que le hemos asignado(como no hemos introducido el código para que el programa salga automáticamente, tendremos que realizarlo con la combinación de teclas Ctrl+C en nuestro terminal). Para los rubystas novatos diremos que para ejecutar un programa desde CMD o terminal tienes que realizarlo con el comando ruby <nombre_del_programa.rb>.

Venana GtK

Bueno ya tenemos completado lo más díficil que es comenzar con una herramienta nueva y que salga a la primera, espero que no tengáis muchos problemas para conseguir crear vuestra primera ventana.

Mi primer botón con GTK


Ahora que sería lo siguiente…. añadir elementos a una ventana tan vacía, y ese será nuestro primer botón.

boton = Gtk::Button.new "Mi primer boton"
ventana.add(boton)
boton.show

Creamos nuestro primer objeto del tipo botón y le pasamos como argumento el nombre de este en la primera lína del código, luego tenemos que añadirlo a la ventana que hemos generado en el anterior código, y como en el caso de la ventana tenemos que mostrarlo con el método show.
Realizar en gtk un botón
Como vemos en la imagen queda un botón un poco grande, además de cometer errores ortográficos, este segundo lo podemos corregir introduciendo en la primera línea el siguiente código.

#encoding: utf-8

Pero el segundo problema es más complejo de solucionar y hace falta conocer el sistema de paneles o grid de la librería visual y no son pocos, por ello os dejamos para aquellos que quieran continuar su aprendizaje de la librería el enlace para que puedan hacerlo http://zetcode.com/gui/rubygtk/.
Aunque hemos centrado la explicación en líneas simple una tras otras, es mejor enfocarlas con las propiedades de los lenguajes orientados a objetos, que sería utilizando clases, herencia y todo nuestro conocimiento en realizar planteamientos correctos. Paso a detallar un ejemplo simple de como estructurar nuestra aplicación con gtk en Ruby orientado a objetos.

require 'gtk2'

class RubyApp < Gtk::Window

def initialize
super                                                  #Llama al método inicializador de la clase padre

inicializar_ventana                                     #Método donde tenemos todo el código de nuestra aplicación
end

def inicializar_ventana

set_title "Mi primera ventana"                          #Nombre de la ventana
set_default_size 500, 500                               #Tamaño de la ventana
set_window_position Gtk::Window::Position::CENTER       #Posición de la ventana
boton = Gtk::Button.new "Mi primer botón"               #Crear botón

add(boton)                                              #Añadir botón a la ventana

show_all                                                #Mostrar todos los elementos generados
end
end

Gtk.init
window = RubyApp.new
Gtk.main

Eventos del botón


Además y por último vamos introducir un ejemplo sencillo para la llamada de eventos, como por ejemplo cuando un usuario realice la pulsación del botón “Mi primera ventana”.
boton.signal_connect "clicked" do
Gtk.main_quit
end
Con el método “signal_connect” y el evento “clicked” entra en nuestro código cuando un usuario realiza la pulsación en el botón y pasa a ejecutar las líneas correspondientes dentro del bloque Ruby.
Como hemos comentado al comienzo de este post, no es la única librería que existe para aplicaciones de entorno gráfico en el lenguaje de programación de Ruby, pero considero que esta es una librería sólida, con buena documentación para aquellos que quieran aventurarse a realizar sus aplicaciones GUI con Ruby.
Ruby no es solo un completo ideal de los framework como Rails o Sinatra, es más que ello, solo tenéis que conocerlo.

29 ene 2019

Ejemplos útiles

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Ruby/Ejemplos_del_lenguaje

Programación en Ruby/Ejemplos del lenguaje

Ir a la navegaciónIr a la búsqueda
Ejemplo 1
puts "Hello World"
print 'Enter your name: '
name= gets
puts "Hello #{name}"
5.times { puts "Hola"  }

Ejemplo 2
class Mamifero 
 def respira
   puts "inhala y exhala"
 end
end
class Gato<Mamifero
 def habla
   puts "Meow"
 end
end
misifus = Gato.new
misifus.respira
misifus.habla
class Ave
 def acicala
   puts "Estoy limpiando mis plumas."
 end
 def vuela
   puts "Estoy volando."
 end
end
class Pinguino<Ave
 def vuela
   puts "Lo siento, prefiero nadar."
 end
end
class Aguila<Ave
end
puts "Pinguino"
p = Pinguino.new
p.acicala
p.vuela
puts "Aguila"
a = Aguila.new
a.acicala
a.vuela

begin
 File.open('p014estructuras.rb', 'r') do |f1|
   while linea = f1.gets
     puts linea
   end
 end
 # Crer un archivo y escribir en el
 File.open('prueba.txt', 'w') do |f2|
   f2.puts "Creado desde un programa Ruby!"
 end
rescue Exception => msg
 # mostar el mensaje de error generado por el sistema
 puts msg
end

p014estructuras.rb
var = 5
if var > 4
 puts "La variable es mayor que 4"
 puts "Puedo tener muchas declaraciones aqui"
 if var == 5
   puts "Es posible tener if y else anidados"
 else
   puts "Too cool"
 end
else
 puts "La variable no es mayor que 4"
 puts "Puedo tener muchas declaraciones aqui"
end
# Loops
var = 0
while var < 10
 puts var.to_s
 var += 1
end

ejercicio TK -1

 #!/usr/bin/ruby #https://sandbox.mc.edu/~bennet/ruby/code/tk2_rb.html # Import the library. require 'tk' # Root window. root = TkRo...