wxruby3 0.9.7 → 1.0.0

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 (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