wxruby3 0.9.7 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +183 -42
  3. data/README.md +40 -48
  4. data/ext/mkrf_conf_ext.rb +72 -0
  5. data/lib/wx/core/app.rb +16 -0
  6. data/lib/wx/core/colour.rb +36 -28
  7. data/lib/wx/core/const.rb +19 -0
  8. data/lib/wx/core/enum.rb +17 -1
  9. data/lib/wx/core/geometry.rb +121 -0
  10. data/lib/wx/core/graphics_pen_info.rb +18 -0
  11. data/lib/wx/core/image.rb +49 -0
  12. data/lib/wx/core/menu_bar.rb +11 -0
  13. data/lib/wx/core/paintdc.rb +9 -3
  14. data/lib/wx/core/secret_store.rb +38 -0
  15. data/lib/wx/doc/app.rb +97 -41
  16. data/lib/wx/doc/bitmap.rb +4 -0
  17. data/lib/wx/doc/client_dc.rb +2 -2
  18. data/lib/wx/doc/clipboard.rb +1 -1
  19. data/lib/wx/doc/colour.rb +12 -0
  20. data/lib/wx/doc/const.rb +16 -0
  21. data/lib/wx/doc/cursor.rb +4 -0
  22. data/lib/wx/doc/dc_overlay.rb +34 -0
  23. data/lib/wx/doc/enum.rb +7 -1
  24. data/lib/wx/doc/event_blocker.rb +1 -1
  25. data/lib/wx/doc/evthandler.rb +25 -3
  26. data/lib/wx/doc/functions.rb +3 -6
  27. data/lib/wx/doc/gc_dc.rb +13 -4
  28. data/lib/wx/doc/geometry.rb +136 -0
  29. data/lib/wx/doc/graphics_context.rb +25 -7
  30. data/lib/wx/doc/icon.rb +4 -0
  31. data/lib/wx/doc/image.rb +56 -0
  32. data/lib/wx/doc/list_ctrl.rb +6 -6
  33. data/lib/wx/doc/memory_dc.rb +2 -11
  34. data/lib/wx/doc/mirror_dc.rb +1 -1
  35. data/lib/wx/doc/pen.rb +26 -0
  36. data/lib/wx/doc/persistence_manager.rb +1 -1
  37. data/lib/wx/doc/persistent_object.rb +1 -1
  38. data/lib/wx/doc/pg/property_grid_interface.rb +3 -3
  39. data/lib/wx/doc/prt/printer_dc.rb +2 -2
  40. data/lib/wx/doc/region_iterator.rb +1 -1
  41. data/lib/wx/doc/scaled_dc.rb +1 -1
  42. data/lib/wx/doc/screen_dc.rb +1 -1
  43. data/lib/wx/doc/secret_store.rb +55 -0
  44. data/lib/wx/doc/svg_file_dc.rb +1 -1
  45. data/lib/wx/doc/textctrl.rb +1 -1
  46. data/lib/wx/doc/tree_ctrl.rb +2 -2
  47. data/lib/wx/doc/validator.rb +6 -6
  48. data/lib/wx/doc/variant.rb +2 -2
  49. data/lib/wx/doc/window.rb +5 -4
  50. data/lib/wx/grid/keyword_defs.rb +1 -1
  51. data/lib/wx/html/keyword_defs.rb +3 -3
  52. data/lib/wx/keyword_defs.rb +76 -71
  53. data/lib/wx/pg/keyword_defs.rb +2 -2
  54. data/lib/wx/pg/pg_property.rb +12 -0
  55. data/lib/wx/rbn/keyword_defs.rb +1 -1
  56. data/lib/wx/rtc/keyword_defs.rb +1 -1
  57. data/lib/wx/stc/keyword_defs.rb +1 -1
  58. data/lib/wx/version.rb +1 -1
  59. data/lib/wx/wxruby/base.rb +3 -5
  60. data/lib/wx/wxruby/cmd/check.rb +182 -0
  61. data/lib/wx/wxruby/cmd/sampler.rb +1 -1
  62. data/lib/wx/wxruby/cmd/setup.rb +9 -3
  63. data/lib/wx/wxruby/cmd/test.rb +1 -1
  64. data/rakelib/configure.rb +67 -52
  65. data/rakelib/gem.rake +97 -66
  66. data/rakelib/gem.rb +294 -41
  67. data/rakelib/install.rb +3 -3
  68. data/rakelib/lib/config/{cygwin.rb → freebsd.rb} +1 -1
  69. data/rakelib/lib/config/linux.rb +4 -2
  70. data/rakelib/lib/config/macosx.rb +42 -11
  71. data/rakelib/lib/config/mingw.rb +2 -2
  72. data/rakelib/lib/config/pkgman/{base.rb → linux.rb} +36 -61
  73. data/rakelib/lib/config/pkgman/macosx.rb +17 -78
  74. data/rakelib/lib/config/unixish.rb +17 -8
  75. data/rakelib/lib/config/{netbsd.rb → unknown.rb} +3 -2
  76. data/rakelib/lib/config.rb +74 -33
  77. data/rakelib/lib/core/include/enum.inc +31 -1
  78. data/rakelib/lib/director/affine_matrix.rb +51 -0
  79. data/rakelib/lib/director/app.rb +29 -13
  80. data/rakelib/lib/director/art_provider.rb +4 -0
  81. data/rakelib/lib/director/aui_manager.rb +1 -1
  82. data/rakelib/lib/director/cursor.rb +6 -2
  83. data/rakelib/lib/director/dc.rb +1 -6
  84. data/rakelib/lib/director/derived_dc.rb +88 -31
  85. data/rakelib/lib/director/geometry.rb +142 -0
  86. data/rakelib/lib/director/graphics_context.rb +3 -2
  87. data/rakelib/lib/director/graphics_object.rb +18 -25
  88. data/rakelib/lib/director/grid_ctrl.rb +2 -2
  89. data/rakelib/lib/director/image.rb +59 -0
  90. data/rakelib/lib/director/menu.rb +2 -3
  91. data/rakelib/lib/director/menu_bar.rb +0 -3
  92. data/rakelib/lib/director/pen.rb +1 -1
  93. data/rakelib/lib/director/richtext_composite_object.rb +2 -4
  94. data/rakelib/lib/director/richtext_ctrl.rb +1 -1
  95. data/rakelib/lib/director/secret_store.rb +117 -0
  96. data/rakelib/lib/director/system_settings.rb +1 -1
  97. data/rakelib/lib/director/tree_event.rb +2 -2
  98. data/rakelib/lib/director/window.rb +4 -3
  99. data/rakelib/lib/extractor/function.rb +1 -1
  100. data/rakelib/lib/generate/doc/animation_ctrl.yaml +10 -0
  101. data/rakelib/lib/generate/doc/banner_window.yaml +35 -0
  102. data/rakelib/lib/generate/doc/graphics_context.yaml +12 -0
  103. data/rakelib/lib/generate/doc/graphics_object.yaml +12 -0
  104. data/rakelib/lib/generate/doc/grid_ctrl.yaml +25 -0
  105. data/rakelib/lib/generate/doc/header_ctrl.yaml +91 -0
  106. data/rakelib/lib/generate/doc/icon.yaml +10 -0
  107. data/rakelib/lib/generate/doc/info_bar.yaml +27 -0
  108. data/rakelib/lib/generate/doc/log.yaml +1 -1
  109. data/rakelib/lib/generate/doc/media_ctrl.yaml +27 -0
  110. data/rakelib/lib/generate/doc/persistent_window.yaml +22 -0
  111. data/rakelib/lib/generate/doc/pg_editor.yaml +1 -1
  112. data/rakelib/lib/generate/doc/pg_property.yaml +4 -4
  113. data/rakelib/lib/generate/doc/rearrange_list.yaml +14 -0
  114. data/rakelib/lib/generate/doc/ribbon_panel.yaml +15 -0
  115. data/rakelib/lib/generate/doc/rich_text_formatting_dialog.yaml +26 -0
  116. data/rakelib/lib/generate/doc/secret_store.yaml +55 -0
  117. data/rakelib/lib/generate/doc/text_ctrl.yaml +1 -1
  118. data/rakelib/lib/generate/doc/wizard.yaml +27 -0
  119. data/rakelib/lib/generate/doc.rb +5 -5
  120. data/rakelib/lib/generate/interface.rb +1 -1
  121. data/rakelib/lib/specs/interfaces.rb +4 -0
  122. data/rakelib/lib/swig_runner.rb +24 -3
  123. data/rakelib/lib/typemap/common.rb +10 -0
  124. data/rakelib/lib/typemap/points_list.rb +8 -2
  125. data/rakelib/lib/typemap/richtext.rb +17 -0
  126. data/rakelib/prepost.rake +8 -1
  127. data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +4 -0
  128. data/rakelib/yard/templates/default/fulldoc/html/setup.rb +3 -3
  129. data/samples/dialogs/wizard.rb +20 -19
  130. data/samples/drawing/art/drawing/image.bmp +0 -0
  131. data/samples/drawing/art/drawing/mask.bmp +0 -0
  132. data/samples/drawing/art/drawing/pat35.bmp +0 -0
  133. data/samples/drawing/art/drawing/pat36.bmp +0 -0
  134. data/samples/drawing/art/drawing/pat4.bmp +0 -0
  135. data/samples/drawing/art/drawing/smile.xpm +42 -0
  136. data/samples/drawing/drawing.rb +2276 -0
  137. data/samples/drawing/tn_drawing.png +0 -0
  138. data/samples/html/html.rb +1 -1
  139. data/samples/propgrid/propgrid.rb +1 -1
  140. data/samples/propgrid/propgrid_minimal.rb +1 -1
  141. data/samples/propgrid/sample_props.rb +1 -1
  142. data/samples/sampler/editor.rb +13 -11
  143. data/samples/sampler/sample.rb +2 -0
  144. data/samples/sampler.rb +14 -10
  145. data/samples/text/richtext.rb +53 -0
  146. data/samples/text/scintilla.rb +1 -1
  147. data/samples/text/unicode.rb +4 -4
  148. data/tests/lib/wxapp_runner.rb +1 -1
  149. data/tests/test_config.rb +7 -4
  150. data/tests/test_ext_controls.rb +12 -5
  151. data/tests/test_secret_store.rb +83 -0
  152. data/tests/test_std_controls.rb +12 -12
  153. metadata +66 -47
  154. data/lib/wx/doc/extra/00_starting.md +0 -154
  155. data/lib/wx/doc/extra/01_packages.md +0 -180
  156. data/lib/wx/doc/extra/02_lifecycles.md +0 -166
  157. data/lib/wx/doc/extra/03_dialogs.md +0 -57
  158. data/lib/wx/doc/extra/04_enums.md +0 -143
  159. data/lib/wx/doc/extra/05_event-handling.md +0 -191
  160. data/lib/wx/doc/extra/06_geometry.md +0 -62
  161. data/lib/wx/doc/extra/07_colour_and_font.md +0 -52
  162. data/lib/wx/doc/extra/08_extensions.md +0 -144
  163. data/lib/wx/doc/extra/09_exceptions.md +0 -54
  164. data/lib/wx/doc/extra/10_art.md +0 -111
  165. data/lib/wx/doc/extra/11_drawing_and_dc.md +0 -62
  166. data/lib/wx/doc/extra/12_client_data.md +0 -89
  167. data/lib/wx/doc/extra/13_validators.md +0 -139
  168. data/lib/wx/doc/extra/14_config.md +0 -101
  169. data/lib/wx/doc/extra/15_persistence.md +0 -148
  170. data/rakefile +0 -14
  171. data/rakelib/lib/config/pkgman/arch.rb +0 -53
  172. data/rakelib/lib/config/pkgman/debian.rb +0 -66
  173. data/rakelib/lib/config/pkgman/rhel.rb +0 -54
  174. data/rakelib/lib/config/pkgman/suse.rb +0 -54
  175. data/samples/sampler/back.xpm +0 -21
  176. data/samples/sampler/copy.xpm +0 -44
  177. data/samples/sampler/cut.xpm +0 -46
  178. data/samples/sampler/filesave.xpm +0 -42
  179. data/samples/sampler/find.xpm +0 -62
  180. data/samples/sampler/findrepl.xpm +0 -63
  181. data/samples/sampler/forward.xpm +0 -21
  182. data/samples/sampler/paste.xpm +0 -46
  183. data/samples/sampler/redo.xpm +0 -58
  184. data/samples/sampler/undo.xpm +0 -58
