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
@@ -494,9 +494,10 @@ module WXRuby3
494
494
  when /The following event handler macros redirect.*(\{.*})/
495
495
  event_ref = $1
496
496
  "The following event-handler methods redirect the events to member method or handler blocks for #{event_ref} events."
497
- when /\AEVT_[A-Z]+/
498
- if event_list? && /\A(EVT_[_A-Z]+)\((.*,)\s+\w+\):(.*)/ =~ para
497
+ when /\AEVT_[_A-Z0-9]+/
498
+ if event_list? && /\A(EVT_[_A-Z0-9]+)\((.*,)\s+\w+\):(.*)/ =~ para
499
499
  evthnd_name = $1.downcase
500
+ docstr = $3.lstrip
500
501
  if override_spec = get_event_override(evthnd_name)
501
502
  evthnd_name, evt_type, evt_arity, evt_klass = override_spec
502
503
  idarg = case evt_arity
@@ -511,10 +512,9 @@ module WXRuby3
511
512
  else
512
513
  arglist = "#{$2} meth = nil, &block"
513
514
  end
514
- docstr = $3.lstrip
515
515
  package.event_docs[evthnd_name] = [arglist, docstr.dup] # register for eventlist doc gen
516
516
  "{Wx::EvtHandler\##{evthnd_name}}(#{arglist}): #{docstr}"
517
- elsif event_list? && /\A(EVT_[_A-Z]+)(\*)?\(\w+\):(.*)/ =~ para
517
+ elsif event_list? && /\A(EVT_[_A-Z0-9]+)(\*)?\(\w+\):(.*)/ =~ para
518
518
  wildcard = ($2 == '*')
519
519
  evthnd_name = $1.downcase
520
520
  arglist = "meth = nil, &block"
@@ -713,9 +713,9 @@ module WXRuby3
713
713
  gen_class_doc(fdoc) unless no_gen?(:classes)
714
714
  end
715
715
  package.all_modules.each do |_|
716
+ mod_indent -= 1
716
717
  fdoc.puts
717
718
  fdoc.iputs('end', mod_indent)
718
- mod_indent -= 1
719
719
  end
720
720
  end
721
721
  end
@@ -511,7 +511,7 @@ module WXRuby3
511
511
 
512
512
  def gen_interface_enum(fout, member, classdef)
513
513
  fout.puts " // from #{classdef.name}::#{member.name}"
514
- fout.puts " enum #{member.is_anonymous ? '' : member.name} {"
514
+ fout.puts " enum #{member.strong ? 'class ' : ''}#{member.is_anonymous ? '' : member.name} {"
515
515
  enum_size = member.items.size
516
516
  member.items.each_with_index do |e, i|
517
517
  fout.puts " #{e.name}#{(i+1)<enum_size ? ',' : ''}" unless e.ignored
@@ -233,6 +233,10 @@ module WXRuby3
233
233
  Director.Spec(pkg, 'wxPersistenceManager', requirements: %w[USE_CONFIG])
234
234
  Director.Spec(pkg, 'wxPersistentObject', requirements: %w[USE_CONFIG])
235
235
  Director.Spec(pkg, 'wxPersistentWindow', requirements: %w[USE_CONFIG])
236
+ Director.Spec(pkg, 'wxSecretStore', requirements: %w[USE_SECRETSTORE])
237
+ Director.Spec(pkg, 'wxDCOverlay', director: Director::DerivedDC)
238
+ Director.Spec(pkg, 'wxGeometry', requirements: %w[USE_GEOMETRY])
239
+ Director.Spec(pkg, 'wxAffineMatrix2D', requirements: %w[USE_GEOMETRY])
236
240
  }
237
241
 
238
242
  Director.Package('Wx::PRT', 'USE_PRINTING_ARCHITECTURE') do |pkg|
@@ -264,8 +264,13 @@ module WXRuby3
264
264
  when Extractor::EnumDef
265
265
  item.items.each { |e| enumerators["#{rb_wx_name(item.name)}_#{e.name}"] = item } if item.is_type
266
266
  when Extractor::ClassDef
