webgen 0.3.8 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (618) hide show
  1. data/ChangeLog +2565 -14
  2. data/README +4 -6
  3. data/Rakefile +207 -89
  4. data/TODO +175 -17
  5. data/VERSION +1 -1
  6. data/bin/webgen +1 -2
  7. data/data/webgen/gallery-creator/default.png +0 -0
  8. data/data/webgen/gallery_styles/default/README +6 -0
  9. data/data/webgen/gallery_styles/default/gallery_gallery.template +38 -0
  10. data/data/webgen/gallery_styles/default/gallery_image.template +30 -0
  11. data/data/webgen/gallery_styles/default/gallery_main.template +18 -0
  12. data/data/webgen/gallery_styles/slides/README +18 -0
  13. data/data/webgen/gallery_styles/slides/collage.rb +334 -0
  14. data/data/webgen/gallery_styles/slides/gallery_gallery.template +62 -0
  15. data/data/webgen/gallery_styles/slides/gallery_image.template +53 -0
  16. data/data/webgen/gallery_styles/slides/gallery_main.template +32 -0
  17. data/data/webgen/resources/images/generated_by_webgen.png +0 -0
  18. data/data/webgen/resources/images/webgen_logo.png +0 -0
  19. data/data/webgen/website_styles/1024px/README +10 -0
  20. data/data/webgen/website_styles/1024px/default.css +188 -0
  21. data/data/webgen/website_styles/1024px/default.template +62 -0
  22. data/data/webgen/website_styles/1024px/images/background.gif +0 -0
  23. data/data/webgen/website_styles/andreas00/README +10 -0
  24. data/data/webgen/website_styles/andreas00/default.css +290 -0
  25. data/data/webgen/website_styles/andreas00/default.template +62 -0
  26. data/data/webgen/website_styles/andreas00/images/bg.gif +0 -0
  27. data/data/webgen/website_styles/andreas00/images/front.jpg +0 -0
  28. data/data/webgen/website_styles/andreas00/images/menubg.gif +0 -0
  29. data/data/webgen/website_styles/andreas00/images/menubg2.gif +0 -0
  30. data/data/webgen/website_styles/andreas01/README +11 -0
  31. data/data/webgen/website_styles/andreas01/default.css +310 -0
  32. data/data/webgen/website_styles/andreas01/default.template +63 -0
  33. data/data/webgen/website_styles/andreas01/images/bg.gif +0 -0
  34. data/data/webgen/website_styles/andreas01/images/front.jpg +0 -0
  35. data/data/webgen/website_styles/andreas01/print.css +35 -0
  36. data/data/webgen/website_styles/andreas03/README +11 -0
  37. data/data/webgen/website_styles/andreas03/default.css +223 -0
  38. data/data/webgen/website_styles/andreas03/default.template +60 -0
  39. data/data/webgen/website_styles/andreas03/images/bodybg.png +0 -0
  40. data/data/webgen/website_styles/andreas03/images/contbg.png +0 -0
  41. data/data/webgen/website_styles/andreas03/images/footerbg.png +0 -0
  42. data/data/webgen/website_styles/andreas03/images/gradient1.png +0 -0
  43. data/data/webgen/website_styles/andreas03/images/gradient2.png +0 -0
  44. data/data/webgen/website_styles/andreas04/README +12 -0
  45. data/data/webgen/website_styles/andreas04/default.css +290 -0
  46. data/data/webgen/website_styles/andreas04/default.template +83 -0
  47. data/data/webgen/website_styles/andreas04/images/blinkarrow.gif +0 -0
  48. data/data/webgen/website_styles/andreas04/images/bodybg.png +0 -0
  49. data/data/webgen/website_styles/andreas04/images/contentbg.png +0 -0
  50. data/data/webgen/website_styles/andreas04/images/entrybg.png +0 -0
  51. data/data/webgen/website_styles/andreas04/images/flash.gif +0 -0
  52. data/data/webgen/website_styles/andreas04/images/flash2.gif +0 -0
  53. data/data/webgen/website_styles/andreas04/images/globe.gif +0 -0
  54. data/data/webgen/website_styles/andreas04/images/globebottom.gif +0 -0
  55. data/data/webgen/website_styles/andreas04/images/linkarrow.gif +0 -0
  56. data/data/webgen/website_styles/andreas04/images/menuhover.png +0 -0
  57. data/data/webgen/website_styles/andreas05/README +11 -0
  58. data/data/webgen/website_styles/andreas05/default.css +33 -0
  59. data/data/webgen/website_styles/andreas05/default.template +42 -0
  60. data/data/webgen/website_styles/andreas05/images/bodybg.gif +0 -0
  61. data/data/webgen/website_styles/andreas05/images/front.png +0 -0
  62. data/data/webgen/website_styles/andreas06/README +11 -0
  63. data/data/webgen/website_styles/andreas06/default.css +353 -0
  64. data/data/webgen/website_styles/andreas06/default.template +72 -0
  65. data/data/webgen/website_styles/andreas06/images/bodybg.gif +0 -0
  66. data/data/webgen/website_styles/andreas06/images/boxbg.gif +0 -0
  67. data/data/webgen/website_styles/andreas06/images/greypx.gif +0 -0
  68. data/data/webgen/website_styles/andreas06/images/header.jpg +0 -0
  69. data/data/webgen/website_styles/andreas06/images/innerbg.gif +0 -0
  70. data/data/webgen/website_styles/andreas06/images/leaves.jpg +0 -0
  71. data/data/webgen/website_styles/andreas06/images/tabs.gif +0 -0
  72. data/data/webgen/website_styles/andreas07/README +12 -0
  73. data/data/webgen/website_styles/andreas07/browserfix.css +7 -0
  74. data/data/webgen/website_styles/andreas07/default.css +92 -0
  75. data/data/webgen/website_styles/andreas07/default.template +44 -0
  76. data/data/webgen/website_styles/andreas07/images/bodybg.gif +0 -0
  77. data/data/webgen/website_styles/andreas07/images/sidebarbg.gif +0 -0
  78. data/data/webgen/website_styles/andreas08/README +11 -0
  79. data/data/webgen/website_styles/andreas08/default.css +224 -0
  80. data/data/webgen/website_styles/andreas08/default.template +53 -0
  81. data/data/webgen/website_styles/andreas09/README +11 -0
  82. data/data/webgen/website_styles/andreas09/default.css +308 -0
  83. data/data/webgen/website_styles/andreas09/default.template +70 -0
  84. data/data/webgen/website_styles/andreas09/images/bodybg-black.jpg +0 -0
  85. data/data/webgen/website_styles/andreas09/images/bodybg-green.jpg +0 -0
  86. data/data/webgen/website_styles/andreas09/images/bodybg-orange.jpg +0 -0
  87. data/data/webgen/website_styles/andreas09/images/bodybg-purple.jpg +0 -0
  88. data/data/webgen/website_styles/andreas09/images/bodybg-red.jpg +0 -0
  89. data/data/webgen/website_styles/andreas09/images/bodybg.jpg +0 -0
  90. data/data/webgen/website_styles/andreas09/images/footerbg.jpg +0 -0
  91. data/data/webgen/website_styles/andreas09/images/menuhover-black.jpg +0 -0
  92. data/data/webgen/website_styles/andreas09/images/menuhover-green.jpg +0 -0
  93. data/data/webgen/website_styles/andreas09/images/menuhover-orange.jpg +0 -0
  94. data/data/webgen/website_styles/andreas09/images/menuhover-purple.jpg +0 -0
  95. data/data/webgen/website_styles/andreas09/images/menuhover-red.jpg +0 -0
  96. data/data/webgen/website_styles/andreas09/images/menuhover.jpg +0 -0
  97. data/data/webgen/website_styles/default/README +6 -0
  98. data/data/webgen/website_styles/default/default.css +1 -1
  99. data/data/webgen/website_styles/default/default.template +9 -3
  100. data/data/webgen/website_styles/plain/README +12 -0
  101. data/data/webgen/website_styles/plain/default.css +244 -0
  102. data/data/webgen/website_styles/plain/default.template +63 -0
  103. data/data/webgen/website_styles/plain/images/a_hover.jpg +0 -0
  104. data/data/webgen/website_styles/plain/images/desc.jpg +0 -0
  105. data/data/webgen/website_styles/plain/images/li.gif +0 -0
  106. data/data/webgen/website_styles/plain/images/mainbar.jpg +0 -0
  107. data/data/webgen/website_styles/plain/images/menu.jpg +0 -0
  108. data/data/webgen/website_styles/plain/images/submenua.gif +0 -0
  109. data/data/webgen/website_styles/plain/images/submenua_hover.jpg +0 -0
  110. data/data/webgen/website_templates/default/README +7 -5
  111. data/data/webgen/website_templates/personal_hp/README +7 -5
  112. data/data/webgen/website_templates/project/README +8 -6
  113. data/doc/config.yaml +2 -2
  114. data/doc/examples/website_styles/1024px/README +9 -0
  115. data/doc/examples/website_styles/1024px/config.yaml +2 -0
  116. data/doc/examples/website_styles/1024px/src/about.page +12 -0
  117. data/doc/examples/website_styles/1024px/src/default.css +188 -0
  118. data/doc/examples/website_styles/1024px/src/default.template +62 -0
  119. data/doc/examples/website_styles/1024px/src/download.page +15 -0
  120. data/doc/examples/website_styles/1024px/src/features.page +8 -0
  121. data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
  122. data/doc/examples/website_styles/1024px/src/index.page +9 -0
  123. data/doc/examples/website_styles/1024px/src/screenshots.page +18 -0
  124. data/doc/examples/website_styles/andreas00/README +9 -0
  125. data/doc/examples/website_styles/andreas00/config.yaml +2 -0
  126. data/doc/examples/website_styles/andreas00/src/about.page +12 -0
  127. data/doc/examples/website_styles/andreas00/src/default.css +290 -0
  128. data/doc/examples/website_styles/andreas00/src/default.template +62 -0
  129. data/doc/examples/website_styles/andreas00/src/download.page +15 -0
  130. data/doc/examples/website_styles/andreas00/src/features.page +8 -0
  131. data/doc/examples/website_styles/andreas00/src/images/bg.gif +0 -0
  132. data/doc/examples/website_styles/andreas00/src/images/front.jpg +0 -0
  133. data/doc/examples/website_styles/andreas00/src/images/menubg.gif +0 -0
  134. data/doc/examples/website_styles/andreas00/src/images/menubg2.gif +0 -0
  135. data/doc/examples/website_styles/andreas00/src/index.page +9 -0
  136. data/doc/examples/website_styles/andreas00/src/screenshots.page +18 -0
  137. data/doc/examples/website_styles/andreas01/README +9 -0
  138. data/doc/examples/website_styles/andreas01/config.yaml +2 -0
  139. data/doc/examples/website_styles/andreas01/src/about.page +12 -0
  140. data/doc/examples/website_styles/andreas01/src/default.css +310 -0
  141. data/doc/examples/website_styles/andreas01/src/default.template +63 -0
  142. data/doc/examples/website_styles/andreas01/src/download.page +15 -0
  143. data/doc/examples/website_styles/andreas01/src/features.page +8 -0
  144. data/doc/examples/website_styles/andreas01/src/images/bg.gif +0 -0
  145. data/doc/examples/website_styles/andreas01/src/images/front.jpg +0 -0
  146. data/doc/examples/website_styles/andreas01/src/index.page +9 -0
  147. data/doc/examples/website_styles/andreas01/src/print.css +35 -0
  148. data/doc/examples/website_styles/andreas01/src/screenshots.page +18 -0
  149. data/doc/examples/website_styles/andreas03/README +9 -0
  150. data/doc/examples/website_styles/andreas03/config.yaml +2 -0
  151. data/doc/examples/website_styles/andreas03/src/about.page +12 -0
  152. data/doc/examples/website_styles/andreas03/src/default.css +223 -0
  153. data/doc/examples/website_styles/andreas03/src/default.template +60 -0
  154. data/doc/examples/website_styles/andreas03/src/download.page +15 -0
  155. data/doc/examples/website_styles/andreas03/src/features.page +8 -0
  156. data/doc/examples/website_styles/andreas03/src/images/bodybg.png +0 -0
  157. data/doc/examples/website_styles/andreas03/src/images/contbg.png +0 -0
  158. data/doc/examples/website_styles/andreas03/src/images/footerbg.png +0 -0
  159. data/doc/examples/website_styles/andreas03/src/images/gradient1.png +0 -0
  160. data/doc/examples/website_styles/andreas03/src/images/gradient2.png +0 -0
  161. data/doc/examples/website_styles/andreas03/src/index.page +9 -0
  162. data/doc/examples/website_styles/andreas03/src/screenshots.page +18 -0
  163. data/doc/examples/website_styles/andreas04/README +9 -0
  164. data/doc/examples/website_styles/andreas04/config.yaml +2 -0
  165. data/doc/examples/website_styles/andreas04/src/about.page +12 -0
  166. data/doc/examples/website_styles/andreas04/src/default.css +290 -0
  167. data/doc/examples/website_styles/andreas04/src/default.template +83 -0
  168. data/doc/examples/website_styles/andreas04/src/download.page +15 -0
  169. data/doc/examples/website_styles/andreas04/src/features.page +8 -0
  170. data/doc/examples/website_styles/andreas04/src/images/blinkarrow.gif +0 -0
  171. data/doc/examples/website_styles/andreas04/src/images/bodybg.png +0 -0
  172. data/doc/examples/website_styles/andreas04/src/images/contentbg.png +0 -0
  173. data/doc/examples/website_styles/andreas04/src/images/entrybg.png +0 -0
  174. data/doc/examples/website_styles/andreas04/src/images/flash.gif +0 -0
  175. data/doc/examples/website_styles/andreas04/src/images/flash2.gif +0 -0
  176. data/doc/examples/website_styles/andreas04/src/images/globe.gif +0 -0
  177. data/doc/examples/website_styles/andreas04/src/images/globebottom.gif +0 -0
  178. data/doc/examples/website_styles/andreas04/src/images/linkarrow.gif +0 -0
  179. data/doc/examples/website_styles/andreas04/src/images/menuhover.png +0 -0
  180. data/doc/examples/website_styles/andreas04/src/index.page +9 -0
  181. data/doc/examples/website_styles/andreas04/src/screenshots.page +18 -0
  182. data/doc/examples/website_styles/andreas05/README +9 -0
  183. data/doc/examples/website_styles/andreas05/config.yaml +2 -0
  184. data/doc/examples/website_styles/andreas05/src/about.page +12 -0
  185. data/doc/examples/website_styles/andreas05/src/default.css +33 -0
  186. data/doc/examples/website_styles/andreas05/src/default.template +42 -0
  187. data/doc/examples/website_styles/andreas05/src/download.page +15 -0
  188. data/doc/examples/website_styles/andreas05/src/features.page +8 -0
  189. data/doc/examples/website_styles/andreas05/src/images/bodybg.gif +0 -0
  190. data/doc/examples/website_styles/andreas05/src/images/front.png +0 -0
  191. data/doc/examples/website_styles/andreas05/src/index.page +9 -0
  192. data/doc/examples/website_styles/andreas05/src/screenshots.page +18 -0
  193. data/doc/examples/website_styles/andreas06/README +9 -0
  194. data/doc/examples/website_styles/andreas06/config.yaml +2 -0
  195. data/doc/examples/website_styles/andreas06/src/about.page +12 -0
  196. data/doc/examples/website_styles/andreas06/src/default.css +353 -0
  197. data/doc/examples/website_styles/andreas06/src/default.template +72 -0
  198. data/doc/examples/website_styles/andreas06/src/download.page +15 -0
  199. data/doc/examples/website_styles/andreas06/src/features.page +8 -0
  200. data/doc/examples/website_styles/andreas06/src/images/bodybg.gif +0 -0
  201. data/doc/examples/website_styles/andreas06/src/images/boxbg.gif +0 -0
  202. data/doc/examples/website_styles/andreas06/src/images/greypx.gif +0 -0
  203. data/doc/examples/website_styles/andreas06/src/images/header.jpg +0 -0
  204. data/doc/examples/website_styles/andreas06/src/images/innerbg.gif +0 -0
  205. data/doc/examples/website_styles/andreas06/src/images/leaves.jpg +0 -0
  206. data/doc/examples/website_styles/andreas06/src/images/tabs.gif +0 -0
  207. data/doc/examples/website_styles/andreas06/src/index.page +9 -0
  208. data/doc/examples/website_styles/andreas06/src/screenshots.page +18 -0
  209. data/doc/examples/website_styles/andreas07/README +9 -0
  210. data/doc/examples/website_styles/andreas07/config.yaml +2 -0
  211. data/doc/examples/website_styles/andreas07/src/about.page +12 -0
  212. data/doc/examples/website_styles/andreas07/src/browserfix.css +7 -0
  213. data/doc/examples/website_styles/andreas07/src/default.css +92 -0
  214. data/doc/examples/website_styles/andreas07/src/default.template +44 -0
  215. data/doc/examples/website_styles/andreas07/src/download.page +15 -0
  216. data/doc/examples/website_styles/andreas07/src/features.page +8 -0
  217. data/doc/examples/website_styles/andreas07/src/images/bodybg.gif +0 -0
  218. data/doc/examples/website_styles/andreas07/src/images/sidebarbg.gif +0 -0
  219. data/doc/examples/website_styles/andreas07/src/index.page +9 -0
  220. data/doc/examples/website_styles/andreas07/src/screenshots.page +18 -0
  221. data/doc/examples/website_styles/andreas08/README +9 -0
  222. data/doc/examples/website_styles/andreas08/config.yaml +2 -0
  223. data/doc/examples/website_styles/andreas08/src/about.page +12 -0
  224. data/doc/examples/website_styles/andreas08/src/default.css +224 -0
  225. data/doc/examples/website_styles/andreas08/src/default.template +53 -0
  226. data/doc/examples/website_styles/andreas08/src/download.page +15 -0
  227. data/doc/examples/website_styles/andreas08/src/features.page +8 -0
  228. data/doc/examples/website_styles/andreas08/src/index.page +9 -0
  229. data/doc/examples/website_styles/andreas08/src/screenshots.page +18 -0
  230. data/doc/examples/website_styles/andreas09/README +9 -0
  231. data/doc/examples/website_styles/andreas09/config.yaml +2 -0
  232. data/doc/examples/website_styles/andreas09/src/about.page +12 -0
  233. data/doc/examples/website_styles/andreas09/src/default.css +308 -0
  234. data/doc/examples/website_styles/andreas09/src/default.template +70 -0
  235. data/doc/examples/website_styles/andreas09/src/download.page +15 -0
  236. data/doc/examples/website_styles/andreas09/src/features.page +8 -0
  237. data/doc/examples/website_styles/andreas09/src/images/bodybg-black.jpg +0 -0
  238. data/doc/examples/website_styles/andreas09/src/images/bodybg-green.jpg +0 -0
  239. data/doc/examples/website_styles/andreas09/src/images/bodybg-orange.jpg +0 -0
  240. data/doc/examples/website_styles/andreas09/src/images/bodybg-purple.jpg +0 -0
  241. data/doc/examples/website_styles/andreas09/src/images/bodybg-red.jpg +0 -0
  242. data/doc/examples/website_styles/andreas09/src/images/bodybg.jpg +0 -0
  243. data/doc/examples/website_styles/andreas09/src/images/footerbg.jpg +0 -0
  244. data/doc/examples/website_styles/andreas09/src/images/menuhover-black.jpg +0 -0
  245. data/doc/examples/website_styles/andreas09/src/images/menuhover-green.jpg +0 -0
  246. data/doc/examples/website_styles/andreas09/src/images/menuhover-orange.jpg +0 -0
  247. data/doc/examples/website_styles/andreas09/src/images/menuhover-purple.jpg +0 -0
  248. data/doc/examples/website_styles/andreas09/src/images/menuhover-red.jpg +0 -0
  249. data/doc/examples/website_styles/andreas09/src/images/menuhover.jpg +0 -0
  250. data/doc/examples/website_styles/andreas09/src/index.page +9 -0
  251. data/doc/examples/website_styles/andreas09/src/screenshots.page +18 -0
  252. data/doc/examples/website_styles/default/README +9 -0
  253. data/doc/examples/website_styles/default/config.yaml +2 -0
  254. data/doc/examples/website_styles/default/src/about.page +12 -0
  255. data/doc/examples/website_styles/default/src/default.css +84 -0
  256. data/doc/examples/website_styles/default/src/default.template +38 -0
  257. data/doc/examples/website_styles/default/src/download.page +15 -0
  258. data/doc/examples/website_styles/default/src/features.page +8 -0
  259. data/doc/examples/website_styles/default/src/index.page +9 -0
  260. data/doc/examples/website_styles/default/src/screenshots.page +18 -0
  261. data/doc/examples/website_styles/plain/README +9 -0
  262. data/doc/examples/website_styles/plain/config.yaml +2 -0
  263. data/doc/examples/website_styles/plain/src/about.page +12 -0
  264. data/doc/examples/website_styles/plain/src/default.css +244 -0
  265. data/doc/examples/website_styles/plain/src/default.template +63 -0
  266. data/doc/examples/website_styles/plain/src/download.page +15 -0
  267. data/doc/examples/website_styles/plain/src/features.page +8 -0
  268. data/doc/examples/website_styles/plain/src/images/a_hover.jpg +0 -0
  269. data/doc/examples/website_styles/plain/src/images/desc.jpg +0 -0
  270. data/doc/examples/website_styles/plain/src/images/li.gif +0 -0
  271. data/doc/examples/website_styles/plain/src/images/mainbar.jpg +0 -0
  272. data/doc/examples/website_styles/plain/src/images/menu.jpg +0 -0
  273. data/doc/examples/website_styles/plain/src/images/submenua.gif +0 -0
  274. data/doc/examples/website_styles/plain/src/images/submenua_hover.jpg +0 -0
  275. data/doc/examples/website_styles/plain/src/index.page +9 -0
  276. data/doc/examples/website_styles/plain/src/screenshots.page +18 -0
  277. data/doc/examples/website_templates/default/README +8 -0
  278. data/doc/examples/website_templates/default/config.yaml +2 -0
  279. data/doc/examples/website_templates/default/src/default.css +84 -0
  280. data/doc/examples/website_templates/default/src/default.template +38 -0
  281. data/doc/examples/website_templates/default/src/index.page +8 -0
  282. data/doc/examples/website_templates/personal_hp/README +8 -0
  283. data/doc/examples/website_templates/personal_hp/config.yaml +2 -0
  284. data/doc/examples/website_templates/personal_hp/src/about.page +12 -0
  285. data/doc/examples/website_templates/personal_hp/src/default.css +84 -0
  286. data/doc/examples/website_templates/personal_hp/src/default.template +38 -0
  287. data/doc/examples/website_templates/personal_hp/src/index.page +9 -0
  288. data/doc/examples/website_templates/personal_hp/src/links.page +22 -0
  289. data/doc/examples/website_templates/personal_hp/src/projects.page +20 -0
  290. data/doc/examples/website_templates/project/README +9 -0
  291. data/doc/examples/website_templates/project/config.yaml +2 -0
  292. data/doc/examples/website_templates/project/src/about.page +12 -0
  293. data/doc/examples/website_templates/project/src/default.css +84 -0
  294. data/doc/examples/website_templates/project/src/default.template +38 -0
  295. data/doc/examples/website_templates/project/src/download.page +15 -0
  296. data/doc/examples/website_templates/project/src/features.page +8 -0
  297. data/doc/examples/website_templates/project/src/index.page +9 -0
  298. data/doc/examples/website_templates/project/src/screenshots.page +18 -0
  299. data/doc/metainfo.yaml +85 -0
  300. data/doc/plugin/emoticon.rb +19 -21
  301. data/doc/plugin/extension.rb +134 -55
  302. data/doc/plugin/gallery/slides/collage.rb +334 -0
  303. data/doc/plugin/listpluginparameters.rb +24 -26
  304. data/doc/plugin/resources.rb +20 -22
  305. data/doc/src/default.css +333 -154
  306. data/doc/src/default.template +92 -39
  307. data/doc/src/documentation/extending_webgen.page +1 -2
  308. data/doc/src/documentation/gettingstarted.page +161 -44
  309. data/doc/src/documentation/index.page +15 -28
  310. data/doc/src/documentation/plugins/contentconverter/default.page +15 -0
  311. data/doc/src/documentation/plugins/contentconverter/html.page +10 -0
  312. data/doc/src/documentation/plugins/contentconverter/markdown.page +21 -0
  313. data/doc/src/documentation/plugins/contentconverter/rdoc.page +11 -0
  314. data/doc/src/documentation/plugins/contentconverter/textile.page +21 -0
  315. data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +61 -0
  316. data/doc/src/documentation/plugins/core/configuration.page +11 -0
  317. data/doc/src/documentation/plugins/core/filehandler.page +214 -0
  318. data/doc/src/documentation/plugins/core/index.page +11 -0
  319. data/doc/src/documentation/plugins/core/resourcemanager.page +46 -0
  320. data/doc/src/documentation/plugins/core/tagprocessor.page +17 -0
  321. data/doc/src/documentation/plugins/file/copyhandler.page +26 -0
  322. data/doc/src/documentation/plugins/file/defaulthandler.page +15 -0
  323. data/doc/src/documentation/plugins/file/directoryhandler.page +37 -0
  324. data/doc/src/documentation/plugins/file/galleryhandler.page +181 -0
  325. data/doc/src/documentation/plugins/file/pagehandler.page +154 -0
  326. data/doc/src/documentation/plugins/file/templatehandler.page +34 -0
  327. data/doc/src/documentation/plugins/file/thumbnailwriter.page +39 -0
  328. data/doc/src/documentation/plugins/htmlvalidator/default.page +12 -0
  329. data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +12 -0
  330. data/doc/src/documentation/plugins/index.page +32 -11
  331. data/doc/src/documentation/plugins/menustyle/default.page +19 -0
  332. data/doc/src/documentation/plugins/menustyle/horizontal.page +32 -0
  333. data/doc/src/documentation/plugins/{menustyles → menustyle}/horizontaldropdown.page +25 -19
  334. data/doc/src/documentation/plugins/menustyle/section.page +34 -0
  335. data/doc/src/documentation/plugins/menustyle/vertical.page +48 -0
  336. data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +29 -0
  337. data/doc/src/documentation/plugins/misc/index.page +9 -0
  338. data/doc/src/documentation/plugins/{miscplugins → misc}/smileyreplacer.page +15 -14
  339. data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +26 -0
  340. data/doc/src/documentation/plugins/tag/block.page +29 -0
  341. data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +29 -0
  342. data/doc/src/documentation/plugins/tag/date.page +34 -0
  343. data/doc/src/documentation/plugins/tag/default.page +27 -0
  344. data/doc/src/documentation/plugins/tag/download.page +60 -0
  345. data/doc/src/documentation/plugins/tag/executecommand.page +29 -0
  346. data/doc/src/documentation/plugins/tag/includefile.page +30 -0
  347. data/doc/src/documentation/plugins/{tags → tag}/langbar.de.page +1 -1
  348. data/doc/src/documentation/plugins/tag/langbar.fr.page +6 -0
  349. data/doc/src/documentation/plugins/tag/langbar.page +41 -0
  350. data/doc/src/documentation/plugins/tag/menu.page +78 -0
  351. data/doc/src/documentation/plugins/{tags → tag}/meta.page +8 -7
  352. data/doc/src/documentation/plugins/tag/relocatable.page +46 -0
  353. data/doc/src/documentation/plugins/tag/resource.page +35 -0
  354. data/doc/src/documentation/plugins/tag/sitemap.page +35 -0
  355. data/doc/src/documentation/plugins/tag/wikilink.page +33 -0
  356. data/doc/src/documentation/references/index.page +0 -1
  357. data/doc/src/documentation/references/meta_info_reference.page +90 -13
  358. data/doc/src/documentation/references/parameter_reference.page +0 -1
  359. data/doc/src/documentation/references/webpage_format.page +249 -0
  360. data/doc/src/download.page +50 -21
  361. data/doc/src/examples/gallery_styles/default/default.gallery +78 -0
  362. data/doc/src/examples/gallery_styles/default/gallery_gallery.template +38 -0
  363. data/doc/src/examples/gallery_styles/default/gallery_image.template +30 -0
  364. data/doc/src/examples/gallery_styles/default/gallery_main.template +18 -0
  365. data/doc/src/examples/gallery_styles/index.page +22 -0
  366. data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +62 -0
  367. data/doc/src/examples/gallery_styles/slides/gallery_image.template +53 -0
  368. data/doc/src/examples/gallery_styles/slides/gallery_main.template +32 -0
  369. data/doc/src/examples/gallery_styles/slides/slides.gallery +79 -0
  370. data/doc/src/examples/images/image01.jpg +0 -0
  371. data/doc/src/examples/images/image02.jpg +0 -0
  372. data/doc/src/examples/images/image03.jpg +0 -0
  373. data/doc/src/examples/images/image04.jpg +0 -0
  374. data/doc/src/examples/images/image05.jpg +0 -0
  375. data/doc/src/examples/images/image06.jpg +0 -0
  376. data/doc/src/examples/images/image07.jpg +0 -0
  377. data/doc/src/examples/images/image08.jpg +0 -0
  378. data/doc/src/examples/images/image09.jpg +0 -0
  379. data/doc/src/examples/images/image10.jpg +0 -0
  380. data/doc/src/examples/images/image11.jpg +0 -0
  381. data/doc/src/examples/images/image12.jpg +0 -0
  382. data/doc/src/examples/images/image13.jpg +0 -0
  383. data/doc/src/examples/images/image14.jpg +0 -0
  384. data/doc/src/examples/images/image15.jpg +0 -0
  385. data/doc/src/examples/images/image16.jpg +0 -0
  386. data/doc/src/examples/images/image17.jpg +0 -0
  387. data/doc/src/examples/images/image18.jpg +0 -0
  388. data/doc/src/examples/index.page +18 -0
  389. data/doc/src/examples/website_styles/1024px.page +5 -0
  390. data/doc/src/examples/website_styles/andreas00.page +5 -0
  391. data/doc/src/examples/website_styles/andreas01.page +5 -0
  392. data/doc/src/examples/website_styles/andreas03.page +5 -0
  393. data/doc/src/examples/website_styles/andreas04.page +5 -0
  394. data/doc/src/examples/website_styles/andreas05.page +5 -0
  395. data/doc/src/examples/website_styles/andreas06.page +5 -0
  396. data/doc/src/examples/website_styles/andreas07.page +5 -0
  397. data/doc/src/examples/website_styles/andreas08.page +5 -0
  398. data/doc/src/examples/website_styles/andreas09.page +5 -0
  399. data/doc/src/examples/website_styles/default.page +5 -0
  400. data/doc/src/examples/website_styles/index.page +71 -0
  401. data/doc/src/examples/website_styles/plain.page +5 -0
  402. data/doc/src/examples/website_templates/default.page +5 -0
  403. data/doc/src/examples/website_templates/index.page +24 -0
  404. data/doc/src/examples/website_templates/personal_hp.page +5 -0
  405. data/doc/src/examples/website_templates/project.page +5 -0
  406. data/doc/src/features.page +16 -14
  407. data/doc/src/images/bodybg.jpg +0 -0
  408. data/doc/src/images/footerbg.jpg +0 -0
  409. data/doc/src/images/menuhover.jpg +0 -0
  410. data/doc/src/images/node_diagram.svg +7132 -0
  411. data/doc/src/images/thumb_example.jpg +0 -0
  412. data/doc/src/images/thumb_example_cropped.jpg +0 -0
  413. data/doc/src/images/thumb_example_normal.jpg +0 -0
  414. data/doc/src/index.page +14 -102
  415. data/doc/src/news.page +154 -0
  416. data/doc/src/plugin.template +10 -0
  417. data/lib/webgen/cli.rb +427 -0
  418. data/lib/webgen/composite.rb +11 -11
  419. data/lib/webgen/config.rb +52 -0
  420. data/lib/webgen/content.rb +172 -0
  421. data/lib/webgen/extcommand.rb +23 -0
  422. data/lib/webgen/languages.rb +110 -0
  423. data/lib/webgen/listener.rb +1 -1
  424. data/lib/webgen/node.rb +196 -124
  425. data/lib/webgen/plugin.rb +480 -144
  426. data/lib/webgen/plugins/{contenthandlers → contentconverters}/default.rb +10 -9
  427. data/lib/webgen/plugins/{contenthandlers → contentconverters}/html.rb +11 -8
  428. data/lib/webgen/plugins/contentconverters/markdown.rb +54 -0
  429. data/lib/webgen/plugins/{contenthandlers → contentconverters}/rdoc.rb +16 -12
  430. data/lib/webgen/plugins/{contenthandlers → contentconverters}/textile.rb +18 -13
  431. data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +58 -0
  432. data/lib/webgen/plugins/coreplugins/configuration.rb +11 -102
  433. data/lib/webgen/plugins/coreplugins/resourcemanager.rb +95 -74
  434. data/lib/webgen/plugins/filehandlers/copy.rb +41 -19
  435. data/lib/webgen/plugins/filehandlers/directory.rb +52 -50
  436. data/lib/webgen/plugins/filehandlers/filehandler.rb +370 -123
  437. data/lib/webgen/plugins/filehandlers/gallery.rb +368 -117
  438. data/lib/webgen/plugins/filehandlers/page.rb +160 -146
  439. data/lib/webgen/plugins/filehandlers/template.rb +65 -52
  440. data/lib/webgen/plugins/htmlvalidators/default.rb +9 -7
  441. data/lib/webgen/plugins/htmlvalidators/xmllint.rb +17 -33
  442. data/lib/webgen/plugins/menustyles/default.rb +27 -25
  443. data/lib/webgen/plugins/menustyles/horizontal.rb +22 -41
  444. data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +25 -39
  445. data/lib/webgen/plugins/menustyles/section.rb +68 -0
  446. data/lib/webgen/plugins/menustyles/vertical.rb +36 -56
  447. data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +24 -32
  448. data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +20 -17
  449. data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +72 -0
  450. data/lib/webgen/plugins/miscplugins/treewalker.rb +9 -36
  451. data/lib/webgen/plugins/tags/block.rb +65 -0
  452. data/lib/webgen/plugins/tags/breadcrumbtrail.rb +15 -11
  453. data/lib/webgen/plugins/tags/date.rb +11 -7
  454. data/lib/webgen/plugins/tags/download.rb +38 -38
  455. data/lib/webgen/plugins/tags/executecommand.rb +30 -15
  456. data/lib/webgen/plugins/tags/includefile.rb +26 -13
  457. data/lib/webgen/plugins/tags/langbar.rb +23 -18
  458. data/lib/webgen/plugins/tags/menu.rb +49 -70
  459. data/lib/webgen/plugins/tags/meta.rb +12 -9
  460. data/lib/webgen/plugins/tags/relocatable.rb +41 -13
  461. data/lib/webgen/plugins/tags/sitemap.rb +32 -28
  462. data/lib/webgen/plugins/tags/tag_processor.rb +279 -0
  463. data/lib/webgen/plugins/tags/wikilink.rb +25 -20
  464. data/lib/webgen/test.rb +202 -0
  465. data/lib/webgen/website.rb +310 -0
  466. data/test/fixtures/sample_site/src/chained.template +3 -0
  467. data/test/fixtures/sample_site/src/default.template +3 -0
  468. data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +3 -0
  469. data/test/fixtures/sample_site/src/dir1/dir11/file111.page +3 -0
  470. data/test/fixtures/sample_site/src/dir1/dir11/index.page +3 -0
  471. data/test/fixtures/sample_site/src/dir1/file11.page +3 -0
  472. data/test/fixtures/sample_site/src/dir2/file21.page +3 -0
  473. data/test/fixtures/sample_site/src/embedded.rhtml +1 -0
  474. data/test/fixtures/sample_site/src/file1.page +8 -0
  475. data/test/fixtures/sample_site/src/file2.de.page +6 -0
  476. data/test/fixtures/sample_site/src/index.de.page +4 -0
  477. data/test/fixtures/sample_site/src/index.en.page +1 -0
  478. data/test/fixtures/sample_site/src/invalid.template +3 -0
  479. data/test/fixtures/sample_site/src/test.jpg +1 -0
  480. data/test/fixtures/sample_site/src/test.template +3 -0
  481. data/test/fixtures/tc_content/blocks.yaml +40 -0
  482. data/test/fixtures/tc_content/correct.yaml +65 -0
  483. data/test/fixtures/tc_content/incorrect.yaml +42 -0
  484. data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +9 -0
  485. data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +6 -0
  486. data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +49 -0
  487. data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
  488. data/test/fixtures/tc_filehandler_gallery/test.gallery +2 -0
  489. data/test/fixtures/tc_filehandler_gallery/test1.gallery +2 -0
  490. data/test/fixtures/tc_filehandler_gallery/test1.jpg +0 -0
  491. data/test/fixtures/tc_filehandler_gallery/test2.jpg +0 -0
  492. data/test/fixtures/tc_filehandler_gallery/test3.jpg +0 -0
  493. data/test/fixtures/tc_filehandler_gallery/test4.jpg +0 -0
  494. data/test/fixtures/tc_filehandler_page/testdata.yaml +10 -0
  495. data/test/fixtures/tc_menustyles_default/menustyle.rb +7 -0
  496. data/test/fixtures/tc_node/nodes.yaml +64 -0
  497. data/test/fixtures/tc_plugin/handlerplugin.rb +15 -0
  498. data/test/fixtures/tc_plugin/plugin1.rb +33 -0
  499. data/test/fixtures/tc_plugin/plugin2.rb +8 -0
  500. data/test/fixtures/tc_tags_includefile/testfile +1 -0
  501. data/test/fixtures/tc_tags_tag_processor/test_file1 +1 -0
  502. data/test/fixtures/tc_tags_tag_processor/testtag.rb +17 -0
  503. data/test/fixtures/tc_website/correct.yaml +6 -0
  504. data/test/fixtures/tc_website/incorrect_structure.yaml +2 -0
  505. data/test/fixtures/tc_website/incorrect_yaml.yaml +5 -0
  506. data/test/fixtures/tc_website/meta_info_test.yaml +10 -0
  507. data/test/fixtures/tc_website/testdir/README +1 -0
  508. data/test/fixtures/tc_website/testdir/falsedir/README +1 -0
  509. data/test/runtests.rb +2 -0
  510. data/test/unittests/tc_composite.rb +82 -0
  511. data/test/unittests/tc_config.rb +18 -0
  512. data/test/unittests/tc_content.rb +88 -0
  513. data/test/unittests/tc_contentconverters_default.rb +13 -0
  514. data/test/unittests/tc_contentconverters_html.rb +16 -0
  515. data/test/unittests/tc_contentconverters_markdown.rb +22 -0
  516. data/test/unittests/tc_contentconverters_rdoc.rb +16 -0
  517. data/test/unittests/tc_contentconverters_textile.rb +22 -0
  518. data/test/unittests/tc_contentconverters_xmlbuilder.rb +22 -0
  519. data/test/unittests/tc_filehandler_copy.rb +65 -0
  520. data/test/unittests/tc_filehandler_directory.rb +134 -0
  521. data/test/unittests/tc_filehandler_filehandler.rb +294 -0
  522. data/test/unittests/tc_filehandler_gallery.rb +165 -0
  523. data/test/unittests/tc_filehandler_page.rb +183 -0
  524. data/test/unittests/tc_filehandler_template.rb +60 -0
  525. data/test/unittests/tc_htmlvalidators_default.rb +12 -0
  526. data/test/unittests/tc_htmlvalidators_xmllint.rb +19 -0
  527. data/test/unittests/tc_languages.rb +57 -0
  528. data/test/unittests/tc_listener.rb +72 -0
  529. data/test/unittests/tc_menustyles_default.rb +51 -0
  530. data/test/unittests/tc_menustyles_horizontal.rb +18 -0
  531. data/test/unittests/tc_menustyles_horizontal_dropdown.rb +18 -0
  532. data/test/unittests/tc_menustyles_section.rb +59 -0
  533. data/test/unittests/tc_menustyles_vertical.rb +79 -0
  534. data/test/unittests/tc_menustyles_vertical_dropdown.rb +18 -0
  535. data/test/unittests/tc_node.rb +202 -0
  536. data/test/unittests/tc_plugin.rb +214 -0
  537. data/test/unittests/tc_resourcemanager.rb +42 -0
  538. data/test/unittests/tc_smileyreplacer.rb +25 -0
  539. data/test/unittests/tc_syntax_highlighter.rb +30 -0
  540. data/test/unittests/tc_tags_block.rb +27 -0
  541. data/test/unittests/tc_tags_breadcrumbtrail.rb +22 -0
  542. data/test/unittests/tc_tags_date.rb +15 -0
  543. data/test/unittests/tc_tags_download.rb +32 -0
  544. data/test/unittests/tc_tags_executecommand.rb +37 -0
  545. data/test/unittests/tc_tags_includefile.rb +53 -0
  546. data/test/unittests/tc_tags_langbar.rb +42 -0
  547. data/test/unittests/tc_tags_menu.rb +50 -0
  548. data/test/unittests/tc_tags_meta.rb +19 -0
  549. data/test/unittests/tc_tags_relocatable.rb +66 -0
  550. data/test/unittests/tc_tags_sitemap.rb +33 -0
  551. data/test/unittests/tc_tags_tag_processor.rb +107 -0
  552. data/test/unittests/tc_tags_wikilink.rb +22 -0
  553. data/test/unittests/tc_treewalker.rb +44 -0
  554. data/test/unittests/tc_website.rb +188 -0
  555. metadata +829 -312
  556. data/bin/webgen-gallery-editor +0 -654
  557. data/bin/webgen-gui +0 -10
  558. data/data/webgen/website_templates/default/config.yaml +0 -2
  559. data/doc/plugin/clidesc.rb +0 -46
  560. data/doc/plugin/source.rb +0 -21
  561. data/doc/src/about.page +0 -22
  562. data/doc/src/documentation/cli.page +0 -12
  563. data/doc/src/documentation/plugins/contenthandlers/html.page +0 -11
  564. data/doc/src/documentation/plugins/contenthandlers/index.page +0 -7
  565. data/doc/src/documentation/plugins/contenthandlers/markdown.page +0 -11
  566. data/doc/src/documentation/plugins/contenthandlers/rdoc.page +0 -11
  567. data/doc/src/documentation/plugins/contenthandlers/textile.page +0 -11
  568. data/doc/src/documentation/plugins/coreplugins/configuration.page +0 -12
  569. data/doc/src/documentation/plugins/coreplugins/index.page +0 -7
  570. data/doc/src/documentation/plugins/coreplugins/logging.page +0 -13
  571. data/doc/src/documentation/plugins/coreplugins/resourcemanager.page +0 -34
  572. data/doc/src/documentation/plugins/filehandlers/backing.page +0 -46
  573. data/doc/src/documentation/plugins/filehandlers/copy.page +0 -12
  574. data/doc/src/documentation/plugins/filehandlers/directoryhandler.page +0 -35
  575. data/doc/src/documentation/plugins/filehandlers/gallery.page +0 -86
  576. data/doc/src/documentation/plugins/filehandlers/index.page +0 -34
  577. data/doc/src/documentation/plugins/filehandlers/page.page +0 -170
  578. data/doc/src/documentation/plugins/filehandlers/template.page +0 -21
  579. data/doc/src/documentation/plugins/gallerylayouters/index.page +0 -18
  580. data/doc/src/documentation/plugins/htmlvalidators/index.page +0 -6
  581. data/doc/src/documentation/plugins/htmlvalidators/xmllint.page +0 -14
  582. data/doc/src/documentation/plugins/menustyles/horizontal.page +0 -21
  583. data/doc/src/documentation/plugins/menustyles/index.page +0 -12
  584. data/doc/src/documentation/plugins/menustyles/partial.page +0 -27
  585. data/doc/src/documentation/plugins/menustyles/vertical.page +0 -32
  586. data/doc/src/documentation/plugins/menustyles/verticaldropdown.page +0 -23
  587. data/doc/src/documentation/plugins/miscplugins/index.page +0 -7
  588. data/doc/src/documentation/plugins/tags/breadcrumbtrail.page +0 -20
  589. data/doc/src/documentation/plugins/tags/date.page +0 -19
  590. data/doc/src/documentation/plugins/tags/download.page +0 -23
  591. data/doc/src/documentation/plugins/tags/executecommand.page +0 -18
  592. data/doc/src/documentation/plugins/tags/includefile.page +0 -15
  593. data/doc/src/documentation/plugins/tags/index.page +0 -44
  594. data/doc/src/documentation/plugins/tags/langbar.page +0 -27
  595. data/doc/src/documentation/plugins/tags/menu.de.page +0 -12
  596. data/doc/src/documentation/plugins/tags/menu.page +0 -19
  597. data/doc/src/documentation/plugins/tags/multilang.de.page +0 -4
  598. data/doc/src/documentation/plugins/tags/multilang.fr.page +0 -4
  599. data/doc/src/documentation/plugins/tags/multilang.page +0 -4
  600. data/doc/src/documentation/plugins/tags/relocatable.page +0 -16
  601. data/doc/src/documentation/plugins/tags/resource.page +0 -22
  602. data/doc/src/documentation/plugins/tags/sitemap.page +0 -17
  603. data/doc/src/documentation/plugins/tags/wikilink.page +0 -18
  604. data/doc/src/documentation/webgen_gallery_editor.page +0 -82
  605. data/doc/src/images/screenshots/wge-image.png +0 -0
  606. data/doc/src/images/screenshots/wge-layout-preview.png +0 -0
  607. data/doc/src/images/screenshots/wge-main-disabled.png +0 -0
  608. data/doc/src/images/screenshots/wge-main.png +0 -0
  609. data/doc/src/meta.info +0 -30
  610. data/doc/src/screenshots.gallery +0 -33
  611. data/install.rb +0 -19
  612. data/lib/webgen.rb +0 -277
  613. data/lib/webgen/plugins/contenthandlers/markdown.rb +0 -50
  614. data/lib/webgen/plugins/coreplugins/logging.rb +0 -101
  615. data/lib/webgen/plugins/filehandlers/backing.rb +0 -159
  616. data/lib/webgen/plugins/gallerylayouters/default.rb +0 -152
  617. data/lib/webgen/plugins/menustyles/partial.rb +0 -95
  618. data/lib/webgen/plugins/tags/tags.rb +0 -254
