wxruby3 1.3.0 → 1.4.2

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +16 -12
  3. data/README.md +4 -3
  4. data/ext/wxruby3/include/wxRubyApp.h +9 -9
  5. data/ext/wxruby3/swig/custom/director.swg +11 -3
  6. data/ext/wxruby3/swig/custom/rubyapi.swg +15 -1
  7. data/ext/wxruby3/swig/mark_free_impl.i +47 -11
  8. data/ext/wxruby3/swig/wx.i +30 -12
  9. data/lib/wx/aui/auifloatframe.rb +1 -1
  10. data/lib/wx/aui/auimanager.rb +50 -14
  11. data/lib/wx/aui/auinotebook.rb +1 -1
  12. data/lib/wx/aui/require.rb +0 -2
  13. data/lib/wx/core/acceleratortable.rb +1 -1
  14. data/lib/wx/core/animation.rb +2 -2
  15. data/lib/wx/core/app.rb +1 -1
  16. data/lib/wx/core/array_ext.rb +1 -0
  17. data/lib/wx/core/artprovider.rb +4 -4
  18. data/lib/wx/core/bitmap.rb +1 -1
  19. data/lib/wx/core/bitmap_combobox.rb +2 -2
  20. data/lib/wx/core/brush.rb +8 -0
  21. data/lib/wx/core/clientdc.rb +1 -1
  22. data/lib/wx/core/clipboard.rb +4 -4
  23. data/lib/wx/core/colour.rb +1 -1
  24. data/lib/wx/core/combobox.rb +1 -1
  25. data/lib/wx/core/config.rb +7 -7
  26. data/lib/wx/core/controlwithitems.rb +3 -3
  27. data/lib/wx/core/data_object.rb +4 -4
  28. data/lib/wx/core/dataformat.rb +9 -3
  29. data/lib/wx/core/defs.rb +49 -0
  30. data/lib/wx/core/dialog.rb +3 -2
  31. data/lib/wx/core/enum.rb +16 -3
  32. data/lib/wx/core/event.rb +3 -3
  33. data/lib/wx/core/evthandler.rb +317 -289
  34. data/lib/wx/core/file_dialog.rb +1 -1
  35. data/lib/wx/core/find_replace_dialog.rb +2 -2
  36. data/lib/wx/core/font.rb +14 -0
  37. data/lib/wx/core/functions.rb +1 -1
  38. data/lib/wx/core/genericdirctrl.rb +1 -1
  39. data/lib/wx/core/geometry.rb +2 -2
  40. data/lib/wx/core/graphics_pen_info.rb +1 -1
  41. data/lib/wx/core/hboxsizer.rb +24 -4
  42. data/lib/wx/core/helpprovider.rb +1 -1
  43. data/lib/wx/core/icon.rb +1 -1
  44. data/lib/wx/core/image.rb +2 -2
  45. data/lib/wx/core/imagelist.rb +1 -1
  46. data/lib/wx/core/locale.rb +5 -5
  47. data/lib/wx/core/log.rb +8 -8
  48. data/lib/wx/core/menu.rb +3 -3
  49. data/lib/wx/core/module_ext.rb +16 -0
  50. data/lib/wx/core/owner_drawn_combobox.rb +3 -3
  51. data/lib/wx/core/pen.rb +20 -0
  52. data/lib/wx/core/pen_info.rb +1 -1
  53. data/lib/wx/core/persistence_manager.rb +2 -2
  54. data/lib/wx/core/real_point.rb +1 -0
  55. data/lib/wx/core/rect.rb +1 -1
  56. data/lib/wx/core/secret_store.rb +1 -1
  57. data/lib/wx/core/simplehelpprovider.rb +1 -1
  58. data/lib/wx/core/sizer.rb +166 -39
  59. data/lib/wx/core/splash_screen.rb +1 -1
  60. data/lib/wx/core/standard_paths.rb +1 -1
  61. data/lib/wx/core/task_bar_button.rb +1 -1
  62. data/lib/wx/core/text_entry.rb +1 -1
  63. data/lib/wx/core/textctrl.rb +2 -2
  64. data/lib/wx/core/timer.rb +2 -2
  65. data/lib/wx/core/tree_ctrl.rb +1 -1
  66. data/lib/wx/core/v_list_box.rb +1 -1
  67. data/lib/wx/core/validator.rb +2 -2
  68. data/lib/wx/core/variant.rb +2 -2
  69. data/lib/wx/core/vboxsizer.rb +24 -4
  70. data/lib/wx/core/window.rb +48 -2
  71. data/lib/wx/core/xmlresource.rb +4 -4
  72. data/lib/wx/core.rb +2 -0
  73. data/lib/wx/doc/array_ext.rb +1 -0
  74. data/lib/wx/doc/aui/auimanager.rb +2 -0
  75. data/lib/wx/doc/enum.rb +26 -0
  76. data/lib/wx/doc/evthandler.rb +1 -0
  77. data/lib/wx/doc/gdi_common.rb +1 -0
  78. data/lib/wx/doc/tip_window.rb +22 -0
  79. data/lib/wx/grid/grid.rb +3 -3
  80. data/lib/wx/grid/require.rb +0 -2
  81. data/lib/wx/html/htmlhelpcontroller.rb +1 -1
  82. data/lib/wx/html/htmlwindow.rb +1 -1
  83. data/lib/wx/html/require.rb +0 -2
  84. data/lib/wx/html/simple_html_listbox.rb +3 -3
  85. data/lib/wx/keyword_ctors.rb +14 -7
  86. data/lib/wx/keyword_defs.rb +7 -7
  87. data/lib/wx/pg/pg_properties.rb +1 -1
  88. data/lib/wx/pg/pg_property.rb +3 -3
  89. data/lib/wx/pg/property_grid.rb +2 -2
  90. data/lib/wx/pg/property_grid_interface.rb +2 -2
  91. data/lib/wx/pg/require.rb +0 -2
  92. data/lib/wx/prt/previewframe.rb +1 -1
  93. data/lib/wx/prt/require.rb +0 -2
  94. data/lib/wx/rbn/ribbon_control.rb +1 -1
  95. data/lib/wx/rbn/ribbon_page.rb +1 -1
  96. data/lib/wx/rbn/ribbon_panel.rb +1 -1
  97. data/lib/wx/rtc/require.rb +0 -2
  98. data/lib/wx/rtc/rich_text_composite_object.rb +1 -1
  99. data/lib/wx/rtc/rich_text_ctrl.rb +1 -1
  100. data/lib/wx/rtc/rich_text_paragraph.rb +1 -1
  101. data/lib/wx/rtc/richtext_buffer.rb +3 -3
  102. data/lib/wx/rtc/richtext_formatting_dialog.rb +2 -2
  103. data/lib/wx/rtc/richtext_style_organiser_dialog.rb +1 -1
  104. data/lib/wx/rtc/symbol_picker_dialog.rb +1 -1
  105. data/lib/wx/stc/require.rb +0 -2
  106. data/lib/wx/stc/styled_text_ctrl.rb +1 -1
  107. data/lib/wx/version.rb +1 -1
  108. data/lib/wx/wxruby/base.rb +8 -2
  109. data/lib/wx/wxruby/cmd/setup.rb +61 -37
  110. data/rakelib/gem.rb +8 -4
  111. data/rakelib/lib/config/mingw.rb +1 -1
  112. data/rakelib/lib/core/include/swigrubyrun.inc +2 -2
  113. data/rakelib/lib/director/about_dialog_info.rb +1 -0
  114. data/rakelib/lib/director/aui_manager.rb +124 -3
  115. data/rakelib/lib/director/aui_notebook.rb +7 -0
  116. data/rakelib/lib/director/colour.rb +1 -1
  117. data/rakelib/lib/director/data_format.rb +1 -1
  118. data/rakelib/lib/director/dialog.rb +4 -2
  119. data/rakelib/lib/director/event.rb +1 -0
  120. data/rakelib/lib/director/event_handler.rb +82 -46
  121. data/rakelib/lib/director/functions.rb +0 -3
  122. data/rakelib/lib/director/list_ctrl.rb +14 -10
  123. data/rakelib/lib/director/locale.rb +2 -0
  124. data/rakelib/lib/director/num_validator.rb +7 -0
  125. data/rakelib/lib/director/pgproperties.rb +2 -2
  126. data/rakelib/lib/director/property_grid_interface.rb +4 -3
  127. data/rakelib/lib/director/textctrl.rb +7 -0
  128. data/rakelib/lib/director/tip_window.rb +34 -0
  129. data/rakelib/lib/director/variant.rb +2 -2
  130. data/rakelib/lib/director/window.rb +9 -1
  131. data/rakelib/lib/director.rb +0 -1
  132. data/rakelib/lib/extractor/function.rb +5 -0
  133. data/rakelib/lib/generate/doc/evt_handler.yaml +31 -12
  134. data/rakelib/lib/specs/interfaces.rb +1 -0
  135. data/rakelib/lib/typemap/common.rb +2 -2
  136. data/samples/dialogs/dialogs.rb +1 -1
  137. data/tests/test_combo_ctrl.rb +1 -0
  138. data/tests/test_event_handling.rb +158 -31
  139. metadata +7 -5