@@ -6,37 +6,45 @@
6
6
  # Copyright 2004-2007, wxRuby development team
7
7
  # released under the MIT-like wxRuby2 license
8
8
 
9
- class Wx::Colour
10
- # Redefine the initialize method so it raises an exception if an
11
- # invalid colour value is given. This might be an unknown colour
12
- # string (eg 'dark blue') or out-of-bounds integer values (<0 or >255)
13
- wx_init = self.instance_method(:initialize)
14
- define_method(:initialize) do | *args |
15
- begin
16
- wx_init.bind(self).call(*args)
17
- # Invalid integer values raise SWIG 'no matching func'
18
- rescue ArgumentError, TypeError
19
- Kernel.raise ArgumentError, "Invalid colour values #{args.inspect}"
9
+ require_relative 'ext'
10
+
11
+ module Wx
12
+
13
+ Wx.add_delayed_constant(self, :TRANSPARENT_COLOUR, 'Wx::Colour.new(0, 0, 0, Wx::ALPHA_TRANSPARENT)') { Wx::Colour.new(0, 0, 0, Wx::ALPHA_TRANSPARENT) }
14
+
15
+ class Colour
16
+ # Redefine the initialize method so it raises an exception if an
17
+ # invalid colour value is given. This might be an unknown colour
18
+ # string (eg 'dark blue') or out-of-bounds integer values (<0 or >255)
19
+ wx_init = self.instance_method(:initialize)
20
+ define_method(:initialize) do | *args |
21
+ begin
22
+ wx_init.bind(self).call(*args)
23
+ # Invalid integer values raise SWIG 'no matching func'
24
+ rescue ArgumentError, TypeError
25
+ Kernel.raise ArgumentError, "Invalid colour values #{args.inspect}"
26
+ end
20
27
  end
