rwdtinker 1.67 → 1.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. data/Readme.txt +3 -0
  2. data/bin/rwdtinker +0 -0
  3. data/code/01rwdcore/01rwdcore.rb +0 -0
  4. data/code/01rwdcore/02helptexthashbegin.rb +0 -0
  5. data/code/01rwdcore/03helptexthash.rb +0 -0
  6. data/code/01rwdcore/04helptextend.rb +0 -0
  7. data/code/01rwdcore/jumplinkcommand.rb +0 -0
  8. data/code/01rwdcore/openhelpwindow.rb +0 -0
  9. data/code/01rwdcore/returntomain.rb +0 -0
  10. data/code/01rwdcore/rundocuments.rb +0 -0
  11. data/code/01rwdcore/runeditconfiguration.rb +0 -0
  12. data/code/01rwdcore/runhelpabout.rb +0 -0
  13. data/code/01rwdcore/runopentinkerdocument.rb +0 -0
  14. data/code/01rwdcore/rwdtinkerversion.rb +0 -0
  15. data/code/01rwdcore/rwdwindowreturn.rb +0 -0
  16. data/code/01rwdcore/selectiontab.rb +0 -0
  17. data/code/01rwdcore/setuphelpaboutoptions.rb +0 -0
  18. data/code/01rwdcore/setuptinkerdocuments.rb +0 -0
  19. data/code/01rwdcore/test_cases.rb +0 -0
  20. data/code/01rwdcore/test_harness.rb +0 -0
  21. data/code/01rwdcore/uploadreturns.rb +0 -0
  22. data/code/dd0viewphoto/dd0viewphoto.rb +0 -0
  23. data/code/superant.com.rwdtinkerbackwindow/controlclient.rb +0 -0
  24. data/code/superant.com.rwdtinkerbackwindow/diagnostictab.rb +0 -0
  25. data/code/superant.com.rwdtinkerbackwindow/helptexthashtinkerwin2.rb +0 -0
  26. data/code/superant.com.rwdtinkerbackwindow/installapplet.rb +0 -0
  27. data/code/superant.com.rwdtinkerbackwindow/installgemapplet.rb +0 -0
  28. data/code/superant.com.rwdtinkerbackwindow/installremotegem.rb +0 -0
  29. data/code/superant.com.rwdtinkerbackwindow/listgemdirs.rb +0 -0
  30. data/code/superant.com.rwdtinkerbackwindow/listgemzips.rb +0 -0
  31. data/code/superant.com.rwdtinkerbackwindow/listinstalledfiles.rb +0 -0
  32. data/code/superant.com.rwdtinkerbackwindow/listzips.rb +0 -0
  33. data/code/superant.com.rwdtinkerbackwindow/loadconfigurationrecord.rb +0 -0
  34. data/code/superant.com.rwdtinkerbackwindow/loadconfigurationvariables.rb +0 -0
  35. data/code/superant.com.rwdtinkerbackwindow/network.rb +0 -0
  36. data/code/superant.com.rwdtinkerbackwindow/openappletname.rb +0 -0
  37. data/code/superant.com.rwdtinkerbackwindow/openhelpwindowtinkerwin2.rb +0 -0
  38. data/code/superant.com.rwdtinkerbackwindow/remotegemlist.rb +0 -0
  39. data/code/superant.com.rwdtinkerbackwindow/removeapplet.rb +0 -0
  40. data/code/superant.com.rwdtinkerbackwindow/runremoteinstall.rb +0 -0
  41. data/code/superant.com.rwdtinkerbackwindow/runrwdtinkerbackwindow.rb +0 -0
  42. data/code/superant.com.rwdtinkerbackwindow/rwdtinkerwin2version.rb +0 -0
  43. data/code/superant.com.rwdtinkerbackwindow/saveconfigurationrecord.rb +0 -0
  44. data/code/superant.com.rwdtinkerbackwindow/viewappletcontents.rb +0 -0
  45. data/code/superant.com.rwdtinkerbackwindow/viewgemappletcontents.rb +0 -0
  46. data/code/zz0applicationend/zz0end.rb +0 -0
  47. data/configuration/language.dist +0 -0
  48. data/configuration/rwdapplicationidentity.dist +0 -0
  49. data/configuration/rwdtinker.dist +2 -2
  50. data/configuration/tinkerwin2variables.dist +0 -0
  51. data/ev/browser.rb +24 -10
  52. data/ev/ftools.rb +23 -19
  53. data/ev/mime.rb +328 -0
  54. data/ev/net.rb +154 -38
  55. data/ev/ruby.rb +96 -26
  56. data/ev/rwd.rb +162 -89
  57. data/ev/sgml.rb +1 -1
  58. data/ev/thread.rb +0 -0
  59. data/ev/tree.rb +33 -5
  60. data/ev/xml.rb +97 -0
  61. data/extras/rconftool.rb +0 -0
  62. data/extras/zip/ioextras.rb +0 -0
  63. data/extras/zip/stdrubyext.rb +0 -0
  64. data/extras/zip/tempfile_bugfixed.rb +0 -0
  65. data/extras/zip/zip.rb +0 -0
  66. data/extras/zip/zipfilesystem.rb +0 -0
  67. data/extras/zip/ziprequire.rb +0 -0
  68. data/gui/00coreguibegin/applicationguitop.rwd +0 -0
  69. data/gui/frontwindow0/viewlogo/cc0openphoto.rwd +0 -0
  70. data/gui/frontwindowselectionbegin/selectiontabbegin/00selectiontabbegin.rwd +0 -0
  71. data/gui/frontwindowselections/superant.com.rwdtinkerwin2selectiontab/jumplinkcommands.rwd +0 -0
  72. data/gui/frontwindowselectionzend/viewselectionzend/wwselectionend.rwd +0 -0
  73. data/gui/frontwindowselectionzend/viewselectionzend/zzdocumentbegin.rwd +0 -0
  74. data/gui/frontwindowtdocuments/superant.com.documents/tinkerdocuments.rwd +0 -0
  75. data/gui/helpaboutbegin/superant.com.helpaboutbegin/zzdocumentend.rwd +0 -0
  76. data/gui/helpaboutbegin/superant.com.helpaboutbegin/zzzrwdlasttab.rwd +0 -0
  77. data/gui/helpaboutbegin/superant.com.helpaboutbegin/zzzzhelpscreenstart.rwd +0 -0
  78. data/gui/helpaboutinstalled/superant.com.tinkerhelpabout/helpabouttab.rwd +0 -0
  79. data/gui/helpaboutzend/superant.com.helpaboutend/helpscreenend.rwd +0 -0
  80. data/gui/helpaboutzend/superant.com.helpaboutend/zhelpscreenstart2.rwd +0 -0
  81. data/gui/helpaboutzend/superant.com.helpaboutend/zzzzhelpabout2.rwd +0 -0
  82. data/gui/helpaboutzend/superant.com.helpaboutend/zzzzhelpscreen2end.rwd +0 -0
  83. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/1appname.rwd +0 -0
  84. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/40rwdlistzips.rwd +0 -0
  85. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/45installremotezip.rwd +0 -0
  86. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/50rwdlistapplets.rwd +0 -0
  87. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/60editconfiguration.rwd +0 -0
  88. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/70rwddiagnostics.rwd +0 -0
  89. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/75rwdcontrol.rwd +0 -0
  90. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/81jumplinkcommands.rwd +0 -0
  91. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/9backend.rwd +0 -0
  92. data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/1appname.rwd +0 -0
  93. data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/9end.rwd +0 -0
  94. data/gui/tinkerbackwindows/superant.com.versionwindow/1appname.rwd +0 -0
  95. data/gui/tinkerbackwindows/superant.com.versionwindow/helpaboutwindow.rwd +0 -0
  96. data/gui/zzcoreguiend/tinkerapplicationguiend/yy9rwdend.rwd +0 -0
  97. data/init.rb +0 -0
  98. data/lang/en/rwdcore/languagefile.rb +0 -0
  99. data/lang/es/rwdcore/languagefile-es.rb +0 -0
  100. data/lang/jp/rwdcore/languagefile.rb +0 -0
  101. data/lang/nl/rwdcore/languagefile.rb +0 -0
  102. data/lib/temp.rb +0 -0
  103. data/rwd_files/HowTo_Tinker.txt +3 -0
  104. data/rwd_files/HowTo_TinkerWin2.txt +0 -0
  105. data/rwd_files/Readme.txt +0 -0
  106. data/rwd_files/RubyWebDialogs.html +0 -0
  107. data/rwd_files/favicon.ico +0 -0
  108. data/rwd_files/rdoc-style.css +0 -0
  109. data/rwd_files/rwdapplications.html +0 -0
  110. data/rwd_files/tinker.png +0 -0
  111. data/rwdconfig.dist +1 -1
  112. data/tests/checkdepends.sh +0 -0
  113. data/tests/cleancnf.sh +0 -0
  114. data/tests/makedist.rb +0 -0
  115. data/tests/rdep.rb +0 -0
  116. data/tests/totranslate.lang +0 -0
  117. metadata +170 -156
  118. data/zips/rwdahelloworld-0.5.zip +0 -0
