jueves, 4 de agosto de 2011

Buscar Archivos en Carpetas

Bueno el día de ahora no tenia nada que hacer así que se me ocurrió realizar un pequeño script para mostrar todos los archivos que existen en un directorio especifico y aquí esta el resultado.




#!/usr/bin/env ruby


class Busqueda


   def initialize(w_ruta)
      @w_directorio = w_ruta
      @w_tipos = []
   end


   def mostrarArchivos
      buscarDirectorio(@w_directorio)
   end


   def buscarArchivos
      buscarTipos(@w_directorio)
   end


   def buscarTipo
      buscarDirTipo(@w_directorio)
   end


   def agregarTipo(w_tipo)
      if @w_tipos.include?(w_tipo)
         puts "#{w_tipo} ya se ha ingresado"
      else
         @w_tipos.push(w_tipo)
      end 
   end


   def buscarDirectorio(w_directorio)
      Dir.new(w_directorio).each do |w_archivo|
         w_ruta = w_directorio + '/' + w_archivo
         unless (w_archivo =~ /^\.+/)
            File.directory?(w_ruta) ? buscarDirectorio(w_ruta) : mostrarArchivo(w_ruta)
         end
      end
   end


   def buscarDirTipo(w_directorio)
      Dir.new(w_directorio).each do |w_archivo|
         w_ruta = w_directorio + '/' + w_archivo
         unless (w_archivo =~ /^\.+/)
            File.directory?(w_ruta) ? buscarDirTipo(w_ruta) : verificarTipo(w_ruta)
         end
      end
   end 


   def verificarTipo(w_archivo)
      @w_tipos.each do |extension|
         if w_archivo.end_with?(extension)
            puts w_archivo
         end      
      end
   end
end


w_buscar = Busqueda.new(ARGV[0])
w_buscar.buscarTipo
w_buscar.agregarTipo('mp3')
w_buscar.agregarTipo('doc')
w_buscar.buscarTipo



La ejecución del script se realiza de la siguiente forma:

ruby buscar.rb "directorio"

Bueno el script se ejecuta bastante rápido(2 o 3 segundos) para mostrar todos los archivos en la carpeta home de mi computadora.

miércoles, 3 de agosto de 2011

Instalación Ruby-Gnome2 desde RubyGems

Buen tenia bastante tiempo de no escribir en este Blog pero el trabajo me tiene un poco ocupado, pero ahora que tengo un poco de tiempo libre me gustaría compartir la forma de instalar Ruby-Gnome2 desde RubyGems simplemente ejecutando los siguientes comando desde una terminal:

sudo apt-get install libgtk2.0-dev
sudo gem install gtk2

Ahora para ejecutar algún programa que utilice Ruby-Gnome2 es solamente necesario poner las siguientes lineas al inicio del programa


#!/usr/env/bin ruby


require 'rubygems'
require 'gtk2'

sábado, 29 de enero de 2011

Parte 2 - Creación de Menú

Al crear aplicaciones utilizando ruby-gnome2 es posible la utilización de menú, los cuales se pueden desarrollar de una forma muy sencialla 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,50)


#CREACION DE LA BARRA DE MENU
barraMenu=Gtk::MenuBar.new


#CREANDO EL MENU DE ARCHIVO
menuArchivo=Gtk::Menu.new


#CREANDO EL MENU DE AYUDA
menuAyuda=Gtk::Menu.new


#CREANDO ELEMENTOS DEL MENU ARCHIVO
elementoArchivoAbrir=Gtk::MenuItem.new("Abrir")
elementoArchivoCerrar=Gtk::MenuItem.new("Cerrar")


#CREANO ELEMENTO DEL MENU DE AYUDA
elementoAyudaAcerca=Gtk::MenuItem.new("Ayuda")


#AGREGANDO ELEMENTOS AL MENU DE ARCHIVO
menuArchivo.append(elementoArchivoAbrir)
menuArchivo.append(elementoArchivoCerrar)


#AGREGANDO ELEMENTOS AL MENU DE AYUDA
menuAyuda.append(elementoAyudaAcerca)


#ELEMENTO DE LA BARRA DE MENU QUE TENDRAN LOS MENU DE ARCHIVO Y AYUDA
archivo=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 AYUDA
archivo.submenu=menuArchivo
ayuda.submenu=menuAyuda


#AGREGANDO ELEMENTOS DEL MENU A LA BARRA DE MENU
barraMenu.append(archivo)
barraMenu.append(ayuda)


#AGREGANDO MENU A LA VENTANA
ventana.add(barraMenu)


ventana.show_all
Gtk.main

El 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.

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: