wxruby3 0.9.8 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +23 -1
- data/README.md +12 -26
- data/ext/mkrf_conf_ext.rb +11 -7
- data/lib/wx/core/app.rb +16 -0
- data/lib/wx/core/colour.rb +36 -28
- data/lib/wx/core/const.rb +19 -0
- data/lib/wx/core/enum.rb +17 -1
- data/lib/wx/core/geometry.rb +121 -0
- data/lib/wx/core/graphics_pen_info.rb +18 -0
- data/lib/wx/core/image.rb +49 -0
- data/lib/wx/core/menu_bar.rb +11 -0
- data/lib/wx/core/paintdc.rb +9 -3
- data/lib/wx/doc/app.rb +97 -41
- data/lib/wx/doc/bitmap.rb +4 -0
- data/lib/wx/doc/client_dc.rb +2 -2
- data/lib/wx/doc/clipboard.rb +1 -1
- data/lib/wx/doc/colour.rb +12 -0
- data/lib/wx/doc/const.rb +16 -0
- data/lib/wx/doc/cursor.rb +4 -0
- data/lib/wx/doc/dc_overlay.rb +34 -0
- data/lib/wx/doc/enum.rb +7 -1
- data/lib/wx/doc/event_blocker.rb +1 -1
- data/lib/wx/doc/evthandler.rb +25 -3
- data/lib/wx/doc/functions.rb +3 -6
- data/lib/wx/doc/gc_dc.rb +13 -4
- data/lib/wx/doc/geometry.rb +136 -0
- data/lib/wx/doc/graphics_context.rb +25 -7
- data/lib/wx/doc/icon.rb +4 -0
- data/lib/wx/doc/image.rb +56 -0
- data/lib/wx/doc/list_ctrl.rb +6 -6
- data/lib/wx/doc/memory_dc.rb +2 -11
- data/lib/wx/doc/mirror_dc.rb +1 -1
- data/lib/wx/doc/pen.rb +26 -0
- data/lib/wx/doc/persistence_manager.rb +1 -1
- data/lib/wx/doc/persistent_object.rb +1 -1
- data/lib/wx/doc/pg/property_grid_interface.rb +3 -3
- data/lib/wx/doc/prt/printer_dc.rb +2 -2
- data/lib/wx/doc/region_iterator.rb +1 -1
- data/lib/wx/doc/scaled_dc.rb +1 -1
- data/lib/wx/doc/screen_dc.rb +1 -1
- data/lib/wx/doc/svg_file_dc.rb +1 -1
- data/lib/wx/doc/textctrl.rb +1 -1
- data/lib/wx/doc/tree_ctrl.rb +2 -2
- data/lib/wx/doc/validator.rb +6 -6
- data/lib/wx/doc/variant.rb +2 -2
- data/lib/wx/doc/window.rb +5 -4
- data/lib/wx/grid/keyword_defs.rb +1 -1
- data/lib/wx/html/keyword_defs.rb +3 -3
- data/lib/wx/keyword_defs.rb +76 -71
- data/lib/wx/pg/keyword_defs.rb +2 -2
- data/lib/wx/pg/pg_property.rb +12 -0
- data/lib/wx/rbn/keyword_defs.rb +1 -1
- data/lib/wx/rtc/keyword_defs.rb +1 -1
- data/lib/wx/stc/keyword_defs.rb +1 -1
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/cmd/setup.rb +3 -0
- data/rakelib/configure.rb +7 -0
- data/rakelib/gem.rake +2 -1
- data/rakelib/gem.rb +3 -2
- data/rakelib/lib/config/linux.rb +1 -1
- data/rakelib/lib/config/unixish.rb +6 -7
- data/rakelib/lib/config.rb +25 -4
- data/rakelib/lib/core/include/enum.inc +31 -1
- data/rakelib/lib/director/affine_matrix.rb +51 -0
- data/rakelib/lib/director/app.rb +29 -13
- data/rakelib/lib/director/art_provider.rb +4 -0
- data/rakelib/lib/director/cursor.rb +6 -2
- data/rakelib/lib/director/dc.rb +1 -6
- data/rakelib/lib/director/derived_dc.rb +88 -31
- data/rakelib/lib/director/dialog.rb +0 -8
- data/rakelib/lib/director/geometry.rb +142 -0
- data/rakelib/lib/director/graphics_context.rb +3 -2
- data/rakelib/lib/director/graphics_object.rb +18 -25
- data/rakelib/lib/director/image.rb +59 -0
- data/rakelib/lib/director/menu.rb +2 -3
- data/rakelib/lib/director/menu_bar.rb +0 -3
- data/rakelib/lib/director/pen.rb +1 -1
- data/rakelib/lib/director/richtext_ctrl.rb +1 -1
- data/rakelib/lib/director/system_settings.rb +1 -1
- data/rakelib/lib/director/window.rb +4 -3
- data/rakelib/lib/extractor/function.rb +1 -1
- data/rakelib/lib/generate/doc/animation_ctrl.yaml +10 -0
- data/rakelib/lib/generate/doc/banner_window.yaml +35 -0
- data/rakelib/lib/generate/doc/graphics_context.yaml +12 -0
- data/rakelib/lib/generate/doc/graphics_object.yaml +12 -0
- data/rakelib/lib/generate/doc/grid_ctrl.yaml +25 -0
- data/rakelib/lib/generate/doc/header_ctrl.yaml +91 -0
- data/rakelib/lib/generate/doc/icon.yaml +10 -0
- data/rakelib/lib/generate/doc/info_bar.yaml +27 -0
- data/rakelib/lib/generate/doc/log.yaml +1 -1
- data/rakelib/lib/generate/doc/media_ctrl.yaml +27 -0
- data/rakelib/lib/generate/doc/persistent_window.yaml +22 -0
- data/rakelib/lib/generate/doc/pg_editor.yaml +1 -1
- data/rakelib/lib/generate/doc/pg_property.yaml +4 -4
- data/rakelib/lib/generate/doc/rearrange_list.yaml +14 -0
- data/rakelib/lib/generate/doc/ribbon_panel.yaml +15 -0
- data/rakelib/lib/generate/doc/rich_text_formatting_dialog.yaml +26 -0
- data/rakelib/lib/generate/doc/text_ctrl.yaml +1 -1
- data/rakelib/lib/generate/doc/wizard.yaml +27 -0
- data/rakelib/lib/generate/doc.rb +4 -4
- data/rakelib/lib/generate/interface.rb +1 -1
- data/rakelib/lib/specs/interfaces.rb +3 -0
- data/rakelib/lib/swig_runner.rb +24 -3
- data/rakelib/lib/typemap/points_list.rb +8 -2
- data/rakelib/lib/typemap/richtext.rb +17 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +3 -3
- data/samples/dialogs/wizard.rb +20 -19
- data/samples/drawing/art/drawing/image.bmp +0 -0
- data/samples/drawing/art/drawing/mask.bmp +0 -0
- data/samples/drawing/art/drawing/pat35.bmp +0 -0
- data/samples/drawing/art/drawing/pat36.bmp +0 -0
- data/samples/drawing/art/drawing/pat4.bmp +0 -0
- data/samples/drawing/art/drawing/smile.xpm +42 -0
- data/samples/drawing/drawing.rb +2276 -0
- data/samples/drawing/tn_drawing.png +0 -0
- data/samples/html/html.rb +1 -1
- data/samples/propgrid/propgrid.rb +1 -1
- data/samples/propgrid/propgrid_minimal.rb +1 -1
- data/samples/propgrid/sample_props.rb +1 -1
- data/samples/sampler/editor.rb +13 -11
- data/samples/sampler.rb +14 -10
- data/samples/text/richtext.rb +53 -0
- data/samples/text/scintilla.rb +1 -1
- data/samples/text/unicode.rb +4 -4
- data/tests/test_ext_controls.rb +12 -5
- data/tests/test_std_controls.rb +12 -12
- metadata +30 -30
- data/lib/wx/doc/extra/00_starting.md +0 -154
- data/lib/wx/doc/extra/01_packages.md +0 -180
- data/lib/wx/doc/extra/02_lifecycles.md +0 -166
- data/lib/wx/doc/extra/03_dialogs.md +0 -57
- data/lib/wx/doc/extra/04_enums.md +0 -143
- data/lib/wx/doc/extra/05_event-handling.md +0 -191
- data/lib/wx/doc/extra/06_geometry.md +0 -62
- data/lib/wx/doc/extra/07_colour_and_font.md +0 -52
- data/lib/wx/doc/extra/08_extensions.md +0 -144
- data/lib/wx/doc/extra/09_exceptions.md +0 -54
- data/lib/wx/doc/extra/10_art.md +0 -111
- data/lib/wx/doc/extra/11_drawing_and_dc.md +0 -62
- data/lib/wx/doc/extra/12_client_data.md +0 -89
- data/lib/wx/doc/extra/13_validators.md +0 -139
- data/lib/wx/doc/extra/14_config.md +0 -101
- data/lib/wx/doc/extra/15_persistence.md +0 -148
- data/samples/sampler/back.xpm +0 -21
- data/samples/sampler/copy.xpm +0 -44
- data/samples/sampler/cut.xpm +0 -46
- data/samples/sampler/filesave.xpm +0 -42
- data/samples/sampler/find.xpm +0 -62
- data/samples/sampler/findrepl.xpm +0 -63
- data/samples/sampler/forward.xpm +0 -21
- data/samples/sampler/paste.xpm +0 -46
- data/samples/sampler/redo.xpm +0 -58
- data/samples/sampler/undo.xpm +0 -58
data/rakelib/gem.rb
CHANGED
@@ -93,12 +93,13 @@ module WXRuby3
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def make_bin_name
|
96
|
+
basename = "wxruby3#{WXRuby3.config.with_wxhead? ? '-head' : ''}"
|
96
97
|
os = WXRuby3.config.sysinfo.os
|
97
98
|
case os.id
|
98
99
|
when :windows
|
99
|
-
"
|
100
|
+
"#{basename}_#{os.distro}_ruby#{WXRuby3::Config.rb_ver_major}#{WXRuby3::Config.rb_ver_minor}"
|
100
101
|
else
|
101
|
-
"
|
102
|
+
"#{basename}_#{os.distro}_#{os.release || '0'}_ruby#{WXRuby3::Config.rb_ver_major}#{WXRuby3::Config.rb_ver_minor}"
|
102
103
|
end
|
103
104
|
end
|
104
105
|
private :make_bin_name
|
data/rakelib/lib/config/linux.rb
CHANGED
@@ -81,7 +81,7 @@ module WXRuby3
|
|
81
81
|
@dll_pfx = 'lib'
|
82
82
|
|
83
83
|
if @wx_version
|
84
|
-
@extra_cflags.concat %w[-Wno-unused-function -Wno-conversion-null -Wno-maybe-uninitialized]
|
84
|
+
@extra_cflags.concat %w[-Wno-unused-function -Wno-conversion-null -Wno-maybe-uninitialized -Wno-deprecated-copy]
|
85
85
|
@extra_cflags << ' -Wno-deprecated-declarations' unless @no_deprecated
|
86
86
|
|
87
87
|
@ruby_ldflags << '-s' if @release_build # strip debug symbols for release build
|
@@ -92,11 +92,10 @@ module WXRuby3
|
|
92
92
|
chdir(ext_path) do
|
93
93
|
if (rc = sh("#{get_cfg_string('git')} clone https://github.com/wxWidgets/wxWidgets.git"))
|
94
94
|
chdir('wxWidgets') do
|
95
|
-
tag =
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
95
|
+
tag = wx_gitref ||
|
96
|
+
expand("#{get_cfg_string('git')} tag").split("\n").select do |t|
|
97
|
+
(/\Av(\d+)\.(\d+)\.\d+\Z/ =~ t) && (($1.to_i == 3 && $2.to_i >= 2) || $1.to_i > 3)
|
98
|
+
end.max
|
100
99
|
# checkout the version we are building against
|
101
100
|
rc = sh("#{get_cfg_string('git')} checkout #{tag}")
|
102
101
|
end
|
@@ -220,8 +219,8 @@ module WXRuby3
|
|
220
219
|
# add ruby defined shared ruby lib(s); not any other flags
|
221
220
|
@ruby_libs.concat RB_CONFIG['LIBRUBYARG_SHARED'].split(' ').select { |s| s.start_with?('-l')}
|
222
221
|
|
223
|
-
# maintain minimum compatibility with ABI 3.0.
|
224
|
-
@wx_abi_version = [ @wx_version, "3.0.
|
222
|
+
# maintain minimum compatibility with ABI 3.0.1
|
223
|
+
@wx_abi_version = [ @wx_version, "3.0.1" ].min
|
225
224
|
@wx_cppflags << "-DwxABI_VERSION=%s" % @wx_abi_version.tr(".", "0")
|
226
225
|
end
|
227
226
|
end
|
data/rakelib/lib/config.rb
CHANGED
@@ -313,7 +313,7 @@ module WXRuby3
|
|
313
313
|
private :make_ruby_cmd
|
314
314
|
|
315
315
|
def execute(*cmd)
|
316
|
-
|
316
|
+
sh(exec_env.merge({'RUBYLIB'=>rb_lib_path}), cmd.flatten.join(' '), fail_on_error: true)
|
317
317
|
end
|
318
318
|
|
319
319
|
def run(*cmd, capture: nil, verbose: true)
|
@@ -720,6 +720,10 @@ module WXRuby3
|
|
720
720
|
get_config('with-wxwin')
|
721
721
|
end
|
722
722
|
|
723
|
+
def with_wxhead?
|
724
|
+
get_config('with-wxhead')
|
725
|
+
end
|
726
|
+
|
723
727
|
def wx_version
|
724
728
|
@wx_version || ''
|
725
729
|
end
|
@@ -760,6 +764,17 @@ module WXRuby3
|
|
760
764
|
[ rake_deps_path, src_path, src_gen_path, obj_path, classes_path, common_path, interface_path ]
|
761
765
|
end
|
762
766
|
|
767
|
+
def wx_gitref
|
768
|
+
if @wx_version
|
769
|
+
"v#{@wx_version}"
|
770
|
+
elsif get_config('with-wxhead')
|
771
|
+
'master'
|
772
|
+
else
|
773
|
+
nil
|
774
|
+
end
|
775
|
+
end
|
776
|
+
private :wx_gitref
|
777
|
+
|
763
778
|
def do_bootstrap
|
764
779
|
install_prerequisites
|
765
780
|
# do we have a local wxWidgets tree already?
|
@@ -832,9 +847,15 @@ module WXRuby3
|
|
832
847
|
features = {}
|
833
848
|
|
834
849
|
if is_configured? && wxwidgets_setup_h
|
835
|
-
File.read(wxwidgets_setup_h).scan(/^\s*#define\s+(wx\w+|__\w+__)\s+([01])/) do | define |
|
836
|
-
|
837
|
-
|
850
|
+
File.read(wxwidgets_setup_h).scan(/^\s*#define\s+(wx\w+|__\w+__)\s+([01]|wx\w+)/) do | define |
|
851
|
+
val_str = $2
|
852
|
+
feat_str = $1
|
853
|
+
if val_str.start_with?('wx')
|
854
|
+
feat_val = !!features[val_str.sub(/\Awx/i, '')]
|
855
|
+
else
|
856
|
+
feat_val = val_str.to_i.zero? ? false : true
|
857
|
+
end
|
858
|
+
feat_id = feat_str.sub(/\Awx/i, '').gsub(/\A__|__\Z/, '')
|
838
859
|
features[feat_id] = feat_val
|
839
860
|
end
|
840
861
|
# make sure correct platform defines are included as well which will not be the case always
|
@@ -177,6 +177,7 @@ static VALUE wx_Enum_sc_create_enum_class(int argc, VALUE *argv, VALUE self)
|
|
177
177
|
ID id_to_i = rb_intern("to_i");
|
178
178
|
ID id_const_set = rb_intern("const_set");
|
179
179
|
VALUE enum_klass = rb_funcall(rb_cClass, id_new, 1, cWxEnum, 0);
|
180
|
+
VALUE enum_singleton_klass = rb_funcall(enum_klass, rb_intern("singleton_class"), 0, 0);
|
180
181
|
VALUE enum_values = rb_funcall(argv[1], rb_intern("keys"), 0, 0);
|
181
182
|
for (int i=0; i<RARRAY_LEN(enum_values) ;++i)
|
182
183
|
{
|
@@ -184,6 +185,8 @@ static VALUE wx_Enum_sc_create_enum_class(int argc, VALUE *argv, VALUE self)
|
|
184
185
|
VALUE enum_value_num = rb_funcall(rb_hash_aref(argv[1], enum_value_name), id_to_i, 0, 0);
|
185
186
|
VALUE enum_value = rb_funcall(enum_klass, id_new, 1, enum_value_num, 0);
|
186
187
|
rb_funcall(enum_klass, id_const_set, 2, enum_value_name, enum_value, 0);
|
188
|
+
rb_hash_aset(rb_iv_get(enum_singleton_klass, __iv_enum_klass_values), enum_value_num, enum_value);
|
189
|
+
rb_hash_aset(rb_iv_get(enum_singleton_klass, __iv_enum_klass_values_by_name), rb_to_symbol(enum_value_name), enum_value);
|
187
190
|
}
|
188
191
|
rb_hash_aset(rb_iv_get(cEnum_Singleton, __iv_Enum_sc_enums), enum_name, enum_klass);
|
189
192
|
return enum_klass;
|
@@ -230,10 +233,31 @@ static VALUE wx_Enum_sc_get_enum_value(int argc, VALUE *argv, VALUE self)
|
|
230
233
|
return rb_hash_aref(rb_iv_get(enum_singleton_klass, __iv_enum_klass_values_by_name), rb_to_symbol(argv[0]));
|
231
234
|
}
|
232
235
|
|
236
|
+
static VALUE wx_Enum_sc_get_enum_values(VALUE self)
|
237
|
+
{
|
238
|
+
VALUE enum_singleton_klass = rb_funcall(self, rb_intern("singleton_class"), 0, 0);
|
239
|
+
return rb_iv_get(enum_singleton_klass, __iv_enum_klass_values);
|
240
|
+
}
|
241
|
+
|
242
|
+
static VALUE wx_Enum_sc_get_enum_values_by_name(VALUE self)
|
243
|
+
{
|
244
|
+
VALUE enum_singleton_klass = rb_funcall(self, rb_intern("singleton_class"), 0, 0);
|
245
|
+
return rb_iv_get(enum_singleton_klass, __iv_enum_klass_values_by_name);
|
246
|
+
}
|
247
|
+
|
248
|
+
static VALUE wx_Enum_sc_get_enum_names_by_value(VALUE self)
|
249
|
+
{
|
250
|
+
VALUE enum_singleton_klass = rb_funcall(self, rb_intern("singleton_class"), 0, 0);
|
251
|
+
return rb_funcall(rb_iv_get(enum_singleton_klass, __iv_enum_klass_values_by_name), rb_intern("invert"), 0);
|
252
|
+
}
|
253
|
+
|
233
254
|
WXRB_EXPORT_FLAG VALUE wxRuby_CreateEnumClass(const char* enum_class_name_cstr)
|
234
255
|
{
|
235
256
|
VALUE enum_klass = rb_funcall(rb_cClass, rb_intern("new"), 1, cWxEnum, 0);
|
236
257
|
rb_define_singleton_method(enum_klass, "[]", VALUEFUNC(wx_Enum_sc_get_enum_value), -1);
|
258
|
+
rb_define_singleton_method(enum_klass, "values", VALUEFUNC(wx_Enum_sc_get_enum_values), 0);
|
259
|
+
rb_define_singleton_method(enum_klass, "values_by_name", VALUEFUNC(wx_Enum_sc_get_enum_values_by_name), 0);
|
260
|
+
rb_define_singleton_method(enum_klass, "names_by_value", VALUEFUNC(wx_Enum_sc_get_enum_names_by_value), 0);
|
237
261
|
VALUE enum_singleton_klass = rb_funcall(enum_klass, rb_intern("singleton_class"), 0, 0);
|
238
262
|
rb_iv_set(enum_singleton_klass, __iv_enum_klass_values, rb_hash_new());
|
239
263
|
rb_iv_set(enum_singleton_klass, __iv_enum_klass_values_by_name, rb_hash_new());
|
@@ -266,7 +290,13 @@ WXRB_EXPORT_FLAG VALUE wxRuby_GetEnumValueObject(const char* enum_wx_class_name_
|
|
266
290
|
VALUE enum_klass = rb_hash_aref(enum_hash, ID2SYM(rb_intern(enum_class_name)));
|
267
291
|
VALUE enum_singleton_klass = rb_funcall(enum_klass, rb_intern("singleton_class"), 0, 0);
|
268
292
|
VALUE enum_values_hash = rb_iv_get(enum_singleton_klass, __iv_enum_klass_values);
|
269
|
-
|
293
|
+
VALUE rc = rb_hash_aref(enum_values_hash, INT2NUM(enum_val));
|
294
|
+
if (NIL_P(rc))
|
295
|
+
{
|
296
|
+
VALUE args[1] = { INT2NUM(enum_val) };
|
297
|
+
rc = rb_class_new_instance(1, args, enum_klass);
|
298
|
+
}
|
299
|
+
return rc;
|
270
300
|
}
|
271
301
|
return Qnil;
|
272
302
|
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
###
|
6
|
+
# wxRuby3 wxWidgets interface director
|
7
|
+
###
|
8
|
+
|
9
|
+
module WXRuby3
|
10
|
+
|
11
|
+
class Director
|
12
|
+
|
13
|
+
class AffineMatrix2D < Director
|
14
|
+
|
15
|
+
def setup
|
16
|
+
spec.items.unshift('wxAffineMatrix2DBase') << 'wxMatrix2D'
|
17
|
+
|
18
|
+
spec.make_abstract 'wxAffineMatrix2DBase'
|
19
|
+
spec.disable_proxies
|
20
|
+
|
21
|
+
spec.map_apply 'int * OUTPUT' => ['wxDouble *']
|
22
|
+
spec.map 'wxPoint2DDouble *' => 'Wx::Point2DDouble' do
|
23
|
+
map_in ignore: true, temp: 'wxPoint2DDouble tmp', code: '$1 = &tmp;'
|
24
|
+
|
25
|
+
map_argout code: <<~__CODE
|
26
|
+
$result = SWIG_Ruby_AppendOutput($result, SWIG_NewPointerObj(new wxPoint2DDouble(tmp$argnum), SWIGTYPE_p_wxPoint2DDouble, SWIG_POINTER_OWN));
|
27
|
+
__CODE
|
28
|
+
end
|
29
|
+
spec.map 'wxMatrix2D *' => 'Wx::Matrix2D' do
|
30
|
+
map_in ignore: true, temp: 'wxMatrix2D tmp', code: '$1 = &tmp;'
|
31
|
+
|
32
|
+
map_argout code: <<~__CODE
|
33
|
+
$result = SWIG_Ruby_AppendOutput($result, SWIG_NewPointerObj(new wxMatrix2D(tmp$argnum), SWIGTYPE_p_wxPoint2DDouble, SWIG_POINTER_OWN));
|
34
|
+
__CODE
|
35
|
+
end
|
36
|
+
|
37
|
+
spec.ignore 'wxAffineMatrix2D::Mirror',
|
38
|
+
'wxAffineMatrix2D::TransformPoint',
|
39
|
+
'wxAffineMatrix2D::TransformDistance',
|
40
|
+
'wxAffineMatrix2D::IsEqual'
|
41
|
+
|
42
|
+
spec.regard 'wxMatrix2D::m_11', 'wxMatrix2D::m_12',
|
43
|
+
'wxMatrix2D::m_21', 'wxMatrix2D::m_22'
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/rakelib/lib/director/app.rb
CHANGED
@@ -87,31 +87,47 @@ module WXRuby3
|
|
87
87
|
}
|
88
88
|
__HEREDOC
|
89
89
|
if Config.platform == :macosx
|
90
|
-
# add accessor methods for the standard OSX menu items
|
90
|
+
# add static accessor methods for the standard OSX menu items
|
91
91
|
spec.add_extend_code 'wxApp', <<~__HEREDOC
|
92
|
-
void set_mac_about_menu_itemid(long menu_itemid)
|
92
|
+
static void set_mac_about_menu_itemid(long menu_itemid)
|
93
93
|
{
|
94
|
-
|
94
|
+
wxApp::s_macAboutMenuItemId = menu_itemid;
|
95
95
|
}
|
96
|
-
long get_mac_about_menu_itemid(long menu_itemid)
|
96
|
+
static long get_mac_about_menu_itemid(long menu_itemid)
|
97
97
|
{
|
98
|
-
return
|
98
|
+
return wxApp::s_macAboutMenuItemId;
|
99
99
|
}
|
100
|
-
void set_mac_preferences_menu_itemid(long menu_itemid)
|
100
|
+
static void set_mac_preferences_menu_itemid(long menu_itemid)
|
101
101
|
{
|
102
|
-
|
102
|
+
wxApp::s_macPreferencesMenuItemId = menu_itemid;
|
103
103
|
}
|
104
|
-
long get_mac_preferences_menu_itemid(long menu_itemid)
|
104
|
+
static long get_mac_preferences_menu_itemid(long menu_itemid)
|
105
105
|
{
|
106
|
-
return
|
106
|
+
return wxApp::s_macPreferencesMenuItemId;
|
107
107
|
}
|
108
|
-
void set_mac_exit_menu_itemid(long menu_itemid)
|
108
|
+
static void set_mac_exit_menu_itemid(long menu_itemid)
|
109
109
|
{
|
110
|
-
|
110
|
+
wxApp::s_macExitMenuItemId = menu_itemid;
|
111
111
|
}
|
112
|
-
long get_mac_exit_menu_itemid(long menu_itemid)
|
112
|
+
static long get_mac_exit_menu_itemid(long menu_itemid)
|
113
113
|
{
|
114
|
-
return
|
114
|
+
return wxApp::s_macExitMenuItemId;
|
115
|
+
}
|
116
|
+
static void set_mac_help_menu_title(const wxString& title)
|
117
|
+
{
|
118
|
+
wxApp::s_macHelpMenuTitleName = title;
|
119
|
+
}
|
120
|
+
static const wxString& get_mac_help_menu_title()
|
121
|
+
{
|
122
|
+
return wxApp::s_macHelpMenuTitleName;
|
123
|
+
}
|
124
|
+
static void set_mac_window_menu_title(const wxString& title)
|
125
|
+
{
|
126
|
+
wxApp::s_macWindowMenuTitleName = title;
|
127
|
+
}
|
128
|
+
static const wxString& get_mac_window_menu_title()
|
129
|
+
{
|
130
|
+
return wxApp::s_macWindowMenuTitleName;
|
115
131
|
}
|
116
132
|
__HEREDOC
|
117
133
|
end
|
@@ -28,6 +28,10 @@ module WXRuby3
|
|
28
28
|
// ArtId and ArtClient are basically just strings ...
|
29
29
|
typedef wxString wxArtID;
|
30
30
|
typedef wxString wxArtClient;
|
31
|
+
|
32
|
+
// Missing from docs
|
33
|
+
%constant const char* wxART_STOP = wxART_STOP;
|
34
|
+
%constant const char* wxART_REFRESH = wxART_REFRESH;
|
31
35
|
__HEREDOC
|
32
36
|
spec.map *%w[wxArtID wxArtClient], as: 'String', swig: false do
|
33
37
|
map_in
|
@@ -20,8 +20,12 @@ module WXRuby3
|
|
20
20
|
'wxCursor::wxCursor(const wxImage &)',
|
21
21
|
'wxCursor::wxCursor(const char *const *)',
|
22
22
|
'wxCursor::wxCursor(const wxCursor &)'
|
23
|
-
spec.ignore 'wxCursor::wxCursor(const char
|
24
|
-
|
23
|
+
spec.ignore 'wxCursor::wxCursor(const char *const *)'
|
24
|
+
if Config.instance.wx_version >= '3.3.0'
|
25
|
+
spec.ignore 'wxCursor::wxCursor(const char[],int,int,int,int,const char[], const wxColour*, const wxColour*)'
|
26
|
+
else
|
27
|
+
spec.ignore 'wxCursor::wxCursor(const char[],int,int,int,int,const char[])'
|
28
|
+
end
|
25
29
|
# ignore stock object (see RubyStockObjects.i)
|
26
30
|
spec.ignore %w[wxSTANDARD_CURSOR wxHOURGLASS_CURSOR wxCROSS_CURSOR]
|
27
31
|
super
|
data/rakelib/lib/director/dc.rb
CHANGED
@@ -36,13 +36,8 @@ module WXRuby3
|
|
36
36
|
'wxDC::GetLogicalOrigin(wxCoord *,wxCoord *) const',
|
37
37
|
'wxDC::GetHandle'
|
38
38
|
]
|
39
|
-
# ignore Matrix Transformation methods until someone asks for them
|
40
|
-
# TODO : possibly wrap at a later time
|
41
|
-
spec.ignore 'wxDC::SetTransformMatrix',
|
42
|
-
'wxDC::GetTransformMatrix',
|
43
|
-
'wxDC::ResetTransformMatrix',
|
44
|
-
'wxDC::CanUseTransformMatrix'
|
45
39
|
spec.disable_proxies
|
40
|
+
spec.disown 'wxGraphicsContext *ctx'
|
46
41
|
spec.rename_for_ruby({
|
47
42
|
'GetDimensions' => 'wxDC::GetSize(wxCoord *, wxCoord *) const',
|
48
43
|
'GetDimensionsMM' => 'wxDC::GetSizeMM(wxCoord *, wxCoord *) const',
|
@@ -16,7 +16,8 @@ module WXRuby3
|
|
16
16
|
super
|
17
17
|
spec.disable_proxies
|
18
18
|
spec.gc_as_untracked spec.module_name
|
19
|
-
|
19
|
+
case spec.module_name
|
20
|
+
when 'wxScreenDC'
|
20
21
|
spec.make_abstract 'wxScreenDC'
|
21
22
|
# as a ScreenDC should always be a temporary stack object
|
22
23
|
# we do not allow creation in Ruby but rather provide a class
|
@@ -41,7 +42,7 @@ module WXRuby3
|
|
41
42
|
spec.ignore 'wxScreenDC::StartDrawingOnTop',
|
42
43
|
'wxScreenDC::EndDrawingOnTop',
|
43
44
|
'wxScreenDC::wxScreenDC'
|
44
|
-
|
45
|
+
when 'wxClientDC'
|
45
46
|
spec.make_abstract 'wxClientDC'
|
46
47
|
spec.ignore 'wxClientDC::wxClientDC'
|
47
48
|
# as a ClientDC should best always be a temporary stack object
|
@@ -63,19 +64,38 @@ module WXRuby3
|
|
63
64
|
return rc;
|
64
65
|
}
|
65
66
|
__HEREDOC
|
66
|
-
|
67
|
+
when 'wxPaintDC'
|
67
68
|
spec.make_abstract 'wxPaintDC'
|
68
69
|
spec.ignore 'wxPaintDC::wxPaintDC'
|
69
|
-
|
70
|
-
|
70
|
+
spec.add_header_code <<~__HEREDOC
|
71
|
+
// we need this static method here because we do not want SWIG to parse the preprocessor
|
72
|
+
// statements (#if/#else/#endif) which it does in %extend blocks
|
73
|
+
#include "wx/dcbuffer.h"
|
74
|
+
static VALUE do_check_native_double_buffer()
|
75
|
+
{
|
76
|
+
#if wxALWAYS_NATIVE_DOUBLE_BUFFER
|
77
|
+
return Qtrue;
|
78
|
+
#else
|
79
|
+
return Qfalse;
|
80
|
+
#endif
|
81
|
+
}
|
82
|
+
__HEREDOC
|
83
|
+
spec.add_extend_code 'wxPaintDC', <<~__HEREDOC
|
84
|
+
#include "wx/dcbuffer.h"
|
85
|
+
static VALUE has_native_double_buffer()
|
86
|
+
{
|
87
|
+
return do_check_native_double_buffer();
|
88
|
+
}
|
89
|
+
__HEREDOC
|
90
|
+
when 'wxMemoryDC'
|
91
|
+
spec.items << 'wxBufferedDC' << 'wxBufferedPaintDC'
|
92
|
+
spec.gc_as_untracked %w[wxBufferedDC wxBufferedPaintDC]
|
71
93
|
spec.make_abstract 'wxMemoryDC'
|
72
94
|
spec.make_abstract 'wxBufferedDC'
|
73
95
|
spec.make_abstract 'wxBufferedPaintDC'
|
74
|
-
spec.make_abstract 'wxAutoBufferedPaintDC'
|
75
96
|
spec.ignore 'wxMemoryDC::wxMemoryDC',
|
76
97
|
'wxBufferedDC::wxBufferedDC',
|
77
|
-
'wxBufferedPaintDC::wxBufferedPaintDC'
|
78
|
-
'wxAutoBufferedPaintDC::wxAutoBufferedPaintDC'
|
98
|
+
'wxBufferedPaintDC::wxBufferedPaintDC'
|
79
99
|
# like all DC's these should best always be a temporary stack objects
|
80
100
|
# we do not allow creation in Ruby but rather provide a class
|
81
101
|
# method for block execution on a temp dc
|
@@ -197,23 +217,7 @@ module WXRuby3
|
|
197
217
|
return rc;
|
198
218
|
}
|
199
219
|
__HEREDOC
|
200
|
-
|
201
|
-
static VALUE draw_on(wxWindow* tgt)
|
202
|
-
{
|
203
|
-
if (!wxRuby_IsAppRunning())
|
204
|
-
rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
|
205
|
-
VALUE rc = Qnil;
|
206
|
-
if (rb_block_given_p ())
|
207
|
-
{
|
208
|
-
wxAutoBufferedPaintDC dc(tgt);
|
209
|
-
wxAutoBufferedPaintDC* dc_ptr = &dc;
|
210
|
-
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(dc_ptr), SWIGTYPE_p_wxAutoBufferedPaintDC, 0);
|
211
|
-
rc = rb_yield(rb_dc);
|
212
|
-
}
|
213
|
-
return rc;
|
214
|
-
}
|
215
|
-
__HEREDOC
|
216
|
-
elsif spec.module_name == 'wxMirrorDC'
|
220
|
+
when 'wxMirrorDC'
|
217
221
|
spec.make_abstract 'wxMirrorDC'
|
218
222
|
spec.ignore 'wxMirrorDC::wxMirrorDC'
|
219
223
|
# as a MirrorDC should best always be a temporary stack object
|
@@ -235,7 +239,7 @@ module WXRuby3
|
|
235
239
|
return rc;
|
236
240
|
}
|
237
241
|
__HEREDOC
|
238
|
-
|
242
|
+
when 'wxSVGFileDC'
|
239
243
|
spec.items.concat %w[wxSVGBitmapHandler wxSVGBitmapFileHandler wxSVGBitmapEmbedHandler]
|
240
244
|
spec.make_abstract 'wxSVGFileDC'
|
241
245
|
spec.ignore 'wxSVGFileDC::wxSVGFileDC'
|
@@ -272,7 +276,7 @@ module WXRuby3
|
|
272
276
|
'wxSVGFileDC::EndDoc',
|
273
277
|
'wxSVGFileDC::StartPage',
|
274
278
|
'wxSVGFileDC::EndPage'
|
275
|
-
|
279
|
+
when 'wxGCDC'
|
276
280
|
spec.make_abstract 'wxGCDC'
|
277
281
|
spec.ignore 'wxGCDC::wxGCDC'
|
278
282
|
# like all DC this should best always be a temporary stack object
|
@@ -301,6 +305,24 @@ module WXRuby3
|
|
301
305
|
__HEREDOC
|
302
306
|
end
|
303
307
|
spec.add_extend_code 'wxGCDC', <<~__HEREDOC
|
308
|
+
static VALUE draw_on()
|
309
|
+
{
|
310
|
+
if (!wxRuby_IsAppRunning())
|
311
|
+
rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
|
312
|
+
VALUE rc = Qnil;
|
313
|
+
if (rb_block_given_p ())
|
314
|
+
{
|
315
|
+
// Somehow there seems to be a problem with the Ruby GCDC value
|
316
|
+
// being GC-ed unless we block GC for the duration of the block
|
317
|
+
// execution. Unclear why. We have similar code for other objects
|
318
|
+
// where this issue does not come up.
|
319
|
+
wxGCDC gc_dc;
|
320
|
+
wxGCDC* dc_ptr = &gc_dc;
|
321
|
+
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(dc_ptr), SWIGTYPE_p_wxGCDC, 0);
|
322
|
+
rc = rb_yield(rb_dc);
|
323
|
+
}
|
324
|
+
return rc;
|
325
|
+
}
|
304
326
|
static VALUE draw_on(const wxWindowDC& dc)
|
305
327
|
{
|
306
328
|
if (!wxRuby_IsAppRunning())
|
@@ -355,9 +377,10 @@ module WXRuby3
|
|
355
377
|
}
|
356
378
|
return rc;
|
357
379
|
}
|
358
|
-
|
380
|
+
__HEREDOC
|
381
|
+
spec.disown 'wxGraphicsContext *gc'
|
359
382
|
spec.ignore 'wxGCDC::wxGCDC(const wxEnhMetaFileDC &)'
|
360
|
-
|
383
|
+
when 'wxScaledDC'
|
361
384
|
spec.items.clear # wxRuby extension; no XML docs
|
362
385
|
spec.override_inheritance_chain('wxScaledDC', %w[wxDC wxObject])
|
363
386
|
# as there are no dependencies parsed from XML make sure we're initialized after Wx::DC
|
@@ -398,7 +421,7 @@ module WXRuby3
|
|
398
421
|
wxScaledDC(wxDC& target, double scale);
|
399
422
|
};
|
400
423
|
__HEREDOC
|
401
|
-
|
424
|
+
when 'wxPrinterDC'
|
402
425
|
spec.make_abstract 'wxPrinterDC'
|
403
426
|
spec.ignore 'wxPrinterDC::wxPrinterDC'
|
404
427
|
# as a PrinterDC should best always be a temporary stack object
|
@@ -420,7 +443,7 @@ module WXRuby3
|
|
420
443
|
return rc;
|
421
444
|
}
|
422
445
|
__HEREDOC
|
423
|
-
|
446
|
+
when 'wxPostScriptDC'
|
424
447
|
spec.make_abstract 'wxPostScriptDC'
|
425
448
|
spec.ignore 'wxPostScriptDC::wxPostScriptDC'
|
426
449
|
# as a PostScriptDC should best always be a temporary stack object
|
@@ -442,6 +465,40 @@ module WXRuby3
|
|
442
465
|
return rc;
|
443
466
|
}
|
444
467
|
__HEREDOC
|
468
|
+
when 'wxDCOverlay'
|
469
|
+
spec.items << 'wxOverlay'
|
470
|
+
spec.make_abstract 'wxDCOverlay'
|
471
|
+
spec.ignore 'wxDCOverlay::wxDCOverlay'
|
472
|
+
spec.add_extend_code 'wxDCOverlay', <<~__HEREDOC
|
473
|
+
static VALUE draw_on(wxOverlay &overlay, wxDC *dc)
|
474
|
+
{
|
475
|
+
if (!wxRuby_IsAppRunning())
|
476
|
+
rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
|
477
|
+
VALUE rc = Qnil;
|
478
|
+
if (rb_block_given_p ())
|
479
|
+
{
|
480
|
+
wxDCOverlay ovl_dc(overlay, dc);
|
481
|
+
wxDCOverlay* ovl_dc_ptr = &ovl_dc;
|
482
|
+
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxDCOverlay, 0);
|
483
|
+
rc = rb_yield(rb_dc);
|
484
|
+
}
|
485
|
+
return rc;
|
486
|
+
}
|
487
|
+
static VALUE draw_on(wxOverlay &overlay, wxDC *dc, int x, int y, int width, int height)
|
488
|
+
{
|
489
|
+
if (!wxRuby_IsAppRunning())
|
490
|
+
rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
|
491
|
+
VALUE rc = Qnil;
|
492
|
+
if (rb_block_given_p ())
|
493
|
+
{
|
494
|
+
wxDCOverlay ovl_dc(overlay, dc, x, y, width, height);
|
495
|
+
wxDCOverlay* ovl_dc_ptr = &ovl_dc;
|
496
|
+
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxDCOverlay, 0);
|
497
|
+
rc = rb_yield(rb_dc);
|
498
|
+
}
|
499
|
+
return rc;
|
500
|
+
}
|
501
|
+
__HEREDOC
|
445
502
|
else
|
446
503
|
# ctors of all other derived DC require a running App
|
447
504
|
spec.require_app spec.module_name
|
@@ -212,14 +212,6 @@ module WXRuby3
|
|
212
212
|
return Qfalse;
|
213
213
|
}
|
214
214
|
__HEREDOC
|
215
|
-
when 'wxSymbolPickerDialog'
|
216
|
-
# redefine these to prevent problematic handling of title/caption defaults
|
217
|
-
spec.ignore 'wxSymbolPickerDialog::wxSymbolPickerDialog(const wxString &, const wxString &, const wxString &, wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, long)',
|
218
|
-
'wxSymbolPickerDialog::Create',
|
219
|
-
ignore_doc: false
|
220
|
-
spec.extend_interface 'wxSymbolPickerDialog',
|
221
|
-
'wxSymbolPickerDialog(const wxString &symbol, const wxString &initialFont, const wxString &normalTextFont, wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos, const wxSize &size, long style)',
|
222
|
-
'bool Create(const wxString &symbol, const wxString &initialFont, const wxString &normalTextFont, wxWindow *parent, wxWindowID id, const wxString &caption, const wxPoint &pos, const wxSize &size, long style)'
|
223
215
|
when 'wxWizard'
|
224
216
|
# special handling
|
225
217
|
spec.ignore 'wxWizard::GetBitmap'
|