@@ -13,7 +13,7 @@ module Wx
13
13
  class FileDialog
14
14
 
15
15
  wx_set_customize_hook = instance_method :set_customize_hook
16
- define_method :set_customize_hook do |hook|
16
+ wx_redefine_method :set_customize_hook do |hook|
17
17
  wx_set_customize_hook.bind(self).call(hook)
18
18
  @hook = hook # cache hook to prevent premature GC collection
19
19
  end
@@ -15,13 +15,13 @@ module Wx
15
15
  # the data object so we need to keep it alive here
16
16
 
17
17
  wx_initialize = instance_method :initialize
18
- define_method :initialize do |parent, data, *args|
18
+ wx_redefine_method :initialize do |parent, data, *args|
19
19
  wx_initialize.bind(self).call(parent, data, *args)
20
20
  @fr_data = data
21
21
  end
22
22
 
23
23
  wx_set_data = instance_method :set_data
24
- define_method :set_data do |data|
24
+ wx_redefine_method :set_data do |data|
25
25
  wx_set_data.bind(self).call(data)
26
26
  @fr_data = data
27
27
  end
data/lib/wx/core/font.rb CHANGED
@@ -1,5 +1,13 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+ #
5
+ # Some parts are
6
+ # Copyright 2004-2007, wxRuby development team
7
+ # released under the MIT-like wxRuby2 license
1
8
 
2
9
  require_relative './font/encoding'
10
+ require_relative './enum'
3
11
 
4
12
  module Wx
5
13
 
@@ -27,4 +35,10 @@ module Wx
27
35
  # can be accessed through that name too.
28
36
  TheFontList = Font
29
37
 
38
+ class FontFlag < Wx::Enum
39
+
40
+ set_non_distinct(%i[FONTFLAG_MASK])
41
+
42
+ end
43
+
30
44
  end
@@ -13,7 +13,7 @@ module Wx
13
13
  # Allow this to be called with keyword parameters, and avoid
14
14
  # segfaults on OS X with bad params
15
15
  wx_about_box = self.instance_method(:about_box)
16
- define_method(:about_box) do | info, parent=nil |
16
+ wx_redefine_method(:about_box) do | info, parent=nil |
17
17
  case info
18
18
  when Wx::AboutDialogInfo
19
19
  ab_info = info
@@ -37,7 +37,7 @@ class Wx::GenericDirCtrl
37
37
  end
38
38
 
39
39
  wx_get_tree_ctrl = instance_method(:get_tree_ctrl)
40
- define_method(:get_tree_ctrl) do
40
+ wx_redefine_method(:get_tree_ctrl) do
41
41
  tree = wx_get_tree_ctrl.bind(self).call
42
42
  tree.extend(DirCtrlTree)
43
43
  tree
@@ -23,7 +23,7 @@ module Wx
23
23
  private :add, :sub, :mul, :div
24
24
 
25
25
  wx_assign = instance_method :assign
26
- define_method :assign do |pt|
26
+ wx_redefine_method :assign do |pt|
27
27
  wx_assign.bind(self).call(pt)
28
28
  self
29
29
  end
@@ -76,7 +76,7 @@ module Wx
76
76
  private :add, :sub, :mul, :div
77
77
 
78
78
  wx_assign = instance_method :assign
79
- define_method :assign do |pt|
79
+ wx_redefine_method :assign do |pt|
80
80
  wx_assign.bind(self).call(pt)
81
81
  self
82
82
  end
@@ -10,7 +10,7 @@ class Wx::GraphicsPenInfo
10
10
 
11
11
  # make Wx::GraphicsPenInfo#dashes return self
12
12
  wx_dashes = instance_method :dashes
13
- define_method :dashes do |*args|
13
+ wx_redefine_method :dashes do |*args|
14
14
  wx_dashes.bind(self).call(*args)
15
15
  self
16
16
  end
@@ -9,14 +9,34 @@
9
9
  # Just a shortcut version for creating a horizontal box sizer
10
10
 
11
11
  class Wx::HBoxSizer < Wx::BoxSizer
