wxruby3 1.3.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) 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/mark_free_impl.i +47 -11
  6. data/ext/wxruby3/swig/wx.i +30 -12
  7. data/lib/wx/aui/auifloatframe.rb +1 -1
  8. data/lib/wx/aui/auimanager.rb +5 -16
  9. data/lib/wx/aui/auinotebook.rb +1 -1
  10. data/lib/wx/aui/require.rb +0 -2
  11. data/lib/wx/core/acceleratortable.rb +1 -1
  12. data/lib/wx/core/animation.rb +2 -2
  13. data/lib/wx/core/app.rb +1 -1
  14. data/lib/wx/core/artprovider.rb +4 -4
  15. data/lib/wx/core/bitmap.rb +1 -1
  16. data/lib/wx/core/bitmap_combobox.rb +2 -2
  17. data/lib/wx/core/clientdc.rb +1 -1
  18. data/lib/wx/core/clipboard.rb +4 -4
  19. data/lib/wx/core/colour.rb +1 -1
  20. data/lib/wx/core/combobox.rb +1 -1
  21. data/lib/wx/core/config.rb +7 -7
  22. data/lib/wx/core/controlwithitems.rb +3 -3
  23. data/lib/wx/core/data_object.rb +4 -4
  24. data/lib/wx/core/dataformat.rb +9 -3
  25. data/lib/wx/core/dialog.rb +3 -2
  26. data/lib/wx/core/event.rb +3 -3
  27. data/lib/wx/core/evthandler.rb +317 -289
  28. data/lib/wx/core/file_dialog.rb +1 -1
  29. data/lib/wx/core/find_replace_dialog.rb +2 -2
  30. data/lib/wx/core/functions.rb +1 -1
  31. data/lib/wx/core/genericdirctrl.rb +1 -1
  32. data/lib/wx/core/geometry.rb +2 -2
  33. data/lib/wx/core/graphics_pen_info.rb +1 -1
  34. data/lib/wx/core/helpprovider.rb +1 -1
  35. data/lib/wx/core/icon.rb +1 -1
  36. data/lib/wx/core/image.rb +2 -2
  37. data/lib/wx/core/imagelist.rb +1 -1
  38. data/lib/wx/core/locale.rb +5 -5
  39. data/lib/wx/core/log.rb +8 -8
  40. data/lib/wx/core/menu.rb +3 -3
  41. data/lib/wx/core/module_ext.rb +16 -0
  42. data/lib/wx/core/owner_drawn_combobox.rb +3 -3
  43. data/lib/wx/core/pen_info.rb +1 -1
  44. data/lib/wx/core/persistence_manager.rb +2 -2
  45. data/lib/wx/core/rect.rb +1 -1
  46. data/lib/wx/core/secret_store.rb +1 -1
  47. data/lib/wx/core/simplehelpprovider.rb +1 -1
  48. data/lib/wx/core/sizer.rb +8 -8
  49. data/lib/wx/core/splash_screen.rb +1 -1
  50. data/lib/wx/core/standard_paths.rb +1 -1
  51. data/lib/wx/core/task_bar_button.rb +1 -1
  52. data/lib/wx/core/text_entry.rb +1 -1
  53. data/lib/wx/core/textctrl.rb +2 -2
  54. data/lib/wx/core/timer.rb +2 -2
  55. data/lib/wx/core/tree_ctrl.rb +1 -1
  56. data/lib/wx/core/v_list_box.rb +1 -1
  57. data/lib/wx/core/validator.rb +2 -2
  58. data/lib/wx/core/variant.rb +2 -2
  59. data/lib/wx/core/window.rb +48 -2
  60. data/lib/wx/core/xmlresource.rb +4 -4
  61. data/lib/wx/core.rb +2 -0
  62. data/lib/wx/doc/evthandler.rb +1 -0
  63. data/lib/wx/doc/tip_window.rb +22 -0
  64. data/lib/wx/grid/grid.rb +3 -3
  65. data/lib/wx/grid/require.rb +0 -2
  66. data/lib/wx/html/htmlhelpcontroller.rb +1 -1
  67. data/lib/wx/html/htmlwindow.rb +1 -1
  68. data/lib/wx/html/require.rb +0 -2
  69. data/lib/wx/html/simple_html_listbox.rb +3 -3
  70. data/lib/wx/keyword_ctors.rb +14 -7
  71. data/lib/wx/keyword_defs.rb +7 -7
  72. data/lib/wx/pg/pg_properties.rb +1 -1
  73. data/lib/wx/pg/pg_property.rb +3 -3
  74. data/lib/wx/pg/property_grid.rb +2 -2
  75. data/lib/wx/pg/property_grid_interface.rb +2 -2
  76. data/lib/wx/pg/require.rb +0 -2
  77. data/lib/wx/prt/previewframe.rb +1 -1
  78. data/lib/wx/prt/require.rb +0 -2
  79. data/lib/wx/rbn/ribbon_control.rb +1 -1
  80. data/lib/wx/rbn/ribbon_page.rb +1 -1
  81. data/lib/wx/rbn/ribbon_panel.rb +1 -1
  82. data/lib/wx/rtc/require.rb +0 -2
  83. data/lib/wx/rtc/rich_text_composite_object.rb +1 -1
  84. data/lib/wx/rtc/rich_text_ctrl.rb +1 -1
  85. data/lib/wx/rtc/rich_text_paragraph.rb +1 -1
  86. data/lib/wx/rtc/richtext_buffer.rb +3 -3
  87. data/lib/wx/rtc/richtext_formatting_dialog.rb +2 -2
  88. data/lib/wx/rtc/richtext_style_organiser_dialog.rb +1 -1
  89. data/lib/wx/rtc/symbol_picker_dialog.rb +1 -1
  90. data/lib/wx/stc/require.rb +0 -2
  91. data/lib/wx/stc/styled_text_ctrl.rb +1 -1
  92. data/lib/wx/version.rb +1 -1
  93. data/lib/wx/wxruby/base.rb +8 -2
  94. data/lib/wx/wxruby/cmd/setup.rb +61 -37
  95. data/rakelib/gem.rb +8 -4
  96. data/rakelib/lib/config/mingw.rb +1 -1
  97. data/rakelib/lib/director/about_dialog_info.rb +1 -0
  98. data/rakelib/lib/director/aui_manager.rb +63 -57
  99. data/rakelib/lib/director/aui_notebook.rb +7 -0
  100. data/rakelib/lib/director/colour.rb +1 -1
  101. data/rakelib/lib/director/data_format.rb +1 -1
  102. data/rakelib/lib/director/event.rb +1 -0
  103. data/rakelib/lib/director/event_handler.rb +82 -46
  104. data/rakelib/lib/director/functions.rb +0 -3
  105. data/rakelib/lib/director/list_ctrl.rb +14 -10
  106. data/rakelib/lib/director/locale.rb +2 -0
  107. data/rakelib/lib/director/num_validator.rb +7 -0
  108. data/rakelib/lib/director/tip_window.rb +34 -0
  109. data/rakelib/lib/director/window.rb +9 -1
  110. data/rakelib/lib/director.rb +0 -1
  111. data/rakelib/lib/generate/doc/evt_handler.yaml +31 -12
  112. data/rakelib/lib/specs/interfaces.rb +1 -0
  113. data/tests/test_combo_ctrl.rb +1 -0
  114. data/tests/test_event_handling.rb +158 -31
  115. metadata +6 -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
