ogre.rb 0.1-i686-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (430) hide show
  1. data/README +79 -0
  2. data/Rakefile +288 -0
  3. data/doc_src/ogre.rb +246 -0
  4. data/doc_src/ois.rb +67 -0
  5. data/lib/application.rb +146 -0
  6. data/lib/application_frame_listener.rb +302 -0
  7. data/lib/application_loading_bar.rb +115 -0
  8. data/lib/constants.rb +51 -0
  9. data/lib/method_fixes.rb +42 -0
  10. data/lib/ogre.so +0 -0
  11. data/lib/ruby_ois.so +0 -0
  12. data/ogre.rb +25 -0
  13. data/platform.rb +23 -0
  14. data/samples/Ogre.log +261 -0
  15. data/samples/bsp.rb +76 -0
  16. data/samples/cg.dll +0 -0
  17. data/samples/grass.rb +325 -0
  18. data/samples/js3250.dll +0 -0
  19. data/samples/lighting.rb +138 -0
  20. data/samples/media/materials/programs/Grass.cg +30 -0
  21. data/samples/media/materials/programs/OffsetMapping.cg +97 -0
  22. data/samples/media/materials/programs/OffsetMapping.hlsl +135 -0
  23. data/samples/media/materials/programs/OffsetMappingFp.glsl +69 -0
  24. data/samples/media/materials/programs/OffsetMappingVp.glsl +54 -0
  25. data/samples/media/materials/programs/OffsetMapping_specular.asm +44 -0
  26. data/samples/media/materials/scripts/CloudySky.material +17 -0
  27. data/samples/media/materials/scripts/CubeMapping.material +34 -0
  28. data/samples/media/materials/scripts/Flare.material +17 -0
  29. data/samples/media/materials/scripts/Grass.material +63 -0
  30. data/samples/media/materials/scripts/Knot.material +14 -0
  31. data/samples/media/materials/scripts/MorningSkyBox.material +17 -0
  32. data/samples/media/materials/scripts/Offset.material +124 -0
  33. data/samples/media/materials/scripts/Ogre.material +119 -0
  34. data/samples/media/materials/scripts/RZR-002.material +15 -0
  35. data/samples/media/materials/scripts/Razor.material +14 -0
  36. data/samples/media/materials/scripts/Ribbon.material +19 -0
  37. data/samples/media/materials/scripts/RustySteel.material +14 -0
  38. data/samples/media/materials/scripts/SpaceSkyBox.material +17 -0
  39. data/samples/media/materials/scripts/SpaceSkyPlane.material +17 -0
  40. data/samples/media/materials/scripts/TextureEffects.material +15 -0
  41. data/samples/media/materials/scripts/dragon.material +42 -0
  42. data/samples/media/materials/scripts/smoke.material +18 -0
  43. data/samples/media/materials/textures/GreenSkin.jpg +0 -0
  44. data/samples/media/materials/textures/MtlPlat2.jpg +0 -0
  45. data/samples/media/materials/textures/RZR-002.png +0 -0
  46. data/samples/media/materials/textures/RustedMetal.jpg +0 -0
  47. data/samples/media/materials/textures/RustySteel.jpg +0 -0
  48. data/samples/media/materials/textures/Water02.jpg +0 -0
  49. data/samples/media/materials/textures/WeirdEye.png +0 -0
  50. data/samples/media/materials/textures/clouds.jpg +0 -0
  51. data/samples/media/materials/textures/cursor.png +0 -0
  52. data/samples/media/materials/textures/dirt01.jpg +0 -0
  53. data/samples/media/materials/textures/flare.png +0 -0
  54. data/samples/media/materials/textures/gras_02.png +0 -0
  55. data/samples/media/materials/textures/grass_1024.jpg +0 -0
  56. data/samples/media/materials/textures/ogreborder.png +0 -0
  57. data/samples/media/materials/textures/ogreborderUp.png +0 -0
  58. data/samples/media/materials/textures/ribbonband.png +0 -0
  59. data/samples/media/materials/textures/rockwall.tga +0 -0
  60. data/samples/media/materials/textures/rockwall_NH.tga +0 -0
  61. data/samples/media/materials/textures/smoke.png +0 -0
  62. data/samples/media/materials/textures/smokecolors.png +0 -0
  63. data/samples/media/materials/textures/spacesky.jpg +0 -0
  64. data/samples/media/materials/textures/spheremap.png +0 -0
  65. data/samples/media/materials/textures/texmap2.jpg +0 -0
  66. data/samples/media/models/RZR-002.mesh +0 -0
  67. data/samples/media/models/geosphere4500.mesh +0 -0
  68. data/samples/media/models/geosphere8000.mesh +0 -0
  69. data/samples/media/models/knot.mesh +0 -0
  70. data/samples/media/models/ogrehead.mesh +0 -0
  71. data/samples/media/models/razor.mesh +0 -0
  72. data/samples/media/models/sphere.mesh +0 -0
  73. data/samples/media/overlays/CubeMapping.overlay +139 -0
  74. data/samples/media/packs/OgreCore.zip +0 -0
  75. data/samples/media/packs/chiropteraDM.pk3 +0 -0
  76. data/samples/media/packs/chiropteraDM.txt +99 -0
  77. data/samples/media/packs/cubemap.zip +0 -0
  78. data/samples/media/packs/cubemapsJS.zip +0 -0
  79. data/samples/media/packs/dragon.zip +0 -0
  80. data/samples/media/packs/skybox.zip +0 -0
  81. data/samples/media/particles/smoke.particle +43 -0
  82. data/samples/media.cfg +22 -0
  83. data/samples/navi/Media/NaviDemo.material +60 -0
  84. data/samples/navi/Media/OgreCore.zip +0 -0
  85. data/samples/navi/Media/cerulean.jpg +0 -0
  86. data/samples/navi/Media/clouds.jpg +0 -0
  87. data/samples/navi/Media/controlsNaviMask.png +0 -0
  88. data/samples/navi/Media/grass.jpg +0 -0
  89. data/samples/navi/Media/knot.mesh +0 -0
  90. data/samples/navi/Media/testNaviMask.png +0 -0
  91. data/samples/navi/NaviLocal/Navi.js +136 -0
  92. data/samples/navi/NaviLocal/buttonBg.jpg +0 -0
  93. data/samples/navi/NaviLocal/controls.html +303 -0
  94. data/samples/navi/NaviLocal/knobBg.jpg +0 -0
  95. data/samples/navi/NaviLocal/moo.dropdownmenu.js +87 -0
  96. data/samples/navi/NaviLocal/mootools.v1.1.js +6964 -0
  97. data/samples/navi/NaviLocal/naviLogo.html +32 -0
  98. data/samples/navi/NaviLocal/naviLogo.png +0 -0
  99. data/samples/navi/NaviLocal/pageBg.jpg +0 -0
  100. data/samples/navi/NaviLocal/sliderBg.jpg +0 -0
  101. data/samples/navi/NaviLocal/test.html +5 -0
  102. data/samples/navi/NaviLocal/welcome.html +36 -0
  103. data/samples/navi/NaviLocal/welcome.png +0 -0
  104. data/samples/navi/chrome/chromelist.txt +597 -0
  105. data/samples/navi/chrome/classic.jar +0 -0
  106. data/samples/navi/chrome/classic.manifest +4 -0
  107. data/samples/navi/chrome/comm.jar +0 -0
  108. data/samples/navi/chrome/comm.manifest +2 -0
  109. data/samples/navi/chrome/en-US.jar +0 -0
  110. data/samples/navi/chrome/en-US.manifest +9 -0
  111. data/samples/navi/chrome/toolkit.jar +0 -0
  112. data/samples/navi/chrome/toolkit.manifest +6 -0
  113. data/samples/navi/components/FeedProcessor.js +1825 -0
  114. data/samples/navi/components/alerts.xpt +0 -0
  115. data/samples/navi/components/appshell.xpt +0 -0
  116. data/samples/navi/components/appstartup.xpt +0 -0
  117. data/samples/navi/components/auth.dll +0 -0
  118. data/samples/navi/components/autocomplete.xpt +0 -0
  119. data/samples/navi/components/autoconfig.dll +0 -0
  120. data/samples/navi/components/autoconfig.xpt +0 -0
  121. data/samples/navi/components/caps.xpt +0 -0
  122. data/samples/navi/components/chardet.xpt +0 -0
  123. data/samples/navi/components/chrome.xpt +0 -0
  124. data/samples/navi/components/commandhandler.xpt +0 -0
  125. data/samples/navi/components/commandlines.xpt +0 -0
  126. data/samples/navi/components/composer.xpt +0 -0
  127. data/samples/navi/components/compreg.dat +1474 -0
  128. data/samples/navi/components/content_base.xpt +0 -0
  129. data/samples/navi/components/content_html.xpt +0 -0
  130. data/samples/navi/components/content_htmldoc.xpt +0 -0
  131. data/samples/navi/components/content_xmldoc.xpt +0 -0
  132. data/samples/navi/components/content_xslt.xpt +0 -0
  133. data/samples/navi/components/content_xtf.xpt +0 -0
  134. data/samples/navi/components/directory.xpt +0 -0
  135. data/samples/navi/components/docshell_base.xpt +0 -0
  136. data/samples/navi/components/dom.xpt +0 -0
  137. data/samples/navi/components/dom_base.xpt +0 -0
  138. data/samples/navi/components/dom_canvas.xpt +0 -0
  139. data/samples/navi/components/dom_core.xpt +0 -0
  140. data/samples/navi/components/dom_css.xpt +0 -0
  141. data/samples/navi/components/dom_events.xpt +0 -0
  142. data/samples/navi/components/dom_html.xpt +0 -0
  143. data/samples/navi/components/dom_loadsave.xpt +0 -0
  144. data/samples/navi/components/dom_range.xpt +0 -0
  145. data/samples/navi/components/dom_sidebar.xpt +0 -0
  146. data/samples/navi/components/dom_storage.xpt +0 -0
  147. data/samples/navi/components/dom_stylesheets.xpt +0 -0
  148. data/samples/navi/components/dom_svg.xpt +0 -0
  149. data/samples/navi/components/dom_traversal.xpt +0 -0
  150. data/samples/navi/components/dom_views.xpt +0 -0
  151. data/samples/navi/components/dom_xbl.xpt +0 -0
  152. data/samples/navi/components/dom_xpath.xpt +0 -0
  153. data/samples/navi/components/dom_xul.xpt +0 -0
  154. data/samples/navi/components/downloads.xpt +0 -0
  155. data/samples/navi/components/editor.xpt +0 -0
  156. data/samples/navi/components/embed_base.xpt +0 -0
  157. data/samples/navi/components/extensions.xpt +0 -0
  158. data/samples/navi/components/exthandler.xpt +0 -0
  159. data/samples/navi/components/fastfind.xpt +0 -0
  160. data/samples/navi/components/feeds.xpt +0 -0
  161. data/samples/navi/components/find.xpt +0 -0
  162. data/samples/navi/components/gfx.xpt +0 -0
  163. data/samples/navi/components/gksvgrenderer.xpt +0 -0
  164. data/samples/navi/components/history.xpt +0 -0
  165. data/samples/navi/components/htmlparser.xpt +0 -0
  166. data/samples/navi/components/imglib2.xpt +0 -0
  167. data/samples/navi/components/inspector.xpt +0 -0
  168. data/samples/navi/components/intl.xpt +0 -0
  169. data/samples/navi/components/intlcmpt.xpt +0 -0
  170. data/samples/navi/components/jar.xpt +0 -0
  171. data/samples/navi/components/jsconsole-clhandler.js +170 -0
  172. data/samples/navi/components/jsconsole.xpt +0 -0
  173. data/samples/navi/components/jsdservice.xpt +0 -0
  174. data/samples/navi/components/layout_base.xpt +0 -0
  175. data/samples/navi/components/layout_printing.xpt +0 -0
  176. data/samples/navi/components/layout_xul.xpt +0 -0
  177. data/samples/navi/components/layout_xul_tree.xpt +0 -0
  178. data/samples/navi/components/locale.xpt +0 -0
  179. data/samples/navi/components/lwbrk.xpt +0 -0
  180. data/samples/navi/components/mimetype.xpt +0 -0
  181. data/samples/navi/components/mozbrwsr.xpt +0 -0
  182. data/samples/navi/components/mozfind.xpt +0 -0
  183. data/samples/navi/components/necko.xpt +0 -0
  184. data/samples/navi/components/necko_about.xpt +0 -0
  185. data/samples/navi/components/necko_cache.xpt +0 -0
  186. data/samples/navi/components/necko_cookie.xpt +0 -0
  187. data/samples/navi/components/necko_data.xpt +0 -0
  188. data/samples/navi/components/necko_dns.xpt +0 -0
  189. data/samples/navi/components/necko_file.xpt +0 -0
  190. data/samples/navi/components/necko_ftp.xpt +0 -0
  191. data/samples/navi/components/necko_http.xpt +0 -0
  192. data/samples/navi/components/necko_res.xpt +0 -0
  193. data/samples/navi/components/necko_socket.xpt +0 -0
  194. data/samples/navi/components/necko_strconv.xpt +0 -0
  195. data/samples/navi/components/necko_viewsource.xpt +0 -0
  196. data/samples/navi/components/nsCloseAllWindows.js +143 -0
  197. data/samples/navi/components/nsDefaultCLH.js +231 -0
  198. data/samples/navi/components/nsDictionary.js +148 -0
  199. data/samples/navi/components/nsExtensionManager.js +8497 -0
  200. data/samples/navi/components/nsHelperAppDlg.js +990 -0
  201. data/samples/navi/components/nsInterfaceInfoToIDL.js +590 -0
  202. data/samples/navi/components/nsKillAll.js +200 -0
  203. data/samples/navi/components/nsPostUpdateWin.js +711 -0
  204. data/samples/navi/components/nsProgressDialog.js +949 -0
  205. data/samples/navi/components/nsProxyAutoConfig.js +396 -0
  206. data/samples/navi/components/nsResetPref.js +175 -0
  207. data/samples/navi/components/nsURLFormatter.js +179 -0
  208. data/samples/navi/components/nsUpdateService.js +3074 -0
  209. data/samples/navi/components/nsXULAppInstall.js +301 -0
  210. data/samples/navi/components/nsXmlRpcClient.js +1038 -0
  211. data/samples/navi/components/oji.xpt +0 -0
  212. data/samples/navi/components/passwordmgr.xpt +0 -0
  213. data/samples/navi/components/pipboot.xpt +0 -0
  214. data/samples/navi/components/pipnss.xpt +0 -0
  215. data/samples/navi/components/plugin.xpt +0 -0
  216. data/samples/navi/components/pref.xpt +0 -0
  217. data/samples/navi/components/prefetch.xpt +0 -0
  218. data/samples/navi/components/profile.xpt +0 -0
  219. data/samples/navi/components/progressDlg.xpt +0 -0
  220. data/samples/navi/components/proxyObject.xpt +0 -0
  221. data/samples/navi/components/rdf.xpt +0 -0
  222. data/samples/navi/components/satchel.xpt +0 -0
  223. data/samples/navi/components/saxparser.xpt +0 -0
  224. data/samples/navi/components/shistory.xpt +0 -0
  225. data/samples/navi/components/storage.xpt +0 -0
  226. data/samples/navi/components/toolkitprofile.xpt +0 -0
  227. data/samples/navi/components/transformiix.dll +0 -0
  228. data/samples/navi/components/txmgr.xpt +0 -0
  229. data/samples/navi/components/txtsvc.xpt +0 -0
  230. data/samples/navi/components/uconv.xpt +0 -0
  231. data/samples/navi/components/unicharutil.xpt +0 -0
  232. data/samples/navi/components/universalchardet.dll +0 -0
  233. data/samples/navi/components/update.xpt +0 -0
  234. data/samples/navi/components/uriloader.xpt +0 -0
  235. data/samples/navi/components/urlformatter.xpt +0 -0
  236. data/samples/navi/components/webBrowser_core.xpt +0 -0
  237. data/samples/navi/components/webbrowserpersist.xpt +0 -0
  238. data/samples/navi/components/webshell_idls.xpt +0 -0
  239. data/samples/navi/components/websrvcs.dll +0 -0
  240. data/samples/navi/components/websrvcs.xpt +0 -0
  241. data/samples/navi/components/widget.xpt +0 -0
  242. data/samples/navi/components/windowds.xpt +0 -0
  243. data/samples/navi/components/windowwatcher.xpt +0 -0
  244. data/samples/navi/components/xml-rpc.xpt +0 -0
  245. data/samples/navi/components/xmlextras.dll +0 -0
  246. data/samples/navi/components/xpcom_base.xpt +0 -0
  247. data/samples/navi/components/xpcom_components.xpt +0 -0
  248. data/samples/navi/components/xpcom_ds.xpt +0 -0
  249. data/samples/navi/components/xpcom_io.xpt +0 -0
  250. data/samples/navi/components/xpcom_obsolete.xpt +0 -0
  251. data/samples/navi/components/xpcom_thread.xpt +0 -0
  252. data/samples/navi/components/xpcom_xpti.xpt +0 -0
  253. data/samples/navi/components/xpconnect.xpt +0 -0
  254. data/samples/navi/components/xpinstall.xpt +0 -0
  255. data/samples/navi/components/xpti.dat +1424 -0
  256. data/samples/navi/components/xulapp.xpt +0 -0
  257. data/samples/navi/components/xulapp_setup.xpt +0 -0
  258. data/samples/navi/components/xuldoc.xpt +0 -0
  259. data/samples/navi/components/xulrunner.xpt +0 -0
  260. data/samples/navi/components/xultmpl.xpt +0 -0
  261. data/samples/navi/components/xulutil.dll +0 -0
  262. data/samples/navi/controlsNaviMask.png +0 -0
  263. data/samples/navi/greprefs/all.js +1344 -0
  264. data/samples/navi/greprefs/security-prefs.js +69 -0
  265. data/samples/navi/greprefs/xpinstall.js +2 -0
  266. data/samples/navi/navi_demo.rb +207 -0
  267. data/samples/navi/plugins/NPSWF32.dll +0 -0
  268. data/samples/navi/plugins/flashplayer.xpt +0 -0
  269. data/samples/navi/plugins/npnul32.dll +0 -0
  270. data/samples/navi/plugins.cfg +10 -0
  271. data/samples/navi/res/EditorOverride.css +359 -0
  272. data/samples/navi/res/Thumbs.db +0 -0
  273. data/samples/navi/res/arrow.gif +0 -0
  274. data/samples/navi/res/arrowd.gif +0 -0
  275. data/samples/navi/res/bloatcycle.html +40 -0
  276. data/samples/navi/res/broken-image.gif +0 -0
  277. data/samples/navi/res/charsetData.properties +199 -0
  278. data/samples/navi/res/charsetalias.properties +517 -0
  279. data/samples/navi/res/cmessage.txt +1 -0
  280. data/samples/navi/res/dtd/xhtml11.dtd +300 -0
  281. data/samples/navi/res/entityTables/html40Latin1.properties +146 -0
  282. data/samples/navi/res/entityTables/html40Special.properties +69 -0
  283. data/samples/navi/res/entityTables/html40Symbols.properties +164 -0
  284. data/samples/navi/res/entityTables/htmlEntityVersions.properties +50 -0
  285. data/samples/navi/res/entityTables/transliterate.properties +2367 -0
  286. data/samples/navi/res/fonts/fontEncoding.properties +127 -0
  287. data/samples/navi/res/fonts/fontNameMap.properties +134 -0
  288. data/samples/navi/res/forms.css +531 -0
  289. data/samples/navi/res/grabber.gif +0 -0
  290. data/samples/navi/res/hiddenWindow.html +1 -0
  291. data/samples/navi/res/html/Thumbs.db +0 -0
  292. data/samples/navi/res/html/gopher-audio.gif +0 -0
  293. data/samples/navi/res/html/gopher-binary.gif +0 -0
  294. data/samples/navi/res/html/gopher-find.gif +0 -0
  295. data/samples/navi/res/html/gopher-image.gif +0 -0
  296. data/samples/navi/res/html/gopher-menu.gif +0 -0
  297. data/samples/navi/res/html/gopher-movie.gif +0 -0
  298. data/samples/navi/res/html/gopher-sound.gif +0 -0
  299. data/samples/navi/res/html/gopher-telnet.gif +0 -0
  300. data/samples/navi/res/html/gopher-text.gif +0 -0
  301. data/samples/navi/res/html/gopher-unknown.gif +0 -0
  302. data/samples/navi/res/html.css +478 -0
  303. data/samples/navi/res/langGroups.properties +236 -0
  304. data/samples/navi/res/language.properties +259 -0
  305. data/samples/navi/res/loading-image.gif +0 -0
  306. data/samples/navi/res/quirk.css +282 -0
  307. data/samples/navi/res/samples/Anieyes.gif +0 -0
  308. data/samples/navi/res/samples/Thumbs.db +0 -0
  309. data/samples/navi/res/samples/aform.css +69 -0
  310. data/samples/navi/res/samples/beeptest.html +18 -0
  311. data/samples/navi/res/samples/bform.css +45 -0
  312. data/samples/navi/res/samples/bg.jpg +0 -0
  313. data/samples/navi/res/samples/cform.css +40 -0
  314. data/samples/navi/res/samples/checkboxTest.xul +47 -0
  315. data/samples/navi/res/samples/demoform.css +97 -0
  316. data/samples/navi/res/samples/find.html +97 -0
  317. data/samples/navi/res/samples/gear1.gif +0 -0
  318. data/samples/navi/res/samples/image_props.html +58 -0
  319. data/samples/navi/res/samples/mozform.css +256 -0
  320. data/samples/navi/res/samples/printsetup.html +175 -0
  321. data/samples/navi/res/samples/raptor.jpg +0 -0
  322. data/samples/navi/res/samples/rock_gra.gif +0 -0
  323. data/samples/navi/res/samples/scrollbarTest1.xul +66 -0
  324. data/samples/navi/res/samples/scrollbarTest2.xul +19 -0
  325. data/samples/navi/res/samples/sliderTest1.xul +14 -0
  326. data/samples/navi/res/samples/soundtest.html +20 -0
  327. data/samples/navi/res/samples/test.wav +0 -0
  328. data/samples/navi/res/samples/test0.html +220 -0
  329. data/samples/navi/res/samples/test1.html +84 -0
  330. data/samples/navi/res/samples/test10.html +16 -0
  331. data/samples/navi/res/samples/test11.html +42 -0
  332. data/samples/navi/res/samples/test12.html +79 -0
  333. data/samples/navi/res/samples/test13.html +126 -0
  334. data/samples/navi/res/samples/test14.html +5 -0
  335. data/samples/navi/res/samples/test15.html +5 -0
  336. data/samples/navi/res/samples/test16.html +124 -0
  337. data/samples/navi/res/samples/test2.html +41 -0
  338. data/samples/navi/res/samples/test3.html +126 -0
  339. data/samples/navi/res/samples/test4.html +335 -0
  340. data/samples/navi/res/samples/test5.html +199 -0
  341. data/samples/navi/res/samples/test6.html +335 -0
  342. data/samples/navi/res/samples/test7.html +11 -0
  343. data/samples/navi/res/samples/test8-1.html +66 -0
  344. data/samples/navi/res/samples/test8.html +662 -0
  345. data/samples/navi/res/samples/test8dom.html +64 -0
  346. data/samples/navi/res/samples/test8sca.html +308 -0
  347. data/samples/navi/res/samples/test8siz.html +224 -0
  348. data/samples/navi/res/samples/test8tab.html +9 -0
  349. data/samples/navi/res/samples/test9.html +12 -0
  350. data/samples/navi/res/samples/test9a.html +39 -0
  351. data/samples/navi/res/samples/test9b.html +16 -0
  352. data/samples/navi/res/samples/test_ed.html +5 -0
  353. data/samples/navi/res/samples/test_form.html +34 -0
  354. data/samples/navi/res/samples/test_gfx.html +75 -0
  355. data/samples/navi/res/samples/test_lbox.html +100 -0
  356. data/samples/navi/res/samples/test_pr.html +87 -0
  357. data/samples/navi/res/samples/test_weight.html +45 -0
  358. data/samples/navi/res/samples/toolbarTest1.xul +51 -0
  359. data/samples/navi/res/samples/treeTest1.css +62 -0
  360. data/samples/navi/res/samples/treeTest1.xul +110 -0
  361. data/samples/navi/res/samples/xulTest.css +130 -0
  362. data/samples/navi/res/svg.css +64 -0
  363. data/samples/navi/res/table-add-column-after-active.gif +0 -0
  364. data/samples/navi/res/table-add-column-after-hover.gif +0 -0
  365. data/samples/navi/res/table-add-column-after.gif +0 -0
  366. data/samples/navi/res/table-add-column-before-active.gif +0 -0
  367. data/samples/navi/res/table-add-column-before-hover.gif +0 -0
  368. data/samples/navi/res/table-add-column-before.gif +0 -0
  369. data/samples/navi/res/table-add-row-after-active.gif +0 -0
  370. data/samples/navi/res/table-add-row-after-hover.gif +0 -0
  371. data/samples/navi/res/table-add-row-after.gif +0 -0
  372. data/samples/navi/res/table-add-row-before-active.gif +0 -0
  373. data/samples/navi/res/table-add-row-before-hover.gif +0 -0
  374. data/samples/navi/res/table-add-row-before.gif +0 -0
  375. data/samples/navi/res/table-remove-column-active.gif +0 -0
  376. data/samples/navi/res/table-remove-column-hover.gif +0 -0
  377. data/samples/navi/res/table-remove-column.gif +0 -0
  378. data/samples/navi/res/table-remove-row-active.gif +0 -0
  379. data/samples/navi/res/table-remove-row-hover.gif +0 -0
  380. data/samples/navi/res/table-remove-row.gif +0 -0
  381. data/samples/navi/res/throbber/Thumbs.db +0 -0
  382. data/samples/navi/res/throbber/anim.gif +0 -0
  383. data/samples/navi/res/throbber/anims00.gif +0 -0
  384. data/samples/navi/res/throbber/anims01.gif +0 -0
  385. data/samples/navi/res/throbber/anims02.gif +0 -0
  386. data/samples/navi/res/throbber/anims03.gif +0 -0
  387. data/samples/navi/res/throbber/anims04.gif +0 -0
  388. data/samples/navi/res/throbber/anims05.gif +0 -0
  389. data/samples/navi/res/throbber/anims06.gif +0 -0
  390. data/samples/navi/res/throbber/anims07.gif +0 -0
  391. data/samples/navi/res/throbber/anims08.gif +0 -0
  392. data/samples/navi/res/throbber/anims09.gif +0 -0
  393. data/samples/navi/res/throbber/anims10.gif +0 -0
  394. data/samples/navi/res/throbber/anims11.gif +0 -0
  395. data/samples/navi/res/throbber/anims12.gif +0 -0
  396. data/samples/navi/res/throbber/anims13.gif +0 -0
  397. data/samples/navi/res/throbber/anims14.gif +0 -0
  398. data/samples/navi/res/throbber/anims15.gif +0 -0
  399. data/samples/navi/res/throbber/anims16.gif +0 -0
  400. data/samples/navi/res/throbber/anims17.gif +0 -0
  401. data/samples/navi/res/throbber/anims18.gif +0 -0
  402. data/samples/navi/res/throbber/anims19.gif +0 -0
  403. data/samples/navi/res/throbber/anims20.gif +0 -0
  404. data/samples/navi/res/throbber/anims21.gif +0 -0
  405. data/samples/navi/res/throbber/anims22.gif +0 -0
  406. data/samples/navi/res/throbber/anims23.gif +0 -0
  407. data/samples/navi/res/throbber/anims24.gif +0 -0
  408. data/samples/navi/res/throbber/anims25.gif +0 -0
  409. data/samples/navi/res/throbber/anims26.gif +0 -0
  410. data/samples/navi/res/throbber/anims27.gif +0 -0
  411. data/samples/navi/res/throbber/anims28.gif +0 -0
  412. data/samples/navi/res/throbber/anims29.gif +0 -0
  413. data/samples/navi/res/ua.css +235 -0
  414. data/samples/navi/res/viewer.properties +1 -0
  415. data/samples/navi/res/viewsource.css +118 -0
  416. data/samples/navi/res/wincharset.properties +55 -0
  417. data/samples/navi/resources.cfg +14 -0
  418. data/samples/navi/testNaviMask.png +0 -0
  419. data/samples/ogre.cfg +8 -0
  420. data/samples/plugins.cfg +11 -0
  421. data/samples/quake3settings.cfg +2 -0
  422. data/samples/render_run_log.5796 +891 -0
  423. data/samples/render_to_texture.rb +161 -0
  424. data/samples/resources.cfg +16 -0
  425. data/samples/sky_box.rb +107 -0
  426. data/samples/sky_dome.rb +86 -0
  427. data/samples/sky_plane.rb +27 -0
  428. data/samples/smoke.rb +23 -0
  429. data/samples/work/cube_mapping.rb +686 -0
  430. metadata +500 -0