21
- end
22
28
 
23
- # Missing Standard colour
24
- Wx::MAGENTA = new(255, 0, 255)
25
-
26
- # Colours are equal to one another if they have the same red, green
27
- # and blue intensity, and the same alpha
28
- def ==(other)
29
- case other
30
- when Wx::Colour
31
- [ self.red, self.green, self.blue, self.alpha ] ==
32
- [ other.red, other.green, other.blue, other.alpha ]
33
- else
34
- false
29
+ # Missing Standard colour
30
+ Wx::MAGENTA = new(255, 0, 255)
31
+
32
+ # Colours are equal to one another if they have the same red, green
33
+ # and blue intensity, and the same alpha
34
+ def ==(other)
35
+ case other
36
+ when Wx::Colour
37
+ [ self.red, self.green, self.blue, self.alpha ] ==
38
+ [ other.red, other.green, other.blue, other.alpha ]
39
+ else
40
+ false
41
+ end
35
42
  end
36
- end
37
43
 
38
- # More informative output for inspect etc
39
- def to_s
40
- "#<Wx::Colour: (#{red}, #{green}, #{blue} *#{alpha})>"
44
+ # More informative output for inspect etc
45
+ def to_s
46
+ "#<Wx::Colour: (#{red}, #{green}, #{blue} *#{alpha})>"
47
+ end
41
48
  end