data/ev/rwd.rb CHANGED
@@ -15,6 +15,7 @@ rescue LoadError
15
15
  end
16
16
 
17
17
  $rwd_exit = ARGV.include?("--rwd-exit") # Hack ???
18
+ $rwd_exit = true if defined?(REQUIRE2LIB)
18
19
  $rwd_debug = ($rwd_debug or $DEBUG or false)
19
20
  $rwd_border = ($rwd_border or 0)
20
21
  $rwd_dir = Dir.pwd
@@ -27,10 +28,12 @@ end
27
28
 
28
29
  RWDEmptyline = "..."
29
30
 
31
+ #module RWD
32
+
30
33
  rcfile = nil
31
- s = ENV["HOME"] ; s = s + "/.rwdrc" if not s.nil? ; rcfile = s if (not s.nil? and rcfile.nil? and File.file?(s))
32
- s = ENV["USERPROFILE"] ; s = s + "/rwd.cfg" if not s.nil? ; rcfile = s if (not s.nil? and rcfile.nil? and File.file?(s))
33
- s = ENV["windir"] ; s = s + "/rwd.cfg" if not s.nil? ; rcfile = s if (not s.nil? and rcfile.nil? and File.file?(s))
34
+ s = ENV["HOME"] ; s = File.expand_path(".rwdrc", s) unless s.nil? ; rcfile = s if (not s.nil? and rcfile.nil? and File.file?(s))
35
+ s = ENV["USERPROFILE"] ; s = File.expand_path("rwd.cfg", s) unless s.nil? ; rcfile = s if (not s.nil? and rcfile.nil? and File.file?(s))
36
+ s = ENV["windir"] ; s = File.expand_path("rwd.cfg", s) unless s.nil? ; rcfile = s if (not s.nil? and rcfile.nil? and File.file?(s))
34
37
 