@@ -0,0 +1,711 @@
1
+ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
+ /* ***** BEGIN LICENSE BLOCK *****
3
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
+ *
5
+ * The contents of this file are subject to the Mozilla Public License Version
6
+ * 1.1 (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ * http://www.mozilla.org/MPL/
9
+ *
10
+ * Software distributed under the License is distributed on an "AS IS" basis,
11
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
+ * for the specific language governing rights and limitations under the
13
+ * License.
14
+ *
15
+ * The Original Code is the Update Service.
16
+ *
17
+ * The Initial Developer of the Original Code is Google Inc.
18
+ * Portions created by the Initial Developer are Copyright (C) 2005
19
+ * the Initial Developer. All Rights Reserved.
20
+ *
21
+ * Contributor(s):
22
+ * Darin Fisher <darin@meer.net> (original author)
23
+ *
24
+ * Alternatively, the contents of this file may be used under the terms of
25
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
26
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
+ * in which case the provisions of the GPL or the LGPL are applicable instead
28
+ * of those above. If you wish to allow use of your version of this file only
29
+ * under the terms of either the GPL or the LGPL, and not to allow others to
30
+ * use your version of this file under the terms of the MPL, indicate your
31
+ * decision by deleting the provisions above and replace them with the notice
32
+ * and other provisions required by the GPL or the LGPL. If you do not delete
33
+ * the provisions above, a recipient may use your version of this file under
34
+ * the terms of any one of the MPL, the GPL or the LGPL.
35
+ *
36
+ * ***** END LICENSE BLOCK ***** */
37
+
38
+ /**
39
+ * This file contains an implementation of nsIRunnable, which may be invoked
40
+ * to perform post-update modifications to the windows registry and uninstall
41
+ * logs required to complete an update of the application. This code is very
42
+ * specific to the xpinstall wizard for windows.
43
+ */
44
+
45
+ const URI_BRAND_PROPERTIES = "chrome://branding/locale/brand.properties";
46
+
47
+ const KEY_APPDIR = "XCurProcD";
48
+ const KEY_TMPDIR = "TmpD";
49
+ const KEY_UPDROOT = "UpdRootD";
50
+ const KEY_UAPPDATA = "UAppData";
51
+
52
+ // see prio.h
53
+ const PR_RDONLY = 0x01;
54
+ const PR_WRONLY = 0x02;
55
+ const PR_APPEND = 0x10;
56
+
57
+ const PERMS_FILE = 0644;
58
+ const PERMS_DIR = 0700;
59
+
60
+ const nsIWindowsRegKey = Components.interfaces.nsIWindowsRegKey;
61
+
62
+ var gConsole = null;
63
+ var gAppUpdateLogPostUpdate = false;
64
+
65
+ //-----------------------------------------------------------------------------
66
+
67
+ /**
68
+ * Console logging support
69
+ */
70
+ function LOG(s) {
71
+ if (gAppUpdateLogPostUpdate) {
72
+ dump("*** PostUpdateWin: " + s + "\n");
73
+ gConsole.logStringMessage(s);
74
+ }
75
+ }
76
+
77
+ /**
78
+ * This function queries the XPCOM directory service.
79
+ */
80
+ function getFile(key) {
81
+ var dirSvc =
82
+ Components.classes["@mozilla.org/file/directory_service;1"].
83
+ getService(Components.interfaces.nsIProperties);
84
+ return dirSvc.get(key, Components.interfaces.nsIFile);
85
+ }
86
+
87
+ /**
88
+ * Return the full path given a relative path and a base directory.
89
+ */
90
+ function getFileRelativeTo(dir, relPath) {
91
+ var file = dir.clone().QueryInterface(Components.interfaces.nsILocalFile);
92
+ file.setRelativeDescriptor(dir, relPath);
93
+ return file;
94
+ }
95
+
96
+ /**
97
+ * Creates a new file object given a native file path.
98
+ * @param path
99
+ * The native file path.
100
+ * @return nsILocalFile object for the given native file path.
101
+ */
102
+ function newFile(path) {
103
+ var file = Components.classes["@mozilla.org/file/local;1"]
104
+ .createInstance(Components.interfaces.nsILocalFile);
105
+ file.initWithPath(path);
106
+ return file;
107
+ }
108
+
109
+ /**
110
+ * This function returns a file input stream.
111
+ */
112
+ function openFileInputStream(file) {
113
+ var stream =
114
+ Components.classes["@mozilla.org/network/file-input-stream;1"].
115
+ createInstance(Components.interfaces.nsIFileInputStream);
116
+ stream.init(file, PR_RDONLY, 0, 0);
117
+ return stream;
118
+ }
119
+
120
+ /**
121
+ * This function returns a file output stream.
122
+ */
123
+ function openFileOutputStream(file, flags) {
124
+ var stream =
125
+ Components.classes["@mozilla.org/network/file-output-stream;1"].
126
+ createInstance(Components.interfaces.nsIFileOutputStream);
127
+ stream.init(file, flags, 0644, 0);
128
+ return stream;
129
+ }
130
+
131
+ //-----------------------------------------------------------------------------
132
+
133
+ const PREFIX_FILE = "File: ";
134
+
135
+ function InstallLogWriter() {
136
+ }
137
+ InstallLogWriter.prototype = {
138
+ _outputStream: null, // nsIOutputStream to the install wizard log file
139
+
140
+ /**
141
+ * Write a single line to the output stream.
142
+ */
143
+ _writeLine: function(s) {
144
+ s = s + "\r\n";
145
+ this._outputStream.write(s, s.length);
146
+ },
147
+
148
+ /**
149
+ * This function creates an empty uninstall update log file if it doesn't
150
+ * exist and returns a reference to the resulting nsIFile.
151
+ */
152
+ _getUninstallLogFile: function() {
153
+ var file = getFile(KEY_APPDIR);
154
+ file.append("uninstall");
155
+ if (!file.exists())
156
+ return null;
157
+
158
+ file.append("uninstall.log");
159
+ if (!file.exists())
160
+ file.create(Components.interfaces.nsILocalFile.NORMAL_FILE_TYPE, PERMS_FILE);
161
+
162
+ return file;
163
+ },
164
+
165
+ /**
166
+ * Return the update.log file. Use last-update.log file in case the
167
+ * updates/0 directory has already been cleaned out (see bug 311302).
168
+ */
169
+ _getUpdateLogFile: function() {
170
+ function appendUpdateLogPath(root) {
171
+ var file = root.clone();
172
+ file.append("updates");
173
+ file.append("0");
174
+ file.append("update.log");
175
+ if (file.exists())
176
+ return file;
177
+
178
+ file = root;
179
+ file.append("updates");
180
+ file.append("last-update.log");
181
+ if (file.exists())
182
+ return file;
183
+
184
+ return null;
185
+ }
186
+
187
+ // See the local appdata first if app dir is under Program Files.
188
+ var file = null;
189
+ try {
190
+ file = appendUpdateLogPath(getFile(KEY_UPDROOT));
191
+
192
+ // When updating from Fx 2.0.0.1 to 2.0.0.3 (or later) on Vista,
193
+ // we will have to see also user app data (see bug 351949).
194
+ if (!file)
195
+ file = appendUpdateLogPath(getFile(KEY_UAPPDATA));
196
+ } catch (e) {
197
+ }
198
+
199
+ // See the app dir if not found or app dir is out of Program Files.
200
+ if (!file)
201
+ file = appendUpdateLogPath(getFile(KEY_APPDIR));
202
+
203
+ return file;
204
+ },
205
+
206
+ /**
207
+ * Read update.log to extract information about files that were
208
+ * newly added for this update.
209
+ */
210
+ _readUpdateLog: function(logFile, entries) {
211
+ var stream;
212
+ try {
213
+ stream = openFileInputStream(logFile).
214
+ QueryInterface(Components.interfaces.nsILineInputStream);
215
+
216
+ var line = {};
217
+ while (stream.readLine(line)) {
218
+ var data = line.value.split(" ");
219
+ if (data[0] == "EXECUTE" && data[1] == "ADD") {
220
+ // The uninstaller requires the path separator to be "\" and
221
+ // relative paths to start with a "\".
222
+ var relPath = "\\" + data[2].replace(/\//g, "\\");
223
+ entries[relPath] = null;
224
+ }
225
+ }
226
+ } finally {
227
+ if (stream)
228
+ stream.close();
229
+ }
230
+ },
231
+
232
+ /**
233
+ * Read install_wizard log files to extract information about files that were
234
+ * previously added by the xpinstall installer and software update.
235
+ */
236
+ _readXPInstallLog: function(logFile, entries) {
237
+ var stream;
238
+ try {
239
+ stream = openFileInputStream(logFile).
240
+ QueryInterface(Components.interfaces.nsILineInputStream);
241
+
242
+ function fixPath(path, offset) {
243
+ return path.substr(offset).replace(appDirPath, "");
244
+ }
245
+
246
+ var appDir = getFile(KEY_APPDIR);
247
+ var appDirPath = appDir.path;
248
+ var line = {};
249
+ while (stream.readLine(line)) {
250
+ var entry = line.value;
251
+ // This works with both the entries from xpinstall (e.g. Installing: )
252
+ // and from update (e.g. installing: )
253
+ var searchStr = "nstalling: ";
254
+ var index = entry.indexOf(searchStr);
255
+ if (index != -1) {
256
+ entries[fixPath(entry, index + searchStr.length)] = null;
257
+ continue;
258
+ }
259
+
260
+ searchStr = "Replacing: ";
261
+ index = entry.indexOf(searchStr);
262
+ if (index != -1) {
263
+ entries[fixPath(entry, index + searchStr.length)] = null;
264
+ continue;
265
+ }
266
+
267
+ searchStr = "Windows Shortcut: ";
268
+ index = entry.indexOf(searchStr);
269
+ if (index != -1) {
270
+ entries[fixPath(entry + ".lnk", index + searchStr.length)] = null;
271
+ continue;
272
+ }
273
+ }
274
+ } finally {
275
+ if (stream)
276
+ stream.close();
277
+ }
278
+ },
279
+
280
+ _readUninstallLog: function(logFile, entries) {
281
+ var stream;
282
+ try {
283
+ stream = openFileInputStream(logFile).
284
+ QueryInterface(Components.interfaces.nsILineInputStream);
285
+
286
+ var line = {};
287
+ var searchStr = "File: ";
288
+ while (stream.readLine(line)) {
289
+ var index = line.value.indexOf(searchStr);
290
+ if (index != -1) {
291
+ var str = line.value.substr(index + searchStr.length);
292
+ entries.push(str);
293
+ }
294
+ }
295
+ } finally {
296
+ if (stream)
297
+ stream.close();
298
+ }
299
+ },
300
+
301
+ /**
302
+ * This function initializes the log writer and is responsible for
303
+ * translating 'update.log' and the 'install_wizard' logs to the NSIS format.
304
+ */
305
+ begin: function() {
306
+ var updateLog = this._getUpdateLogFile();
307
+ if (!updateLog)
308
+ return;
309
+
310
+ var newEntries = { };
311
+ this._readUpdateLog(updateLog, newEntries);
312
+
313
+ try {
314
+ const nsIDirectoryEnumerator = Components.interfaces.nsIDirectoryEnumerator;
315
+ const nsILocalFile = Components.interfaces.nsILocalFile;
316
+ var prefixWizLog = "install_wizard";
317
+ var uninstallDir = getFile(KEY_APPDIR);
318
+ uninstallDir.append("uninstall");
319
+ var entries = uninstallDir.directoryEntries.QueryInterface(nsIDirectoryEnumerator);
320
+ while (true) {
321
+ var wizLog = entries.nextFile;
322
+ if (!wizLog)
323
+ break;
324
+ if (wizLog instanceof nsILocalFile && !wizLog.isDirectory() &&
325
+ wizLog.leafName.indexOf(prefixWizLog) == 0) {
326
+ this._readXPInstallLog(wizLog, newEntries);
327
+ wizLog.remove(false);
328
+ }
329
+ }
330
+ }
331
+ catch (e) {}
332
+ if (entries)
333
+ entries.close();
334
+
335
+ var uninstallLog = this._getUninstallLogFile();
336
+ var oldEntries = [];
337
+ this._readUninstallLog(uninstallLog, oldEntries);
338
+
339
+ // Prevent writing duplicate entries in the log file
340
+ for (var relPath in newEntries) {
341
+ if (oldEntries.indexOf(relPath) != -1)
342
+ delete newEntries[relPath];
343
+ }
344
+
345
+ if (newEntries.length == 0)
346
+ return;
347
+
348
+ // since we are not running with elevated privs, we can't write out
349
+ // the log file (at least, not on Vista). So, write the output to
350
+ // temp, and then later, we'll pass the file (gCopiedLog) to
351
+ // the post update clean up process, which can copy it to
352
+ // the desired location (because it will have elevated privs)
353
+ gCopiedLog = getFile(KEY_TMPDIR);
354
+ gCopiedLog.append("uninstall");
355
+ gCopiedLog.createUnique(gCopiedLog.DIRECTORY_TYPE, PERMS_DIR);
356
+ if (uninstallLog)
357
+ uninstallLog.copyTo(gCopiedLog, "uninstall.log");
358
+ gCopiedLog.append("uninstall.log");
359
+
360
+ LOG("uninstallLog = " + uninstallLog.path);
361
+ LOG("copiedLog = " + gCopiedLog.path);
362
+
363
+ if (!gCopiedLog.exists())
364
+ gCopiedLog.create(Components.interfaces.nsILocalFile.NORMAL_FILE_TYPE,
365
+ PERMS_FILE);
366
+
367
+ this._outputStream =
368
+ openFileOutputStream(gCopiedLog, PR_WRONLY | PR_APPEND);
369
+
370
+ // The NSIS uninstaller deletes all directories where the installer has
371
+ // added a file if the directory is empty after the files have been removed
372
+ // so there is no need to log directories.
373
+ for (var relPath in newEntries)
374
+ this._writeLine(PREFIX_FILE + relPath);
375
+ },
376
+
377
+ end: function() {
378
+ if (!this._outputStream)
379
+ return;
380
+ this._outputStream.close();
381
+ this._outputStream = null;
382
+ }
383
+ };
384
+
385
+ var installLogWriter;
386
+ var gCopiedLog;
387
+
388
+ //-----------------------------------------------------------------------------
389
+
390
+ /**
391
+ * A thin wrapper around nsIWindowsRegKey
392
+ * note, only the "read" methods are exposed. If you want to write
393
+ * to the registry on Vista, you need to be a priveleged app.
394
+ * We've moved that code into the uninstaller.
395
+ */
396
+ function RegKey() {
397
+ // Internally, we may pass parameters to this constructor.
398
+ if (arguments.length == 3) {
399
+ this._key = arguments[0];
400
+ this._root = arguments[1];
401
+ this._path = arguments[2];
402
+ } else {
403
+ this._key =
404
+ Components.classes["@mozilla.org/windows-registry-key;1"].
405
+ createInstance(nsIWindowsRegKey);
406
+ }
407
+ }
408
+ RegKey.prototype = {
409
+ _key: null,
410
+ _root: null,
411
+ _path: null,
412
+
413
+ ACCESS_READ: nsIWindowsRegKey.ACCESS_READ,
414
+
415
+ ROOT_KEY_CURRENT_USER: nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
416
+ ROOT_KEY_LOCAL_MACHINE: nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
417
+ ROOT_KEY_CLASSES_ROOT: nsIWindowsRegKey.ROOT_KEY_CLASSES_ROOT,
418
+
419
+ close: function() {
420
+ this._key.close();
421
+ this._root = null;
422
+ this._path = null;
423
+ },
424
+
425
+ open: function(rootKey, path, mode) {
426
+ this._key.open(rootKey, path, mode);
427
+ this._root = rootKey;
428
+ this._path = path;
429
+ },
430
+
431
+ openChild: function(path, mode) {
432
+ var child = this._key.openChild(path, mode);
433
+ return new RegKey(child, this._root, this._path + "\\" + path);
434
+ },
435
+
436
+ readStringValue: function(name) {
437
+ return this._key.readStringValue(name);
438
+ },
439
+
440
+ hasValue: function(name) {
441
+ return this._key.hasValue(name);
442
+ },
443
+
444
+ hasChild: function(name) {
445
+ return this._key.hasChild(name);
446
+ },
447
+
448
+ get childCount() {
449
+ return this._key.childCount;
450
+ },
451
+
452
+ getChildName: function(index) {
453
+ return this._key.getChildName(index);
454
+ },
455
+
456
+ toString: function() {
457
+ var root;
458
+ switch (this._root) {
459
+ case this.ROOT_KEY_CLASSES_ROOT:
460
+ root = "HKEY_KEY_CLASSES_ROOT";
461
+ break;
462
+ case this.ROOT_KEY_LOCAL_MACHINE:
463
+ root = "HKEY_LOCAL_MACHINE";
464
+ break;
465
+ case this.ROOT_KEY_CURRENT_USER:
466
+ root = "HKEY_CURRENT_USER";
467
+ break;
468
+ default:
469
+ LOG("unknown root key");
470
+ return "";
471
+ }
472
+ return root + "\\" + this._path;
473
+ }
474
+ };
475
+
476
+ /**
477
+ * This method walks the registry looking for the registry keys of
478
+ * the previous version of the application.
479
+ */
480
+ function haveOldInstall(key, brandFullName, version) {
481
+ var ourInstallDir = getFile(KEY_APPDIR);
482
+ var result = false;
483
+ var childKey, productKey, mainKey;
484
+ try {
485
+ for (var i = 0; i < key.childCount; ++i) {
486
+ var childName = key.getChildName(i);
487
+ childKey = key.openChild(childName, key.ACCESS_READ);
488
+ if (childKey.hasValue("CurrentVersion")) {
489
+ for (var j = 0; j < childKey.childCount; ++j) {
490
+ var productVer = childKey.getChildName(j);
491
+ productKey = childKey.openChild(productVer, key.ACCESS_READ);
492
+ if (productKey.hasChild("Main")) {
493
+ mainKey = productKey.openChild("Main", key.ACCESS_READ);
494
+ var installDir = mainKey.readStringValue("Install Directory");
495
+ mainKey.close();
496
+ LOG("old install? " + installDir + " vs " + ourInstallDir.path);
497
+ LOG("old install? " + childName + " vs " + brandFullName);
498
+ LOG("old install? " + productVer.split(" ")[0] + " vs " + version);
499
+ if (newFile(installDir).equals(ourInstallDir) &&
500
+ (childName != brandFullName ||
501
+ productVer.split(" ")[0] != version)) {
502
+ result = true;
503
+ }
504
+ }
505
+ productKey.close();
506
+ if (result)
507
+ break;
508
+ }
509
+ }
510
+ childKey.close();
511
+ if (result)
512
+ break;
513
+ }
514
+ } catch (e) {
515
+ result = false;
516
+ if (childKey)
517
+ childKey.close();
518
+ if (productKey)
519
+ productKey.close();
520
+ if (mainKey)
521
+ mainKey.close();
522
+ }
523
+ return result;
524
+ }
525
+
526
+ function checkRegistry()
527
+ {
528
+ LOG("checkRegistry");
529
+
530
+ var result = false;
531
+
532
+ // Firefox is the only toolkit app that needs to do this.
533
+ // return false for other applications.
534
+ var app = Components.classes["@mozilla.org/xre/app-info;1"].
535
+ getService(Components.interfaces.nsIXULAppInfo);
536
+ if (app.name == "Firefox") {
537
+ try {
538
+ var key = new RegKey();
539
+ key.open(RegKey.prototype.ROOT_KEY_CLASSES_ROOT, "FirefoxHTML\\shell\\open\\command", key.ACCESS_READ);
540
+ var commandKey = key.readStringValue("");
541
+ LOG("commandKey = " + commandKey);
542
+ // if "-requestPending" is not found, we need to do the cleanup
543
+ result = (commandKey.indexOf("-requestPending") == -1);
544
+ } catch (e) {
545
+ LOG("failed to open command key for FirefoxHTML: " + e);
546
+ }
547
+ key.close();
548
+ }
549
+ return result;
550
+ }
551
+
552
+ function checkOldInstall(rootKey, vendorShortName, brandFullName, version)
553
+ {
554
+ var key = new RegKey();
555
+ var result = false;
556
+
557
+ try {
558
+ key.open(rootKey, "SOFTWARE\\" + vendorShortName, key.ACCESS_READ);
559
+ LOG("checkOldInstall: " + key + " " + brandFullName + " " + version);
560
+ result = haveOldInstall(key, brandFullName, version);
561
+ } catch (e) {
562
+ LOG("failed trying to find old install: " + e);
563
+ }
564
+ key.close();
565
+ return result;
566
+ }
567
+
568
+ //-----------------------------------------------------------------------------
569
+
570
+ function nsPostUpdateWin() {
571
+ gConsole = Components.classes["@mozilla.org/consoleservice;1"]
572
+ .getService(Components.interfaces.nsIConsoleService);
573
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].
574
+ getService(Components.interfaces.nsIPrefBranch);
575
+ try {
576
+ gAppUpdateLogPostUpdate = prefs.getBoolPref("app.update.log.all");
577
+ }
578
+ catch (ex) {
579
+ }
580
+ try {
581
+ if (!gAppUpdateLogPostUpdate)
582
+ gAppUpdateLogPostUpdate = prefs.getBoolPref("app.update.log.PostUpdate");
583
+ }
584
+ catch (ex) {
585
+ }
586
+ }
587
+
588
+ nsPostUpdateWin.prototype = {
589
+ QueryInterface: function(iid) {
590
+ if (iid.equals(Components.interfaces.nsIRunnable) ||
591
+ iid.equals(Components.interfaces.nsISupports))
592
+ return this;
593
+ throw Components.results.NS_ERROR_NO_INTERFACE;
594
+ },
595
+
596
+ run: function() {
597
+ try {
598
+ installLogWriter = new InstallLogWriter();
599
+ try {
600
+ installLogWriter.begin();
601
+ } finally {
602
+ installLogWriter.end();
603
+ installLogWriter = null;
604
+ }
605
+ } catch (e) {
606
+ LOG(e);
607
+ }
608
+
609
+ var app =
610
+ Components.classes["@mozilla.org/xre/app-info;1"].
611
+ getService(Components.interfaces.nsIXULAppInfo).
612
+ QueryInterface(Components.interfaces.nsIXULRuntime);
613
+
614
+ var sbs =
615
+ Components.classes["@mozilla.org/intl/stringbundle;1"].
616
+ getService(Components.interfaces.nsIStringBundleService);
617
+ var brandBundle = sbs.createBundle(URI_BRAND_PROPERTIES);
618
+
619
+ var vendorShortName;
620
+ try {
621
+ // The Thunderbird vendorShortName is "Mozilla Thunderbird", but we
622
+ // just want "Thunderbird", so allow it to be overridden in prefs.
623
+
624
+ var prefs =
625
+ Components.classes["@mozilla.org/preferences-service;1"].
626
+ getService(Components.interfaces.nsIPrefBranch);
627
+
628
+ vendorShortName = prefs.getCharPref("app.update.vendorName.override");
629
+ }
630
+ catch (e) {
631
+ vendorShortName = brandBundle.GetStringFromName("vendorShortName");
632
+ }
633
+ var brandFullName = brandBundle.GetStringFromName("brandFullName");
634
+
635
+ if (!gCopiedLog &&
636
+ !checkRegistry() &&
637
+ !checkOldInstall(RegKey.prototype.ROOT_KEY_LOCAL_MACHINE,
638
+ vendorShortName, brandFullName, app.version) &&
639
+ !checkOldInstall(RegKey.prototype.ROOT_KEY_CURRENT_USER,
640
+ vendorShortName, brandFullName, app.version)) {
641
+ LOG("nothing to do, so don't launch the helper");
642
+ return;
643
+ }
644
+
645
+ try {
646
+ var winAppHelper =
647
+ app.QueryInterface(Components.interfaces.nsIWinAppHelper);
648
+
649
+ // note, gCopiedLog could be null
650
+ if (gCopiedLog)
651
+ LOG("calling postUpdate with: " + gCopiedLog.path);
652
+ else
653
+ LOG("calling postUpdate without a log");
654
+
655
+ winAppHelper.postUpdate(gCopiedLog);
656
+ } catch (e) {
657
+ LOG("failed to launch the helper to do the post update cleanup: " + e);
658
+ }
659
+ }
660
+ };
661
+
662
+ //-----------------------------------------------------------------------------
663
+
664
+ var gModule = {
665
+ registerSelf: function(compMgr, fileSpec, location, type) {
666
+ compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
667
+
668
+ for (var key in this._objects) {
669
+ var obj = this._objects[key];
670
+ compMgr.registerFactoryLocation(obj.CID, obj.className, obj.contractID,
671
+ fileSpec, location, type);
672
+ }
673
+ },
674
+
675
+ getClassObject: function(compMgr, cid, iid) {
676
+ if (!iid.equals(Components.interfaces.nsIFactory))
677
+ throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
678
+
679
+ for (var key in this._objects) {
680
+ if (cid.equals(this._objects[key].CID))
681
+ return this._objects[key].factory;
682
+ }
683
+
684
+ throw Components.results.NS_ERROR_NO_INTERFACE;
685
+ },
686
+
687
+ _makeFactory: #1= function(ctor) {
688
+ function ci(outer, iid) {
689
+ if (outer != null)
690
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
691
+ return (new ctor()).QueryInterface(iid);
692
+ }
693
+ return { createInstance: ci };
694
+ },
695
+
696
+ _objects: {
697
+ manager: { CID : Components.ID("{d15b970b-5472-40df-97e8-eb03a04baa82}"),
698
+ contractID : "@mozilla.org/updates/post-update;1",
699
+ className : "nsPostUpdateWin",
700
+ factory : #1#(nsPostUpdateWin)
701
+ },
702
+ },
703
+
704
+ canUnload: function(compMgr) {
705
+ return true;
706
+ }
707
+ };
708
+
709
+ function NSGetModule(compMgr, fileSpec) {
710
+ return gModule;
711
+ }