@@ -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
@@ -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
@@ -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
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
@@ -52,7 +52,7 @@ module Wx
52
52
 
53
53
  # Overload to provide Enumerator without block
54
54
  wx_each_child = instance_method :each_child
55
- define_method :each_child do |&block|
55
+ wx_redefine_method :each_child do |&block|
56
56
  if block
57
57
  wx_each_child.bind(self).call(&block)
58
58
  else
@@ -65,7 +65,7 @@ module Wx
65
65
  class BoxSizer < Sizer
66
66
 
67
67
  wx_initialize = instance_method :initialize
68
- define_method :initialize do |*args, &block|
68
+ wx_redefine_method :initialize do |*args, &block|
69
69
  wx_initialize.bind(self).call(*args)
70
70
  if block
71
71
  if block.arity == -1 or block.arity == 0
@@ -84,7 +84,7 @@ module Wx
84
84
  class WrapSizer < BoxSizer
85
85
 
86
86
  wx_initialize = instance_method :initialize
87
- define_method :initialize do |*args, &block|
87
+ wx_redefine_method :initialize do |*args, &block|
88
88
  wx_initialize.bind(self).call(*args)
89
89
  if block
90
90
  if block.arity == -1 or block.arity == 0
@@ -103,7 +103,7 @@ module Wx
103
103
  class StaticBoxSizer < BoxSizer