12
- def initialize
13
- super(Wx::HORIZONTAL)
12
+ def initialize(&block)
13
+ super(Wx::HORIZONTAL, &nil)
14
+ if block
15
+ if block.arity == -1 or block.arity == 0
16
+ self.instance_eval(&block)
17
+ elsif block.arity == 1
18
+ block.call(self)
19
+ else
20
+ Kernel.raise ArgumentError,
21
+ "Block to initialize should accept a single argument or none"
22
+ end
23
+ end
14
24
  end
15
25
  end
16
26
 
17
27
  # Just a shortcut version for creating a horizontal wrap sizer
18
28
  class Wx::HWrapSizer < Wx::WrapSizer
19
- def initialize(flags=Wx::WRAPSIZER_DEFAULT_FLAGS)
20
- super(Wx::HORIZONTAL)
29
+ def initialize(flags=Wx::WRAPSIZER_DEFAULT_FLAGS, &block)
30
+ super(Wx::HORIZONTAL, &nil)
31
+ if block
32
+ if block.arity == -1 or block.arity == 0
33
+ self.instance_eval(&block)
34
+ elsif block.arity == 1
35
+ block.call(self)
36
+ else
37
+ Kernel.raise ArgumentError,
38
+ "Block to initialize should accept a single argument or none"
39
+ end
40
+ end
21
41
  end
22
42
  end
@@ -16,7 +16,7 @@ class Wx::HelpProvider
16
16
  # easiest way is to make the currently set one an instance variable
17
17
  # of this class
18
18
  wx_set = instance_method :set
19
- define_method(:set) do | help_provider |
19
+ wx_redefine_method(:set) do | help_provider |
20
20
  wx_set.bind(self).call(help_provider)
21
21
  @__hp__ = help_provider
22
22
  end
data/lib/wx/core/icon.rb CHANGED
@@ -44,7 +44,7 @@ module Wx
44
44
  # just carries on with an empty icon, which may cause faults
45
45
  # later. Also guess icon type from filename, if not specified.
46
46
  wx_init = self.instance_method(:initialize)
47
- define_method(:initialize) do | *args |
47
+ wx_redefine_method(:initialize) do | *args |
48
48
  if args[0].kind_of? String
49
49
  if not File.exist?( File.expand_path(args[0]) )
50
50
  Kernel.raise(ArgumentError, "Icon file does not exist: #{args[0]}")
data/lib/wx/core/image.rb CHANGED
@@ -58,7 +58,7 @@ module Wx
58
58
  # later. Also, if loading from a file, and the type is not specified,
59
59
  # try to guess it from the filename extension
60
60
  wx_init = self.instance_method(:initialize)
61
- define_method(:initialize) do | *args |
61
+ wx_redefine_method(:initialize) do | *args |
62
62
  if args[0].kind_of? String
63
63
  if not File.exist?( File.expand_path(args[0]) )
64
64
  Kernel.raise(ArgumentError, "Image file does not exist: #{args[0]}")
@@ -103,7 +103,7 @@ module Wx
103
103
  end
104
104
 
105
105
  wx_compute_histogram = instance_method :compute_histogram
106
- define_method :compute_histogram do
106
+ wx_redefine_method :compute_histogram do
107
107
  hist_hash = wx_compute_histogram.bind(self).call
108
108
  hist_hash.extend Histogram
109
109
  hist_hash
@@ -10,7 +10,7 @@ class Wx::ImageList
10
10
 
11
11
  # provide seamless support for adding icons on all platforms
12
12
  wx_add = instance_method :add
13
- define_method :add do |*args|
13
+ wx_redefine_method :add do |*args|
14
14
  if Wx::PLATFORM == 'WXMSW' && args.size == 1 && Wx::Icon === args.first
15
15
  args[0] = args.first.to_bitmap
16
16
  end
@@ -32,22 +32,22 @@ class Wx::Locale
32
32
  # as wxWidgets defines an enum wxLanguage but still uses a mix of enum args and int args
33
33
  # to specify languages we need to fix some things here to make that easier
34
34
  wx_is_available = Wx::Locale.method(:is_available)
35
- define_method :is_available do |lang|
35
+ wx_redefine_method :is_available do |lang|
36
36
  wx_is_available.call(lang.to_i)
37
37
  end
38
38
 
39
39
  wx_get_language_info = Wx::Locale.method(:get_language_info)
40
- define_method :get_language_info do |lang|
40
+ wx_redefine_method :get_language_info do |lang|
41
41
  wx_get_language_info.call(lang.to_i)
42
42
  end
43
43
 
