wxruby3 0.9.0.pre.beta.10-x64-mingw-ucrt → 0.9.0.pre.beta.13-x64-mingw-ucrt

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 (283) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +85 -0
  3. data/README.md +2 -0
  4. data/assets/logo.png +0 -0
  5. data/assets/logo.svg +170 -0
  6. data/assets/logo.xcf +0 -0
  7. data/ext/wxbase32u_gcc_custom.dll +0 -0
  8. data/ext/wxbase32u_net_gcc_custom.dll +0 -0
  9. data/ext/wxbase32u_xml_gcc_custom.dll +0 -0
  10. data/ext/wxmsw32u_aui_gcc_custom.dll +0 -0
  11. data/ext/wxmsw32u_core_gcc_custom.dll +0 -0
  12. data/ext/wxmsw32u_gl_gcc_custom.dll +0 -0
  13. data/ext/wxmsw32u_html_gcc_custom.dll +0 -0
  14. data/ext/wxmsw32u_media_gcc_custom.dll +0 -0
  15. data/ext/wxmsw32u_propgrid_gcc_custom.dll +0 -0
  16. data/ext/wxmsw32u_qa_gcc_custom.dll +0 -0
  17. data/ext/wxmsw32u_ribbon_gcc_custom.dll +0 -0
  18. data/ext/wxmsw32u_richtext_gcc_custom.dll +0 -0
  19. data/ext/wxmsw32u_stc_gcc_custom.dll +0 -0
  20. data/ext/wxmsw32u_webview_gcc_custom.dll +0 -0
  21. data/ext/wxmsw32u_xrc_gcc_custom.dll +0 -0
  22. data/lib/wx/core/array_ext.rb +26 -0
  23. data/lib/wx/core/art_locator.rb +92 -0
  24. data/lib/wx/core/artprovider.rb +1 -1
  25. data/lib/wx/core/bitmap.rb +90 -53
  26. data/lib/wx/core/cursor.rb +12 -0
  27. data/lib/wx/core/data_object.rb +74 -6
  28. data/lib/wx/core/dataformat.rb +3 -1
  29. data/lib/wx/core/dc.rb +76 -52
  30. data/lib/wx/core/enum.rb +4 -0
  31. data/lib/wx/core/event.rb +38 -5
  32. data/lib/wx/core/events/evt_list.rb +3 -2
  33. data/lib/wx/core/evthandler.rb +64 -23
  34. data/lib/wx/core/icon.rb +50 -35
  35. data/lib/wx/core/id_helper.rb +32 -0
  36. data/lib/wx/core/image.rb +63 -53
  37. data/lib/wx/core/point.rb +35 -10
  38. data/lib/wx/core/real_point.rb +35 -10
  39. data/lib/wx/core/rect.rb +44 -9
  40. data/lib/wx/core/region_iterator.rb +37 -0
  41. data/lib/wx/core/size.rb +32 -5
  42. data/lib/wx/core/window.rb +8 -31
  43. data/lib/wx/doc/array_ext.rb +27 -0
  44. data/lib/wx/doc/art_locator.rb +57 -0
  45. data/lib/wx/doc/bitmap.rb +27 -0
  46. data/lib/wx/doc/clipboard.rb +12 -0
  47. data/lib/wx/doc/const.rb +77 -0
  48. data/lib/wx/doc/cursor.rb +16 -0
  49. data/lib/wx/doc/data_object.rb +103 -0
  50. data/lib/wx/doc/dc.rb +63 -46
  51. data/lib/wx/doc/event.rb +24 -0
  52. data/lib/wx/doc/events.rb +14 -0
  53. data/lib/wx/doc/evthandler.rb +24 -3
  54. data/lib/wx/doc/extra/00_starting.md +1 -1
  55. data/lib/wx/doc/extra/06_geometry.md +10 -4
  56. data/lib/wx/doc/extra/10_art.md +105 -0
  57. data/lib/wx/doc/gc_dc.rb +21 -0
  58. data/lib/wx/doc/gdi_common.rb +155 -6
  59. data/lib/wx/doc/gen/about_dialog_info.rb +1 -4
  60. data/lib/wx/doc/gen/animation.rb +3 -3
  61. data/lib/wx/doc/gen/animation_ctrl.rb +4 -4
  62. data/lib/wx/doc/gen/any_button.rb +1 -1
  63. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +1 -1
  64. data/lib/wx/doc/gen/aui/aui_manager.rb +2 -2
  65. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +3 -3
  66. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +3 -3
  67. data/lib/wx/doc/gen/aui/aui_notebook.rb +2 -2
  68. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +6 -6
  69. data/lib/wx/doc/gen/bitmap.rb +1 -1
  70. data/lib/wx/doc/gen/bitmap_button.rb +2 -2
  71. data/lib/wx/doc/gen/book_ctrl_base.rb +4 -4
  72. data/lib/wx/doc/gen/brush.rb +1 -1
  73. data/lib/wx/doc/gen/button.rb +2 -2
  74. data/lib/wx/doc/gen/calendar_ctrl.rb +3 -3
  75. data/lib/wx/doc/gen/calendar_date_attr.rb +1 -1
  76. data/lib/wx/doc/gen/check_box.rb +2 -2
  77. data/lib/wx/doc/gen/check_list_box.rb +3 -3
  78. data/lib/wx/doc/gen/choice.rb +2 -2
  79. data/lib/wx/doc/gen/choicebook.rb +2 -2
  80. data/lib/wx/doc/gen/collapsible_pane.rb +2 -2
  81. data/lib/wx/doc/gen/colour.rb +1 -3
  82. data/lib/wx/doc/gen/colour_dialog.rb +1 -2
  83. data/lib/wx/doc/gen/colour_picker_ctrl.rb +2 -2
  84. data/lib/wx/doc/gen/combo_box.rb +4 -4
  85. data/lib/wx/doc/gen/context_help_button.rb +1 -1
  86. data/lib/wx/doc/gen/control.rb +3 -3
  87. data/lib/wx/doc/gen/core.rb +2 -2
  88. data/lib/wx/doc/gen/data_format.rb +1 -1
  89. data/lib/wx/doc/gen/data_object.rb +6 -26
  90. data/lib/wx/doc/gen/data_object_simple_base.rb +10 -0
  91. data/lib/wx/doc/gen/date_picker_ctrl.rb +2 -2
  92. data/lib/wx/doc/gen/dc.rb +9 -9
  93. data/lib/wx/doc/gen/defs.rb +0 -4
  94. data/lib/wx/doc/gen/dialog.rb +3 -3
  95. data/lib/wx/doc/gen/dir_dialog.rb +2 -4
  96. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +2 -2
  97. data/lib/wx/doc/gen/dir_picker_ctrl.rb +2 -2
  98. data/lib/wx/doc/gen/drag_drop.rb +13 -1
  99. data/lib/wx/doc/gen/editable_list_box.rb +2 -2
  100. data/lib/wx/doc/gen/event.rb +0 -1
  101. data/lib/wx/doc/gen/event_list.rb +18 -16
  102. data/lib/wx/doc/gen/events.rb +87 -2
  103. data/lib/wx/doc/gen/ext_help_controller.rb +2 -2
  104. data/lib/wx/doc/gen/file_dialog.rb +1 -1
  105. data/lib/wx/doc/gen/file_picker_ctrl.rb +2 -2
  106. data/lib/wx/doc/gen/font.rb +6 -6
  107. data/lib/wx/doc/gen/font_dialog.rb +1 -2
  108. data/lib/wx/doc/gen/font_picker_ctrl.rb +2 -2
  109. data/lib/wx/doc/gen/frame.rb +5 -5
  110. data/lib/wx/doc/gen/fs_file.rb +2 -2
  111. data/lib/wx/doc/gen/gauge.rb +2 -2
  112. data/lib/wx/doc/gen/gdi_common.rb +18 -21
  113. data/lib/wx/doc/gen/generic_dir_ctrl.rb +2 -2
  114. data/lib/wx/doc/gen/graphics_context.rb +4 -4
  115. data/lib/wx/doc/gen/graphics_object.rb +2 -2
  116. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +1 -1
  117. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +1 -1
  118. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +1 -1
  119. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +1 -1
  120. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +1 -1
  121. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +1 -1
  122. data/lib/wx/doc/gen/grid/grid_ctrl.rb +7 -7
  123. data/lib/wx/doc/gen/help_controller.rb +1 -1
  124. data/lib/wx/doc/gen/html/html_cell.rb +4 -4
  125. data/lib/wx/doc/gen/html/html_easy_printing.rb +6 -6
  126. data/lib/wx/doc/gen/html/html_help_controller.rb +6 -6
  127. data/lib/wx/doc/gen/html/html_help_frame.rb +2 -2
  128. data/lib/wx/doc/gen/html/html_help_window.rb +6 -6
  129. data/lib/wx/doc/gen/html/html_list_box.rb +6 -6
  130. data/lib/wx/doc/gen/html/html_printout.rb +4 -4
  131. data/lib/wx/doc/gen/html/html_window.rb +4 -4
  132. data/lib/wx/doc/gen/icon.rb +6 -6
  133. data/lib/wx/doc/gen/image.rb +7 -7
  134. data/lib/wx/doc/gen/list_box.rb +4 -4
  135. data/lib/wx/doc/gen/list_ctrl.rb +5 -5
  136. data/lib/wx/doc/gen/listbook.rb +2 -2
  137. data/lib/wx/doc/gen/locale.rb +8 -8
  138. data/lib/wx/doc/gen/log.rb +2 -2
  139. data/lib/wx/doc/gen/mdi_frame.rb +5 -5
  140. data/lib/wx/doc/gen/media_ctrl.rb +4 -4
  141. data/lib/wx/doc/gen/menu.rb +12 -12
  142. data/lib/wx/doc/gen/menu_item.rb +1 -1
  143. data/lib/wx/doc/gen/message_dialog.rb +2 -4
  144. data/lib/wx/doc/gen/mini_frame.rb +2 -2
  145. data/lib/wx/doc/gen/notebook.rb +3 -3
  146. data/lib/wx/doc/gen/number_entry_dialog.rb +0 -1
  147. data/lib/wx/doc/gen/object.rb +0 -1
  148. data/lib/wx/doc/gen/panel.rb +2 -2
  149. data/lib/wx/doc/gen/pen.rb +2 -2
  150. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +1 -1
  151. data/lib/wx/doc/gen/pg/pg_cell.rb +1 -1
  152. data/lib/wx/doc/gen/pg/pg_properties.rb +20 -20
  153. data/lib/wx/doc/gen/pg/pg_property.rb +12 -12
  154. data/lib/wx/doc/gen/pg/property_grid.rb +3 -3
  155. data/lib/wx/doc/gen/pg/property_grid_interface.rb +14 -14
  156. data/lib/wx/doc/gen/pg/property_grid_manager.rb +3 -3
  157. data/lib/wx/doc/gen/pg/property_grid_page.rb +2 -2
  158. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +2 -2
  159. data/lib/wx/doc/gen/popup_window.rb +3 -3
  160. data/lib/wx/doc/gen/property_sheet_dialog.rb +3 -3
  161. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +1 -1
  162. data/lib/wx/doc/gen/prt/printer.rb +1 -1
  163. data/lib/wx/doc/gen/radio_box.rb +4 -4
  164. data/lib/wx/doc/gen/radio_button.rb +2 -2
  165. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +2 -2
  166. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +12 -12
  167. data/lib/wx/doc/gen/rbn/ribbon_control.rb +1 -1
  168. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +2 -2
  169. data/lib/wx/doc/gen/rbn/ribbon_page.rb +2 -2
  170. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +2 -2
  171. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +11 -11
  172. data/lib/wx/doc/gen/region.rb +1 -1
  173. data/lib/wx/doc/gen/region_iterator.rb +76 -0
  174. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +10 -10
  175. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +19 -19
  176. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +2 -2
  177. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +4 -4
  178. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +1 -1
  179. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +6 -6
  180. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +1 -1
  181. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +2 -2
  182. data/lib/wx/doc/gen/sash_event.rb +1 -1
  183. data/lib/wx/doc/gen/sash_layout_window.rb +2 -2
  184. data/lib/wx/doc/gen/sash_window.rb +1 -1
  185. data/lib/wx/doc/gen/scaled_dc.rb +10 -0
  186. data/lib/wx/doc/gen/scroll_bar.rb +150 -0
  187. data/lib/wx/doc/gen/scrolled_canvas.rb +2 -2
  188. data/lib/wx/doc/gen/scrolled_control.rb +2 -2
  189. data/lib/wx/doc/gen/scrolled_window.rb +2 -2
  190. data/lib/wx/doc/gen/simplebook.rb +2 -2
  191. data/lib/wx/doc/gen/sizer.rb +3 -3
  192. data/lib/wx/doc/gen/slider.rb +2 -2
  193. data/lib/wx/doc/gen/spin_button.rb +2 -2
  194. data/lib/wx/doc/gen/spin_ctrl.rb +2 -2
  195. data/lib/wx/doc/gen/splash_screen.rb +1 -1
  196. data/lib/wx/doc/gen/splitter_window.rb +2 -2
  197. data/lib/wx/doc/gen/static_bitmap.rb +2 -2
  198. data/lib/wx/doc/gen/static_box.rb +4 -4
  199. data/lib/wx/doc/gen/static_box_sizer.rb +1 -1
  200. data/lib/wx/doc/gen/static_line.rb +2 -2
  201. data/lib/wx/doc/gen/static_text.rb +2 -2
  202. data/lib/wx/doc/gen/status_bar.rb +2 -2
  203. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +3 -3
  204. data/lib/wx/doc/gen/task_bar_icon.rb +2 -2
  205. data/lib/wx/doc/gen/text_attr.rb +3 -3
  206. data/lib/wx/doc/gen/text_ctrl.rb +3 -3
  207. data/lib/wx/doc/gen/text_entry_dialog.rb +6 -8
  208. data/lib/wx/doc/gen/text_validator.rb +1 -1
  209. data/lib/wx/doc/gen/time_picker_ctrl.rb +2 -2
  210. data/lib/wx/doc/gen/tip_provider.rb +1 -3
  211. data/lib/wx/doc/gen/toggle_button.rb +2 -2
  212. data/lib/wx/doc/gen/tool_bar.rb +10 -10
  213. data/lib/wx/doc/gen/toolbook.rb +2 -2
  214. data/lib/wx/doc/gen/top_level_window.rb +4 -4
  215. data/lib/wx/doc/gen/tree_ctrl.rb +4 -4
  216. data/lib/wx/doc/gen/treebook.rb +2 -2
  217. data/lib/wx/doc/gen/utils.rb +5 -42
  218. data/lib/wx/doc/gen/v_list_box.rb +2 -2
  219. data/lib/wx/doc/gen/v_scrolled_window.rb +2 -2
  220. data/lib/wx/doc/gen/variant.rb +10 -10
  221. data/lib/wx/doc/gen/window.rb +9 -14
  222. data/lib/wx/doc/gen/wizard.rb +2 -2
  223. data/lib/wx/doc/gen/wizard_event.rb +1 -1
  224. data/lib/wx/doc/gen/xml_node.rb +2 -2
  225. data/lib/wx/doc/gen/xml_resource.rb +3 -3
  226. data/lib/wx/doc/graphics_context.rb +42 -0
  227. data/lib/wx/doc/icon.rb +18 -0
  228. data/lib/wx/doc/id_helper.rb +25 -0
  229. data/lib/wx/doc/image.rb +33 -0
  230. data/lib/wx/doc/region_iterator.rb +31 -0
  231. data/lib/wx/doc/scaled_dc.rb +17 -0
  232. data/lib/wx/doc/window.rb +18 -0
  233. data/lib/wx/global_const.rb +4 -3
  234. data/lib/wx/version.rb +1 -1
  235. data/lib/wx/wxruby/cmd/sampler.rb +3 -21
  236. data/lib/wxruby_aui.so +0 -0
  237. data/lib/wxruby_core.so +0 -0
  238. data/lib/wxruby_grid.so +0 -0
  239. data/lib/wxruby_html.so +0 -0
  240. data/lib/wxruby_pg.so +0 -0
  241. data/lib/wxruby_prt.so +0 -0
  242. data/lib/wxruby_rbn.so +0 -0
  243. data/lib/wxruby_rtc.so +0 -0
  244. data/lib/wxruby_stc.so +0 -0
  245. data/rakelib/lib/config.rb +4 -4
  246. data/samples/art/wxruby-128x128.png +0 -0
  247. data/samples/art/wxruby-256x256.png +0 -0
  248. data/samples/art/wxruby-64x64.png +0 -0
  249. data/samples/art/wxruby.ico +0 -0
  250. data/samples/art/wxruby.png +0 -0
  251. data/samples/drawing/graphics_drawing.rb +1 -2
  252. data/samples/propgrid/propgrid.rb +65 -65
  253. data/samples/sample.xpm +246 -470
  254. data/samples/treectrl/treectrl.rb +1 -1
  255. data/tests/art/my_art/sample.xpm +251 -0
  256. data/tests/art/sample3.xpm +251 -0
  257. data/tests/art/test_art/bitmap/sample.xpm +251 -0
  258. data/tests/art/test_art/bitmap/wxruby.bmp +0 -0
  259. data/tests/art/test_art/bitmap/wxruby.png +0 -0
  260. data/tests/art/test_art/bitmap/wxruby.xpm +251 -0
  261. data/tests/art/test_art/cursor/wxruby.bmp +0 -0
  262. data/tests/art/test_art/icon/sample.xpm +251 -0
  263. data/tests/art/test_art/icon/wxruby.ico +0 -0
  264. data/tests/art/test_art/icon/wxruby.png +0 -0
  265. data/tests/art/test_art/image/sample.xpm +251 -0
  266. data/tests/art/test_art/image/wxruby.jpg +0 -0
  267. data/tests/art/test_art/image/wxruby.png +0 -0
  268. data/tests/art/test_art/sample2.xpm +251 -0
  269. data/tests/lib/wxapp_runner.rb +64 -0
  270. data/tests/test_art.rb +91 -0
  271. data/tests/test_basic.rb +0 -5
  272. data/tests/test_clipboard.rb +149 -17
  273. data/tests/test_dc.rb +70 -0
  274. data/tests/test_dialog.rb +2 -13
  275. data/tests/test_event_handling.rb +2 -13
  276. data/tests/test_events.rb +14 -6
  277. data/tests/test_geometry.rb +67 -17
  278. data/tests/test_intl.rb +2 -15
  279. data/tests/test_item_data.rb +2 -15
  280. data/tests/test_variant.rb +1 -15
  281. data/tests/testapp.rb +0 -5
  282. data/tests/testapp_noframe.rb +0 -5
  283. metadata +55 -3
