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
@@ -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
+ };