wxruby3 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22f63fb730a7c17f84eac51d892cad2f35ef33211d88fafde508fe7c222712e6
4
- data.tar.gz: 2cf9e0b4026e8c00b24873e77af5f4d5676e5af3181e6459104b5c6fef0675d1
3
+ metadata.gz: d56d06b3a74584ca43ec7314bc816c34175dbb7c68d722dfb88f2d1702dc295b
4
+ data.tar.gz: 60d6432e98d834f8eaea4e0e13c8a2bed3fd8a9419cc6331d74c945f9695d223
5
5
  SHA512:
6
- metadata.gz: 48cce7a08e4f4bd15380178cab3ab38b53af6942d5054af617806d5b01bea0aabc26887ec26fc07a6bb6c2d9802ec512d59396a2361c88a12635ebf80b066d91
7
- data.tar.gz: eba7856af27dcfe0e4eb50662bae9bb00af12f29258e0eb4b2d446c3351446651926e2e5c0eec017038fef2545671e8ac47faea0f75c1bb3efd54c751585ae08
6
+ metadata.gz: ef773e93094cfad19757c3d7ecfed29135d920a9f4e810521eadd6b226b8e13a10a735763853c1061d0256ce5fc84a2d5b0c28810874c99443c2a3e2548b753d
7
+ data.tar.gz: 92df4dfe100a6ec2c4353451d237a1a1819ac2777ac1fdbc9a4a8e6cb4996e8fc3254454582a5465e97c7613eaebca4a29e26935c87286798c24c5d235ef2d36
data/README.md CHANGED
@@ -101,7 +101,7 @@ Currently the following are fully supported:
101
101
 
102
102
  | Platform | Ruby version(s) | wxWidgets version(s) |
103
103
  |------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|----------------------|
104
- | Windows 10 (tested)<br>(most likely also Windows 11) | Ruby >= 2.5<br>(RubyInstaller MSYS2-DevKit) | wxWidgets >= 3.2 |
104
+ | Windows >= 10 | Ruby >= 2.5<br>(RubyInstaller MSYS2-DevKit) | wxWidgets >= 3.2 |
105
105
  | Linux (tested; all major AMD64 and ARM64 distributions: Ubuntu, Debian, Fedora, OpenSuSE and ArchLinux)<br>(most likely also i686) | Ruby >= 2.5 | wxWidgets >= 3.2 |
106
106
  | MacOS >= 10.10 using Cocoa (tested on AMD64 and ARM64 M1/M2 Chip) | Ruby >= 2.5 (MacPorts, Homebrew, ruby-install, RVM) | wxWidgets >= 3.2 |
107
107
 
data/lib/wx/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # This software is released under the MIT license.
4
4
 
5
5
  module Wx
6
- WXRUBY_VERSION = '1.0.0'
6
+ WXRUBY_VERSION = '1.0.1'
7
7
  end
data/rakelib/gem.rake CHANGED
@@ -79,7 +79,7 @@ file WXRuby3::Gem.gem_file => WXRuby3::Gem.manifest do
79
79
  gem.add_dependency 'rake'
80
80
  gem.add_dependency 'minitest', '~> 5.15'
81
81
  gem.add_dependency 'test-unit', '~> 3.5'
82
- gem.add_dependency 'plat4m', '~> 1.0'
82
+ gem.add_dependency 'plat4m', '~> 1.1'
83
83
  gem.rdoc_options <<
84
84
  '--exclude=\\.dll' <<
85
85
  '--exclude=\\.so' <<
@@ -7,6 +7,7 @@
7
7
  ###
8
8
 
9
9
  require_relative './unixish'
10
+ require_relative 'pkgman/mingw'
10
11
 
11
12
  require 'uri'
12
13
 
@@ -26,13 +27,6 @@ module WXRuby3
26
27
 
27
28
  module Platform
28
29
 
