wxruby3 0.9.0.pre.rc.1-x64-mingw-ucrt → 0.9.0.pre.rc.2-x64-mingw-ucrt

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +51 -22
  3. data/README.md +38 -6
  4. data/assets/hello_button-macos.png +0 -0
  5. data/assets/hello_button-msw.png +0 -0
  6. data/assets/hello_button_clicked-macos.png +0 -0
  7. data/assets/hello_button_clicked-msw.png +0 -0
  8. data/assets/hello_button_clicked_combi.png +0 -0
  9. data/assets/hello_world-macos.png +0 -0
  10. data/assets/hello_world-msw.png +0 -0
  11. data/assets/hello_world_combi.png +0 -0
  12. data/ext/wxbase32u_gcc_custom.dll +0 -0
  13. data/ext/wxbase32u_net_gcc_custom.dll +0 -0
  14. data/ext/wxbase32u_xml_gcc_custom.dll +0 -0
  15. data/ext/wxmsw32u_aui_gcc_custom.dll +0 -0
  16. data/ext/wxmsw32u_core_gcc_custom.dll +0 -0
  17. data/ext/wxmsw32u_gl_gcc_custom.dll +0 -0
  18. data/ext/wxmsw32u_html_gcc_custom.dll +0 -0
  19. data/ext/wxmsw32u_media_gcc_custom.dll +0 -0
  20. data/ext/wxmsw32u_propgrid_gcc_custom.dll +0 -0
  21. data/ext/wxmsw32u_qa_gcc_custom.dll +0 -0
  22. data/ext/wxmsw32u_ribbon_gcc_custom.dll +0 -0
  23. data/ext/wxmsw32u_richtext_gcc_custom.dll +0 -0
  24. data/ext/wxmsw32u_stc_gcc_custom.dll +0 -0
  25. data/ext/wxmsw32u_webview_gcc_custom.dll +0 -0
  26. data/ext/wxmsw32u_xrc_gcc_custom.dll +0 -0
  27. data/lib/wx/core/brush.rb +6 -0
  28. data/lib/wx/core/events/evt_list.rb +7 -0
  29. data/lib/wx/core/evthandler.rb +12 -2
  30. data/lib/wx/core/font.rb +22 -14
  31. data/lib/wx/core/helpprovider.rb +2 -2
  32. data/lib/wx/core/menu.rb +5 -0
  33. data/lib/wx/core/pen.rb +6 -0
  34. data/lib/wx/core/window.rb +28 -1
  35. data/lib/wx/doc/app.rb +40 -0
  36. data/lib/wx/doc/brush.rb +17 -0
  37. data/lib/wx/doc/font.rb +27 -0
  38. data/lib/wx/doc/gen/activity_indicator.rb +65 -0
  39. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +2 -2
  40. data/lib/wx/doc/gen/context_help_button.rb +48 -0
  41. data/lib/wx/doc/gen/core.rb +2 -2
  42. data/lib/wx/doc/gen/event_blocker.rb +18 -16
  43. data/lib/wx/doc/gen/event_filter.rb +38 -45
  44. data/lib/wx/doc/gen/event_list.rb +7 -0
  45. data/lib/wx/doc/gen/file_dialog.rb +48 -49
  46. data/lib/wx/doc/gen/font.rb +9 -0
  47. data/lib/wx/doc/gen/hyperlink_ctrl.rb +147 -0
  48. data/lib/wx/doc/gen/hyperlink_event.rb +43 -0
  49. data/lib/wx/doc/gen/menu_bar.rb +0 -6
  50. data/lib/wx/doc/gen/radio_box.rb +0 -8
  51. data/lib/wx/doc/pen.rb +17 -0
  52. data/lib/wx/doc/radio_box.rb +20 -0
  53. data/lib/wx/doc/window.rb +27 -0
  54. data/lib/wx/keyword_defs.rb +77 -76
  55. data/lib/wx/prt/keyword_defs.rb +5 -1
  56. data/lib/wx/version.rb +1 -1
  57. data/lib/wxruby_aui.so +0 -0
  58. data/lib/wxruby_core.so +0 -0
  59. data/lib/wxruby_grid.so +0 -0
  60. data/lib/wxruby_html.so +0 -0
  61. data/lib/wxruby_pg.so +0 -0
  62. data/lib/wxruby_prt.so +0 -0
  63. data/lib/wxruby_rbn.so +0 -0
  64. data/lib/wxruby_rtc.so +0 -0
  65. data/lib/wxruby_stc.so +0 -0
  66. data/rakelib/install.rb +17 -6
  67. data/rakelib/lib/config/linux.rb +4 -2
  68. data/rakelib/lib/config/macosx.rb +120 -1
  69. data/rakelib/lib/config/mingw.rb +6 -1
  70. data/rakelib/lib/config/unixish.rb +26 -11
  71. data/rakelib/lib/config.rb +15 -6
  72. data/samples/aui/aui.rb +432 -363
  73. data/samples/propgrid/propgrid.rb +3 -0
  74. data/samples/sampler/editor.rb +33 -25
  75. data/samples/sampler/sample.rb +2 -2
  76. data/samples/sampler/stc_editor.rb +4 -2
  77. data/tests/lib/item_container_tests.rb +82 -0
  78. data/tests/lib/text_entry_tests.rb +80 -0
  79. data/tests/lib/wxapp_runner.rb +12 -0
  80. data/tests/lib/wxframe_runner.rb +89 -4
  81. data/tests/test_ext_controls.rb +28 -0
  82. data/tests/test_font.rb +239 -0
  83. data/tests/test_intl.rb +5 -1
  84. data/tests/test_std_controls.rb +263 -37
  85. data/tests/test_window.rb +340 -0
  86. metadata +25 -2
