init.rb in rwdschedule-0.93 vs init.rb in rwdschedule-0.94
- old
+ new
@@ -1,233 +1,269 @@
-
-#***********************************************************************
-#* Rwd/Tinker -- A Ruby program for the RudyWebDialog.
-#* Copyright (c) 2004, 2005 by Steven Gibson. All Rights Reserved.
-#*
-#* This library is free software; you can redistribute it and/or
-#* modify it under the terms of the GNU General Public
-#* License as published by the Free Software Foundation; either
-#* .
-#*
-#* These files are distributed in the hope that they will be useful,
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-#* General Public License for more details.
-#*
-#* 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 "steven@superant.com".
-#***********************************************************************/
-
-require "ev/rwd"
-require 'fileutils'
-
-$progdir = File::expand_path( File.dirname(__FILE__))
-
- $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 reading
-
- Dir.chdir($progdir) # change back to top program directory
-
- # build the English Language hash file from the parts
- startlangdir = File.join(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 = File.join(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
-
-$tempdoc = " "
-
- Dir.chdir($progdir) # change back to top program directory
-
- # 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
-
- $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
-
- 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
-
- 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
-
-
-
-RwdTinker.file(RWDFile).serve($port) # start the main class and program
+
+#***********************************************************************
+#* Rwd/Tinker -- A Ruby program for the RudyWebDialog.
+#* Copyright (c) 2004, 2005 by Steven Gibson. All Rights Reserved.
+#*
+#* This library is free software; you can redistribute it and/or
+#* modify it under the terms of the GNU General Public
+#* License as published by the Free Software Foundation; either
+#* .
+#*
+#* These files are distributed in the hope that they will be useful,
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+#* General Public License for more details.
+#*
+#* 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 "steven@superant.com".
+#***********************************************************************/
+
+require "ev/rwd"
+require 'fileutils'
+
+$progdir = File::expand_path( File.dirname(__FILE__))
+
+ $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 reading
+
+ Dir.chdir($progdir) # change back to top program directory
+
+ # build the English Language hash file from the parts
+ startlangdir = File.join(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 = File.join(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
+
+$tempdoc = " "
+
+ Dir.chdir($progdir) # change back to top program directory
+
+ # 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
+
+ $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
+
+ 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
+
+ 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
+
+ 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
+ puts "RWD Startup: Port #{port} on host #{host} is already in use."
+ port=port +1
+ puts "trying port: #{port}"
+ # Rescue the "Address not available' error
+ rescue Errno::EADDRNOTAVAIL
+ puts "RWD Startup: Address #{host} is not available to bind."
+ port =port + 1
+ puts "trying port: #{port}"
+ # Rescue "permission denied errors
+ rescue Errno::EACCES
+ puts "RWD Startup: Access denied when binding interface addresses. ?"
+ port =port + 1
+ puts "trying port: #{port}"
+ # Rescue all other errors
+ rescue
+ puts "RWD Startup: An error occured."
+ port =port + 1
+ puts "trying port: #{port}"
+ # Rescue all other errors
+ end
+
+end
+
+
+RwdTinker.file(RWDFile).serve(port) # start the main class and program