All pastes #81778 Raw Edit

Untitled

public ruby v1 · immutable
·published 2006-07-07 21:14 UTC
rendered paste body
#!/usr/bin/env rubyrequire 'libglade2'#require 'open3'class Gui  def initialize    Gtk.init    wdt = GladeXML.new("ddiface.glade"){|h| method(h)}    @desde = wdt.get_widget("desde_combo")    @desde.active = 0    @en = wdt.get_widget("en_entry")    @estado = wdt.get_widget("estado_textview")    @copiar = wdt.get_widget("copiar_button")    Gtk.main  end  def on_main_window_delete_event(widget,event)    puts("main delete event!")    Gtk.main_quit    puts("Gtk finished!")    false  end  def on_copiar_button_released(widget)    puts("copiar button released!")    if(@en.text=='' || @desde.active_text=='' )      @estado.buffer.text = @estado.buffer.text + "\nDebe especificar desde y hacia donde copiar..."    else      @estado.buffer.text = @estado.buffer.text + "\nCopiando en \"#{@en.text}\" desde \"#{@desde.active_text}\""      @copiar.sensitive = false      begin        fin = open(@desde.active_text,"r")        fout = open(@en.text,"w")        unless fout.flock(File::LOCK_EX|File::LOCK_NB)          puts("Cannot get immediate lock...")          fout.flock(File::LOCK_EX)        end        @estado.buffer.text = @estado.buffer.text + "\nStarting copy..."        Thread.new{fin.each_line{|line| fout.puts(line)}}.join      rescue IOError => e        puts("IOError: #{e.message}\nAborting copy...")      ensure        fin.close        fout.close        @copiar.sensitive = true      end    end  end    def on_salir_button_released(widget)    puts("salir button released!")    self.on_main_window_delete_event(widget,nil)  end  def on_main_window_destroy_event(widget)    puts("main destroy event!")  endendSignal::trap("SIGINT"){  puts("Control + C got it!\nterminating copy...")  Thread.list.each{|thread| thread.stop unless !thread.alive?}}Gui.new