35
38
  AL = "align='left'"
36
39
  AC = "align='center'"
@@ -51,9 +54,9 @@ ENV["RWDBROWSER"] = (ENV["RWDBROWSER"] or defaultbrowser) or puts "No browser fo
51
54
  ENV["RWDPORTS"] = (ENV["RWDPORTS"] or "7701-7709")
52
55
  ENV["RWDTHEME"] = (ENV["RWDTHEME"] or "DEFAULT")
53
56
 
54
- trap("INT") {puts "Terminating..." ; exit}
57
+ #trap("INT") {puts "Terminating..." ; exit}
55
58
 
56
- $SAFE = 2
59
+ $SAFE = 0
57
60
 
58
61
  class IE
59
62
  def initialize(url)
@@ -93,7 +96,7 @@ class Array
93
96
  a = [emptyline].concat(self)
94
97
  end
95
98
 
96
- a.numsort.collect{|s| "<option>#{s.to_html}</option>" }.join("\n")
99
+ a.numsort.collect{|s| "<option>#{s.to_s.to_html}</option>" }.join("\n")
97
100
  end
98
101
 
99
102
  def rwd_method(method)
@@ -109,17 +112,32 @@ class Array
109
112
  return res
110
113
  end
111
114
 
112
- def rwd_row(key=nil, value=nil)
115
+ def rwd_row(key=nil, value=nil, bold=false)
113
116
  res = ""
114
117
 
115
118
  res = res + "<row valign='top'>"
116
119
  res = res + "<radio name='#{key.to_html}' value='#{value.to_html}'/>" unless key.nil?
117
- res = res + self.collect{|s| "<p align='left'>#{s.to_html}</p>"}.join("")
120
+ res = res + self.collect{|s| "<p align='#{(s.kind_of?(Numeric) or s =~ /^\d+\.\d+$/) ? "right" : "left"}'>#{"<b>" if bold}#{s.to_s.to_html}#{"</b>" if bold}</p>"}.join("")
118
121
  res = res + "</row>"
119
122
 
120
123
  return res
121
124
  end
122
125
 