49
+
42
50
  end
data/lib/wx/core/const.rb CHANGED
@@ -68,8 +68,14 @@ module Wx
68
68
  TREE_LIST_CTRL_NAME_STR = 'wxTreeListCtrl'
69
69
  HTML_LIST_BOX_NAME_STR = 'htmlListBox'
70
70
  SIMPLE_HTML_LIST_BOX_NAME_STR = 'simpleHtmlListBox'
71
+ HTML_WINDOW_NAME_STR = 'htmlWindow'
71
72
  EDITABLE_LIST_BOX_NAME_STR = 'editableListBox'
72
73
  V_LIST_BOX_NAME_STR = 'wxVListBox'
74
+ ACTIVITY_INDICATOR_NAME_STR = 'activityindicator'
75
+ TIME_PICKER_CTRL_NAME_STR = 'timectrl'
76
+ DATE_PICKER_CTRL_NAME_STR = 'datectrl'
77
+ CALENDAR_NAME_STR = 'CalendarCtrl'
78
+ SPIN_BUTTON_NAME_STR = 'wxSpinButton'
73
79
 
74
80
  if Wx::PLATFORM == 'WXMSW'
75
81
  # wxMSW only
@@ -80,4 +86,17 @@ module Wx
80
86
  PROPERTY_GRID_NAME_STR = 'wxPropertyGrid'
81
87
  STC_NAME_STR = 'stcwindow'
82
88
 
89
+ # custom wxRuby addition
90
+ MEDIA_CTRL_NAME_STR = 'mediaCtrl'
91
+ SPIN_CTRL_NAME_STR = 'wxSpinCtrl'
92
+ SPIN_CTRL_DOUBLE_NAME_STR = 'wxSpinCtrlDouble'
93
+ SPLITTER_WINDOW_NAME_STR = 'splitter'
94
+ CHOICEBOOK_NAME_STR = 'choicebook'
95
+ LISTBOOK_NAME_STR = 'listbook'
96
+ TOOLBOOK_NAME_STR = 'toolbook'
97
+ TREEBOOK_NAME_STR = 'treebook'
98
+ SASH_WINDOW_NAME_STR = 'sashWindow'
99
+ SASH_LAYOUT_WINDOW_NAME_STR = 'layoutWindow'
100
+ SCROLLED_NAME_STR = 'SCROLLED_WINDOW'
101
+
83
102
  end
data/lib/wx/core/enum.rb CHANGED
@@ -48,8 +48,24 @@ class Wx::Enum
48
48
  @value.hash
49
49
  end
50
50
 
51
+ def bitmask_to_s
52
+ return '' if to_i == 0
53
+ enums = []
54
+ mask = to_i
55
+ self.class.values.each_value do |enum|
56
+ if enum != 0 && mask.allbits?(enum)
57
+ enums << enum.to_s
58
+ mask &= ~enum
59
+ break if mask == 0
60
+ end
61
+ end
62
+ enums << mask.to_s if mask != 0
63
+ enums.join('|')
64
+ end
65
+ private :bitmask_to_s
66
+
51
67
  def to_s
52
- to_i.to_s
68
+ self.class.values.has_key?(to_i) ? "#{self.class.name}::#{self.class.names_by_value[self]}" : bitmask_to_s
53
69
  end
54
70
 
55
71
  end