@@ -1,10 +1,78 @@
1
- # Provide some default implementations of these to make life easier
2
- class Wx::DataObject
3
- def get_preferred_format(direction)
4
- get_all_formats(direction).first
1
+
2
+ module Wx
3
+
4
+ # Provide some default implementations of these to make life easier
5
+ class DataObject
6
+ def get_preferred_format(direction)
7
+ get_all_formats(direction).first
8
+ end
9
+
10
+ def get_format_count(direction)
11
+ get_all_formats(direction).size
12
+ end
5
13
  end
6
14
 
7
- def get_format_count(direction)
8
- get_all_formats(direction).size
15
+ class DataObjectSimple
16
+
17
+ # implement the overloads which do not require the format arg
18
+ # using pure Ruby
19
+
20
+ wx_get_data_size = instance_method :get_data_size
21
+ define_method :get_data_size do |format = nil|
22
+ wx_get_data_size.bind(self).call(format || self.get_format)
23
+ end
24
+
25
+ wx_get_data_here = instance_method :get_data_here
26
+ define_method :get_data_here do |format = nil|
27
+ wx_get_data_here.bind(self).call(format || self.get_format)
28
+ end
29
+
30
+ wx_set_data = instance_method :set_data
31
+ define_method :set_data do |*args|
32
+ if args.size>1
33
+ format, buf = args
34
+ else
35
+ format = nil
36
+ buf = args.first
37
+ end
38
+ wx_set_data.bind(self).call(format || self.get_format, buf)
39
+ end
40
+
9
41
  end