44
44
  wx_get_language_name = Wx::Locale.method(:get_language_name)
45
- define_method :get_language_name do |lang|
45
+ wx_redefine_method :get_language_name do |lang|
46
46
  wx_get_language_name.call(lang.to_i)
47
47
  end
48
48
 
49
49
  wx_get_language_canonical_name = Wx::Locale.method(:get_language_canonical_name)
50
- define_method :get_language_canonical_name do |lang|
50
+ wx_redefine_method :get_language_canonical_name do |lang|
51
51
  wx_get_language_canonical_name.call(lang.to_i)
52
52
  end
53
53
  end
@@ -66,7 +66,7 @@ class Wx::Locale
66
66
  # as wxWidgets defines an enum wxLanguage but still uses a mix of enum args and int args
67
67
  # to specify languages we need to fix some things here to make that easier
68
68
  wx_init = instance_method(:init)
69
- define_method :init do |*args|
69
+ wx_redefine_method :init do |*args|
70
70
  if args.empty? || ::String === args.first
71
71
  wx_init.bind(self).call(*args)
72
72
  else
data/lib/wx/core/log.rb CHANGED
@@ -48,13 +48,13 @@ module Wx
48
48
  class LogChain
49
49
 
50
50
  wx_initialize = instance_method :initialize
51
- define_method :initialize do |new_log|
51
+ wx_redefine_method :initialize do |new_log|
52
52
  wx_initialize.bind(self).call(new_log)
53
53
  @new_log = new_log # cache to prevent premature GC collection; old_log managed in C++ wrapper
54
54
  end
55
55
 
56
56
  wx_set_log = instance_method :set_log
57
- define_method :set_log do |new_log|
57
+ wx_redefine_method :set_log do |new_log|
58
58
  wx_set_log.bind(self).call(new_log)
59
59
  @new_log = new_log # cache to prevent premature GC collection; old_log managed in C++ wrapper
60
60
  end
@@ -100,32 +100,32 @@ module Wx
100
100
  private :setup_log_info
101
101
 
102
102
  wx_log_generic = self.instance_method :log_generic
103
- define_method :log_generic do |lvl, fmt, *args, filename: nil, line: 0, func: nil, component: nil|
103
+ wx_redefine_method :log_generic do |lvl, fmt, *args, filename: nil, line: 0, func: nil, component: nil|
104
104
  wx_log_generic.bind(self).call(lvl, *setup_log_info(fmt, args, filename, line, func, component))
105
105
  end
106
106
 
107
107
  wx_log_info = self.instance_method :log_info
108
- define_method :log_info do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
108
+ wx_redefine_method :log_info do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
109
109
  wx_log_info.bind(self).call(*setup_log_info(fmt, args, filename, line, func, component))
110
110
  end
111
111
 
112
112
  wx_log_verbose = self.instance_method :log_verbose
113
- define_method :log_verbose do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
113
+ wx_redefine_method :log_verbose do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
114
114
  wx_log_verbose.bind(self).call(*setup_log_info(fmt, args, filename, line, func, component))
115
115
  end
116
116
 
117
117
  wx_log_message = self.instance_method :log_message
118
- define_method :log_message do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
118
+ wx_redefine_method :log_message do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
119
119
  wx_log_message.bind(self).call(*setup_log_info(fmt, args, filename, line, func, component))
120
120
  end
121
121
 
122
122
  wx_log_warning = self.instance_method :log_warning
123
- define_method :log_warning do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
123
+ wx_redefine_method :log_warning do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
124
124
  wx_log_warning.bind(self).call(*setup_log_info(fmt, args, filename, line, func, component))
125
125
  end
126
126
 
127
127
  wx_log_error = self.instance_method :log_error
128
- define_method :log_error do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
128
+ wx_redefine_method :log_error do |fmt, *args, filename: nil, line: 0, func: nil, component: nil|
129
129
  wx_log_error.bind(self).call(*setup_log_info(fmt, args, filename, line, func, component))
130
130
  end
131
131
 
data/lib/wx/core/menu.rb CHANGED
@@ -28,7 +28,7 @@ class Wx::Menu
28
28
 
29
29
  # Overload to provide Enumerator without block
30
30
  wx_each_item = instance_method :each_item
31
- define_method :each_item do |&block|
31
+ wx_redefine_method :each_item do |&block|
32
32
  if block
33
33
  wx_each_item.bind(self).call(&block)
34
34
  else
@@ -56,7 +56,7 @@ class Wx::Menu
56
56
  class_eval do
