rwdgutenberg 0.07 → 0.08

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. data/Books/Mariposa.gut +0 -0
  2. data/Books/Shannon.gut +0 -0
  3. data/Books/marip10.txt +0 -0
  4. data/Readme.txt +3 -0
  5. data/bin/rwdgutenberg +0 -0
  6. data/code/01rwdcore/01rwdcore.rb +0 -0
  7. data/code/01rwdcore/02helptexthashbegin.rb +0 -0
  8. data/code/01rwdcore/03helptexthash.rb +20 -20
  9. data/code/01rwdcore/04helptextend.rb +0 -0
  10. data/code/01rwdcore/jumplinkcommand.rb +0 -0
  11. data/code/01rwdcore/openhelpwindow.rb +0 -0
  12. data/code/01rwdcore/returntomain.rb +0 -0
  13. data/code/01rwdcore/rundocuments.rb +0 -0
  14. data/code/01rwdcore/runeditconfiguration.rb +0 -0
  15. data/code/01rwdcore/runhelpabout.rb +0 -0
  16. data/code/01rwdcore/runopentinkerdocument.rb +0 -0
  17. data/code/01rwdcore/rwdtinkerversion.rb +0 -0
  18. data/code/01rwdcore/rwdwindowreturn.rb +0 -0
  19. data/code/01rwdcore/selectiontab.rb +0 -0
  20. data/code/01rwdcore/setuphelpaboutoptions.rb +0 -0
  21. data/code/01rwdcore/setuptinkerdocuments.rb +0 -0
  22. data/code/01rwdcore/test_cases.rb +0 -0
  23. data/code/01rwdcore/test_harness.rb +0 -0
  24. data/code/01rwdcore/uploadreturns.rb +0 -0
  25. data/code/dd0viewphoto/dd0viewphoto.rb +3 -0
  26. data/code/superant.com.gutenberg/changegutenbergname.rb +0 -0
  27. data/code/superant.com.gutenberg/clearbookscreendisplay.rb +0 -0
  28. data/code/superant.com.gutenberg/cleargutenbergfiles.rb +0 -0
  29. data/code/superant.com.gutenberg/cleargutrecordfiles.rb +0 -0
  30. data/code/superant.com.gutenberg/copyfilename.rb +0 -0
  31. data/code/superant.com.gutenberg/deletegutenbergrecord.rb +0 -0
  32. data/code/superant.com.gutenberg/gutenbergcreatefile.rb +0 -0
  33. data/code/superant.com.gutenberg/helptexthashrwdgutenberg.rb +0 -0
  34. data/code/superant.com.gutenberg/jumplinkupdate.rb +0 -0
  35. data/code/superant.com.gutenberg/listnamerecord.rb +0 -0
  36. data/code/superant.com.gutenberg/listtextfilesgutenberg.rb +0 -0
  37. data/code/superant.com.gutenberg/loadbookrecord.rb +0 -0
  38. data/code/superant.com.gutenberg/loadconfigurationrecord.rb +0 -0
  39. data/code/superant.com.gutenberg/loadconfigurationvariables.rb +0 -0
  40. data/code/superant.com.gutenberg/openhelpwindowgutenberg.rb +0 -0
  41. data/code/superant.com.gutenberg/returntomain.rb +0 -0
  42. data/code/superant.com.gutenberg/runbackwindow.rb +0 -0
  43. data/code/superant.com.gutenberg/rungutenbergwindow.rb +0 -0
  44. data/code/superant.com.gutenberg/rwdgutenbergbackward.rb +0 -0
  45. data/code/superant.com.gutenberg/rwdhypernotehelpabout.rb +0 -0
  46. data/code/superant.com.gutenberg/rwdtinkerversion.rb +0 -0
  47. data/code/superant.com.gutenberg/saveconfigurationrecord.rb +0 -0
  48. data/code/superant.com.gutenberg/savegutenbergrecord.rb +0 -0
  49. data/code/superant.com.rwdtinkerbackwindow/diagnostictab.rb +0 -0
  50. data/code/superant.com.rwdtinkerbackwindow/helptexthashtinkerwin2.rb +0 -0
  51. data/code/superant.com.rwdtinkerbackwindow/installapplet.rb +0 -0
  52. data/code/superant.com.rwdtinkerbackwindow/installgemapplet.rb +0 -0
  53. data/code/superant.com.rwdtinkerbackwindow/installremotegem.rb +0 -0
  54. data/code/superant.com.rwdtinkerbackwindow/listgemdirs.rb +0 -0
  55. data/code/superant.com.rwdtinkerbackwindow/listgemzips.rb +0 -0
  56. data/code/superant.com.rwdtinkerbackwindow/listinstalledfiles.rb +0 -0
  57. data/code/superant.com.rwdtinkerbackwindow/listzips.rb +0 -0
  58. data/code/superant.com.rwdtinkerbackwindow/loadconfigurationrecord.rb +0 -0
  59. data/code/superant.com.rwdtinkerbackwindow/loadconfigurationvariables.rb +0 -0
  60. data/code/superant.com.rwdtinkerbackwindow/network.rb +0 -0
  61. data/code/superant.com.rwdtinkerbackwindow/openappletname.rb +0 -0
  62. data/code/superant.com.rwdtinkerbackwindow/openhelpwindowtinkerwin2.rb +1 -5
  63. data/code/superant.com.rwdtinkerbackwindow/remotegemlist.rb +0 -0
  64. data/code/superant.com.rwdtinkerbackwindow/removeapplet.rb +0 -0
  65. data/code/superant.com.rwdtinkerbackwindow/runremoteinstall.rb +0 -0
  66. data/code/superant.com.rwdtinkerbackwindow/runrwdtinkerbackwindow.rb +0 -0
  67. data/code/superant.com.rwdtinkerbackwindow/rwdtinkerwin2version.rb +0 -0
  68. data/code/superant.com.rwdtinkerbackwindow/saveconfigurationrecord.rb +0 -0
  69. data/code/superant.com.rwdtinkerbackwindow/viewappletcontents.rb +0 -0
  70. data/code/superant.com.rwdtinkerbackwindow/viewgemappletcontents.rb +0 -0
  71. data/code/zz0applicationend/zz0end.rb +0 -0
  72. data/configuration/language.dist +2 -1
  73. data/configuration/rwdapplicationidentity.dist +1 -1
  74. data/configuration/rwdgutenberg.dist +3 -3
  75. data/configuration/rwdtinker.dist +3 -3
  76. data/configuration/tinkerwin2variables.dist +3 -3
  77. data/ev/browser.rb +24 -10
  78. data/ev/ftools.rb +23 -19
  79. data/ev/mime.rb +328 -0
  80. data/ev/net.rb +154 -38
  81. data/ev/ruby.rb +96 -26
  82. data/ev/rwd.rb +162 -89
  83. data/ev/sgml.rb +1 -1
  84. data/ev/thread.rb +0 -0
  85. data/ev/tree.rb +33 -5
  86. data/ev/xml.rb +97 -0
  87. data/extras/rconftool.rb +0 -0
  88. data/extras/zip/ioextras.rb +0 -0
  89. data/extras/zip/stdrubyext.rb +0 -0
  90. data/extras/zip/tempfile_bugfixed.rb +0 -0
  91. data/extras/zip/zip.rb +0 -0
  92. data/extras/zip/zipfilesystem.rb +0 -0
  93. data/extras/zip/ziprequire.rb +0 -0
  94. data/gui/00coreguibegin/applicationguitop.rwd +1 -1
  95. data/gui/frontwindow0/superant.com.gutenberg/10viewnote.rwd +0 -0
  96. data/gui/frontwindow0/superant.com.gutenberg/20listfiles.rwd +0 -0
  97. data/gui/frontwindow0/superant.com.gutenberg/30booklistutilities.rwd +0 -0
  98. data/gui/frontwindow0/superant.com.gutenberg/35displaytab.rwd +0 -0
  99. data/gui/frontwindow0/superant.com.gutenberg/36displaytab.rwd +0 -0
  100. data/gui/frontwindow0/superant.com.gutenberg/40rwdgutenberg.rwd +0 -0
  101. data/gui/frontwindow0/superant.com.gutenberg/40rwdgutenberghtml.rwd +0 -0
  102. data/gui/frontwindow0/superant.com.gutenberg/67viewconfiguration.rwd +0 -0
  103. data/gui/frontwindowselectionbegin/selectiontabbegin/00selectiontabbegin.rwd +1 -1
  104. data/gui/frontwindowselections/superant.com.rwdtinkerwin2selectiontab/jumplinkcommands.rwd +2 -2
  105. data/gui/frontwindowselectionzend/viewselectionzend/wwselectionend.rwd +0 -0
  106. data/gui/frontwindowselectionzend/viewselectionzend/zzdocumentbegin.rwd +0 -0
  107. data/gui/frontwindowtdocuments/superant.com.documents/tinkerdocuments.rwd +2 -2
  108. data/gui/helpaboutbegin/superant.com.helpaboutbegin/zzdocumentend.rwd +1 -1
  109. data/gui/helpaboutbegin/superant.com.helpaboutbegin/zzzrwdlasttab.rwd +0 -0
  110. data/gui/helpaboutbegin/superant.com.helpaboutbegin/zzzzhelpscreenstart.rwd +1 -1
  111. data/gui/helpaboutinstalled/superant.com.tinkerhelpabout/helpabouttab.rwd +2 -2
  112. data/gui/helpaboutzend/superant.com.helpaboutend/helpscreenend.rwd +0 -0
  113. data/gui/helpaboutzend/superant.com.helpaboutend/zhelpscreenstart2.rwd +1 -1
  114. data/gui/helpaboutzend/superant.com.helpaboutend/zzzzhelpabout2.rwd +2 -2
  115. data/gui/helpaboutzend/superant.com.helpaboutend/zzzzhelpscreen2end.rwd +0 -0
  116. data/gui/tinkerbackwindows/superant.com.gutenberg/10viewnote.rwd +0 -0
  117. data/gui/tinkerbackwindows/superant.com.gutenberg/20listfiles.rwd +0 -0
  118. data/gui/tinkerbackwindows/superant.com.gutenberg/30booklistutilities.rwd +0 -0
  119. data/gui/tinkerbackwindows/superant.com.gutenberg/35displaytab.rwd +0 -0
  120. data/gui/tinkerbackwindows/superant.com.gutenberg/36displaytab.rwd +0 -0
  121. data/gui/tinkerbackwindows/superant.com.gutenberg/40rwdgutenberg.rwd +0 -0
  122. data/gui/tinkerbackwindows/superant.com.gutenberg/40rwdgutenberghtml.rwd +0 -0
  123. data/gui/tinkerbackwindows/superant.com.gutenberg/67viewconfiguration.rwd +0 -0
  124. data/gui/tinkerbackwindows/superant.com.gutendisplay/gutendisplayhtmlwindow.rwd +0 -0
  125. data/gui/tinkerbackwindows/superant.com.gutendisplay/gutendisplaywindow.rwd +0 -0
  126. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/1appname.rwd +1 -1
  127. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/40rwdlistzips.rwd +9 -10
  128. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/45installremotezip.rwd +5 -5
  129. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/50rwdlistapplets.rwd +9 -9
  130. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/60editconfiguration.rwd +2 -2
  131. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/70rwddiagnostics.rwd +1 -1
  132. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/81jumplinkcommands.rwd +3 -3
  133. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/9backend.rwd +0 -0
  134. data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/1appname.rwd +1 -1
  135. data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/9end.rwd +0 -0
  136. data/gui/tinkerbackwindows/superant.com.versionwindow/1appname.rwd +2 -2
  137. data/gui/tinkerbackwindows/superant.com.versionwindow/helpaboutwindow.rwd +3 -3
  138. data/gui/zzcoreguiend/tinkerapplicationguiend/yy9rwdend.rwd +0 -0
  139. data/init.rb +0 -0
  140. data/installed/gutenbergdata02.inf +5 -0
  141. data/installed/rwdwgutenberg-0.06.inf +7 -0
  142. data/lang/en/rwdcore/languagefile.rb +63 -15
  143. data/lang/es/rwdcore/languagefile-es.rb +67 -13
  144. data/lang/fr/rwdcore/languagefile.rb +64 -0
  145. data/lang/jp/rwdcore/languagefile.rb +69 -6
  146. data/lang/nl/rwdcore/languagefile.rb +62 -0
  147. data/lib/temp.rb +0 -0
  148. data/rwd_files/HowTo_Gutenberg.txt +0 -6
  149. data/rwd_files/HowTo_Tinker.txt +6 -0
  150. data/rwd_files/HowTo_TinkerWin2.txt +0 -0
  151. data/rwd_files/Readme.txt +0 -0
  152. data/rwd_files/RubyWebDialogs.html +0 -0
  153. data/rwd_files/favicon.ico +0 -0
  154. data/rwd_files/rdoc-style.css +0 -0
  155. data/rwd_files/rwdapplications.html +0 -0
  156. data/rwd_files/tinker.png +0 -0
  157. data/rwdconfig.dist +1 -1
  158. data/tests/checkdepends.sh +0 -0
  159. data/tests/cleancnf.sh +0 -0
  160. data/tests/makedist.rb +1 -1
  161. data/tests/rdep.rb +0 -0
  162. data/tests/totranslate.lang +0 -0
  163. data/zips/temp.rb +1 -0
  164. metadata +221 -204
  165. data/code/superant.com.rwdtinkerbackwindow/controlclient.rb +0 -96
  166. data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/75rwdcontrol.rwd +0 -33
  167. data/installed/rwdviewlogo-0.4.inf +0 -4
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