104
104
 
105
105
  wx_initialize = instance_method :initialize
106
- define_method :initialize do |*args, &block|
106
+ wx_redefine_method :initialize do |*args, &block|
107
107
  wx_initialize.bind(self).call(*args)
108
108
  if block
109
109
  if block.arity == -1 or block.arity == 0
@@ -122,7 +122,7 @@ module Wx
122
122
  class StdDialogButtonSizer < BoxSizer
123
123
 
124
124
  wx_initialize = instance_method :initialize
125
- define_method :initialize do |*args, &block|
125
+ wx_redefine_method :initialize do |*args, &block|
126
126
  wx_initialize.bind(self).call(*args)
127
127
  if block
128
128
  if block.arity == -1 or block.arity == 0
@@ -141,7 +141,7 @@ module Wx
141
141
  class GridSizer < Sizer
142
142
 
143
143
  wx_initialize = instance_method :initialize
144
- define_method :initialize do |*args, &block|
144
+ wx_redefine_method :initialize do |*args, &block|
145
145
  wx_initialize.bind(self).call(*args)
146
146
  self.instance_eval(&block) if block
147
147
  end
@@ -151,7 +151,7 @@ module Wx
151
151
  class FlexGridSizer < GridSizer
152
152
 
153
153
  wx_initialize = instance_method :initialize
154
- define_method :initialize do |*args, &block|
154
+ wx_redefine_method :initialize do |*args, &block|
155
155
  wx_initialize.bind(self).call(*args)
156
156
  if block
157
157
  if block.arity == -1 or block.arity == 0
@@ -170,7 +170,7 @@ module Wx
170
170
  class GridBagSizer < FlexGridSizer
171
171
 
172
172
  wx_initialize = instance_method :initialize
173
- define_method :initialize do |*args, &block|
173
+ wx_redefine_method :initialize do |*args, &block|
174
174
  wx_initialize.bind(self).call(*args)
175
175
  if block
176
176
  if block.arity == -1 or block.arity == 0
@@ -15,7 +15,7 @@ class Wx::SplashScreen
15
15
  end
16
16
 
17
17
  # now redefine the overridden ctor to account for deviating arglist
18
- def initialize(bitmap, splashstyle, milliseconds, parent = nil, *mixed_args, &block)
18
+ wx_redefine_method :initialize do |bitmap, splashstyle, milliseconds, parent = nil, *mixed_args, &block|
19
19
  # no zero-args ctor for use with XRC!
20
20
 
21
21
  real_args = begin
@@ -10,7 +10,7 @@ module Wx
10
10
  class << self
11
11
 
12
12
  wx_get = instance_method :get
13
- define_method :get do
13
+ wx_redefine_method :get do
14
14
  # cache the global singleton
15
15
  @instance ||= wx_get.bind(self).call
16
16
  end
@@ -9,7 +9,7 @@ module Wx
9
9
  class TaskBarButton
10
10
 
11
11
  wx_remove_thumb_bar_button = instance_method :remove_thumb_bar_button
12
- define_method :remove_thumb_bar_button do |button|
12
+ wx_redefine_method :remove_thumb_bar_button do |button|
13
13
  button = button.get_id if button.is_a?(Wx::ThumbBarButton)
14
14
  wx_remove_thumb_bar_button.bind(self).call(button)
15
15
  end
@@ -11,7 +11,7 @@ module Wx
11
11
  module TextEntry
12
12
 
13
13
  wx_auto_complete = instance_method :auto_complete
14
- define_method :auto_complete do |completer|
14
+ wx_redefine_method :auto_complete do |completer|
15
15
  if wx_auto_complete.bind(self).call(completer)
16
16
  @completer = completer.is_a?(Wx::TextCompleter) ? completer : nil # keep the Ruby object alive or cleanup
17
17
  true
@@ -58,14 +58,14 @@ module Wx
58
58
 
59
59
  class TextCtrl
60
60
  wx_op_append = instance_method :<<