@@ -3,4 +3,123 @@
3
3
  # Copyright (c) M.J.N. Corino, The Netherlands
4
4
  ###
5
5
 
6
- raise "MacOSX platform is unsupported as yet."
6
+ require_relative './unixish'
7
+
8
+ module WXRuby3
9
+
10
+ module Config
11
+
12
+ module Platform
13
+
14
+ def self.included(base)
15
+ base.class_eval do
16
+ include Config::UnixLike
17
+
18
+ def debug_command(*args)
19
+ args.unshift(FileUtils::RUBY)
20
+ args.unshift('--')
21
+ args.unshift('lldb')
22
+ args.join(' ')
23
+ end
24
+
25
+ def dll_mask
26
+ "{#{dll_ext},dylib}"
27
+ end
28
+
29
+ def get_rpath_origin
30
+ "@loader_path"
31
+ end
32
+
33
+ def check_rpath_patch
34
+ # no need to check anything; install_name_tool is part of XCode cmdline tools
35
+ # and without these we couldn't build anything
36
+ true
37
+ end
38
+
39
+ def patch_rpath(shlib, *rpath)
40
+ # don't leave old rpath-s behind
41
+ sh("install_name_tool -delete_rpath '@loader_path/../lib' #{shlib} 2>/dev/null", verbose: false) { |_,_| }
42
+ # add deployment rpath-s
43
+ sh("install_name_tool #{rpath.collect {|rp| "-add_rpath '#{rp}'"}.join(' ')} #{shlib} 2>/dev/null", verbose: false) { |_,_| }
44
+ true
45
+ end
46
+
47
+ def update_shlib_loadpaths(shlib, deplibs)
48
+ changes = deplibs.collect { |dl| "-change '#{dl}' '@rpath/#{File.basename(dl)}'"}
49
+ sh("install_name_tool #{changes.join(' ')} #{shlib} 2>/dev/null", verbose: false) { |_,_| }
50
+ true
51
+ end
52
+
53
+ def get_wx_libs
54
+ wx_libset = ::Set.new
55
+ lib_list = wx_config("--libs all").split(' ')
56
+ until lib_list.empty?
57
+ s = lib_list.shift
58
+ if s == '-framework'
59
+ wx_libset << "#{s} #{lib_list.shift}"
60
+ else
61
+ wx_libset << s
62
+ end
63
+ end
64
+ # some weird thing with this; at least sometimes '--libs all' will not output media library even if feature active
65
+ if features_set?('wxUSE_MEDIACTRL')
66
+ lib_list = wx_config("--libs media").split(' ')
67
+ until lib_list.empty?
68
+ s = lib_list.shift
69
+ if s == '-framework'
70
+ wx_libset << "#{s} #{lib_list.shift}"
71
+ else
72
+ wx_libset << s
73
+ end
74
+ end
75
+ end
76
+ wx_libset.collect { |s| s.dup }
77
+ end
78
+
79
+ def do_link(pkg)
80
+ objs = pkg.all_obj_files.collect { |o| File.join('..', o) }.join(' ') + ' '
81
+ sh "cd lib && #{WXRuby3.config.ld} #{WXRuby3.config.ldflags(pkg.lib_target)} #{objs} " +
82
+ "#{WXRuby3.config.libs} #{WXRuby3.config.link_output_flag}#{pkg.lib_target}"
83
+ end
84
+
85
+ private
86
+
87
+ def wx_configure
88
+ bash('./configure --disable-sys-libs --without-liblzma --prefix=`pwd`/install --disable-tests --without-subdirs --disable-debug_info')
89
+ end
90
+
91
+ def wx_make
92
+ bash('make -j$(sysctl -n hw.logicalcpu) && make install')
93
+ end
94
+ end
95
+ end
96
+
97
+ def init_platform
98
+ init_unix_platform
99
+
100
+ @dll_pfx = 'lib'
101
+
102
+ if @wx_version
103
+ @cpp.sub!(/-std=gnu\+\+11/, '-std=gnu++14')
104
+ @ld.sub!(/-o\s*\Z/, '')
105
+
106
+ @extra_cflags.concat %w[-Wno-unused-function -Wno-conversion-null -Wno-sometimes-uninitialized
107
+ -Wno-overloaded-virtual -Wno-deprecated-copy]
108
+ @extra_cflags << ' -Wno-deprecated-declarations' unless @no_deprecated
109
+
110
+ # create a .dylib binary
111
+ @extra_ldflags << '-dynamic -bundle'
112
+
113
+ unless @wx_path.empty?
114
+ libdirs = @wx_libs.select {|s| s.start_with?('-L')}.collect {|s| s.sub(/^-L/,'')}
115
+ @exec_env['DYLD_LIBRARY_PATH'] = "#{ENV['DYLD_LIBRARY_PATH']}:#{dest_dir}:#{libdirs.join(':')}"
116
+ end
117
+ end
118
+ end
119
+ private :init_platform
120
+
121
+ end
122
+
123
+ end
124
+
125
+ end
@@ -21,8 +21,8 @@ module WXRuby3
21
21
  module Platform