267
- item.items.select { |itm| Extractor::EnumDef === itm }.each do |enum|
268
- enum.items.each { |e| enumerators[rb_wx_name(e.name)] = enum } if enum.is_type
267
+ item.items.select { |itm| Extractor::EnumDef === itm && itm.is_type }.each do |enum|
268
+ if enum.strong
269
+ enum_pfx = rb_wx_name(enum.name)
270
+ enum.items.each { |e| enumerators["#{enum_pfx}_#{rb_wx_name(e.name)}"] = enum }
271
+ else
272
+ enum.items.each { |e| enumerators[rb_wx_name(e.name)] = enum }
273
+ end
269
274
  end
270
275
  end
271
276
  end
@@ -295,9 +300,25 @@ module WXRuby3
295
300
  line.sub!(/\"Wx#{core_name}::wx#{$1}/, "\"#{package.fullname}::#{$1}")
296
301
  end
297
302
 
303
+ # check for default reference value initializations based on temporary objects
304
+ # (prevent dangling references)
305
+ if line =~ /^(\s+)(wx\w+)\s+const\s+\&(\w+_defvalue)\s+=\s+(.*);$/
306
+
307
+ def_pfx = $1
308
+ def_type = $2
309
+ def_var = $3
310
+ def_val = $4.strip
311
+ if def_type == 'wxString'
312
+ if def_val =~ /(wxString|_|wxGetTranslation)?\(?\"[^\"]*\"\)?/
313
+ line = "#{def_pfx}#{def_type} #{def_var} = #{def_val};"
314
+ end
315
+ elsif def_val =~ /^#{def_type}\(.*\)/
316
+ line = "#{def_pfx}#{def_type} #{def_var} = #{def_val};"
317
+ end
318
+
298
319
  # at the top of our Init_ function, make sure we only initialize
299
320
  # ourselves once
300
- if /void\s+Init_(wx|Wx)#{core_name}\(/ =~ line
321
+ elsif /void\s+Init_(wx|Wx)#{core_name}\(/ =~ line
301
322
  line += "\n static bool initialized;\n"
302
323
  line += " if(initialized) return;\n"
303
324
  line += " initialized = true;\n"
@@ -262,6 +262,16 @@ module WXRuby3
262
262
 
263
263
  end
264
264
 
265
+ # output typemaps for common value objects like wxPoint, wxSize, wxRect and wxRealPoint,
266
+ # making sure to ALWAYS create managed copies
267
+ %w[Point Size Rect RealPoint].each do |klass|
268
+ map "const wx#{klass}&", "const wx#{klass}*", as: "Wx::#{klass}" do
269
+ map_out code: <<~__CODE
270
+ $result = SWIG_NewPointerObj((new wx#{klass}(*static_cast< const wx#{klass}* >($1))), SWIGTYPE_p_wx#{klass}, SWIG_POINTER_OWN);
271
+ __CODE
272
+ end
273
+ end
274
+
265
275
  # Integer <> wxItemKind type mappings
266
276
 
267
277
  map 'wxItemKind' => 'Integer' do
@@ -47,7 +47,8 @@ module WXRuby3
47
47
  }
48
48
  else
49
49
  {
50
- rb_raise(rb_eTypeError, "Wrong type for wxPoint parameter %i", i);
50
+ VALUE str = rb_inspect(rb_item);
51
+ rb_raise(rb_eTypeError, "Wrong type for wxPoint parameter %i (%s)", i, StringValuePtr(str));
51
52
  }
52
53
  }
53
54
  }
@@ -101,7 +102,12 @@ module WXRuby3
101
102
  // array of all the points
102
103
  VALUE all_points = rb_funcall($input, rb_intern("flatten"), 0);
103
104
  point_arr = std::make_unique<wxPoint[]>(RARRAY_LEN(all_points));
104
- wxRuby_PointArrayRubyToC(all_points, point_arr.get());
105
+ wxPoint* point_ptr = point_arr.get();
106
+ for ( int i = 0; i < RARRAY_LEN($input); i++ )
107
+ {
108
+ wxRuby_PointArrayRubyToC(rb_ary_entry($input, i), point_ptr);
109
+ point_ptr += count_arr[i];
110
+ }
105
111
  $3 = point_arr.get();
106
112
  }
107
113
  __CODE
@@ -23,6 +23,23 @@ module WXRuby3
23
23
  # ranges of text selections with a special class. It doesn't add
24
24
  # anything much that Ruby's own range class doesn't, so deal with using
25
25
  # typemaps