61
- define_method :<< do |o|
61
+ wx_redefine_method :<< do |o|
62
62
  wx_op_append.bind(self).call(o.to_s)
63
63
  self
64
64
  end
65
65
 
66
66
  # Overload to provide Enumerator without block
67
67
  wx_each_line = instance_method :each_line
68
- define_method :each_line do |&block|
68
+ wx_redefine_method :each_line do |&block|
69
69
  if block
70
70
  wx_each_line.bind(self).call(&block)
71
71
  else
data/lib/wx/core/timer.rb CHANGED
@@ -47,14 +47,14 @@ class Wx::Timer
47
47
 
48
48
  # Redefine initialize
49
49
  wx_init = self.instance_method(:initialize)
50
- define_method(:initialize) do | *args |
50
+ wx_redefine_method(:initialize) do | *args |
51
51
  setup_owner_destruction_hook(args[0])
52
52
  wx_init.bind(self).call(*args)
53
53
  end
54
54
 
55
55
  # Redefine set_owner
56
56
  wx_set_owner = self.instance_method(:set_owner)
57
- define_method(:set_owner) do | *args |
57
+ wx_redefine_method(:set_owner) do | *args |
58
58
  setup_owner_destruction_hook(args[0])
59
59
  wx_set_owner.bind(self).call(*args)
60
60
  end
@@ -12,7 +12,7 @@ class Wx::TreeCtrl
12
12
 
13
13
  # Overload to provide Enumerator without block
14
14
  wx_traverse = instance_method :traverse
15
- define_method :traverse do |start_id=nil, &block|
15
+ wx_redefine_method :traverse do |start_id=nil, &block|
16
16
  if block
17
17
  wx_traverse.bind(self).call(start_id, &block)
18
18
  else
@@ -9,7 +9,7 @@
9
9
  class Wx::VListBox
10
10
 
11
11
  wx_each_selected = instance_method :each_selected
12
- define_method :each_selected do |&block|
12
+ wx_redefine_method :each_selected do |&block|
13
13
  if block
14
14
  wx_each_selected.bind(self).call(&block)
15
15
  else
@@ -34,7 +34,7 @@ class Wx::Validator
34
34
  module Binding
35
35
  def self.included(base)
36
36
  wx_on_transfer_from_window = base.instance_method :on_transfer_from_window
37
- base.define_method :on_transfer_from_window do |meth = nil, &block|
37
+ base.wx_redefine_method :on_transfer_from_window do |meth = nil, &block|
38
38
  proc = if block and not meth
39
39
  block
40
40
  elsif meth and not block
@@ -54,7 +54,7 @@ class Wx::Validator
54
54
  end
55
55
 
56
56
  wx_on_transfer_to_window = base.instance_method :on_transfer_to_window
57
- base.define_method :on_transfer_to_window do |meth = nil, &block|
57
+ base.wx_redefine_method :on_transfer_to_window do |meth = nil, &block|
58
58
  proc = if block and not meth
59
59
  block
60
60
  elsif meth and not block
@@ -24,7 +24,7 @@ module Wx
24
24
 
25
25
  # make assign return self and add it's handy alias
26
26
  wx_assign = instance_method :assign
27
- define_method :assign do |v|
27
+ wx_redefine_method :assign do |v|
28
28
  wx_assign.bind(self).call(v)
29
29
  self
30
30
  end
@@ -33,7 +33,7 @@ module Wx
33
33
  # extend to_s to arraylist and list (easier in pure Ruby)
34
34
 
35
35
  wx_to_s = instance_method :to_s
36
- define_method :to_s do
36
+ wx_redefine_method :to_s do
37
37
  unless null?
38
38
  case type
39
39
  when 'list'
@@ -30,6 +30,52 @@ class Wx::Window
30
30
  alias :bring_to_front :raise_window
31
31
  alias :send_to_back :lower_window
32
32
 