22
22
 
23
23
  def self.included(base)
24
- base.include Config::UnixLike
25
24
  base.class_eval do
25
+ include Config::UnixLike
26
26
 
27
27
  attr_reader :rescomp
28
28
 
@@ -52,6 +52,10 @@ module WXRuby3
52
52
 
53
53
  private
54
54
 
55
+ def wx_make
56
+ bash('make && make install')
57
+ end
58
+
55
59
  def wx_generate_xml
56
60
  chdir(File.join(ext_path, 'wxWidgets', 'docs', 'doxygen')) do
57
61
  sh({ 'WX_SKIP_DOXYGEN_VERSION_CHECK' => '1' }, 'regen.bat xml')
@@ -107,6 +111,7 @@ module WXRuby3
107
111
 
108
112
  @ruby_ldflags.each { |flags| flags.sub!(' $(DEFFILE)', '') } # cleanup for older RubyInstaller versions
109
113
  @ruby_ldflags.each { |flags| flags.gsub!(/-s(\s|\Z)/, '') } if @debug_build # do not strip debug symbols for debug build
114
+ @ruby_ldflags << '-s' if @release_build # strip debug symbols for release build
110
115
  @ruby_cppflags << RB_CONFIG['debugflags'] if @debug_build
111
116
  @ruby_cppflags.each { |flags| flags.gsub!(/-O\d/, '-O0') } if @debug_build # disable optimizations for debug build
112
117
 
@@ -52,6 +52,10 @@ module WXRuby3
52
52
  "#{WXRuby3.config.libs} #{WXRuby3.config.link_output_flag}#{pkg.lib_target}"
53
53
  end
54
54
 
55
+ def get_rpath_origin
56
+ "$ORIGIN"
57
+ end
58
+
55
59
  private
56
60
 
57
61
  def wx_checkout
@@ -76,6 +80,14 @@ module WXRuby3
76
80
  end
77
81
  end
78
82
 
83
+ def wx_configure
84
+ bash('./configure --prefix=`pwd`/install --disable-tests --without-subdirs --disable-debug_info')
85
+ end
86
+
87
+ def wx_make
88
+ bash('make -j$(nproc) && make install')
89
+ end
90
+
79
91
  def wx_build
80
92
  # initialize submodules
81
93
  unless sh('git submodule update --init')
@@ -83,12 +95,12 @@ module WXRuby3
83
95
  exit(1)
84
96
  end
85
97
  # configure wxWidgets
