wxruby3 1.5.0 → 1.5.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/lib/wx/version.rb +1 -1
- data/rakelib/lib/config/mingw.rb +9 -1
- data/rakelib/lib/config/pkgman/linux.rb +2 -2
- data/rakelib/lib/core/package.rb +2 -2
- data/rakelib/lib/director/aui_manager.rb +11 -6
- data/rakelib/lib/director/aui_notebook.rb +16 -5
- data/rakelib/lib/director/pgcell.rb +3 -0
- data/rakelib/lib/director/pgproperty.rb +7 -0
- data/rakelib/lib/director/property_grid_interface.rb +1 -1
- data/rakelib/lib/typemap/common.rb +20 -0
- data/tests/test_file_dialog.rb +3 -0
- data/tests/test_pg.rb +9 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c66a3ae46adfde4f69fe289722d28b319f88a13d368babf85d8486d70ec89b81
|
4
|
+
data.tar.gz: 9ada796fe609d8fadb1f4b6436d787c2e3570863eacfd65772156cf2ba4baab3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f22f743031fe5e16981b8c01b09b9e0d505839f330b48ef25715dc73044d85cbe5a211a107d93a41203b8cc0214fad0a9f5b152f6d82f4828e08c0cef136965
|
7
|
+
data.tar.gz: f04a7c5176ac19c6a7702bb61f24c9c88c643e65d345618c8a96733bd60dcbb3a0933245fc1bb4b0354881f0b4d875d2379d2982e5e7d50f3fbe1d713d01f46a
|
data/lib/wx/version.rb
CHANGED
data/rakelib/lib/config/mingw.rb
CHANGED
@@ -109,7 +109,15 @@ module WXRuby3
|
|
109
109
|
doxygen = get_cfg_string("doxygen")
|
110
110
|
doxygen = nix_path(doxygen) unless doxygen == 'doxygen'
|
111
111
|
chdir(File.join(ext_path, 'wxWidgets', 'docs', 'doxygen')) do
|
112
|
-
|
112
|
+
exec_env = { 'DOXYGEN' => doxygen, 'WX_SKIP_DOXYGEN_VERSION_CHECK' => '1' }
|
113
|
+
# check if we're using an MSYS version or a native Windows version
|
114
|
+
if WXRuby3.config.sysinfo.os.pkgman && WXRuby3.config.sysinfo.os.pkgman.installed?('doxygen')
|
115
|
+
# The latest MSYS version doxygen generated *nix paths instead of Windows paths in the XML files
|
116
|
+
# to be sure the paths are shortened to relative paths we need to set WXWIDGETS to the *nix
|
117
|
+
# root path for wxWidgets as well and not the Windows root path as the regen.sh script still does.
|
118
|
+
exec_env['WXWIDGETS'] = nix_path(File.join(ext_path, 'wxWidgets'))
|
119
|
+
end
|
120
|
+
unless bash(exec_env, './regen.sh', 'xml')
|
113
121
|
$stderr.puts 'ERROR: Failed to generate wxWidgets XML API specifications for parsing by wxRuby3.'
|
114
122
|
exit(1)
|
115
123
|
end
|
@@ -21,7 +21,7 @@ module WXRuby3
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def add(distro, *deps, release: nil)
|
24
|
-
@dependencies[distro]
|
24
|
+
@dependencies[distro] = ::Hash.new(@dependencies.default.default) unless @dependencies.has_key?(distro)
|
25
25
|
if release
|
26
26
|
@dependencies[distro][release] = deps.flatten
|
27
27
|
else
|
@@ -45,7 +45,7 @@ module WXRuby3
|
|
45
45
|
PLATFORM_DEPS = {
|
46
46
|
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])
|
47
47
|
.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')
|
48
|
-
.alias('ubuntu', '24.04', 'linuxmint', '22'),
|
48
|
+
.alias('ubuntu', '24.04', 'linuxmint', '22').alias('ubuntu', '24.04', 'linuxmint', '22.1'),
|
49
49
|
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]),
|
50
50
|
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]),
|
51
51
|
arch: PlatformDependencies.new(%w[pkg-config gtk3 webkit2gtk gspell libunwind gstreamer curl libsecret libnotify libpng12])
|
data/rakelib/lib/core/package.rb
CHANGED
@@ -655,8 +655,8 @@ module WXRuby3
|
|
655
655
|
unless evts_handled.include?(evh_name)
|
656
656
|
evt_klass ||= item.name if item.event
|
657
657
|
# skip if we do not have an actually existing event class (for this platform)
|
658
|
-
if
|
659
|
-
(evt_klass && included_directors.any? { |dir| dir.defmod.find_item(evt_klass) })
|
658
|
+
if (item.event && item.name == evt_klass) ||
|
659
|
+
(evt_klass && (Package.full_docs? || included_directors.any? { |dir| dir.defmod.find_item(evt_klass) }))
|
660
660
|
|
661
661
|
evh_args, evh_docstr = evt_nodoc ? nil : find_event_doc(evh_name)
|
662
662
|
fdoc.doc.puts evh_docstr if evh_docstr
|
@@ -18,8 +18,13 @@ module WXRuby3
|
|
18
18
|
super
|
19
19
|
spec.gc_as_object 'wxAuiManager'
|
20
20
|
if Config.instance.wx_version >= '3.3.0'
|
21
|
-
spec.items << '
|
22
|
-
|
21
|
+
spec.items << 'wxAuiBookSerializer' << 'wxAuiSerializer' <<
|
22
|
+
'wxAuiDockLayoutInfo' << 'wxAuiPaneLayoutInfo' << 'wxAuiTabLayoutInfo' <<
|
23
|
+
'wxAuiBookDeserializer' << 'wxAuiDeserializer'
|
24
|
+
spec.gc_as_untracked 'wxAuiBookSerializer', 'wxAuiSerializer', 'wxAuiBookDeserializer', 'wxAuiDeserializer',
|
25
|
+
'wxAuiDockLayoutInfo', 'wxAuiPaneLayoutInfo', 'wxAuiTabLayoutInfo'
|
26
|
+
spec.make_abstract 'wxAuiBookSerializer'
|
27
|
+
spec.make_abstract 'wxAuiBookDeserializer'
|
23
28
|
spec.regard 'wxAuiDockLayoutInfo::dock_direction',
|
24
29
|
'wxAuiDockLayoutInfo::dock_layer',
|
25
30
|
'wxAuiDockLayoutInfo::dock_row',
|
@@ -61,8 +66,8 @@ module WXRuby3
|
|
61
66
|
spec.map 'std::vector<wxAuiPaneLayoutInfo>' => 'Array<Wx::AuiPaneLayoutInfo>' do
|
62
67
|
map_out code: <<~__CODE
|
63
68
|
$result = rb_ary_new();
|
64
|
-
std::vector<wxAuiPaneLayoutInfo
|
65
|
-
for (const wxAuiPaneLayoutInfo& pane : panes)
|
69
|
+
std::vector<wxAuiPaneLayoutInfo>* panes = (std::vector<wxAuiPaneLayoutInfo>*)&$1;
|
70
|
+
for (const wxAuiPaneLayoutInfo& pane : *panes)
|
66
71
|
{
|
67
72
|
VALUE r_pane = SWIG_NewPointerObj(new wxAuiPaneLayoutInfo(pane), SWIGTYPE_p_wxAuiPaneLayoutInfo, SWIG_POINTER_OWN);
|
68
73
|
rb_ary_push($result, r_pane);
|
@@ -88,8 +93,8 @@ module WXRuby3
|
|
88
93
|
spec.map 'std::vector<wxAuiTabLayoutInfo>' => 'Array<Wx::AuiTabLayoutInfo>' do
|
89
94
|
map_out code: <<~__CODE
|
90
95
|
$result = rb_ary_new();
|
91
|
-
std::vector<wxAuiTabLayoutInfo
|
92
|
-
for (const wxAuiTabLayoutInfo& tab : tabs)
|
96
|
+
std::vector<wxAuiTabLayoutInfo>* tabs = (std::vector<wxAuiTabLayoutInfo>*)&$1;
|
97
|
+
for (const wxAuiTabLayoutInfo& tab : *tabs)
|
93
98
|
{
|
94
99
|
VALUE r_tab = SWIG_NewPointerObj(new wxAuiTabLayoutInfo(tab), SWIGTYPE_p_wxAuiTabLayoutInfo, SWIG_POINTER_OWN);
|
95
100
|
rb_ary_push($result, r_tab);
|
@@ -23,14 +23,25 @@ module WXRuby3
|
|
23
23
|
wxAuiNotebookPage::caption
|
24
24
|
wxAuiNotebookPage::tooltip
|
25
25
|
wxAuiNotebookPage::bitmap
|
26
|
-
wxAuiNotebookPage::rect
|
27
26
|
wxAuiNotebookPage::active]
|
28
27
|
if Config.instance.wx_version >= '3.3.0'
|
29
28
|
spec.items << 'wxAuiNotebookPosition'
|
30
|
-
spec.regard 'wxAuiNotebookPosition::
|
31
|
-
'wxAuiNotebookPosition::
|
32
|
-
spec.make_readonly 'wxAuiNotebookPosition::
|
33
|
-
'wxAuiNotebookPosition::
|
29
|
+
spec.regard 'wxAuiNotebookPosition::tabCtrl',
|
30
|
+
'wxAuiNotebookPosition::tabIdx'
|
31
|
+
spec.make_readonly 'wxAuiNotebookPosition::tabCtrl',
|
32
|
+
'wxAuiNotebookPosition::tabIdx'
|
33
|
+
|
34
|
+
spec.map 'std::vector<wxAuiTabCtrl*>' => 'Array<Wx::AuiTabCtrl>' do
|
35
|
+
map_out code: <<~__CODE
|
36
|
+
$result = rb_ary_new();
|
37
|
+
std::vector<wxAuiTabCtrl*>* tabctrls = (std::vector<wxAuiTabCtrl*>*)&$1;
|
38
|
+
for (wxAuiTabCtrl* tabctrl : *tabctrls)
|
39
|
+
{
|
40
|
+
VALUE r_tabctrl = SWIG_NewPointerObj(SWIG_as_voidptr(tabctrl), SWIGTYPE_p_wxAuiTabCtrl, 0);
|
41
|
+
rb_ary_push($result, r_tabctrl);
|
42
|
+
}
|
43
|
+
__CODE
|
44
|
+
end
|
34
45
|
end
|
35
46
|
# reset type mapping done in BookCtrls as the non-const arg is used for query-ing here (FindTab)
|
36
47
|
# (wxWidgets should have made this a const arg)
|
@@ -19,6 +19,9 @@ module WXRuby3
|
|
19
19
|
spec.make_abstract 'wxPGCellData' # there is never any need to create an instance in Ruby
|
20
20
|
spec.no_proxy 'wxPGCellData'
|
21
21
|
spec.gc_never 'wxPGCellData'
|
22
|
+
# wxPGChoiceEntry are always passed by value and never transfer ownership
|
23
|
+
# so we do not need tracking or special free function
|
24
|
+
spec.gc_as_untracked 'wxPGChoiceEntry'
|
22
25
|
spec.do_not_generate :variables, :enums, :defines, :functions # with PGProperty
|
23
26
|
# add method for correctly wrapping PGCell output references
|
24
27
|
spec.add_header_code <<~__CODE
|
@@ -49,6 +49,13 @@ module WXRuby3
|
|
49
49
|
'wxPGChoices::wxPGChoices(size_t, const wxString *, const long *)',
|
50
50
|
'wxPGChoices::wxPGChoices(const wxChar **, const long *)',
|
51
51
|
'wxPGChoices::GetId'
|
52
|
+
# type mapping for wxPGChoiceEntry output references to make sure to always return managed copies
|
53
|
+
# (uses reference counted data internally)
|
54
|
+
spec.map "wxPGChoiceEntry&", as: "Wx::PGChoiceEntry" do
|
55
|
+
map_out code: <<~__CODE
|
56
|
+
$result = SWIG_NewPointerObj((new wxPGChoiceEntry(*static_cast< const wxPGChoiceEntry* >($1))), SWIGTYPE_p_wxPGChoiceEntry, SWIG_POINTER_OWN);
|
57
|
+
__CODE
|
58
|
+
end
|
52
59
|
# replace by extension
|
53
60
|
spec.ignore 'wxPGChoices::operator[]', ignore_doc: false
|
54
61
|
spec.add_extend_code 'wxPGChoices', <<~__HEREDOC
|
@@ -190,7 +190,7 @@ module WXRuby3
|
|
190
190
|
# methods).
|
191
191
|
spec.ignore 'wxPropertyGridInterface::RefreshGrid', ignore_doc: false
|
192
192
|
spec.add_extend_code 'wxPropertyGridInterface', <<~__HEREDOC
|
193
|
-
void RefreshGrid(VALUE rb_state)
|
193
|
+
void RefreshGrid(VALUE rb_state = Qnil)
|
194
194
|
{
|
195
195
|
wxPropertyGridPageState *state = 0;
|
196
196
|
if (!NIL_P(rb_state))
|
@@ -475,6 +475,26 @@ module WXRuby3
|
|
475
475
|
map_typecheck precedence: 'INT32_ARRAY', code: '$1 = (TYPE($input) == T_ARRAY);'
|
476
476
|
end
|
477
477
|
|
478
|
+
map 'std::vector<size_t>' => 'Array<Integer>' do
|
479
|
+
map_out code: <<~__CODE
|
480
|
+
$result = rb_ary_new();
|
481
|
+
std::vector<size_t>* vec = (std::vector<size_t>*)&$1;
|
482
|
+
for (size_t i : *vec)
|
483
|
+
{
|
484
|
+
rb_ary_push($result, INT2NUM(i));
|
485
|
+
}
|
486
|
+
__CODE
|
487
|
+
map_directorout code: <<~__CODE
|
488
|
+
if (TYPE($input) == T_ARRAY)
|
489
|
+
{
|
490
|
+
for (int i = 0; i < RARRAY_LEN($input); i++)
|
491
|
+
{
|
492
|
+
$result.push_back(NUM2INT(rb_ary_entry($input,i)));
|
493
|
+
}
|
494
|
+
}
|
495
|
+
__CODE
|
496
|
+
end
|
497
|
+
|
478
498
|
# various enumerator type mappings
|
479
499
|
|
480
500
|
map *%w[wxEdge wxRelationship wxKeyCode], as: 'Integer' do
|
data/tests/test_file_dialog.rb
CHANGED
@@ -17,6 +17,8 @@ class FileDialogTests < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
# temporary as wxw >= 3.3.0 introduced a bug
|
21
|
+
if Wx::WXWIDGETS_VERSION < '3.3.0'
|
20
22
|
def test_file_dialog
|
21
23
|
dlg = Wx::FileDialog.new(nil, 'Select file')
|
22
24
|
assert_kind_of(Wx::FileDialog, dlg)
|
@@ -24,6 +26,7 @@ class FileDialogTests < Test::Unit::TestCase
|
|
24
26
|
assert_kind_of(Wx::Window, dlg)
|
25
27
|
assert_equal(Wx::ID_OK, dialog_tester(dlg))
|
26
28
|
end
|
29
|
+
end
|
27
30
|
|
28
31
|
class FileDialogTestCustomization < Wx::FileDialogCustomizeHook
|
29
32
|
|
data/tests/test_pg.rb
CHANGED
@@ -9,18 +9,26 @@ class PGChoicesTests < WxRuby::Test::GUITests
|
|
9
9
|
def test_enum_labels
|
10
10
|
texts = %w[Red Blue Green Yellow Black White]
|
11
11
|
choices = Wx::PG::PGChoices.new(texts)
|
12
|
-
|
12
|
+
GC.start
|
13
|
+
choices.each_label do |lbl|
|
14
|
+
assert_equal(texts.shift, lbl)
|
15
|
+
GC.start
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
def test_enum_entries
|
16
20
|
texts = %w[Flag1 Flag2 Flag3 Flag4]
|
17
21
|
choices = Wx::PG::PGChoices.new
|
22
|
+
GC.start
|
18
23
|
texts.each_with_index do |s, i|
|
19
24
|
choices.add(s, 1 << i)
|
20
25
|
end
|
21
26
|
choices.each_entry.each_with_index do |entry, ix|
|
27
|
+
GC.start
|
22
28
|
assert_equal(1 << ix, entry.value)
|
29
|
+
GC.start
|
23
30
|
assert_equal(texts[ix], entry.get_text)
|
31
|
+
GC.start
|
24
32
|
end
|
25
33
|
end
|
26
34
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wxruby3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Corino
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-02-25 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: nokogiri
|