@@ -0,0 +1,121 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ def self.deg_to_rad(deg)
8
+ (deg * Math::PI) / 180.0
9
+ end
10
+
11
+ def self.rad_to_deg(rad)
12
+ (rad * 180.0) / Math::PI
13
+ end
14
+
15
+ class Point2DInt
16
+
17
+ alias :x :get_x
18
+ alias :x= :set_x
19
+ alias :y :get_y
20
+ alias :y= :set_y
21
+
22
+ # make wrappers private
23
+ private :add, :sub, :mul, :div
24
+
25
+ wx_assign = instance_method :assign
26
+ define_method :assign do |pt|
27
+ wx_assign.bind(self).call(pt)
28
+ self
29
+ end
30
+
31
+ def add!(pt)
32
+ add(pt)
33
+ self
34
+ end
35
+
36
+ def sub!(pt)
37
+ sub(pt)
38
+ self
39
+ end
40
+
41
+ def mul!(v)
42
+ mul(v)
43
+ self
44
+ end
45
+
46
+ def div!(v)
47
+ div(v)
48
+ self
49
+ end
50
+
51
+ def +(pt)
52
+ Point2DInt.new(self).add!(pt)
53
+ end
54
+
55
+ def -(pt)
56
+ Point2DInt.new(self).sub!(pt)
57
+ end
58
+
59
+ def *(v)
60
+ Point2DInt.new(self).mul!(v)
61
+ end
62
+
63
+ def /(v)
64
+ Point2DInt.new(self).div!(v)
65
+ end
66
+
67
+ end
68
+ class Point2DDouble
69
+
70
+ alias :x :get_x
71
+ alias :x= :set_x
72
+ alias :y :get_y
73
+ alias :y= :set_y
74
+
75
+ # make wrappers private
76
+ private :add, :sub, :mul, :div
77
+
78
+ wx_assign = instance_method :assign
79
+ define_method :assign do |pt|
80
+ wx_assign.bind(self).call(pt)
81
+ self
82
+ end
83
+
84
+ def add!(pt)
85
+ add(pt)
86
+ self
87
+ end
88
+
89
+ def sub!(pt)
90
+ sub(pt)
91
+ self
92
+ end
93
+
94
+ def mul!(v)
95
+ mul(v)
96
+ self
97
+ end
98
+
99
+ def div!(v)
100
+ div(v)
101
+ self
102
+ end
103
+
104
+ def +(pt)
105
+ Point2DDouble.new(self).add!(pt)
106
+ end
107
+
108
+ def -(pt)
109
+ Point2DDouble.new(self).sub!(pt)
110
+ end
111
+
112
+ def *(v)
113
+ Point2DDouble.new(self).mul!(v)
114
+ end
115
+
116
+ def /(v)
117
+ Point2DDouble.new(self).div!(v)
118
+ end
119
+
120
+ end
121
+ end
@@ -0,0 +1,18 @@
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
8
+
9
+ class Wx::GraphicsPenInfo
10
+
11
+ # make Wx::GraphicsPenInfo#dashes return self
12
+ wx_dashes = instance_method :dashes
13
+ define_method :dashes do |*args|
14
+ wx_dashes.bind(self).call(*args)
15
+ self
16
+ end
17
+
18
+ end
data/lib/wx/core/image.rb CHANGED
@@ -108,6 +108,55 @@ module Wx
108
108
  hist_hash.extend Histogram
109
109
  hist_hash
110
110
  end
111
+
112
+ # import flattened nested classes
113
+ HSVValue = Wx::HSVValue
114
+ RGBValue = Wx::RGBValue
115
+
116
+ end
117
+
118
+ class HSVValue
119
+
120
+ # More informative output when converted to string
121
+ def to_s
122
+ "#<Wx::Image::HSVValue: (#{self.hue}, #{self.saturation}, #{self.value})>"
123
+ end
124
+
125
+ def inspect
126
+ to_s
127
+ end
128
+
129
+ # make HSVValue usable for parallel assignments like `x, y = pt`
130
+ def to_ary
131
+ [self.hue, self.saturation, self.value]
132
+ end
133
+
134
+ def to_rgb
135
+ Image::hsv_to_rgb(self)
136
+ end
137
+
138
+ end
139
+
140
+ class RGBValue
141
+
142
+ # More informative output when converted to string
143
+ def to_s
144
+ "#<Wx::Image::RGBValue: (#{self.red}, #{self.green}, #{self.blue})>"
145
+ end
146
+
147
+ def inspect
148
+ to_s
149
+ end
150
+
151
+ # make RGBValue usable for parallel assignments like `x, y = pt`
152
+ def to_ary
153
+ [self.red, self.green, self.blue]
154
+ end
155
+
156
+ def to_hsv
157
+ Image::rgb_to_hsv(self)
158
+ end
159
+
111
160
  end
112
161
 
113
162
  def self.Image(name, bmp_type = nil, *rest, art_path: nil, art_section: nil)
@@ -12,6 +12,17 @@ class Wx::MenuBar
12
12
 
13
13
  def initialize(*args, &block)
14
14
  wx_initialize(*args)
15
+ if Wx::PLATFORM == 'WXOSX'
16
+ # OSX's standard Apple/Application menu gets titled with the executables name by default
17
+ # which is 'ruby' for wxRuby and this title is near impossible to reliably change.
18
+ # Therefor we implemented (a little stunted) workaround here to deal with Apple's crap.
19
+ # We insert a disabled item at the start of this menu with the AppDisplayName and follow
20
+ # it up with a nice separator. This way at least we will always be able to see which wxRuby
21
+ # app the visible menu belongs to.
22
+ apple_menu = osx_get_apple_menu
23
+ apple_menu.insert(0, Wx::ID_NONE, Wx.get_app.get_app_display_name).enable(false)
24
+ apple_menu.insert_separator(1)
25
+ end
15
26
  if block
