wxruby3 1.5.4 → 1.6.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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +2 -2
  3. data/README.md +3 -3
  4. data/ext/wxruby3/swig/RubyStockObjects.i +1 -0
  5. data/ext/wxruby3/swig/mark_free_impl.i +2 -0
  6. data/lib/wx/aui/auifloatframe.rb +1 -1
  7. data/lib/wx/aui/auimanager.rb +1 -1
  8. data/lib/wx/aui/auinotebook.rb +2 -2
  9. data/lib/wx/core/animation.rb +1 -1
  10. data/lib/wx/core/cursor.rb +10 -0
  11. data/lib/wx/core/dataformat.rb +1 -1
  12. data/lib/wx/core/file_dialog.rb +1 -1
  13. data/lib/wx/core/geometry.rb +34 -0
  14. data/lib/wx/core/hboxsizer.rb +22 -0
  15. data/lib/wx/core/hyperlink_ctrl.rb +18 -0
  16. data/lib/wx/core/position.rb +58 -0
  17. data/lib/wx/core/variant.rb +6 -0
  18. data/lib/wx/core/vboxsizer.rb +22 -0
  19. data/lib/wx/doc/aui/auimanager.rb +6 -3
  20. data/lib/wx/doc/aui/auinotebook.rb +6 -3
  21. data/lib/wx/doc/config.rb +14 -8
  22. data/lib/wx/doc/controlwithitems.rb +7 -3
  23. data/lib/wx/doc/core.rb +21 -0
  24. data/lib/wx/doc/geometry.rb +47 -7
  25. data/lib/wx/doc/graphics_object.rb +24 -0
  26. data/lib/wx/doc/grid/grid.rb +18 -9
  27. data/lib/wx/doc/hboxsizer.rb +41 -5
  28. data/lib/wx/doc/list_ctrl.rb +12 -6
  29. data/lib/wx/doc/menu.rb +6 -3
  30. data/lib/wx/doc/notebook.rb +6 -3
  31. data/lib/wx/doc/pg/pg_property.rb +23 -9
  32. data/lib/wx/doc/pg/property_grid_interface.rb +4 -4
  33. data/lib/wx/doc/region_iterator.rb +1 -1
  34. data/lib/wx/doc/rtc/rich_text_composite_object.rb +6 -3
  35. data/lib/wx/doc/rtc/rich_text_ctrl.rb +6 -3
  36. data/lib/wx/doc/rtc/rich_text_paragraph.rb +6 -3
  37. data/lib/wx/doc/sizer.rb +6 -3
  38. data/lib/wx/doc/stc/styled_text_ctrl.rb +6 -3
  39. data/lib/wx/doc/textctrl.rb +6 -3
  40. data/lib/wx/doc/tree_ctrl.rb +7 -3
  41. data/lib/wx/doc/v_list_box.rb +6 -3
  42. data/lib/wx/doc/variant.rb +31 -1
  43. data/lib/wx/doc/vboxsizer.rb +41 -5
  44. data/lib/wx/doc/window.rb +6 -3
  45. data/lib/wx/helpers.rb +28 -0
  46. data/lib/wx/keyword_ctors.rb +2 -2
  47. data/lib/wx/keyword_defs.rb +11 -2
  48. data/lib/wx/pg/pg_property.rb +60 -53
  49. data/lib/wx/pg/property_grid_interface.rb +10 -0
  50. data/lib/wx/version.rb +1 -1
  51. data/rakelib/gem.rake +83 -66
  52. data/rakelib/gem.rb +4 -20
  53. data/rakelib/lib/config/mingw.rb +1 -1
  54. data/rakelib/lib/config.rb +9 -3
  55. data/rakelib/lib/core/spec.rb +1 -1
  56. data/rakelib/lib/director/affine_matrix.rb +33 -0
  57. data/rakelib/lib/director/animation_ctrl.rb +1 -1
  58. data/rakelib/lib/director/app.rb +1 -1
  59. data/rakelib/lib/director/aui_manager.rb +2 -2
  60. data/rakelib/lib/director/aui_notebook.rb +1 -1
  61. data/rakelib/lib/director/aui_tab_art.rb +4 -4
  62. data/rakelib/lib/director/bitmap_combobox.rb +4 -2
  63. data/rakelib/lib/director/ctrl_with_items.rb +1 -1
  64. data/rakelib/lib/director/cursor.rb +11 -1
  65. data/rakelib/lib/director/dc.rb +2 -2
  66. data/rakelib/lib/director/defs.rb +1 -1
  67. data/rakelib/lib/director/derived_dc.rb +14 -14
  68. data/rakelib/lib/director/dialog.rb +3 -3
  69. data/rakelib/lib/director/gdicommon.rb +2 -2
  70. data/rakelib/lib/director/geometry.rb +55 -3
  71. data/rakelib/lib/director/graphics_context.rb +8 -3
  72. data/rakelib/lib/director/graphics_object.rb +29 -2
  73. data/rakelib/lib/director/html_listbox.rb +19 -5
  74. data/rakelib/lib/director/hvscrolled.rb +253 -0
  75. data/rakelib/lib/director/hyperlink_ctrl.rb +38 -1
  76. data/rakelib/lib/director/menu_item.rb +1 -1
  77. data/rakelib/lib/director/persistent_window.rb +18 -2
  78. data/rakelib/lib/director/pgeditor.rb +1 -1
  79. data/rakelib/lib/director/pgproperties.rb +4 -4
  80. data/rakelib/lib/director/pgproperty.rb +4 -3
  81. data/rakelib/lib/director/pgvalidation_info.rb +1 -1
  82. data/rakelib/lib/director/print_data.rb +1 -1
  83. data/rakelib/lib/director/property_grid_event.rb +1 -1
  84. data/rakelib/lib/director/property_grid_page.rb +1 -1
  85. data/rakelib/lib/director/property_grid_page_state.rb +1 -1
  86. data/rakelib/lib/director/ribbon_tool_bar.rb +1 -1
  87. data/rakelib/lib/director/richtext_buffer.rb +1 -1
  88. data/rakelib/lib/director/richtext_formatting_dialog.rb +1 -1
  89. data/rakelib/lib/director/richtext_paragraph_layout_box.rb +1 -1
  90. data/rakelib/lib/director/richtext_style_listbox.rb +8 -1
  91. data/rakelib/lib/director/scrolled_t.rb +22 -0
  92. data/rakelib/lib/director/sizer.rb +21 -0
  93. data/rakelib/lib/director/styled_text_event.rb +1 -1
  94. data/rakelib/lib/director/textctrl.rb +2 -2
  95. data/rakelib/lib/director/top_level_window.rb +0 -1
  96. data/rakelib/lib/director/tree_ctrl.rb +1 -1
  97. data/rakelib/lib/director/utils.rb +4 -2
  98. data/rakelib/lib/director/variant.rb +29 -1
  99. data/rakelib/lib/director/vlistbox.rb +9 -3
  100. data/rakelib/lib/director/window.rb +16 -4
  101. data/rakelib/lib/extractor/function.rb +46 -15
  102. data/rakelib/lib/generate/doc/hyperlink_ctrl.yaml +22 -0
  103. data/rakelib/lib/generate/doc/scrolled_canvas.yaml +38 -0
  104. data/rakelib/lib/generate/doc/scrolled_control.yaml +38 -0
  105. data/rakelib/lib/generate/doc/scrolled_window.yaml +38 -0
  106. data/rakelib/lib/specs/interfaces.rb +4 -2
  107. data/rakelib/lib/swig_runner.rb +2 -2
  108. data/rakelib/lib/typemap/print_page_range.rb +1 -1
  109. data/samples/scrolling/tn_varscroll.png +0 -0
  110. data/samples/scrolling/varscroll.rb +416 -0
  111. data/samples/widgets/hyperlink.rb +85 -60
  112. data/tests/test_propgrid.rb +857 -0
  113. metadata +14 -7
  114. data/rakelib/lib/director/vscrolled_window.rb +0 -62
  115. /data/samples/{controls → scrolling}/htlbox.rb +0 -0
  116. /data/samples/{etc → scrolling}/scrollwin.rb +0 -0
  117. /data/samples/{controls → scrolling}/tn_htlbox.png +0 -0
  118. /data/samples/{etc → scrolling}/tn_scrollwin.png +0 -0