29
- SWIG_URL = 'https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.2.0/swigwin-4.2.0.zip/download'
30
- SWIG_ZIP = 'swigwin-4.2.0.zip'
31
-
32
- DOXYGEN_URL = 'https://www.doxygen.nl/files/doxygen-1.10.0.windows.x64.bin.zip'
33
-
34
- GIT_URL = 'https://github.com/git-for-windows/git/releases/download/v2.43.0.windows.1/MinGit-2.43.0-64-bit.zip'
35
-
36
30
  def self.included(base)
37
31
  base.class_eval do
38
32
  include Config::UnixLike
@@ -85,71 +79,10 @@ module WXRuby3
85
79
 
86
80
  def install_prerequisites
87
81
  pkg_deps = super
88
- unless pkg_deps.empty?
89
- # autoinstall or not?
90
- unless wants_autoinstall?
91
- STDERR.puts <<~__ERROR_TXT
92
- ERROR: This system lacks installed versions of the following required software packages:
93
- #{pkg_deps.join(', ')}
94
-
95
- Install these packages and try again.
96
- __ERROR_TXT
97
- exit(1)
98
- end
99
- # if SWIG was not found in the PATH
100
- if pkg_deps.include?('swig')
101
- $stdout.print 'Installing SWIG...' if run_silent?
102
- # download and install SWIG
103
- fname = download_and_install(SWIG_URL, SWIG_ZIP, 'swig.exe')
104
- $stdout.puts 'done!' if run_silent?
105
- Config.instance.log_progress("Installed #{fname}")
106
- set_config('swig', fname)
107
- Config.save
108
- end
109
- # if doxygen was not found in the PATH
110
- if pkg_deps.include?('doxygen')
111
- $stdout.print 'Installing Doxygen...' if run_silent?
112
- # download and install doxygen
113
- fname = download_and_install(DOXYGEN_URL, File.basename(URI(DOXYGEN_URL).path), 'doxygen.exe', 'doxygen')
114
- $stdout.puts 'done!' if run_silent?
115
- Config.instance.log_progress("Installed #{fname}")
116
- set_config('doxygen', fname)
117
- Config.save
118
- end
119
- # if git was not found in the PATH
120
- if pkg_deps.include?('git')
121
- $stdout.print 'Installing Git...' if run_silent?
122
- # download and install doxygen
123
- fname = download_and_install(GIT_URL, File.basename(URI(GIT_URL).path), 'git.exe', 'git')
124
- $stdout.puts 'done!' if run_silent?
125
- Config.instance.log_progress("Installed #{fname}")
126
- set_config('git', fname)
127
- Config.save
128
- end
129
- end
82
+ PkgManager.install(pkg_deps)
130
83
  []
131
84
  end
132
85
 
133
- # only called after src gem build
134
- def cleanup_prerequisites
135
- tmp_tool_root = File.join(ENV['HOME'].gsub("\\", '/'), '.wxruby3')
136
- path = get_cfg_string('swig')
137
- unless path.empty? || !path.start_with?(tmp_tool_root)
138
- path = File.dirname(path) while File.dirname(path) != tmp_tool_root
139
- rm_rf(path)
140
- end
141
- path = get_cfg_string('doxygen')
142
- unless path.empty? || !path.start_with?(tmp_tool_root)
143
- path = File.dirname(path) while File.dirname(path) != tmp_tool_root
144
- rm_rf(path)
145
- end
146
- path = get_cfg_string('git')
147
- unless path.empty? || !path.start_with?(tmp_tool_root)
148
- path = File.dirname(path) while File.dirname(path) != tmp_tool_root
149
- rm_rf(path)
150
- end
151
- end
152
-
153
86
  def expand(cmd)
154
87
  super("bash -c \"#{cmd}\"")
155
88
  end
@@ -164,38 +97,8 @@ module WXRuby3
164
97
 
165
98
  private
166
99
 
