From: Ronnie Bermejo Date: 2004-05-22T01:15:21+09:00 Subject: Re: [HOWTO] -Set Key Sequence/Shortcut WINDOWS On Fri, 21 May 2004 10:28 , 'daz' sent: >Ronnie Bermejo wrote: >> /Hello Ruby fans/ >> >> >> I'm working in an small project to create a translation machine ( basically >> EnglishSpanish ) >> I'd love to call this program with a 'Key-Sequence shortcut' on Window$, >> I have found some ways to do it but I am wondering if there's a ruby way to set >> the shortcut . >> >> >> >> THE IDEA IS: >> 1 - Ctrl-C [ love ] >> 2 - Key Sequence [Ctrl-Alt Z ] >> 3 - Ctrl-V [amor] >> >> >> [snip] >> >> >> class SetShortCut >> # ???????? >> end >> >If you create a fixed shortcut(link) to your script, e.g. to > C:\ruby\mystuff\babelfish.rb >you can add a shortcut key (Ctrl+Alt-Z) from the "Properties" page. I've done it ...but it does not work (weird !), currently I'm using a software which help me to create the shortcut, but not sure if it applies to all users in the system (I don't think so); I'd like to have a ruby script to create the shorcut as previous set up. >Can't recommend, but isn't babelfish free? not sure if there are some hide restrictions ; ) Here is the prototype (alias : ugly code working): ############################## module BabelFish require 'cgi' require 'net/http' # USAGE # input = "ruby is like gold" # lang = "en_es" # puts BabelFish.translate(lang,input) MAGIC_LINE=97 RES_REGEXP=%r|
(.+)
|m def BabelFish.translate(languages, input) str = CGI::escape(input) conn = Net::HTTP.new("babelfish.altavista.com") resp, data = conn.get("/tr?doit=done&tt=urltext&urltext=#{str}&lp=#{languages}&submit=Translate") lame_state_variable = false translation = "" #get just a chunk data = data.split("\n")[MAGIC_LINE+7,MAGIC_LINE+15].to_s data =~ RES_REGEXP translation = $1 return translation end end class Dic def initialize(words) @w=words $words=words end def lookup(host,dir) h = Net::HTTP.new(host,80) resp, data = h.get(dir,nil ) cleanhtml(data) end def meanning host = "dictionary.reference.com" dir = "/search?q=#{$words}" cleanmeanning( lookup(host,dir) ) end def pharse host = "www.alltheweb.com" dir = "/search?_oldhost=alltheweb.com&query=#{$words}" dir << "&cat=web&advanced=1&lang=english&wf%5Bn%5D=4&hits=20&nooc=off&phrase=on&submit=Search" cleanpharse(lookup(host,dir)) end def cleanhtml(data) data.gsub!(/<[^>]*>| |"/,"") end def cleanpharse(data) res="" data.split("\n").each do |line| if not line.empty? if line =~ /Advanced Search Results/ @k=1 end if line =~ /Result Page/ @k=0 end if @k == 1 res << line end end end res end def cleanmeanning(data) res=[] data.split("\n").each do |line| if not line.empty? if line =~ /entries found/ @k=1 end if line =~ /SPONSORED LINKS|\[Download or Buy / @k=0 end if @k == 1 res << line.gsub(/\r/,"\n") end end end res end end class Translate include BabelFish require "win32/clipboard" require "tk" def initialize paste(translate(copy)) end def copy begin clp = Win32::Clipboard.data return clp rescue Exception =>e end end def paste(data) Win32::Clipboard.data = data end def translate(text) $text=text if text.split(" ").length > 1 button="no" else button="yes" end res = textWindow(BabelFish.translate("en_es",text),button) return res end def textWindow(text,button="no") @dic_text =TkRoot.new { title "Translator" } if text.length.to_i > 20 width=70 else width=text.length.to_i end textW=TkText.new(@dic_text) { |t| background "white" foreground "blue" font "arial 9" wrap "word" relief 'sunken' bd 1 setgrid 1 width width height text.split("\n").length.to_i TkScrollbar.new(@dic_text) {|s| pack('side'=>'right', 'fill'=>'y') command proc{|*args| t.yview *args} t.yscrollcommand proc{|first,last| s.set first,last} } }.pack('expand'=>'no', 'fill'=>'both') if button == "yes" dicButton(text).pack('expand'=>'yes', 'fill'=>'both') end n="1" text.each { |line| textW.insert("#{n}.#{n}",line) n.succ! } Tk.mainloop if not @ini == 1 @ini = 1 end def dic_lookup(text) textWindow(Dic.new(text).meanning.to_s) end def dicButton(text) translate = proc { dic_lookup($text) } @dicButton = TkButton.new (@dic_text) { text "Dictionary" height 1 command translate } @dicButton end end #main require 'timeout' timeout(30) { Translate.new } ######################## any contribution will be greatly appreciated. begin timeout(5days) { Worker.work } rescue Weekend.new end # is friday ! -r. ---- Msg sent via Spymac Mail - http://www.spymac.com