init.rb in rwdschedule-0.07 vs init.rb in rwdschedule-0.8

- old
+ new

@@ -16,164 +16,218 @@ #* You should have received a copy of the GNU General Public #* License along with these files; if not, write to the Free Software #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #* #* For further information please contact the author by e-mail -#* at "smalllinux@gmail.com". +#* at "steven@superant.com". #***********************************************************************/ -require 'logger' - -LogDirectory = 'rwd_files/log/' -logfilelocation = File.join(LogDirectory, 'rwdtinker.log') - -$rwdtinkerlog = Logger.new( logfilelocation , 'weekly' ) -$rwdtinkerlog.level = Logger::INFO - -require "lib/rwd/rwd" +require "ev/rwd" require 'fileutils' -require 'lib/rconftool' - -$KCODE = 'u' -require 'jcode' - + $progdir = File::expand_path( File.dirname(__FILE__)) -tempdoc = " " - -# integrate the new configuration files -MAINconfignew = "rwdconfig.cnf" -MAINconfigdist = "rwdconfig.dist" -Rconftool::install(MAINconfigdist,MAINconfignew) - -#load main config file -load 'rwdconfig.cnf' - -Dir.chdir("configuration") #changes the current working directory - -fileList = Dir.new(".").entries.sort.reverse.delete_if { |x| ! (x =~ /dist$/) } #creates an Array separated with \n -@doc = "" -fileList.length.times{ #opening of a block -configdist =fileList.pop #pops the first item out of the Array -tempconfigfile = configdist.gsub(/\.dist$/, "") -confignew = tempconfigfile + ".cnf" -Rconftool::install(configdist,confignew) #integrates new file with old + $tempdoc = " " + + def findfiles(d) + a = Array.new(Dir[d].entries.sort) + #loop through and get the files names + a.each do |x| + #adjust the filters to the files you want to see... + if(!test(?d,x)) + # only rwd files + if x =~ /rb|rwd|txt/ + fileA=File.open("#{x}","r") #opens the file thats in fileName as read only + $tempdoc+=fileA.read #reads the file into the doc string + fileA.close + end + end + end + end + def loadguifile(d) + a = Array.new(Dir[d].entries.sort) + #loop through and get the files names + a.each do |x| + #adjust the filters to the files you want to see... + if(!test(?d,x)) + # only rwd files + if x =~ /rb|rwd|txt/ + load x #opens the file thats in fileName and reads it + $tempdoc += $rwdguivar # adds the file into the doc string + end + end + end + end + +# Read in the configuration files + + Dir.chdir("configuration") #changes the current working directory + + fileList = Dir.new(".").entries.sort.reverse.delete_if { |x| ! (x =~ /cnf$/) } #creates an Array separated with \n + @doc = "" + fileList.length.times{ #opening of a block + fileName=fileList.pop #pops the first item out of the Array + load fileName #loads the the config file thats in fileName } #closing block - # END of configuration integration - Dir.chdir($progdir) + # END of configuration reading - # Read in the configuration files - Dir.chdir("configuration") #changes the current working directory + Dir.chdir($progdir) # change back to top program directory - fileList = Dir.new(".").entries.sort.reverse.delete_if { |x| ! (x =~ /cnf$/) } #creates an Array separated with \n - @doc = "" - fileList.length.times{ #opening of a block - fileName=fileList.pop #pops the first item out of the Array - load fileName #loads the the config file thats in fileName - } #closing block - # END of configuration reading + # build the English Language hash file from the parts + startlangdir = @@langdir +"/" + "en" + #get a list of the files and subdirectories on the starting directory only + alanghash = Array.new(Dir[startlangdir].entries.sort) + #loop through the list, ignore the files and add all new directories found + alanghash.each do |x| + #if a directory... + if(test(?d,x)) + # add to the original list of directories + @@tmproot = x + "/**" + #adds the new ones to the array + blanghash = Dir[@@tmproot].entries.sort + blanghash.each do |x| + if(test(?d,x)) + alanghash.push(x) #appends to the end of the array... + end + end + end + end + alanghash.each do |x| + #if it is a file... + if(!test(?d,x)) + alanghash.delete(x) + else #it is a directory... + findfiles(x + "/**") + end + end + fileLangHash=File.open(TempLangHashFile,"w") #deletes and opens a the file in fileName + fileLangHash.write($tempdoc) #writes the contents of doc into the file + fileLangHash.close + # END of Lang building + $tempdoc = " " Dir.chdir($progdir) # change back to top program directory + + # build the local Language hash file from the parts + startlangdir = @@langdir +"/" + $lang + #get a list of the files and subdirectories on the starting directory only + alanghash = Array.new(Dir[startlangdir].entries.sort) + #loop through the list, ignore the files and add all new directories found + alanghash.each do |x| + #if a directory... + if(test(?d,x)) + # add to the original list of directories + @@tmproot = x + "/**" + #adds the new ones to the array + blanghash = Dir[@@tmproot].entries.sort + blanghash.each do |x| + if(test(?d,x)) + alanghash.push(x) #appends to the end of the array... + end + end + end + end + alanghash.each do |x| + #if it is a file... + if(!test(?d,x)) + alanghash.delete(x) + else #it is a directory... + findfiles(x + "/**") + end + end + filelocalLangHash=File.open(LocalLangHashFile,"w") #deletes and opens a the file in fileName + filelocalLangHash.write($tempdoc) #writes the contents of doc into the file + filelocalLangHash.close - # build the English Language hash file from the parts - Message = Hash.new { |hh, kk| hh[kk] = "ERROR: Message not found: #{kk.inspect}."; hh[kk] } - langmessage = { :clear => "Clear", :rwdtinker => "Rwdtinker" } ; langmessage.each { |kk, vv| Message[kk] = vv } - - def msgid(programkey) - $programkey = programkey - end - - def msgstr(programmsg) - if programmsg == "" - $rwdtinkerlog.info "msgstr: no translation for #{$programkey}" - else - Message.update( $programkey.to_sym => programmsg ) - end -end +$tempdoc = " " - require 'lib/rwdtinker/rwdlangdir' - - tempdoc = " " - #go get all the po language file files in english - tempdoc = RwdtinkerTools.findlanguagefiles(LangDir,"en") + Dir.chdir($progdir) # change back to top program directory - #writes the contents of doc into the languagehashvariable - languagehashvariable = tempdoc + # build the language hash constant object from the lang parts + #get a list of the files in lang directory only + alangfile = Dir.new(@@langdir).entries.sort.reverse.delete_if { |x| ! (x =~ /rb$/) } + alangfile.length.times{ + fileName = alangfile.pop + Dir.chdir($progdir) + Dir.chdir(@@langdir) + fileLangA=File.open("#{fileName}","r") #opens the file thats in fileName as read only + $tempdoc += fileLangA.read #reads the file into the doc string + fileLangA.close + } + +Dir.chdir($progdir) + fileLangB=File.open(LangNameFile,"w") #deletes and opens a the file in fileName + fileLangB.write($tempdoc) #writes the contents of doc into the file + fileLangB.close + load LangNameFile # load the file - # END of en Lang building - tempdoc = " " - Dir.chdir($progdir) # change back to top program directory + $tempdoc = " " - # build the local Language hash file from the parts - - $lang = $langarray[0] # pick the language of choice - - # Go get all the po files for the language of choice - tempdoc = RwdtinkerTools.findlanguagefiles(LangDir,$lang) - # the contents of doc into the variable - languagehashvariable = languagehashvariable + tempdoc + # build the actual program from the code parts + #get a list of the files and subdirectories on the starting directory only + a = Array.new(Dir[@@codedir].entries.sort) + #loop through the list, ignore the files and add all new directories found + a.each do |x| + #if a directory... + if(test(?d,x)) + # add to the original list of directories + @@root = x + "/**" + #adds the new ones to the array + b = Dir[@@root].entries.sort + b.each do |x| + if(test(?d,x)) + a.push(x) #appends to the end of the array... + end + end + end + end + a.each do |x| + #if it is a file... + if(!test(?d,x)) + a.delete(x) + else #it is a directory... + findfiles(x + "/**") + end + end - Dir.chdir($progdir) # change back to top program directory - - # lets read those po files, first english then the chosen language - temp = eval( languagehashvariable ) + fileB=File.open(CodeNameFile,"w") #deletes and opens a the file in fileName + fileB.write($tempdoc) #writes the contents of doc into the file + fileB.close + require CodeName # load the program file - +# build the actual GUI from the gui parts + $tempdoc = " " + #get a list of the files and subdirectories on the starting directory only + a = Array.new(Dir[@@guidir].entries.sort) + #loop through the list, ignore the files and add all new directories found + a.each do |x| + #if a directory... + if(test(?d,x)) + #use this new dir find to add to the original list of directories + @@root = x + "/**" + #adds the new ones to the array + b = Dir[@@root].entries.sort + b.each do |x| + if(test(?d,x)) + a.push(x) #appends to the end of the array... + end + end + end + end + a.each do |x| + #if it is a file... + if(!test(?d,x)) + a.delete(x) + + else #it is a directory... + loadguifile(x + "/**") + end + end - # build the actual program from the code parts - require 'lib/rwdtinker/rwdcodedir' - - tempdoc = RwdtinkerTools.findprogramfiles(CodeDir) - - # load the program file - - tempcoderesult = eval( tempdoc ) - - # build the actual GUI from the gui parts - require 'lib/rwdtinker/rwdguidir' + fileB=File.open(RWDFile,"w") #deletes and opens a the file in fileName + fileB.write($tempdoc) #writes the contents of doc into the file + fileB.close - tempdoc = RwdtinkerTools.findguifiles(GuiDir) - + - # gui variable is done - guiRWD = "" - $rwd_gui_tinker = tempdoc - require 'socket' # Network stuff - host = "127.0.0.1" - port = $port - - # Create a socket to listen on and bind it to the host and port - freeportfound = false - until freeportfound - begin - @socket = UDPSocket::new() - @socket.bind(host, port) - freeportfound = true - $port = port - # Rescue the "Address in use" error - rescue Errno::EADDRINUSE - $rwdtinkerlog.warn "RWD Startup: Port #{port} on host #{host} is already in use." - port=port +1 - $rwdtinkerlog.warn "trying port: #{port}" - # Rescue the "Address not available' error - rescue Errno::EADDRNOTAVAIL - $rwdtinkerlog.warn "RWD Startup: Address #{host} is not available to bind." - port =port + 1 - $rwdtinkerlog.warn "trying port: #{port}" - # Rescue "permission denied errors - rescue Errno::EACCES - $rwdtinkerlog.warn "RWD Startup: Access denied when binding interface addresses. ?" - port =port + 1 - $rwdtinkerlog.warn "trying port: #{port}" - # Rescue all other errors - rescue - $rwdtinkerlog.warn "RWD Startup: An error occured." - port =port + 1 - $rwdtinkerlog.warn "trying port: #{port}" - # Rescue all other errors - end - $port = port - end - - - RwdTinker.new( $rwd_gui_tinker ).serve(port) # start the main class and program +RwdTinker.file(RWDFile).serve($port) # start the main class and program