42
+
43
+ class DataObjectSimpleBase
44
+
45
+ # implement these in pure Ruby for optimization
46
+ def get_data_size(*)
47
+ self._get_data_size
48
+ end
49
+ def get_data_here(*)
50
+ self._get_data
51
+ end
52
+
53
+ def set_data(*args)
54
+ if args.size>1
55
+ _, buf = args
56
+ else
57
+ buf = args.first
58
+ end
59
+ self._set_data(buf)
60
+ end
61
+
62
+ def _get_data_size
63
+ (_get_data || '').bytesize
64
+ end
65
+ protected :_get_data_size
66
+
67
+ end
68
+
69
+ class TextDataObject
70
+
71
+ # override this to loose the extra terminating 0 we otherwise get
72
+ def get_data_here(*)
73
+ self.get_text
74
+ end
75
+
76
+ end
77
+
10
78
  end
@@ -22,5 +22,7 @@ module Wx
22
22
  end
23
23
  DF_FILENAME = DataFormat.new( Wx::DataFormatId::DF_FILENAME )
24
24
  DF_UNICODETEXT = DataFormat.new( Wx::DataFormatId::DF_UNICODETEXT )
25
- # DF_HTML is only supported on Windows + MSVC, so don't offer it
25
+ if Wx.has_feature?(:USE_HTML) && Wx::WXWIDGETS_VERSION >= '3.3'
26
+ DF_HTML = DataFormat.new( Wx::DataFormatId::DF_HTML )
27
+ end
26
28
  end