167
- def download_and_install(url, zip, exe, unpack_to=nil)
168
- # make sure the download destination exists
169
- tmp_tool_root = File.join(ENV['HOME'].gsub("\\", '/'), '.wxruby3')
170
- dest = unpack_to ? File.join(tmp_tool_root, unpack_to) : File.join(tmp_tool_root, File.basename(zip, '.*'))
171
- mkdir(tmp_tool_root) unless File.directory?(tmp_tool_root)
172
- # download
173
- chdir(tmp_tool_root) do
174
- unless download_file(url, zip)
175
- STDERR.puts "ERROR: Failed to download installation package for #{exe}"
176
- exit(1)
177
- end
178
- # unpack
179
- unless sh("powershell Expand-Archive -LiteralPath '#{zip}' -DestinationPath #{dest} -Force")
180
- STDERR.puts "ERROR: Failed to unpack installation package for #{exe}"
181
- exit(1)
182
- end
183
- # cleanup
184
- rm_f(zip)
185
- end
186
- # find executable
187
- find_exe(dest, exe)
188
- end
189
-
190
- def find_exe(path, exe)
191
- fp = Dir.glob(File.join(path, '*')).find { |p| File.file?(p) && File.basename(p) == exe }
192
- unless fp
193
- Dir.glob(File.join(path, '*')).each do |p|
194
- fp = find_exe(p, exe) if File.directory?(p)
195
- return fp if fp
196
- end
197
- end
198
- fp
100
+ def wx_configure
101
+ bash('./configure --prefix=`pwd`/install --disable-tests --without-subdirs --without-regex --with-expat=builtin --with-zlib=builtin --disable-debug_info')
199
102
  end
200
103
 
201
104
  def wx_make
@@ -14,11 +14,33 @@ module WXRuby3
14
14
 
15
15
  module PkgManager
16
16
 
17
+ class PlatformDependencies
18
+ def initialize(*defaults)
19
+ @dependencies = ::Hash.new
20
+ @dependencies.default = ::Hash.new(defaults.flatten)
21
+ end
22
+
23
+ def add(distro, *deps, release: nil)
24
+ @dependencies[distro] ||= ::Hash.new
25
+ if release
26
+ @dependencies[distro][release] = deps.flatten
27
+ else
28
+ @dependencies[distro].default = deps.flatten
29
+ end
30
+ self
31
+ end
32
+
33
+ def get(distro, release: nil)
34
+ @dependencies[distro][release]
35
+ end
36
+ end
37
+
17
38
  PLATFORM_DEPS = {
18
- debian: %w[libgtk-3-dev libwebkit2gtk-4.0-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev],
19
- rhel: %w[expat-devel findutils gspell-devel gstreamer1-plugins-base-devel gtk3-devel libcurl-devel libjpeg-devel libnotify-devel libpng-devel libSM-devel libsecret-devel libtiff-devel SDL-devel webkit2gtk4.1-devel zlib-devel],
20
- suse: %w[gtk3-devel webkit2gtk3-devel gspell-devel gstreamer-devel gstreamer-plugins-base-devel libcurl-devel libsecret-devel libnotify-devel libSDL-devel zlib-devel libjpeg-devel libpng-devel],
21
- arch: %w[pkg-config gtk3 webkit2gtk gspell libunwind gstreamer curl libsecret libnotify libpng12]
39
+ debian: PlatformDependencies.new(%w[libgtk-3-dev libwebkit2gtk-4.0-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev])
40
+ .add('ubuntu', %w[libgtk-3-dev libwebkit2gtk-4.1-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev], release: '24.04'),
41
+ rhel: PlatformDependencies.new(%w[expat-devel findutils gspell-devel gstreamer1-plugins-base-devel gtk3-devel libcurl-devel libjpeg-devel libnotify-devel libpng-devel libSM-devel libsecret-devel libtiff-devel SDL-devel webkit2gtk4.1-devel zlib-devel]),
42
+ suse: PlatformDependencies.new(%w[gtk3-devel webkit2gtk3-devel gspell-devel gstreamer-devel gstreamer-plugins-base-devel libcurl-devel libsecret-devel libnotify-devel libSDL-devel zlib-devel libjpeg-devel libpng-devel]),
43
+ arch: PlatformDependencies.new(%w[pkg-config gtk3 webkit2gtk gspell libunwind gstreamer curl libsecret libnotify libpng12])
22
44
  }