16
27
  if block.arity == -1 or block.arity == 0
17
28
  self.instance_eval(&block)
@@ -6,10 +6,16 @@
6
6
  # Copyright 2004-2007, wxRuby development team
7
7
  # released under the MIT-like wxRuby2 license
8
8
 
9
- class Wx::PaintDC
9
+ module Wx
10
+
11
+ class PaintDC
12
+
13
+ def self.draw_on(win, &block)
14
+ win.paint(&block) if block
15
+ end
10
16
 
11
- def self.draw_on(win, &block)
12
- win.paint(&block) if block
13
17
  end
14
18
 
19
+ AutoBufferedPaintDC = PaintDC.has_native_double_buffer ? Wx::PaintDC : Wx::BufferedPaintDC
20
+
15
21
  end
@@ -0,0 +1,38 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ class SecretStore
8
+
9
+ # Wipes the secret data.
10
+ def self.wipe(secret)
11
+ if ::String === secret
12
+ secret.bytesize.times { |i| secret.setbyte(i, 0) }
13
+ end
14
+ end
15
+
16
+ end
17
+
18
+ class SecretValue
19
+
20
+ # Redefine the initialize method to auto-convert UTF-16/-32 strings to UTF-8 if possible.
21
+ wx_init = self.instance_method(:initialize)
22
+ define_method(:initialize) do | *args |
23
+ if args.size == 1 && ::String === args.first
24
+ unless args.first.encoding == ::Encoding::UTF_8 || args.first.encoding == ::Encoding::ASCII_8BIT
25
+ # convert in place unless frozen
26
+ if !args.first.frozen?
27
+ args.first.encode!(::Encoding::UTF_8) rescue nil
28
+ else # create converted copy
29
+ (args = [args.first.encode(::Encoding::UTF_8)]) rescue nil
30
+ end
31
+ end
32
+ end
33
+ wx_init.bind(self).call(*args)
34
+ end
35
+
36
+ end
37
+
38
+ end
data/lib/wx/doc/app.rb CHANGED
@@ -9,47 +9,103 @@ module Wx
9
9
 
10
10
  class App
11
11
 
