wxruby3 1.3.0 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
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