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

Sign up to get free protection for your applications and to get access to all the features.
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