12
- # Set the menu item id for the About menu item.
13
- # Default is {Wx::ID_ABOUT}
14
- # @param [Integer] id
15
- # @wxrb_require WXOSX
16
- def set_mac_about_menu_itemid(id) end
17
- alias :mac_about_menu_itemid= :set_mac_about_menu_itemid
18
-
19
- # Get the current menu item id for the About menu item.
20
- # Default is {Wx::ID_ABOUT}
21
- # @return [Integer]
22
- # @wxrb_require WXOSX
23
- def get_mac_about_menu_itemid(id) end
24
- alias :mac_about_menu_itemid :get_mac_about_menu_itemid
25
-
26
- # Set the menu item id for the Preferences menu item.
27
- # Default is {Wx::ID_PREFERENCES}
28
- # @param [Integer] id
29
- # @wxrb_require WXOSX
30
- def set_mac_preferences_menu_itemid(id) end
31
- alias :mac_preferences_menu_itemid= :set_mac_preferences_menu_itemid
32
-
33
- # Get the current menu item id for the Preferences menu item.
34
- # Default is {Wx::ID_PREFERENCES}
35
- # @return [Integer]
36
- # @wxrb_require WXOSX
37
- def get_mac_preferences_menu_itemid(id) end
38
- alias :mac_preferences_menu_itemid :get_mac_preferences_menu_itemid
39
-
40
- # Set the menu item id for the Exit menu item.
41
- # Default is {Wx::ID_EXIT}
42
- # @param [Integer] id
43
- # @wxrb_require WXOSX
44
- def set_mac_exit_menu_itemid(id) end
45
- alias :mac_exit_menu_itemid= :set_mac_exit_menu_itemid
46
-
47
- # Get the current menu item id for the Exit menu item.
48
- # Default is {Wx::ID_EXIT}
49
- # @return [Integer]
50
- # @wxrb_require WXOSX
51
- def get_mac_exit_menu_itemid(id) end
52
- alias :mac_exit_menu_itemid :get_mac_exit_menu_itemid
12
+ # Run the (main loop for) the application instance.
13
+ # Optionally runs a given block as the applications #on_init callback
14
+ # if no actual #on_init method has been defined.
15
+ # A given block will be ignored if an actual #on_init method has been defined.
16
+ # @yieldreturn [Boolean] return true if init block succeeded, false otherwise
17
+ # @return [Integer] return code from the #on_exit callback (`0` if no #on_exit defined or called)
18
+ def run(&block) end
19
+
20
+ # Convenience method to instantiate an application object of the class
21
+ # and call the {Wx::App#run} method for that application object.
22
+ # @yieldreturn [Boolean] return true if init block succeeded, false otherwise
23
+ # @return [Integer] return code from {Wx::App#run}
24
+ def self.run(&block) end
25
+
26
+ class << self
27
+
28
+ # Set the menu item id for the About menu item.
29
+ # Default is {Wx::ID_ABOUT}. Setting to {Wx::ID_NONE} will disable moving the About item to the Application menu.
30
+ # @param [Integer] id
31
+ # @wxrb_require WXOSX
32
+ # @see Wx::App.get_mac_about_menu_itemid
33
+ def set_mac_about_menu_itemid(id) end
34
+ alias :mac_about_menu_itemid= :set_mac_about_menu_itemid
35
+
36
+ # Get the current menu item id for the About menu item.
37
+ # Default is {Wx::ID_ABOUT}
38
+ # @return [Integer]
39
+ # @wxrb_require WXOSX
40
+ # @see Wx::App.set_mac_about_menu_itemid
41
+ def get_mac_about_menu_itemid; end
42
+ alias :mac_about_menu_itemid :get_mac_about_menu_itemid
43
+
44
+ # Set the menu item id for the Preferences menu item.
45
+ # Default is {Wx::ID_PREFERENCES}
46
+ # @param [Integer] id
47
+ # @wxrb_require WXOSX
48
+ # @see Wx::App.get_mac_preferences_menu_itemid
49
+ def set_mac_preferences_menu_itemid(id) end
50
+ alias :mac_preferences_menu_itemid= :set_mac_preferences_menu_itemid
51
+
52
+ # Get the current menu item id for the Preferences menu item.
53
+ # Default is {Wx::ID_PREFERENCES}
54
+ # @return [Integer]
55
+ # @wxrb_require WXOSX
56
+ # @see Wx::App.set_mac_preferences_menu_itemid
57
+ def get_mac_preferences_menu_itemid; end
58
+ alias :mac_preferences_menu_itemid :get_mac_preferences_menu_itemid
59
+
60
+ # Set the menu item id for the Exit menu item.
61
+ # Default is {Wx::ID_EXIT}. Setting to {Wx::ID_NONE} will disable hiding the exit item. Standard item will still be added to Application menu.
62
+ # @param [Integer] id
63
+ # @wxrb_require WXOSX
64
+ # @see Wx::App.get_mac_exit_menu_itemid
65
+ def set_mac_exit_menu_itemid(id) end
66
+ alias :mac_exit_menu_itemid= :set_mac_exit_menu_itemid
67
+
68
+ # Get the current menu item id for the Exit menu item.
69
+ # Default is {Wx::ID_EXIT}
70
+ # @return [Integer]
71
+ # @wxrb_require WXOSX
72
+ # @see Wx::App.set_mac_exit_menu_itemid
73
+ def get_mac_exit_menu_itemid; end
74
+ alias :mac_exit_menu_itemid :get_mac_exit_menu_itemid
75
+
76
+ # Set the menu title for the Help menu.
77
+ # Default is '&Help'
78
+ # @param [String] title
79
+ # @wxrb_require WXOSX
80
+ # @see Wx::App.get_mac_help_menu_title
81
+ def set_mac_help_menu_title(title) end
82
+ alias :mac_help_menu_title= :set_mac_help_menu_title
83
+
84
+ # Get the current title for the Help menu.
85
+ # Default is '&Help'
86
+ # @return [String]
87
+ # @wxrb_require WXOSX
88
+ # @see Wx::App.set_mac_help_menu_title
89
+ def get_mac_help_menu_title; end
90
+ alias :mac_help_menu_title :get_mac_help_menu_title
91
+
92
+ # Set the menu title for the Window menu.
93
+ # Default is '&Window'
94
+ # @param [String] title
95
+ # @wxrb_require WXOSX
96
+ # @see Wx::App.get_mac_window_menu_title
97
+ def set_mac_window_menu_title(title) end
98
+ alias :mac_window_menu_title= :set_mac_window_menu_title
99
+
100
+ # Get the current title for the Window menu.
101
+ # Default is '&Window'
102
+ # @return [String]
103
+ # @wxrb_require WXOSX
104
+ # @see Wx::App.set_mac_window_menu_title
105
+ def get_mac_window_menu_title; end
106
+ alias :mac_window_menu_title :get_mac_window_menu_title
107
+
108
+ end
53
109
 
54
110
  end
55
111
 
data/lib/wx/doc/bitmap.rb CHANGED
@@ -14,6 +14,8 @@ module Wx
14
14
  # Default BitmapType for current platform. Actual value is platform dependent.
15
15
  CURSOR_DEFAULT_TYPE = Wx::BitmapType::BITMAP_TYPE_ANY
16
16
 
17
+ # @!group Art creation methods
18
+
17
19
  # Searches for an art file with basename 'name' and creates a Bitmap if found.
18
20
  # Raises an ArgumentError if not found.