@@ -15,6 +15,20 @@ module WXRuby3
15
15
 
16
16
  include Util::StringUtil
17
17
 
18
+ class Block
19
+ def initialize(exclude_default=false)
20
+ @yield_param = []
21
+ @exclude_default = exclude_default
22
+ end
23
+
24
+ attr_reader :yield_param, :exclude_default
25
+
26
+ def yield(name, desc, type: nil)
27
+ @yield_param << {name: name, desc: desc, type: type}
28
+ self
29
+ end
30
+ end
31
+
18
32
  def initialize(element = nil, **kwargs)
19
33
  super()
20
34
  @type = nil
@@ -23,12 +37,13 @@ module WXRuby3
23
37
  @args_string = ''
24
38
  @is_overloaded = false
25
39
  @overloads = []
40
+ @block_arg = nil
26
41
 
27
42
  update_attributes(**kwargs)
28
43
  extract(element) if element
29
44
  end
30
45
 
31
- attr_accessor :type, :definition, :template_params, :args_string, :is_overloaded, :overloads
46
+ attr_accessor :type, :definition, :template_params, :args_string, :is_overloaded, :overloads, :block_arg
32
47
 
33
48
  def is_template?
34
49
  !template_params.empty?
@@ -74,6 +89,10 @@ module WXRuby3
74
89
  items.inject(0) { |c, i| c += 1 if ParamDef === i && !i.default; c }