23
45
  PLATFORM_ALTS = {
24
46
  suse: { 'g++' => 'gcc-c++' },
@@ -41,7 +63,7 @@ module WXRuby3
41
63
 
42
64
  Make sure the following packages (or equivalent) are installed and than try again with `--no-autoinstall`:
43
65
  #{pkgs.join(', ')}
44
- __ERROR_TXT
66
+ __ERROR_TXT
45
67
  exit(1)
46
68
  end
47
69
  # can we install?
@@ -63,7 +85,7 @@ module WXRuby3
63
85
  #{pkgs.join(', ')}
64
86
 
65
87
  Install these packages and try again.
66
- __ERROR_TXT
88
+ __ERROR_TXT
67
89
  exit(1)
68
90
  end
69
91
  # do the actual install
@@ -73,7 +95,7 @@ module WXRuby3
73
95
  #{pkgs.join(', ')}
74
96
 
75
97
  Fix any problems or install these packages yourself and try again.
76
- __ERROR_TXT
98
+ __ERROR_TXT
77
99
  if WXRuby3.config.run_silent?
78
100
  $stderr.puts "For error details check #{WXRuby3.config.silent_log_name}"
79
101
  end
@@ -90,7 +112,8 @@ module WXRuby3
90
112
  end
91
113
 
92
114
  def platform_pkgs
93
- PLATFORM_DEPS[WXRuby3.config.sysinfo.os.variant.to_sym] || []
115
+ deps = PLATFORM_DEPS[WXRuby3.config.sysinfo.os.variant.to_sym]
116
+ deps ? deps.get(WXRuby3.config.sysinfo.os.distro, release: WXRuby3.config.sysinfo.os.release) : []
94
117
  end
95
118
 
96
119
  def add_platform_pkgs(pkgs)
@@ -0,0 +1,112 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 buildtools platform pkg manager base
7
+ ###
8
+
9
+ module WXRuby3
10
+
11
+ module Config
12
+
13
+ module Platform
14
+
15
+ module PkgManager
16
+
17
+ XTRA_PLATFORM_DEPS = %w[python]
18
+
19
+ class << self
20
+
21
+ def install(pkgs)
22
+ # do we need to install anything?
23
+ if !pkgs.empty? || builds_wxwidgets?
24
+ # check windows distro compatibility
25
+ unless no_autoinstall? || pkgman
26
+ # do we need to build wxWidgets?
27
+ pkgs.concat(XTRA_PLATFORM_DEPS) if builds_wxwidgets?
28
+ $stderr.puts <<~__ERROR_TXT
29
+ ERROR: Do not know how to install required packages for distro type '#{WXRuby3.config.sysinfo.os.variant}'.
30
+
31
+ Make sure the following packages (or equivalent) are installed and than try again with `--no-autoinstall`:
32
+ #{pkgs.join(', ')}
33
+ __ERROR_TXT
34
+ exit(1)
35
+ end
36
+ # can we install?
37
+ unless no_autoinstall? || pkgman
38
+ $stderr.puts 'ERROR: Do not know how to check for or install required packages. Please install manually and than try again with `--no-autoinstall`.'
39
+ exit(1)
40
+ end
41
+ # do we need to build wxWidgets?
42
+ if builds_wxwidgets?
43
+ # add platform specific packages for wxWidgets
44
+ pkgs.concat(XTRA_PLATFORM_DEPS)
45
+ end
46
+ # do we actually have any packages to install?
47
+ unless pkgs.empty?
48
+ # autoinstall or not?
49
+ unless wants_autoinstall?
50
+ $stderr.puts <<~__ERROR_TXT
51
+ ERROR: This system may lack installed versions of the following required software packages:
52
+ #{pkgs.join(', ')}
53
+
54
+ Install these packages and try again.
55
+ __ERROR_TXT
56
+ exit(1)
57
+ end
58
+ # do the actual install
59
+ unless run(pkgman.make_install_command(*pkgs))
60
+ $stderr.puts <<~__ERROR_TXT
61
+ ERROR: Failed to install all or some of the following required software packages:
62
+ #{pkgs.join(', ')}
63
+
64
+ Fix any problems or install these packages yourself and try again.
65
+ __ERROR_TXT
66
+ if WXRuby3.config.run_silent?
67
+ $stderr.puts "For error details check #{WXRuby3.config.silent_log_name}"
68
+ end
69
+ exit(1)
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ private
76
+
77
+ def pkgman
78
+ @pkgman ||= WXRuby3.config.sysinfo.os.pkgman
79
+ end
80
+
81
+ def builds_wxwidgets?
82
+ Config.get_config('with-wxwin') && Config.get_cfg_string('wxwin').empty?
83
+ end
84
+
85
+ def no_autoinstall?
86
+ Config.get_config('autoinstall') == false
87
+ end
88
+
89
+ def wants_autoinstall?
90
+ WXRuby3.config.wants_autoinstall?
91
+ end
92
+
93
+ def run(cmd)
94
+ $stdout.print "Running #{cmd}..."
95
+ rc = WXRuby3.config.bash(cmd)
96
+ $stderr.puts(rc ? 'done!' : 'FAILED!')
97
+ rc
98
+ end
99
+
100
+ def expand(cmd)
101
+ `#{is_root? ? '' : 'sudo '}#{cmd}`
102
+ end
103
+
104
+ end
105
+
106
+ end
107
+
108
+ end
109
+
110
+ end
111
+
112
+ end
@@ -315,6 +315,11 @@ module WXRuby3
315
315
  "#{spec.class_name(citem)}::WarpPointer",
316
316
  "#{spec.class_name(citem)}::AdjustForLayoutDirection",
317
317
  "#{spec.class_name(citem)}::IsTransparentBackgroundSupported")