126
+ def rwd_table(headers=nil, highlightrows=[])
127
+ res = ""
128
+
129
+ highlightrows = [highlightrows].flatten
130
+
131
+ n = -1
132
+
133
+ res = res + "<table>"
134
+ res = res + headers.rwd_row(nil, nil, true) unless headers.nil?
135
+ res = res + self.collect{|a| a.rwd_row(nil, nil, highlightrows.include?(n+=1))}.join("")
136
+ res = res + "</table>"
137
+
138
+ return res
139
+ end
140
+
123
141
  def rwd_headers(emptyfield=false)
124
142
  res = ""
125
143
 
@@ -131,7 +149,7 @@ class Array
131
149
  return res
132
150
  end
133
151
 
134
- def rwd_form(prefix, values, twoparts=0, options={})
152
+ def rwd_form(prefix, values=[], twoparts=0, options={})
135
153
  res = []
136
154
 
137
155
  res << "<table>"
@@ -151,7 +169,7 @@ class Array
151
169
  s = ""
152
170
 
153
171
  s << "<text name='#{name}'"
154
- s << " value='#{values[n].to_html}'" if n < values.length
172
+ s << " value='#{values[n].to_s.to_html}'" if n < values.length
155
173
  s << "/>"
156
174
 
157
175
  res << s
@@ -266,8 +284,8 @@ class OpenTag
266
284
  template = $rwd_html_1
267
285
  template = $rwd_html_PDA_1 if pda
268
286
 
269
- res <<(template(template, args))
270
- when "p" then res << "<p #{align} > "
287
+ res << (template(template, args))
288
+ when "p" then res << "<p #{align}>"
271
289
  when "pre" then res << "<pre #{align}>"
272
290
  when "big" then res << "<p #{align}><big>"
273
291
  when "small" then res << "<p #{align}><small>"
@@ -308,10 +326,10 @@ class OpenTag
308
326
  when "hidden" then res << "<p #{align}><input name='#{@args["name"]}' value='#{value1}' type='hidden'>"
309
327
  when "text"
310
328
  maxlength = ""
311
- maxlength = "maxlength='%s'" % @args["maxlength"] if @args.include?("maxlength")
329
+ maxlength = "maxlength='%s'" % @args["maxlength"] if @args.include?("maxlength")
312
330
  size = ""
313
- size = "size='%s'" % @args["size"] if @args.include?("size")
314
- size = "size='%s'" % 10 if pda
331
+ size = "size='%s'" % @args["size"] if @args.include?("size")
332
+ size = "size='%s'" % 10 if pda
315
333
  res << "<p #{align}><input name='#{@args["name"]}' value='#{value1}' type='text' #{maxlength} #{size}>"
316
334
  oneormorefields << "true"
317
335
  when "textarea"
@@ -341,7 +359,7 @@ class OpenTag
341
359
  end
342
360
  oneormorefields << "true"
343
361
  when "select"
344
- res << "<select #{align} name='#{@args["name"]}' width='#{@args["width"]}'>"
362
+ res << "<select #{align} name='#{@args["name"]}' width='#{@args["width"]} size='#{@args["size"]}'>" # ??? Misschien nog iets met 'multiple'?
345
363
  name = @args["name"]
346
364
  $select = varshtml[name]
347
365
  oneormorefields << "true"
@@ -481,7 +499,7 @@ class OpenTag
481
499
  template = $rwd_html_2
482
500
  template = $rwd_html_PDA_2 if pda
483
501
 
484
- res <<(template(template, args))
502
+ res << (template(template, args))
485
503
  when "p" then res << "</p>"
486
504
  when "pre" then res << "</pre>"
487
505
  when "big" then res << "</big></p>"
@@ -556,10 +574,15 @@ class OpenTag
556
574
  end
557
575
 
558
576
  logo = nil
559
- logo = File.expand_path(vars["logo"], $rwd_files) if vars.include?("logo")
560
- logo = nil unless logo.nil? or File.file?(logo)
577
+ logo = File.expand_path(vars["logo"], $rwd_files) if vars.include?("logo")
578
+ logo = nil unless logo.nil? or File.file?(logo)
579
+
580
+ watermark = nil
581
+ watermark = File.expand_path(vars["watermark"], $rwd_files) if vars.include?("watermark")
582
+ watermark = nil unless watermark.nil? or File.file?(watermark)
561
583
 
562
584
  a["LOGO"] = "" unless not logo.nil?
