wxruby3 0.9.0.pre.beta.11 → 0.9.0.pre.beta.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +85 -0
- data/README.md +2 -0
- data/assets/logo.png +0 -0
- data/assets/logo.svg +170 -0
- data/assets/logo.xcf +0 -0
- data/ext/wxruby3/swig/wx.i +1 -1
- data/lib/wx/core/array_ext.rb +26 -0
- data/lib/wx/core/art_locator.rb +92 -0
- data/lib/wx/core/artprovider.rb +1 -1
- data/lib/wx/core/bitmap.rb +90 -53
- data/lib/wx/core/cursor.rb +12 -0
- data/lib/wx/core/dataformat.rb +3 -1
- data/lib/wx/core/dc.rb +76 -52
- data/lib/wx/core/enum.rb +4 -0
- data/lib/wx/core/event.rb +38 -5
- data/lib/wx/core/evthandler.rb +64 -23
- data/lib/wx/core/icon.rb +50 -35
- data/lib/wx/core/id_helper.rb +32 -0
- data/lib/wx/core/image.rb +63 -53
- data/lib/wx/core/point.rb +14 -0
- data/lib/wx/core/real_point.rb +15 -1
- data/lib/wx/core/rect.rb +42 -7
- data/lib/wx/core/region_iterator.rb +37 -0
- data/lib/wx/core/size.rb +20 -0
- data/lib/wx/core/window.rb +8 -31
- data/lib/wx/doc/array_ext.rb +27 -0
- data/lib/wx/doc/art_locator.rb +57 -0
- data/lib/wx/doc/bitmap.rb +27 -0
- data/lib/wx/doc/clipboard.rb +12 -0
- data/lib/wx/doc/const.rb +77 -0
- data/lib/wx/doc/cursor.rb +16 -0
- data/lib/wx/doc/data_object.rb +1 -2
- data/lib/wx/doc/dc.rb +63 -46
- data/lib/wx/doc/event.rb +24 -0
- data/lib/wx/doc/events.rb +14 -0
- data/lib/wx/doc/evthandler.rb +24 -3
- data/lib/wx/doc/extra/00_starting.md +1 -1
- data/lib/wx/doc/extra/06_geometry.md +10 -4
- data/lib/wx/doc/extra/10_art.md +105 -0
- data/lib/wx/doc/gc_dc.rb +21 -0
- data/lib/wx/doc/gdi_common.rb +122 -1
- data/lib/wx/doc/graphics_context.rb +42 -0
- data/lib/wx/doc/icon.rb +18 -0
- data/lib/wx/doc/id_helper.rb +25 -0
- data/lib/wx/doc/image.rb +33 -0
- data/lib/wx/doc/region_iterator.rb +31 -0
- data/lib/wx/doc/scaled_dc.rb +1 -0
- data/lib/wx/doc/window.rb +18 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/cmd/sampler.rb +3 -21
- data/rakelib/lib/config.rb +4 -4
- data/rakelib/lib/core/package.rb +3 -3
- data/rakelib/lib/director/art_provider.rb +2 -2
- data/rakelib/lib/director/busy_info.rb +9 -7
- data/rakelib/lib/director/clipboard.rb +1 -1
- data/rakelib/lib/director/colour_picker_ctrl.rb +1 -0
- data/rakelib/lib/director/data_object.rb +72 -4
- data/rakelib/lib/director/derived_dc.rb +100 -6
- data/rakelib/lib/director/dir_picker_ctrl.rb +1 -0
- data/rakelib/lib/director/event.rb +73 -8
- data/rakelib/lib/director/events.rb +19 -1
- data/rakelib/lib/director/file_picker_ctrl.rb +1 -0
- data/rakelib/lib/director/font_picker_ctrl.rb +1 -0
- data/rakelib/lib/director/gdicommon.rb +1 -3
- data/rakelib/lib/director/graphics_context.rb +89 -0
- data/rakelib/lib/director/help_controller.rb +2 -2
- data/rakelib/lib/director/html_data_object.rb +37 -0
- data/rakelib/lib/director/image.rb +55 -0
- data/rakelib/lib/director/region_iterator.rb +48 -0
- data/rakelib/lib/director/richtext_buffer.rb +1 -1
- data/rakelib/lib/director/richtext_buffer_data_object.rb +45 -0
- data/rakelib/lib/director/scroll_bar.rb +39 -0
- data/rakelib/lib/director/slider.rb +39 -0
- data/rakelib/lib/director/window.rb +36 -5
- data/rakelib/lib/director/window_disabler.rb +0 -7
- data/rakelib/lib/extractor/class.rb +1 -1
- data/rakelib/lib/extractor/function.rb +1 -1
- data/rakelib/lib/generate/doc.rb +26 -6
- data/rakelib/lib/specs/interfaces.rb +6 -1
- data/rakelib/lib/typemap/common.rb +1 -1
- data/rakelib/lib/util/string.rb +29 -8
- data/samples/art/wxruby-128x128.png +0 -0
- data/samples/art/wxruby-256x256.png +0 -0
- data/samples/art/wxruby-64x64.png +0 -0
- data/samples/art/wxruby.ico +0 -0
- data/samples/art/wxruby.png +0 -0
- data/samples/drawing/graphics_drawing.rb +1 -2
- data/samples/propgrid/propgrid.rb +65 -65
- data/samples/sample.xpm +246 -470
- data/samples/treectrl/treectrl.rb +1 -1
- data/tests/art/my_art/sample.xpm +251 -0
- data/tests/art/sample3.xpm +251 -0
- data/tests/art/test_art/bitmap/sample.xpm +251 -0
- data/tests/art/test_art/bitmap/wxruby.bmp +0 -0
- data/tests/art/test_art/bitmap/wxruby.png +0 -0
- data/tests/art/test_art/bitmap/wxruby.xpm +251 -0
- data/tests/art/test_art/cursor/wxruby.bmp +0 -0
- data/tests/art/test_art/icon/sample.xpm +251 -0
- data/tests/art/test_art/icon/wxruby.ico +0 -0
- data/tests/art/test_art/icon/wxruby.png +0 -0
- data/tests/art/test_art/image/sample.xpm +251 -0
- data/tests/art/test_art/image/wxruby.jpg +0 -0
- data/tests/art/test_art/image/wxruby.png +0 -0
- data/tests/art/test_art/sample2.xpm +251 -0
- data/tests/test_art.rb +91 -0
- data/tests/test_clipboard.rb +35 -0
- data/tests/test_dc.rb +70 -0
- data/tests/test_events.rb +12 -0
- data/tests/test_geometry.rb +13 -0
- metadata +51 -5
@@ -0,0 +1,48 @@
|
|
1
|
+
###
|
2
|
+
# wxRuby3 wxWidgets interface director
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
4
|
+
###
|
5
|
+
|
6
|
+
module WXRuby3
|
7
|
+
|
8
|
+
class Director
|
9
|
+
|
10
|
+
class RegionIterator < Director
|
11
|
+
|
12
|
+
def setup
|
13
|
+
super
|
14
|
+
spec.gc_never
|
15
|
+
spec.disable_proxies
|
16
|
+
spec.make_abstract 'wxRegionIterator'
|
17
|
+
# not useful in wxRuby
|
18
|
+
spec.ignore 'wxRegionIterator::Reset(const wxRegion &)',
|
19
|
+
'wxRegionIterator::operator bool'
|
20
|
+
# add iteration control methods
|
21
|
+
spec.add_extend_code 'wxRegionIterator', <<~__HEREDOC
|
22
|
+
void next_rect()
|
23
|
+
{
|
24
|
+
$self->operator ++();
|
25
|
+
}
|
26
|
+
__HEREDOC
|
27
|
+
# add custom factory method
|
28
|
+
spec.add_extend_code 'wxRegionIterator', <<~__HEREDOC
|
29
|
+
static void for_region(const wxRegion& region)
|
30
|
+
{
|
31
|
+
wxRegionIterator region_it(region);
|
32
|
+
if (rb_block_given_p())
|
33
|
+
{
|
34
|
+
wxRegionIterator *p_region_it = ®ion_it;
|
35
|
+
VALUE rb_region_it = SWIG_NewPointerObj(SWIG_as_voidptr(p_region_it), SWIGTYPE_p_wxRegionIterator, 0);
|
36
|
+
rb_yield(rb_region_it);
|
37
|
+
SWIG_RubyRemoveTracking((void *)p_region_it);
|
38
|
+
DATA_PTR(rb_region_it) = NULL;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
__HEREDOC
|
42
|
+
spec.do_not_generate :functions, :variables, :defines, :enums
|
43
|
+
end
|
44
|
+
end # class RegionIterator
|
45
|
+
|
46
|
+
end # class Director
|
47
|
+
|
48
|
+
end # module WXRuby3
|
@@ -22,7 +22,7 @@ module WXRuby3
|
|
22
22
|
wxRichTextBuffer
|
23
23
|
]
|
24
24
|
spec.gc_as_object 'wxRichTextAttr'
|
25
|
-
spec.
|
25
|
+
spec.gc_as_object 'wxRichTextBuffer'
|
26
26
|
spec.override_inheritance_chain('wxRichTextBuffer', %w[wxObject])
|
27
27
|
spec.ignore %w[
|
28
28
|
wxRichTextBuffer::GetBatchedCommand
|
@@ -0,0 +1,45 @@
|
|
1
|
+
###
|
2
|
+
# wxRuby3 wxWidgets interface director
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
4
|
+
###
|
5
|
+
|
6
|
+
module WXRuby3
|
7
|
+
|
8
|
+
class Director
|
9
|
+
|
10
|
+
class RichTextBufferDataObject < Director
|
11
|
+
|
12
|
+
include Typemap::DataFormat
|
13
|
+
include Typemap::DataObjectData
|
14
|
+
|
15
|
+
def setup
|
16
|
+
super
|
17
|
+
spec.gc_as_object
|
18
|
+
# make sure the build scripts know that DataObjectSimple is part of the DataObject module
|
19
|
+
spec.override_inheritance_chain('wxRichTextBufferDataObject', {'wxDataObjectSimple' => 'wxDataObject'}, 'wxDataObject')
|
20
|
+
# we only allow Ruby derivatives from wxDataObject but not of any of the C++ implemented
|
21
|
+
# specializations
|
22
|
+
spec.no_proxy 'wxRichTextBufferDataObject'
|
23
|
+
spec.add_swig_code <<~__HEREDOC
|
24
|
+
// SWIG gets confused and doesn't realise that various virtual methods
|
25
|
+
// from wxDataObject are implemented fully in this subclass, and so,
|
26
|
+
// believing it to be abstract doesn't provide an allocator for this
|
27
|
+
// class. This undocumented feature overrides this.
|
28
|
+
%feature("notabstract") wxRichTextBufferDataObject;
|
29
|
+
__HEREDOC
|
30
|
+
|
31
|
+
# ignore overrrides (will be available through base class)
|
32
|
+
spec.ignore 'wxRichTextBufferDataObject::GetPreferredFormat'
|
33
|
+
spec.ignore 'wxRichTextBufferDataObject::GetDataSize'
|
34
|
+
spec.ignore 'wxRichTextBufferDataObject::GetDataHere'
|
35
|
+
spec.ignore 'wxRichTextBufferDataObject::SetData'
|
36
|
+
|
37
|
+
spec.new_object 'wxRichTextBufferDataObject::GetRichTextBuffer'
|
38
|
+
spec.do_not_generate :variables, :defines, :functions, :enums
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
###
|
2
|
+
# wxRuby3 wxWidgets interface director
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
4
|
+
###
|
5
|
+
|
6
|
+
require_relative './window'
|
7
|
+
|
8
|
+
module WXRuby3
|
9
|
+
|
10
|
+
class Director
|
11
|
+
|
12
|
+
class ScrollBar < Window
|
13
|
+
|
14
|
+
def setup
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
def process(gendoc: false)
|
19
|
+
defmod = super
|
20
|
+
# fix documentation errors for scroll events
|
21
|
+
def_item = defmod.find_item('wxScrollBar')
|
22
|
+
if def_item
|
23
|
+
def_item.event_types.each do |evt_spec|
|
24
|
+
case evt_spec.first
|
25
|
+
when 'EVT_COMMAND_SCROLL_THUMBRELEASE', 'EVT_COMMAND_SCROLL_CHANGED'
|
26
|
+
if evt_spec[2] == 0
|
27
|
+
evt_spec[2] = 1 # incorrectly documented without 'id' argument
|
28
|
+
evt_spec[4] = true # ignore extracted docs
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
defmod
|
34
|
+
end
|
35
|
+
end # class ScrollBar
|
36
|
+
|
37
|
+
end # class Director
|
38
|
+
|
39
|
+
end # module WXRuby3
|
@@ -0,0 +1,39 @@
|
|
1
|
+
###
|
2
|
+
# wxRuby3 wxWidgets interface director
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
4
|
+
###
|
5
|
+
|
6
|
+
require_relative './window'
|
7
|
+
|
8
|
+
module WXRuby3
|
9
|
+
|
10
|
+
class Director
|
11
|
+
|
12
|
+
class Slider < Window
|
13
|
+
|
14
|
+
def setup
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
def process(gendoc: false)
|
19
|
+
defmod = super
|
20
|
+
# fix documentation errors for scroll events
|
21
|
+
def_item = defmod.find_item('wxSlider')
|
22
|
+
if def_item
|
23
|
+
def_item.event_types.each do |evt_spec|
|
24
|
+
case evt_spec.first
|
25
|
+
when 'EVT_COMMAND_SCROLL_THUMBRELEASE', 'EVT_COMMAND_SCROLL_CHANGED'
|
26
|
+
if evt_spec[2] == 0
|
27
|
+
evt_spec[2] = 1 # incorrectly documented without 'id' argument
|
28
|
+
evt_spec[4] = true # ignore extracted docs
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
defmod
|
34
|
+
end
|
35
|
+
end # class Slider
|
36
|
+
|
37
|
+
end # class Director
|
38
|
+
|
39
|
+
end # module WXRuby3
|
@@ -156,7 +156,29 @@ module WXRuby3
|
|
156
156
|
extern VALUE wxRuby_GetWindowClass() {
|
157
157
|
return SwigClassWxWindow.klass;
|
158
158
|
}
|
159
|
+
// we need this static method here because we do not want SWIG to parse the preprocessor
|
160
|
+
// statements (#if/#else/#endif) which it does in %extend blocks
|
161
|
+
static VALUE do_paint_buffered(wxWindow* ptr)
|
162
|
+
{
|
163
|
+
VALUE rc = Qnil;
|
164
|
+
wxAutoBufferedPaintDC dc(ptr);
|
165
|
+
#if wxALWAYS_NATIVE_DOUBLE_BUFFER
|
166
|
+
wxPaintDC* ptr_dc = &dc;
|
167
|
+
VALUE r_class = rb_const_get(mWxCore, rb_intern("PaintDC"));
|
168
|
+
#else
|
169
|
+
wxMemoryDC* ptr_dc = &dc;
|
170
|
+
VALUE r_class = rb_const_get(mWxCore, rb_intern("MemoryDC"));
|
171
|
+
#endif
|
172
|
+
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(r_class);
|
173
|
+
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ptr_dc), swig_type, 0);
|
174
|
+
rc = rb_yield(rb_dc);
|
175
|
+
SWIG_RubyRemoveTracking((void *)ptr_dc);
|
176
|
+
DATA_PTR(rb_dc) = NULL;
|
177
|
+
|
178
|
+
return rc;
|
179
|
+
}
|
159
180
|
__HEREDOC
|
181
|
+
spec.add_header_code 'static VALUE do_paint_buffered(wxWindow* ptr);'
|
160
182
|
spec.add_extend_code 'wxWindow', <<~__HEREDOC
|
161
183
|
// passes a DC for drawing on Window into a passed ruby block, and
|
162
184
|
// ensure that the DC is correctly deleted when drawing is
|
@@ -167,9 +189,9 @@ module WXRuby3
|
|
167
189
|
{
|
168
190
|
static WxRuby_ID painting_id("@__painting__");
|
169
191
|
|
170
|
-
if (
|
171
|
-
rb_raise(rb_eArgError, "No block given for Window#paint");
|
192
|
+
if (!rb_block_given_p()) rb_raise(rb_eArgError, "No block given for Window#paint");
|
172
193
|
|
194
|
+
VALUE rc = Qnil;
|
173
195
|
wxWindow *ptr = self;
|
174
196
|
VALUE rb_win = SWIG_RubyInstanceFor(ptr);
|
175
197
|
// see if within an evt_paint block - see classes/window.rb
|
@@ -178,7 +200,7 @@ module WXRuby3
|
|
178
200
|
{
|
179
201
|
wxPaintDC dc(ptr);
|
180
202
|
VALUE dcVal = SWIG_NewPointerObj((void *) &dc,SWIGTYPE_p_wxPaintDC, 0);
|
181
|
-
rb_yield(dcVal);
|
203
|
+
rc = rb_yield(dcVal);
|
182
204
|
SWIG_RubyRemoveTracking((void *) &dc);
|
183
205
|
DATA_PTR(dcVal) = NULL;
|
184
206
|
}
|
@@ -186,12 +208,21 @@ module WXRuby3
|
|
186
208
|
{
|
187
209
|
wxClientDC dc(ptr);
|
188
210
|
VALUE dcVal = SWIG_NewPointerObj((void *) &dc,SWIGTYPE_p_wxClientDC, 0);
|
189
|
-
rb_yield(dcVal);
|
211
|
+
rc = rb_yield(dcVal);
|
190
212
|
SWIG_RubyRemoveTracking((void *) &dc);
|
191
213
|
DATA_PTR(dcVal) = NULL;
|
192
214
|
}
|
193
215
|
|
194
|
-
return
|
216
|
+
return rc;
|
217
|
+
}
|
218
|
+
|
219
|
+
// similar to the paint() method but now for buffered painting
|
220
|
+
// we do not check __painting__ here, instead we do that in pure Ruby
|
221
|
+
VALUE paint_buffered()
|
222
|
+
{
|
223
|
+
if (!rb_block_given_p()) rb_raise(rb_eArgError, "No block given for Window#paint_buffered");
|
224
|
+
|
225
|
+
return do_paint_buffered(self);
|
195
226
|
}
|
196
227
|
|
197
228
|
// Return a window handle as a platform-specific ruby integer
|
@@ -28,13 +28,6 @@ module WXRuby3
|
|
28
28
|
return ;
|
29
29
|
}
|
30
30
|
__HEREDOC
|
31
|
-
spec.ignore %w[
|
32
|
-
wxFindWindowByLabel
|
33
|
-
wxFindWindowByName
|
34
|
-
wxNewId
|
35
|
-
wxUsleep
|
36
|
-
]
|
37
|
-
spec.ignore 'wxPostDelete' unless Config.instance.wx_version >= '3.3.0'
|
38
31
|
spec.do_not_generate(:variables, :enums, :defines, :functions)
|
39
32
|
end
|
40
33
|
end # class WindowDisabler
|
@@ -227,7 +227,7 @@ module WXRuby3
|
|
227
227
|
end
|
228
228
|
# record event handler (macro) name, event type handled and the number of event id arguments
|
229
229
|
evt_arity = args.inject(0) {|c, a| c += 1 if a.start_with?('id'); c }
|
230
|
-
@event_types << [evt_handler, evt_type, evt_arity, evt_klass]
|
230
|
+
@event_types << [evt_handler, evt_type, evt_arity, evt_klass, false]
|
231
231
|
end
|
232
232
|
end
|
233
233
|
end
|
@@ -111,7 +111,7 @@ module WXRuby3
|
|
111
111
|
end
|
112
112
|
params << { name: pnm, type: arg.type }
|
113
113
|
if paramdef.default
|
114
|
-
defexp = rb_constant_expression(paramdef.default)
|
114
|
+
defexp = rb_constant_expression(paramdef.default, xml_trans.constants_xref_db)
|
115
115
|
# in case the default expression dereferences a pointer or passes an address clean it up
|
116
116
|
defexp.sub!(/\A\s*[\*\&]/, '')
|
117
117
|
# in case the default expression contains anything else but simple numbers or identifiers, wrap in ()
|
data/rakelib/lib/generate/doc.rb
CHANGED
@@ -46,12 +46,17 @@ module WXRuby3
|
|
46
46
|
tmpfile << script
|
47
47
|
tmpfile.close(false)
|
48
48
|
result = if Director.trace?
|
49
|
-
Config.instance.run(ftmp_name, capture: :out)
|
49
|
+
Config.instance.run(ftmp_name, capture: :out, verbose: false)
|
50
50
|
else
|
51
|
-
Config.instance.run(ftmp_name, capture: :no_err)
|
51
|
+
Config.instance.run(ftmp_name, capture: :no_err, verbose: false)
|
52
52
|
end
|
53
53
|
STDERR.puts "* got constants collection output:\n#{result}" if Director.trace?
|
54
|
-
|
54
|
+
begin
|
55
|
+
db = JSON.load(result)
|
56
|
+
rescue Exception
|
57
|
+
File.open('constants_raw.json', "w") { |f| f << result } if Director.verbose?
|
58
|
+
::Kernel.raise RuntimeError, "Exception loading constants collection result: #{$!.message.slice(0, 512)}", cause: nil
|
59
|
+
end
|
55
60
|
File.open('constants.json', "w") { |f| f << JSON.pretty_generate(db) } if Director.verbose?
|
56
61
|
return db
|
57
62
|
ensure
|
@@ -293,6 +298,8 @@ module WXRuby3
|
|
293
298
|
["#{DocGenerator.constants_xref_db[constnm]['mod']}::#{constnm}", true]
|
294
299
|
elsif DocGenerator.constants_xref_db.has_key?(rb_constant_name(nm_str))
|
295
300
|
["Wx::#{rb_constant_name(nm_str)}", true]
|
301
|
+
elsif DocGenerator.constants_xref_db.has_key?(rb_constant_name(nm_str, false))
|
302
|
+
["Wx::#{rb_constant_name(nm_str, false)}", true]
|
296
303
|
elsif !_is_method?(nm_str, ref_scope)
|
297
304
|
["Wx::#{constnm}", true]
|
298
305
|
else
|
@@ -324,6 +331,9 @@ module WXRuby3
|
|
324
331
|
elsif DocGenerator.constants_xref_db.has_key?(rb_constant_name(nm_str))
|
325
332
|
cnm = rb_constant_name(nm_str)
|
326
333
|
constnm = "#{DocGenerator.constants_xref_db[cnm]['mod']}::#{cnm}"
|
334
|
+
elsif DocGenerator.constants_xref_db.has_key?(rb_constant_name(nm_str, false))
|
335
|
+
cnm = rb_constant_name(nm_str, false)
|
336
|
+
constnm = "#{DocGenerator.constants_xref_db[cnm]['mod']}::#{cnm}"
|
327
337
|
elsif nm_str.start_with?('wx')
|
328
338
|
known = false
|
329
339
|
constnm = "Wx::#{constnm}"
|
@@ -411,10 +421,12 @@ module WXRuby3
|
|
411
421
|
para = node_to_doc(node)
|
412
422
|
# loose specific notes paragraphs
|
413
423
|
case para
|
414
|
-
when /\A
|
415
|
-
|
424
|
+
when /\A(\<b\>)?wxPerl Note:/, # wxPerl note
|
425
|
+
/\A\s*Library:/, # Library note
|
426
|
+
/\A\s*Include\s+file:/ # Include file note
|
416
427
|
''
|
417
428
|
else
|
429
|
+
para.sub!(/Include\s+file:\s+\#include\s+\<[^>]+\>\s*\Z/, '')
|
418
430
|
if event_section?
|
419
431
|
case para
|
420
432
|
when /The following event handler macros redirect.*(\{.*})/
|
@@ -509,6 +521,14 @@ module WXRuby3
|
|
509
521
|
doc
|
510
522
|
end
|
511
523
|
|
524
|
+
def constants_db
|
525
|
+
DocGenerator.constants_db
|
526
|
+
end
|
527
|
+
|
528
|
+
def constants_xref_db
|
529
|
+
DocGenerator.constants_xref_db
|
530
|
+
end
|
531
|
+
|
512
532
|
end
|
513
533
|
|
514
534
|
def run
|
@@ -611,7 +631,7 @@ module WXRuby3
|
|
611
631
|
end
|
612
632
|
else
|
613
633
|
item.items.each do |e|
|
614
|
-
const_name = rb_constant_name(e.name)
|
634
|
+
const_name = rb_constant_name(e.name, false)
|
615
635
|
if xref_table.has_key?(const_name)
|
616
636
|
gen_constant_doc(fdoc, const_name, xref_table[const_name], get_constant_doc(e))
|
617
637
|
end
|
@@ -43,6 +43,7 @@ module WXRuby3
|
|
43
43
|
Director.Spec(pkg, 'wxPen')
|
44
44
|
Director.Spec(pkg, 'wxPalette')
|
45
45
|
Director.Spec(pkg, 'wxRegion')
|
46
|
+
Director.Spec(pkg, 'wxRegionIterator')
|
46
47
|
Director.Spec(pkg, 'wxIconLocation')
|
47
48
|
Director.Spec(pkg, 'wxBitmap')
|
48
49
|
Director.Spec(pkg, 'wxIcon')
|
@@ -84,7 +85,8 @@ module WXRuby3
|
|
84
85
|
Director.Spec(pkg, 'wxCollapsiblePaneEvent', requirements: %w[wxUSE_COLLPANE])
|
85
86
|
Director.Spec(pkg, 'wxStaticLine', director: Director::Window)
|
86
87
|
Director.Spec(pkg, 'wxGauge', director: Director::Window)
|
87
|
-
Director.Spec(pkg, 'wxSlider'
|
88
|
+
Director.Spec(pkg, 'wxSlider')
|
89
|
+
Director.Spec(pkg, 'wxScrollBar')
|
88
90
|
Director.Spec(pkg, 'wxStaticText', director: Director::Window)
|
89
91
|
Director.Spec(pkg, 'wxSpinButton', director: Director::Window, requirements: %w[wxUSE_SPINBTN])
|
90
92
|
Director.Spec(pkg, 'wxSpinEvent', director: Director::Event, requirements: Director.AnyOf(*%w[wxUSE_SPINBTN wxUSE_SPINCTRL]))
|
@@ -220,6 +222,8 @@ module WXRuby3
|
|
220
222
|
Director.Spec(pkg, 'wxRichTextHeaderFooterData', requirements: %w[wxUSE_PRINTING_ARCHITECTURE])
|
221
223
|
Director.Spec(pkg, 'wxRichTextPrinting', requirements: %w[wxUSE_PRINTING_ARCHITECTURE])
|
222
224
|
Director.Spec(pkg, 'wxSymbolPickerDialog', director: Director::Dialog)
|
225
|
+
# need to look into special needs
|
226
|
+
# Director.Spec(pkg, 'wxRichTextBufferDataObject')
|
223
227
|
}
|
224
228
|
|
225
229
|
Director.Package('Wx::STC', 'wxUSE_STC') { |pkg|
|
@@ -270,6 +274,7 @@ module WXRuby3
|
|
270
274
|
Director.Spec(pkg, 'wxHtmlEasyPrinting', requirements: %w[wxUSE_PRINTING_ARCHITECTURE])
|
271
275
|
Director.Spec(pkg, 'wxHtmlPrintout', requirements: %w[wxUSE_PRINTING_ARCHITECTURE])
|
272
276
|
Director.Spec(pkg, 'wxHtmlListBox')
|
277
|
+
Director.Spec(pkg, 'wxHTMLDataObject') if Config.instance.wx_version >= '3.3'
|
273
278
|
}
|
274
279
|
|
275
280
|
Director.Package('Wx::AUI', 'wxUSE_AUI') { |pkg|
|
@@ -588,7 +588,7 @@ module WXRuby3
|
|
588
588
|
end
|
589
589
|
|
590
590
|
# special case bc SWIG causes trouble in Window.cpp
|
591
|
-
map 'const wxRegion&', 'const wxRegion*' do
|
591
|
+
map 'const wxRegion&', 'const wxRegion*', as: 'Wx::Region' do
|
592
592
|
map_out code: '$result = wxRuby_WrapWxObjectInRuby(new wxRegion(*static_cast<const wxRegion*> ($1)));'
|
593
593
|
end
|
594
594
|
|
data/rakelib/lib/util/string.rb
CHANGED
@@ -62,10 +62,13 @@ module WXRuby3
|
|
62
62
|
rbnm
|
63
63
|
end
|
64
64
|
|
65
|
-
def rb_constant_name(name)
|
66
|
-
rbnm = underscore(name)
|
65
|
+
def rb_constant_name(name, do_transform = true)
|
66
|
+
rbnm = do_transform ? underscore(name) : name.dup
|
67
67
|
rbnm.sub!(/\Awx_/, '')
|
68
|
-
|
68
|
+
unless do_transform
|
69
|
+
rbnm.sub!(/\Awx([A-Z])/, '\1')
|
70
|
+
end
|
71
|
+
rbnm.upcase! if do_transform
|
69
72
|
rbnm
|
70
73
|
end
|
71
74
|
|
@@ -85,10 +88,17 @@ module WXRuby3
|
|
85
88
|
|
86
89
|
def rb_constant_value(name)
|
87
90
|
val = name.sub(/\Awx/, 'Wx::')
|
88
|
-
|
91
|
+
case val
|
92
|
+
when /NULL|nullptr/
|
93
|
+
'nil'
|
94
|
+
when /EmptyString/
|
95
|
+
%q['']
|
96
|
+
else
|
97
|
+
val
|
98
|
+
end
|
89
99
|
end
|
90
100
|
|
91
|
-
def rb_constant_expression(exp)
|
101
|
+
def rb_constant_expression(exp, const_xref)
|
92
102
|
exp.gsub(/(\w+(::\w+)*)(\s*\()?/) do |s|
|
93
103
|
idstr = $1
|
94
104
|
is_call = !!$3
|
@@ -119,15 +129,26 @@ module WXRuby3
|
|
119
129
|
else
|
120
130
|
if is_scoped
|
121
131
|
# nested identifier
|
132
|
+
if const_xref.has_key?(rb_constant_name(idstr))
|
133
|
+
"#{scoped_name}::#{rb_constant_name(idstr)}"
|
134
|
+
elsif const_xref.has_key?(rb_constant_name(idstr, false))
|
135
|
+
"#{scoped_name}::#{rb_constant_name(idstr, false)}"
|
136
|
+
end
|
122
137
|
"#{scoped_name}::#{idstr}"
|
123
138
|
else
|
124
139
|
# constant
|
125
140
|
if /[\-\+\.\d]+/ =~ idstr
|
126
141
|
idstr # numeric constant
|
127
|
-
elsif /\A(true|false|NULL)/ =~ idstr
|
128
|
-
$1 == 'NULL' ? 'nil' : $1
|
142
|
+
elsif /\A(true|false|NULL|nullptr)/ =~ idstr
|
143
|
+
($1 == 'NULL' || $1 == 'nullptr') ? 'nil' : $1
|
129
144
|
else
|
130
|
-
|
145
|
+
if const_xref.has_key?(rb_constant_name(idstr))
|
146
|
+
"#{const_xref[rb_constant_name(idstr)]['mod']}::#{rb_constant_name(idstr)}"
|
147
|
+
elsif const_xref.has_key?(rb_constant_name(idstr, false))
|
148
|
+
"#{const_xref[rb_constant_name(idstr, false)]['mod']}::#{rb_constant_name(idstr, false)}"
|
149
|
+
else
|
150
|
+
rb_constant_value(idstr)
|
151
|
+
end
|
131
152
|
end
|
132
153
|
end
|
133
154
|
end
|
Binary file
|
Binary file
|
Binary file
|
data/samples/art/wxruby.ico
CHANGED
Binary file
|
data/samples/art/wxruby.png
CHANGED
Binary file
|
@@ -155,8 +155,7 @@ class GraphicsWindow < Wx::Window
|
|
155
155
|
def on_paint
|
156
156
|
# We do our drawing now
|
157
157
|
rect = self.get_client_size
|
158
|
-
|
159
|
-
gdc = Wx::GraphicsContext.create(dc)
|
158
|
+
Wx::GraphicsContext.draw_on(self) do |gdc|
|
160
159
|
unless @rtxt
|
161
160
|
create_resources(gdc)
|
162
161
|
end
|
@@ -286,75 +286,75 @@ class MyColourProperty < Wx::PG::ColourProperty
|
|
286
286
|
end
|
287
287
|
|
288
288
|
module ID
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
289
|
+
include Wx::IDHelper
|
290
|
+
|
291
|
+
PGID = self.next_id
|
292
|
+
ABOUT = self.next_id
|
293
|
+
QUIT = self.next_id
|
294
|
+
APPENDPROP = self.next_id
|
295
|
+
APPENDCAT = self.next_id
|
296
|
+
INSERTPROP = self.next_id
|
297
|
+
INSERTCAT = self.next_id
|
298
|
+
ENABLE = self.next_id
|
299
|
+
SETREADONLY = self.next_id
|
300
|
+
HIDE = self.next_id
|
301
|
+
BOOL_CHECKBOX = self.next_id
|
302
|
+
DELETE = self.next_id
|
303
|
+
DELETER = self.next_id
|
304
|
+
DELETEALL = self.next_id
|
305
|
+
UNSPECIFY = self.next_id
|
306
|
+
ITERATE1 = self.next_id
|
307
|
+
ITERATE2 = self.next_id
|
308
|
+
ITERATE3 = self.next_id
|
309
|
+
ITERATE4 = self.next_id
|
310
|
+
CLEARMODIF = self.next_id
|
311
|
+
FREEZE = self.next_id
|
312
|
+
DUMPLIST = self.next_id
|
313
|
+
COLOURSCHEME1 = self.next_id
|
314
|
+
COLOURSCHEME2 = self.next_id
|
315
|
+
COLOURSCHEME3 = self.next_id
|
316
|
+
CATCOLOURS = self.next_id
|
317
|
+
SETBGCOLOUR = self.next_id
|
318
|
+
SETBGCOLOURRECUR = self.next_id
|
319
|
+
STATICLAYOUT = self.next_id
|
320
|
+
POPULATE1 = self.next_id
|
321
|
+
POPULATE2 = self.next_id
|
322
|
+
COLLAPSE = self.next_id
|
323
|
+
COLLAPSEALL = self.next_id
|
324
|
+
GETVALUES = self.next_id
|
325
|
+
SETVALUES = self.next_id
|
326
|
+
SETVALUES2 = self.next_id
|
327
|
+
RUNTESTFULL = self.next_id
|
328
|
+
RUNTESTPARTIAL = self.next_id
|
329
|
+
FITCOLUMNS = self.next_id
|
330
|
+
CHANGEFLAGSITEMS = self.next_id
|
331
|
+
TESTINSERTCHOICE = self.next_id
|
332
|
+
TESTDELETECHOICE = self.next_id
|
333
|
+
INSERTPAGE = self.next_id
|
334
|
+
REMOVEPAGE = self.next_id
|
335
|
+
SETSPINCTRLEDITOR = self.next_id
|
336
|
+
SETPROPERTYVALUE = self.next_id
|
337
|
+
TESTREPLACE = self.next_id
|
338
|
+
SETCOLUMNS = self.next_id
|
339
|
+
SETVIRTWIDTH = self.next_id
|
340
|
+
SETPGDISABLED = self.next_id
|
341
|
+
TESTXRC = self.next_id
|
342
|
+
ENABLECOMMONVALUES = self.next_id
|
343
|
+
SELECTSTYLE = self.next_id
|
344
|
+
SAVESTATE = self.next_id
|
345
|
+
RESTORESTATE = self.next_id
|
346
|
+
RUNMINIMAL = self.next_id
|
347
|
+
ENABLELABELEDITING = self.next_id
|
348
|
+
VETOCOLDRAG = self.next_id
|
349
|
+
ONEXTENDEDKEYNAV = self.next_id
|
350
|
+
SHOWPOPUP = self.next_id
|
351
|
+
POPUPGRID = self.next_id
|
352
352
|
|
353
353
|
if Wx.has_feature?(:USE_HEADERCTRL)
|
354
|
-
SHOWHEADER =
|
354
|
+
SHOWHEADER = self.next_id
|
355
355
|
end
|
356
356
|
|
357
|
-
COLOURSCHEME4 =
|
357
|
+
COLOURSCHEME4 = self.next_id
|
358
358
|
end
|
359
359
|
|
360
360
|
#
|