75
90
  end
76
91
 
92
+ def accept_block_arg(exclude_default=false)
93
+ @block_arg = Block.new(exclude_default)
94
+ end
95
+
77
96
  def rb_decl_name
78
97
  "self.#{rb_method_name(rb_name || name)}"
79
98
  end
@@ -81,11 +100,23 @@ module WXRuby3
81
100
  def rb_doc(xml_trans, type_maps, fulldocs=false)
82
101
  ovls = all.select {|m| !m.docs_ignored(fulldocs) && !m.deprecated }
83
102
  ovl_docs = ovls.collect { |mo| [mo]+mo.rb_doc_decl(xml_trans, type_maps) }
84
- ovl_docs.inject({}) do |docs, (movl, name, params, doc)|
85
- if docs.has_key?(name)
86
- docs[name] << [movl, params, doc]
87
- else
88
- docs[name] = [[movl, params, doc]]
103
+ ovl_docs.inject({}) do |docs, (movl, name, params, doc, retdoc)|
104
+ docs[name] = [] unless docs.has_key?(name)
105
+ # add regular method signature doc
106
+ docs[name] << [movl, params, doc+[retdoc]]
107
+ # is an optional block arg allowed for ALL methods or just this overload?
108
+ if @block_arg || movl.block_arg
109
+ # add an overload method signature doc with block arg and yield param
110
+ blk_arg = @block_arg || movl.block_arg
111
+ # skip in case default ctor/method (no args) is excluded from block args
112
+ unless params.empty? && blk_arg.exclude_default
113
+ type = is_ctor ? rb_return_type(type_maps, xml_trans) : nil
114
+ blk_arg.yield_param.each { |yp| doc << "@yieldparam [#{yp[:type] || type}] #{yp[:name]} #{yp[:desc].split("\n").join("\n ")}" }
115
+ doc << retdoc
116
+ blkarg = params.empty? ? '' : ', '
117
+ blkarg << '&block'
118
+ docs[name] << [movl, params+blkarg, doc]
119
+ end
89
120
  end
90
121
  docs
91
122
  end
@@ -157,15 +188,15 @@ module WXRuby3
157
188
  end
158
189
  result.concat(mapped_ret_args.collect { |mra| mra.type }) if mapped_ret_args
159
190
  result.compact! # remove nil values (possible ignored output)