data/lib/wx/core/dc.rb CHANGED
@@ -1,68 +1,92 @@
1
- # Class for drawing primitives and bitmaps on various outputs (screen, paper)
2
- class Wx::DC
3
- # provide Ruby-style convenience methods supporting wxDCxxxChanger-like functionality
4
1
 
5
- def with_brush(brush)
6
- begin
7
- old_brush = self.brush
8
- self.brush = brush
9
- yield(self) if block_given?
10
- ensure
11
- self.brush = old_brush
2
+ module Wx
3
+ # Class for drawing primitives and bitmaps on various outputs (screen, paper)
4
+ class DC
5
+ # provide Ruby-style convenience methods supporting wxDCxxxChanger-like functionality
6
+
7
+ def with_brush(brush)
8
+ begin
9
+ old_brush = self.brush
10
+ self.brush = brush
11
+ yield(self) if block_given?
12
+ ensure
13
+ self.brush = old_brush
14
+ end
12
15
  end
13
- end
14
16
 
15
- def with_pen(pen)
16
- begin
17
- old_pen = self.pen
18
- self.pen = pen
19
- yield(self) if block_given?
20
- ensure
21
- self.pen = old_pen
17
+ def with_pen(pen)
18
+ begin
19
+ old_pen = self.pen
20
+ self.pen = pen
21
+ yield(self) if block_given?
22
+ ensure
23
+ self.pen = old_pen
24
+ end
22
25
  end
