wxruby3 1.0.1 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/wxruby3/swig/common.i +8 -0
- data/lib/wx/version.rb +1 -1
- data/rakelib/build.rb +12 -2
- data/rakelib/install.rb +4 -1
- data/rakelib/lib/config/macosx.rb +32 -7
- data/rakelib/lib/core/package.rb +118 -10
- data/rakelib/lib/director/aui_tab_art.rb +1 -0
- data/rakelib/lib/director/aui_toolbar_art.rb +2 -1
- data/rakelib/lib/director/dc.rb +44 -14
- data/rakelib/lib/director/derived_dc.rb +53 -1
- data/rakelib/lib/director/ribbon_art_provider.rb +2 -0
- data/rakelib/lib/director/richtext_buffer.rb +16 -0
- data/rakelib/lib/director/window.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '079f38ae02dfcba5a96738f73c678e0d9a5396920739cb370c47d79b6bb81adf'
|
4
|
+
data.tar.gz: 510b7637e541b981deb048d4b0aa3898ea8152900b570ead984dcb9c6daee534
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b3c4ad6e1c31636d658cd9f0d986c57caf6bc6f72af19af449b7d371c3b9af45b229533f1ae3593b7c23b2b29bf74dfaac8e88740fcca0699dc093f40b29d8f
|
7
|
+
data.tar.gz: 827044bb4256d7afc741e77209096cd527f2c77688c0b619fd72cf1ad0bf03992de4e3c60ec93e17795835345b15932ae2773381de85177d941d8b205ab120f7
|
data/ext/wxruby3/swig/common.i
CHANGED
@@ -42,6 +42,14 @@
|
|
42
42
|
* wxWidgets we define our own.
|
43
43
|
*/
|
44
44
|
|
45
|
+
#if defined(__GNUC__)
|
46
|
+
# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
47
|
+
# ifndef GCC_HASCLASSVISIBILITY
|
48
|
+
# define GCC_HASCLASSVISIBILITY
|
49
|
+
# endif
|
50
|
+
# endif
|
51
|
+
#endif
|
52
|
+
|
45
53
|
#ifndef WXRB_EXPORT_FLAG
|
46
54
|
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
|
47
55
|
# if defined(WXRUBY_STATIC_BUILD)
|
data/lib/wx/version.rb
CHANGED
data/rakelib/build.rb
CHANGED
@@ -55,8 +55,18 @@ if WXRuby3.is_bootstrapped?
|
|
55
55
|
pkg.generate_initializer
|
56
56
|
end
|
57
57
|
|
58
|
-
#
|
59
|
-
file pkg.
|
58
|
+
# only for MacOSX
|
59
|
+
file pkg.initializer_loader_src => pkg.initializer_src do
|
60
|
+
pkg.generate_initializer_loader
|
61
|
+
end
|
62
|
+
|
63
|
+
# Target to run the linker to create a final wxruby package shared library (MacOSX only)
|
64
|
+
file pkg.shlib_target => [*pkg.all_obj_files, *pkg.dep_libs] do |t|
|
65
|
+
WXRuby3.config.do_shlib_link(pkg)
|
66
|
+
end
|
67
|
+
|
68
|
+
# Target to run the linker to create a final .so/.dll/.bundle wxruby3 package library
|
69
|
+
file pkg.lib_target => pkg.lib_target_deps do | t |
|
60
70
|
WXRuby3.config.do_link(pkg)
|
61
71
|
end
|
62
72
|
|
data/rakelib/install.rb
CHANGED
@@ -152,7 +152,10 @@ module WXRuby3
|
|
152
152
|
[File.join(WXRuby3.config.get_cfg_string('siterubyver'), 'wx'), ['lib/wx'], 0644],
|
153
153
|
]
|
154
154
|
# add wxRuby shared libraries
|
155
|
-
WXRuby3::Director.each_package
|
155
|
+
WXRuby3::Director.each_package do |pkg|
|
156
|
+
specs << [WXRuby3.config.get_cfg_string('siterubyverarch'), [pkg.lib_target], 0555]
|
157
|
+
specs << [WXRuby3.config.get_cfg_string('siterubyverarch'), [pkg.lib_target.sub(/\.#{WXRuby3.config.dll_ext}\Z/, '.dylib')], 0555] if WXRuby3.config.macosx?
|
158
|
+
end
|
156
159
|
if WXRuby3.config.get_config('with-wxwin')
|
157
160
|
specs << [WXRuby3.config.get_cfg_string('siterubyverarch'), Install.wxwin_shlibs, 0555]
|
158
161
|
end
|
@@ -46,6 +46,19 @@ module WXRuby3
|
|
46
46
|
end
|
47
47
|
protected :patch_rpath
|
48
48
|
|
49
|
+
# add deployment lookup paths for wxruby shared libraries
|
50
|
+
# and make loadpath for initializer dylibs relative
|
51
|
+
def update_shlib_loadpaths(shlib)
|
52
|
+
# in case of a .bundle library
|
53
|
+
if /\.bundle\Z/ =~ shlib
|
54
|
+
# change the full path of the complementary initializer .dylib to a path relative to any rpath-s
|
55
|
+
dylib = "lib#{File.basename(shlib, '.bundle')}.dylib"
|
56
|
+
dylib_path = File.expand_path(File.join(Config.instance.dest_dir, dylib))
|
57
|
+
sh("install_name_tool -change #{dylib_path} '@rpath/#{dylib}' #{shlib}")
|
58
|
+
end
|
59
|
+
super
|
60
|
+
end
|
61
|
+
|
49
62
|
# add Ruby library path for wxruby shared libraries
|
50
63
|
def update_shlib_ruby_libpath(shlib)
|
51
64
|
# fix lookup for the Ruby shared library
|
@@ -123,10 +136,23 @@ module WXRuby3
|
|
123
136
|
wx_libset.collect { |s| s.dup }
|
124
137
|
end
|
125
138
|
|
126
|
-
def
|
139
|
+
def do_shlib_link(pkg)
|
127
140
|
objs = pkg.all_obj_files.collect { |o| File.join('..', o) }.join(' ') + ' '
|
128
|
-
|
129
|
-
|
141
|
+
depsh = pkg.dep_libs.join(' ')
|
142
|
+
ldsh = WXRuby3.config.ld.sub(/-bundle/, '')
|
143
|
+
ldsh.sub!(/-dynamic/, '-dynamiclib')
|
144
|
+
sh "cd lib && " +
|
145
|
+
"#{ldsh} #{WXRuby3.config.ldflags(pkg.lib_target)} #{objs} #{depsh} " +
|
146
|
+
"#{WXRuby3.config.libs} #{WXRuby3.config.link_output_flag}#{pkg.shlib_target}",
|
147
|
+
fail_on_error: true
|
148
|
+
end
|
149
|
+
|
150
|
+
def do_link(pkg)
|
151
|
+
sh "cd lib && " +
|
152
|
+
"#{WXRuby3.config.ld} #{WXRuby3.config.ldflags(pkg.lib_target)} #{File.join('..', pkg.init_obj_file)} " +
|
153
|
+
"-L. -l#{pkg.libname} " +
|
154
|
+
"#{WXRuby3.config.libs} #{WXRuby3.config.link_output_flag}#{pkg.lib_target}",
|
155
|
+
fail_on_error: true
|
130
156
|
end
|
131
157
|
|
132
158
|
private
|
@@ -151,15 +177,14 @@ module WXRuby3
|
|
151
177
|
|
152
178
|
if @wx_version
|
153
179
|
@cpp.sub!(/-std=gnu\+\+11/, '-std=gnu++14')
|
154
|
-
|
180
|
+
# on Mac OSX this differs from the wxWidgets linking setup
|
181
|
+
@ld = RB_CONFIG['LDSHAREDXX'] || 'g++ -std=gnu++14 -dynamic -bundle'
|
182
|
+
@ld.sub!(/-std=gnu\+\+11/, '-std=gnu++14')
|
155
183
|
|
156
184
|
@extra_cflags.concat %w[-Wno-unused-function -Wno-conversion-null -Wno-sometimes-uninitialized
|
157
185
|
-Wno-overloaded-virtual -Wno-deprecated-copy]
|
158
186
|
@extra_cflags << ' -Wno-deprecated-declarations' unless @no_deprecated
|
159
187
|
|
160
|
-
# create a .dylib binary
|
161
|
-
@extra_ldflags << '-dynamic -bundle'
|
162
|
-
|
163
188
|
unless @wx_path.empty?
|
164
189
|
libdirs = @wx_libs.select {|s| s.start_with?('-L')}.collect {|s| s.sub(/^-L/,'')}
|
165
190
|
@exec_env['DYLD_LIBRARY_PATH'] = "#{ENV['DYLD_LIBRARY_PATH']}:#{dest_dir}:#{libdirs.join(':')}"
|
data/rakelib/lib/core/package.rb
CHANGED
@@ -69,6 +69,10 @@ module WXRuby3
|
|
69
69
|
File.join(Config.instance.dest_dir, "#{libname}.#{Config.instance.dll_ext}")
|
70
70
|
end
|
71
71
|
|
72
|
+
def shlib_target
|
73
|
+
Config.instance.macosx? ? File.join(Config.instance.dest_dir, "lib#{libname}.dylib") : nil
|
74
|
+
end
|
75
|
+
|
72
76
|
def package(pkgname)
|
73
77
|
subpackages[pkgname] ||= Package.new(pkgname, self)
|
74
78
|
end
|
@@ -156,9 +160,30 @@ module WXRuby3
|
|
156
160
|
@all_obj_files
|
157
161
|
end
|
158
162
|
|
163
|
+
# only used for MacOSX
|
164
|
+
def init_obj_file
|
165
|
+
if Config.instance.macosx?
|
166
|
+
File.join(Config.instance.obj_dir, "#{libname}_init_loader.#{Config.instance.obj_ext}")
|
167
|
+
else
|
168
|
+
File.join(Config.instance.obj_dir, "#{libname}_init.#{Config.instance.obj_ext}")
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def lib_target_deps
|
173
|
+
if Config.instance.macosx?
|
174
|
+
[init_obj_file, shlib_target, *dep_libs]
|
175
|
+
else
|
176
|
+
[*all_obj_files, *dep_libs]
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
159
180
|
def dep_libs
|
160
181
|
if parent
|
161
|
-
parent.dep_libs +
|
182
|
+
parent.dep_libs + if Config.instance.macosx?
|
183
|
+
[parent.shlib_target]
|
184
|
+
else
|
185
|
+
[parent.lib_target]
|
186
|
+
end
|
162
187
|
else
|
163
188
|
[]
|
164
189
|
end
|
@@ -176,6 +201,11 @@ module WXRuby3
|
|
176
201
|
File.join(Config.instance.src_dir, "#{libname}_init.cpp")
|
177
202
|
end
|
178
203
|
|
204
|
+
# only for MacOSX
|
205
|
+
def initializer_loader_src
|
206
|
+
File.join(Config.instance.src_dir, "#{libname}_init_loader.cpp")
|
207
|
+
end
|
208
|
+
|
179
209
|
def is_dir_with_fulfilled_deps?(dir, cls_set)
|
180
210
|
if (modreg = Spec.module_registry[dir.spec.module_name]) && !modreg.empty?
|
181
211
|
# check if all base classes are defined previously or part of the same director or outside the current package
|
@@ -286,6 +316,14 @@ module WXRuby3
|
|
286
316
|
fsrc.puts '#include <ruby.h>'
|
287
317
|
fsrc.puts '#include <ruby/version.h>'
|
288
318
|
fsrc.puts <<~__HEREDOC
|
319
|
+
#if defined(__GNUC__)
|
320
|
+
# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
321
|
+
# ifndef GCC_HASCLASSVISIBILITY
|
322
|
+
# define GCC_HASCLASSVISIBILITY
|
323
|
+
# endif
|
324
|
+
# endif
|
325
|
+
#endif
|
326
|
+
|
289
327
|
#ifndef WXRB_EXPORT_FLAG
|
290
328
|
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
|
291
329
|
# if defined(WXRUBY_STATIC_BUILD)
|
@@ -338,7 +376,11 @@ module WXRuby3
|
|
338
376
|
fsrc.puts '#ifdef __cplusplus'
|
339
377
|
fsrc.puts 'extern "C"'
|
340
378
|
fsrc.puts '#endif'
|
341
|
-
|
379
|
+
if Config.instance.macosx?
|
380
|
+
fsrc.puts "WXRB_EXPORT_FLAG void wxruby_init_#{libname}()"
|
381
|
+
else
|
382
|
+
fsrc.puts "WXRB_EXPORT_FLAG void Init_#{libname}()"
|
383
|
+
end
|
342
384
|
fsrc.puts '{'
|
343
385
|
fsrc.indent do
|
344
386
|
fsrc.puts 'static bool initialized;'
|
@@ -357,7 +399,7 @@ module WXRuby3
|
|
357
399
|
fsrc << <<~__HERDOC
|
358
400
|
// define Enum class
|
359
401
|
wx_define_Enum_class();
|
360
|
-
|
402
|
+
__HERDOC
|
361
403
|
fsrc.puts
|
362
404
|
# generate constant definitions for feature defines from setup.h
|
363
405
|
fsrc.puts %Q{VALUE mWxSetup = rb_define_module_under(#{module_variable}, "Setup");}
|
@@ -391,6 +433,72 @@ module WXRuby3
|
|
391
433
|
generate_event_list if included_directors.any? {|dir| dir.has_events? }
|
392
434
|
end
|
393
435
|
|
436
|
+
# only for MacOSX
|
437
|
+
def generate_initializer_loader
|
438
|
+
STDERR.puts "* generating package #{name} initializer : #{initializer_src}" if Director.verbose?
|
439
|
+
|
440
|
+
Stream.transaction do
|
441
|
+
fsrc = CodeStream.new(initializer_loader_src)
|
442
|
+
fsrc.puts '#include <ruby.h>'
|
443
|
+
fsrc.puts '#include <ruby/version.h>'
|
444
|
+
fsrc.puts <<~__HEREDOC
|
445
|
+
#if defined(__GNUC__)
|
446
|
+
# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
447
|
+
# ifndef GCC_HASCLASSVISIBILITY
|
448
|
+
# define GCC_HASCLASSVISIBILITY
|
449
|
+
# endif
|
450
|
+
# endif
|
451
|
+
#endif
|
452
|
+
|
453
|
+
#ifndef WXRB_EXPORT_FLAG
|
454
|
+
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
|
455
|
+
# if defined(WXRUBY_STATIC_BUILD)
|
456
|
+
# define WXRB_EXPORT_FLAG
|
457
|
+
# else
|
458
|
+
# define WXRB_EXPORT_FLAG __declspec(dllexport)
|
459
|
+
# endif
|
460
|
+
# else
|
461
|
+
# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
|
462
|
+
# define WXRB_EXPORT_FLAG __attribute__ ((visibility("default")))
|
463
|
+
# else
|
464
|
+
# define WXRB_EXPORT_FLAG
|
465
|
+
# endif
|
466
|
+
# endif
|
467
|
+
#endif
|
468
|
+
|
469
|
+
#ifndef WXRB_IMPORT_FLAG
|
470
|
+
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
|
471
|
+
# if defined(WXRUBY_STATIC_BUILD)
|
472
|
+
# define WXRB_IMPORT_FLAG
|
473
|
+
# else
|
474
|
+
# define WXRB_IMPORT_FLAG __declspec(dllimport)
|
475
|
+
# endif
|
476
|
+
# else
|
477
|
+
# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
|
478
|
+
# define WXRB_IMPORT_FLAG __attribute__ ((visibility("default")))
|
479
|
+
# else
|
480
|
+
# define WXRB_IMPORT_FLAG
|
481
|
+
# endif
|
482
|
+
# endif
|
483
|
+
#endif
|
484
|
+
__HEREDOC
|
485
|
+
fsrc.puts '#ifdef __cplusplus'
|
486
|
+
fsrc.puts 'extern "C"'
|
487
|
+
fsrc.puts '#endif'
|
488
|
+
fsrc.puts "WXRB_IMPORT_FLAG void wxruby_init_#{libname}();"
|
489
|
+
fsrc.puts
|
490
|
+
fsrc.puts '#ifdef __cplusplus'
|
491
|
+
fsrc.puts 'extern "C"'
|
492
|
+
fsrc.puts '#endif'
|
493
|
+
fsrc.puts "WXRB_EXPORT_FLAG void Init_#{libname}()"
|
494
|
+
fsrc.puts '{'
|
495
|
+
fsrc.indent do
|
496
|
+
fsrc.puts "wxruby_init_#{libname}();"
|
497
|
+
end
|
498
|
+
fsrc.puts '}'
|
499
|
+
end
|
500
|
+
end
|
501
|
+
|
394
502
|
def extract(*mods, genint: true)
|
395
503
|
included_directors.each do |dir|
|
396
504
|
dir.extract_interface(genint) if (mods.empty? || mods.include?(dir.spec.name))
|
@@ -420,11 +528,11 @@ module WXRuby3
|
|
420
528
|
raise "Don't know Event class for #{evh_name} event type (from #{item.name})"
|
421
529
|
end
|
422
530
|
fout.puts ' '+<<~__HEREDOC.split("\n").join("\n ")
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
531
|
+
self.register_event_type EventType[
|
532
|
+
'#{evh_name}', #{evt_arity},
|
533
|
+
#{fullname}::#{evt_type},
|
534
|
+
#{fullname}::#{evt_klass.sub(/\Awx/i, '')}
|
535
|
+
] if #{fullname}.const_defined?(:#{evt_type})
|
428
536
|
__HEREDOC
|
429
537
|
evts_handled << evh_name
|
430
538
|
end
|
@@ -562,7 +670,7 @@ module WXRuby3
|
|
562
670
|
|
563
671
|
class EvtHandler
|
564
672
|
|
565
|
-
|
673
|
+
__HEREDOC
|
566
674
|
fdoc.indent(2) do
|
567
675
|
fdoc.doc.puts "@!group #{name} Event handler methods"
|
568
676
|
fdoc.puts
|
@@ -651,7 +759,7 @@ module WXRuby3
|
|
651
759
|
|
652
760
|
end
|
653
761
|
__HEREDOC
|
654
|
-
|
762
|
+
__SCRIPT
|
655
763
|
begin
|
656
764
|
tmpfile = Tempfile.new('script')
|
657
765
|
ftmp_name = tmpfile.path.dup
|
@@ -16,7 +16,8 @@ module WXRuby3
|
|
16
16
|
super
|
17
17
|
spec.items << 'wxAuiDefaultToolBarArt'
|
18
18
|
spec.gc_as_object
|
19
|
-
spec.
|
19
|
+
spec.make_abstract 'wxAuiToolBarArt'
|
20
|
+
spec.disable_proxies
|
20
21
|
spec.suppress_warning(473, 'wxAuiToolBarArt::Clone', 'wxAuiDefaultToolBarArt::Clone')
|
21
22
|
spec.map 'const wxAuiToolBarItemArray&' => 'Array<Wx::AUI::AuiToolBarItem>,nil' do
|
22
23
|
map_in temp: 'wxAuiToolBarItemArray tmp', code: <<~__CODE
|
data/rakelib/lib/director/dc.rb
CHANGED
@@ -16,6 +16,13 @@ module WXRuby3
|
|
16
16
|
|
17
17
|
def setup
|
18
18
|
super
|
19
|
+
_readDC = if Config.instance.wx_version >= '3.3.0'
|
20
|
+
spec.items.unshift 'wxReadOnlyDC' # prepend before wxDC
|
21
|
+
spec.items << 'wxInfoDC'
|
22
|
+
'wxReadOnlyDC'
|
23
|
+
else
|
24
|
+
'wxDC'
|
25
|
+
end
|
19
26
|
spec.items << 'wxFontMetrics'
|
20
27
|
# it's not safe to track DC objects as these are often created on the stack in C++
|
21
28
|
# before being passed to Ruby methods
|
@@ -29,22 +36,24 @@ module WXRuby3
|
|
29
36
|
'wxFontMetrics::externalLeading',
|
30
37
|
'wxFontMetrics::averageWidth'
|
31
38
|
spec.ignore [
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
39
|
+
'wxDC::DrawLines(const wxPointList *,wxCoord,wxCoord)',
|
40
|
+
'wxDC::DrawPolygon(const wxPointList *,wxCoord,wxCoord,wxPolygonFillMode)',
|
41
|
+
'wxDC::DrawSpline(const wxPointList *)',
|
42
|
+
'wxDC::GetHandle'
|
43
|
+
]
|
44
|
+
spec.ignore [
|
45
|
+
"#{_readDC}::GetPartialTextExtents",
|
46
|
+
"#{_readDC}::GetLogicalOrigin(wxCoord *,wxCoord *) const",
|
38
47
|
]
|
48
|
+
spec.rename_for_ruby({
|
49
|
+
'GetDimensions' => "#{_readDC}::GetSize(wxCoord *, wxCoord *) const",
|
50
|
+
'GetDimensionsMM' => "#{_readDC}::GetSizeMM(wxCoord *, wxCoord *) const",
|
51
|
+
'GetTextSize' => "#{_readDC}::GetTextExtent(const wxString &) const",
|
52
|
+
'GetMultiLineTextSize' => "#{_readDC}::GetMultiLineTextExtent(const wxString &) const"
|
53
|
+
})
|
39
54
|
spec.disable_proxies
|
40
55
|
spec.disown 'wxGraphicsContext *ctx'
|
41
|
-
spec.
|
42
|
-
'GetDimensions' => 'wxDC::GetSize(wxCoord *, wxCoord *) const',
|
43
|
-
'GetDimensionsMM' => 'wxDC::GetSizeMM(wxCoord *, wxCoord *) const',
|
44
|
-
'GetTextSize' => 'wxDC::GetTextExtent(const wxString &) const',
|
45
|
-
'GetMultiLineTextSize' => 'wxDC::GetMultiLineTextExtent(const wxString &) const'
|
46
|
-
})
|
47
|
-
spec.add_extend_code 'wxDC', <<~__HEREDOC
|
56
|
+
spec.add_extend_code _readDC, <<~__HEREDOC
|
48
57
|
// Needs to return input parameter with list of lengths
|
49
58
|
VALUE get_partial_text_extents(VALUE text) {
|
50
59
|
wxString str = wxString(StringValuePtr(text), wxConvUTF8);
|
@@ -57,10 +66,31 @@ module WXRuby3
|
|
57
66
|
}
|
58
67
|
return rb_result;
|
59
68
|
}
|
60
|
-
|
69
|
+
__HEREDOC
|
61
70
|
# for GetUserScale and GetLogicalScale
|
62
71
|
spec.map_apply 'double * OUTPUT' => 'double *'
|
63
72
|
spec.swig_import 'swig/classes/include/wxGDICommon.h'
|
73
|
+
if Config.instance.wx_version >= '3.3.0'
|
74
|
+
# add similar block-style creator as #draw_on methods
|
75
|
+
spec.add_extend_code 'wxInfoDC', <<~__HEREDOC
|
76
|
+
static VALUE inform_on(wxWindow* win)
|
77
|
+
{
|
78
|
+
if (!wxRuby_IsAppRunning())
|
79
|
+
rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
|
80
|
+
if (!win)
|
81
|
+
rb_raise(rb_eRuntimeError, "A running valid Wx::Window is required for argument.");
|
82
|
+
VALUE rc = Qnil;
|
83
|
+
if (rb_block_given_p ())
|
84
|
+
{
|
85
|
+
wxInfoDC info_dc(win);
|
86
|
+
wxReadOnlyDC* dc_ptr = &info_dc; // wxInfoDC::operator&() returns wxReadOnlyDC*
|
87
|
+
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(dc_ptr), SWIGTYPE_p_wxInfoDC, 0);
|
88
|
+
rc = rb_yield(rb_dc);
|
89
|
+
}
|
90
|
+
return rc;
|
91
|
+
}
|
92
|
+
__HEREDOC
|
93
|
+
end
|
64
94
|
end
|
65
95
|
end # class DC
|
66
96
|
|
@@ -18,6 +18,7 @@ module WXRuby3
|
|
18
18
|
spec.gc_as_untracked spec.module_name
|
19
19
|
case spec.module_name
|
20
20
|
when 'wxScreenDC'
|
21
|
+
spec.override_inheritance_chain('wxScreenDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
21
22
|
spec.make_abstract 'wxScreenDC'
|
22
23
|
# as a ScreenDC should always be a temporary stack object
|
23
24
|
# we do not allow creation in Ruby but rather provide a class
|
@@ -43,6 +44,7 @@ module WXRuby3
|
|
43
44
|
'wxScreenDC::EndDrawingOnTop',
|
44
45
|
'wxScreenDC::wxScreenDC'
|
45
46
|
when 'wxClientDC'
|
47
|
+
spec.override_inheritance_chain('wxClientDC', ['wxWindowDC', 'wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
46
48
|
spec.make_abstract 'wxClientDC'
|
47
49
|
spec.ignore 'wxClientDC::wxClientDC'
|
48
50
|
# as a ClientDC should best always be a temporary stack object
|
@@ -65,6 +67,7 @@ module WXRuby3
|
|
65
67
|
}
|
66
68
|
__HEREDOC
|
67
69
|
when 'wxPaintDC'
|
70
|
+
spec.override_inheritance_chain('wxPaintDC', ['wxClientDC', 'wxWindowDC', 'wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
68
71
|
spec.make_abstract 'wxPaintDC'
|
69
72
|
spec.ignore 'wxPaintDC::wxPaintDC'
|
70
73
|
spec.add_header_code <<~__HEREDOC
|
@@ -89,7 +92,10 @@ module WXRuby3
|
|
89
92
|
__HEREDOC
|
90
93
|
when 'wxMemoryDC'
|
91
94
|
spec.items << 'wxBufferedDC' << 'wxBufferedPaintDC'
|
95
|
+
spec.override_inheritance_chain('wxMemoryDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
92
96
|
spec.gc_as_untracked %w[wxBufferedDC wxBufferedPaintDC]
|
97
|
+
spec.override_inheritance_chain('wxBufferedDC', ['wxMemoryDC', 'wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
98
|
+
spec.override_inheritance_chain('wxBufferedPaintDC', ['wxBufferedDC', 'wxMemoryDC', 'wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
93
99
|
spec.make_abstract 'wxMemoryDC'
|
94
100
|
spec.make_abstract 'wxBufferedDC'
|
95
101
|
spec.make_abstract 'wxBufferedPaintDC'
|
@@ -218,6 +224,7 @@ module WXRuby3
|
|
218
224
|
}
|
219
225
|
__HEREDOC
|
220
226
|
when 'wxMirrorDC'
|
227
|
+
spec.override_inheritance_chain('wxMirrorDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
221
228
|
spec.make_abstract 'wxMirrorDC'
|
222
229
|
spec.ignore 'wxMirrorDC::wxMirrorDC'
|
223
230
|
# as a MirrorDC should best always be a temporary stack object
|
@@ -240,6 +247,7 @@ module WXRuby3
|
|
240
247
|
}
|
241
248
|
__HEREDOC
|
242
249
|
when 'wxSVGFileDC'
|
250
|
+
spec.override_inheritance_chain('wxSVGFileDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
243
251
|
spec.items.concat %w[wxSVGBitmapHandler wxSVGBitmapFileHandler wxSVGBitmapEmbedHandler]
|
244
252
|
spec.make_abstract 'wxSVGFileDC'
|
245
253
|
spec.ignore 'wxSVGFileDC::wxSVGFileDC'
|
@@ -277,6 +285,7 @@ module WXRuby3
|
|
277
285
|
'wxSVGFileDC::StartPage',
|
278
286
|
'wxSVGFileDC::EndPage'
|
279
287
|
when 'wxGCDC'
|
288
|
+
spec.override_inheritance_chain('wxGCDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
280
289
|
spec.make_abstract 'wxGCDC'
|
281
290
|
spec.ignore 'wxGCDC::wxGCDC'
|
282
291
|
# like all DC this should best always be a temporary stack object
|
@@ -382,7 +391,11 @@ module WXRuby3
|
|
382
391
|
spec.ignore 'wxGCDC::wxGCDC(const wxEnhMetaFileDC &)'
|
383
392
|
when 'wxScaledDC'
|
384
393
|
spec.items.clear # wxRuby extension; no XML docs
|
385
|
-
|
394
|
+
if Config.instance.wx_version >= '3.3.0'
|
395
|
+
spec.override_inheritance_chain('wxScaledDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject'])
|
396
|
+
else
|
397
|
+
spec.override_inheritance_chain('wxScaledDC', %w[wxDC wxObject])
|
398
|
+
end
|
386
399
|
# as there are no dependencies parsed from XML make sure we're initialized after Wx::DC
|
387
400
|
spec.initialize_at_end = true
|
388
401
|
spec.no_proxy 'wxScaledDC'
|
@@ -422,6 +435,7 @@ module WXRuby3
|
|
422
435
|
};
|
423
436
|
__HEREDOC
|
424
437
|
when 'wxPrinterDC'
|
438
|
+
spec.override_inheritance_chain('wxPrinterDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
425
439
|
spec.make_abstract 'wxPrinterDC'
|
426
440
|
spec.ignore 'wxPrinterDC::wxPrinterDC'
|
427
441
|
# as a PrinterDC should best always be a temporary stack object
|
@@ -444,6 +458,7 @@ module WXRuby3
|
|
444
458
|
}
|
445
459
|
__HEREDOC
|
446
460
|
when 'wxPostScriptDC'
|
461
|
+
spec.override_inheritance_chain('wxPostScriptDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
447
462
|
spec.make_abstract 'wxPostScriptDC'
|
448
463
|
spec.ignore 'wxPostScriptDC::wxPostScriptDC'
|
449
464
|
# as a PostScriptDC should best always be a temporary stack object
|
@@ -499,7 +514,44 @@ module WXRuby3
|
|
499
514
|
return rc;
|
500
515
|
}
|
501
516
|
__HEREDOC
|
517
|
+
if Config.instance.wx_version >= '3.3.0'
|
518
|
+
spec.items << 'wxOverlayDC'
|
519
|
+
spec.override_inheritance_chain('wxOverlayDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject'])
|
520
|
+
spec.make_abstract 'wxOverlayDC'
|
521
|
+
spec.ignore 'wxOverlayDC::wxOverlayDC'
|
522
|
+
spec.add_extend_code 'wxOverlayDC', <<~__HEREDOC
|
523
|
+
static VALUE draw_on(wxOverlay &overlay, wxWindow *win)
|
524
|
+
{
|
525
|
+
if (!wxRuby_IsAppRunning())
|
526
|
+
rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
|
527
|
+
VALUE rc = Qnil;
|
528
|
+
if (rb_block_given_p ())
|
529
|
+
{
|
530
|
+
wxOverlayDC ovl_dc(overlay, win);
|
531
|
+
wxOverlayDC* ovl_dc_ptr = &ovl_dc;
|
532
|
+
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxOverlayDC, 0);
|
533
|
+
rc = rb_yield(rb_dc);
|
534
|
+
}
|
535
|
+
return rc;
|
536
|
+
}
|
537
|
+
static VALUE draw_on(wxOverlay &overlay, wxWindow *win, const wxRect &rect)
|
538
|
+
{
|
539
|
+
if (!wxRuby_IsAppRunning())
|
540
|
+
rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
|
541
|
+
VALUE rc = Qnil;
|
542
|
+
if (rb_block_given_p ())
|
543
|
+
{
|
544
|
+
wxOverlayDC ovl_dc(overlay, win, rect);
|
545
|
+
wxOverlayDC* ovl_dc_ptr = &ovl_dc;
|
546
|
+
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxOverlayDC, 0);
|
547
|
+
rc = rb_yield(rb_dc);
|
548
|
+
}
|
549
|
+
return rc;
|
550
|
+
}
|
551
|
+
__HEREDOC
|
552
|
+
end
|
502
553
|
else
|
554
|
+
spec.override_inheritance_chain(spec.module_name, ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version >= '3.3.0'
|
503
555
|
# ctors of all other derived DC require a running App
|
504
556
|
spec.require_app spec.module_name
|
505
557
|
end
|
@@ -16,7 +16,9 @@ module WXRuby3
|
|
16
16
|
spec.items << 'wxRibbonPageTabInfo' << 'wxRibbonMSWArtProvider' << 'wxRibbonAUIArtProvider'
|
17
17
|
super
|
18
18
|
spec.gc_as_object 'wxRibbonArtProvider'
|
19
|
+
spec.make_abstract 'wxRibbonArtProvider'
|
19
20
|
spec.gc_as_untracked 'wxRibbonPageTabInfo'
|
21
|
+
spec.disable_proxies
|
20
22
|
spec.suppress_warning(473,
|
21
23
|
'wxRibbonArtProvider::Clone',
|
22
24
|
'wxRibbonMSWArtProvider::Clone',
|
@@ -20,6 +20,22 @@ module WXRuby3
|
|
20
20
|
super
|
21
21
|
spec.items << 'wxRichTextFontTable' << 'wxRichTextFieldType' << 'wxRichTextFieldTypeStandard' << 'wxRichTextDrawingHandler'
|
22
22
|
spec.make_abstract 'wxRichTextFieldType'
|
23
|
+
if Config.instance.wx_version >= '3.3.0'
|
24
|
+
# make Ruby director and wrappers use custom implementation
|
25
|
+
spec.use_class_implementation('wxRichTextFieldType', 'wxRubyRichTextFieldType')
|
26
|
+
spec.add_header_code <<~__HEREDOC
|
27
|
+
class wxRubyRichTextFieldType : public wxRichTextFieldType
|
28
|
+
{
|
29
|
+
public:
|
30
|
+
virtual ~wxRubyRichTextFieldType() {}
|
31
|
+
wxRubyRichTextFieldType(const wxString &name=wxEmptyString) : wxRichTextFieldType(name) {}
|
32
|
+
wxRubyRichTextFieldType(const wxRichTextFieldType &fieldType) : wxRichTextFieldType(fieldType) {}
|
33
|
+
virtual bool Draw(wxRichTextField *, wxDC &, wxRichTextDrawingContext &, const wxRichTextRange &, const wxRichTextSelection &, const wxRect &, int , int ) { return false; }
|
34
|
+
virtual bool Layout(wxRichTextField *, wxReadOnlyDC &, wxRichTextDrawingContext &, const wxRect &, const wxRect &, int) { return false; }
|
35
|
+
virtual bool GetRangeSize(wxRichTextField *, const wxRichTextRange &, wxSize &, int &, wxReadOnlyDC &, wxRichTextDrawingContext &, int, const wxPoint &, const wxSize &, wxArrayInt *) const { return false; }
|
36
|
+
};
|
37
|
+
__HEREDOC
|
38
|
+
end
|
23
39
|
spec.no_proxy 'wxRichTextFontTable'
|
24
40
|
spec.include 'wx/richtext/richtextstyles.h'
|
25
41
|
spec.ignore %w[
|
@@ -120,6 +120,7 @@ module WXRuby3
|
|
120
120
|
end
|
121
121
|
if Config.instance.wx_version >= '3.3.0'
|
122
122
|
spec.ignore_unless('WXMSW', 'wxWindow::MSWDisableComposited')
|
123
|
+
spec.ignore('wxWindow::GTKGetWin32Handle')
|
123
124
|
end
|
124
125
|
if Config.instance.features_set?('USE_ACCESSIBILITY')
|
125
126
|
spec.disown 'wxAccessible *accessible'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wxruby3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Corino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -1191,7 +1191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1191
1191
|
- !ruby/object:Gem::Version
|
1192
1192
|
version: '0'
|
1193
1193
|
requirements: []
|
1194
|
-
rubygems_version: 3.5.
|
1194
|
+
rubygems_version: 3.5.11
|
1195
1195
|
signing_key:
|
1196
1196
|
specification_version: 4
|
1197
1197
|
summary: wxWidgets extension for Ruby
|