57
57
  meth_names.each do | meth |
58
58
  old_meth = instance_method(meth)
59
- define_method(meth) do | *args |
59
+ wx_redefine_method(meth) do | *args |
60
60
  case args.first
61
61
  when Integer, Wx::Enum then old_meth.bind(self).call(*args)
62
62
  when String then old_meth.bind(self).call(Wx::ID_ANY, *args)
@@ -79,7 +79,7 @@ class Wx::Menu
79
79
  class_eval do
80
80
  meth_names.each do | meth |
81
81
  old_meth = instance_method(meth)
82
- define_method(meth) do | pos, *args |
82
+ wx_redefine_method(meth) do | pos, *args |
83
83
  case args.first
84
84
  when Integer, Wx::Enum then old_meth.bind(self).call(pos, *args)
85
85
  when String then old_meth.bind(self).call(pos, Wx::ID_ANY, *args)
@@ -0,0 +1,16 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Kernel
6
+
7
+ def wx_redefine_method(mtd, &block)
8
+ warn_lvl = $VERBOSE
9
+ $VERBOSE = nil
10
+ undef_method(mtd)
11
+ define_method(mtd, &block)
12
+ ensure
13
+ $VERBOSE = warn_lvl
14
+ end
15
+
16
+ end
@@ -8,7 +8,7 @@ module Wx
8
8
 
9
9
  # make sure to honor the inherited common overloads
10
10
  wx_get_client_object = instance_method :get_client_object
11
- define_method :get_client_object do |*args|
11
+ wx_redefine_method :get_client_object do |*args|
12
12
  if args.empty?
13
13
  super()
14
14
  else
@@ -16,7 +16,7 @@ module Wx
16
16
  end
17
17
  end
18
18
  wx_set_client_object = instance_method :set_client_object
19
- define_method :set_client_object do |*args|
19
+ wx_redefine_method :set_client_object do |*args|
20
20
  if args.size < 2
21
21
  super(*args)
22
22
  else
@@ -32,7 +32,7 @@ module Wx
32
32
 
33
33
  # Overload to provide Enumerator without block
34
34
  wx_each_string = instance_method :each_string
35
- define_method :each_string do |&block|
35
+ wx_redefine_method :each_string do |&block|
36
36
  if block
37
37
  wx_each_string.bind(self).call(&block)
38
38
  else
data/lib/wx/core/pen.rb CHANGED
@@ -6,8 +6,28 @@
6
6
  # Copyright 2004-2007, wxRuby development team
7
7
  # released under the MIT-like wxRuby2 license
8
8
 
9
+ require_relative './enum'
10
+
9
11
  module Wx
10
12
 
11
13
  ThePenList = Wx::Pen
12
14
 
15
+ class PenStyle < Wx::Enum
16
+
17
+ set_non_distinct(%i[PENSTYLE_INVALID PENSTYLE_FIRST_HATCH PENSTYLE_LAST_HATCH])
18
+
19
+ end
20
+
21
+ class PenJoin < Wx::Enum
22
+
23
+ set_non_distinct(%i[JOIN_INVALID])
24
+
25
+ end
26
+
27
+ class PenCap < Wx::Enum
28
+
29
+ set_non_distinct(%i[CAP_INVALID])
30
+
31
+ end
32
+
13
33
  end
@@ -10,7 +10,7 @@ class Wx::PenInfo
10
10
 
11
11
  # make Wx::PenInfo#dashes return self
12
12
  wx_dashes = instance_method :dashes
13
- define_method :dashes do |*args|
13
+ wx_redefine_method :dashes do |*args|
14
14
  wx_dashes.bind(self).call(*args)
15
15
  self
16
16
  end
@@ -22,12 +22,12 @@ module Wx
22
22
  # Cache the global instance to keep it safe from GC
23
23
 
24
24
  wx_get = instance_method :get
25
- define_method :get do
25
+ wx_redefine_method :get do
26
26
  @the_manager ||= wx_get.bind(self).call
27
27
  end
28
28
 
29
29
  wx_set = instance_method :set
30
- define_method :set do |pman|
30
+ wx_redefine_method :set do |pman|
31
31
  wx_set.bind(self).call(pman)
32
32
  @the_manager = pman
33
33
  end
@@ -111,6 +111,7 @@ class Wx::RealPoint
111
111
  def to_real_point
112
112
  self
113
113
  end
114
+ alias :to_real :to_real_point
114
115
 
115
116
  def dup
116
117
  Wx::RealPoint.new(self.x, self.y)