585
+ a["WATERMARK"] = "" unless not watermark.nil?
563
586
 
564
587
  a["HELPBUTTON"] = (not (vars["nohelpbutton"]))
565
588
  a["BACKBUTTONS"] = (not (vars["nobackbuttons"]))
@@ -620,10 +643,12 @@ class RWDWindow
620
643
  tree = XML.new(rwd)
621
644
 
622
645
  tree.parse(OpenTag, "window") do |type, obj|
646
+ $rwd_appvars.each{|k, v| obj.args[k] = v}
623
647
  @@windows[rwd][obj.args["name"]] = obj.to_h
624
648
  end
625
649
 
626
650
  tree.parse(OpenTag, "helpwindow") do |type, obj|
651
+ $rwd_appvars.each{|k, v| obj.args[k] = v}
627
652
  @@helpwindows[rwd][obj.args["name"]] = obj.to_h
628
653
  end
629
654
  end
@@ -639,6 +664,8 @@ class RWDWindow
639
664
  firstaction = ""
640
665
  html = []
641
666
 
667
+ vars = vars.deep_dup
668
+
642
669
  vars.each do |key, value|
643
670
  if not key.empty?
644
671
  if value.respond_to? "to_s"
@@ -731,7 +758,7 @@ end
731
758
 
732
759
  class RWDDone < RWDWindow
733
760
  def initialize(exitbrowser)
734
- super("<window title='RWD Message' nobackbuttons noclosebutton><p>Done.</p><horizontal><close/>#{exitbrowser ? "" : "<button caption='Again'/>"}</horizontal>#{exitbrowser ? "<closewindow/>" : ""}</window>")
761
+ super("<window title='RWD Message' nobackbuttons noclosebutton><p>Done.</p><i>(Some browsers don't close,<br>because of security reasons.)</i><horizontal><close/>#{exitbrowser ? "" : "<button caption='Again'/>"}</horizontal>#{exitbrowser ? "<closewindow/>" : ""}</window>")
735
762
  end
736
763
  end
737
764
 
@@ -742,6 +769,14 @@ class RWDialog
742
769
  @rwd_history = []
743
770
  @rwd_ignore_vars = []
744
771
  @rwd_call_after_back = []
772
+ @rwd_time = Time.now
773
+
774
+ $rwd_appvars = {} if $rwd_appvars.nil?
775
+ XML.new(xml).parse(OpenTag, "application") do |type, obj|
776
+ obj.args.deep_dup.each do |k, v|
777
+ $rwd_appvars[k] = v
778
+ end
779
+ end
745
780
  end
746
781
 
747
782
  def self.file(rwdfile, *args)
@@ -765,9 +800,14 @@ class RWDialog
765
800
  port = port.to_i
766
801
 
767
802
  @rwd_server = RWDServer.new(self, port, io, auth, realm)
803
+
804
+ self
768
805
  end
769
806
 
770
807
  def render(res, path, post, download, downloadfile, pda, sessionid)
808
+ # Avoid a timeout.
809
+
810
+ @rwd_time = Time.now
771
811
 
772
812
  # Initialize some vars.
773
813
 
@@ -778,7 +818,7 @@ class RWDialog
778
818
  help = false
779
819
  back = false
780
820
  tab = ""
781
- @rwd_msgtype = nil
821
+ @rwd_msgtype = nil if @rwd_progress_thread.nil?
782
822
  @rwd_download = nil
783
823
  @rwd_download_file = nil
784
824
 
@@ -819,6 +859,8 @@ class RWDialog
819
859
  @rwd_action = "rwd_back"
820
860
  end
821
861
 
862
+ @rwd_history = [["main", [], "main", ""]] if @rwd_history.empty?
863
+
822
864
  if @rwd_action =~ /^rwd_tab_/
823
865
  @rwd_tab = @rwd_action.sub(/^rwd_tab_/, "")
824
866
  @rwd_history[-1][3] = @rwd_tab
@@ -840,6 +882,7 @@ class RWDialog
840
882
  @rwd_history = []
841
883
  when "rwd_quit"
842
884
  done = true
885
+ else
843
886
  end
844
887
 
845
888
  # History stuff
@@ -883,6 +926,15 @@ class RWDialog
883
926
  a = [@rwd_action, @rwd_args, @rwd_window, @rwd_tab]
884
927
 
885
928
  @rwd_history.push a if (@rwd_history[-1] != a or not @rwd_msgtype.nil?)