86
- unless bash('./configure --prefix=`pwd`/install --disable-tests --without-subdirs --disable-debug_info')
98
+ unless wx_configure
87
99
  STDERR.puts "ERROR: Failed to configure wxWidgets."
88
100
  exit(1)
89
101
  end
90
102
  # make and install wxWidgets
91
- unless bash('make && make install')
103
+ unless wx_make
92
104
  STDERR.puts "ERROR: Failed to build wxWidgets libraries."
93
105
  exit(1)
94
106
  end
@@ -117,6 +129,16 @@ module WXRuby3
117
129
  get_cfg_string('wxxml')
118
130
  end
119
131
 
132
+ def get_wx_libs
133
+ wx_libset = ::Set.new
134
+ wx_libset.merge wx_config("--libs all").split(' ')
135
+ # some weird thing with this; at least sometimes '--libs all' will not output media library even if feature active
136
+ if features_set?('wxUSE_MEDIACTRL')
137
+ wx_libset.merge wx_config("--libs media").split(' ')
138
+ end
139
+ wx_libset.collect { |s| s.dup }
140
+ end
141
+
120
142
  def init_unix_platform
121
143
  # Allow specification of custom wxWidgets build (mostly useful for
122
144
  # static wxRuby3 builds)
@@ -155,13 +177,7 @@ module WXRuby3
155
177
 
156
178
  @cpp = wx_config("--cxx")
157
179
  @ld = wx_config("--ld")
158
- wx_libset = ::Set.new
159
- wx_libset.merge wx_config("--libs all").split(' ')
160
- # some weird thing with this; at least sometimes '--libs all' will not output media library even if feature active
161
- if features_set?('wxUSE_MEDIACTRL')
162
- wx_libset.merge wx_config("--libs media").split(' ')
163
- end
164
- @wx_libs = wx_libset.collect { |s| s.dup }
180
+ @wx_libs = get_wx_libs
165
181
 
166
182
  # remove all warning flags provided by Ruby config
167
183
  @ruby_cppflags = @ruby_cppflags.collect { |flags| flags.split(' ') }.flatten.
@@ -169,8 +185,7 @@ module WXRuby3
169
185
  @ruby_cppflags.concat %w[-Wall -Wextra -Wno-unused-parameter] # only keep these
170
186
  # add include flags
171
187
  @ruby_cppflags.concat ['-I.', *@ruby_includes.collect { |inc| "-I#{inc}" }]
172
- @ruby_ldflags << '-s' if @release_build # strip debug symbols for release build
173
- @ruby_ldflags << "-Wl,-rpath,\\$ORIGIN/../lib" # add default rpath
188
+ @ruby_ldflags << "-Wl,-rpath,'#{get_rpath_origin}/../lib'" # add default rpath
174
189
  @ruby_libs << "-L#{RB_CONFIG['libdir']}" # add ruby lib dir
175
190
  # add ruby defined shared ruby lib(s); not any other flags
176
191
  @ruby_libs.concat RB_CONFIG['LIBRUBYARG_SHARED'].split(' ').select { |s| s.start_with?('-l')}
@@ -245,11 +245,19 @@ module WXRuby3
245
245
  def do_link(_pkg)
246
246
  end
247
247
 
248
+ def get_rpath_origin
249
+ ''
250
+ end
251
+
248
252
  def check_rpath_patch
249
253
  true
250
254
  end
251
255
 
252
- def patch_rpath(_shlib, _rpath)
256
+ def patch_rpath(_shlib, *)
257
+ true
258
+ end
259
+
260
+ def update_shlib_loadpaths(_shlib, _deplibs)
253
261
  true
254
262
  end
255
263
 
@@ -389,11 +397,12 @@ module WXRuby3
389
397
  @rb_docgen_path = File.join(Config.wxruby_root, @rb_docgen_dir)
390
398
 
391
399
  # Extra swig helper files to be built
392
- @helper_modules = if macosx?
393
- %w|RubyStockObjects Mac|
394
- else
395
- %w|RubyStockObjects|
396
- end
400
+ @helper_modules = %w|RubyStockObjects|
401
+ # if macosx?
402
+ # %w|RubyStockObjects Mac|
403
+ # else
404
+ # %w|RubyStockObjects|
405
+ # end
397
406
  # helper to initialize on startup (stock objects can only be initialized after App creation)
398
407
  @helper_inits = @helper_modules - %w|RubyStockObjects|
399
408