160
- case result.size
161
- when 0
162
- doclns << "@return [void]"
163
- when 1
164
- doclns << "@return [#{result.first}]"
165
- else
166
- doclns << "@return [Array(#{result.join(',')})]"
167
- end
168
- [rb_decl_name, paramlist, doclns]
191
+ retdoc = case result.size
192
+ when 0
193
+ "@return [void]"
194
+ when 1
195
+ "@return [#{result.first}]"
196
+ else
197
+ "@return [Array(#{result.join(',')})]"
198
+ end
199
+ [rb_decl_name, paramlist, doclns, retdoc]
169
200
  end
170
201
 
171
202
  def rb_return_type(type_maps, xml_trans)
@@ -0,0 +1,22 @@
1
+ ---
2
+ :wxGenericHyperlinkCtrl:
3
+ :brief:
4
+ :pre:
5
+ :briefdescription:
6
+ - :pattern: !ruby/regexp /.*/
7
+ :replace: |
8
+ This is the generic implementation of a class that shows a static text element which links to a URL.
9
+ For WXOSX this class is identical to wxHyperlinkCtrl.
10
+
11
+ :detail:
12
+ :pre:
13
+ :para:
14
+ - :pattern: !ruby/regexp /Currently\s+this\s+class\s+is\s+implemented.*other\s+ports./
15
+ :replace: ''
16
+ :wxGenericHyperlinkCtrl.wxGenericHyperlinkCtrl:
17
+ :detail:
18
+ :pre:
19
+ :detaileddescription:
20
+ - :pattern: !ruby/regexp /See.*for\s+more\s+info\./
21
+ :replace: |
22
+ See {Wx::GenericHyperlinkCtrl#create} for more info.
@@ -1,4 +1,42 @@
1
1
  ---
2
+ :wxScrolled:
3
+ :brief:
4
+ :pre:
5
+ :briefdescription:
6
+ - :pattern: !ruby/regexp /.*/
7
+ :replace: |
8
+ The Wx::ScrolledXXX classes manage scrolling for their client areas, transforming the coordinates according
9
+ to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view.
10
+ :detail:
11
+ :pre:
12
+ :simplesect:
13
+ - :pattern: !ruby/regexp /if you want to use.*wxScrolled.*with a custom class/
14
+ :replace: ''
15
+ :post:
16
+ - :pattern: !ruby/regexp /commonly used \(but not the only possible!\) /
17
+ :subst: 'commonly used '
18
+ - :pattern: !ruby/regexp /, aka \{Wx::Scrolled<wxPanel>}, is equivalent to \{Wx::ScrolledWindow} from earlier versions. Derived/
19
+ :subst: ' derives'
20
+ - :pattern: !ruby/regexp /, aka \{Wx::Scrolled<wxWindow>},/
21
+ :subst: ''
22
+ - :pattern: !ruby/regexp /\{Wx::Scrolled<wxControl>}/
23
+ :subst: 'Wx::ScrolledControl'
24
+ - :pattern: !ruby/regexp / \(also note the absence of a \{Wx::ScrolledControl} typedef\)/
25
+ :subst: ''
26
+ - :pattern: !ruby/regexp /Starting from version 2.4 of wxWidgets, there are several ways to use a \{Wx::ScrolledWindow} \(and now \{Wx::Scrolled}\). In particular, there /
27
+ :subst: 'There '
28
+ - :pattern: !ruby/regexp /Wx::Scrolled#(\w+)/
29
+ :subst: '{Wx::ScrolledCanvas#\1}'
30
+ :global: true
31
+ - :pattern: !ruby/regexp /\{Wx::Scrolled}/
32
+ :subst: '{Wx::ScrolledCanvas}'
33
+ :global: true
34
+ :wxScrolled.Create:
35
+ :detail:
36
+ :pre:
37
+ :detaileddescription:
38
+ - :pattern: !ruby/regexp /.*/
39
+ :replace: ''
2
40
  :wxScrolled.DoPrepareDC:
3
41
  :detail:
4
42
  :pre:
@@ -1,4 +1,42 @@
1
1
  ---
2
+ :wxScrolled:
3
+ :brief:
4
+ :pre:
5
+ :briefdescription:
6
+ - :pattern: !ruby/regexp /.*/
7
+ :replace: |
8
+ The Wx::ScrolledXXX classes manage scrolling for their client areas, transforming the coordinates according
9
+ to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view.
10
+ :detail:
11
+ :pre:
12
+ :simplesect:
13
+ - :pattern: !ruby/regexp /if you want to use.*wxScrolled.*with a custom class/
14
+ :replace: ''
15
+ :post:
16
+ - :pattern: !ruby/regexp /commonly used \(but not the only possible!\) /
17
+ :subst: 'commonly used '
18
+ - :pattern: !ruby/regexp /, aka \{Wx::Scrolled<wxPanel>}, is equivalent to \{Wx::ScrolledWindow} from earlier versions. Derived/
19
+ :subst: ' derives'
20
+ - :pattern: !ruby/regexp /, aka \{Wx::Scrolled<wxWindow>},/
21
+ :subst: ''
22
+ - :pattern: !ruby/regexp /\{Wx::Scrolled<wxControl>}/
23
+ :subst: 'Wx::ScrolledControl'
24
+ - :pattern: !ruby/regexp / \(also note the absence of a \{Wx::ScrolledControl} typedef\)/
25
+ :subst: ''
26
+ - :pattern: !ruby/regexp /Starting from version 2.4 of wxWidgets, there are several ways to use a \{Wx::ScrolledWindow} \(and now \{Wx::Scrolled}\). In particular, there /
27
+ :subst: 'There '
28
+ - :pattern: !ruby/regexp /Wx::Scrolled#(\w+)/
29
+ :subst: '{Wx::ScrolledControl#\1}'
30
+ :global: true
31
+ - :pattern: !ruby/regexp /\{Wx::Scrolled}/
32
+ :subst: '{Wx::ScrolledControl}'
33
+ :global: true
34
+ :wxScrolled.Create:
35
+ :detail:
36
+ :pre:
37
+ :detaileddescription:
38
+ - :pattern: !ruby/regexp /.*/
39
+ :replace: ''
2
40
  :wxScrolled.DoPrepareDC:
3
41
  :detail:
4
42
  :pre:
@@ -1,4 +1,42 @@
1
1
  ---
2
+ :wxScrolled:
3
+ :brief:
4
+ :pre:
5
+ :briefdescription:
6
+ - :pattern: !ruby/regexp /.*/
7
+ :replace: |
8
+ The Wx::ScrolledXXX classes manage scrolling for their client areas, transforming the coordinates according
9
+ to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view.
10
+ :detail:
11
+ :pre:
12
+ :simplesect:
13
+ - :pattern: !ruby/regexp /if you want to use.*wxScrolled.*with a custom class/
14
+ :replace: ''
15
+ :post:
16
+ - :pattern: !ruby/regexp /commonly used \(but not the only possible!\) /
17
+ :subst: 'commonly used '
18
+ - :pattern: !ruby/regexp /, aka \{Wx::Scrolled<wxPanel>}, is equivalent to \{Wx::ScrolledWindow} from earlier versions. Derived/
19
+ :subst: ' derives'
20
+ - :pattern: !ruby/regexp /, aka \{Wx::Scrolled<wxWindow>},/
21
+ :subst: ''
22
+ - :pattern: !ruby/regexp /\{Wx::Scrolled<wxControl>}/
23
+ :subst: 'Wx::ScrolledControl'
24
+ - :pattern: !ruby/regexp / \(also note the absence of a \{Wx::ScrolledControl} typedef\)/
25
+ :subst: ''
26
+ - :pattern: !ruby/regexp /Starting from version 2.4 of wxWidgets, there are several ways to use a \{Wx::ScrolledWindow} \(and now \{Wx::Scrolled}\). In particular, there /
27
+ :subst: 'There '
28
+ - :pattern: !ruby/regexp /Wx::Scrolled#(\w+)/
29
+ :subst: '{Wx::ScrolledWindow#\1}'
30
+ :global: true
31
+ - :pattern: !ruby/regexp /\{Wx::Scrolled}/
32
+ :subst: '{Wx::ScrolledWindow}'
33
+ :global: true
34
+ :wxScrolled.Create:
35
+ :detail:
36
+ :pre:
37
+ :detaileddescription:
38
+ - :pattern: !ruby/regexp /.*/
39
+ :replace: ''
2
40
  :wxScrolled.DoPrepareDC:
3
41
  :detail:
4
42
  :pre:
@@ -139,7 +139,9 @@ module WXRuby3
139
139
  Director.Spec(pkg, 'wxScrolledWindow', director: Director::ScrolledT)
140
140
  Director.Spec(pkg, 'wxScrolledCanvas', director: Director::ScrolledT)
141
141
  Director.Spec(pkg, 'wxScrolledControl', director: Director::ScrolledT)
142
- Director.Spec(pkg, 'wxVScrolledWindow')
142
+ Director.Spec(pkg, 'wxHScrolledWindow', director: Director::HVScrolled)
143
+ Director.Spec(pkg, 'wxVScrolledWindow', director: Director::HVScrolled)
144
+ Director.Spec(pkg, 'wxVScrolledCanvas', director: Director::HVScrolled)
143
145
  Director.Spec(pkg, 'wxVListBox')
144
146
  Director.Spec(pkg, 'wxFindReplaceData', requirements: %w[USE_FINDREPLDLG])
145
147
  Director.Spec(pkg, 'wxFindReplaceDialog', director: Director::Dialog, requirements: %w[USE_FINDREPLDLG])
@@ -272,7 +274,7 @@ module WXRuby3
272
274
  Director.Spec(pkg, 'wxHtmlEasyPrinting', requirements: %w[USE_PRINTING_ARCHITECTURE])
273
275
  Director.Spec(pkg, 'wxHtmlPrintout', requirements: %w[USE_PRINTING_ARCHITECTURE])
274
276
  Director.Spec(pkg, 'wxHtmlListBox')
275
- Director.Spec(pkg, 'wxHTMLDataObject') if Config.instance.wx_version >= '3.3'
277
+ Director.Spec(pkg, 'wxHTMLDataObject') if Config.instance.wx_version_check('3.3') >= 0
276
278
  }