@@ -1,654 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- ruby -*-
3
-
4
- require 'yaml'
5
- require 'ostruct'
6
- require 'webgen/plugin'
7
- require 'webgen/plugins/coreplugins/configuration'
8
- require 'webgen/plugins/filehandlers/gallery'
9
- require 'Qt'
10
- # Error when loading Qt before RMagick -> error in RMagick undefined method `display' for class `Magick::Image'
11
- # report that to qtruby team and RMagick team
12
-
13
- class Gallery
14
-
15
- attr_accessor :meta
16
- attr_accessor :relpath
17
-
18
- def initialize
19
- set_default_values
20
- @relpath = '.'
21
- end
22
-
23
- def []( name )
24
- @meta[name]
25
- end
26
-
27
- def []=( name, value )
28
- @meta[name] = value
29
- end
30
-
31
- def set_default_values
32
- @meta = {}
33
- Webgen::Plugin.config[FileHandlers::GalleryFileHandler].params.each do |name, data|
34
- @meta[name] = data.value
35
- end
36
- @meta['mainPage'] = nil
37
- @meta['galleryPages'] = nil
38
- @meta['thumbnailSize'] = nil
39
- end
40
-
41
- def read_file( filename )
42
- filedata = YAML::load( File.read( filename ) )
43
-
44
- set_default_values
45
- filedata.each {|name, data| @meta[name] = data }
46
- @relpath = File.dirname( filename )
47
- end
48
-
49
- def write_file( filename )
50
- File.open( filename, 'w+' ) {|file| file.write( @meta.to_yaml ) }
51
- @relpath= File.dirname( filename )
52
- end
53
-
54
- end
55
-
56
-
57
- class ImageViewer < Qt::Frame
58
-
59
- def initialize( p )
60
- super( p )
61
- setFrameStyle( Qt::Frame::StyledPanel | Qt::Frame::Sunken )
62
- set_image
63
- end
64
-
65
- def set_image( filename = nil)
66
- filename = File.join( CorePlugins::Configuration.data_dir, 'resources/images/webgen_logo.png' ) if filename.nil?
67
- @image = Qt::Image.new( filename )
68
- update
69
- end
70
-
71
- def drawContents( painter )
72
- return if @image.nil?
73
- width = contentsRect.width
74
- height = contentsRect.height
75
- image = ( width > @image.width && height > @image.height ? @image : @image.smoothScale( width, height, Qt::Image::ScaleMin ) )
76
- painter.drawImage( contentsRect.left + (width - image.width) / 2, contentsRect.top + (height - image.height) / 2, image )
77
- end
78
-
79
- def sizeHint
80
- Qt::Size.new( 320, 200 )
81
- end
82
-
83
- end
84
-
85
-
86
- class MetaTableNameItem < Qt::TableItem
87
-
88
- def initialize( table, text = '' )
89
- super( table, Qt::TableItem::OnTyping )
90
- setReplaceable( false )
91
- setText( text )
92
- add_text_to_list( text )
93
- end
94
-
95
- def createEditor
96
- cb = Qt::ComboBox.new( table.viewport )
97
- cb.setEditable( true )
98
- cb.setAutoCompletion( true )
99
- cb.insertStringList( table.meta_items )
100
- cb.setCurrentText( text )
101
- cb
102
- end
103
-
104
- def setContentFromEditor( widget )
105
- setText( widget.currentText )
106
- add_text_to_list( widget.currentText )
107
- end
108
-
109
- def add_text_to_list( text )
110
- unless text.nil? || text.empty? || table.meta_items.include?( text )
111
- table.meta_items << text
112
- table.meta_items.sort!
113
- end
114
- end
115
-
116
- end
117
-
118
- class MetaTableValueItem < Qt::TableItem
119
-
120
- def initialize( table, text = '' )
121
- super( table, Qt::TableItem::OnTyping )
122
- setContent( text )
123
- end
124
-
125
- def setContent( content )
126
- setText( content.to_s )
127
- end
128
-
129
- def getContent
130
- case text
131
- when 'true' then true
132
- when 'false' then false
133
- when 'nil' then nil
134
- when /\d+/ then text.to_i
135
- else text
136
- end
137
- end
138
-
139
- end
140
-
141
-
142
- class MetaDataTable < Qt::Table
143
-
144
- slots 'value_changed(int, int)'
145
-
146
- attr_reader :meta_items
147
-
148
- def initialize( p, meta_items = [], exclude_items = [] )
149
- super( 1, 2, p )
150
- @meta_items = meta_items.sort!
151
- @exclude_items = exclude_items
152
- horizontalHeader.setLabel( 0, 'Name' )
153
- horizontalHeader.setLabel( 1, 'Value' )
154
- setSelectionMode( Qt::Table::Single )
155
- setItem( 0, 0, MetaTableNameItem.new( self ) )
156
- setItem( 0, 1, MetaTableValueItem.new( self ) )
157
-
158
- connect( horizontalHeader, SIGNAL('clicked(int)'), self, SLOT('setFocus()') )
159
- connect( verticalHeader, SIGNAL('clicked(int)'), self, SLOT('setFocus()') )
160
- connect( self, SIGNAL('valueChanged(int, int)'), self, SLOT('value_changed( int, int )') )
161
- end
162
-
163
- def activateNextCell
164
- activate = endEdit( currentRow, currentColumn, true, false )
165
- oldRow = currentRow
166
- oldCol = currentColumn
167
-
168
- setCurrentCell( currentColumn == 1 ? (currentRow == numRows - 1 ? 0 : currentRow + 1) : currentRow,
169
- (currentColumn + 1) % 2 )
170
- setCurrentCell( oldRow, oldCol ) if !activate
171
- end
172
-
173
- def endEdit( row, col, accept, replace )
174
- activate_next_cell = true
175
- w = cellWidget( row, col )
176
- if col == 0 && !w.nil?
177
- if keys( (0...row).to_a + (row+1..numRows-1).to_a ).find {|t| t == w.currentText && t != '' }
178
- msg = "You can't add duplicate entries!"
179
- elsif @exclude_items.include?( w.currentText )
180
- msg = "This meta information can only be defined via other controls!"
181
- end
182
- if msg
183
- Qt::MessageBox.information( self, "Error adding entry", msg )
184
- accept = false
185
- activate_next_cell = false
186
- end
187
- end
188
- super( row, col, accept, replace )
189
- activate_next_cell
190
- end
191
-
192
- def fill( items )
193
- setNumRows( items.length + 1 )
194
- items.each_with_index do |data, index|
195
- setItem( index, 0, MetaTableNameItem.new( self, data[0] ) )
196
- setItem( index, 1, MetaTableValueItem.new( self, data[1] ) )
197
- end
198
- setItem( items.length, 0, MetaTableNameItem.new( self ) )
199
- setItem( items.length, 1, MetaTableValueItem.new( self ) )
200
- end
201
-
202
- def keys( rows = (0..(numRows-1)).to_a )
203
- retval = []
204
- rows.each do |i|
205
- retval << text( i, 0 )
206
- end
207
- retval
208
- end
209
-
210
- def meta_info
211
- retval = {}
212
- 0.upto( numRows - 2 ) do |i|
213
- retval[text( i, 0 )] = item( i, 1 ).getContent
214
- end
215
- retval
216
- end
217
-
218
- def value_changed( row, col )
219
- col0empty = text( row, 0 ).nil? || text( row, 0).empty?
220
- col1empty = text( row, 1 ).nil? || text( row, 1).empty?
221
- if row == numRows - 1 && (!col0empty || !col1empty)
222
- setNumRows( numRows + 1 )
223
- setItem( numRows - 1, 0, MetaTableNameItem.new( self ) )
224
- setItem( numRows - 1, 1, MetaTableValueItem.new( self ) )
225
- elsif !(row == numRows - 1) && col0empty && col1empty
226
- removeRow( row )
227
- end
228
- end
229
-
230
- def keyReleaseEvent( event )
231
- if event.key == Qt::Key_Delete
232
- if currentSelection == -1
233
- setText( currentRow, currentColumn, '' )
234
- emit valueChanged( currentRow, currentColumn )
235
- else
236
- sel = selection( currentSelection )
237
- sel.topRow.upto( sel.bottomRow ) do |row|
238
- sel.leftCol.upto( sel.rightCol) do |col|
239
- setText( row, col, '' )
240
- emit valueChanged( row, col )
241
- end
242
- end
243
- end
244
- else
245
- event.ignore
246
- end
247
- end
248
-
249
- end
250
-
251
-
252
- class MyTextEdit < Qt::TextEdit
253
-
254
- signals 'myReturnPressed()'
255
-
256
- def keyPressEvent( event )
257
- if (event.key == Qt::Key_Return || event.key == Qt::Key_Enter) && (event.state & Qt::ControlButton == Qt::ControlButton)
258
- emit myReturnPressed()
259
- else
260
- super
261
- end
262
- end
263
-
264
- end
265
-
266
-
267
- class ImageFileDrag < Qt::DragObject
268
-
269
- def initialize( text, parent )
270
- super( parent )
271
- @text = text
272
- end
273
-
274
- def format( param )
275
- if param == 0
276
- "app/webgen-image-file" #how to define a user mime type correctly?
277
- else
278
- nil
279
- end
280
- end
281
-
282
- def encodedData( format )
283
- @text
284
- end
285
-
286
- end
287
-
288
- class ImageFileList < Qt::ListBox
289
-
290
- def initialize( parent, mainWindow )
291
- super( parent )
292
- setAcceptDrops( true )
293
- @dragPos = nil
294
- @mainWindow = mainWindow
295
- Qt::ToolTip.add( self, "You can order the images by dragging and dropping the image names (sets the <b>orderInfo</b> meta information)" )
296
- end
297
-
298
- def fill_list( items )
299
- items.sort do |a,b|
300
- aoi = (@mainWindow.gallery[a].nil? ? 0 : @mainWindow.gallery[a]['orderInfo'].to_s.to_i)
301
- boi = (@mainWindow.gallery[b].nil? ? 0 : @mainWindow.gallery[b]['orderInfo'].to_s.to_i)
302
- aoi <=> boi
303
- end.each {|image| insertItem( image )}
304
- end
305
-
306
- def dragEnterEvent( event )
307
- event.accept if event.provides( "app/webgen-image-file" )
308
- end
309
-
310
- def dropEvent( event )
311
- text = event.encodedData( "app/webgen-image-file" ).to_s
312
- dropIndex = index( itemAt( event.pos ) )
313
-
314
- blockSignals( true )
315
- @mainWindow.save_image_meta_info
316
- removeItem( currentItem )
317
- insertItem( text, dropIndex )
318
- @mainWindow.save_image_meta_info
319
- blockSignals( false )
320
-
321
- 0.upto( count - 1 ) {|i| (@mainWindow.gallery[text( i )] ||= {})['orderInfo'] = i }
322
-
323
- setCurrentItem( dropIndex )
324
- end
325
-
326
- def mousePressEvent( event )
327
- super
328
- @dragPos = event.pos
329
- end
330
-
331
- def mouseReleaseEvent( event )
332
- super
333
- @dragPos = nil
334
- end
335
-
336
- def mouseMoveEvent( event )
337
- if @dragPos && (@dragPos - event.pos).manhattanLength > Qt::Application.startDragDistance
338
- d = ImageFileDrag.new( currentText, self )
339
- d.dragMove
340
- @dragPos = nil
341
- end
342
- end
343
-
344
- end
345
-
346
-
347
- class GalleryWindow < Qt::MainWindow
348
-
349
- slots 'new()', 'open()', 'save()', 'save_as()', 'image_selected(const QString &)',
350
- 'init_image_list()', 'select_next_image()', "assign_pic_names()"
351
-
352
- attr_reader :gallery
353
-
354
- def initialize
355
- super
356
- setCaption( "Webgen Gallery Editor" )
357
-
358
- @gallery = nil
359
- @curfile = nil
360
- setup_menus
361
- setup_window
362
- centralWidget.setEnabled( false )
363
- end
364
-
365
- def new
366
- gallery = Gallery.new
367
- if save_as( gallery )
368
- @gallery = gallery
369
- init_widgets
370
- end
371
- end
372
-
373
- def open
374
- openDialog = Qt::FileDialog.new( '.', 'Gallery files (*.gallery)', self, 'Open file...', true )
375
- openDialog.setMode( Qt::FileDialog::ExistingFile )
376
- open_file( openDialog.selectedFile ) if openDialog.exec == Qt::Dialog::Accepted
377
- end
378
-
379
- def open_file( file )
380
- @curfile = file
381
- @gallery = Gallery.new
382
- @gallery.read_file( file )
383
- init_widgets
384
- end
385
-
386
- def save
387
- update_gallery
388
- @gallery.write_file( @curfile )
389
- end
390
-
391
- def save_as( gallery = @gallery )
392
- ret_val = false
393
- saveDialog = Qt::FileDialog.new( '.', 'Gallery files (*.gallery)', self, 'Select new file...', true )
394
- saveDialog.setMode( Qt::FileDialog::AnyFile )
395
- if saveDialog.exec == Qt::Dialog::Accepted
396
- fname = saveDialog.selectedFile
397
- fname += '.gallery' if File.extname( fname ) == ''
398
- gallery.write_file( fname )
399
- @curfile = fname
400
- ret_val = true
401
- end
402
- ret_val
403
- end
404
-
405
- def image_selected( name )
406
- save_image_meta_info
407
- @last_selected_image = name
408
-
409
- if @gallery[name]
410
- @imageTitle.setText( @gallery[name].delete( 'title' ) )
411
- @imageDescription.setText( @gallery[name].delete( 'description' ) )
412
- @picMetaTable.fill( @gallery[name] )
413
- end
414
- @image.set_image( File.join( @gallery.relpath, name ) )
415
- end
416
-
417
- def select_next_image
418
- if @imageList.currentItem == @imageList.count - 1
419
- @imageList.setCurrentItem( 0 ) if @imageList.count > 0
420
- else
421
- @imageList.setCurrentItem( @imageList.currentItem + 1 )
422
- end
423
- end
424
-
425
- def assign_pic_names
426
- 0.upto( @imageList.count - 1 ) do |i|
427
- @gallery[@imageList.text( i )] ||= {}
428
- if @gallery[@imageList.text( i )]['title'].to_s.empty?
429
- @gallery[@imageList.text( i )]['title'] = @imageList.text( i )
430
- end
431
- end
432
- end
433
-
434
- def save_image_meta_info
435
- if @last_selected_image
436
- @gallery[@last_selected_image] = @picMetaTable.meta_info
437
- @gallery[@last_selected_image]['title'] = @imageTitle.text
438
- @gallery[@last_selected_image]['description'] = @imageDescription.text
439
- @last_selected_image = nil
440
- end
441
- end
442
-
443
- #######
444
- private
445
- #######
446
-
447
- def page_meta_items
448
- ['title', 'description', 'orderInfo', 'template', 'inMenu']
449
- end
450
-
451
- def gallery_items
452
- ['title', 'layout', 'files', 'imagesPerPage',
453
- 'imagePageInMenu', 'galleryPageInMenu', 'mainPageInMenu',
454
- 'imagePageTemplate', 'galleryPageTemplate', 'mainPageTemplate',
455
- 'galleryPages', 'mainPage', 'galleryOrderInfo', 'thumbnailSize' ]
456
- end
457
-
458
- def init_widgets
459
- return if @gallery.nil?
460
-
461
- gallery_items.each do |t|
462
- case @widgets[t]
463
- when Qt::LineEdit then @widgets[t].setText( @gallery[t] )
464
- when Qt::SpinBox then @widgets[t].setValue( @gallery[t] )
465
- when Qt::CheckBox then @widgets[t].setChecked( @gallery[t] )
466
- when Qt::ComboBox then @widgets[t].setCurrentText( @gallery[t] )
467
- when MetaDataTable then @widgets[t].fill( @gallery[t] ) if @gallery[t]
468
- end
469
- end
470
- @picMetaTable.fill( [] )
471
- init_image_list
472
- @image.set_image
473
- centralWidget.setEnabled( true )
474
- end
475
-
476
- def update_gallery
477
- items = gallery_items
478
- items.each do |t|
479
- case @widgets[t]
480
- when Qt::LineEdit then @gallery[t] = @widgets[t].text
481
- when Qt::SpinBox then @gallery[t] = @widgets[t].value
482
- when Qt::CheckBox then @gallery[t] = @widgets[t].checked?
483
- when Qt::ComboBox then @gallery[t] = @widgets[t].currentText
484
- when MetaDataTable then @gallery[t] = @widgets[t].meta_info
485
- end
486
- end
487
- images = []
488
- 0.upto( @imageList.numRows ) {|i| images << @imageList.text( i ) }
489
-
490
- save_image_meta_info
491
- @gallery.meta.delete_if do |name, data|
492
- !images.include?( name ) && !items.include?( name )
493
- end
494
- end
495
-
496
- def init_image_list
497
- @imageList.clear
498
- images = Dir[File.join( @gallery.relpath, @widgets['files'].text)].collect {|i| i.sub( /#{@gallery.relpath + File::SEPARATOR}/, '' ) }
499
- @imageList.fill_list( images )
500
- @last_selected_image = nil
501
- end
502
-
503
- def setup_menus
504
- filemenu = Qt::PopupMenu.new( self )
505
- filemenu.insertItem( "&New...", self, SLOT("new()"), Qt::KeySequence.new( CTRL+Key_N ) )
506
- filemenu.insertItem( "&Open...", self, SLOT("open()"), Qt::KeySequence.new( CTRL+Key_O ) )
507
- filemenu.insertItem( "&Save", self, SLOT("save()"), Qt::KeySequence.new( CTRL+Key_S ) )
508
- filemenu.insertItem( "&Save as...", self, SLOT("save_as()") )
509
- filemenu.insertItem( "&Quit", $app, SLOT("quit()"), Qt::KeySequence.new( CTRL+Key_Q ) )
510
-
511
- picmenu = Qt::PopupMenu.new( self )
512
- picmenu.insertItem( "&Assign default names", self, SLOT("assign_pic_names()") )
513
-
514
- menubar = Qt::MenuBar.new( self )
515
- menubar.insertItem( "&File", filemenu )
516
- menubar.insertItem( "&Images", picmenu )
517
- end
518
-
519
- def setup_window
520
- mainFrame = Qt::Widget.new( self )
521
-
522
- @widgets = {}
523
- labels = {}
524
- @widgets['title'] = Qt::LineEdit.new( mainFrame )
525
- labels['title'] = [0, Qt::Label.new( @widgets['title'], "Gallery title:", mainFrame )]
526
-
527
- @widgets['files'] = Qt::LineEdit.new( mainFrame )
528
- connect( @widgets['files'], SIGNAL('textChanged(const QString&)'), self, SLOT('init_image_list()') )
529
- labels['files'] = [1, Qt::Label.new( @widgets['files'], "File pattern:", mainFrame )]
530
-
531
- @widgets['layout'] = Qt::ComboBox.new( true, mainFrame )
532
- @widgets['layout'].setMaximumWidth( 200 )
533
- Webgen::Plugin.config[GalleryLayouters::DefaultGalleryLayouter].layouts.keys.each do |name|
534
- @widgets['layout'].insertItem( Qt::Pixmap.new( File.join( CorePlugins::Configuration.data_dir, 'gallery-creator', "#{name}.png" ) ), \
535
- name )
536
- end
537
- @widgets['layout'].listBox.setMinimumWidth( @widgets['layout'].listBox.maxItemWidth + 20 )
538
- labels['layout'] = [2, Qt::Label.new( @widgets['layout'], "Gallery layout:", mainFrame )]
539
-
540
- @widgets['imagesPerPage'] = Qt::SpinBox.new( 0, 1000, 1, mainFrame )
541
- labels['imagesPerPage'] = [3, Qt::Label.new( @widgets['imagesPerPage'], "Images per page:", mainFrame )]
542
-
543
- @widgets['galleryOrderInfo'] = Qt::SpinBox.new( 0, 1000, 1, mainFrame )
544
- labels['galleryOrderInfo'] = [4, Qt::Label.new( @widgets['galleryOrderInfo'], "Start <orderInfo> for gallery pages:", mainFrame )]
545
-
546
- @widgets['thumbnailSize'] = Qt::LineEdit.new( mainFrame )
547
- @widgets['thumbnailSize'].setValidator( Qt::RegExpValidator.new( Qt::RegExp.new( "\\d+x\\d+" ), mainFrame ) )
548
- labels['thumbnailSize'] = [5, Qt::Label.new( @widgets['thumbnailSize'], "Thumbnail size:", mainFrame )]
549
-
550
- @widgets['mainPageTemplate'] = Qt::LineEdit.new( mainFrame )
551
- labels['mainPageTemplate'] = [6, Qt::Label.new( @widgets['mainPageTemplate'], "Template for main page:", mainFrame )]
552
-
553
- @widgets['galleryPageTemplate'] = Qt::LineEdit.new( mainFrame )
554
- labels['galleryPageTemplate'] = [7, Qt::Label.new( @widgets['galleryPageTemplate'], "Template for gallery pages:", mainFrame )]
555
-
556
- @widgets['imagePageTemplate'] = Qt::LineEdit.new( mainFrame )
557
- labels['imagePageTemplate'] = [8, Qt::Label.new( @widgets['imagePageTemplate'], "Template for image pages:", mainFrame )]
558
-
559
- @widgets['mainPageInMenu'] = Qt::CheckBox.new( "Main page in menu?", mainFrame )
560
- labels['mainPageInMenu'] = [9, nil]
561
-
562
- @widgets['galleryPageInMenu'] = Qt::CheckBox.new( "Gallery pages in menu?", mainFrame )
563
- labels['galleryPageInMenu'] = [10, nil]
564
-
565
- @widgets['imagePageInMenu'] = Qt::CheckBox.new( "Image pages in menu?", mainFrame )
566
- labels['imagePageInMenu'] = [11, nil]
567
-
568
- layout = Qt::GridLayout.new( @widgets.length, 2 )
569
- layout.setSpacing( 5 )
570
- labels.each_with_index do |data, index|
571
- layout.addWidget( data[1][1], data[1][0], 0 ) if data[1][1]
572
- layout.addWidget( @widgets[data[0]], data[1][0], 1 )
573
- end
574
-
575
- leftLayout = Qt::VBoxLayout.new
576
- leftLayout.setSpacing( 5 )
577
- leftLayout.addLayout( layout )
578
- leftLayout.addStretch
579
-
580
- @widgets['mainPage'] = MetaDataTable.new( mainFrame, page_meta_items )
581
- @widgets['mainPage'].setColumnWidth( 0, 150 )
582
- @widgets['mainPage'].setColumnWidth( 1, 150 )
583
- @widgets['mainPage'].setMinimumWidth( 350 )
584
- @widgets['galleryPages'] = MetaDataTable.new( mainFrame, page_meta_items )
585
- @widgets['galleryPages'].setColumnWidth( 0, 150 )
586
- @widgets['galleryPages'].setColumnWidth( 1, 150 )
587
-
588
- rightLayout = Qt::VBoxLayout.new
589
- rightLayout.setSpacing( 5 )
590
- rightLayout.addWidget( Qt::Label.new( 'Meta information for main page:', mainFrame ) )
591
- rightLayout.addWidget( @widgets['mainPage'] )
592
- rightLayout.addWidget( Qt::Label.new( 'Meta information for gallery pages:', mainFrame ) )
593
- rightLayout.addWidget( @widgets['galleryPages'] )
594
-
595
- galLayout = Qt::HBoxLayout.new
596
- galLayout.setSpacing( 20 )
597
- galLayout.addLayout( leftLayout )
598
- galLayout.addLayout( rightLayout )
599
- galLayout.setStretchFactor( rightLayout, 1 )
600
-
601
-
602
- @image = ImageViewer.new( mainFrame )
603
- @image.setSizePolicy( Qt::SizePolicy::Expanding, Qt::SizePolicy::Expanding )
604
- @image.setMinimumSize( 320, 200 )
605
-
606
- @imageTitle = Qt::LineEdit.new( mainFrame )
607
- imageTitle = Qt::Label.new( @imageTitle, "Title:", mainFrame )
608
- @imageDescription = MyTextEdit.new( mainFrame )
609
- @imageDescription.setTextFormat( Qt::PlainText )
610
- imageDescription = Qt::Label.new( @imageDescription, "Description:", mainFrame )
611
- connect( @imageTitle, SIGNAL('returnPressed()'), @imageDescription, SLOT('setFocus()') )
612
- connect( @imageDescription, SIGNAL('myReturnPressed()'), self, SLOT('select_next_image()') )
613
- connect( @imageDescription, SIGNAL('myReturnPressed()'), @imageTitle, SLOT('setFocus()') )
614
-
615
- @imageList = ImageFileList.new( mainFrame, self )
616
- @imageList.setMaximumWidth( 300 )
617
- connect( @imageList, SIGNAL('highlighted(const QString &)'), self, SLOT('image_selected( const QString &)') )
618
- @picMetaTable = MetaDataTable.new( mainFrame, page_meta_items - ['title', 'description'], ['title', 'description'] )
619
- @picMetaTable.setColumnWidth( 0, 100 )
620
- @picMetaTable.setColumnWidth( 1, 100 )
621
- @picMetaTable.setMaximumWidth( 300 )
622
-
623
- imageLayout = Qt::GridLayout.new( 3, 3 )
624
- imageLayout.setSpacing( 6 )
625
- imageLayout.addWidget( @imageList, 0, 0 )
626
- imageLayout.addMultiCellWidget( @picMetaTable, 1, 2, 0, 0 )
627
- imageLayout.addMultiCellWidget( @image, 0, 0, 1, 2 )
628
- imageLayout.addWidget( imageTitle, 1, 1 )
629
- imageLayout.addWidget( @imageTitle, 1, 2 )
630
- imageLayout.addWidget( imageDescription, 2, 1, Qt::AlignTop )
631
- imageLayout.addWidget( @imageDescription, 2, 2 )
632
- imageLayout.setRowStretch( 0, 1 )
633
-
634
- mainLayout = Qt::VBoxLayout.new( mainFrame )
635
- mainLayout.setMargin( 10 )
636
- mainLayout.setSpacing( 20 )
637
- mainLayout.addLayout( galLayout )
638
- mainLayout.addLayout( imageLayout )
639
- mainLayout.setStretchFactor( imageLayout, 1 )
640
-
641
- setCentralWidget( mainFrame )
642
- end
643
-
644
- end
645
-
646
- Webgen::Plugin['Configuration'].init_all
647
-
648
- $app = Qt::Application.new( ARGV )
649
- mainWindow = GalleryWindow.new
650
- $app.setMainWidget( mainWindow )
651
- mainWindow.show
652
- mainWindow.open_file( ARGV[0] ) if ARGV.length > 0
653
- $app.exec
654
-