data/lib/wx/core/rect.rb CHANGED
@@ -61,7 +61,7 @@ class Wx::Rect
61
61
  end
62
62
 
63
63
  # next provide new constant versions
64
- def offset(*args)
64
+ wx_redefine_method :offset do |*args|
65
65
  self.dup.offset!(*args)
66
66
  end
67
67
 
@@ -19,7 +19,7 @@ module Wx
19
19
 
20
20
  # Redefine the initialize method to auto-convert UTF-16/-32 strings to UTF-8 if possible.
21
21
  wx_init = self.instance_method(:initialize)
22
- define_method(:initialize) do | *args |
22
+ wx_redefine_method(:initialize) do | *args |
23
23
  if args.size == 1 && ::String === args.first
24
24
  unless args.first.encoding == ::Encoding::UTF_8 || args.first.encoding == ::Encoding::ASCII_8BIT
25
25
  # convert in place unless frozen
@@ -41,7 +41,7 @@ class Wx::SimpleHelpProvider < Wx::HelpProvider
41
41
  def show_help(win)
42
42
  help_text = get_help(win)
43
43
  return false if help_text.empty?
44
- tip = Wx::TipWindow.new(win, help_text, 100)
44
+ Wx::TipWindow.new(win, help_text, 100)
45
45
  true
46
46
  end
47
47
  end
data/lib/wx/core/sizer.rb CHANGED
@@ -6,57 +6,184 @@
6
6
  # Copyright 2004-2007, wxRuby development team
7
7
  # released under the MIT-like wxRuby2 license
8
8
 
9
- # Class for automatically managing layouts
9
+ # Classes for automatically managing layouts
10
10
 
11
- class Wx::Sizer
12
- # Generic method to add items, supporting positional and named
13
- # arguments
14
- ADD_ITEM_PARAMS = [ Wx::Parameter[ :index, -1 ],
15
- Wx::Parameter[ :proportion, 0 ],
16
- Wx::Parameter[ :flag, 0 ],
17
- Wx::Parameter[ :border, 0 ] ]
18
-
19
- def add_item(item, *mixed_args)
11
+ module Wx
12
+ class Sizer
13
+ # Generic method to add items, supporting positional and named
14
+ # arguments
15
+ ADD_ITEM_PARAMS = [Wx::Parameter[:index, -1],
16
+ Wx::Parameter[:proportion, 0],
17
+ Wx::Parameter[:flag, 0],
18
+ Wx::Parameter[:border, 0]]
20
19
 
21
- begin
22
- args = Wx::args_as_list(ADD_ITEM_PARAMS, *mixed_args)
23
- rescue => err
24
- err.set_backtrace(caller)
25
- Kernel.raise err
20
+ def add_item(item, *mixed_args)
21
+
22
+ begin
23
+ args = Wx::args_as_list(ADD_ITEM_PARAMS, *mixed_args)
24
+ rescue => err
25
+ err.set_backtrace(caller)
26
+ Kernel.raise err
27
+ end
28
+
29
+ full_args = []
30
+
31
+ # extract the width and the height in the case of a spacer
32
+ # defined as an array
33
+ if item.kind_of?(Array)
34
+ Kernel.raise ArgumentError,
35
+ "Invalid Sizer specification : [width, height] expected" if item.size != 2
36
+ full_args << item[0] << item[1]
37
+ else
38
+ full_args << item
39
+ end
40
+
41
+ # update the full arguments list with the optional arguments (except index)
42
+ idx = args.shift
43
+ full_args.concat(args)
44
+
45
+ # Call add to append if default position
46
+ if idx == -1
47
+ add(*full_args)
48
+ else
49
+ insert(idx, *full_args)
50
+ end
51
+ end
52
+
53
+ # Overload to provide Enumerator without block
54
+ wx_each_child = instance_method :each_child
55
+ wx_redefine_method :each_child do |&block|
56
+ if block
57
+ wx_each_child.bind(self).call(&block)
58
+ else
59
+ ::Enumerator.new { |y| wx_each_child.bind(self).call { |c| y << c } }
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ class BoxSizer < Sizer
66
+
67
+ wx_initialize = instance_method :initialize
68
+ wx_redefine_method :initialize do |*args, &block|
69
+ wx_initialize.bind(self).call(*args)
70
+ if block
71
+ if block.arity == -1 or block.arity == 0
72
+ self.instance_eval(&block)
73
+ elsif block.arity == 1
74
+ block.call(self)
75
+ else
76
+ Kernel.raise ArgumentError,
77
+ "Block to initialize should accept a single argument or none"
78
+ end
79
+ end
80
+ end
81
+
82
+ end
83
+
84
+ class WrapSizer < BoxSizer
85
+
86
+ wx_initialize = instance_method :initialize
87
+ wx_redefine_method :initialize do |*args, &block|
88
+ wx_initialize.bind(self).call(*args)
89
+ if block
90
+ if block.arity == -1 or block.arity == 0
91
+ self.instance_eval(&block)
92
+ elsif block.arity == 1
93
+ block.call(self)
94
+ else
95
+ Kernel.raise ArgumentError,
96
+ "Block to initialize should accept a single argument or none"
97
+ end
98
+ end
26
99
  end
