wxruby3 1.0.0 → 1.1.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 +4 -4
 - data/README.md +1 -1
 - data/ext/wxruby3/swig/common.i +8 -0
 - data/lib/wx/version.rb +1 -1
 - data/rakelib/build.rb +12 -2
 - data/rakelib/gem.rake +1 -1
 - data/rakelib/install.rb +4 -1
 - data/rakelib/lib/config/macosx.rb +32 -7
 - data/rakelib/lib/config/mingw.rb +4 -101
 - data/rakelib/lib/config/pkgman/linux.rb +31 -8
 - data/rakelib/lib/config/pkgman/mingw.rb +112 -0
 - 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 +6 -0
 - data/tests/test_gdi_object.rb +2 -2
 - metadata +6 -5
 
    
        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/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 
     | 
| 
      
 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/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/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. 
     | 
| 
      
 82 
     | 
    
         
            +
                gem.add_dependency 'plat4m', '~> 1.1'
         
     | 
| 
       83 
83 
     | 
    
         
             
                gem.rdoc_options <<
         
     | 
| 
       84 
84 
     | 
    
         
             
                  '--exclude=\\.dll' <<
         
     | 
| 
       85 
85 
     | 
    
         
             
                  '--exclude=\\.so' <<
         
     | 
    
        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/config/mingw.rb
    CHANGED
    
    | 
         @@ -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 
     | 
    
         
            -
                         
     | 
| 
       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  
     | 
| 
       168 
     | 
    
         
            -
                         
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                       
     | 
| 
       21 
     | 
    
         
            -
                       
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
      
 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
         
     | 
    
        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'
         
     | 
| 
         @@ -315,6 +316,11 @@ module WXRuby3 
     | 
|
| 
       315 
316 
     | 
    
         
             
                                      "#{spec.class_name(citem)}::WarpPointer",
         
     | 
| 
       316 
317 
     | 
    
         
             
                                      "#{spec.class_name(citem)}::AdjustForLayoutDirection",
         
     | 
| 
       317 
318 
     | 
    
         
             
                                      "#{spec.class_name(citem)}::IsTransparentBackgroundSupported")
         
     | 
| 
      
 319 
     | 
    
         
            +
                        if Config.instance.features_set?('USE_ACCESSIBILITY')
         
     | 
| 
      
 320 
     | 
    
         
            +
                          if Config.instance.wx_version > '3.2.4'
         
     | 
| 
      
 321 
     | 
    
         
            +
                            spec.no_proxy "#{spec.class_name(citem)}::CreateAccessible"
         
     | 
| 
      
 322 
     | 
    
         
            +
                          end
         
     | 
| 
      
 323 
     | 
    
         
            +
                        end
         
     | 
| 
       318 
324 
     | 
    
         
             
                      end
         
     | 
| 
       319 
325 
     | 
    
         
             
                    end
         
     | 
| 
       320 
326 
     | 
    
         
             
                    if spec.module_name == 'wxWindow'
         
     | 
    
        data/tests/test_gdi_object.rb
    CHANGED
    
    | 
         @@ -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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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
         
     | 
| 
         @@ -72,14 +72,14 @@ dependencies: 
     | 
|
| 
       72 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
73 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       74 
74 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 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. 
     | 
| 
      
 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
         
     | 
| 
         @@ -1190,7 +1191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       1190 
1191 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       1191 
1192 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       1192 
1193 
     | 
    
         
             
            requirements: []
         
     | 
| 
       1193 
     | 
    
         
            -
            rubygems_version: 3.5. 
     | 
| 
      
 1194 
     | 
    
         
            +
            rubygems_version: 3.5.11
         
     | 
| 
       1194 
1195 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       1195 
1196 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       1196 
1197 
     | 
    
         
             
            summary: wxWidgets extension for Ruby
         
     |