wrb 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +7 -0
  2. data/README +28 -0
  3. data/Rakefile +66 -0
  4. data/bin/wrb +41 -0
  5. data/bin/wrb.bat +6 -0
  6. data/ext/rwin/aatree.c +192 -0
  7. data/ext/rwin/aatree.h +55 -0
  8. data/ext/rwin/extconf.rb +47 -0
  9. data/ext/rwin/rw_api.c +2058 -0
  10. data/ext/rwin/rw_devices.c +215 -0
  11. data/ext/rwin/rw_gdiplus.h +278 -0
  12. data/ext/rwin/rw_graphics.c +1583 -0
  13. data/ext/rwin/rw_resources.c +1988 -0
  14. data/ext/rwin/rw_ubfuncs.c +281 -0
  15. data/ext/rwin/rw_windows.c +1936 -0
  16. data/ext/rwin/rwin.c +451 -0
  17. data/ext/rwin/rwin.h +442 -0
  18. data/lib/rwin.rb +820 -0
  19. data/lib/wrb.rb +20 -0
  20. data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
  21. data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
  22. data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
  23. data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
  24. data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
  25. data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
  26. data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
  27. data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
  28. data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
  29. data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
  30. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
  31. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
  32. data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
  33. data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
  34. data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
  35. data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
  36. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
  37. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
  38. data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
  39. data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
  40. data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
  41. data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
  42. data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
  43. data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
  44. data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
  45. data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
  46. data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
  47. data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
  48. data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
  49. data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
  50. data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
  51. data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
  52. data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
  53. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
  54. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
  55. data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
  56. data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
  57. data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
  58. data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
  59. data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
  60. data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
  61. data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
  62. data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
  63. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
  64. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
  65. data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
  66. data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
  67. data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
  68. data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
  69. data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
  70. data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
  71. data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
  72. data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
  73. data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
  74. data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
  75. data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
  76. data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
  77. data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
  78. data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
  79. data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
  80. data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
  81. data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
  82. data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
  83. data/lib/wrb/base.rb +1294 -0
  84. data/lib/wrb/combocommon.rb +77 -0
  85. data/lib/wrb/commctrlconst.rb +139 -0
  86. data/lib/wrb/commdlg.rb +77 -0
  87. data/lib/wrb/components/animate.rb +114 -0
  88. data/lib/wrb/components/bitmap.rb +116 -0
  89. data/lib/wrb/components/button.rb +134 -0
  90. data/lib/wrb/components/canvas.rb +266 -0
  91. data/lib/wrb/components/checkbox.rb +118 -0
  92. data/lib/wrb/components/choosecolordlg.rb +87 -0
  93. data/lib/wrb/components/choosefontdlg.rb +142 -0
  94. data/lib/wrb/components/clipboard.rb +174 -0
  95. data/lib/wrb/components/combobox.rb +282 -0
  96. data/lib/wrb/components/comboboxex.rb +574 -0
  97. data/lib/wrb/components/cursor.rb +91 -0
  98. data/lib/wrb/components/datetimepicker.rb +197 -0
  99. data/lib/wrb/components/ddeclient.rb +180 -0
  100. data/lib/wrb/components/ddeserver.rb +131 -0
  101. data/lib/wrb/components/dialog.rb +228 -0
  102. data/lib/wrb/components/edit.rb +412 -0
  103. data/lib/wrb/components/font.rb +35 -0
  104. data/lib/wrb/components/form.rb +65 -0
  105. data/lib/wrb/components/groupbox.rb +122 -0
  106. data/lib/wrb/components/header.rb +479 -0
  107. data/lib/wrb/components/hotkeyctrl.rb +72 -0
  108. data/lib/wrb/components/icon.rb +109 -0
  109. data/lib/wrb/components/imagelist.rb +396 -0
  110. data/lib/wrb/components/inifile.rb +97 -0
  111. data/lib/wrb/components/listbox.rb +149 -0
  112. data/lib/wrb/components/listview.rb +1467 -0
  113. data/lib/wrb/components/menu.rb +592 -0
  114. data/lib/wrb/components/menubar.rb +84 -0
  115. data/lib/wrb/components/monthcalender.rb +164 -0
  116. data/lib/wrb/components/openfilenamedlg.rb +147 -0
  117. data/lib/wrb/components/pager.rb +199 -0
  118. data/lib/wrb/components/panel.rb +103 -0
  119. data/lib/wrb/components/picture.rb +55 -0
  120. data/lib/wrb/components/printdlg.rb +148 -0
  121. data/lib/wrb/components/printdlgex.rb +117 -0
  122. data/lib/wrb/components/printer.rb +97 -0
  123. data/lib/wrb/components/progressbar.rb +140 -0
  124. data/lib/wrb/components/radiobutton.rb +49 -0
  125. data/lib/wrb/components/rebar.rb +830 -0
  126. data/lib/wrb/components/registry.rb +408 -0
  127. data/lib/wrb/components/richedit.rb +1181 -0
  128. data/lib/wrb/components/savefilenamedlg.rb +27 -0
  129. data/lib/wrb/components/scintilla.rb +1298 -0
  130. data/lib/wrb/components/scrollbar.rb +239 -0
  131. data/lib/wrb/components/splitter.rb +494 -0
  132. data/lib/wrb/components/static.rb +198 -0
  133. data/lib/wrb/components/statusbar.rb +490 -0
  134. data/lib/wrb/components/tabctrl.rb +686 -0
  135. data/lib/wrb/components/timer.rb +117 -0
  136. data/lib/wrb/components/toolbar.rb +1107 -0
  137. data/lib/wrb/components/tooltip.rb +651 -0
  138. data/lib/wrb/components/trackbar.rb +298 -0
  139. data/lib/wrb/components/treeview.rb +845 -0
  140. data/lib/wrb/components/updown.rb +198 -0
  141. data/lib/wrb/ddeml.rb +241 -0
  142. data/lib/wrb/documents/animate.html +46 -0
  143. data/lib/wrb/documents/bitmap.html +69 -0
  144. data/lib/wrb/documents/button.html +78 -0
  145. data/lib/wrb/documents/canvas.html +137 -0
  146. data/lib/wrb/documents/checkbox.html +77 -0
  147. data/lib/wrb/documents/choosecolordlg.html +29 -0
  148. data/lib/wrb/documents/choosefontdlg.html +31 -0
  149. data/lib/wrb/documents/clipboard.html +31 -0
  150. data/lib/wrb/documents/combobox.html +117 -0
  151. data/lib/wrb/documents/comboboxex.html +139 -0
  152. data/lib/wrb/documents/control.html +53 -0
  153. data/lib/wrb/documents/cursor.html +45 -0
  154. data/lib/wrb/documents/datetimepicker.html +70 -0
  155. data/lib/wrb/documents/ddeclient.html +33 -0
  156. data/lib/wrb/documents/ddeserver.html +26 -0
  157. data/lib/wrb/documents/dialog.html +78 -0
  158. data/lib/wrb/documents/edit.html +169 -0
  159. data/lib/wrb/documents/empty.html +11 -0
  160. data/lib/wrb/documents/favicon.png +0 -0
  161. data/lib/wrb/documents/font.html +38 -0
  162. data/lib/wrb/documents/form.html +63 -0
  163. data/lib/wrb/documents/groupbox.html +57 -0
  164. data/lib/wrb/documents/header.html +85 -0
  165. data/lib/wrb/documents/hotkeyctrl.html +42 -0
  166. data/lib/wrb/documents/icon.html +45 -0
  167. data/lib/wrb/documents/imagelist.html +101 -0
  168. data/lib/wrb/documents/images/button.png +0 -0
  169. data/lib/wrb/documents/images/checkbox.png +0 -0
  170. data/lib/wrb/documents/images/combobox.png +0 -0
  171. data/lib/wrb/documents/images/comboboxex.png +0 -0
  172. data/lib/wrb/documents/images/datetimepicker.png +0 -0
  173. data/lib/wrb/documents/images/edit.png +0 -0
  174. data/lib/wrb/documents/images/groupbox.png +0 -0
  175. data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
  176. data/lib/wrb/documents/images/listbox.png +0 -0
  177. data/lib/wrb/documents/images/listview.png +0 -0
  178. data/lib/wrb/documents/images/menu.png +0 -0
  179. data/lib/wrb/documents/images/menubar.png +0 -0
  180. data/lib/wrb/documents/images/monthcalender.png +0 -0
  181. data/lib/wrb/documents/images/progressbar.png +0 -0
  182. data/lib/wrb/documents/images/radiobutton.png +0 -0
  183. data/lib/wrb/documents/images/rebar.png +0 -0
  184. data/lib/wrb/documents/images/richedit.png +0 -0
  185. data/lib/wrb/documents/images/splitter.png +0 -0
  186. data/lib/wrb/documents/images/static.png +0 -0
  187. data/lib/wrb/documents/images/statusbar.png +0 -0
  188. data/lib/wrb/documents/images/tabctrl.png +0 -0
  189. data/lib/wrb/documents/images/toolbar.png +0 -0
  190. data/lib/wrb/documents/images/tooltip.png +0 -0
  191. data/lib/wrb/documents/images/trackbar.png +0 -0
  192. data/lib/wrb/documents/images/treeview.png +0 -0
  193. data/lib/wrb/documents/images/updown.png +0 -0
  194. data/lib/wrb/documents/index.html +155 -0
  195. data/lib/wrb/documents/inifile.html +36 -0
  196. data/lib/wrb/documents/license.txt +22 -0
  197. data/lib/wrb/documents/listbox.html +96 -0
  198. data/lib/wrb/documents/listview.html +277 -0
  199. data/lib/wrb/documents/make_doc.rb +596 -0
  200. data/lib/wrb/documents/menu.html +144 -0
  201. data/lib/wrb/documents/menubar.html +54 -0
  202. data/lib/wrb/documents/monthcalender.html +48 -0
  203. data/lib/wrb/documents/openfilenamedlg.html +36 -0
  204. data/lib/wrb/documents/pager.html +63 -0
  205. data/lib/wrb/documents/panel.html +32 -0
  206. data/lib/wrb/documents/picture.html +48 -0
  207. data/lib/wrb/documents/printdlg.html +35 -0
  208. data/lib/wrb/documents/printdlgex.html +35 -0
  209. data/lib/wrb/documents/printer.html +40 -0
  210. data/lib/wrb/documents/progressbar.html +69 -0
  211. data/lib/wrb/documents/radiobutton.html +51 -0
  212. data/lib/wrb/documents/rebar.html +143 -0
  213. data/lib/wrb/documents/registry.html +36 -0
  214. data/lib/wrb/documents/richedit.html +232 -0
  215. data/lib/wrb/documents/samples/editimg.bmp +0 -0
  216. data/lib/wrb/documents/samples/editimg.iml +0 -0
  217. data/lib/wrb/documents/samples/fileimg.bmp +0 -0
  218. data/lib/wrb/documents/samples/fileimg.iml +0 -0
  219. data/lib/wrb/documents/samples/sample_button.rb +21 -0
  220. data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
  221. data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
  222. data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
  223. data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
  224. data/lib/wrb/documents/samples/sample_edit.rb +25 -0
  225. data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
  226. data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
  227. data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
  228. data/lib/wrb/documents/samples/sample_listview.rb +32 -0
  229. data/lib/wrb/documents/samples/sample_menu.rb +21 -0
  230. data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
  231. data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
  232. data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
  233. data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
  234. data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
  235. data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
  236. data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
  237. data/lib/wrb/documents/samples/sample_static.rb +15 -0
  238. data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
  239. data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
  240. data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
  241. data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
  242. data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
  243. data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
  244. data/lib/wrb/documents/samples/sample_updown.rb +18 -0
  245. data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
  246. data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
  247. data/lib/wrb/documents/samples/samplemg16.png +0 -0
  248. data/lib/wrb/documents/samples/samplemg32.png +0 -0
  249. data/lib/wrb/documents/samples/wrb.ico +0 -0
  250. data/lib/wrb/documents/savefilenamedlg.html +19 -0
  251. data/lib/wrb/documents/scrollbar.html +60 -0
  252. data/lib/wrb/documents/splitter.html +96 -0
  253. data/lib/wrb/documents/static.html +84 -0
  254. data/lib/wrb/documents/statusbar.html +110 -0
  255. data/lib/wrb/documents/tabctrl.html +151 -0
  256. data/lib/wrb/documents/timer.html +43 -0
  257. data/lib/wrb/documents/toolbar.html +181 -0
  258. data/lib/wrb/documents/tooltip.html +131 -0
  259. data/lib/wrb/documents/trackbar.html +107 -0
  260. data/lib/wrb/documents/treeview.html +210 -0
  261. data/lib/wrb/documents/updown.html +85 -0
  262. data/lib/wrb/documents/wincontrol.html +258 -0
  263. data/lib/wrb/documents/window.html +499 -0
  264. data/lib/wrb/documents/wrb.css +228 -0
  265. data/lib/wrb/gmem.rb +26 -0
  266. data/lib/wrb/imecommon.rb +59 -0
  267. data/lib/wrb/listcommon.rb +185 -0
  268. data/lib/wrb/lzss.rb +126 -0
  269. data/lib/wrb/scrollinfo.rb +142 -0
  270. data/lib/wrb/toplevelcommon.rb +634 -0
  271. metadata +315 -0