929
+
930
+ if @rwd_window == "rwd_back"
931
+ @rwd_history.pop
932
+ @rwd_history.pop
933
+ @rwd_action = (@rwd_history[-1] or [nil, nil, nil])[0]
934
+ @rwd_args = (@rwd_history[-1] or [nil, nil, nil])[1]
935
+ @rwd_window = (@rwd_history[-1] or [nil, nil, nil])[2]
936
+ @rwd_tab = (@rwd_history[-1] or [nil, nil, nil])[3]
937
+ end
886
938
  end
887
939
  end
888
940
 
@@ -911,12 +963,13 @@ class RWDialog
911
963
  download << @rwd_download
912
964
  downloadfile << @rwd_download_file
913
965
  else
914
- if not @rwd_msgtype.nil?
915
- res << RWDMessage.new(@rwd_msg).render(pda) if @rwd_msgtype == "message"
916
- res << RWDError.new(@rwd_msg).render(pda) if @rwd_msgtype == "error"
966
+ if not @rwd_progress_thread.nil?
967
+ res << RWDProgressBar.new(@rwd_progress_refresh, @rwd_progress_progress).render(pda, @rwd_refresh_action)
917
968
  else
918
- if not @rwd_progress_thread.nil?
919
- res << RWDProgressBar.new(@rwd_progress_refresh, @rwd_progress_progress).render(pda, @rwd_refresh_action)
969
+ if not @rwd_msgtype.nil?
970
+ res << RWDMessage.new(@rwd_msg).render(pda) if @rwd_msgtype == "message"
971
+ res << RWDError.new(@rwd_msg).render(pda) if @rwd_msgtype == "error"
972
+ res << @rwd_msg if @rwd_msgtype == "text"
920
973
  else
921
974
  puts "Window: #{@rwd_window}" if $rwd_debug
922
975
  puts "Tab: #{@rwd_tab}" if $rwd_debug
@@ -944,6 +997,11 @@ class RWDialog
944
997
  @rwd_msgtype = "error"
945
998
  end
946
999
 
1000
+ def text(msg)
1001
+ @rwd_msg = "<html><body><pre>#{msg}</pre></body></html>"
1002
+ @rwd_msgtype = "text"
1003
+ end
1004
+
947
1005
  def progressbar(refresh, *progress)
948
1006
  @rwd_progress_refresh = (refresh or 1)
949
1007
  @rwd_progress_progress = []
@@ -984,6 +1042,23 @@ class RWDialog
984
1042
  def exitbrowser
985
1043
  @rwd_exitbrowser = true
986
1044
  end
1045
+
1046
+ def timeout(timeout, interval=1)
1047
+ @rwd_timeout = timeout
1048
+
1049
+ unless @rwd_timeout_thread
1050
+ @rwd_timeout_thread =
1051
+ Thread.new do
1052
+ loop do
1053
+ if Time.now - @rwd_time > @rwd_timeout
1054
+ $stderr.puts "Exiting due to timeout (#{@rwd_timeout} seconds)."
1055
+ exit 1
1056
+ end
1057
+ sleep interval
1058
+ end
1059
+ end
1060
+ end
1061
+ end
987
1062
  end
988
1063
 
989
1064
  class RWDLogin < RWDialog
@@ -1040,7 +1115,7 @@ class Sessions
1040
1115
  end
1041
1116
  end
1042
1117
 
1043
- class Session < Hash
1118
+ class RWDSession < Hash
1044
1119
  attr_reader :sessionid
1045
1120
  attr_reader :lastaccess
1046
1121
  attr_reader :authenticated
@@ -1055,9 +1130,7 @@ class Session < Hash
1055
1130
  def touch
1056
1131
  @lastaccess = Time.now
1057
1132
  end
1058
- end
1059
1133
 
1060
- class RWDSession < Session
1061
1134
  def render(res, path, post, download, downloadfile, pda)
1062
1135
  done = self["object"].render(res, path, post, download, downloadfile, pda, @sessionid)
1063
1136
 
@@ -1093,18 +1166,13 @@ class RWDServer
1093
1166
  browser = ENV["RWDBROWSER"].dup
1094
1167
  url = "http://localhost:%s/" % [port]
1095
1168
 
1096
- if cygwin?
1097
- browser.gsub!(/\\/, "/")
1098
- browser.gsub!(/ /, "\\ ")
1099
- end
1100
-
1101
1169
  re = /[$%]1\b/