23
- end
24
26
 
25
- def with_font(font)
26
- begin
27
- old_font = self.font
28
- self.font = font
29
- yield(self) if block_given?
30
- ensure
31
- self.font = old_font
27
+ def with_font(font)
28
+ begin
29
+ old_font = self.font
30
+ self.font = font
31
+ yield(self) if block_given?
32
+ ensure
33
+ self.font = old_font
34
+ end
32
35
  end
33
- end
34
36
 
35
- def with_text_foreground(clr)
36
- begin
37
- old = self.get_text_foreground
38
- self.text_foreground = clr
39
- yield(self) if block_given?
40
- ensure
41
- self.text_foreground = old
37
+ def with_text_foreground(clr)
38
+ begin
39
+ old = self.get_text_foreground
40
+ self.text_foreground = clr
41
+ yield(self) if block_given?
42
+ ensure
43
+ self.text_foreground = old
44
+ end
42
45
  end
43
- end
44
- alias :with_text_fg :with_text_foreground
46
+ alias :with_text_fg :with_text_foreground
45
47
 
46
- def with_text_background(clr)
47
- begin
48
- old = self.get_text_background
49
- self.text_background = clr
50
- yield(self) if block_given?
51
- ensure
52
- self.text_background = old
48
+ def with_text_background(clr)
49
+ begin
50
+ old = self.get_text_background
51
+ self.text_background = clr
52
+ yield(self) if block_given?
53
+ ensure
54
+ self.text_background = old
55
+ end
53
56
  end
57
+ alias :with_text_bg :with_text_background
58
+
59
+ def with_background_mode(mode)
60
+ begin
61
+ old = self.get_background_mode
62
+ self.background_mode = mode
63
+ yield(self) if block_given?
64
+ ensure
65
+ self.background_mode = old
66
+ end
67
+ end
68
+ alias :with_bg_mode :with_background_mode
69
+
54
70
  end
55
- alias :with_text_bg :with_text_background
56
71
 