318
+ if Config.instance.features_set?('USE_ACCESSIBILITY')
319
+ if Config.instance.wx_version > '3.2.4'
320
+ spec.no_proxy "#{spec.class_name(citem)}::CreateAccessible"
321
+ end
322
+ end
318
323
  end
319
324
  end
320
325
  if spec.module_name == 'wxWindow'
@@ -12,14 +12,14 @@ class TestGDIObjects < Test::Unit::TestCase
12
12
  frame = Wx::Frame.new(nil)
13
13
  frame.set_icon(ico)
14
14
  GC.start
15
- ico_cpy = frame.get_icon
15
+ ico_cpy = frame.get_icons.get_icon_by_index(0)
16
16
  GC.start
17
17
  assert(ico_cpy.ok?)
18
18
  assert_not_equal(ico.object_id, ico_cpy.object_id)
19
19
  ico = nil
20
20
  ico_cpy = nil
21
21
  GC.start
22
- ico_cpy = frame.get_icon
22
+ ico_cpy = frame.get_icons.get_icon_by_index(0)
23
23
  GC.start
24
24
  assert(ico_cpy.ok?)
25
25
  assert_not_equal(ico.object_id, ico_cpy.object_id)
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.0.0
4
+ version: 1.0.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-05-15 00:00:00.000000000 Z
11
+ date: 2024-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.0'
75
+ version: '1.1'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.0'
82
+ version: '1.1'
83
83
  description: wxRuby3 is a Ruby library providing an extension for the wxWidgets C++
84
84
  UI framework
85
85
  email: mcorino@m2c-software.nl
@@ -425,6 +425,7 @@ files:
425
425
  - rakelib/lib/config/mingw.rb
426
426
  - rakelib/lib/config/pkgman/linux.rb
427
427
  - rakelib/lib/config/pkgman/macosx.rb
428
+ - rakelib/lib/config/pkgman/mingw.rb
428
429
  - rakelib/lib/config/unixish.rb
429
430
  - rakelib/lib/config/unknown.rb
430
431
  - rakelib/lib/core/include/client_data.inc