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.
- checksums.yaml +7 -0
- data/README +28 -0
- data/Rakefile +66 -0
- data/bin/wrb +41 -0
- data/bin/wrb.bat +6 -0
- data/ext/rwin/aatree.c +192 -0
- data/ext/rwin/aatree.h +55 -0
- data/ext/rwin/extconf.rb +47 -0
- data/ext/rwin/rw_api.c +2058 -0
- data/ext/rwin/rw_devices.c +215 -0
- data/ext/rwin/rw_gdiplus.h +278 -0
- data/ext/rwin/rw_graphics.c +1583 -0
- data/ext/rwin/rw_resources.c +1988 -0
- data/ext/rwin/rw_ubfuncs.c +281 -0
- data/ext/rwin/rw_windows.c +1936 -0
- data/ext/rwin/rwin.c +451 -0
- data/ext/rwin/rwin.h +442 -0
- data/lib/rwin.rb +820 -0
- data/lib/wrb.rb +20 -0
- data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
- data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
- data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
- data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
- data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
- data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
- data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
- data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
- data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
- data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
- data/lib/wrb/base.rb +1294 -0
- data/lib/wrb/combocommon.rb +77 -0
- data/lib/wrb/commctrlconst.rb +139 -0
- data/lib/wrb/commdlg.rb +77 -0
- data/lib/wrb/components/animate.rb +114 -0
- data/lib/wrb/components/bitmap.rb +116 -0
- data/lib/wrb/components/button.rb +134 -0
- data/lib/wrb/components/canvas.rb +266 -0
- data/lib/wrb/components/checkbox.rb +118 -0
- data/lib/wrb/components/choosecolordlg.rb +87 -0
- data/lib/wrb/components/choosefontdlg.rb +142 -0
- data/lib/wrb/components/clipboard.rb +174 -0
- data/lib/wrb/components/combobox.rb +282 -0
- data/lib/wrb/components/comboboxex.rb +574 -0
- data/lib/wrb/components/cursor.rb +91 -0
- data/lib/wrb/components/datetimepicker.rb +197 -0
- data/lib/wrb/components/ddeclient.rb +180 -0
- data/lib/wrb/components/ddeserver.rb +131 -0
- data/lib/wrb/components/dialog.rb +228 -0
- data/lib/wrb/components/edit.rb +412 -0
- data/lib/wrb/components/font.rb +35 -0
- data/lib/wrb/components/form.rb +65 -0
- data/lib/wrb/components/groupbox.rb +122 -0
- data/lib/wrb/components/header.rb +479 -0
- data/lib/wrb/components/hotkeyctrl.rb +72 -0
- data/lib/wrb/components/icon.rb +109 -0
- data/lib/wrb/components/imagelist.rb +396 -0
- data/lib/wrb/components/inifile.rb +97 -0
- data/lib/wrb/components/listbox.rb +149 -0
- data/lib/wrb/components/listview.rb +1467 -0
- data/lib/wrb/components/menu.rb +592 -0
- data/lib/wrb/components/menubar.rb +84 -0
- data/lib/wrb/components/monthcalender.rb +164 -0
- data/lib/wrb/components/openfilenamedlg.rb +147 -0
- data/lib/wrb/components/pager.rb +199 -0
- data/lib/wrb/components/panel.rb +103 -0
- data/lib/wrb/components/picture.rb +55 -0
- data/lib/wrb/components/printdlg.rb +148 -0
- data/lib/wrb/components/printdlgex.rb +117 -0
- data/lib/wrb/components/printer.rb +97 -0
- data/lib/wrb/components/progressbar.rb +140 -0
- data/lib/wrb/components/radiobutton.rb +49 -0
- data/lib/wrb/components/rebar.rb +830 -0
- data/lib/wrb/components/registry.rb +408 -0
- data/lib/wrb/components/richedit.rb +1181 -0
- data/lib/wrb/components/savefilenamedlg.rb +27 -0
- data/lib/wrb/components/scintilla.rb +1298 -0
- data/lib/wrb/components/scrollbar.rb +239 -0
- data/lib/wrb/components/splitter.rb +494 -0
- data/lib/wrb/components/static.rb +198 -0
- data/lib/wrb/components/statusbar.rb +490 -0
- data/lib/wrb/components/tabctrl.rb +686 -0
- data/lib/wrb/components/timer.rb +117 -0
- data/lib/wrb/components/toolbar.rb +1107 -0
- data/lib/wrb/components/tooltip.rb +651 -0
- data/lib/wrb/components/trackbar.rb +298 -0
- data/lib/wrb/components/treeview.rb +845 -0
- data/lib/wrb/components/updown.rb +198 -0
- data/lib/wrb/ddeml.rb +241 -0
- data/lib/wrb/documents/animate.html +46 -0
- data/lib/wrb/documents/bitmap.html +69 -0
- data/lib/wrb/documents/button.html +78 -0
- data/lib/wrb/documents/canvas.html +137 -0
- data/lib/wrb/documents/checkbox.html +77 -0
- data/lib/wrb/documents/choosecolordlg.html +29 -0
- data/lib/wrb/documents/choosefontdlg.html +31 -0
- data/lib/wrb/documents/clipboard.html +31 -0
- data/lib/wrb/documents/combobox.html +117 -0
- data/lib/wrb/documents/comboboxex.html +139 -0
- data/lib/wrb/documents/control.html +53 -0
- data/lib/wrb/documents/cursor.html +45 -0
- data/lib/wrb/documents/datetimepicker.html +70 -0
- data/lib/wrb/documents/ddeclient.html +33 -0
- data/lib/wrb/documents/ddeserver.html +26 -0
- data/lib/wrb/documents/dialog.html +78 -0
- data/lib/wrb/documents/edit.html +169 -0
- data/lib/wrb/documents/empty.html +11 -0
- data/lib/wrb/documents/favicon.png +0 -0
- data/lib/wrb/documents/font.html +38 -0
- data/lib/wrb/documents/form.html +63 -0
- data/lib/wrb/documents/groupbox.html +57 -0
- data/lib/wrb/documents/header.html +85 -0
- data/lib/wrb/documents/hotkeyctrl.html +42 -0
- data/lib/wrb/documents/icon.html +45 -0
- data/lib/wrb/documents/imagelist.html +101 -0
- data/lib/wrb/documents/images/button.png +0 -0
- data/lib/wrb/documents/images/checkbox.png +0 -0
- data/lib/wrb/documents/images/combobox.png +0 -0
- data/lib/wrb/documents/images/comboboxex.png +0 -0
- data/lib/wrb/documents/images/datetimepicker.png +0 -0
- data/lib/wrb/documents/images/edit.png +0 -0
- data/lib/wrb/documents/images/groupbox.png +0 -0
- data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
- data/lib/wrb/documents/images/listbox.png +0 -0
- data/lib/wrb/documents/images/listview.png +0 -0
- data/lib/wrb/documents/images/menu.png +0 -0
- data/lib/wrb/documents/images/menubar.png +0 -0
- data/lib/wrb/documents/images/monthcalender.png +0 -0
- data/lib/wrb/documents/images/progressbar.png +0 -0
- data/lib/wrb/documents/images/radiobutton.png +0 -0
- data/lib/wrb/documents/images/rebar.png +0 -0
- data/lib/wrb/documents/images/richedit.png +0 -0
- data/lib/wrb/documents/images/splitter.png +0 -0
- data/lib/wrb/documents/images/static.png +0 -0
- data/lib/wrb/documents/images/statusbar.png +0 -0
- data/lib/wrb/documents/images/tabctrl.png +0 -0
- data/lib/wrb/documents/images/toolbar.png +0 -0
- data/lib/wrb/documents/images/tooltip.png +0 -0
- data/lib/wrb/documents/images/trackbar.png +0 -0
- data/lib/wrb/documents/images/treeview.png +0 -0
- data/lib/wrb/documents/images/updown.png +0 -0
- data/lib/wrb/documents/index.html +155 -0
- data/lib/wrb/documents/inifile.html +36 -0
- data/lib/wrb/documents/license.txt +22 -0
- data/lib/wrb/documents/listbox.html +96 -0
- data/lib/wrb/documents/listview.html +277 -0
- data/lib/wrb/documents/make_doc.rb +596 -0
- data/lib/wrb/documents/menu.html +144 -0
- data/lib/wrb/documents/menubar.html +54 -0
- data/lib/wrb/documents/monthcalender.html +48 -0
- data/lib/wrb/documents/openfilenamedlg.html +36 -0
- data/lib/wrb/documents/pager.html +63 -0
- data/lib/wrb/documents/panel.html +32 -0
- data/lib/wrb/documents/picture.html +48 -0
- data/lib/wrb/documents/printdlg.html +35 -0
- data/lib/wrb/documents/printdlgex.html +35 -0
- data/lib/wrb/documents/printer.html +40 -0
- data/lib/wrb/documents/progressbar.html +69 -0
- data/lib/wrb/documents/radiobutton.html +51 -0
- data/lib/wrb/documents/rebar.html +143 -0
- data/lib/wrb/documents/registry.html +36 -0
- data/lib/wrb/documents/richedit.html +232 -0
- data/lib/wrb/documents/samples/editimg.bmp +0 -0
- data/lib/wrb/documents/samples/editimg.iml +0 -0
- data/lib/wrb/documents/samples/fileimg.bmp +0 -0
- data/lib/wrb/documents/samples/fileimg.iml +0 -0
- data/lib/wrb/documents/samples/sample_button.rb +21 -0
- data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
- data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
- data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
- data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
- data/lib/wrb/documents/samples/sample_edit.rb +25 -0
- data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
- data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
- data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
- data/lib/wrb/documents/samples/sample_listview.rb +32 -0
- data/lib/wrb/documents/samples/sample_menu.rb +21 -0
- data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
- data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
- data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
- data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
- data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
- data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
- data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
- data/lib/wrb/documents/samples/sample_static.rb +15 -0
- data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
- data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
- data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
- data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
- data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
- data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
- data/lib/wrb/documents/samples/sample_updown.rb +18 -0
- data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
- data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
- data/lib/wrb/documents/samples/samplemg16.png +0 -0
- data/lib/wrb/documents/samples/samplemg32.png +0 -0
- data/lib/wrb/documents/samples/wrb.ico +0 -0
- data/lib/wrb/documents/savefilenamedlg.html +19 -0
- data/lib/wrb/documents/scrollbar.html +60 -0
- data/lib/wrb/documents/splitter.html +96 -0
- data/lib/wrb/documents/static.html +84 -0
- data/lib/wrb/documents/statusbar.html +110 -0
- data/lib/wrb/documents/tabctrl.html +151 -0
- data/lib/wrb/documents/timer.html +43 -0
- data/lib/wrb/documents/toolbar.html +181 -0
- data/lib/wrb/documents/tooltip.html +131 -0
- data/lib/wrb/documents/trackbar.html +107 -0
- data/lib/wrb/documents/treeview.html +210 -0
- data/lib/wrb/documents/updown.html +85 -0
- data/lib/wrb/documents/wincontrol.html +258 -0
- data/lib/wrb/documents/window.html +499 -0
- data/lib/wrb/documents/wrb.css +228 -0
- data/lib/wrb/gmem.rb +26 -0
- data/lib/wrb/imecommon.rb +59 -0
- data/lib/wrb/listcommon.rb +185 -0
- data/lib/wrb/lzss.rb +126 -0
- data/lib/wrb/scrollinfo.rb +142 -0
- data/lib/wrb/toplevelcommon.rb +634 -0
- metadata +315 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta content="text/html; charset=utf-8" http-equiv="content-type">
|
|
5
|
+
<title>Inifile</title>
|
|
6
|
+
<link href="wrb.css" type="text/css" rel="stylesheet">
|
|
7
|
+
<link rel="shortcut icon" href="favicon.png">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h3> Inifile < <a href="hash.html">Hash</a> <span class=gohome> <a href="index.html">Home </a></span></h3>
|
|
11
|
+
<p>Handles a Inifile (*.ini) like a Hash. (WRB orignal)<br>
|
|
12
|
+
Inifile formats are following.<pre>
|
|
13
|
+
[section]
|
|
14
|
+
key=value
|
|
15
|
+
...</pre>
|
|
16
|
+
</p>
|
|
17
|
+
<h4> Singleton methods </h4>
|
|
18
|
+
<dl>
|
|
19
|
+
<dt><code>self.new(path, &block)</code></dt>
|
|
20
|
+
<dd></dd>
|
|
21
|
+
<dt><code>self.open(path, &block)</code></dt>
|
|
22
|
+
<dd>Opens a file specified <i>path</i>.<br>If <i>block</i> is given, opens for writing and closes automaticaly.</dd>
|
|
23
|
+
</dl>
|
|
24
|
+
<h4> Instance methods </h4>
|
|
25
|
+
<dl>
|
|
26
|
+
<dt><code>close()</code></dt>
|
|
27
|
+
<dt><code>flash()</code></dt>
|
|
28
|
+
<dd>Closes and writes out to the file.</dd>
|
|
29
|
+
<dt><code>open(path)</code></dt>
|
|
30
|
+
<dd>Opens a file specified <i>path</i>.<br>If block is given, opens for writing and closes automaticaly.</dd>
|
|
31
|
+
<dt><code>path()</code></dt>
|
|
32
|
+
<dd>Gets an absolute path to this inifile.</dd>
|
|
33
|
+
</dl>
|
|
34
|
+
|
|
35
|
+
</body>
|
|
36
|
+
</html>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2015-2018, BANJO Koyu <banjokoyu at gmail.com>
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
|
6
|
+
|
|
7
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
8
|
+
this list of conditions and the following disclaimer.
|
|
9
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
10
|
+
this list of conditions and the following disclaimer in the documentation
|
|
11
|
+
and/or other materials provided with the distribution.
|
|
12
|
+
|
|
13
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
14
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
15
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
16
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
17
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
18
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
19
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
20
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
21
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
22
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta content="text/html; charset=utf-8" http-equiv="content-type">
|
|
5
|
+
<title>Listbox</title>
|
|
6
|
+
<link href="wrb.css" type="text/css" rel="stylesheet">
|
|
7
|
+
<link rel="shortcut icon" href="favicon.png">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h3> Listbox < <a href="wincontrol.html">WinControl</a> <span class=gohome> <a href="index.html">Home </a> <div class=imgright><img src="images/listbox.png"></div>
|
|
11
|
+
</span></h3>
|
|
12
|
+
<p class=fixedh>This control contains a simple list from which the user can generally select one or more items.<br>
|
|
13
|
+
See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
|
|
14
|
+
window-controls"> Windows Control section of Microsoft Docs.</a>
|
|
15
|
+
</p>
|
|
16
|
+
<h4> Instance methods </h4>
|
|
17
|
+
<dl>
|
|
18
|
+
<dt><code><<(args)</code></dt>
|
|
19
|
+
<dd>Adds the args at last of the items.<br>Give a String or a Array of [String, Object] as args.</dd>
|
|
20
|
+
<dt><code>count()</code></dt>
|
|
21
|
+
<dd>Retreives count of items.</dd>
|
|
22
|
+
<dt><code>cursel()</code></dt>
|
|
23
|
+
<dd>Retrieves the index of the currently selected item.</dd>
|
|
24
|
+
<dt><code>cursel=(idx)</code></dt>
|
|
25
|
+
<dd>Changes the currently selected item to specified index.</dd>
|
|
26
|
+
<dt><code>delete(index=nil, number=1)</code></dt>
|
|
27
|
+
<dd>Deletes items at specified <i>index</i> and <i>number</i> from this control.<br>If no arguments given, deletes self.</dd>
|
|
28
|
+
<dt><code>delete_item(index)</code></dt>
|
|
29
|
+
<dd>Deletes item of specified <i>index</i> from this control.</dd>
|
|
30
|
+
<dt><code>each(){|item| ... }</code></dt>
|
|
31
|
+
<dd>Performs the block for each item in this list as a block parameter.</dd>
|
|
32
|
+
<dt><code>fetch(idx)</code></dt>
|
|
33
|
+
<dd>Retreives an item at the specified index.</dd>
|
|
34
|
+
<dt><code>index(arg)</code></dt>
|
|
35
|
+
<dd>Retreives index of given text.<br>Give a String or a Symbol as arg.</dd>
|
|
36
|
+
<dt><code>insert(index, length=1, items)</code></dt>
|
|
37
|
+
<dt><code>[]=(index, length=1, items)</code></dt>
|
|
38
|
+
<dd>Inserts and replaces at the specified <i>index</i> and <i>length</i> by the <i>items</i>.</dd>
|
|
39
|
+
<dt><code>insert_item(index, text, data=nil)</code></dt>
|
|
40
|
+
<dd>Inserts a <i>text</i> and a <i>data</i> at the specified <i>index</i>.</dd>
|
|
41
|
+
<dt><code>itemdata(idx)</code></dt>
|
|
42
|
+
<dd>Gets an any object as data of specified index of items.</dd>
|
|
43
|
+
<dt><code>itemdata=(idx, data)</code></dt>
|
|
44
|
+
<dd>Sets an any object as data to specified index of items.</dd>
|
|
45
|
+
<dt><code>selection()</code></dt>
|
|
46
|
+
<dd>Retrieves the currently selected item as String.</dd>
|
|
47
|
+
<dt><code>slice(idx, len=1)</code></dt>
|
|
48
|
+
<dt><code>[](idx, len=1)</code></dt>
|
|
49
|
+
<dd>Retreives the items at the specified index and length.</dd>
|
|
50
|
+
</dl>
|
|
51
|
+
<h4> Listbox styles <span class=spl>( both the symbols and the integers can be used )</span></h4>
|
|
52
|
+
<p></p>
|
|
53
|
+
<table>
|
|
54
|
+
<tr><th>Symbol</th><th>Integer value</th><th>Symbol</th><th>Integer value</th></tr>
|
|
55
|
+
<tr><td class=name1><code>:combobox</code></td><td class=type><code>LBS_COMBOBOX</code></td><td class=name1><code>:default</code></td><td class=type><code>LBS_DEFAULT</code></td></tr>
|
|
56
|
+
<tr><td class=name1><code>:disablenoscroll</code></td><td class=type><code>LBS_DISABLENOSCROLL</code></td><td class=name1><code>:extendedsel</code></td><td class=type><code>LBS_EXTENDEDSEL</code></td></tr>
|
|
57
|
+
<tr><td class=name1><code>:hasstrings</code></td><td class=type><code>LBS_HASSTRINGS</code></td><td class=name1><code>:multicolumn</code></td><td class=type><code>LBS_MULTICOLUMN</code></td></tr>
|
|
58
|
+
<tr><td class=name1><code>:multiplesel</code></td><td class=type><code>LBS_MULTIPLESEL</code></td><td class=name1><code>:nodata</code></td><td class=type><code>LBS_NODATA</code></td></tr>
|
|
59
|
+
<tr><td class=name1><code>:nointegralheight</code></td><td class=type><code>LBS_NOINTEGRALHEIGHT</code></td><td class=name1><code>:noredraw</code></td><td class=type><code>LBS_NOREDRAW</code></td></tr>
|
|
60
|
+
<tr><td class=name1><code>:nosel</code></td><td class=type><code>LBS_NOSEL</code></td><td class=name1><code>:notify</code></td><td class=type><code>LBS_NOTIFY</code></td></tr>
|
|
61
|
+
<tr><td class=name1><code>:ownerdrawfixed</code></td><td class=type><code>LBS_OWNERDRAWFIXED</code></td><td class=name1><code>:ownerdrawvariable</code></td><td class=type><code>LBS_OWNERDRAWVARIABLE</code></td></tr>
|
|
62
|
+
<tr><td class=name1><code>:sort</code></td><td class=type><code>LBS_SORT</code></td><td class=name1><code>:standard</code></td><td class=type><code>LBS_STANDARD</code></td></tr>
|
|
63
|
+
<tr><td class=name1><code>:usetabstops</code></td><td class=type><code>LBS_USETABSTOPS</code></td><td class=name1><code>:wantkeyboardinput</code></td><td class=type><code>LBS_WANTKEYBOARDINPUT</code></td></tr>
|
|
64
|
+
</table>
|
|
65
|
+
<h4> Pre-defined events <span class=spl> ( can be added by `events=` method )</span></h4>
|
|
66
|
+
<p></p>
|
|
67
|
+
<table>
|
|
68
|
+
<tr><th width=20%>Symbol</th><th width=20%>Notification code</th><th>Definition <span class=spl>( `???' is name of the control )</span></th></tr>
|
|
69
|
+
<tr><td class=name1><code>:dblclk</code></td><td class=type><code>LBN_DBLCLK</code></td><td class=desc><code>???_dblclk(idcmd, code, hwnd)</code></td></code></tr>
|
|
70
|
+
<tr><td class=name1><code>:killfocus</code></td><td class=type><code>LBN_KILLFOCUS</code></td><td class=desc><code>???_killfocus(idcmd, code, hwnd)</code></td></code></tr>
|
|
71
|
+
<tr><td class=name1><code>:selcancel</code></td><td class=type><code>LBN_SELCANCEL</code></td><td class=desc><code>???_selcancel(idcmd, code, hwnd)</code></td></code></tr>
|
|
72
|
+
<tr><td class=name1><code>:selchange</code></td><td class=type><code>LBN_SELCHANGE</code></td><td class=desc><code>???_selchange(idcmd, code, hwnd)</code></td></code></tr>
|
|
73
|
+
<tr><td class=name1><code>:setfocus</code></td><td class=type><code>LBN_SETFOCUS</code></td><td class=desc><code>???_setfocus(idcmd, code, hwnd)</code></td></code></tr>
|
|
74
|
+
</table>
|
|
75
|
+
<h4> Default events <span class=spl>( can be defined without using `events=' method )</h4>
|
|
76
|
+
<p></p>
|
|
77
|
+
<dl>
|
|
78
|
+
<dt><code>???_selchange(idcmd, code, hwnd)</code></dt>
|
|
79
|
+
</dl>
|
|
80
|
+
<h4> Sample script </h4>
|
|
81
|
+
<pre class=cd>
|
|
82
|
+
require <span class="str">'wrb'</span>
|
|
83
|
+
<span class="kwd">module</span> WR
|
|
84
|
+
<span class="kwd">class</span> Myform < Form
|
|
85
|
+
<span class="kwd">def</span> initialize
|
|
86
|
+
<span class="kwd">self</span>.size = 268, 201
|
|
87
|
+
<span class="kwd">self</span>.inheritfont = [<span class="str">"Meiryo"</span>, -12]
|
|
88
|
+
@lbox1 = _<< Listbox[<span class="sym">:lbox1</span>, <span class="str">""</span>, 4, 4, 200, 160]
|
|
89
|
+
(1..10).each{|i| @lbox1 << <span class="str">"item#{i}"</span>}
|
|
90
|
+
<span class="kwd">end</span>
|
|
91
|
+
<span class="kwd">self</span>.start
|
|
92
|
+
<span class="kwd">end</span>
|
|
93
|
+
<span class="kwd">end</span> </pre>
|
|
94
|
+
|
|
95
|
+
</body>
|
|
96
|
+
</html>
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta content="text/html; charset=utf-8" http-equiv="content-type">
|
|
5
|
+
<title>Listview</title>
|
|
6
|
+
<link href="wrb.css" type="text/css" rel="stylesheet">
|
|
7
|
+
<link rel="shortcut icon" href="favicon.png">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h3> Listview < <a href="wincontrol.html">WinControl</a> <span class=gohome> <a href="index.html">Home </a> <div class=imgright><img src="images/listview.png"></div>
|
|
11
|
+
</span></h3>
|
|
12
|
+
<p class=fixedh>A window that displays a collection of items. This provides several ways to arrange and display items.
|
|
13
|
+
<br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
|
|
14
|
+
window-controls"> Windows Control section of Microsoft Docs.</a>
|
|
15
|
+
</p>
|
|
16
|
+
<h4> Instance methods </h4>
|
|
17
|
+
<dl>
|
|
18
|
+
<dt><code><<(arg)</code></dt>
|
|
19
|
+
<dd>Adds the args at last of the items.<br>Give a String or a Array of [String, Object] as args.</dd>
|
|
20
|
+
<dt><code>bkcolor()</code></dt>
|
|
21
|
+
<dd>Gets the background color of this control.</dd>
|
|
22
|
+
<dt><code>bkcolor=(clr)</code></dt>
|
|
23
|
+
<dd>Sets the background color of this control.</dd>
|
|
24
|
+
<dt><code>checkboxes()</code></dt>
|
|
25
|
+
<dd>Retreives whether check boxes for items is enabled in this list-view control.</dd>
|
|
26
|
+
<dt><code>checkboxes=(f)</code></dt>
|
|
27
|
+
<dd>Sets whether check boxes for items is enabled in this list-view control.</dd>
|
|
28
|
+
<dt><code>clear()</code></dt>
|
|
29
|
+
<dd>Clears all items in this list-view control.</dd>
|
|
30
|
+
<dt><code>columns()</code></dt>
|
|
31
|
+
<dd>Gets the columns of a listview.Returns a instance of Listview::Columns.</dd>
|
|
32
|
+
<dt><code>columns=(args)</code></dt>
|
|
33
|
+
<dd>Sets the collumns of header of a Listview</dd>
|
|
34
|
+
<dt><code>count()</code></dt>
|
|
35
|
+
<dd>Retreives count of items.</dd>
|
|
36
|
+
<dt><code>delete(index=nil, number=1)</code></dt>
|
|
37
|
+
<dd>Deletes items at specified <i>index</i> and <i>number</i> from this control.<br>If no arguments given, deletes self.</dd>
|
|
38
|
+
<dt><code>delete_item(index)</code></dt>
|
|
39
|
+
<dd>Deletes item of specified <i>index</i> from this control.</dd>
|
|
40
|
+
<dt><code>each(){|item| ... }</code></dt>
|
|
41
|
+
<dd>Performs the block for each <i>item</i> in this listview as a block parameter.</dd>
|
|
42
|
+
<dt><code>editlabel(idx)</code></dt>
|
|
43
|
+
<dd>Begins in-place editing of the specified list-view item's text.</dd>
|
|
44
|
+
<dt><code>ensurevisible(i, partial=true)</code></dt>
|
|
45
|
+
<dd>Ensures that specified list-view item is either entirely or partially visible, scrolling the list-view control if necessary.</dd>
|
|
46
|
+
<dt><code>fetch(idx)</code></dt>
|
|
47
|
+
<dd>Gets an image-list item specified index.</dd>
|
|
48
|
+
<dt><code>find(start=-1, param: nil, string: nil, substring: nil, wrap: nil, nearestxy: nil, direction: nil)</code></dt>
|
|
49
|
+
<dd>Searches for a list-view item with the specified characteristics.</dd>
|
|
50
|
+
<dt><code>focused()</code></dt>
|
|
51
|
+
<dd>Searches the index of focused item.</dd>
|
|
52
|
+
<dt><code>focused=(idx)</code></dt>
|
|
53
|
+
<dd>Sets the specified item to focused.</dd>
|
|
54
|
+
<dt><code>fullrowselect()</code></dt>
|
|
55
|
+
<dd>Retreives whether full-row selection is enabled in this list-view control.</dd>
|
|
56
|
+
<dt><code>fullrowselect=(f)</code></dt>
|
|
57
|
+
<dd>Sets whether full-row selection is enabled in this list-view control.</dd>
|
|
58
|
+
<dt><code>get_extendedstyle(xstyle)</code></dt>
|
|
59
|
+
<dd>Gets the extended styles that are currently in use for this list-view control.</dd>
|
|
60
|
+
<dt><code>getnextitem(start, flag)</code></dt>
|
|
61
|
+
<dd>Searches for a list-view item that has the specified properties and bears the specified relationship to a specified item.</dd>
|
|
62
|
+
<dt><code>gridlines()</code></dt>
|
|
63
|
+
<dd>Retreives whether displays gridlines around items and subitems.</dd>
|
|
64
|
+
<dt><code>gridlines=(f)</code></dt>
|
|
65
|
+
<dd>Sets whether displays gridlines around items and subitems.</dd>
|
|
66
|
+
<dt><code>groupheaderimagelist()</code></dt>
|
|
67
|
+
<dd>Gets a group-header imagelist assigned to this control.</dd>
|
|
68
|
+
<dt><code>groupheaderimagelist=(il)</code></dt>
|
|
69
|
+
<dd>Assignes a group-header imagelist to this control.</dd>
|
|
70
|
+
<dt><code>headerdragdrop()</code></dt>
|
|
71
|
+
<dd>Retreives whether drag-and-drop reordering of columns is enabled in this list-view control.</dd>
|
|
72
|
+
<dt><code>headerdragdrop=(f)</code></dt>
|
|
73
|
+
<dd>Sets whether drag-and-drop reordering of columns is enabled in this list-view control.</dd>
|
|
74
|
+
<dt><code>hittest(x, y)</code></dt>
|
|
75
|
+
<dd>Determines which list-view item, if any, is at a specified position.</dd>
|
|
76
|
+
<dt><code>imagelist()</code></dt>
|
|
77
|
+
<dd>Gets a normal and a small imagelist assigned to this Listview control.</dd>
|
|
78
|
+
<dt><code>imagelist=([normaliamge,] smallimage)</code></dt>
|
|
79
|
+
<dd>Assignes a normal and a small imagelist to this Listview control.</dd>
|
|
80
|
+
<dt><code>insert(index, length=1, *args)</code></dt>
|
|
81
|
+
<dt><code>[]=(index, length=1, *args)</code></dt>
|
|
82
|
+
<dd>Inserts and replaces at the specified <i>index</i> and <i>length</i> by the <i>items</i>.<br>Give the arrays of [[<i>text</i>, <i>image</i>, <i>indent</i>, <i>data</i>], ... ] as <i>args</i>.</dd>
|
|
83
|
+
<dt><code>insert_item(idx, lvitem, arg)</code></dt>
|
|
84
|
+
<dd>Inserts an item into the Listview.This is low level method, so shuld be used `[]=' or `insert'.</dd>
|
|
85
|
+
<dt><code>last()</code></dt>
|
|
86
|
+
<dd>Gets the last of item in this list-view control.</dd>
|
|
87
|
+
<dt><code>multiselect()</code></dt>
|
|
88
|
+
<dd>Gets wheter the multiple items may be selected.</dd>
|
|
89
|
+
<dt><code>multiselect=(f)</code></dt>
|
|
90
|
+
<dd>Sets wheter the multiple items may be selected. By default, multiple items may be selected.</dd>
|
|
91
|
+
<dt><code>normalimagelist()</code></dt>
|
|
92
|
+
<dd>Gets a normal imagelist assigned to this control.</dd>
|
|
93
|
+
<dt><code>normalimagelist=(il)</code></dt>
|
|
94
|
+
<dd>Assignes a normal imagelist to this control.</dd>
|
|
95
|
+
<dt><code>selections()</code></dt>
|
|
96
|
+
<dd>Retreives the list of selected items in this list-view control.</dd>
|
|
97
|
+
<dt><code>set_extendedstyle(xstyle, f=true)</code></dt>
|
|
98
|
+
<dt><code>extendedstyle=(xstyle, f=true)</code></dt>
|
|
99
|
+
<dd>Sets extended styles in this list-view control.</dd>
|
|
100
|
+
<dt><code>showselalways()</code></dt>
|
|
101
|
+
<dd>Gets whether selection is shown always, if any.</dd>
|
|
102
|
+
<dt><code>showselalways=(f)</code></dt>
|
|
103
|
+
<dd>The selection, if any, is always shown, even if the control does not have the focus.</dd>
|
|
104
|
+
<dt><code>slice(idx, num=1)</code></dt>
|
|
105
|
+
<dt><code>[](idx, num=1)</code></dt>
|
|
106
|
+
<dd>Retreives the array of Listview::Item at the specified index and length.</dd>
|
|
107
|
+
<dt><code>smallimagelist()</code></dt>
|
|
108
|
+
<dd>Gets a small imagelist assigned to this control.</dd>
|
|
109
|
+
<dt><code>smallimagelist=(il)</code></dt>
|
|
110
|
+
<dd>Assignes a small imagelist to this control.</dd>
|
|
111
|
+
<dt><code>stateimagelist()</code></dt>
|
|
112
|
+
<dd>Gets a state imagelist assigned to this control.</dd>
|
|
113
|
+
<dt><code>stateimagelist=(il)</code></dt>
|
|
114
|
+
<dd>Assignes a state imagelist to this control.</dd>
|
|
115
|
+
<dt><code>stringwidth(txt)</code></dt>
|
|
116
|
+
<dd>Determines the width of a specified string using this list-view control's current font.</dd>
|
|
117
|
+
<dt><code>textbkcolor()</code></dt>
|
|
118
|
+
<dd>Gets the text background color of this list-view control.</dd>
|
|
119
|
+
<dt><code>textbkcolor=(clr)</code></dt>
|
|
120
|
+
<dd>Sets the background color of text in this list-view control.</dd>
|
|
121
|
+
<dt><code>textcolor()</code></dt>
|
|
122
|
+
<dd>Gets the text color of this list-view control.</dd>
|
|
123
|
+
<dt><code>textcolor=(clr)</code></dt>
|
|
124
|
+
<dd>Sets the text color of a list-view control.</dd>
|
|
125
|
+
<dt><code>tooltip()</code></dt>
|
|
126
|
+
<dd>Retrieves the tooltip control that the list-view control uses to display tooltips.</dd>
|
|
127
|
+
<dt><code>tooltip=(tt)</code></dt>
|
|
128
|
+
<dd>Sets the tooltip control that the list-view control will use to display tooltips.</dd>
|
|
129
|
+
<dt><code>trackselect()</code></dt>
|
|
130
|
+
<dd>Retreives whether hot-track selection is enabled in this list-view control.</dd>
|
|
131
|
+
<dt><code>trackselect=(f)</code></dt>
|
|
132
|
+
<dd>Sets whether hot-track selection is enabled in this list-view control.</dd>
|
|
133
|
+
<dt><code>viewmode()</code></dt>
|
|
134
|
+
<dd>Gets a view-mode of this list-vew control.</dd>
|
|
135
|
+
<dt><code>viewmode=(mode)</code></dt>
|
|
136
|
+
<dd>Sets a view-mode of this lis-view control. You can use following symbols instead of integer value.<br>:reportview, :iconview, :smalliconview, :listview</dd>
|
|
137
|
+
<dt><code>viewmode_to_sym()</code></dt>
|
|
138
|
+
<dd>Converts a integer value of view-mode to symbol.</dd>
|
|
139
|
+
</dl>
|
|
140
|
+
<h4> Listview styles <span class=spl>( both the symbols and the integers can be used )</span></h4>
|
|
141
|
+
<p></p>
|
|
142
|
+
<table>
|
|
143
|
+
<tr><th>Symbol</th><th>Integer value</th><th>Symbol</th><th>Integer value</th></tr>
|
|
144
|
+
<tr><td class=name1><code>:alignleft</code></td><td class=type><code>LVS_ALIGNLEFT</code></td><td class=name1><code>:alingtop</code></td><td class=type><code>LVS_ALIGNTOP</code></td></tr>
|
|
145
|
+
<tr><td class=name1><code>:autoarrange</code></td><td class=type><code>LVS_AUTOARRANGE</code></td><td class=name1><code>:editlabels</code></td><td class=type><code>LVS_EDITLABELS</code></td></tr>
|
|
146
|
+
<tr><td class=name1><code>:iconview</code></td><td class=type><code>LVS_ICON</code></td><td class=name1><code>:listview</code></td><td class=type><code>LVS_LIST</code></td></tr>
|
|
147
|
+
<tr><td class=name1><code>:nocolumnheader</code></td><td class=type><code>LVS_NOCOLUMNHEADER</code></td><td class=name1><code>:nolabelwrap</code></td><td class=type><code>LVS_NOLABELWRAP</code></td></tr>
|
|
148
|
+
<tr><td class=name1><code>:noscroll</code></td><td class=type><code>LVS_NOSCROLL</code></td><td class=name1><code>:nosortheader</code></td><td class=type><code>LVS_NOSORTHEADER</code></td></tr>
|
|
149
|
+
<tr><td class=name1><code>:ownerdata</code></td><td class=type><code>LVS_OWNERDATA</code></td><td class=name1><code>:ownerdrawfixed</code></td><td class=type><code>LVS_OWNERDRAWFIXED</code></td></tr>
|
|
150
|
+
<tr><td class=name1><code>:reportview</code></td><td class=type><code>LVS_REPORT</code></td><td class=name1><code>:shareimagelists</code></td><td class=type><code>LVS_SHAREIMAGELISTS</code></td></tr>
|
|
151
|
+
<tr><td class=name1><code>:showselalways</code></td><td class=type><code>LVS_SHOWSELALWAYS</code></td><td class=name1><code>:singlesel</code></td><td class=type><code>LVS_SINGLESEL</code></td></tr>
|
|
152
|
+
<tr><td class=name1><code>:smalliconview</code></td><td class=type><code>LVS_SMALLICON</code></td><td class=name1><code>:sortascending</code></td><td class=type><code>LVS_SORTASCENDING</code></td></tr>
|
|
153
|
+
<tr><td class=name1><code>:sortdescending</code></td><td class=type><code>LVS_SORTDESCENDING</code></td></tr>
|
|
154
|
+
</table>
|
|
155
|
+
<h4> Pre-defined events <span class=spl> ( can be added by `events=` method )</span></h4>
|
|
156
|
+
<p></p>
|
|
157
|
+
<table>
|
|
158
|
+
<tr><th width=20%>Symbol</th><th width=20%>Notification code</th><th>Definition <span class=spl>( `???' is name of the control )</span></th></tr>
|
|
159
|
+
<tr><td class=name1><code>:begindrag</code></td><td class=type><code>LVN_BEGINDRAG</code></td><td class=desc><code>???_begindrag(arg)<span class=ralign>arg is a NMLISTVIEW</span></code></td></code></tr>
|
|
160
|
+
<tr><td class=name1><code>:beginlabeledit</code></td><td class=type><code>LVN_BEGINLABELEDIT</code></td><td class=desc><code>???_beginlabeledit(arg)<span class=ralign>arg is a NMLVDISPINFO</span></code></td></code></tr>
|
|
161
|
+
<tr><td class=name1><code>:beginrdrag</code></td><td class=type><code>LVN_BEGINRDRAG</code></td><td class=desc><code>???_beginrdrag(arg)<span class=ralign>arg is a NMLISTVIEW</span></code></td></code></tr>
|
|
162
|
+
<tr><td class=name1><code>:click</code></td><td class=type><code>NM_CLICK</code></td><td class=desc><code>???_click(arg)<span class=ralign>arg is a NMITEMACTIVATE</span></code></td></code></tr>
|
|
163
|
+
<tr><td class=name1><code>:columnclick</code></td><td class=type><code>LVN_COLUMNCLICK</code></td><td class=desc><code>???_columnclick(arg)<span class=ralign>arg is a NMLISTVIEW</span></code></td></code></tr>
|
|
164
|
+
<tr><td class=name1><code>:customdraw</code></td><td class=type><code>NM_CUSTOMDRAW</code></td><td class=desc><code>???_customdraw(arg)<span class=ralign>arg is a NMLVCUSTOMDRAW</span></code></td></code></tr>
|
|
165
|
+
<tr><td class=name1><code>:dblclk</code></td><td class=type><code>NM_DBLCLK</code></td><td class=desc><code>???_dblclk(arg)<span class=ralign>arg is a NMITEMACTIVATE</span></code></td></code></tr>
|
|
166
|
+
<tr><td class=name1><code>:deleteitem</code></td><td class=type><code>LVN_DELETEITEM</code></td><td class=desc><code>???_deleteitem(arg)<span class=ralign>arg is a NMLISTVIEW</span></code></td></code></tr>
|
|
167
|
+
<tr><td class=name1><code>:endlabeledit</code></td><td class=type><code>LVN_ENDLABELEDIT</code></td><td class=desc><code>???_endlabeledit(arg)<span class=ralign>arg is a NMLVDISPINFO</span></code></td></code></tr>
|
|
168
|
+
<tr><td class=name1><code>:hover</code></td><td class=type><code>NM_HOVER</code></td><td class=desc><code>???_hover(arg)<span class=ralign>arg is a NMHDR</span></code></td></code></tr>
|
|
169
|
+
<tr><td class=name1><code>:insertitem</code></td><td class=type><code>LVN_INSERTITEM</code></td><td class=desc><code>???_insertitem(arg)<span class=ralign>arg is a NMLISTVIEW</span></code></td></code></tr>
|
|
170
|
+
<tr><td class=name1><code>:itemactivate</code></td><td class=type><code>LVN_ITEMACTIVATE</code></td><td class=desc><code>???_itemactivate(arg)<span class=ralign>arg is a NMITEMACTIVATE</span></code></td></code></tr>
|
|
171
|
+
<tr><td class=name1><code>:itemchanged</code></td><td class=type><code>LVN_ITEMCHANGED</code></td><td class=desc><code>???_itemchanged(arg)<span class=ralign>arg is a NMLISTVIEW</span></code></td></code></tr>
|
|
172
|
+
<tr><td class=name1><code>:itemchanging</code></td><td class=type><code>LVN_ITEMCHANGING</code></td><td class=desc><code>???_itemchanging(arg)<span class=ralign>arg is a NMLISTVIEW</span></code></td></code></tr>
|
|
173
|
+
<tr><td class=name1><code>:keydown</code></td><td class=type><code>LVN_KEYDOWN</code></td><td class=desc><code>???_keydown(arg)<span class=ralign>arg is a LVKEYDOWN</span></code></td></code></tr>
|
|
174
|
+
<tr><td class=name1><code>:killfocus</code></td><td class=type><code>NM_KILLFOCUS</code></td><td class=desc><code>???_killfocus(arg)<span class=ralign>arg is a NMHDR</span></code></td></code></tr>
|
|
175
|
+
<tr><td class=name1><code>:rclick</code></td><td class=type><code>NM_RCLICK</code></td><td class=desc><code>???_rclick(arg)<span class=ralign>arg is a NMITEMACTIVATE</span></code></td></code></tr>
|
|
176
|
+
<tr><td class=name1><code>:rdblclk</code></td><td class=type><code>NM_RDBLCLK</code></td><td class=desc><code>???_rdblclk(arg)<span class=ralign>arg is a NMITEMACTIVATE</span></code></td></code></tr>
|
|
177
|
+
<tr><td class=name1><code>:releasedcapture</code></td><td class=type><code>NM_RELEASEDCAPTURE</code></td><td class=desc><code>???_releasedcapture(arg)<span class=ralign>arg is a NMHDR</span></code></td></code></tr>
|
|
178
|
+
<tr><td class=name1><code>:return</code></td><td class=type><code>NM_RETURN</code></td><td class=desc><code>???_return(arg)<span class=ralign>arg is a NMHDR</span></code></td></code></tr>
|
|
179
|
+
<tr><td class=name1><code>:setfocus</code></td><td class=type><code>NM_SETFOCUS</code></td><td class=desc><code>???_setfocus(arg)<span class=ralign>arg is a NMHDR</span></code></td></code></tr>
|
|
180
|
+
</table>
|
|
181
|
+
<h4> Default events <span class=spl>( can be defined without using `events=' method )</h4>
|
|
182
|
+
<p></p>
|
|
183
|
+
<dl>
|
|
184
|
+
<dt><code>???_click(NMITEMACTIVATE)</code></dt>
|
|
185
|
+
<dt><code>???_itemchanged(NMLISTVIEW)</code></dt>
|
|
186
|
+
</dl>
|
|
187
|
+
<h3> Listview::Column </h3>
|
|
188
|
+
<h4> Instance methods </h4>
|
|
189
|
+
<dl>
|
|
190
|
+
<dt><code>delete()</code></dt>
|
|
191
|
+
<dt><code>format()</code></dt>
|
|
192
|
+
<dt><code>format=(fmt)</code></dt>
|
|
193
|
+
<dt><code>format_to_sym()</code></dt>
|
|
194
|
+
<dt><code>image()</code></dt>
|
|
195
|
+
<dt><code>image=(i)</code></dt>
|
|
196
|
+
<dt><code>lvcolumn()</code></dt>
|
|
197
|
+
<dt><code>owner=(owner)</code></dt>
|
|
198
|
+
<dt><code>text()</code></dt>
|
|
199
|
+
<dt><code>text=(txt)</code></dt>
|
|
200
|
+
<dt><code>width()</code></dt>
|
|
201
|
+
<dt><code>width=(w)</code></dt>
|
|
202
|
+
</dl>
|
|
203
|
+
<h3> Listview::Columns </h3>
|
|
204
|
+
<h4> Instance methods </h4>
|
|
205
|
+
<dl>
|
|
206
|
+
<dt><code><<(arg)</code></dt>
|
|
207
|
+
<dt><code>[](idx)</code></dt>
|
|
208
|
+
<dt><code>[]=(idx, *args)</code></dt>
|
|
209
|
+
<dt><code>clear()</code></dt>
|
|
210
|
+
<dt><code>each()</code></dt>
|
|
211
|
+
<dt><code>size()</code></dt>
|
|
212
|
+
<dt><code>count()</code></dt>
|
|
213
|
+
</dl>
|
|
214
|
+
<h3> Listview::Item </h3>
|
|
215
|
+
<h4> Instance methods </h4>
|
|
216
|
+
<dl>
|
|
217
|
+
<dt><code>[](idx)</code></dt>
|
|
218
|
+
<dt><code>[]=(idx, txt)</code></dt>
|
|
219
|
+
<dt><code>checked()</code></dt>
|
|
220
|
+
<dt><code>cheched?()</code></dt>
|
|
221
|
+
<dt><code>checked=(f)</code></dt>
|
|
222
|
+
<dt><code>columns()</code></dt>
|
|
223
|
+
<dt><code>data=(data)</code></dt>
|
|
224
|
+
<dt><code>delete()</code></dt>
|
|
225
|
+
<dt><code>editlabel()</code></dt>
|
|
226
|
+
<dt><code>focused()</code></dt>
|
|
227
|
+
<dt><code>focused=(f)</code></dt>
|
|
228
|
+
<dt><code>getstate(mask)</code></dt>
|
|
229
|
+
<dt><code>image()</code></dt>
|
|
230
|
+
<dt><code>image=(idx)</code></dt>
|
|
231
|
+
<dt><code>indent()</code></dt>
|
|
232
|
+
<dt><code>indent=(idt)</code></dt>
|
|
233
|
+
<dt><code>rect()</code></dt>
|
|
234
|
+
<dt><code>selected()</code></dt>
|
|
235
|
+
<dt><code>selected=(f)</code></dt>
|
|
236
|
+
<dt><code>setstate(mask, state)</code></dt>
|
|
237
|
+
<dt><code>text()</code></dt>
|
|
238
|
+
<dt><code>text=(txt)</code></dt>
|
|
239
|
+
</dl>
|
|
240
|
+
<h4> Sample script </h4>
|
|
241
|
+
<pre class=cd>
|
|
242
|
+
require <span class="str">'wrb'</span>
|
|
243
|
+
<span class="kwd">module</span> WR
|
|
244
|
+
<span class="kwd">class</span> MyForm < Form
|
|
245
|
+
<span class="kwd">def</span> initialize() <span class="cmt"># Generated by FormDesigner, and modified.
|
|
246
|
+
</span> <span class="kwd">self</span>.size = [268, 201]
|
|
247
|
+
<span class="kwd">self</span>.inheritfont = [<span class="str">'Meiryo'</span>, -12]
|
|
248
|
+
_<< Imagelist.fromfile(<span class="sym">:fileimg32</span>, <span class="str">"./sampleimg32.iml"</span>)
|
|
249
|
+
_<< Imagelist.fromfile(<span class="sym">:fileimg16</span>, <span class="str">"./sampleimg16.iml"</span>)
|
|
250
|
+
_<< Listview[<span class="sym">:listview1</span>, <span class="str">""</span>, 0, 0, 100, 200, <span class="sym">:margin</span>=>[0, 24, <span class="kwd">nil</span>, 0], <span class="sym">:smallimagelist</span>=>_fileimg16, <span class="sym">:normalimagelist</span>=>_fileimg32]
|
|
251
|
+
_<< Listview[<span class="sym">:listview2</span>, <span class="str">""</span>, 112, 0, 176, 200, 0x1, <span class="sym">:margin</span>=>[100, 0, 0, 0], <span class="sym">:gridlines</span>=><span class="kwd">true</span>, <span class="sym">:fullrowselect</span>=><span class="kwd">true</span>]
|
|
252
|
+
_listview2.columns << [<span class="str">"Name"</span>, 64, 0]
|
|
253
|
+
_listview2.columns << [<span class="str">"Size"</span>, 32, 3]
|
|
254
|
+
_listview2.columns << [<span class="str">"Value"</span>, 52, 1]
|
|
255
|
+
_<< Radiobutton[<span class="sym">:smallbtn</span>, <span class="str">"List"</span>, 4, 4, 44, 20, 0x9,<span class="sym">:font</span>=><span class="sym">:parent</span>]
|
|
256
|
+
_<< Radiobutton[<span class="sym">:normalbtn</span>, <span class="str">"Icon"</span>, 48, 4, 52, 18, 0x9, <span class="sym">:checked</span>=><span class="kwd">true</span>, <span class="sym">:font</span>=><span class="sym">:parent</span>]
|
|
257
|
+
<span class="kwd">end</span>
|
|
258
|
+
|
|
259
|
+
<span class="kwd">def</span> created()
|
|
260
|
+
_listview1 << [[<span class="str">"closed"</span>, 0], [<span class="str">'opend'</span>, 1], [<span class="str">'empty'</span>, 2], [<span class="str">'document'</span>, 3], [<span class="str">'Ruby!!'</span>, 4]]
|
|
261
|
+
_listview2 << [[<span class="str">"closed\t0\t100"</span>], [<span class="str">"opend\t1\t200"</span>], [<span class="str">"empty\t2\t300"</span>], [<span class="str">"document\t3\t400"</span>], [<span class="str">"Ruby!!\tinf\tInfinity"</span>]]
|
|
262
|
+
<span class="kwd">end</span>
|
|
263
|
+
|
|
264
|
+
<span class="kwd">def</span> normalbtn_clicked(*)
|
|
265
|
+
_listview1.viewmode = <span class="sym">:iconview</span>
|
|
266
|
+
<span class="kwd">end</span>
|
|
267
|
+
<span class="kwd">def</span> smallbtn_clicked(*)
|
|
268
|
+
_listview1.viewmode = <span class="sym">:listview</span>
|
|
269
|
+
<span class="kwd">end</span>
|
|
270
|
+
|
|
271
|
+
<span class="kwd">self</span>.start
|
|
272
|
+
<span class="kwd">end</span>
|
|
273
|
+
<span class="kwd">end</span>
|
|
274
|
+
</pre>
|
|
275
|
+
|
|
276
|
+
</body>
|
|
277
|
+
</html>
|
|
@@ -0,0 +1,596 @@
|
|
|
1
|
+
require 'pp'
|
|
2
|
+
require 'wrb'
|
|
3
|
+
|
|
4
|
+
module WR
|
|
5
|
+
class ParseScript < Ripper::Filter
|
|
6
|
+
# Ripper::SCANNER_EVENTS -> [:CHAR, :__end__, :backref, :backtick, :comma, :comment, :const, :cvar, :embdoc, :embdoc_beg, :embdoc_end, :embexpr_beg, :embexpr_end, :embvar, :float, :gvar, :heredoc_beg, :heredoc_end, :ident, :ignored_nl, :imaginary, :int, :ivar, :kw, :label, :label_end, :lbrace, :lbracket, :lparen, :nl, :op, :period, :qsymbols_beg, :qwords_beg, :rational, :rbrace, :rbracket, :regexp_beg, :regexp_end, :rparen, :semicolon, :sp, :symbeg, :symbols_beg, :tlambda, :tlambeg, :tstring_beg, :tstring_content, :tstring_end, :words_beg, :words_sep]
|
|
7
|
+
|
|
8
|
+
attr_reader :result, :modules
|
|
9
|
+
def initialize(src, fname=nil, lnno=1)
|
|
10
|
+
super(src, fname, lnno)
|
|
11
|
+
@result = []
|
|
12
|
+
@depth = 0
|
|
13
|
+
@comments = []
|
|
14
|
+
@modules = {:depth=>0}
|
|
15
|
+
@current = @modules
|
|
16
|
+
@methods = {}
|
|
17
|
+
@required = {}
|
|
18
|
+
@lines = src.lines
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
############## event handers ##############
|
|
22
|
+
|
|
23
|
+
def perform_require(feature)
|
|
24
|
+
if feature =~ /wrb\/([\w_]+)/
|
|
25
|
+
s = open("../#{$1}.rb"){|f| f.read}
|
|
26
|
+
ps = ParseScript.new(s)
|
|
27
|
+
ps.parse
|
|
28
|
+
ps.modules
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def perform_nl(token, pd) #dpp lineno, pd
|
|
33
|
+
if @getting_hash_data && pd=~/\A\s*\:?\w+\s*=>\s*(\:?\w+|\[.+\])/
|
|
34
|
+
if pd
|
|
35
|
+
k, v = pd.split('=>')
|
|
36
|
+
@getting_hash_data[k.strip] = v.strip
|
|
37
|
+
@getting_hash_data = nil
|
|
38
|
+
end
|
|
39
|
+
return nil
|
|
40
|
+
elsif @getting_array_data #; dpp pd, token, @getting_array_data
|
|
41
|
+
if pd
|
|
42
|
+
@getting_array_data[pd.strip] = token.strip
|
|
43
|
+
@getting_array_data = nil
|
|
44
|
+
end
|
|
45
|
+
return nil
|
|
46
|
+
end
|
|
47
|
+
case pd
|
|
48
|
+
when /\A\s*(module|class)\s+([A-Z]\w*.*)/ #@comments
|
|
49
|
+
nm = $2.strip
|
|
50
|
+
k = nm.split('<')[0].strip
|
|
51
|
+
@current[k] ||= {:type=>$1, :fullname=>nm, :parent=>@current, :depth=>@depth,
|
|
52
|
+
:comments=>@comments.dup, :singletons=>{}, :methods=>{}, :aliases=>{},
|
|
53
|
+
:styles=>{}, :predefinedevents=>{}, :defaultevents=>{}}
|
|
54
|
+
@current = @current[k]
|
|
55
|
+
when /\A\s*def\s+(self.[A-Za-z_]\w*[?\=]?|self\.\[\]=?)(.+)/ # singleton method
|
|
56
|
+
return nil if @depth>4
|
|
57
|
+
@current[:singletons][$1.strip] = [$2, @comments.dup]
|
|
58
|
+
when /\A\s*def\s+([A-Za-z_]\w*[?\=!]?|\[\]=?|[+-<>|&]+)(.+)/ # instance method
|
|
59
|
+
return nil if @depth>4 #; dpp @current[:fullname], $1
|
|
60
|
+
@current[:methods][$1.strip] = [$2, @comments.dup]
|
|
61
|
+
when /\A\s*alias\s+(\:?[\w_]+[=?]?|[\[\]+-<>=|]+)\s+(\:?[\w_]+[=?]?|[\[\]+-<>=|]+)/
|
|
62
|
+
# dpp lineno, $1, $2.tr(':',''), @current[:methods][$2.tr(':','')]
|
|
63
|
+
if @current[:methods][$2.tr(': ','')]
|
|
64
|
+
if @current[:aliases][$2]
|
|
65
|
+
@current[:aliases][$2] << $1
|
|
66
|
+
else
|
|
67
|
+
@current[:aliases][$2] = [$1]
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
when /\A\s*require\W+['"]([\w\/]+)/
|
|
71
|
+
mod=perform_require($1);#dpp mod['WR'].keys if mod && mod['WR']
|
|
72
|
+
if @required.empty?
|
|
73
|
+
@required.update mod if mod
|
|
74
|
+
else
|
|
75
|
+
@required['WR'].update(mod['WR']) if mod && mod['WR']
|
|
76
|
+
end
|
|
77
|
+
when /\A\s*include\W+([A-Z][\w_]*)/
|
|
78
|
+
if (mod1=@required['WR']) && (h=mod1[$1])
|
|
79
|
+
@current[:methods].update(h[:methods])
|
|
80
|
+
@current[:aliases].update(h[:aliases])
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
@comments.clear
|
|
84
|
+
nil
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def on_default(event, token, pd) # ; dpp lineno, event, token, pd
|
|
88
|
+
case event
|
|
89
|
+
when :on_nl, :on_semicolon #; dpp lineno, pd
|
|
90
|
+
perform_nl(token, pd)
|
|
91
|
+
when :on_ignored_nl #; dpp lineno, pd
|
|
92
|
+
perform_nl(token, pd)
|
|
93
|
+
else
|
|
94
|
+
pd.to_s + token
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def on_embdoc(token, pd)
|
|
99
|
+
return @_current_rd=nil if token.empty?
|
|
100
|
+
case token
|
|
101
|
+
when /^\s*(self\.\s*[\w_]+[=?]?|\[\]=?|<<)(\(.*\))/ #; dpp token
|
|
102
|
+
@_current_rd = (@current[:singletons][$1.strip] = [$2.strip, []])
|
|
103
|
+
when /^\s*([\w_]+[=?]?|\[\]=?|<<)(\(.*\)(:?\{.+\})?)/
|
|
104
|
+
@_current_rd = (@current[:methods][$1.strip] = [$2.strip, []])
|
|
105
|
+
when /^\s*$/
|
|
106
|
+
@_current_rd = nil
|
|
107
|
+
else
|
|
108
|
+
@_current_rd[1] << token if @_current_rd
|
|
109
|
+
end
|
|
110
|
+
nil
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def on_rparen(token, pd)
|
|
114
|
+
# if pd=~/def (:?self\.)?[\w_]+[=?]?\s*\(.*/ #; dpp pd
|
|
115
|
+
if pd=~/\A\s*def\s+/ #; dpp pd
|
|
116
|
+
perform_nl(token, pd+token)
|
|
117
|
+
return nil
|
|
118
|
+
end
|
|
119
|
+
pd.to_s + token
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def on_lbrace(token, pd)
|
|
123
|
+
case pd
|
|
124
|
+
when /\A\s*PreDefinedEvents\s*=\s*/
|
|
125
|
+
@getting_hash_data = @current[:predefinedevents]
|
|
126
|
+
@getting_hash_data[:__COMMENTS__] = @comments.dup
|
|
127
|
+
@comments.clear
|
|
128
|
+
nil
|
|
129
|
+
when /\A\s*WinStyles\s*=\s*/
|
|
130
|
+
@getting_hash_data = @current[:styles]
|
|
131
|
+
@getting_hash_data[:__COMMENTS__] = @comments.dup
|
|
132
|
+
@comments.clear
|
|
133
|
+
nil
|
|
134
|
+
else
|
|
135
|
+
pd + token
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
def on_rbrace(token, pd) #pp @getting_hash_data
|
|
139
|
+
if @getting_hash_data
|
|
140
|
+
return @getting_hash_data = nil
|
|
141
|
+
end
|
|
142
|
+
pd + token
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def on_lbracket(token, pd)
|
|
146
|
+
case pd
|
|
147
|
+
when /\A\s*DefaultEvents\s*=\s*/#; dpp pd
|
|
148
|
+
@getting_array_data = @current[:defaultevents]
|
|
149
|
+
@getting_array_data[:__COMMENTS__] = @comments.dup
|
|
150
|
+
@comments.clear
|
|
151
|
+
return nil
|
|
152
|
+
end
|
|
153
|
+
pd + token
|
|
154
|
+
end
|
|
155
|
+
def on_rbracket(token, pd)
|
|
156
|
+
if @getting_array_data
|
|
157
|
+
return @getting_array_data = nil
|
|
158
|
+
end
|
|
159
|
+
pd + token
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def on_comma(token, pd) #dpp @getting_array_data, lineno, pd
|
|
163
|
+
if @getting_hash_data && pd=~/\A\s*\:?\w+\s*=>\s*(\:?\w+|\[.+\])/
|
|
164
|
+
k, v =pd.split('=>') #; dpp k.strip, v.strip
|
|
165
|
+
@getting_hash_data[k.strip] = v.strip
|
|
166
|
+
nil
|
|
167
|
+
elsif @getting_array_data && pd=~/\A\s*:?[\w_]+/
|
|
168
|
+
@getting_array_data[pd.strip] = ""
|
|
169
|
+
nil
|
|
170
|
+
else
|
|
171
|
+
pd.to_s + token
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def on_comment(token, pd) #; dpp lineno, pd, token #if @getting_array_data
|
|
176
|
+
if pd=~/(\w+|[\)'"`])\s*\Z/
|
|
177
|
+
perform_nl(token, pd)
|
|
178
|
+
elsif @getting_hash_data
|
|
179
|
+
if pd=~/\A\s*\:?\w+\s*=>\s*(\:?\w+|\[.+\])/
|
|
180
|
+
k, v =pd.split('=>') #; dpp k.strip, v.strip
|
|
181
|
+
@getting_hash_data[k.strip] = v.strip
|
|
182
|
+
end
|
|
183
|
+
s = @getting_hash_data[@getting_hash_data.keys.last] #; dpp s, s=~/.+#/
|
|
184
|
+
s << token unless s=~/.+\#/
|
|
185
|
+
return nil
|
|
186
|
+
elsif @getting_array_data
|
|
187
|
+
@getting_array_data[@getting_array_data.keys.last] = token.strip
|
|
188
|
+
return nil
|
|
189
|
+
end
|
|
190
|
+
@comments << token
|
|
191
|
+
nil
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def on_kw(token, pd)
|
|
195
|
+
case token
|
|
196
|
+
when 'module', 'class';# dpp lineno, @depth, token
|
|
197
|
+
@depth += 1
|
|
198
|
+
when 'begin', 'case', 'def', 'do', 'while';# dpp lineno, @depth, token
|
|
199
|
+
@depth += 1
|
|
200
|
+
when 'if', 'unless', 'until', 'while' #;dpp lineno, token, pd #, pd=~/\A\s+\z/
|
|
201
|
+
@depth += 1 if pd =~ /\A\s+\z/ || pd=~/\n\s*\z/ || pd.empty? || pd=~/[\=\+\-\*\/]\s*\z/
|
|
202
|
+
when 'end'# dpp lineno, @depth, @current[:depth]
|
|
203
|
+
@current = @current[:parent] if @depth == @current[:depth]
|
|
204
|
+
@depth -= 1
|
|
205
|
+
end
|
|
206
|
+
pd.to_s + token
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def on_ident(token, pd) #
|
|
210
|
+
case pd
|
|
211
|
+
when /\s*def\s+/
|
|
212
|
+
# dpp lineno, pd, token
|
|
213
|
+
end
|
|
214
|
+
pd.to_s + token
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
class Parse4Color < Ripper::Filter
|
|
220
|
+
def on_default(event, token, pd) #
|
|
221
|
+
case event
|
|
222
|
+
when :on_kw
|
|
223
|
+
pd << '<span class="kwd">' + token + '</span>'
|
|
224
|
+
when :on_comment
|
|
225
|
+
pd << '<span class="cmt">' + token + '</span>'
|
|
226
|
+
when :on_tstring_beg
|
|
227
|
+
pd << '<span class="str">' + token
|
|
228
|
+
when :on_tstring_end
|
|
229
|
+
pd << token + '</span>'
|
|
230
|
+
when :on_symbeg
|
|
231
|
+
@symbeg = true
|
|
232
|
+
pd << '<span class="sym">' + token
|
|
233
|
+
when :on_ident
|
|
234
|
+
if @symbeg
|
|
235
|
+
@symbeg = nil
|
|
236
|
+
pd << token + '</span>'
|
|
237
|
+
else
|
|
238
|
+
pd << token
|
|
239
|
+
end
|
|
240
|
+
else
|
|
241
|
+
pd << token
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
module WR
|
|
249
|
+
class WRBDoc
|
|
250
|
+
include ModAutoloading
|
|
251
|
+
def initialize(fname)
|
|
252
|
+
@fname = fname
|
|
253
|
+
@hsh = {}
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
def get_sampleimage()
|
|
257
|
+
simg = 'images/' + @bname + '.png'
|
|
258
|
+
path = File.dirname(__FILE__) + '/' + simg
|
|
259
|
+
File.exists?(path) ? " <div class=imgright><img src=\"#{simg}\"></div>\n" : ''
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def get_class_description(klass, hsh)
|
|
263
|
+
si = get_sampleimage()
|
|
264
|
+
s = hsh[:fullname]
|
|
265
|
+
if (a=s.split('<'))[1]
|
|
266
|
+
a[1].strip!
|
|
267
|
+
s = "#{a[0]} < <a href=\"#{a[1].downcase}.html\">#{a[1]}</a>"
|
|
268
|
+
end
|
|
269
|
+
c = hsh[:comments].map{|i| i.sub /^\s*# ?/, ''}.join
|
|
270
|
+
" <h3> #{s} <span class=gohome> <a href=\"index.html\">Home </a>#{si}</span></h3>\n" +
|
|
271
|
+
(c.empty? ? "" : " <p#{si.empty? ? '' : ' class=fixedh'}>#{c}</p>\n")
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
def _get_methods(hsh, h, m)
|
|
275
|
+
r = ""
|
|
276
|
+
h.keys.sort.each{|s|
|
|
277
|
+
i = s.intern
|
|
278
|
+
j = s.dup
|
|
279
|
+
next unless m.index(i)
|
|
280
|
+
d, c = h[j]
|
|
281
|
+
jr = j.gsub(/([\[\]\=\?])/, '\\\\\1') # add escape charactor for regexp.
|
|
282
|
+
if d
|
|
283
|
+
if c.size==1 && c[0] =~ /\s*\#$/ # Don't output.
|
|
284
|
+
next
|
|
285
|
+
elsif c[0] =~ /#\s*#{jr}(.+)/
|
|
286
|
+
r << " <dt><code>#{j}#{d=$1}</code></dt>\n"
|
|
287
|
+
c.shift
|
|
288
|
+
else
|
|
289
|
+
r << " <dt><code>#{i}#{d}</code></dt>\n"
|
|
290
|
+
end
|
|
291
|
+
if a=hsh[:aliases]
|
|
292
|
+
if ar=a[j]
|
|
293
|
+
ar.each{|i|
|
|
294
|
+
r << " <dt><code>#{i}#{d}</code></dt>\n"
|
|
295
|
+
}
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
if c
|
|
299
|
+
s = ""
|
|
300
|
+
t = []
|
|
301
|
+
c.each{|i|
|
|
302
|
+
if i=~/#\s*\w+:/
|
|
303
|
+
t << i.sub(/#/, '').strip
|
|
304
|
+
else
|
|
305
|
+
s << i.sub(/#/, '').strip
|
|
306
|
+
end
|
|
307
|
+
}
|
|
308
|
+
if s.empty?
|
|
309
|
+
elsif t.empty?
|
|
310
|
+
r << " <dd>#{s}</dd>\n"
|
|
311
|
+
else
|
|
312
|
+
r << " <dd>#{s}\n <table>\n"
|
|
313
|
+
t.each{|i|
|
|
314
|
+
nam, typ, dsc = i.split(":").map{|j| j.split(';')}.flatten
|
|
315
|
+
r << " <tr><td class=name1> #{nam} </td> <td class=type> #{typ} </td>" +
|
|
316
|
+
"<td class=desc> #{dsc} </td></tr>\n"
|
|
317
|
+
}
|
|
318
|
+
r << " </table>\n </dd>\n"
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
else
|
|
322
|
+
# r << " <dt>#{j}</dt>\n"
|
|
323
|
+
end
|
|
324
|
+
}
|
|
325
|
+
r
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def get_singleton_methods(klass, hsh)
|
|
329
|
+
return if !(h=hsh[:singletons]) || h.empty?
|
|
330
|
+
ancestor = hsh[:fullname].split('<')[1]
|
|
331
|
+
ancestor = ancestor ? eval(ancestor) : Object
|
|
332
|
+
m = klass.singleton_methods.map{|i| "self.#{i}".intern}
|
|
333
|
+
# m << "self.new".intern
|
|
334
|
+
# dpp h.keys
|
|
335
|
+
if v=h.delete("self.new")#; dpp v
|
|
336
|
+
s = v[1].map{|i| i.sub(/^\s*#/, '').strip}.join
|
|
337
|
+
r = " <dt><code>self.new#{v[0].strip}</code></dt>\n <dd>#{s}</dd>\n"
|
|
338
|
+
else
|
|
339
|
+
r = ''
|
|
340
|
+
end
|
|
341
|
+
r << _get_methods(hsh, h, m)
|
|
342
|
+
r.empty? ? "" : " <h4> Singleton methods </h4>\n <dl>\n#{r} </dl>\n"
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def get_instance_methods(klass, hsh) #; dpp hsh[:methods]
|
|
346
|
+
return if !(h=hsh[:methods]) || h.empty?
|
|
347
|
+
ancestor = hsh[:fullname].split('<')[1]
|
|
348
|
+
ancestor = ancestor ? eval(ancestor) : Object
|
|
349
|
+
m = klass.public_instance_methods
|
|
350
|
+
r = _get_methods(hsh, h, m)
|
|
351
|
+
r.empty? ? "" : " <h4> Instance methods </h4>\n <dl>\n#{r} </dl>\n"
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
def get_styles(klass, hsh)
|
|
355
|
+
return if (!h=hsh[:styles]) || h.empty?
|
|
356
|
+
k = hsh[:fullname].split('<')[0].strip
|
|
357
|
+
r = " <h4> #{k} styles <span class=spl>( both the symbols and the integers can be used )</span></h4>\n"
|
|
358
|
+
if c=h.delete(:__COMMENTS__)
|
|
359
|
+
r << " <p>" + c.map{|i| i.sub(/#\s*/, '').strip}.join + "</p>\n"
|
|
360
|
+
end
|
|
361
|
+
r << " <table>\n"
|
|
362
|
+
r << "<tr><th>Symbol</th><th>Integer value</th><th>Symbol</th><th>Integer value</th></tr>\n"
|
|
363
|
+
h.keys.sort.each_with_index{|k, i|
|
|
364
|
+
if i%2==0
|
|
365
|
+
r << " <tr><td class=name1><code>#{k}</code></td><td class=type><code>#{h[k]}</code></td>"
|
|
366
|
+
else
|
|
367
|
+
r << "<td class=name1><code>#{k}</code></td><td class=type><code>#{h[k]}</code></td></tr>\n"
|
|
368
|
+
end
|
|
369
|
+
}
|
|
370
|
+
r << "</tr>\n" if h.keys.size%2==1
|
|
371
|
+
r << " </table>\n"
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
def get_predefinedevents(klass, hsh)
|
|
376
|
+
return if !(h=hsh[:predefinedevents]) || h.empty?
|
|
377
|
+
r = " <h4> Pre-defined events <span class=spl> ( can be added by `events=` method )</span></h4>\n"
|
|
378
|
+
if c=h.delete(:__COMMENTS__)
|
|
379
|
+
r << " <p>" + c.map{|i| i.sub(/#\s*/, '').strip}.join + "</p>\n"
|
|
380
|
+
end
|
|
381
|
+
r << " <table>\n"
|
|
382
|
+
r << "<tr><th width=20%>Symbol</th><th width=20%>Notification code</th><th>Definition <span class=spl>( `???' is name of the control )</span></th></tr>\n"
|
|
383
|
+
h.keys.sort.each{|k| #dpp k, h[k]
|
|
384
|
+
if h[k].match(/\[(.+)\].*#(.+)/) #; dpp k, h[k]
|
|
385
|
+
d = $1.split(',')
|
|
386
|
+
f = $2.strip
|
|
387
|
+
else
|
|
388
|
+
d = h[k].sub(/\[(.+)\]/, '\1').split(',') #; dpp d
|
|
389
|
+
if d[0]=~/WM_COMMAND/ && d[-1]=~/hi/
|
|
390
|
+
f = "???_#{k.tr(':', '')}(idcmd, code, hwnd)"
|
|
391
|
+
elsif d[0]=~/WM_NOTIFY/ && d[-2]=~/xs/
|
|
392
|
+
c = "<span class=ralign>arg is a #{d[-1].strip}</span>"
|
|
393
|
+
f = "???_#{k.tr(':', '')}(arg)#{c}"
|
|
394
|
+
else
|
|
395
|
+
f = "???_#{k.tr(':', '')}(*args)"
|
|
396
|
+
end
|
|
397
|
+
end
|
|
398
|
+
d = d.size>=3 ? d[1].strip : d[0].strip
|
|
399
|
+
r << " <tr><td class=name1><code>#{k}</code></td><td class=type><code>#{d}</code></td><td class=desc><code>#{f}</code></td></code></tr>\n"
|
|
400
|
+
}
|
|
401
|
+
r << " </table>\n"
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
def get_defaultevents(klass, hsh)
|
|
405
|
+
return if !(h=hsh[:defaultevents]) || h.empty?
|
|
406
|
+
r = " <h4> Default events <span class=spl>( can be defined without using `events=' method )</h4>\n"
|
|
407
|
+
if c=h.delete(:__COMMENTS__)
|
|
408
|
+
r << " <p>" + c.map{|i| i.sub(/#\s*/, '').strip}.join + "</p>\n"
|
|
409
|
+
end
|
|
410
|
+
r << " <dl>\n"
|
|
411
|
+
h.keys.sort.each{|k|
|
|
412
|
+
r << " <dt><code>#{h[k].sub(/#\s*/, '')}</code></dt>\n"
|
|
413
|
+
}
|
|
414
|
+
r << " </dl>\n"
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
def get_nested_class_description(klass, hsh)
|
|
418
|
+
s = klass.to_s.sub('WR::', '')
|
|
419
|
+
c = hsh[:comments].map{|i| i.strip.sub /^#\s*/, ''}.join
|
|
420
|
+
" <h3> #{s} </h3>\n" +
|
|
421
|
+
(c.empty? ? "" : " <p>#{c}</p>\n")
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
def get_nested_class(klass, hsh)
|
|
425
|
+
h = hsh.select{|k,v| k.is_a?(String) && v[:type]=="class"}
|
|
426
|
+
s = ''
|
|
427
|
+
h.keys.each{|k| #; dpp k #hsh[k]
|
|
428
|
+
s << get_nested_class_description(klass.module_eval(k), hsh[k])#; dpp hsh[k][:methods]
|
|
429
|
+
s << get_instance_methods(klass.module_eval(k), hsh[k])
|
|
430
|
+
}
|
|
431
|
+
s
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
def get_samplescript(klass, hsh)
|
|
435
|
+
dir = File.dirname(__FILE__)
|
|
436
|
+
fname = dir + '/samples/sample_' + hsh[:fullname].split('<')[0].strip.downcase + '.rb'
|
|
437
|
+
s = (open(fname){|f| f.read} rescue nil)
|
|
438
|
+
if s
|
|
439
|
+
s = Parse4Color.new(s).parse('')
|
|
440
|
+
r = " <h4> Sample script </h4>\n"
|
|
441
|
+
r << " <pre class=cd>\n" + s + " </pre>\n"
|
|
442
|
+
end
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
def output(*r)
|
|
446
|
+
title = r.shift
|
|
447
|
+
res = <<EEOOSS
|
|
448
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
449
|
+
<html lang="en">
|
|
450
|
+
<head>
|
|
451
|
+
<meta content="text/html; charset=utf-8" http-equiv="content-type">
|
|
452
|
+
<title>#{title}</title>
|
|
453
|
+
<link href="wrb.css" type="text/css" rel="stylesheet">
|
|
454
|
+
<link rel="shortcut icon" href="favicon.png">
|
|
455
|
+
</head>
|
|
456
|
+
<body>
|
|
457
|
+
#{r.join}
|
|
458
|
+
</body>
|
|
459
|
+
</html>
|
|
460
|
+
EEOOSS
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
def parse()
|
|
464
|
+
s = open(@fname){|f| f.read}
|
|
465
|
+
@parsedata = ParseScript.new(s)
|
|
466
|
+
@parsedata.parse
|
|
467
|
+
@bname = File.basename(@fname, ".rb")
|
|
468
|
+
@cname = @parsedata.modules['WR'].select{|k, v| k.is_a?(String) && k=~/#{@bname}/i}.keys[0]
|
|
469
|
+
@klass = WR.module_eval(@cname)
|
|
470
|
+
self
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
def get_header()
|
|
474
|
+
h= @parsedata.modules["WR"][@cname]
|
|
475
|
+
if @klass < WinControl
|
|
476
|
+
cls = "Controls"
|
|
477
|
+
elsif (@klass < CommonDialog rescue nil)
|
|
478
|
+
cls = "Common dialogs"
|
|
479
|
+
elsif @klass == Dialog || @klass==Form
|
|
480
|
+
else
|
|
481
|
+
cls = "Other resources"
|
|
482
|
+
end
|
|
483
|
+
[cls, h[:fullname].split('<')[0].strip, h[:comments][0].to_s.sub(/\s*#/, '').strip]
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
def to_html()
|
|
487
|
+
klass = @klass
|
|
488
|
+
title = @cname
|
|
489
|
+
hsh = @parsedata.modules["WR"][@cname]
|
|
490
|
+
class_description = get_class_description(klass, hsh)
|
|
491
|
+
output title, class_description, get_singleton_methods(klass, hsh),
|
|
492
|
+
get_instance_methods(klass, hsh), get_styles(klass, hsh),
|
|
493
|
+
get_predefinedevents(klass, hsh), get_defaultevents(klass, hsh),
|
|
494
|
+
get_nested_class(klass, hsh), get_samplescript(klass, hsh)
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
def self.wrb_show_doc(htm)
|
|
498
|
+
pid = Registry.open(RC::HKCU,
|
|
499
|
+
'Software\Microsoft\Windows\Shell\Associations\UrlAssociations\HTTP\UserChoice'){|r|
|
|
500
|
+
r.read('Progid')
|
|
501
|
+
}
|
|
502
|
+
path = Registry.open(RC::HKCR, pid+'\shell\open\command'){|r| r.read}.match(/^\".+?\"/)[0]
|
|
503
|
+
doc = WR_INSTALLED_DIR + "/wrb/documents/#{htm}"
|
|
504
|
+
if RbConfig::CONFIG['arch'] =~ /cygwin/
|
|
505
|
+
s = `cygpath -a #{path}`
|
|
506
|
+
s.gsub!(/[ ()]/){'\\' + $&}
|
|
507
|
+
d = `cygpath -aw #{doc}`
|
|
508
|
+
exec s.chomp + ' "' + d.chomp + '"' + " &"
|
|
509
|
+
else
|
|
510
|
+
exec "start " + path + ' "' + doc.tr('/', '\\') + '"'
|
|
511
|
+
end
|
|
512
|
+
end
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
if ARGV.empty?
|
|
516
|
+
dir = File.dirname(__FILE__)
|
|
517
|
+
exit unless fname = WR::OpenFileNameDlg.show(initialdir: dir)
|
|
518
|
+
wrdoc = WRBDoc.new(fname).parse
|
|
519
|
+
exit unless s = wrdoc.to_html
|
|
520
|
+
htname = File.basename(fname, '.rb') + '.html'
|
|
521
|
+
open(File.dirname(__FILE__)+'/'+htname, 'w'){|f| f.write(s)}
|
|
522
|
+
WRBDoc.wrb_show_doc(htname)
|
|
523
|
+
else
|
|
524
|
+
dir = File.dirname(__FILE__)
|
|
525
|
+
if ARGV[0]=='rd'
|
|
526
|
+
fname = WR::OpenFileNameDlg.show(initialdir: dir)
|
|
527
|
+
exit -1 unless fname
|
|
528
|
+
if File.extname(fname)=='.rb'
|
|
529
|
+
require fname
|
|
530
|
+
cls = WR.module_eval 'RWin::' + WR.constants.select{|i| i=~/#{File.basename(fname, '.rb')}/i}[0].to_s
|
|
531
|
+
s = "=begin\nFollowing methods are defined at the super class.\n"
|
|
532
|
+
s << ":singleton_methods\n"
|
|
533
|
+
s << cls.singleton_methods(false).sort.map{|i|" self.#{i}()\n"}.join
|
|
534
|
+
s << "\n:instance_methods\n"
|
|
535
|
+
s << cls.public_instance_methods(false).sort.map{|i| " #{i}()\n"}.join
|
|
536
|
+
s << "\n=end\n"
|
|
537
|
+
STDERR.puts s
|
|
538
|
+
Clipboard.open(){|cl| cl.text = s}
|
|
539
|
+
end
|
|
540
|
+
elsif ARGV[0] == 'all'
|
|
541
|
+
srcdir = dir.sub(/\/\w+$/, '/components/')
|
|
542
|
+
h = {}
|
|
543
|
+
Dir.chdir(srcdir){Dir.glob('*.rb'){|rb|
|
|
544
|
+
begin
|
|
545
|
+
wrdoc = WRBDoc.new(rb).parse
|
|
546
|
+
cls, name, desc = wrdoc.get_header
|
|
547
|
+
h[cls] ||= []
|
|
548
|
+
h[cls] << [name, desc]
|
|
549
|
+
s = wrdoc.to_html
|
|
550
|
+
open("#{dir}/#{rb.sub('.rb', '.html')}", 'w'){|f| f.write(s)} if s
|
|
551
|
+
rescue
|
|
552
|
+
end
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
cs = ""
|
|
556
|
+
h["Controls"].sort.each{|k, v|
|
|
557
|
+
cs << %Q' <tr><td class="sign"><a href="#{k.downcase}.html">#{k}</td><td class="desc">#{v}</td></tr>\n'
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
ds = ""
|
|
561
|
+
h["Common dialogs"].sort.each{|k, v|
|
|
562
|
+
ds << %Q' <tr><td class="sign"><a href="#{k.downcase}.html">#{k}</td><td class="desc">#{v}</td></tr>\n'
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
os = ""
|
|
566
|
+
h["Other resources"].sort.each{|k, v|
|
|
567
|
+
os << %Q' <tr><td class="sign"><a href="#{k.downcase}.html">#{k}</td><td class="desc">#{v}</td></tr>\n'
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
s = <<EEOOSS
|
|
571
|
+
<h2><a name="controls"> Controls </a></h2>
|
|
572
|
+
<p>The child windows of Form or Dialog. They are typically inherited from <a href=\"wincontrol.html\"> WinControl </a>.</p>
|
|
573
|
+
<table>\n#{cs} </table>
|
|
574
|
+
|
|
575
|
+
<h2><a name="commondialogs"> Common dialogs </a></h2>
|
|
576
|
+
<p>These common dialogs are all inherited from CommonDialog.</p>
|
|
577
|
+
<table>\n#{ds} </table>
|
|
578
|
+
|
|
579
|
+
<h2><a name="otherresources"> Other resources </a></h2>
|
|
580
|
+
<table>\n#{os} </table>
|
|
581
|
+
|
|
582
|
+
EEOOSS
|
|
583
|
+
|
|
584
|
+
idxhtm = open("#{dir}/index.html"){|f| f.read}
|
|
585
|
+
idxhtm =~ /([ \t]*<h2>\s*<a name="applications">\s*Applications.*<\/html>\s*)/m
|
|
586
|
+
ap = $1 || "</body>\n</html>\n"
|
|
587
|
+
r = idxhtm.sub(/[ \t]*<h2>\s*<a name="controls">\s*Controls.*<\/html>\s*/m, '')
|
|
588
|
+
open(File.dirname(__FILE__)+'/index.html', 'w'){|f| f.write(r+s+ap)}
|
|
589
|
+
WRBDoc.wrb_show_doc('index.html')
|
|
590
|
+
else
|
|
591
|
+
idxhtm = open("#{dir}/index.html"){|f| f.read}
|
|
592
|
+
r = idxhtm.sub(/<h2>\s*<a name="controls">\s*Controls.*<\/html>/m, '')
|
|
593
|
+
STDERR.puts r + s
|
|
594
|
+
end
|
|
595
|
+
end
|
|
596
|
+
end if __FILE__==$0
|