27
100
 
28
- full_args = []
101
+ end
102
+
103
+ class StaticBoxSizer < BoxSizer
29
104
 
30
- # extract the width and the height in the case of a spacer
31
- # defined as an array
32
- if item.kind_of?(Array)
33
- Kernel.raise ArgumentError,
34
- "Invalid Sizer specification : [width, height] expected" if item.size != 2
35
- full_args << item[0] << item[1]
36
- else
37
- full_args << item
105
+ wx_initialize = instance_method :initialize
106
+ wx_redefine_method :initialize do |*args, &block|
107
+ wx_initialize.bind(self).call(*args)
108
+ if block
109
+ if block.arity == -1 or block.arity == 0
110
+ self.instance_eval(&block)
111
+ elsif block.arity == 1
112
+ block.call(self)
113
+ else
114
+ Kernel.raise ArgumentError,
115
+ "Block to initialize should accept a single argument or none"
116
+ end
117
+ end
38
118
  end
39
119
 
40
- # update the full arguments list with the optional arguments (except index)
41
- idx = args.shift
42
- full_args.concat(args)
120
+ end
43
121
 
44
- # Call add to append if default position
45
- if idx == -1
46
- add(*full_args)
47
- else
48
- insert(idx, *full_args)
122
+ class StdDialogButtonSizer < BoxSizer
123
+
124
+ wx_initialize = instance_method :initialize
125
+ wx_redefine_method :initialize do |*args, &block|
126
+ wx_initialize.bind(self).call(*args)
127
+ if block
128
+ if block.arity == -1 or block.arity == 0
129
+ self.instance_eval(&block)
130
+ elsif block.arity == 1
131
+ block.call(self)
132
+ else
133
+ Kernel.raise ArgumentError,
134
+ "Block to initialize should accept a single argument or none"
135
+ end
136
+ end
49
137
  end
138
+
50
139
  end
51
140
 
52
- # Overload to provide Enumerator without block
53
- wx_each_child = instance_method :each_child
54
- define_method :each_child do |&block|
55
- if block
56
- wx_each_child.bind(self).call(&block)
57
- else
58
- ::Enumerator.new { |y| wx_each_child.bind(self).call { |c| y << c } }
141
+ class GridSizer < Sizer
142
+
143
+ wx_initialize = instance_method :initialize
144
+ wx_redefine_method :initialize do |*args, &block|
145
+ wx_initialize.bind(self).call(*args)
146
+ self.instance_eval(&block) if block
59
147
  end
148
+
149
+ end
150
+
151
+ class FlexGridSizer < GridSizer
152
+
153
+ wx_initialize = instance_method :initialize
154
+ wx_redefine_method :initialize do |*args, &block|
155
+ wx_initialize.bind(self).call(*args)
156
+ if block
157
+ if block.arity == -1 or block.arity == 0
158
+ self.instance_eval(&block)
159
+ elsif block.arity == 1
160
+ block.call(self)
161
+ else
162
+ Kernel.raise ArgumentError,
163
+ "Block to initialize should accept a single argument or none"
164
+ end
165
+ end
166
+ end
167
+
168
+ end
169
+
170
+ class GridBagSizer < FlexGridSizer
171
+
172
+ wx_initialize = instance_method :initialize
173
+ wx_redefine_method :initialize do |*args, &block|
174
+ wx_initialize.bind(self).call(*args)
175
+ if block
176
+ if block.arity == -1 or block.arity == 0
177
+ self.instance_eval(&block)
178
+ elsif block.arity == 1
179
+ block.call(self)
180
+ else
181
+ Kernel.raise ArgumentError,
182
+ "Block to initialize should accept a single argument or none"
183
+ end
184
+ end
185
+ end
186
+
60
187
  end
61
188
 
62
189
  end