277
279
 
278
280
  Director.Package('Wx::RTC', 'USE_RICHTEXT', depends_on: ['Wx::HTML']) { |pkg|
@@ -418,14 +418,14 @@ module WXRuby3
418
418
  # get the generated (class) items for which an alternate implementation has been registered
419
419
  class_list = def_items.select { |itm| Extractor::ClassDef === itm && itm.name != class_implementation(itm.name) }
420
420
  # create re match list for class names
421
- cls_re_txt = class_list.collect { |clsdef| clsdef.name }.join('|')
421
+ cls_re_txt = class_list.collect { |clsdef| class_name(clsdef.name) }.join('|')
422
422
  # updating any matching alloc functions in generated SWIG sourcecode
423
423
  # create regexp for 'initialize' wrappers (due to overloads this could be more than one per class)
424
424
  new_re = /_wrap_new_(#{cls_re_txt})\w*\(.*\)/
425
425
  # check if any of the selected classes have a Director proxy enabled
426
426
  if proxies_enabled = class_list.any? { |clsdef| has_proxy?(clsdef) }
427
427
  # create re match list for classes with director proxy enabled
428
- dir_cls_re_txt = class_list.select { |clsdef| has_proxy?(clsdef) }.collect { |cd| cd.name }.join('|')
428
+ dir_cls_re_txt = class_list.select { |clsdef| has_proxy?(clsdef) }.collect { |cd| class_name(cd.name) }.join('|')
429
429
  # create regexp for Director constructors (may not exist if no proxies are enabled)
430
430
  dir_ctor_re = /SwigDirector_\w+::SwigDirector_\w+\(.*\)\s*:\s*(#{dir_cls_re_txt})\(.*\)\s*,\s*Swig::Director.*{/
431
431
  # create regexp for method wrappers other than 'initialize' wrappers
@@ -20,7 +20,7 @@ module WXRuby3
20
20
 
21
21
  define do
22
22
 
23
- if Config.instance.wx_version >= '3.3.0'
23
+ if Config.instance.wx_version_check('3.3.0') >= 0
24
24
  map 'const std::vector<wxPrintPageRange> &' => 'Array<Wx::PRT::PrintPageRange>' do
25
25
  map_out code: <<~__CODE
26
26
  $result = rb_ary_new();
Binary file