19
21
  # Wx::ArtLocator::find_art is used to look up the art file using ::Kernel#caller_locations to
@@ -28,4 +30,6 @@ module Wx
28
30
  # @see Wx::ArtLocator::find_art
29
31
  def self.Bitmap(name, bmp_type = nil, art_path: nil, art_section: nil); end
30
32
 
33
+ # @!endgroup
34
+
31
35
  end
@@ -13,7 +13,7 @@ module Wx
13
13
  # it's single argument.
14
14
  # @param [Wx::Window] win window to draw on
15
15
  # @yieldparam [Wx::ClientDC] dc the ClientDC instance to paint on
16
- # @return [Object] result of the block
16
+ # @return [::Object] result of the block
17
17
  def self.draw_on(win) end
18
18
 
19
19
  end
@@ -26,7 +26,7 @@ module Wx
26
26
  # @note In wxRuby this method mostly exists to be consistent with the other DC classes. It is however recommended to use Wx::Window#paint instead.
27
27
  # @param [Wx::Window] win window to draw on
28
28
  # @yieldparam [Wx::PaintDC] dc the PaintDC instance to paint on
29
- # @return [Object] result of the block
29
+ # @return [::Object] result of the block
30
30
  def self.draw_on(win) end
31
31
 
32
32
  end
@@ -14,7 +14,7 @@ module Wx
14
14
 
15
15
  # Opens the global clipboard and passes the clipboard object to the block.
16
16
  # @yieldparam [Wx::Clipboard] clip the global clipboard object
17
- # @return [Object] block result
17
+ # @return [::Object] block result
18
18
  def self.open; end
19
19
 
20
20
  end
@@ -0,0 +1,12 @@
1
+ # :stopdoc:
2
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
3
+ #
4
+ # This software is released under the MIT license.
5
+ # :startdoc:
6
+
7
+
8
+ module Wx
9
+
10
+ TRANSPARENT_COLOUR = Wx::Colour.new(0, 0, 0, Wx::ALPHA_TRANSPARENT)
11
+
12
+ end
data/lib/wx/doc/const.rb CHANGED
@@ -71,8 +71,14 @@ module Wx
71
71
  TREE_LIST_CTRL_NAME_STR = 'wxTreeListCtrl'
72
72
  HTML_LIST_BOX_NAME_STR = 'htmlListBox'
73
73
  SIMPLE_HTML_LIST_BOX_NAME_STR = 'simpleHtmlListBox'
74
+ HTML_WINDOW_NAME_STR = 'htmlWindow'
74
75
  EDITABLE_LIST_BOX_NAME_STR = 'editableListBox'
75
76
  V_LIST_BOX_NAME_STR = 'wxVListBox'
77
+ ACTIVITY_INDICATOR_NAME_STR = 'activityindicator'
78
+ TIME_PICKER_CTRL_NAME_STR = 'timectrl'
79
+ DATE_PICKER_CTRL_NAME_STR = 'datectrl'
80
+ CALENDAR_NAME_STR = 'CalendarCtrl'
81
+ SPIN_BUTTON_NAME_STR = 'wxSpinButton'
76
82
 
77
83
  # wxMSW only
78
84
  MSW_HEADER_CTRL_NAME_STR = 'wxMSWHeaderCtrl'
@@ -81,4 +87,14 @@ module Wx
81
87
  PROPERTY_GRID_NAME_STR = 'wxPropertyGrid'
82
88
  STC_NAME_STR = 'stcwindow'
83
89
 
90
+ MEDIA_CTRL_NAME_STR = 'mediaCtrl'
91
+ SPIN_CTRL_NAME_STR = 'spinCtrl'
92
+ SPIN_CTRL_DOUBLE_NAME_STR = 'wxSpinCtrlDouble'
93
+ SPLITTER_WINDOW_NAME_STR = 'splitter'
94
+ TOOLBOOK_NAME_STR = 'toolbook'
95
+ TREEBOOK_NAME_STR = 'treebook'
96
+ SASH_WINDOW_NAME_STR = 'sashWindow'
97
+ SASH_LAYOUT_WINDOW_NAME_STR = 'layoutWindow'
98
+ SCROLLED_NAME_STR = 'SCROLLED_WINDOW'
99
+
84
100
  end
data/lib/wx/doc/cursor.rb CHANGED
@@ -7,6 +7,8 @@
7
7
 
8
8
  class Wx
9
9
 
10
+ # @!group Art creation methods
11
+
10
12
  # Searches for an art file with basename 'name' and creates a Cursor if found.
11
13
  # Raises an ArgumentError if not found.
12
14
  # Wx::ArtLocator::find_art is used to look up the art file using ::Kernel#caller_locations to
@@ -21,4 +23,6 @@ class Wx
21
23
  # @see Wx::ArtLocator::find_art
22
24
  def self.Cursor(name, bmp_type = nil, art_path: nil, art_section: nil); end
23
25
 
26
+ # @!endgroup
27
+
24
28
  end