exerb 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/ChangeLog.ja.rd +305 -0
- data/README.en.txt +12 -0
- data/README.ja.html +143 -0
- data/README.ja.txt +6 -0
- data/README.md +50 -0
- data/Rakefile +205 -0
- data/bin/exerb +185 -0
- data/bin/mkexy +47 -0
- data/doc/LGPL +513 -0
- data/doc/class.ja.html +92 -0
- data/doc/command.ja.html +109 -0
- data/doc/core.ja.html +72 -0
- data/doc/example.ja.html +89 -0
- data/doc/faq.ja.html +59 -0
- data/doc/inside.ja.rd +404 -0
- data/doc/license.ja.html +62 -0
- data/doc/logo.gif +0 -0
- data/doc/misc.ja.html +72 -0
- data/doc/navi.gif +0 -0
- data/doc/recipe.ja.html +317 -0
- data/doc/style.css +187 -0
- data/doc/tutorial.ja.html +182 -0
- data/example/Makefile +54 -0
- data/example/cat_n.rb +14 -0
- data/example/exception.rb +9 -0
- data/example/ext/Win32API.so +0 -0
- data/example/ext/swin.so +0 -0
- data/example/msgbox.rb +14 -0
- data/example/rubytk.rb +22 -0
- data/example/runtime.ico +0 -0
- data/example/runtime.rb +19 -0
- data/example/vr/clipboard.rb +106 -0
- data/example/vr/compat/rubycompat.rb +18 -0
- data/example/vr/compat/vrcomctl.rb +12 -0
- data/example/vr/compat/vrcontrol.rb +50 -0
- data/example/vr/compat/vrmmedia.rb +24 -0
- data/example/vr/contrib/inifile.rb +116 -0
- data/example/vr/contrib/msgboxconst.rb +55 -0
- data/example/vr/contrib/toolbar.rb +371 -0
- data/example/vr/contrib/vrctlcolor.rb +110 -0
- data/example/vr/contrib/vrhotkey.rb +35 -0
- data/example/vr/contrib/vrlistviewex.rb +71 -0
- data/example/vr/contrib/vrstdscrollbar.rb +414 -0
- data/example/vr/contrib/vrwincomponent.rb +54 -0
- data/example/vr/dragdropformat.rb +209 -0
- data/example/vr/rscutil.rb +168 -0
- data/example/vr/sysmod.rb +249 -0
- data/example/vr/vractivex.rb +56 -0
- data/example/vr/vrclipboard.rb +53 -0
- data/example/vr/vrcomctl.rb +1819 -0
- data/example/vr/vrcontrol.rb +1374 -0
- data/example/vr/vrdde.rb +623 -0
- data/example/vr/vrddrop.rb +190 -0
- data/example/vr/vrdialog.rb +406 -0
- data/example/vr/vrhandler.rb +195 -0
- data/example/vr/vrlayout.old.rb +209 -0
- data/example/vr/vrlayout.rb +173 -0
- data/example/vr/vrlayout2.rb +340 -0
- data/example/vr/vrmargin.rb +141 -0
- data/example/vr/vrmgdlayout.rb +381 -0
- data/example/vr/vrmmedia.rb +287 -0
- data/example/vr/vrolednd.rb +192 -0
- data/example/vr/vrowndraw.rb +108 -0
- data/example/vr/vrrichedit.rb +366 -0
- data/example/vr/vrtimer.rb +148 -0
- data/example/vr/vrtooltip.rb +273 -0
- data/example/vr/vrtray.rb +143 -0
- data/example/vr/vrtvitem.rb +118 -0
- data/example/vr/vrtwopane.rb +223 -0
- data/example/vr/vruby.rb +1051 -0
- data/example/vr/winconst.rb +158 -0
- data/example/vruby.rb +38 -0
- data/exerb.gemspec +26 -0
- data/extconf.rb +7 -0
- data/lib/exerb/archive.rb +143 -0
- data/lib/exerb/config.rb +51 -0
- data/lib/exerb/error.rb +15 -0
- data/lib/exerb/executable.rb +68 -0
- data/lib/exerb/file_table.rb +189 -0
- data/lib/exerb/mkexy.rb +81 -0
- data/lib/exerb/name_table.rb +120 -0
- data/lib/exerb/recipe.rb +465 -0
- data/lib/exerb/resource.rb +190 -0
- data/lib/exerb/resource/base.rb +29 -0
- data/lib/exerb/resource/binary.rb +31 -0
- data/lib/exerb/resource/dialog.rb +30 -0
- data/lib/exerb/resource/group_icon.rb +85 -0
- data/lib/exerb/resource/icon.rb +52 -0
- data/lib/exerb/resource/version_info.rb +155 -0
- data/lib/exerb/resource_library.rb +120 -0
- data/lib/exerb/utility.rb +95 -0
- data/lib/exerb/utility2.rb +122 -0
- data/lib/exerb/version.rb +13 -0
- data/lib/exerb/win32/const/resource.rb +51 -0
- data/lib/exerb/win32/icon_file.rb +78 -0
- data/lib/exerb/win32/pe_file.rb +59 -0
- data/lib/exerb/win32/resource_directory.rb +105 -0
- data/lib/exerb/win32/resource_directory_root.rb +67 -0
- data/lib/exerb/win32/resource_entry.rb +98 -0
- data/lib/exerb/win32/struct/base.rb +43 -0
- data/lib/exerb/win32/struct/icon_dir_entry.rb +83 -0
- data/lib/exerb/win32/struct/icon_header.rb +43 -0
- data/lib/exerb/win32/struct/icon_res_entry.rb +48 -0
- data/lib/exerb/win32/struct/image_dos_header.rb +73 -0
- data/lib/exerb/win32/struct/image_file_header.rb +47 -0
- data/lib/exerb/win32/struct/image_nt_headers32.rb +53 -0
- data/lib/exerb/win32/struct/image_optional_header32.rb +107 -0
- data/lib/exerb/win32/struct/image_resource_data_entry.rb +45 -0
- data/lib/exerb/win32/struct/image_resource_directory.rb +47 -0
- data/lib/exerb/win32/struct/image_resource_directory_entry.rb +72 -0
- data/lib/exerb/win32/struct/image_section_header.rb +53 -0
- data/lib/exerb/win32/struct/version_info_block.rb +75 -0
- data/lib/exerb/win32/struct/vs_fixed_file_info.rb +62 -0
- data/src/exerb/cui.c +48 -0
- data/src/exerb/default.rb +1 -0
- data/src/exerb/exerb.c +877 -0
- data/src/exerb/exerb.h +92 -0
- data/src/exerb/gui.c +176 -0
- data/src/exerb/module.c +138 -0
- data/src/exerb/module.h +7 -0
- data/src/exerb/patch.c +27 -0
- data/src/exerb/resource.h +22 -0
- data/src/exerb/resource.rc +121 -0
- data/src/exerb/ruby.ico +0 -0
- data/src/exerb/utility.c +263 -0
- data/src/exerb/utility.h +33 -0
- data/test/alltests.rb +16 -0
- data/test/test-argv.rb +26 -0
- data/test/test-argv/test-argv.rb +9 -0
- data/test/test-argv/test-argv.ret +1 -0
- data/test/test-dollarzero.rb +26 -0
- data/test/test-dollarzero/test-dollarzero.rb +10 -0
- data/test/test-dollarzero/test-dollarzero.ret +2 -0
- data/test/test-dot.rb +26 -0
- data/test/test-dot/dot.dot.dot.rb +9 -0
- data/test/test-dot/dot.dot.rb +9 -0
- data/test/test-dot/test-dot.rb +13 -0
- data/test/test-dot/test-dot.ret +5 -0
- data/test/test-exitcode.rb +28 -0
- data/test/test-exitcode/test-exitcode.rb +9 -0
- data/test/test-kcode.rb +43 -0
- data/test/test-kcode/euc.rb +10 -0
- data/test/test-kcode/euc.ret +2 -0
- data/test/test-kcode/none.rb +10 -0
- data/test/test-kcode/none.ret +2 -0
- data/test/test-kcode/sjis.rb +10 -0
- data/test/test-kcode/sjis.ret +2 -0
- data/test/test-kcode/utf8.rb +10 -0
- data/test/test-kcode/utf8.ret +2 -0
- data/test/test-loadpath.rb +24 -0
- data/test/test-loadpath/test-loadpath.rb +9 -0
- data/test/test-nest.rb +18 -0
- data/test/test-nest/foo.rb +1 -0
- data/test/test-nest/foo/bar.rb +2 -0
- data/test/test-nest/foo/foo.rb +1 -0
- data/test/test-nest/test-nest.rb +1 -0
- data/test/test-nest/test-nest.ret +1 -0
- data/test/test-preload.rb +24 -0
- data/test/test-preload/test-preload.rb +9 -0
- data/test/test-regexp.rb +26 -0
- data/test/test-regexp/test-regexp.rb +23 -0
- data/test/test-regexp/test-regexp.ret +13 -0
- data/test/test-require1.rb +26 -0
- data/test/test-require1/require1.rb +9 -0
- data/test/test-require1/require2.rb +9 -0
- data/test/test-require1/require3.rb +9 -0
- data/test/test-require1/require4.rb +9 -0
- data/test/test-require1/require5.rb +9 -0
- data/test/test-require1/require6.rb +9 -0
- data/test/test-require1/test-require1.rb +41 -0
- data/test/test-require1/test-require1.ret +27 -0
- data/test/test-socket.rb +26 -0
- data/test/test-socket/test-socket.rb +7 -0
- data/test/test-socket/test-socket.ret +1 -0
- data/test/testcase.rb +66 -0
- data/vendor/mkexports.rb +167 -0
- metadata +352 -0
@@ -0,0 +1,195 @@
|
|
1
|
+
###################################
|
2
|
+
#
|
3
|
+
# vrhandler.rb
|
4
|
+
# Programmed by nyasu <nyasu@osk.3web.ne.jp>
|
5
|
+
# Copyright 1999-2005 Nishikawa,Yasuhiro
|
6
|
+
#
|
7
|
+
# More information at http://vruby.sourceforge.net/index.html
|
8
|
+
#
|
9
|
+
###################################
|
10
|
+
|
11
|
+
VR_DIR="vr/" unless defined?(::VR_DIR)
|
12
|
+
require VR_DIR+'vruby'
|
13
|
+
|
14
|
+
=begin
|
15
|
+
= VisualuRuby(tmp) Additional Modules
|
16
|
+
=end
|
17
|
+
|
18
|
+
|
19
|
+
module VRMouseFeasible
|
20
|
+
include VRMessageHandler
|
21
|
+
|
22
|
+
SHIFT_LBUTTON=1
|
23
|
+
SHIFT_RBUTTON=2
|
24
|
+
SHIFT_SHIFT =4
|
25
|
+
SHIFT_CONTROL=8
|
26
|
+
SHIFT_MBUTTON=16
|
27
|
+
|
28
|
+
=begin
|
29
|
+
== VRMouseFeasible
|
30
|
+
This is a module to receive mouse messages.
|
31
|
+
|
32
|
+
=== Event Handlers
|
33
|
+
--- self_lbuttonup(shift,x,y)
|
34
|
+
This method is fired when mouse left button is released at coord(x,y).
|
35
|
+
Press SHIFT key to set 0x4 bit of argument "shift".
|
36
|
+
Its 0x8 bit is for CONTROL key
|
37
|
+
--- self_lbuttondown(shift,x,y)
|
38
|
+
This method is fired when mouse left button is pressed.
|
39
|
+
--- self_rbuttonup(shift,x,y)
|
40
|
+
This method is fired when mouse right button is released.
|
41
|
+
--- self_rbuttondown(shift,x,y)
|
42
|
+
This method is fired when mouse right button is pressed.
|
43
|
+
--- self_mousemove(shift,x,y)
|
44
|
+
This method is fired when mouse cursor is moving on the window at coord(x,y).
|
45
|
+
=end
|
46
|
+
|
47
|
+
def mousefeasibleinit
|
48
|
+
addHandler WMsg::WM_LBUTTONUP, "lbuttonup", MSGTYPE::ARGINTSINTSINT,nil
|
49
|
+
addHandler WMsg::WM_LBUTTONDOWN,"lbuttondown",MSGTYPE::ARGINTSINTSINT,nil
|
50
|
+
addHandler WMsg::WM_RBUTTONUP, "rbuttonup", MSGTYPE::ARGINTSINTSINT,nil
|
51
|
+
addHandler WMsg::WM_RBUTTONDOWN,"rbuttondown",MSGTYPE::ARGINTSINTSINT,nil
|
52
|
+
addHandler WMsg::WM_MOUSEMOVE, "mousemove", MSGTYPE::ARGINTSINTSINT,nil
|
53
|
+
acceptEvents [WMsg::WM_LBUTTONUP,WMsg::WM_RBUTTONUP,
|
54
|
+
WMsg::WM_LBUTTONDOWN,WMsg::WM_RBUTTONDOWN,
|
55
|
+
WMsg::WM_MOUSEMOVE]
|
56
|
+
end
|
57
|
+
|
58
|
+
def vrinit
|
59
|
+
super
|
60
|
+
mousefeasibleinit
|
61
|
+
end
|
62
|
+
|
63
|
+
=begin handlers
|
64
|
+
def self_lbuttonup(*arg) end
|
65
|
+
def self_lbuttondown(*arg) end
|
66
|
+
def self_rbuttonup(*arg) end
|
67
|
+
def self_rbuttondown(*arg) end
|
68
|
+
def self_mousemove(*arg) end
|
69
|
+
=end
|
70
|
+
end
|
71
|
+
|
72
|
+
module VRFocusSensitive
|
73
|
+
include VRMessageHandler
|
74
|
+
|
75
|
+
=begin
|
76
|
+
== VRFocusSensitive
|
77
|
+
This is a module to sense getting/losing focus.
|
78
|
+
=== Event Handlers
|
79
|
+
--- self_gotfocus()
|
80
|
+
This method is fired when the window get focus.
|
81
|
+
--- self_lostfocus()
|
82
|
+
This method is fired when the window lose the focus.
|
83
|
+
=end
|
84
|
+
|
85
|
+
def focussensitiveinit
|
86
|
+
addHandler WMsg::WM_SETFOCUS, "gotfocus", MSGTYPE::ARGNONE,nil
|
87
|
+
addHandler WMsg::WM_KILLFOCUS, "lostfocus", MSGTYPE::ARGNONE,nil
|
88
|
+
acceptEvents [WMsg::WM_SETFOCUS,WMsg::WM_KILLFOCUS]
|
89
|
+
end
|
90
|
+
|
91
|
+
def vrinit
|
92
|
+
super
|
93
|
+
focussensitiveinit
|
94
|
+
end
|
95
|
+
=begin handlers
|
96
|
+
def gotfocus() end
|
97
|
+
def lostfocus() end
|
98
|
+
=end
|
99
|
+
end
|
100
|
+
|
101
|
+
module VRKeyFeasible
|
102
|
+
include VRMessageHandler
|
103
|
+
|
104
|
+
=begin
|
105
|
+
== VRKeyFeasible
|
106
|
+
This is a module to sense keyboard input.
|
107
|
+
|
108
|
+
=== Event Handlers
|
109
|
+
--- self_char(keycode,keydata)
|
110
|
+
This method is fired when WM_KEYUP and WM_KEYDOWN are translated into
|
111
|
+
keyboard input messages.
|
112
|
+
--- self_deadchar(keycode,keydata)
|
113
|
+
--- self_syschar(keycode,keydata)
|
114
|
+
--- self_sysdeadchar(keycode,keydata)
|
115
|
+
=end
|
116
|
+
|
117
|
+
def keyfeasibleinit
|
118
|
+
addHandler(0x102,"char", MSGTYPE::ARGINTINT,nil) # WM_CHAR
|
119
|
+
addHandler(0x103,"deadchar", MSGTYPE::ARGINTINT,nil) # WM_DEADCHAR
|
120
|
+
addHandler(0x106,"syschar", MSGTYPE::ARGINTINT,nil) # WM_SYSCHAR
|
121
|
+
addHandler(0x107,"sysdeadchar", MSGTYPE::ARGINTINT,nil) # WM_SYSDEADCHAR
|
122
|
+
acceptEvents [0x102,0x103,0x106,0x107]
|
123
|
+
end
|
124
|
+
def vrinit
|
125
|
+
super
|
126
|
+
keyfeasibleinit
|
127
|
+
end
|
128
|
+
|
129
|
+
=begin handlers
|
130
|
+
def self_char(*arg) end
|
131
|
+
def self_deadchar(*arg) end
|
132
|
+
def self_syschar(*arg) end
|
133
|
+
def self_sysdeadchar(*arg) end
|
134
|
+
=end
|
135
|
+
end
|
136
|
+
|
137
|
+
module VRDestroySensitive
|
138
|
+
=begin
|
139
|
+
== VRDestroySensitive
|
140
|
+
This is a module to sense window destruction.
|
141
|
+
|
142
|
+
=== Event Handlers
|
143
|
+
--- self_destroy
|
144
|
+
This is fired when the window is destroying.
|
145
|
+
=end
|
146
|
+
|
147
|
+
include VRMessageHandler
|
148
|
+
|
149
|
+
def destroysensitiveinit
|
150
|
+
addHandler WMsg::WM_DESTROY,"destroy",MSGTYPE::ARGNONE,nil
|
151
|
+
acceptEvents [WMsg::WM_DESTROY]
|
152
|
+
end
|
153
|
+
|
154
|
+
def vrinit
|
155
|
+
super
|
156
|
+
destroysensitiveinit
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
module VRClosingSensitive
|
161
|
+
=begin
|
162
|
+
== VRClosingSensitive
|
163
|
+
This is a module to sense window closing.
|
164
|
+
This module can be used for implement of CanClose method.
|
165
|
+
|
166
|
+
ex.
|
167
|
+
class MyForm < VRForm
|
168
|
+
include VRClosingSensitive
|
169
|
+
def self_close
|
170
|
+
r = messageBox("Can Close?","close query",4) #4=MB_YESNO
|
171
|
+
|
172
|
+
if r==7 # ID_NO then
|
173
|
+
SKIP_DEFAULTHANDLER
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
=== Event Handlers
|
179
|
+
--- self_close
|
180
|
+
This is fired when the window is closing.
|
181
|
+
=end
|
182
|
+
|
183
|
+
include VRMessageHandler
|
184
|
+
def closingsensitiveinit
|
185
|
+
addHandler WMsg::WM_CLOSE,"close",MSGTYPE::ARGNONE,nil
|
186
|
+
acceptEvents [WMsg::WM_CLOSE]
|
187
|
+
end
|
188
|
+
|
189
|
+
def vrinit
|
190
|
+
super
|
191
|
+
closingsensitiveinit
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
require VR_DIR+'contrib/vrctlcolor'
|
@@ -0,0 +1,209 @@
|
|
1
|
+
###################################
|
2
|
+
#
|
3
|
+
# vrlayout.rb (old version)
|
4
|
+
# Programmed by nyasu <nyasu@osk.3web.ne.jp>
|
5
|
+
# Copyright 1999-2001 Nishikawa,Yasuhiro
|
6
|
+
#
|
7
|
+
# More information at http://www.threeweb.ad.jp/~nyasu/software/vrproject.html
|
8
|
+
# (in Japanese)
|
9
|
+
#
|
10
|
+
###################################
|
11
|
+
|
12
|
+
VR_DIR="vr/" unless defined?(::VR_DIR)
|
13
|
+
require VR_DIR+'vruby'
|
14
|
+
|
15
|
+
=begin
|
16
|
+
= VisualuRuby(tmp) Layout Managers
|
17
|
+
Layout Managers re-arrange child windows(controls)
|
18
|
+
when the parent window is resized.
|
19
|
+
=end
|
20
|
+
|
21
|
+
|
22
|
+
##############################################
|
23
|
+
# base module for LayoutManagers
|
24
|
+
#
|
25
|
+
module VRLayoutManager
|
26
|
+
=begin
|
27
|
+
== VRLayoutManager
|
28
|
+
The base class for the layout managers.
|
29
|
+
|
30
|
+
=== Methods
|
31
|
+
--- rearrange
|
32
|
+
Re-arranges child windows.
|
33
|
+
=end
|
34
|
+
|
35
|
+
|
36
|
+
include VRMessageHandler
|
37
|
+
|
38
|
+
def vrLayoutinit
|
39
|
+
addHandler(WMsg::WM_SIZE, "vrlayoutresize",MSGTYPE::ARGLINTINT,nil)
|
40
|
+
acceptEvents [WMsg::WM_SIZE]
|
41
|
+
end
|
42
|
+
|
43
|
+
def vrinit
|
44
|
+
super
|
45
|
+
vrLayoutinit
|
46
|
+
end
|
47
|
+
|
48
|
+
def rearrange
|
49
|
+
if self.visible? then
|
50
|
+
a=self.clientrect
|
51
|
+
sendMessage WMsg::WM_SIZE,0,MAKELPARAM(a[2]-a[0],a[3]-a[1])
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def self_vrlayoutresize(*arg)
|
56
|
+
self_layout_arrange(*arg)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
##########################################
|
62
|
+
|
63
|
+
|
64
|
+
module VRVertLayoutManager
|
65
|
+
=begin
|
66
|
+
== VRVertLayoutManager
|
67
|
+
On window resizing, each controls on the window is re-arranged
|
68
|
+
to vertical arrangement. each control's width is window width and
|
69
|
+
each height is one n-th of window's height.
|
70
|
+
|
71
|
+
=== Methods
|
72
|
+
--- addControl(type,name,caption,astyle)
|
73
|
+
Create a new control and add on the window.
|
74
|
+
The arguments are same as VRParent#addControl
|
75
|
+
without args ((|x|)),((|y|)),((|w|)),((|h|))
|
76
|
+
=end
|
77
|
+
|
78
|
+
include VRLayoutManager
|
79
|
+
|
80
|
+
def self_layout_arrange(width,fheight)
|
81
|
+
return unless @_vr_c_order
|
82
|
+
height=(@_vr_c_order.size>0)? (fheight.to_f / @_vr_c_order.size) : fheight
|
83
|
+
|
84
|
+
@_vr_c_order.each_index do |i|
|
85
|
+
@_vr_c_order[i].move( 0,i*height, width,height )
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
VR_ADDCONTROL_FEWARGS=true
|
90
|
+
|
91
|
+
def addControl(type,name,caption,style=0)
|
92
|
+
@_vr_c_order=[] if !@_vr_c_order
|
93
|
+
r=vr_addControlOriginal(type,name,caption,0,@controls.size*10,10,10,style)
|
94
|
+
@_vr_c_order.push r
|
95
|
+
return r
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
module VRHorizLayoutManager
|
101
|
+
=begin
|
102
|
+
== VRHorizLayoutManager
|
103
|
+
On window resizing, each controls on the window is re-arranged
|
104
|
+
to horizontal arrangement. each control's height is window height and
|
105
|
+
each width is one n-th of window's width.
|
106
|
+
|
107
|
+
=== Methods
|
108
|
+
--- addControl(type,name,caption,astyle)
|
109
|
+
Create a new control and add on the window.
|
110
|
+
The arguments are same as VRParent#addControl
|
111
|
+
without args ((|x|)),((|y|)),((|w|)),((|h|))
|
112
|
+
=end
|
113
|
+
|
114
|
+
include VRLayoutManager
|
115
|
+
|
116
|
+
def self_layout_arrange(fwidth,height)
|
117
|
+
return unless @_vr_c_order
|
118
|
+
width =(@_vr_c_order.size>0)? (fwidth.to_f / @_vr_c_order.size) : fwidth
|
119
|
+
|
120
|
+
@_vr_c_order.each_index do |i|
|
121
|
+
@_vr_c_order[i].move( i*width,0, width,height )
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
VR_ADDCONTROL_FEWARGS=true
|
126
|
+
|
127
|
+
def addControl(type,name,caption,style=0)
|
128
|
+
@_vr_c_order=[] if !@_vr_c_order
|
129
|
+
r=vr_addControlOriginal(type,name,caption,0,@controls.size*10,10,10,style)
|
130
|
+
@_vr_c_order.push r
|
131
|
+
return r
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
module VRGridLayoutManager
|
137
|
+
=begin
|
138
|
+
== VRGridLayoutManager
|
139
|
+
On window resizing, each controls on the window is re-arranged
|
140
|
+
with the grid which devides the window height and width by the number
|
141
|
+
specified by ((<setDimension>)) method.
|
142
|
+
|
143
|
+
=== Methods
|
144
|
+
--- setDimension(x,y)
|
145
|
+
Devides windows width by ((|x|)) and height by ((|y|)).
|
146
|
+
|
147
|
+
--- addControl(type,name,caption,x,y,w,h,astyle)
|
148
|
+
Create a new control and add on the window.
|
149
|
+
The arguments are same as VRParent#addControl but
|
150
|
+
args ((|x|)),((|y|)),((|w|)),((|h|)) are under grid dimension.
|
151
|
+
=end
|
152
|
+
|
153
|
+
include VRLayoutManager
|
154
|
+
|
155
|
+
def setDimension(x,y)
|
156
|
+
@_vr_xsize=x
|
157
|
+
@_vr_ysize=y
|
158
|
+
@_vr_controldim={}
|
159
|
+
end
|
160
|
+
|
161
|
+
def self_layout_arrange(width,height)
|
162
|
+
return unless @controls
|
163
|
+
|
164
|
+
@controls.each do |id,cntl|
|
165
|
+
cntl.move(width.to_f / @_vr_xsize*@_vr_controldim[id][0],
|
166
|
+
height.to_f / @_vr_ysize*@_vr_controldim[id][1],
|
167
|
+
width.to_f / @_vr_xsize*@_vr_controldim[id][2],
|
168
|
+
height.to_f / @_vr_ysize*@_vr_controldim[id][3] )
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def addControl(type,name,caption,x,y,w,h,style=0)
|
173
|
+
if !@_vr_controldim then raise("addControl before setDimension") end
|
174
|
+
if @controls.size != @_vr_controldim.size then
|
175
|
+
raise "VRGridLayoutManager misses some controls"+
|
176
|
+
"(mng#{@_vr_controldim.size} cntls#{@_vr_cid})."
|
177
|
+
end
|
178
|
+
|
179
|
+
gx=self.w/@_vr_xsize*x; gw=self.w/@_vr_xsize*w;
|
180
|
+
gy=self.h/@_vr_ysize*y; gh=self.h/@_vr_ysize*h;
|
181
|
+
r=vr_addControlOriginal(type,name,caption,gx,gy,gw,gh,style)
|
182
|
+
@_vr_controldim[r.etc]= [x,y,w,h]
|
183
|
+
return r
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
module VRFullsizeLayoutManager
|
188
|
+
=begin
|
189
|
+
== VRFullsizeLayoutManager
|
190
|
+
This is a LayoutManager for only one control, whose size is full size
|
191
|
+
on the window.
|
192
|
+
|
193
|
+
=== Methods
|
194
|
+
--- addControl(type,name,caption,astyle)
|
195
|
+
You can call this method only once.
|
196
|
+
=end
|
197
|
+
|
198
|
+
|
199
|
+
include VRVertLayoutManager
|
200
|
+
|
201
|
+
VR_ADDCONTROL_FEWARGS=true
|
202
|
+
|
203
|
+
def addControl(*arg)
|
204
|
+
super
|
205
|
+
def self.addControl(*arg)
|
206
|
+
raise "addControl twice"
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
###################################
|
2
|
+
#
|
3
|
+
# vrlayout.rb (using vrlayout2 version)
|
4
|
+
# Programmed by nyasu <nyasu@osk.3web.ne.jp>
|
5
|
+
# Copyright 1999-2005 Nishikawa,Yasuhiro
|
6
|
+
#
|
7
|
+
# More information at http://vruby.sourceforge.net/index.html
|
8
|
+
#
|
9
|
+
###################################
|
10
|
+
|
11
|
+
VR_DIR="vr/" unless defined?(::VR_DIR)
|
12
|
+
require VR_DIR+'vruby'
|
13
|
+
require VR_DIR+'vrlayout2'
|
14
|
+
|
15
|
+
=begin
|
16
|
+
= VisualuRuby(tmp) Layout Managers
|
17
|
+
Layout Managers re-arrange child windows(controls)
|
18
|
+
when the parent window is resized.
|
19
|
+
=end
|
20
|
+
|
21
|
+
##############################################
|
22
|
+
# base module for LayoutManagers
|
23
|
+
#
|
24
|
+
module VRLayoutManager
|
25
|
+
=begin
|
26
|
+
== VRLayoutManager
|
27
|
+
The base class for the layout managers.
|
28
|
+
|
29
|
+
=== Methods
|
30
|
+
--- rearrange
|
31
|
+
Re-arranges child windows.
|
32
|
+
=end
|
33
|
+
|
34
|
+
|
35
|
+
include VRMessageHandler
|
36
|
+
|
37
|
+
def vrLayoutinit
|
38
|
+
@_vr_layoutframe=nil
|
39
|
+
addHandler(WMsg::WM_SIZE, "vrlayoutresize",MSGTYPE::ARGLINTINT,nil)
|
40
|
+
acceptEvents [WMsg::WM_SIZE]
|
41
|
+
end
|
42
|
+
|
43
|
+
def vrinit
|
44
|
+
super
|
45
|
+
vrLayoutinit
|
46
|
+
end
|
47
|
+
|
48
|
+
def rearrange
|
49
|
+
a=self.clientrect
|
50
|
+
sendMessage WMsg::WM_SIZE,0,MAKELPARAM(a[2]-a[0],a[3]-a[1])
|
51
|
+
end
|
52
|
+
|
53
|
+
def self_vrlayoutresize(*arg)
|
54
|
+
self_layout_arrange(*arg)
|
55
|
+
end
|
56
|
+
|
57
|
+
def self_layout_arrange(xw,yh)
|
58
|
+
@_vr_layoutframe.move 0,0,xw,yh if @_vr_layoutframe
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
##########################################
|
64
|
+
|
65
|
+
module VRVertLayoutManager
|
66
|
+
=begin
|
67
|
+
== VRVertLayoutManager
|
68
|
+
On window resizing, each controls on the window is re-arranged
|
69
|
+
to vertical arrangement. each control's width is window width and
|
70
|
+
each height is one n-th of window's height.
|
71
|
+
|
72
|
+
=== Methods
|
73
|
+
--- addControl(type,name,caption,astyle)
|
74
|
+
Create a new control and add on the window.
|
75
|
+
The arguments are same as VRParent#addControl
|
76
|
+
without args ((|x|)),((|y|)),((|w|)),((|h|))
|
77
|
+
=end
|
78
|
+
|
79
|
+
include VRLayoutManager
|
80
|
+
|
81
|
+
VR_ADDCONTROL_FEWARGS=true
|
82
|
+
|
83
|
+
def addControl(type,name,caption,style=0)
|
84
|
+
@_vr_layoutframe = VRVertLayoutFrame.new unless @_vr_layoutframe
|
85
|
+
r=vr_addControlOriginal(type,name,caption,0,@controls.size*10,10,10,style)
|
86
|
+
@_vr_layoutframe.register(r)
|
87
|
+
rearrange
|
88
|
+
return r
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
module VRHorizLayoutManager
|
93
|
+
=begin
|
94
|
+
== VRHorizLayoutManager
|
95
|
+
On window resizing, each controls on the window is re-arranged
|
96
|
+
to horizontal arrangement. each control's height is window height and
|
97
|
+
each width is one n-th of window's width.
|
98
|
+
|
99
|
+
=== Methods
|
100
|
+
--- addControl(type,name,caption,astyle)
|
101
|
+
Create a new control and add on the window.
|
102
|
+
The arguments are same as VRParent#addControl
|
103
|
+
without args ((|x|)),((|y|)),((|w|)),((|h|))
|
104
|
+
=end
|
105
|
+
|
106
|
+
include VRLayoutManager
|
107
|
+
|
108
|
+
VR_ADDCONTROL_FEWARGS=true
|
109
|
+
|
110
|
+
def addControl(type,name,caption,style=0)
|
111
|
+
@_vr_layoutframe = VRHorizLayoutFrame.new unless @_vr_layoutframe
|
112
|
+
r=vr_addControlOriginal(type,name,caption,0,@controls.size*10,10,10,style)
|
113
|
+
@_vr_layoutframe.register(r)
|
114
|
+
rearrange
|
115
|
+
return r
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
module VRGridLayoutManager
|
120
|
+
=begin
|
121
|
+
== VRGridLayoutManager
|
122
|
+
On window resizing, each controls on the window is re-arranged
|
123
|
+
with the grid which devides the window height and width by the number
|
124
|
+
specified by ((<setDimension>)) method.
|
125
|
+
|
126
|
+
=== Methods
|
127
|
+
--- setDimension(x,y)
|
128
|
+
Devides windows width by ((|x|)) and height by ((|y|)).
|
129
|
+
|
130
|
+
--- addControl(type,name,caption,x,y,w,h,astyle)
|
131
|
+
Create a new control and add on the window.
|
132
|
+
The arguments are same as VRParent#addControl but
|
133
|
+
args ((|x|)),((|y|)),((|w|)),((|h|)) are under grid dimension.
|
134
|
+
=end
|
135
|
+
include VRLayoutManager
|
136
|
+
|
137
|
+
def setDimension(x,y)
|
138
|
+
unless @_vr_layoutframe then
|
139
|
+
@_vr_layoutframe = VRGridLayoutFrame.new(x,y)
|
140
|
+
else
|
141
|
+
@_vr_layoutframe.setDimension(x,y)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
def addControl(type,name,caption,x,y,w,h,style=0)
|
145
|
+
@_vr_layoutframe = VRGridLayoutFrame.new unless @_vr_layoutframe
|
146
|
+
r=vr_addControlOriginal(type,name,caption,0,@controls.size*10,10,10,style)
|
147
|
+
@_vr_layoutframe.register(r,x,y,w,h)
|
148
|
+
rearrange
|
149
|
+
return r
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
module VRFullsizeLayoutManager
|
154
|
+
=begin
|
155
|
+
== VRFullsizeLayoutManager
|
156
|
+
This is a LayoutManager for only one control, whose size is full size
|
157
|
+
on the window.
|
158
|
+
=== Methods
|
159
|
+
--- addControl(type,name,caption,astyle)
|
160
|
+
You can call this method only once.
|
161
|
+
=end
|
162
|
+
|
163
|
+
|
164
|
+
include VRVertLayoutManager
|
165
|
+
VR_ADDCONTROL_FEWARGS=true
|
166
|
+
|
167
|
+
def addControl(*arg)
|
168
|
+
super
|
169
|
+
def self.addControl(*arg)
|
170
|
+
raise "addControl twice"
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|