1102
1170
  command = "%s \"%s\"" % [browser, url]
1103
1171
  command = browser.gsub(re, url) if browser =~ re
1104
1172
 
1105
1173
  command.gsub!(/%port%/, port.to_s)
1106
1174
 
1107
- system(command) or puts "Starting of the browser failed, or the browser terminated abnormally.\nCommand => #{command}"
1175
+ system(command) or $stderr.puts "Starting of the browser failed, or the browser terminated abnormally.\nCommand => #{command}"
1108
1176
  #end
1109
1177
 
1110
1178
  puts "The browser has terminated."
@@ -1120,8 +1188,10 @@ class RWDServer
1120
1188
 
1121
1189
  HTTPServer.serve(portio, (not auth.nil?)) do |req, resp|
1122
1190
  threadlimiter.wait do
1123
-
1124
- vars = req.vars.dup
1191
+ vars = {}
1192
+ req.vars.each do |k, v|
1193
+ vars[k] = v.join("\t")
1194
+ end
1125
1195
  pad = (req.request.path or "/")
1126
1196
 
1127
1197
  if auth.kind_of? String
@@ -1152,7 +1222,7 @@ class RWDServer
1152
1222
  end
1153
1223
 
1154
1224
  if oldsessionid.nil? or oldsessionid.empty?
1155
- if not auth.nil? and not auth.empty? and not session.authenticated and pad != "/rwd_pixel.gif"
1225
+ if not auth.nil? and not auth.empty? and not session.authenticated and pad !~ /^\/rwd_/
1156
1226
 
1157
1227
  # Check authentication
1158
1228
 
@@ -1290,6 +1360,10 @@ $rwd_html["DEFAULT"] = "
1290
1360
  <style type='text/css'>
1291
1361
  <!--
1292
1362
 
1363
+ body {
1364
+ background : url(%WATERMARK%) white center center no-repeat fixed;
1365
+ }
1366
+
1293
1367
  a {
1294
1368
  text-decoration : none;
1295
1369
  }
@@ -1380,22 +1454,22 @@ $rwd_html["DEFAULT"] = "
1380
1454
  <table align='center' border='0' cellspacing='0' cellpadding='0'>
1381
1455
 
1382
1456
  <tr align='center'>
1383
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1384
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1385
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1386
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1457
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1458
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1459
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1460
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1387
1461
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1388
1462
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1389
1463
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1390
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1391
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1392
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1393
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1464
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1465
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1466
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1467
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1394
1468
  </tr>
1395
1469
 
1396
1470
  <tr align='center'>
1397
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1398
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1471
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1472
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1399
1473
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1400
1474
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1401
1475
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
@@ -1403,12 +1477,12 @@ $rwd_html["DEFAULT"] = "
1403
1477
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1404
1478
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1405
1479
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1406
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1407
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1480
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1481
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1408
1482
  </tr>
1409
1483
 
1410
1484
  <tr align='center'>
1411
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1485
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1412
1486
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1413
1487
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1414
1488
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
@@ -1418,11 +1492,11 @@ $rwd_html["DEFAULT"] = "
1418
1492
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1419
1493
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1420
1494
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1421
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1495
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1422
1496
  </tr>
1423
1497
 
1424
1498
  <tr align='center'>
1425
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1499
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1426
1500
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1427
1501
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1428
1502
  <td align='center' bgcolor='#EEEEEE'><img src='rwd_pixel.gif' height='1' width='1'></td>
@@ -1432,7 +1506,7 @@ $rwd_html["DEFAULT"] = "
1432
1506
  <td align='center' bgcolor='#EEEEEE'><img src='rwd_pixel.gif' height='1' width='1'></td>
1433
1507
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1434
1508
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1435
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1509
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1436
1510
  </tr>
1437
1511
 
1438
1512
  <tr align='center'>
@@ -1521,7 +1595,7 @@ $rwd_html["DEFAULT"] = "
1521
1595
  </tr>
1522
1596
 
1523
1597
  <tr align='center'>
1524
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1598
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1525
1599
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1526
1600
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1527
1601
  <td align='center' bgcolor='#EEEEEE'><img src='rwd_pixel.gif' height='1' width='1'></td>
@@ -1531,11 +1605,11 @@ $rwd_html["DEFAULT"] = "
1531
1605
  <td align='center' bgcolor='#EEEEEE'><img src='rwd_pixel.gif' height='1' width='1'></td>
