#!/usr/bin/env ruby RUBYC2_GIF=( "R0lGODlhIAAgAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/" + "AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBm" + "mQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/" + "AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMz" + "mTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPM" + "ADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYA" + "mWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ" + "AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/" + "mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lm" + "AJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnM" + "mZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wz" + "AMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZ" + "mcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8A" + "AP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9m" + "mf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////" + "AP//M///Zv//mf//zP///ywAAAAAIAAgAAAI1AABCASQoKDBgwgTGhzIUKDC" + "hwobSoRIMYHEixUjSnyAMeNCiQsecJzo8eKCkCI7UjR5UmRKkg9ZtnQ5smFM" + "kCdn0lT5sWHOnDRd8pT5M6hQkkSLGn150edPpUtrOphKdeDTp1GPOmDAlYED" + "gVexZk25tevXsGLHAijL9SxaoGrXdvUK9i3KqAOpVq2LNmtTnGHxSlSgICnc" + "oBcJEzZ892hDxYoNIx4MOTJgnTUZVq5M1LHmzZwBM/0MOrTTzANLlzaZWPXq" + "v6ldq4YNQLbsv7ZtMwwIADs=").unpack("m")[0] RUBINO2_GIF=( "R0lGODlhIQAhAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/" + "AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBm" + "mQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/" + "AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMz" + "mTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPM" + "ADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYA" + "mWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ" + "AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/" + "mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lm" + "AJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnM" + "mZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wz" + "AMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZ" + "mcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8A" + "AP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9m" + "mf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////" + "AP//M///Zv//mf//zP///ywAAAAAIQAhAAAIdwABCBxIsKDBgwgTDkzAUKFD" + "gwwjSnzoUKLFhhQPXtyYseDGjx0XfrwYEsBIkB1PcsyoEuXDlitfwrTIcuZE" + "mTZvKsxJsyLPiDh/BuU5NGdRmxR/JqhJNKlQp02hzgwZlWnLkianYoWJVeTI" + "rgS/goWIcazZgQEBADs=").unpack("m")[0] RUBINO3_GIF=( "R0lGODlhIQAhAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/" + "AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBm" + "mQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/" + "AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMz" + "mTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPM" + "ADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYA" + "mWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ" + "AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/" + "mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lm" + "AJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnM" + "mZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wz" + "AMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZ" + "mcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8A" + "AP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9m" + "mf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////" + "AP//M///Zv//mf//zP///ywAAAAAIQAhAAAIjgABCBxIsKDBgwgJalrIkCGA" + "hhATFoTY8CHFhRIzatxo8WJHihwvYhSpKaTIjxE3kkRZUeXJlS49wtS4cmbG" + "hgkSOGSYsyXNlydjgrQpsWbQnzKP3gTqUWhEogmNNkU6VGlRpiCdVoSKUGpW" + "qk+tRsWaEuxWsV3J+lyadCrbqm6vtv36NmzcsXPLctyLMCAAOw==").unpack("m")[0] BF1_GIF=( "R0lGODlhDAAMAIACAAAAAAD/ACwAAAAADAAMAAACUgQIECBAgAADAgQIECDA" + "hAABAgQIMGFAgAABAkyYECBAgAATJgwIECDAhAkDAgQIMGFCgAABAkwYECBA" + "gAATAgQIECDAgAABAgQIECBAgAABAiwAOw==").unpack("m")[0] require 'fox16' include Fox class String def last_word return nil if self.empty? self=~/(\w+\W*)$/ newself= $` || "" self.replace(newself) unless $`.nil? $1 end end class BaseClass < FXMainWindow def initialize(app) super(app,"Rubyc2 - The Ruby Compiler - by Giuseppe Falchi",nil,nil,DECOR_ALL,20,20,750,250) #~ put your code here... @stringTarget = FXDataTarget.new("") setIcon(loadIcon(RUBYC2_GIF)) FXToolTip.new(getApp(), TOOLTIP_NORMAL) @vf0=FXVerticalFrame.new(self,LAYOUT_FILL_X|LAYOUT_FILL_Y) @lA0=FXLabel.new(@vf0,"ATTENZIONE, SCARICARE DAL SITO \"RAA\" EXERB-4.xx.TAR.GZ:",nil,LAYOUT_CENTER_X,0,0,0,0,0,0,20,0) @lA0.textColor=FXRGB(255,0,0) @l0=FXLabel.new(@vf0,"1)Decomprimere 2)Da DOS entrare nella cartella exerb 3)ruby setup.rb config 4)ruby setup.rb setup 5)ruby setup.rb install",nil,LAYOUT_CENTER_X,0,0,0,0,0,0,0,0) @l0.textColor=FXRGB(200,0,0) @hf1=FXHorizontalFrame.new(@vf0,FRAME_GROOVE|LAYOUT_CENTER_X|LAYOUT_CENTER_Y) @vf1=FXVerticalFrame.new(@hf1) @l1=FXLabel.new(@vf1," Inserire il nome del file da compilare\, es\: \"miofile.rb\"") @hf2=FXHorizontalFrame.new(@vf1) @tf1=FXTextField.new(@hf2,100,@stringTarget, FXDataTarget::ID_VALUE) iCO=FXGIFIcon.new(getApp(),BF1_GIF,0,IMAGE_ALPHAGUESS) @b1=FXButton.new(@hf2,"Apri",iCO,nil,0,ICON_AFTER_TEXT|FRAME_RAISED) @b1.textColor=FXRGB(255,0,0) @b1.setFocus() @b1.connect(SEL_COMMAND,method(:onCmdApri)) @hf3=FXHorizontalFrame.new(@vf1,LAYOUT_FILL_X|LAYOUT_FILL_Y) iCO2=FXGIFIcon.new(getApp(),RUBINO2_GIF) @b2=FXButton.new(@hf3,"Compila\tCrea l'eseguibile",iCO2,nil,0,ICON_BEFORE_TEXT|FRAME_RAISED|LAYOUT_CENTER_X|LAYOUT_CENTER_Y|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,0,0,325,50) iCO3=FXGIFIcon.new(getApp(),RUBINO3_GIF) @b3=FXButton.new(@hf3,"Esci\tTermina l'applicazione",iCO3,nil,0,ICON_BEFORE_TEXT|FRAME_RAISED|LAYOUT_CENTER_X|LAYOUT_CENTER_Y|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,0,0,325,50) @b2.connect(SEL_COMMAND, method(:onCmdCompila)) @b3.connect(SEL_COMMAND, method(:onCmdQuit)) end def onCmdApri(sender,sel,ptr) dlg = FXFileDialog.new(self, "Apre il file") dlg.setPatternList(["Ruby Source Files (*.rb)"]) if dlg.execute() != 0 @stringTarget.value=dlg.filename end return 1 end def onCmdCompila(sender,sel,ptr) begin z2=@stringTarget.value m=z2.gsub(/(\\)/," ") name_rb = (m.chop.chop.chop).last_word + ".rb" name_exy = (m.chop.chop.chop).last_word + ".exy" if FileTest.exist?(name_rb) system("ruby -r exerb/mkexy " + name_rb) system("ruby c:/ruby/bin/exerb -c gui " + name_exy) system("del " + name_exy) else FXMessageBox.information(self, MBOX_OK, "ATTENZIONE:", "File non trovato!") end rescue FXMessageBox.error(self, MBOX_OK, "ERRORE:", "La stringa digitata non e\' valida!") end end def loadIcon(filename) bytes=filename return FXGIFIcon.new(getApp(),bytes,0,IMAGE_ALPHAGUESS) end def onCmdQuit(sender, sel, ptr) getApp().exit(0) end def create super show(PLACEMENT_SCREEN) end if __FILE__ == $0 application = FXApp.new("Rubyc2","The Ruby Compiler") application.threadsEnabled = false window = BaseClass.new(application) application.addSignal("SIGINT",window.method(:onCmdQuit)) application.create application.run end end