26
+ map 'const wxRichTextRange&' => 'Range' do
27
+
28
+ map_in temp: 'wxRichTextRange rng', code: <<~__CODE
29
+ int start = NUM2INT( rb_funcall( $input, rb_intern("begin"), 0));
30
+ int end = NUM2INT( rb_funcall( $input, rb_intern("end"), 0));
31
+ rng = wxRichTextRange(start, end);
32
+ $1 = &rng;
33
+ __CODE
34
+
35
+ map_typecheck precedence: 1, code: '$1 = ( CLASS_OF($input) == rb_cRange );'
36
+
37
+ map_out code: '$result = rb_range_new (LONG2NUM($1->GetStart()),LONG2NUM($1->GetEnd()),0);'
38
+
39
+ map_directorin code: '$input = rb_range_new (LONG2NUM($1.GetStart()),LONG2NUM($1.GetEnd()),0);'
40
+
41
+ end
42
+
26
43
  map 'wxRichTextRange&' => 'Range' do
27
44
 
28
45
  map_in temp: 'wxRichTextRange rng', code: <<~__CODE
data/rakelib/prepost.rake CHANGED
@@ -29,14 +29,21 @@ namespace 'wxruby' do
29
29
  $stdout.puts 'done!' if WXRuby3.config.run_silent?
30
30
  # cleanup
31
31
  rm_rf('rakelib', verbose: !WXRuby3.config.run_silent?)
32
+ rm_f('Rakefile', verbose: !WXRuby3.config.run_silent?)
33
+ rm_f('ext/mkrf_conf_ext.rb', verbose: !WXRuby3.config.run_silent?)
32
34
  rm_rf('ext/wxruby3', verbose: !WXRuby3.config.run_silent?)
33
35
  WXRuby3.config.cleanup_bootstrap
34
36
  File.open(File.join(WXRuby3::Config.wxruby_root, 'ext', 'wxruby.setup.done'), 'w') { |f| f << '1' }
35
37
  end
36
38
 
37
- task :bingem => 'gem:install' do
39
+ task :binpkg => 'gem:install' do
38
40
  # cleanup
39
41
  rm_rf('rakelib')
42
+ rm_f('Rakefile')
43
+ rm_f('ext/mkrf_conf_ext.rb')
44
+ rm_rf('ext/wxruby3')
45
+ rm_f('*.pkg')
46
+ rm_f('*.sha')
40
47
  File.open(File.join(WXRuby3::Config.wxruby_root, 'ext', 'wxruby.setup.done'), 'w') { |f| f << '1' }
41
48
  end
42
49
 
@@ -90,4 +90,8 @@ div.wxrb-logo table td {
90
90
 
91
91
  #toc {
92
92
  position: fixed;
93
+ overflow-y: scroll;
94
+ overflow-x: hidden;
95
+ top: 1em;
96
+ bottom: 0;
93
97
  }
@@ -4,16 +4,16 @@ def init
4
4
  # It seems YARD messes things up so that a lot of classes, modules and constants are not properly
5
5
  # registered in their enclosing namespaces.
6
6
  # This hack makes sure that if that is the case we fix that here.
7
- all_objects = Registry.all(:class, :constant, :module)
7
+ all_objects = Registry.all(:class, :constant, :module, :method)
8
8
  all_objects.each do |c|
9
9
  if (ns = c.namespace)
10
10
  unless ns.children.any? { |nsc| nsc.path == c.path }
11
- ns.children << c # class/module/constant missing from child list of enclosing namespace -> add here
11
+ ns.children << c # class/module/constant/method missing from child list of enclosing namespace -> add here
12
12
  end
13
13
  end
14
14
  if (ns = Registry[c.namespace.path])
15
15
  unless ns.children.any? { |nsc| nsc.path == c.path }
16
- ns.children << c # class/module/constant missing from child list of enclosing namespace -> add here
16
+ ns.children << c # class/module/constant/method missing from child list of enclosing namespace -> add here
17
17
  end
18
18
  end
19
19
  end
@@ -32,25 +32,26 @@ module Wizard
32
32
  evt_menu Wx::ID_EXIT, :on_quit
33
33
  evt_menu Wx::ID_ABOUT, :on_about
34
34
 