1532
1606
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1533
1607
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1534
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1608
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1535
1609
  </tr>
1536
1610
 
1537
1611
  <tr align='center'>
1538
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1612
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1539
1613
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1540
1614
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1541
1615
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
@@ -1545,12 +1619,12 @@ $rwd_html["DEFAULT"] = "
1545
1619
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1546
1620
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1547
1621
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1548
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1622
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1549
1623
  </tr>
1550
1624
 
1551
1625
  <tr align='center'>
1552
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1553
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1626
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1627
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1554
1628
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1555
1629
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1556
1630
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
@@ -1558,22 +1632,22 @@ $rwd_html["DEFAULT"] = "
1558
1632
  <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1559
1633
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1560
1634
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1561
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1562
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1635
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1636
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1563
1637
  </tr>
1564
1638
 
1565
1639
  <tr align='center'>
1566
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1567
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1568
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1569
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1640
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1641
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1642
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1643
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1570
1644
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1571
1645
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1572
1646
  <td align='center' bgcolor='black'><img src='rwd_pixel.gif' height='1' width='1'></td>
1573
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1574
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1575
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1576
- <td align='center' bgcolor='white'><img src='rwd_pixel.gif' height='1' width='1'></td>
1647
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1648
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1649
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1650
+ <td align='center' ><img src='rwd_pixel.gif' height='1' width='1'></td>
1577
1651
  </tr>
1578
1652
 
1579
1653
  </table>
@@ -1602,6 +1676,10 @@ $rwd_html["WINDOWSLOOKALIKE"] = "
1602
1676
  <style type='text/css'>
1603
1677
  <!--
1604
1678
 
1679
+ body {
1680
+ background : url(%WATERMARK%) white center center no-repeat fixed;
1681
+ }
1682
+
1605
1683
  a {
1606
1684
  text-decoration : none;
1607
1685
  }
@@ -1824,26 +1902,21 @@ $rwd_html["PDA"] = "
1824
1902
  "
1825
1903
 
1826
1904
  $rwd_pixel = "
1827
- R0lGODlhAQABAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoK
1828
- CgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZ
1829
- GRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygo
1830
- KCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3
1831
- Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZG
1832
- RkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVV
1833
- VVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2Rk
1834
- ZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNz
1835
- c3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKC
1836
- goODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGR
1837
- kZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6Cg
1838
- oKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+v
1839
- r7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+
1840
- vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3N
1841
- zc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc
1842
- 3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr
1843
- 6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6
1844
- +vv7+/z8/P39/f7+/v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
1845
- CgD/ACwAAAAAAQABAAAIBAD/BQQAOw==
1905
+ R0lGODlhAQABAMIAAAAAAP///+7u7kREiP///////////////yH5BAEKAAMA
1906
+ LAAAAAABAAEAAAMCOAkAOw==
1846
1907
  ".unpack("m").shift
1847
1908
 
1909
+ $rwd_logo = "
1910
+ R0lGODlhEAAQAMIAAAAAAP///+7u7kREiP///////////////yH5BAEKAAQA
1911
+ LAAAAAAQABAAAANCSErQ/k21QKulrIrNu8heuAGUcJ0BuQVD676DasK0zNKv
1912
+ jefB+oo6l6AxBAx7M2HRePQph5xga0RsJqfELPI2DSUAADs=
1913
+ ".unpack("m").shift
1914
+
1915
+
1848
1916
  $rwd_html_1, $rwd_html_2 = $rwd_html[ENV["RWDTHEME"]].split(/^\s*%BODY%\s*\r*$/)
1849
1917
  $rwd_html_PDA_1, $rwd_html_PDA_2 = $rwd_html["PDA"].split(/^\s*%BODY%\s*\r*$/)
1918
+
1919
+ #end
1920
+ #
1921
+ #class RWDialog < RWD::RWDialog
1922
+ #end
data/ev/sgml.rb CHANGED
@@ -88,7 +88,7 @@ class OpenTag < Tag
88
88
  def prechildren_to_sgml(res)
89
89
  a = [@subtype]
90
90
 
91
- @args.each do |k, v|
91
+ @args.sort.each do |k, v|
92
92
  if not v.include?("'")
93
93
  a << "#{k}='#{v}'"
94
94
  else
data/ev/thread.rb CHANGED
File without changes