57
- def with_background_mode(mode)
58
- begin
59
- old = self.get_background_mode
60
- self.background_mode = mode
61
- yield(self) if block_given?
62
- ensure
63
- self.background_mode = old
72
+ class MemoryDC
73
+
74
+ # convenience method for drawing on a temporary memory DC
75
+ def self.draw_on(arg)
76
+ dc = case arg
77
+ when Wx::Bitmap, Wx::DC
78
+ self.new(arg)
79
+ else
80
+ ::Kernel.raise ArgumentError, 'Expected Wx::Bitmap or Wx::DC'
81
+ end
82
+ begin
83
+ yield(dc) if block_given?
84
+ ensure
85
+ dc.select_object(Wx::NULL_BITMAP)
86
+ end
87
+ nil
64
88
  end
89
+
65
90
  end
66
- alias :with_bg_mode :with_background_mode
67
91
 
68
92
  end
data/lib/wx/core/enum.rb CHANGED
@@ -25,4 +25,8 @@ class Wx::Enum
25
25
  self.to_i == 0
26
26
  end
27
27
 
28
+ def hash
29
+ @value.hash
30
+ end
31
+
28
32
  end
data/lib/wx/core/event.rb CHANGED
@@ -1,10 +1,43 @@
1
- # Base class for all events
2
- class Wx::Event
3
- # Get the Wx id, not Ruby's deprecated Object#id
4
- alias :id :get_id
5
- end
1
+
2
+ require_relative './evthandler'
6
3
 
7
4
  module Wx
5
+
6
+ # Base class for all events
7
+ class Event
8
+
9
+ # overload the #initialize method to add a check on a
10
+ # correct match between EventType and event class
11
+ wx_init = self.instance_method(:initialize)
12
+ define_method :initialize do |evt_type = Wx::EVT_NULL, *rest|
13
+ evt_klass = Wx::EvtHandler.event_class_for_type(evt_type)
14
+ if evt_klass >= self.class
15
+ wx_init.bind(self).call(evt_type, *rest)
16
+ else
17
+ ::Kernel.raise ArgumentError, "Invalid event type #{Wx::EvtHandler.event_name_for_type(evt_type)}:#{evt_type} for class #{self.class}"
18
+ end
19
+ end
20
+
21
+ # Get the Wx id, not Ruby's deprecated Object#id
22
+ alias :id :get_id
23
+ end
24
+
25
+ class Wx::CommandEvent
26
+
27
+ # overload the #initialize method to add a check on a
28
+ # correct match between EventType and event class
29
+ wx_init = self.instance_method(:initialize)
30
+ define_method :initialize do |evt_type = Wx::EVT_NULL, *rest|
31
+ evt_klass = Wx::EvtHandler.event_class_for_type(evt_type)
32
+ if evt_klass >= self.class
33
+ wx_init.bind(self).call(evt_type, *rest)
34
+ else
35
+ ::Kernel.raise ArgumentError, "Invalid event type #{Wx::EvtHandler.event_name_for_type(evt_type)}:#{evt_type} for class #{self.class}"
36
+ end
37
+ end
38
+
39
+ end
40
+
8
41
  # reduce mapping warnings for this unpublished event class
9
42
  NcPaintEvent = Wx::Event
10
43
 
@@ -103,12 +103,12 @@ class Wx::EvtHandler
103
103
  Wx::ScrollEvent
104
104
  ] if Wx.const_defined?(:EVT_COMMAND_SCROLL_THUMBTRACK)
105
105
  self.register_event_type EventType[
106
- 'evt_command_scroll_thumbrelease', 0,
106
+ 'evt_command_scroll_thumbrelease', 1,
107
107
  Wx::EVT_COMMAND_SCROLL_THUMBRELEASE,
108
108
  Wx::ScrollEvent
109
109
  ] if Wx.const_defined?(:EVT_COMMAND_SCROLL_THUMBRELEASE)
110
110
  self.register_event_type EventType[
111
- 'evt_command_scroll_changed', 0,
111
+ 'evt_command_scroll_changed', 1,
112
112
  Wx::EVT_COMMAND_SCROLL_CHANGED,
113
113
  Wx::ScrollEvent
114
114
  ] if Wx.const_defined?(:EVT_COMMAND_SCROLL_CHANGED)
@@ -1197,6 +1197,7 @@ class Wx::EvtHandler
1197
1197
  # from wxChoice
1198
1198
  # from wxCollapsiblePane
1199
1199
  # from wxSlider
1200
+ # from wxScrollBar
1200
1201
  # from wxSpinButton
1201
1202
  # from wxSpinCtrl