35
- w = Wx::Wizard.new(self, :title => 'The WxRuby Wizard')
36
- p1 = Wx::WizardPageSimple.new(w)
37
- s = Wx::StaticText.new(p1, :label => 'This is the first page')
38
-
39
- p2 = Wx::WizardPageSimple.new(w, p1)
40
- p1.set_next(p2)
41
- s = Wx::StaticText.new(p2, :label => 'This is the second page')
42
-
43
- p3 = Wx::WizardPageSimple.new(w, p2)
44
- p2.set_next(p3)
45
- s = Wx::StaticText.new(p3, :label => 'This is the final page')
46
-
47
- evt_wizard_page_changed(w) { p "page changed" }
48
- evt_wizard_page_changing(w) { p "page changing" }
49
- evt_wizard_help(w) { p "wizard help" }
50
- evt_wizard_cancel(w) { p "wizard cancelled" }
51
- evt_wizard_finished(w) { p "wizard finished" }
52
-
53
- w.run_wizard(p1)
35
+ Wx.Wizard(self, :title => 'The WxRuby Wizard') do |w|
36
+ p1 = Wx::WizardPageSimple.new(w)
37
+ s = Wx::StaticText.new(p1, :label => 'This is the first page')
38
+
39
+ p2 = Wx::WizardPageSimple.new(w, p1)
40
+ p1.set_next(p2)
41
+ s = Wx::StaticText.new(p2, :label => 'This is the second page')
42
+
43
+ p3 = Wx::WizardPageSimple.new(w, p2)
44
+ p2.set_next(p3)
45
+ s = Wx::StaticText.new(p3, :label => 'This is the final page')
46
+
47
+ evt_wizard_page_changed(w) { p "page changed" }
48
+ evt_wizard_page_changing(w) { p "page changing" }
49
+ evt_wizard_help(w) { p "wizard help" }
50
+ evt_wizard_cancel(w) { p "wizard cancelled" }
51
+ evt_wizard_finished(w) { p "wizard finished" }
52
+
53
+ w.run_wizard(p1)
54
+ end
54
55
  end
55
56
 
56
57
  def on_quit
@@ -0,0 +1,42 @@
1
+ /* XPM */
2
+ static const char *const smile_xpm[] = {
3
+ /* columns rows colors chars-per-pixel */
4
+ "32 32 4 1",
5
+ ". c Black",
6
+ "X c #FFFF00",
7
+ " c None",
8
+ "o c #C00000",
9
+ /* pixels */
10
+ " ",
11
+ " ..... ",
12
+ " ...XXXXX... ",
13
+ " ..XXXXXXXXXXX.. ",
14
+ " .XXXXXXXXXXXXXXX. ",
15
+ " ..XXXXXXXXXXXXXXXXX.. ",
16
+ " .XXXXXXXXXXXXXXXXXXXX. ",
17
+ " .XXXXXX.XXXXXXX.XXXXXX. ",
18
+ " .XXXXXX.X.XXXXX.X.XXXXXX. ",
19
+ " .XXXXX.XXX.XXX.XXX.XXXXXX. ",
20
+ " .XXXXX.XXXXXXXXXXXXX.XXXXX. ",
21
+ " .XXXXXXXX.XXXXXXX.XXXXXXXX. ",
22
+ " .XXXXXXXX.XXXXXXX.XXXXXXXX. ",
23
+ " .XXXXXXXXXXXXXXXXXXXXXXXXXXX. ",
24
+ " .XXXXXXXXXXXXXXXXXXXXXXXXXXX. ",
25
+ " .XXXXXXXXXXXXXXXXXXXXXXXXXXX. ",
26
+ " .XXXXXXXXXXXXXXXXXXXXXXXXXXX. ",
27
+ " .XXXXXXX.XXXXXXXXXXX.XXXXXXX. ",
28
+ " .XXXXXX...XXXXXXX...XXXXXX. ",
29
+ " .XXXXXX.oo..XXX..oo.XXXXXX. ",
30
+ " .XXXXXXX.ooo...ooo.XXXXXXX. ",
31
+ " .XXXXXXX.ooooooo.XXXXXXXX. ",
32
+ " .XXXXXXXX..ooo..XXXXXXXX. ",
33
+ " .XXXXXXXXX...XXXXXXXXX. ",
34
+ " .XXXXXXXXXXXXXXXXXXXX. ",
35
+ " ..XXXXXXXXXXXXXXXXX.. ",
36
+ " .XXXXXXXXXXXXXXX. ",
37
+ " ..XXXXXXXXXXX.. ",
38
+ " ...XXXXX... ",
39
+ " ..... ",
40
+ " ",
41
+ " "
42
+ };