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,162 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Rebar.extend ModFormDesigner
4
+ class Rebar
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t'], ['imagelist', 'n']
7
+ FDConfig[:attr_tabs] = 'Attributes', 'Styles', 'Events', 'Bands'
8
+
9
+ def __fd_child_recreated(child)
10
+ id = child.__associated_band_id
11
+ bandinfo = REBARBANDINFO[REBARBANDINFO::Size, RC::RBBIM_CHILD]
12
+ bandinfo.hwndChild = child._hwnd
13
+ idx = SendMessage(RB_IDTOINDEX, id, 0)
14
+ SendMessage(RB_SETBANDINFO, idx, bandinfo)
15
+ end
16
+
17
+ def __fd_init_this_ctrl(option=nil)
18
+ self << [:band1, nil, "Band1"]
19
+ end
20
+
21
+ def __fd_update_lv(lv)
22
+ lv.clear
23
+ each{|bd|
24
+ s = sprintf("%s\t%d\t%s\t%d\t%#x", bd.name.to_s, bd.iimage, bd.text, bd.size, bd.style)
25
+ lv << [s, nil, nil, bd]
26
+ }
27
+ end
28
+
29
+ def __fd_set_lvitem(lv, ilist)
30
+ lv.viewmode = :reportview
31
+ lv.imagelist = ilist
32
+ lv.style &= ~LVS_NOCOLUMNHEADER
33
+ lv.columns = ['Name', 80], ['Img', 40], ['Text', 64], ['Size', 40], ['Style', 40]
34
+ end
35
+
36
+ def __fd_edit_item(lv, idx, subitem, ed)
37
+ txt = ed.text
38
+ begin
39
+ case subitem
40
+ when 0
41
+ self[idx].name = txt.intern
42
+ when 1
43
+ self[idx].iimage = txt.empty? ? nil : txt.to_i
44
+ when 2
45
+ self[idx].text = txt.empty? ? nil : txt.to_s
46
+ when 3
47
+ self[idx].size = txt.empty? ? 0 : txt.to_i
48
+ (cw=self[idx].childwin) && cw.w = self[idx].size
49
+ when 4
50
+ case txt
51
+ when /^0[xX]/
52
+ val = txt.to_i(16)
53
+ when /[0-9]+/
54
+ val = txt.to_i
55
+ else
56
+ val = 0
57
+ txt.split(',').each{|i| val |= RbbStyles[i.strip.intern].to_i}
58
+ end
59
+ self[idx].style = val
60
+ end
61
+ rescue => err
62
+ $fd_main_frm.MessageBox "#{err}", "FormDesigner", 0x10
63
+ end
64
+ __fd_update_lv(lv)
65
+ end
66
+
67
+ def __fd_on_lv_rclick(lv, idx)
68
+ [:additem, "Add", :sep, :deleteitem, "Delete"]
69
+ end
70
+
71
+ def __fd_on_additem(lv, idx, *)
72
+ sname = get_toplevel_win.suffixed_name('band1')
73
+ self << [sname.intern, nil, sname.to_s.capitalize]
74
+ __fd_update_lv(lv)
75
+ end
76
+
77
+ def __fd_on_deleteitem(lv, idx)
78
+ ct = controls.find{|i| i.__associated_band_id == self[idx].idcmd}
79
+ if ct
80
+ if ct.respond_to?(:__fd_items_src)
81
+ frm = ct.get_toplevel_win
82
+ lns = frm.__fd_src[:lines]
83
+ col, len, lsrc = ct.__fd_items_src
84
+ lns.delete_if{|i| i.__id__ == lsrc.__id__}
85
+ end
86
+ ct.delete
87
+ end
88
+ self[idx].delete
89
+ __fd_update_lv(lv)
90
+ end
91
+
92
+ def __fd_add_ctrl(x, y, ct)
93
+ idx = hittest(x-self.x, y-self.y)
94
+ if ct.is_a?(Toolbar)
95
+ ct.style |= CCS_NORESIZE | CCS_NODIVIDER
96
+ end
97
+ self[idx].size = ct.w
98
+ self[idx].idealsize = ct.w
99
+ self[idx].childwin = ct
100
+ end
101
+
102
+ def __fd_output_items(lns, curln, indent)
103
+ ar = []
104
+ ps = __fd_get_parents_str2
105
+ each{|b|
106
+ if cw=b.childwin #;dpp b.size, b.idealsize
107
+ cw.w = b.size
108
+ _x = cw.x
109
+ _y = cw.y
110
+ cw.x = cw.y = 0
111
+ ar << sprintf("#{ps} << [%p, %p, %p, %p, %#x, %s]", b.name, b.iimage,
112
+ b.text.empty? ? nil : b.text, b.size, b.style, cw.__fd_to_str_core(nil))
113
+ cw.x = _x
114
+ cw.y = _y
115
+ else
116
+ ar << sprintf("#{ps} << [%p, %p, %p, %p, %#x]", b.name, b.iimage,
117
+ b.text.empty? ? nil : b.text, b.size, b.style)
118
+ end
119
+ }
120
+
121
+ curln = __fd_set_items_srcs(lns, curln, indent, ar)
122
+ controls.each{|i|
123
+ curln = i.__fd_output_items(lns, curln, indent) if i.respond_to?(:__fd_output_items)
124
+ }
125
+ curln
126
+ end
127
+
128
+ def __fd_item_loaded(item, asrc) #dpp @__fd_items_srcs #, controls
129
+ extend ModFDItemsSrcLine unless @__fd_items_srcs
130
+ @__fd_items_srcs << asrc
131
+ controls.each{|i| #; dpp i.event_registered?(WM_DESTROY, '__fd_destroy')
132
+ next if i.event_registered?(WM_DESTROY, '__fd_destroy')
133
+ i.extend(ModControlHook)
134
+ # id = i.__associated_band_id
135
+ # band = _band_id2ref(id)
136
+ }
137
+ end
138
+
139
+ # def __fd_output_items__(lns, curln, indent)
140
+ # ar = []
141
+ # each{|b|
142
+ # if cw=b.childwin
143
+ # ar << sprintf("[%p, %p, %p, %#x, %s]", b.name, b.iimage,
144
+ # b.text.empty? ? nil : b.text, b.style, cw.__fd_to_str_core(nil))
145
+ # else
146
+ # ar << sprintf("[%p, %p, %p, %#x]", b.name, b.iimage,
147
+ # b.text.empty? ? nil : b.text, b.style)
148
+ # end
149
+ # }
150
+ # if ar.empty?
151
+ # __fd_delete_items_src(self, lns)
152
+ # else
153
+ # s = __fd_get_parents_str2 + " << [#{ar.join(', ')}]"
154
+ # __fd_set_items_src(self, lns, curln+=1, indent, s)
155
+ # end
156
+ # controls.each{|i|
157
+ # curln = i.__fd_output_items(lns, curln, indent) if i.respond_to?(:__fd_output_items)
158
+ # }
159
+ # curln
160
+ # end
161
+ end
162
+ end
@@ -0,0 +1,66 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Splitter.extend ModFormDesigner
4
+ class Splitter
5
+ FDConfig[:default_size] = [6, 6]
6
+ FDConfig[:attributes] = ['position', 'ii'], ['margin', 'iiii,t'], ['direction', 'm', :vert], ['face', 'm', :vert], ['thickness', 'i'], ['limit', 'ii', [0, 0]]
7
+ FDConfig[:attr_tabs] = 'Attributes', 'Styles', 'Events', 'Panes'
8
+
9
+ def __fd_update_lv(lv)
10
+ lv.clear
11
+ lv << (direction==:horiz ? "Upper" : "Left")
12
+ lv.last.data = 0
13
+ lu_pane.each{|i| lv << "\t#{i.name}"; lv.last.data = 0}
14
+ lv << (direction==:horiz ? "Lower" : "Right")
15
+ lv.last.data = 1
16
+ rl_pane.each{|i| lv << "\t#{i.name}"; lv.last.data = 1}
17
+ end
18
+
19
+ def __fd_set_lvitem(lv, ilist)
20
+ lv.viewmode = :reportview
21
+ lv.imagelist = ilist
22
+ lv.columns = ['Panes', 80], ['Controls', 160]
23
+ end
24
+
25
+ def __fd_on_lv_rclick(lv, idx)
26
+ ar = parent.controls.select{|i| i.is_a?(Window) && i!=self && !i.respond_to?(:__ownedbysplitter)}.map{|i| [:additem, i.name.to_s]}
27
+ mn = Menu[:ctrls, "Add Control", *ar]
28
+ [mn, :sep, :deleteitem, "Remove"]
29
+ end
30
+
31
+ def __fd_on_additem(lv, idx, mnu, id)
32
+ ctl = parent.controls.__send__(mnu.ctrls[id].caption.intern)
33
+ parent.controls.delete_at(parent.controls.index(ctl))
34
+ parent.controls[parent.controls.index(self)+1, 0] = ctl
35
+
36
+ if lns = ctl._toplevelwin.__fd_src[:lines]
37
+ idx1 = lns.index{|i| i.respond_to?(:binded_obj) && i.binded_obj==ctl}
38
+ idx2 = lns.index{|i| i.respond_to?(:binded_obj) && i.binded_obj==self}
39
+ lns.insert(idx2+1, lns.delete_at(idx1)) if idx1 && idx2
40
+ end
41
+ if lv[idx].data == 0 # lu_pane
42
+ lu_pane << ctl
43
+ else
44
+ rl_pane << ctl
45
+ end
46
+ # dpp parent.controls
47
+ __fd_update_lv(lv)
48
+ end
49
+
50
+ def __fd_on_deleteitem(lv, idx)
51
+ if lv[idx].data == 0 # lu_pane
52
+ lu_pane.delete(parent.controls.__send__(lv[idx][1].intern))
53
+ else
54
+ rl_pane.delete(parent.controls.__send__(lv[idx][1].intern))
55
+ end
56
+ __fd_update_lv(lv)
57
+ end
58
+
59
+ def __fd_output_items(lns, curln, indent)
60
+ pt = __fd_get_parents_str2 #; dpp pt
61
+ lu_pane.each{|i| i.__fd_tmp_parent_str = "#{pt}.lu_pane"}
62
+ rl_pane.each{|i| i.__fd_tmp_parent_str = "#{pt}.rl_pane"}
63
+ curln
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Static.extend ModFormDesigner
4
+ class Static
5
+ FDConfig[:default_size] = [80, 16]
6
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t']
7
+ FDConfig[:altanate_mask] = [RC::SS_TYPEMASK, RC::SS_ELLIPSISMASK]
8
+ end
9
+ end
@@ -0,0 +1,103 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Statusbar.extend ModFormDesigner
4
+ class Statusbar
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [0, 30]
7
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t'], ['simple', 'b'], ['imagelist', 'n']
8
+ FDConfig[:attr_tabs] = 'Attributes', 'Styles', 'Events', 'Parts'
9
+ FDConfig[:have_controls] = true
10
+
11
+ def __fd_update_lv(lv)
12
+ lv.clear
13
+ count.times{|i|
14
+ pt = self[i]; #dpp pt.width, pt.text, pt.iimage.to_s, pt.type
15
+ s = sprintf("%d\t%s\t%s\t%#x", pt.width, pt.text.to_s, pt.iimage.to_s, pt.type.to_i)
16
+ lv << [s, nil, nil, pt]
17
+ }
18
+ end
19
+
20
+ def __fd_set_lvitem(lv, ilist)
21
+ lv.viewmode = :reportview
22
+ lv.imagelist = ilist
23
+ lv.style &= ~LVS_NOCOLUMNHEADER
24
+ lv.columns = ['Width',56],['Text', 136], ['Img', 32],['Type', 40]
25
+ __fd_update_lv(lv)
26
+ end
27
+
28
+ def __fd_edit_item(lv, idx, subitem, ed)
29
+ data = lv[idx].data
30
+ txt = ed.text
31
+ begin
32
+ case subitem
33
+ when 0
34
+ self[idx].width = txt.to_i
35
+ when 1
36
+ self[idx].text = txt.to_s
37
+ when 2
38
+ self[idx].iimage = txt.empty? ? nil : txt.to_i
39
+ when 3
40
+ case txt
41
+ when /^0[xX]/
42
+ val = txt.to_i(16)
43
+ when /[0-9]+/
44
+ val = txt.to_i
45
+ end
46
+ self[idx].type = val
47
+ end
48
+ __fd_update_lv(lv)
49
+ rescue => err
50
+ $fd_main_frm.MessageBox "#{err}", "FormDesigner", 0x10
51
+ end
52
+ end
53
+
54
+ def __fd_on_lv_rclick(lv, idx)
55
+ [:additem, "Add", :insertitem, "Insert", :sep, :deleteitem, "Delete"]
56
+ end
57
+
58
+ def __fd_on_additem(lv, idx, *)
59
+ self << [100, ""]
60
+ __fd_update_lv(lv)
61
+ end
62
+
63
+ def __fd_on_insertitem(lv, idx)
64
+ self[idx, 0] = [100, ""]
65
+ __fd_update_lv(lv)
66
+ end
67
+
68
+ def __fd_on_deleteitem(lv, idx)
69
+ delete(idx)
70
+ __fd_update_lv(lv)
71
+ end
72
+
73
+ def __fd_output_items(lns, curln, indent)
74
+ ps = __fd_get_parents_str2
75
+ ar = []
76
+ each{|i| ar << ps + " << " + sprintf("[%p, %p, %p, #{i.type ? '%#x' : '%p'}]",
77
+ i.width, i.text, i.iimage, i.type)}
78
+ __fd_set_items_srcs(lns, curln, indent, ar)
79
+ end
80
+
81
+ def __fd_item_loaded(item, asrc)
82
+ extend ModFDItemsSrcLine unless @__fd_items_srcs
83
+ @__fd_items_srcs << asrc
84
+ end
85
+
86
+ def __fd_on_delete_this()
87
+ return unless lns = @_toplevelwin.__fd_src[:lines]
88
+ __fd_delete_items_srcs(lns)
89
+ end
90
+
91
+ def __fd_output_items__(lns, curln, indent)
92
+ ar = []
93
+ each{|i| ar << sprintf("[%p, %p, %p, #{i.type ? '%#x' : '%p'}]", i.width, i.text, i.iimage, i.type)}
94
+ if ar.empty?
95
+ __fd_delete_items_src(self, lns)
96
+ else
97
+ s = __fd_get_parents_str2 + " << [#{ar.join(', ')}]"
98
+ __fd_set_items_src(self, lns, curln+=1, indent, s)
99
+ end
100
+ curln
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,136 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Tabctrl.extend ModFormDesigner
4
+ class Tabctrl
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:no_hookwndproc] = true
7
+ FDConfig[:default_size] = [128, 128]
8
+ FDConfig[:attributes] = ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t'], ['inheritfont','si,t'], ['imagelist','n'], ['mintabwidth','i']#, ['tabs','a']
9
+ FDConfig[:attr_tabs] = 'Attributes', 'Styles', 'Events', 'Tabs'
10
+ FDConfig[:have_controls] = true
11
+ FDConfig[:tabs_get] = lambda{|ctl, ar| ar.empty? ? '' : ar.map{|i| i.text}}
12
+ FDConfig[:tabs_set] = lambda{|ctl, ar| ar==[""] ? nil : ar}
13
+
14
+ def __fd_update_lv(lv)
15
+ lv.clear
16
+ @_tabs.each_with_index{|tab, idx|
17
+ lv << "#{tab.text}\t#{tab.image>=0 ? tab.image : ''}"
18
+ lv.last.data = idx
19
+ self[idx].controls.each{|i|
20
+ lv << "\t\t#{i.name}"
21
+ lv.last.data = idx
22
+ }
23
+ }
24
+ end
25
+
26
+ def __fd_set_lvitem(lv, ilist)
27
+ lv.viewmode = :reportview
28
+ lv.imagelist = ilist
29
+ lv.style &= ~LVS_NOCOLUMNHEADER
30
+ lv.columns = ['TabText', 104], ['Img', 32], ['Controls', 128]
31
+ __fd_update_lv(lv)
32
+ end
33
+
34
+ def __fd_edit_item(lv, idx, subitem, ed)
35
+ str = lv[idx].text
36
+ data = lv[idx].data
37
+ stbr = lv.get_toplevel_win._stbr1
38
+ case subitem
39
+ when 0
40
+ self[data].text = ed.text unless ed.text.empty?
41
+ when 1
42
+ self[data].image = ed.text.to_i unless ed.text.empty?
43
+ when 2
44
+ ed.hide
45
+ end
46
+ refresh
47
+ __fd_update_lv(lv)
48
+ end
49
+
50
+ def __fd_on_lv_rclick(lv, idx)
51
+ if idx < 0
52
+ [:addnode, "Add Tab"]
53
+ else
54
+ ar = controls.inject([]){|r, i| r << i.name.to_s unless i.respond_to?(:_owner); r}
55
+ a = []
56
+ count.times{|i| self[i].controls.each{|j| a << j.name.to_s}}
57
+ ar -= a
58
+ ar.map!{|i| [:additem, i]}.flatten!
59
+ mn = Menu[:ctrls, "Add Control", *ar]
60
+ [:addnode, "Add Tab", mn, :sep, :deleteitem, "Remove"]
61
+ end
62
+ end
63
+
64
+ def __fd_on_additem(lv, idx, mnu, id)
65
+ self[lv[idx].data] << controls.__send__(mnu.ctrls[id].caption.intern)
66
+ __fd_update_lv(lv)
67
+ end
68
+
69
+ def __fd_on_addnode(lv, idx)
70
+ self << "Tab#{count+1}"
71
+ __fd_update_lv(lv)
72
+ end
73
+
74
+ def __fd_on_deleteitem(lv, idx)
75
+ return if idx < 0
76
+ tabidx = lv[idx].data
77
+ if lv[idx][1].empty?
78
+ self[tabidx].delete
79
+ else
80
+ self[tabidx].controls.delete(self.__send__(("_"+lv[idx][1]).intern))
81
+ end
82
+ __fd_update_lv(lv)
83
+ end
84
+
85
+ def __fd_output_items(lns, curln, indent)
86
+ if @_tabs.empty?
87
+ __fd_delete_items_srcs(lns)
88
+ else
89
+ ps = __fd_get_parents_str2
90
+ # ar = @_tabs.inject([]){|a, i|
91
+ # a << "#{ps} << " + (i.image<0 ? "\"#{i.text}\"" : "[\"#{i.text}\", #{i.image}]")
92
+ # }
93
+ # curln = __fd_set_items_srcs(lns, curln, indent, ar)
94
+ ar = @_tabs.inject([]){|a, i|
95
+ a << (i.image<0 ? "\"#{i.text}\"" : "[\"#{i.text}\", #{i.image}]")
96
+ }
97
+ s = ar.size==1 ? ar[0] : "[#{ar.join(', ')}]"
98
+ curln = __fd_set_items_srcs(lns, curln, indent, ["#{ps} << #{s}"])
99
+
100
+ end
101
+ count.times{|i|
102
+ self[i].controls.each{|j| j.__fd_tmp_parent_str = "#{ps}[#{i}]"}
103
+ }
104
+ curln
105
+ end
106
+
107
+ def __fd_item_loaded(item, asrc)
108
+ extend ModFDItemsSrcLine unless @__fd_items_srcs
109
+ @__fd_items_srcs << asrc
110
+ end
111
+
112
+ def __fd_on_delete_this()
113
+ return unless lns = @_toplevelwin.__fd_src[:lines]
114
+ __fd_delete_items_srcs(lns)
115
+ end
116
+
117
+ # def __fd_output_items__(lns, curln, indent)
118
+ # if @_tabs.empty?
119
+ # __fd_delete_items_src(@_tabs, lns)
120
+ # else
121
+ # s = @_tabs.inject([]){|a, i|
122
+ # a << (i.image<0 ? "\"#{i.text}\"" : "[\"#{i.text}\", #{i.image}]")
123
+ # }.join(', ')
124
+ # s = __fd_get_parents_str2 + " << [#{s}]"
125
+ # __fd_set_items_src(@_tabs, lns, curln+=1, indent, s)
126
+ # end
127
+ #
128
+ # ps = __fd_get_parents_str2
129
+ # count.times{|i|
130
+ # self[i].controls.each{|j| j.__fd_tmp_parent_str = "#{ps}[#{i}]"}
131
+ # }
132
+ # curln
133
+ # end
134
+
135
+ end
136
+ end