1202
1203
  self.register_event_type EventType[
@@ -195,32 +195,73 @@ class Wx::EvtHandler
195
195
  end
196
196
 
197
197
  # Convenience evt_handler to listen to all mouse events.
198
- def evt_mouse_events(&block)
199
- evt_left_down(&block)
200
- evt_left_up(&block)
201
- evt_middle_down(&block)
202
- evt_middle_up(&block)
203
- evt_right_down(&block)
204
- evt_right_up(&block)
205
- evt_motion(&block)
206
- evt_left_dclick(&block)
207
- evt_middle_dclick(&block)
208
- evt_right_dclick(&block)
209
- evt_leave_window(&block)
210
- evt_enter_window(&block)
211
- evt_mousewheel(&block)
198
+ def evt_mouse_events(*args, &block)
199
+ evt_left_down(*args, &block)
200
+ evt_left_up(*args, &block)
201
+ evt_middle_down(*args, &block)
202
+ evt_middle_up(*args, &block)
203
+ evt_right_down(*args, &block)
204
+ evt_right_up(*args, &block)
205
+ evt_motion(*args, &block)
206
+ evt_left_dclick(*args, &block)
207
+ evt_middle_dclick(*args, &block)
208
+ evt_right_dclick(*args, &block)
209
+ evt_leave_window(*args, &block)
210
+ evt_enter_window(*args, &block)
211
+ evt_mousewheel(*args, &block)
212
212
  end
213
213
 
214
214
  # Convenience evt handler to listen to all scrollwin events.
215
- def evt_scrollwin(&block)
216
- evt_scrollwin_top(&block)
217
- evt_scrollwin_bottom(&block)
218
- evt_scrollwin_lineup(&block)
219
- evt_scrollwin_linedown(&block)
220
- evt_scrollwin_pageup(&block)
221
- evt_scrollwin_pagedown(&block)
222
- evt_scrollwin_thumbtrack(&block)
223
- evt_scrollwin_thumbrelease(&block)
215
+ def evt_scrollwin(meth = nil, &block)
216
+ evt_scrollwin_top(meth, &block)
217
+ evt_scrollwin_bottom(meth, &block)
218
+ evt_scrollwin_lineup(meth, &block)
219
+ evt_scrollwin_linedown(meth, &block)
220
+ evt_scrollwin_pageup(meth, &block)
221
+ evt_scrollwin_pagedown(meth, &block)
222
+ evt_scrollwin_thumbtrack(meth, &block)
223
+ evt_scrollwin_thumbrelease(meth, &block)
224
+ end
225
+
226
+ # Convenience evt handler to listen to all scroll events (Wx::Slider and Wx::ScrollBar)
227
+ def evt_scroll(meth = nil, &block)
228
+ evt_scroll_top(meth, &block)
229
+ evt_scroll_bottom(meth, &block)
230
+ evt_scroll_lineup(meth, &block)
231
+ evt_scroll_linedown(meth, &block)
232
+ evt_scroll_pageup(meth, &block)
233
+ evt_scroll_pagedown(meth, &block)
234
+ evt_scroll_thumbtrack(meth, &block)
235
+ evt_scroll_thumbrelease(meth, &block)
236
+ evt_scroll_changed(meth, &block)
237
+ end
238
+
239
+ # Convenience evt handler to listen to all scroll command events.
240
+ def evt_command_scroll(id, meth = nil, &block)
241
+ evt_command_scroll_top(id, meth, &block)
242
+ evt_command_scroll_bottom(id, meth, &block)
243
+ evt_command_scroll_lineup(id, meth, &block)
244
+ evt_command_scroll_linedown(id, meth, &block)
245
+ evt_command_scroll_pageup(id, meth, &block)
246
+ evt_command_scroll_pagedown(id, meth, &block)
247
+ evt_command_scroll_thumbtrack(id, meth, &block)
248
+ evt_command_scroll_thumbrelease(id, meth, &block)
249
+ evt_command_scroll_changed(id, meth, &block)
250
+ end
251
+
252
+ # add missing constants (these are redefinitions of other constants which are not documented themselves)
253
+ %i[EVT_COMMAND_SCROLL_TOP
254
+ EVT_COMMAND_SCROLL_BOTTOM
255
+ EVT_COMMAND_SCROLL_LINEUP
256
+ EVT_COMMAND_SCROLL_LINEDOWN
257
+ EVT_COMMAND_SCROLL_PAGEUP
258
+ EVT_COMMAND_SCROLL_PAGEDOWN
259
+ EVT_COMMAND_SCROLL_THUMBTRACK
260
+ EVT_COMMAND_SCROLL_THUMBRELEASE
261
+ EVT_COMMAND_SCROLL_CHANGED].each do |const|
262
+ unless Wx.const_defined?(const)
263
+ Wx.const_set(const, Wx.const_get(const.to_s.sub('EVT_COMMAND_', 'EVT_').to_sym))
264
+ end
224
265
  end
225
266
 
226
267
  if Wx.const_defined?(:EVT_DESTROY)
data/lib/wx/core/icon.rb CHANGED
@@ -1,46 +1,61 @@
1
1
  # Specific type of platform-dependent image used for frames on Windows and
2
2
  # Linux. Normally Bitmap is used
3
- class Wx::Icon
4
- # Load the type-guessing hash from Wx::Bitmap
5
- require 'wx/core/bitmap'
6
- BITMAP_TYPE_GUESS = Wx::Bitmap::BITMAP_TYPE_GUESS
7
-
8
- # Analogous to Image.from_bitmap
9
- def self.from_bitmap(bmp)
10
- ico = new
11
- ico.copy_from_bitmap(bmp)
12
- ico
13
- end
14
3
 
15
- def to_bitmap
16
- # for WXMSW platform Icon is not derived from Bitmap
17
- return self unless Wx::PLATFORM == 'WXMSW' || Wx::PLATFORM == 'WXOSX'
18
- bm = Wx::Bitmap.new
19
- bm.copy_from_icon(self)
20
- bm
21
- end
4
+ require_relative './art_locator'
5
+
6
+ module Wx
22
7
 
23
- if Wx::PLATFORM == 'WXMSW' || Wx::PLATFORM == 'WXOSX'
24
- def convert_to_image
25
- to_bitmap.convert_to_image
8
+ class Icon
9
+ # Load the type-guessing hash from Wx::Bitmap
10
+ require 'wx/core/bitmap'
11
+ BITMAP_TYPE_GUESS = Wx::Bitmap::BITMAP_TYPE_GUESS
12
+
13
+ # Analogous to Image.from_bitmap
14
+ def self.from_bitmap(bmp)
15
+ ico = new
16
+ ico.copy_from_bitmap(bmp)
17
+ ico
18
+ end
19
+
20
+ def to_bitmap
21
+ # for WXMSW platform Icon is not derived from Bitmap
22
+ return self unless Wx::PLATFORM == 'WXMSW' || Wx::PLATFORM == 'WXOSX'
23
+ bm = Wx::Bitmap.new
24
+ bm.copy_from_icon(self)
25
+ bm
26
26
  end
27
- end
28
27
 
29
- # Redefine the initialize method so it raises an exception if a
30
- # non-existent file is given to the constructor; otherwise, wx Widgets
31
- # just carries on with an empty icon, which may cause faults
32
- # later. Also guess icon type from filename, if not specified.
33
- wx_init = self.instance_method(:initialize)
34
- define_method(:initialize) do | *args |
35
- if args[0].kind_of? String
36
- if not File.exist?( File.expand_path(args[0]) )
37
- Kernel.raise(ArgumentError, "Icon file does not exist: #{args[0]}")
28
+ if Wx::PLATFORM == 'WXMSW' || Wx::PLATFORM == 'WXOSX'
29
+ def convert_to_image
30
+ to_bitmap.convert_to_image
38
31
  end
39
- # If type not specified, try to guess it from the file extension
40
- if not args[1] and ( file_ext = args[0][/\w+$/] )
41
- args[1] = BITMAP_TYPE_GUESS[file_ext.downcase]
32
+ end
33
+
34
+ # Redefine the initialize method so it raises an exception if a
35
+ # non-existent file is given to the constructor; otherwise, wx Widgets
36
+ # just carries on with an empty icon, which may cause faults
37
+ # later. Also guess icon type from filename, if not specified.
38
+ wx_init = self.instance_method(:initialize)
39
+ define_method(:initialize) do | *args |
40
+ if args[0].kind_of? String
41
+ if not File.exist?( File.expand_path(args[0]) )
42
+ Kernel.raise(ArgumentError, "Icon file does not exist: #{args[0]}")
43
+ end
44
+ # If type not specified, try to guess it from the file extension
45
+ if not args[1] and ( file_ext = args[0][/\w+$/] )
46
+ args[1] = BITMAP_TYPE_GUESS[file_ext.downcase]
47
+ end
42
48
  end
49
+ wx_init.bind(self).call(*args)
43
50
  end
44
- wx_init.bind(self).call(*args)
45
51
  end
52
+
53
+ def self.Icon(name, bmp_type = nil, *rest)
54
+ art_path = File.dirname(caller_path = caller_locations(1).first.absolute_path)
55
+ art_owner = File.basename(caller_path, '.*')
56
+ art_file = ArtLocator.find_art(name, art_type: :icon, art_path: art_path, art_section: art_owner, bmp_type: bmp_type)
57
+ ::Kernel.raise ArgumentError, "Cannot locate art file for #{name}:Icon" unless art_file
58
+ Icon.new(art_file, bmp_type, *rest)
59
+ end
60
+
46
61
  end
@@ -0,0 +1,32 @@
1
+
2
+ module Wx
3
+
4
+ # Mixin module to provide convenience method for defining Windows/Control ids.
5
+ # @example Define an ID module
6
+ # module MyIDS
7
+ # include Wx::IDHelper
8
+ # # by default the offset for the next id is Wx::ID_HIGHEST which makes 'Wx::ID_HIGHEST+1'
9
+ # # the first id value returned.
10
+ # MY_FIRST_ID = self.next_id
11
+ # MY_SECOND_ID = self.next_id # MY_SECOND_ID will have value Wx::ID_HIGHEST+2
12
+ #
13
+ # # optionally a user defined offset can be specified like this:
14
+ # MY_OTHER_ID = self.next_id(MY_FIRST_ID+1000) # MY_OTHER_ID will have value MY_FIRST_ID+1001
15
+ # MY_OTHER_ID2 = self.next_id # MY_OTHER_ID2 will have value MY_FIRST_ID+1002
16
+ # end
17
+ #
18
+ module IDHelper
19
+
20
+ def self.included(base)
21
+ base.singleton_class.class_eval do
22
+ def next_id(offset = nil)
23
+ # set the offset if @next_id still unset or a user defined offset has been specified
24
+ @next_id = (offset || Wx::ID_HIGHEST) if @next_id.nil? || offset
25
+ @next_id += 1 # increment and return next id
26
+ end
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ end