6 nov. 2018

Programa - GTK3


Primero tener instalada la gema así:

install gem gtk3 --> En  Windows
sudo install gem gtk3 --> En Linux

'''
ZetCode Ruby GTK tutorial

In this program, we lay out widgets
using absolute positioning.

Author: Jan Bodnar
Website: www.zetcode.com
Last modified: May 2015
por David Botía.
'''
# encoding: UTF-8
require 'gtk3'
$ruta=Dir.pwd
puts "Elije la resolución de la ventana de entre éstas:"
puts "1.- 150x150"
puts "2.- 320x240"
puts "3.- 640x480"
puts "4.- 1024x768"
puts "5.- Escribe cualquier otro acrácter para salir."
puts
puts "Escribe 1,2,3,4 ó 5"
puts
valor=gets.chomp.to_s
case valor
when 1.to_s
$v=150; $h=150
when 2.to_s
$v=320; $h=240
when 3.to_s
$v=640; $h=480
when 4.to_s
$v=1024; $h=768
else

puts "Éstos son las tres imágenes que hay para mostrar"
$v=1; $h=1
puts "adios"

end
class RubyApp < Gtk::Window

    def initialize
        super
    
        init_ui
    end
    
    def init_ui
# La siguiente línea puede ser obviada y el fondo sería el del sistema.
        override_background_color :normal, Gdk::RGBA::new(0.4, 0.2, 0.2, 1)
               
        begin       
            bardejov = Gdk::Pixbuf.new :file => $ruta+"/bardejov.jpg"
            rotunda = Gdk::Pixbuf.new :file => $ruta+"/rotunda.jpg"
            mincol = Gdk::Pixbuf.new :file => $ruta+"/mincol.jpg"
        rescue IOError => e
            puts e
            puts "No se pueden cargar la imágenes"
            exit
        end

        image1 = Gtk::Image.new :pixbuf => bardejov 
        image2 = Gtk::Image.new :pixbuf => rotunda 
        image3 = Gtk::Image.new :pixbuf => mincol 
        
        fixed = Gtk::Fixed.new
        # posición de la primera fila y columna de cada foto
        fixed.put image1, 10, 10
        fixed.put image2, 10, 10
        fixed.put image3, 10, 10
  
        add fixed
        
        set_title "Ventana 1"
        signal_connect "destroy" do # Éste destroy no se puede cambiar
            Gtk.main_quit 
        end        
        
        set_default_size $v, $h
        window_position = :center
        
        show_all        
    end
end

Gtk.init
    window = RubyApp.new
Gtk.main