33
+ # Event handling overrides
34
+ class << self
35
+ def process_event(evh, event)
36
+ (@m_process_event ||= Wx::EvtHandler.instance_method(:process_event)).bind(evh).call(event)
37
+ end
38
+ def process_event_locally(evh, event)
39
+ (@m_process_event_locally ||= Wx::EvtHandler.instance_method(:process_event_locally)).bind(evh).call(event)
40
+ end
41
+ def safely_process_event(evh, event)
42
+ (@m_safely_process_event ||= Wx::EvtHandler.instance_method(:safely_process_event)).bind(evh).call(event)
43
+ end
44
+ def process_pending_events(evh)
45
+ (@m_process_pending_events ||= Wx::EvtHandler.instance_method(:process_pending_events)).bind(evh).call
46
+ end
47
+ def queue_event(evh, event)
48
+ (@m_queue_event ||= Wx::EvtHandler.instance_method(:queue_event)).bind(evh).call(event)
49
+ end
50
+ def add_pending_event(evh, event)
51
+ (@m_add_pending_event ||= Wx::EvtHandler.instance_method(:add_pending_event)).bind(evh).call(event)
52
+ end
53
+ end
54
+
55
+ def process_event(event)
56
+ Wx::Window.process_event(get_event_handler, event)
57
+ end
58
+
59
+ def process_event_locally(event)
60
+ Wx::Window.process_event_locally(get_event_handler, event)
61
+ end
62
+
63
+ def safely_process_event(event)
64
+ Wx::Window.safely_process_event(get_event_handler, event)
65
+ end
66
+
67
+ def process_pending_events
68
+ Wx::Window.process_pending_events(get_event_handler)
69
+ end
70
+
71
+ def queue_event(event)
72
+ Wx::Window.queue_event(get_event_handler, event)
73
+ end
74
+
75
+ def add_pending_event(event)
76
+ Wx::Window.add_pending_event(get_event_handler, event)
77
+ end
78
+
33
79
  # Recursively searches all windows below +self+ and returns the first
34
80
  # window which has the id +an_id+. This corresponds to the find_window
35
81
  # method method in WxWidgets when called with an integer.
@@ -67,7 +113,7 @@ class Wx::Window
67
113
 
68
114
  # Overload the wrapper method to check for @__painting__
69
115
  wx_paint_buffered = instance_method :paint_buffered
70
- define_method :paint_buffered do |&block|
116
+ wx_redefine_method :paint_buffered do |&block|
71
117
  if instance_variable_defined?('@__painting__')
72
118
  wx_paint_buffered.bind(self).call(&block)
73
119
  else
@@ -77,7 +123,7 @@ class Wx::Window
77
123
 
78
124
  # Overload to provide Enumerator without block
79
125
  wx_each_child = instance_method :each_child
80
- define_method :each_child do |&block|
126
+ wx_redefine_method :each_child do |&block|
81
127
  if block
82
128
  wx_each_child.bind(self).call(&block)
83
129
  else
@@ -9,14 +9,14 @@
9
9
  class Wx::XmlResource
10
10
  class << self
11
11
  wx_get = self.instance_method(:get)
12
- define_method(:get) do
12
+ wx_redefine_method(:get) do
13
13
  result = wx_get.bind(self).call
14
14
  result.init_all_handlers
15
15
  result
16
16
  end
17
17
 
18
18
  wx_add_subclass_factory = self.instance_method(:add_subclass_factory)
19
- define_method(:add_subclass_factory) do |factory|
19
+ wx_redefine_method(:add_subclass_factory) do |factory|
20
20
  @factories ||= []
21
21
  @factories << factory # keep Ruby factories alive through GC
22
22
  wx_add_subclass_factory.bind(self).call(factory)
@@ -25,7 +25,7 @@ class Wx::XmlResource
25
25
 
26
26
  # Again, if created via new, switch subclassing off and init_all_handlers
27
27
  wx_init = self.instance_method(:initialize)
28
- define_method(:initialize) do | *args |
28
+ wx_redefine_method(:initialize) do | *args |
29
29
  result = wx_init.bind(self).call(*args)
30
30
  result.init_all_handlers
31
31
  end
@@ -35,7 +35,7 @@ class Wx::XmlResource
35
35
  # file. In ruby, in these circumstances, it's more natural to raise an
36
36
  # Exception than expect the user to test the return value.
37
37
  wx_load = self.instance_method(:load)
38
- define_method(:load) do | fname |
38
+ wx_redefine_method(:load) do | fname |
39
39
  result = wx_load.bind(self).call(fname)
40
40
  if not result
41
41
  Kernel.raise( RuntimeError,