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,36 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Timer.extend ModFormDesigner
4
+ class Timer
5
+ FDConfig[:classify] = :resources
6
+ FDConfig[:default_caption] = 1000
7
+ FDConfig[:attributes] = [['elapse', 'i'], ['started', 'b']]
8
+ FDConfig[:attr_tabs] = ['Attributes']
9
+
10
+ def __fd_on_delete_this()
11
+ return unless lns = self.parent.__fd_src[:lines]
12
+ return unless @__fd_src
13
+ lsrc = @__fd_src[2]
14
+ lns.delete(lsrc)
15
+ end
16
+
17
+ def __fd_timer_to_str(lns, curln, indent)
18
+ h = to_hsh
19
+ s = "#{h.delete('class')}[#{h.delete('name')}, #{h.delete('elapse')}"
20
+ s << if h.empty?
21
+ ']'
22
+ else
23
+ ', ' + h.inject([]){|r, v| r << ":#{v[0]}=>#{v[1]}"}.join(', ') + ']'
24
+ end
25
+ __fd_update_src(lns, curln, indent, s)
26
+ end
27
+
28
+ def __fd_to_str(lns, curln, indent)
29
+ __fd_timer_to_str(lns, curln, indent)
30
+ end
31
+
32
+ def __fd_modify_src(lns, curln, indent)
33
+ __fd_timer_to_str(lns, curln, indent)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,165 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Toolbar.extend ModFormDesigner
4
+ class Toolbar
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [128, 28]
7
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t'], ['imagelist', 'n']
8
+ FDConfig[:attr_tabs] = 'Attributes', 'Styles', 'Events', 'Buttons'
9
+ # FDConfig[:imagelist_out] = lambda{|ctl, atr| atr}
10
+ FDConfig[:imagelist_get] = lambda{|ctl, atr|
11
+ atr.respond_to?(:name) ? atr.name.to_s : (atr.is_a?(Symbol) ? ":#{atr}" : "")
12
+ }
13
+ FDConfig[:imagelist_set] = lambda{|ctl, ar|
14
+ frm = ctl._toplevelwin
15
+ s = ar[0]
16
+ s.sub!(/^:/, '') ? s.intern : frm.controls.__send__(s)
17
+ }
18
+ def __fd_recreate_this()
19
+ @__extendedstyle = self.extendedstyle
20
+ @__systemimagelist = nil
21
+ @__imagelist = self.imagelist
22
+ @_buttons = []
23
+ self.each{|i|
24
+ tbb = Button[i.name, i.iimage, i.text, i.style]
25
+ tbb.idcmd = i.idcmd
26
+ tbb.owner = self
27
+ @_buttons << tbb
28
+ }
29
+ @controls.each{|i|
30
+ idx = SendMessage(TB_COMMANDTOINDEX, i.__associated_toolbar_id, 0)
31
+ i.close
32
+ i.w = self[idx].iimage
33
+ }
34
+ __fd_recreate()
35
+ end
36
+
37
+ def __fd_edit_item(lv, idx, subitem, ed)
38
+ data = lv[idx].data
39
+ txt = ed.text
40
+ begin
41
+ case subitem
42
+ when 0 # Name
43
+ if (txt=="(sep)" || txt==":sep")
44
+ self[idx].style = BTNS_SEP
45
+ else
46
+ self[idx].name = txt.intern
47
+ self[idx].style = 0
48
+ end
49
+ when 1 # Image
50
+ self[idx].iimage = txt.empty? ? nil : txt.to_i
51
+ when 2 # Text
52
+ self[idx].text = txt.empty? ? nil : txt.to_s
53
+ when 3
54
+ # case txt
55
+ # when /^0[xX]/
56
+ # val = txt.to_i(16)
57
+ # when /[0-9]+/
58
+ # val = txt.to_i
59
+ # else
60
+ # val = 0
61
+ # txt.split(',').each{|i| val |= BtnStyles[i.strip.intern].to_i}
62
+ # end
63
+ # self[idx].style = val
64
+ self[idx].infotip = txt
65
+ end
66
+ rescue => err
67
+ $fd_main_frm.MessageBox "#{err}", "FormDesigner", 0x10
68
+ end
69
+ __fd_recreate_this
70
+ autosize
71
+ end
72
+
73
+ def __fd_update_lv(lv)
74
+ lv.clear
75
+ buttoncount.times{|i|
76
+ bt = self[i]
77
+ nm = bt.style&TBSTYLE_SEP>0 ? "(sep)" : bt.name
78
+ s = sprintf("%s\t%d\t%s\t%s", nm, bt.iimage, bt.text, bt.infotip)
79
+ lv << [s, nil, nil, bt]
80
+ }
81
+ end
82
+
83
+ def __fd_set_lvitem(lv, ilist)
84
+ lv.viewmode = :reportview
85
+ lv.imagelist = ilist
86
+ lv.style &= ~LVS_NOCOLUMNHEADER
87
+ lv.columns = ['Name',80], ['Img', 32], ['Text', 72], ['Infotip', 96]
88
+ __fd_update_lv(lv)
89
+ end
90
+
91
+
92
+ def __fd_on_lv_rclick(lv, idx)
93
+ [:insertitem, "Insert", :deleteitem, "Delete"]
94
+ end
95
+
96
+ def __fd_on_insertitem(lv, idx)
97
+ sname = get_toplevel_win.suffixed_name('tbbutton1')
98
+ self << [sname.intern, nil]
99
+ autosize
100
+ __fd_update_lv(lv)
101
+ end
102
+
103
+ def __fd_on_deleteitem(lv, idx)
104
+ ct = controls.find{|i| i.__associated_toolbar_id == idcmd}
105
+ ct.delete if ct
106
+ self[idx].delete
107
+ __fd_update_lv(lv)
108
+ end
109
+
110
+ def __fd_add_ctrl(x, y, ct)
111
+ idx = hittest(x-self.x, y-self.y)
112
+ insert(idx, ct)
113
+ ct.y = 0
114
+ ct
115
+ end
116
+
117
+ def __fd_output_items(lns, curln, indent)
118
+ ps = __fd_get_parents_str2
119
+ ar = []
120
+ each{|bt|
121
+ if obj=controls.find{|i| i.__associated_toolbar_id == bt.idcmd}
122
+ ar << ps + " << " + obj.__fd_to_str_core(nil)
123
+ elsif bt.style==TBSTYLE_SEP
124
+ ar << ps + " << :sep"
125
+ else
126
+ s = sprintf("[%p, %p", bt.name, bt.iimage)
127
+ s << sprintf(", %p", bt.text) unless bt.text.empty?
128
+ s << sprintf(", %#x", bt.style) if bt.style > 0
129
+ s << ", :infotip=>'#{bt.infotip}'" unless bt.infotip.empty?
130
+ ar << ps + " << " + s + ']'
131
+ end
132
+ }
133
+ __fd_set_items_srcs(lns, curln, indent, ar)
134
+ end
135
+
136
+ def __fd_item_loaded(item, asrc)
137
+ extend ModFDItemsSrcLine unless @__fd_items_srcs
138
+ @__fd_items_srcs << asrc
139
+ end
140
+
141
+ def __fd_on_delete_this()
142
+ return unless lns = @_toplevelwin.__fd_src[:lines]
143
+ __fd_delete_items_srcs(lns)
144
+ end
145
+
146
+ # def __fd_output_items__(lns, curln, indent)
147
+ # ar = []
148
+ # each{|bt|
149
+ # if obj=controls.find{|i| i.__associated_toolbar_id == bt.idcmd}
150
+ # ar << obj.__fd_to_str_core(nil)
151
+ # else
152
+ # ar << sprintf("[%p, %p, %p, %#x]", bt.name, bt.iimage,
153
+ # bt.text.empty? ? nil : bt.text, bt.style)
154
+ # end
155
+ # }
156
+ # if ar.empty?
157
+ # __fd_delete_items_src(self, lns)
158
+ # else
159
+ # s = __fd_get_parents_str2 + " << [#{ar.join(', ')}]"
160
+ # __fd_set_items_src(self, lns, curln+=1, indent, s)
161
+ # end
162
+ # curln
163
+ # end
164
+ end
165
+ end
@@ -0,0 +1,34 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Trackbar.extend ModFormDesigner
4
+ class Trackbar
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [100, 30]
7
+ FDConfig[:attributes] = ['position', 'ii'], ['size', 'ii'], ['range', 'ii', [0, 100]], ['tics', 'a', []], ['thumblength', 'i'], ['pos', 'i', 0], ['buddy', 'nn', [nil, nil]]
8
+ FDConfig[:need_recreate] = true
9
+
10
+ FDConfig[:buddy_set] = lambda{|ctl, ar|#; dpp ar
11
+ lns = ctl._toplevelwin.__fd_src[:lines]
12
+ return [nil, nil] if ar==[""]
13
+ pr = ctl.parent
14
+ r = []
15
+ ar.each{|i|
16
+ if i.empty?
17
+ r << nil
18
+ else
19
+ c = pr.__send__("_#{i}".intern)
20
+ pr.controls.delete_at(pr.controls.index(c))
21
+ pr.controls[pr.controls.index(ctl), 0] = c
22
+ if ctl.__fd_src && c.__fd_src
23
+ l = lns.delete_at(lns.index(c.__fd_src[2]))
24
+ ln = lns.index(ctl.__fd_src[2])
25
+ lns[ln, 0] = l
26
+ end
27
+ r << c
28
+ end
29
+ }
30
+ r
31
+ }
32
+
33
+ end
34
+ end
@@ -0,0 +1,107 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Treeview.extend ModFormDesigner # This line must be at first.
4
+ class Treeview
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [128, 128]
7
+ # FDConfig[:default_caption] = ""
8
+ # FDConfig[:default_style] = TVS_DEFAULT
9
+ FDConfig[:attributes] = ['caption', 's'], ['position', 'ii'], ['size', 'ii'], ['margin', 'iiii,t'], ['font', 'sis,t'], ['imagelist', 'n'], ['textcolor', 'h', -1], ['bkcolor', 'h', -1]
10
+ FDConfig[:attr_tabs] = 'Attributes', 'Styles', 'Events', 'Items'
11
+
12
+ def __fd_set_lvitem(lv, ilist)
13
+ lv.viewmode = :reportview
14
+ lv.imagelist = ilist
15
+ lv.style &= ~LVS_NOCOLUMNHEADER
16
+ lv.columns = ['Text', 208], ['Img', 40]
17
+ end
18
+
19
+ def __fd_on_lv_rclick(lv, idx)
20
+ [:additem, "Add Item", :additem_under, "Add Item under", :sep, :deleteitem, "Delete"]
21
+ end
22
+
23
+ def __fd_edit_item(lv, idx, subitem, ed)
24
+ str = lv[idx].text
25
+ data = lv[idx].data
26
+ case subitem
27
+ when 0
28
+ lv[idx].data.text = ed.text unless ed.text.empty?
29
+ when 1
30
+ lv[idx].data.image = ed.text.empty? ? -1 : ed.text.to_i unless ed.text.empty?
31
+ else
32
+ ed.hide
33
+ end
34
+ __fd_update_lv(lv)
35
+ end
36
+
37
+ def __fd_update_lv_core(lv, obj, indent)
38
+ obj.each{|i|i.expand
39
+ lv << [i.text + "\t#{i.image>=0 ? i.image : ''}", -1, indent, i]
40
+ __fd_update_lv_core(lv, i, indent+1) if i.count>0
41
+ }
42
+ end
43
+
44
+ def __fd_update_lv(lv)
45
+ lv.clear
46
+ root.expand
47
+ __fd_update_lv_core(lv, root, 0)
48
+ end
49
+
50
+ def __fd_on_additem(lv, idx, *)
51
+ if item = lv[idx].data
52
+ item = item.parent
53
+ else
54
+ item = root
55
+ end
56
+ item << ["item#{item.count}", 0]
57
+ __fd_update_lv(lv)
58
+ end
59
+
60
+ def __fd_on_additem_under(lv, idx, *)
61
+ if item = lv[idx].data
62
+ item << ["item#{item.count}", 0]
63
+ else
64
+ end
65
+ __fd_update_lv(lv)
66
+ end
67
+
68
+ def __fd_on_deleteitem(lv, idx)
69
+ return unless item=lv[idx].data
70
+ item.delete
71
+ __fd_update_lv(lv)
72
+ end
73
+
74
+ def __fd_on_delete_this()
75
+ return unless lns = @_toplevelwin.__fd_src[:lines]
76
+ __fd_tvdelete_items_srcs(lns)
77
+ end
78
+
79
+ def __fd_item_loaded(item, asrc)
80
+ extend ModFDItemsSrcLine unless @__fd_items_srcs
81
+ @__fd_items_srcs << asrc
82
+ end
83
+
84
+ def __fd_output_items_core(lns, curln, indent, node, depth, ar)
85
+ return curln if node.count==0
86
+ nds = []
87
+ a = []
88
+ n = 0
89
+ node.each{|i|
90
+ nds << [i, n] if i.count > 0
91
+ a << "[\"#{i.text}\", #{i.image}]"
92
+ n += 1
93
+ }
94
+ ar << __fd_get_parents_str2 + "#{depth} << [#{a.join(', ')}]"
95
+ nds.each{|i, j|
96
+ curln = __fd_output_items_core(lns, curln, indent, i, depth+"[#{j}]", ar)
97
+ }
98
+ curln
99
+ end
100
+
101
+ def __fd_output_items(lns, curln, indent)
102
+ ar = []
103
+ curln = __fd_output_items_core(lns, curln, indent, root, "", ar)
104
+ __fd_set_items_srcs(lns, curln, indent, ar)
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,31 @@
1
+ require_relative '../fdmodules' if __FILE__ == $0
2
+ module WR
3
+ Updown.extend ModFormDesigner
4
+ class Updown
5
+ FDConfig[:classify] = :commonctrl
6
+ FDConfig[:default_size] = [20, 20]
7
+ FDConfig[:attributes] = ['position', 'ii'], ['size', 'ii'], ['buddy', 'n'], ['range', 'ii', [0, 100]], ['pos', 'i', 0]
8
+
9
+ FDConfig[:buddy_set] = lambda{|ctl, ar|
10
+ lns = ctl._toplevelwin.__fd_src[:lines]
11
+ return nil if ar==[""]
12
+ pr = ctl.parent
13
+ c = pr.__send__("_#{ar[0]}".intern)
14
+ pr.controls.delete_at(pr.controls.index(c))
15
+ pr.controls[pr.controls.index(ctl), 0] = c
16
+ if ctl.__fd_src && c.__fd_src
17
+ l = lns.delete_at(lns.index(c.__fd_src[2]))
18
+ ln = lns.index(ctl.__fd_src[2])
19
+ lns[ln, 0] = l
20
+ end
21
+ c
22
+ }
23
+
24
+ def __fd_recreate_this()
25
+ bdy = self.buddy
26
+ __fd_recreate
27
+ self.buddy = bdy
28
+ self
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,87 @@
1
+ require 'wrb'
2
+
3
+ module WR
4
+ class FDMain < Form
5
+ class ImageSizeInput < Dialog
6
+ def initialize()
7
+ self.caption = "Input image size"
8
+ self.inheritfont = 'Meiryo', -12
9
+ resize 240, 140
10
+ self.caption = 'Input image size'
11
+ _<< Static[:st1, 'width:', 10, 24, 40, 18]
12
+ _<< Static[:st1, 'height:', 120, 24, 40, 18]
13
+ _<< Static[:sterr, "", 80, 54, 160, 18]
14
+ _<< Edit[:edw, '16', 60, 20, 48, 24, :number, :tabstop]
15
+ _<< Edit[:edh, '16', 176, 20, 48, 24, :number, :tabstop]
16
+ _<< Checkbox[:mask, "Mask", 10, 52, 60, 24, :checked=>true]
17
+ _<< Checkbox[:downlevel, "Down level", 120, 52, 120, 24, :checked=>true]
18
+ _<< Button[:btok, 'OK', 108, 80, 56, 24, :idok]
19
+ _<< Button[:btcancel, 'Cancel', 168, 80, 56, 24, :idcancel]
20
+ _<< Button[:btfile, 'From file', 10, 80, 72, 24]
21
+ end
22
+
23
+ def opened(arg)
24
+ @klass, @frm = arg
25
+ end
26
+
27
+ def edw_change(*)
28
+ _edh.text = _edw.text
29
+ end
30
+
31
+ def btok_clicked(*)
32
+ iw, ih = _.edw.caption.to_i, _.edh.caption.to_i
33
+ if iw==0 || ih==0 || iw>256 || ih>256
34
+ _.sterr.caption = sprintf("[%p, %p] is not allowed. (1..256)", iw, ih)
35
+ return
36
+ end
37
+ iml = Imagelist.new(iw, ih, (_.mask.checked ? ILC_MASK : 0) | ILC_COLOR24)
38
+ class << iml
39
+ attr_accessor :__fd_bindedfile, :__fd_toplevelwin
40
+ end
41
+ iml.__fd_toplevelwin = @frm
42
+ iml.downlevel = _downlevel.checked?
43
+ close iml
44
+ end
45
+
46
+ def btcancel_clicked(*)
47
+ close nil
48
+ end
49
+
50
+ def btfile_clicked(*)
51
+ unless @frm.__fd_src[:filename]
52
+ return @frm.MessageBox("Please save this form at first.", "Formdesigner", 0x10)
53
+ end
54
+ return unless path=OpenFileNameDlg.show(parent, caption: 'Input filename')
55
+ if File.exists?(path)
56
+ begin
57
+ iml = @klass.fromfile(path)
58
+ rescue => err
59
+ return @frm.MessageBox("#{err}", "Formdesigner", 0x10)
60
+ end
61
+ else # New file
62
+ iw, ih = _.edw.caption.to_i, _.edh.caption.to_i
63
+ iml = @klass.new(iw, ih, (_.mask.checked ? ILC_MASK : 0) | ILC_COLOR24)
64
+ iml.savefile(path)
65
+ MessageBox("Empty Imagelist was created.", "FormDesigner", 0x40)
66
+ end
67
+ pn = Pathname.new(path)
68
+ relpath = pn.relative_path_from(Pathname.new(File.dirname(@frm.__fd_src[:filename])))
69
+ class << iml
70
+ attr_accessor :__fd_bindedfile, :__fd_toplevelwin
71
+ end
72
+ iml.__fd_toplevelwin = @frm
73
+ iml.__fd_bindedfile = relpath.to_s
74
+ close iml
75
+ end
76
+ end # ImageSizeInput
77
+ end
78
+
79
+ class AttrInputHelper < Dialog
80
+ def initialize()
81
+ # self.style &= ~WS_BORDER
82
+ end
83
+ def opened(arg)
84
+ end
85
+ self.start if $0 == __FILE__
86
+ end
87
+ end