@@ -0,0 +1,157 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Listview.extend ModFormDesigner
4
+ class Listview
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [128, 128]
7
+ FDConfig[:default_caption] = ""
8
+ FDConfig[:altanate_mask] = [RC::LVS_TYPEMASK]
9
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t'], ['normalimagelist', 'n'], ['smallimagelist', 'n'], ['textcolor', 'h', 0], ['bkcolor', 'h', 0xffffff], ['tooltip', 's'], ['gridlines', 't'], ['fullrowselect','t']
10
+ FDConfig[:attr_tabs] = 'Attributes', 'Styles', 'Events', 'Items', 'Columns'
11
+
12
+ def __fd_set_lvitem(lv, ilist)
13
+ lv.viewmode = :reportview
14
+ lv.imagelist = ilist
15
+ lv.style &= ~LVS_NOCOLUMNHEADER
16
+ end
17
+
18
+ def __fd_update_lv(lv)
19
+ lv.columns = ['ItemText', 208], ['Img', 40]
20
+ lv.clear
21
+ each{|i|
22
+ if columns.count > 0
23
+ s = (0..columns.count-1).inject([]){|a, j| a<<i[j]}.join('\\t').sub(/(:?\\t)+$/, '')
24
+ lv << s + "\t#{i.image>=0 ? i.image : ''}"
25
+ else
26
+ lv << i.text + "\t#{i.image>=0 ? i.image : ''}"
27
+ end
28
+ }
29
+ end
30
+
31
+ def __fd_update_lv_alt(lv)
32
+ lv.columns = ['ColumnText', 136], ['Width', 44, 1], ['Fmt', 40, 2], ['Img', 40]
33
+ lv.clear
34
+ columns.each{|col|
35
+ lv << "#{col.text}\t#{col.width}\t#{col.format} "
36
+ }
37
+ end
38
+
39
+ def __fd_edit_item(lv, idx, sbitm, ed)
40
+ if lv.columns[0].text=='ItemText'
41
+ case sbitm
42
+ when 0
43
+ self[idx] = ed.text.gsub(/\\t/, "\t") unless ed.text.empty?
44
+ when 1
45
+ self[idx].image = ed.text.empty? ? -1 : ed.text.to_i
46
+ else
47
+ ed.hide
48
+ end
49
+ __fd_update_lv(lv)
50
+ else
51
+ case sbitm
52
+ when 0
53
+ columns[idx].text = ed.text unless ed.text.empty?
54
+ when 1
55
+ columns[idx].width = ed.text.to_i unless ed.text.empty?
56
+ when 2
57
+ columns[idx].format = ed.text.to_i unless ed.text.empty?
58
+ when 3
59
+ columns[idx].image = ed.text.to_i unless ed.text.empty?
60
+ else
61
+ ed.hide
62
+ end
63
+ __fd_update_lv_alt(lv)
64
+ end
65
+ end
66
+
67
+ def __fd_on_lv_rclick(lv, idx)
68
+ if lv.columns[0].text=='ItemText'
69
+ [:additem, "Add Item", :sep, :deleteitem, "Delete"]
70
+ else
71
+ [:additem, "Add Column", :sep, :deleteitem, "Delete"]
72
+ end
73
+ end
74
+
75
+ def __fd_on_additem(lv, idx, mnu, id)
76
+ if lv.columns[0].text=='ItemText'
77
+ self << "item#{lv.count}"
78
+ __fd_update_lv(lv)
79
+ else
80
+ columns << ["column#{columns.count}", 80]
81
+ __fd_update_lv_alt(lv)
82
+ end
83
+ end
84
+
85
+ def __fd_on_deleteitem(lv, idx)
86
+ return if idx < 0
87
+ if lv.columns[0].text=='ItemText'
88
+ self[idx].delete
89
+ else
90
+ columns[idx].delete
91
+ end
92
+ __fd_update_lv(lv)
93
+ end
94
+
95
+ def __fd_on_delete_this()
96
+ return unless lns = @_toplevelwin.__fd_src[:lines]
97
+ __fd_delete_items_src(columns, lns)
98
+ end
99
+
100
+ def __fd_output_items(lns, curln, indent)
101
+ ar = []
102
+ pr = __fd_get_parents_str2
103
+ if columns.count > 0
104
+ # columns.each{|i|
105
+ # if i.image
106
+ # ar << "#{pr}.columns << [\"#{i.text}\", #{i.width}, #{i.format}, #{i.image}]"
107
+ # else
108
+ # ar << "#{pr}.columns << [\"#{i.text}\", #{i.width}, #{i.format}]"
109
+ # end
110
+ # }
111
+ aa = []
112
+ columns.each{|i|
113
+ if i.image
114
+ aa << "[\"#{i.text}\", #{i.width}, #{i.format}, #{i.image}]"
115
+ else
116
+ aa << "[\"#{i.text}\", #{i.width}, #{i.format}]"
117
+ end
118
+ }
119
+ ar << "#{pr}.columns << [#{aa.join(', ')}]"
120
+ end
121
+ if count > 0
122
+ each{|i|
123
+ ss = (0..columns.count-1).inject([]){|ar, j| ar<<i[j]}.join('\t').sub(/\\t+$/, '')
124
+ ar << pr + " << " + (i.image>=0 ? "[\"#{ss}\", #{i.image}]" : "\"#{ss}\"")
125
+ }
126
+ end
127
+ __fd_set_items_srcs(lns, curln, indent, ar)
128
+ end
129
+
130
+ def __fd_item_loaded(item, asrc)
131
+ extend ModFDItemsSrcLine unless @__fd_items_srcs
132
+ @__fd_items_srcs << asrc
133
+ end
134
+
135
+ # def __fd_output_items__(lns, curln, indent)
136
+ # if columns.count > 0
137
+ # a = []
138
+ # columns.each{|i|
139
+ # a << "[\"#{i.text}\", #{i.width}, #{i.format}" + (i.image ? ", #{i.image}]" : "]")
140
+ # }
141
+ # s = __fd_get_parents_str2+".columns << [#{a.join(', ')}]"
142
+ # __fd_set_items_src(columns, lns, curln+=1, indent, s)
143
+ # end
144
+ # if count > 0
145
+ # a = []
146
+ # each{|i|
147
+ # ss = (0..columns.count-1).inject([]){|ar, j| ar<<i[j]}.join('\t').sub(/\\t+$/, '')
148
+ # a << (i.image>=0 ? "[\"#{ss}\", #{i.image}]" : "\"#{ss}\"")
149
+ # }
150
+ # s = __fd_get_parents_str2 + " << [#{a.join(', ')}]"
151
+ # __fd_set_items_src(self, lns, curln+=1, indent, s)
152
+ # end
153
+ # curln
154
+ # end
155
+
156
+ end
157
+ end
@@ -0,0 +1,198 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Menu.extend ModFormDesigner
4
+ class Menu
5
+ FDConfig[:classify] = :resources
6
+ FDConfig[:attr_tabs] = ['Attributes', 'Items']
7
+ FDConfig[:attributes] = [['imagelist', 'n']]
8
+
9
+ def __fd_get_serial_name(lv, bsnm)
10
+ ar = []; suffix = 1
11
+ lv.each{|i| ar << i[0] if i[0].match(/^#{bsnm}(\d+)$/)}
12
+ while ar.index(bsnm + suffix.to_s)
13
+ suffix += 1
14
+ end
15
+ bsnm + suffix.to_s
16
+ end
17
+
18
+ def __fd_update_lv1(lv, mn, indent)
19
+ return unless mn
20
+ mn.count.times{|i|
21
+ mi = mn[i]
22
+ if mi.is_a?(Menu)
23
+ lv << [mi.name.to_s+"\t"+mi.caption+"\t"+mi.image.to_s, 0, indent, mi]
24
+ __fd_update_lv1(lv, mi, indent+1)
25
+ else
26
+ if mn[i].gettype == Menu::MFT_SEPARATOR
27
+ lv << ['(sep)', nil, indent, mi]
28
+ else
29
+ str = mi.caption.sub(/\t/, '\\t')
30
+ lv << ["#{mn._owner.__fd_idcmd_hash[mi.idcmd]}\t#{str}\t#{mi.image}",nil,indent,mi]
31
+ end
32
+ end
33
+ }
34
+ end
35
+ def __fd_update_lv(lv)
36
+ lv.clear
37
+ __fd_update_lv1(lv, self, 0)
38
+ end
39
+
40
+ def __fd_set_lvitem(lv, ilist)
41
+ lv.viewmode = :reportview
42
+ lv.imagelist = ilist
43
+ lv.style &= ~LVS_NOCOLUMNHEADER
44
+ lv.columns = ['Name',116], ['Caption', 116], ['Img', 32]
45
+ __fd_update_lv(lv)
46
+ end
47
+
48
+ def __fd_on_lv_rclick(lv, idx)
49
+ if lv[idx].data.is_a?(Menu)
50
+ [:additem_under, "Add Item under", :addnode_under, "Add Menu under",:additem, "Add Item",
51
+ :addnode, "Add Menu", :sep, :deleteitem, "Delete" ]
52
+ else
53
+ [:additem, "Add Item", :addnode, "Add Menu", :sep, :deleteitem, "Delete"]
54
+ end
55
+ end
56
+
57
+ def __fd_on_additem(lv, idx, *)
58
+ nm = __fd_get_serial_name(lv, 'item')
59
+ if item = lv[idx].data
60
+ item.parent.insert(item.index+1, [nm.intern, nm.capitalize])
61
+ else
62
+ self << [nm.intern, nm.capitalize]
63
+ end
64
+ __fd_update_lv(lv)
65
+ end
66
+
67
+ def __fd_on_addnode(lv, idx)
68
+ nm = __fd_get_serial_name(lv, 'menu')
69
+ if item = lv[idx].data
70
+ item.parent.insert(item.index+1, Menu[nm.intern, nm.capitalize])
71
+ else
72
+ self << Menu[nm.intern, nm.capitalize]
73
+ end
74
+ __fd_update_lv(lv)
75
+ end
76
+
77
+ def __fd_on_additem_under(lv, idx)
78
+ nm = __fd_get_serial_name(lv, 'item')
79
+ item = lv[idx].data
80
+ item.insert(0, [nm.intern, nm.capitalize]) if item.is_a?(Menu)
81
+ __fd_update_lv(lv)
82
+ end
83
+
84
+ def __fd_on_addnode_under(lv, idx)
85
+ nm = __fd_get_serial_name(lv, 'menu')
86
+ item = lv[idx].data
87
+ item.insert(0, Menu[nm.intern, nm.capitalize]) if item.is_a?(Menu)
88
+ __fd_update_lv(lv)
89
+ end
90
+
91
+ def __fd_on_delete_this()
92
+ each{|i| i.__fd_on_delete_this if i.is_a?(Menu)} #if respond_to?(:each)
93
+ return unless lns=@_owner.__fd_src[:lines] ; dpp @__fd_src, @__fd_items_src
94
+ return if !@__fd_src && !@__fd_items_src
95
+ lsrc = @__fd_src ? @__fd_src[2] : @__fd_items_src[2]
96
+ lns.delete(lsrc)
97
+ end
98
+
99
+ def __fd_on_deleteitem(lv, idx)
100
+ return unless item=lv[idx].data
101
+ item.__fd_on_delete_this() if item.is_a?(Menu)
102
+ item.parent.delete(item.index)
103
+ __fd_update_lv(lv)
104
+ end
105
+
106
+ def __fd_edit_item(lv, idx, subitem, ed)
107
+ str = lv[idx].text
108
+ data = lv[idx].data
109
+ stbr = lv.get_toplevel_win._stbr1
110
+ case subitem
111
+ when 0 # Name
112
+ return stbr.caption = "This item cannot edit." unless data
113
+ if data.is_a?(Item) && (str=="(sep)" || str==":sep")
114
+ data.settype(MFT_SEPARATOR)
115
+ return
116
+ end
117
+ unless str =~ /^[a-z][a-zA-Z0-9_]*$/
118
+ return stbr.caption = "\"#{str}\" is not allowed."
119
+ end
120
+ if data.is_a?(Menu)
121
+ data.name = str.intern
122
+ else
123
+ @_owner.__fd_idcmd_hash[data.idcmd] = str
124
+ end
125
+ __fd_update_lv(lv)
126
+ when 1 # Caption
127
+ oldstr = lv[idx][1]
128
+ begin
129
+ data.caption = ed.caption.sub(/\\t/, "\t")
130
+ stbr.caption = ""
131
+ rescue => err
132
+ data.caption = oldstr
133
+ lv[idx][1] = oldstr
134
+ stbr.caption = err.to_s
135
+ end
136
+ when 2 # Img
137
+ if data.is_a?(Menu::Item) || data.is_a?(Menu)
138
+ data.image = ed.caption.empty? ? nil : (ed.caption.to_i rescue nil)
139
+ end
140
+ end
141
+ end
142
+
143
+ def __fd_get_menu_items(lns, curln, indent, ar, sadd)
144
+ if ar.empty?
145
+ sadd = "_" + name.to_s
146
+ sklass = self.class.to_s.split('::').last
147
+ s = sklass + "[:#{name}, "
148
+ a = caption ? ["\"#{caption}\""] : []
149
+ a << "_#{imagelist.name}" if imagelist
150
+ else
151
+ sadd += "._#{name}"
152
+ s = sadd + " << ["
153
+ a = []
154
+ end
155
+ ar << s
156
+ each{|i|
157
+ if i.is_a?(Menu)
158
+ a << "Menu[:#{i.name}, \"#{i.caption}\"" + (i.image ? ", #{i.image}]" : "]")
159
+ i.__fd_get_menu_items(lns, curln, indent, ar, sadd) if i.count > 0
160
+ else
161
+ if i.gettype == RC::MFT_SEPARATOR
162
+ a << ":sep"
163
+ else
164
+ ss = "[:#{ @_owner.__fd_idcmd_hash[i.idcmd]}, \"#{i.caption.sub(/\t/, '\\t')}\""
165
+ ss << (i.image ? ", #{i.image}]" : "]")
166
+ a << ss
167
+ end
168
+ end
169
+ }
170
+ s << a.join(", ") + "]"
171
+ end
172
+
173
+ def fd_menu2str(lns, curln, indent)
174
+ ar = []
175
+ __fd_get_menu_items(lns, curln, indent, ar, "")
176
+ ar
177
+ end
178
+
179
+ def __fd_item_loaded(item, asrc)
180
+ extend ModFDItemsSrcLine unless @__fd_items_srcs
181
+ @__fd_items_srcs << asrc
182
+ end
183
+
184
+ def __fd_to_str(lns, curln, indent)
185
+ ar = fd_menu2str(lns, curln, indent)
186
+ s = ar.shift
187
+ curln = __fd_update_src(lns, curln, indent, s)
188
+ __fd_set_items_srcs(lns, curln, indent, ar)
189
+ end
190
+
191
+ def __fd_modify_src(lns, curln, indent)
192
+ ar = fd_menu2str(lns, curln, indent)
193
+ s = ar.shift
194
+ curln = __fd_update_src(lns, curln, indent, s)
195
+ __fd_set_items_srcs(lns, curln, indent, ar)
196
+ end
197
+ end
198
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+
3
+ module WR
4
+ Menubar.extend ModFormDesigner
5
+ require_relative './Menu.rb' unless defined? Menu::FDConfig
6
+ class Menubar
7
+ Menu::FDConfig.each{|k, v| Menubar::FDConfig[k] ||= v }
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Monthcalender.extend ModFormDesigner
4
+ class Monthcalender
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [200, 164]
7
+ FDConfig[:attributes] = ['position', 'ii'], ['size', 'ii']
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Panel.extend ModFormDesigner
4
+ class Panel
5
+ FDConfig[:default_size] = [128, 128]
6
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t'], ['inheritfont', 'si,t'], ['sendto', 'n']
7
+ FDConfig[:have_controls] = true
8
+ FDConfig[:sendto_get] = lambda{|ctl, atr|
9
+ atr.respond_to?(:name) ? atr.name : ctl._toplevelwin.class.to_s.split('::').last
10
+ }
11
+ FDConfig[:sendto_set] = lambda{|ctl, atr|
12
+ def ctl.sendto=(to) # Kill check sequence.
13
+ @_sendto = to
14
+ end
15
+ if atr[0] == ctl._toplevelwin.class.to_s.split('::').last
16
+ ctl.sendto = ctl._toplevelwin
17
+ else
18
+ ctl.sendto = ctl._toplevelwin.instance_eval("_"+atr[0])
19
+ end
20
+ }
21
+ FDConfig[:sendto_out] = lambda{|ctl, atr|
22
+ if to=ctl.sendto
23
+ to==ctl._toplevelwin ? "self" : "_" + to.name.to_s
24
+ else
25
+ nil
26
+ end
27
+ }
28
+
29
+ end
30
+ end
@@ -0,0 +1,10 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Progressbar.extend ModFormDesigner
4
+ class Progressbar
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [80, 16]
7
+ FDConfig[:default_name] = 'progress'
8
+ FDConfig[:attributes] = ['position', 'ii'], ['size', 'ii'], ['range', 'ii', [0, 100]], ['step', 'i', 10], ['pos', 'i', 0]
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Radiobutton.extend ModFormDesigner
4
+ class Radiobutton
5
+ FDConfig[:default_size] = [100, 24]
6
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t']
7
+ FDConfig[:styles] = [:lefttext, :notify]
8
+ FDConfig[:altanate_mask] = [RC::BS_TYPEMASK]
9
+ def __fd_style_mask_cond()
10
+ @_owner.is_a?(Groupbox) ? WS_GROUP : 0
11
+ end
12
+ end
13
+ end