wxruby3 0.9.0.pre.beta.8-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.
- checksums.yaml +7 -0
- data/.wxconfig +17 -0
- data/.yardopts +13 -0
- data/CREDITS.md +52 -0
- data/LICENSE +21 -0
- data/README.md +139 -0
- data/bin/wxruby +9 -0
- data/bin/wxruby.bat +20 -0
- data/ext/mkrf_conf_bingem.rb +18 -0
- data/ext/wxbase32u_gcc_custom.dll +0 -0
- data/ext/wxbase32u_net_gcc_custom.dll +0 -0
- data/ext/wxbase32u_xml_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_aui_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_core_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_gl_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_html_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_media_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_propgrid_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_qa_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_ribbon_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_richtext_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_stc_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_webview_gcc_custom.dll +0 -0
- data/ext/wxmsw32u_xrc_gcc_custom.dll +0 -0
- data/lib/wx/accessors.rb +63 -0
- data/lib/wx/aui/auimanager.rb +17 -0
- data/lib/wx/aui/auinotebook.rb +9 -0
- data/lib/wx/aui/events/evt_list.rb +143 -0
- data/lib/wx/aui/require.rb +9 -0
- data/lib/wx/aui.rb +14 -0
- data/lib/wx/core/acceleratortable.rb +28 -0
- data/lib/wx/core/animation.rb +18 -0
- data/lib/wx/core/app.rb +89 -0
- data/lib/wx/core/artprovider.rb +31 -0
- data/lib/wx/core/bitmap.rb +59 -0
- data/lib/wx/core/busycursor.rb +12 -0
- data/lib/wx/core/choice.rb +4 -0
- data/lib/wx/core/choicedlg.rb +54 -0
- data/lib/wx/core/clientdc.rb +13 -0
- data/lib/wx/core/clipboard.rb +56 -0
- data/lib/wx/core/collapsible_pane.rb +12 -0
- data/lib/wx/core/colour.rb +34 -0
- data/lib/wx/core/combobox.rb +4 -0
- data/lib/wx/core/controlwithitems.rb +10 -0
- data/lib/wx/core/data_object.rb +10 -0
- data/lib/wx/core/dataformat.rb +26 -0
- data/lib/wx/core/dc.rb +68 -0
- data/lib/wx/core/dialog.rb +50 -0
- data/lib/wx/core/enum.rb +28 -0
- data/lib/wx/core/event.rb +16 -0
- data/lib/wx/core/events/evt_list.rb +1378 -0
- data/lib/wx/core/evthandler.rb +253 -0
- data/lib/wx/core/ext.rb +58 -0
- data/lib/wx/core/font/encoding.rb +113 -0
- data/lib/wx/core/font.rb +22 -0
- data/lib/wx/core/functions.rb +44 -0
- data/lib/wx/core/gauge.rb +12 -0
- data/lib/wx/core/genericdirctrl.rb +36 -0
- data/lib/wx/core/hboxsizer.rb +6 -0
- data/lib/wx/core/helpcontroller.rb +5 -0
- data/lib/wx/core/helpcontrollerhelpprovider.rb +24 -0
- data/lib/wx/core/helpprovider.rb +15 -0
- data/lib/wx/core/icon.rb +40 -0
- data/lib/wx/core/image.rb +68 -0
- data/lib/wx/core/imagelist.rb +3 -0
- data/lib/wx/core/listbox.rb +4 -0
- data/lib/wx/core/listctrl.rb +33 -0
- data/lib/wx/core/locale.rb +73 -0
- data/lib/wx/core/log.rb +20 -0
- data/lib/wx/core/menu.rb +78 -0
- data/lib/wx/core/menu_bar.rb +20 -0
- data/lib/wx/core/menuitem.rb +7 -0
- data/lib/wx/core/notebook.rb +9 -0
- data/lib/wx/core/object.rb +14 -0
- data/lib/wx/core/pen_info.rb +11 -0
- data/lib/wx/core/platform_info.rb +13 -0
- data/lib/wx/core/point.rb +92 -0
- data/lib/wx/core/real_point.rb +92 -0
- data/lib/wx/core/rect.rb +57 -0
- data/lib/wx/core/simplehelpprovider.rb +38 -0
- data/lib/wx/core/size.rb +86 -0
- data/lib/wx/core/sizer.rb +43 -0
- data/lib/wx/core/splash_screen.rb +44 -0
- data/lib/wx/core/textctrl.rb +8 -0
- data/lib/wx/core/timer.rb +104 -0
- data/lib/wx/core/toolbar.rb +37 -0
- data/lib/wx/core/toolbartool.rb +4 -0
- data/lib/wx/core/treectrl.rb +46 -0
- data/lib/wx/core/validator.rb +8 -0
- data/lib/wx/core/variant.rb +62 -0
- data/lib/wx/core/vboxsizer.rb +6 -0
- data/lib/wx/core/window.rb +95 -0
- data/lib/wx/core/window_update_locker.rb +12 -0
- data/lib/wx/core/xmlresource.rb +56 -0
- data/lib/wx/core.rb +61 -0
- data/lib/wx/doc/aui/auimanager.rb +12 -0
- data/lib/wx/doc/aui/auinotebook.rb +9 -0
- data/lib/wx/doc/colour_dialog.rb +15 -0
- data/lib/wx/doc/core.rb +11 -0
- data/lib/wx/doc/dc.rb +49 -0
- data/lib/wx/doc/enum.rb +88 -0
- data/lib/wx/doc/evthandler.rb +87 -0
- data/lib/wx/doc/extra/00_starting.md +154 -0
- data/lib/wx/doc/extra/01_packages.md +179 -0
- data/lib/wx/doc/extra/02_lifecycles.md +116 -0
- data/lib/wx/doc/extra/03_dialogs.md +57 -0
- data/lib/wx/doc/extra/04_enums.md +143 -0
- data/lib/wx/doc/extra/05_event-handling.md +166 -0
- data/lib/wx/doc/extra/06_geometry.md +56 -0
- data/lib/wx/doc/extra/07_colour_and_font.md +52 -0
- data/lib/wx/doc/extra/08_extensions.md +144 -0
- data/lib/wx/doc/extra/09_exceptions.md +54 -0
- data/lib/wx/doc/functions.rb +221 -0
- data/lib/wx/doc/gdi_common.rb +181 -0
- data/lib/wx/doc/gen/about_dialog_info.rb +315 -0
- data/lib/wx/doc/gen/accelerator.rb +172 -0
- data/lib/wx/doc/gen/accessible.rb +817 -0
- data/lib/wx/doc/gen/animation.rb +253 -0
- data/lib/wx/doc/gen/animation_ctrl.rb +129 -0
- data/lib/wx/doc/gen/any_button.rb +170 -0
- data/lib/wx/doc/gen/app.rb +363 -0
- data/lib/wx/doc/gen/art_provider.rb +497 -0
- data/lib/wx/doc/gen/aui/aui_dock_art.rb +421 -0
- data/lib/wx/doc/gen/aui/aui_floating_frame.rb +39 -0
- data/lib/wx/doc/gen/aui/aui_manager.rb +323 -0
- data/lib/wx/doc/gen/aui/aui_manager_event.rb +112 -0
- data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +163 -0
- data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +46 -0
- data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +109 -0
- data/lib/wx/doc/gen/aui/aui_notebook.rb +329 -0
- data/lib/wx/doc/gen/aui/aui_notebook_event.rb +179 -0
- data/lib/wx/doc/gen/aui/aui_pane_info.rb +665 -0
- data/lib/wx/doc/gen/aui/aui_tab_art.rb +372 -0
- data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +147 -0
- data/lib/wx/doc/gen/aui/aui_tool_bar.rb +437 -0
- data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +272 -0
- data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +195 -0
- data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +224 -0
- data/lib/wx/doc/gen/aui/event_list.rb +162 -0
- data/lib/wx/doc/gen/auto_buffered_paint_dc.rb +47 -0
- data/lib/wx/doc/gen/bitmap.rb +638 -0
- data/lib/wx/doc/gen/bitmap_button.rb +91 -0
- data/lib/wx/doc/gen/book_ctrl_base.rb +240 -0
- data/lib/wx/doc/gen/book_ctrl_event.rb +60 -0
- data/lib/wx/doc/gen/box_sizer.rb +66 -0
- data/lib/wx/doc/gen/brush.rb +219 -0
- data/lib/wx/doc/gen/buffered_dc.rb +95 -0
- data/lib/wx/doc/gen/buffered_paint_dc.rb +55 -0
- data/lib/wx/doc/gen/busy_info.rb +141 -0
- data/lib/wx/doc/gen/button.rb +133 -0
- data/lib/wx/doc/gen/calculate_layout_event.rb +59 -0
- data/lib/wx/doc/gen/calendar_ctrl.rb +236 -0
- data/lib/wx/doc/gen/calendar_date_attr.rb +137 -0
- data/lib/wx/doc/gen/calendar_event.rb +150 -0
- data/lib/wx/doc/gen/caret.rb +99 -0
- data/lib/wx/doc/gen/check_box.rb +145 -0
- data/lib/wx/doc/gen/check_list_box.rb +96 -0
- data/lib/wx/doc/gen/choice.rb +143 -0
- data/lib/wx/doc/gen/choicebook.rb +100 -0
- data/lib/wx/doc/gen/client_dc.rb +49 -0
- data/lib/wx/doc/gen/clipboard.rb +128 -0
- data/lib/wx/doc/gen/collapsible_pane.rb +120 -0
- data/lib/wx/doc/gen/collapsible_pane_event.rb +45 -0
- data/lib/wx/doc/gen/colour.rb +289 -0
- data/lib/wx/doc/gen/colour_data.rb +96 -0
- data/lib/wx/doc/gen/colour_dialog.rb +84 -0
- data/lib/wx/doc/gen/colour_picker_ctrl.rb +89 -0
- data/lib/wx/doc/gen/colour_picker_event.rb +74 -0
- data/lib/wx/doc/gen/combo_box.rb +228 -0
- data/lib/wx/doc/gen/context_help_button.rb +34 -0
- data/lib/wx/doc/gen/control.rb +245 -0
- data/lib/wx/doc/gen/control_with_items.rb +339 -0
- data/lib/wx/doc/gen/core.rb +42 -0
- data/lib/wx/doc/gen/cursor.rb +127 -0
- data/lib/wx/doc/gen/data_format.rb +94 -0
- data/lib/wx/doc/gen/data_object.rb +439 -0
- data/lib/wx/doc/gen/date_event.rb +48 -0
- data/lib/wx/doc/gen/date_picker_ctrl.rb +127 -0
- data/lib/wx/doc/gen/dc.rb +1278 -0
- data/lib/wx/doc/gen/defs.rb +2832 -0
- data/lib/wx/doc/gen/dialog.rb +426 -0
- data/lib/wx/doc/gen/dir_dialog.rb +134 -0
- data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +80 -0
- data/lib/wx/doc/gen/dir_picker_ctrl.rb +103 -0
- data/lib/wx/doc/gen/drag_drop.rb +292 -0
- data/lib/wx/doc/gen/drag_image.rb +123 -0
- data/lib/wx/doc/gen/editable_list_box.rb +89 -0
- data/lib/wx/doc/gen/event.rb +911 -0
- data/lib/wx/doc/gen/event_list.rb +1512 -0
- data/lib/wx/doc/gen/events.rb +2499 -0
- data/lib/wx/doc/gen/evt_handler.rb +224 -0
- data/lib/wx/doc/gen/ext_help_controller.rb +100 -0
- data/lib/wx/doc/gen/file_dialog.rb +294 -0
- data/lib/wx/doc/gen/file_dir_picker_event.rb +98 -0
- data/lib/wx/doc/gen/file_picker_ctrl.rb +107 -0
- data/lib/wx/doc/gen/find_dialog_event.rb +119 -0
- data/lib/wx/doc/gen/find_replace_data.rb +59 -0
- data/lib/wx/doc/gen/find_replace_dialog.rb +44 -0
- data/lib/wx/doc/gen/flex_grid_sizer.rb +145 -0
- data/lib/wx/doc/gen/font.rb +1282 -0
- data/lib/wx/doc/gen/font_data.rb +132 -0
- data/lib/wx/doc/gen/font_dialog.rb +71 -0
- data/lib/wx/doc/gen/font_picker_ctrl.rb +120 -0
- data/lib/wx/doc/gen/font_picker_event.rb +64 -0
- data/lib/wx/doc/gen/frame.rb +276 -0
- data/lib/wx/doc/gen/fs_file.rb +269 -0
- data/lib/wx/doc/gen/functions.rb +10 -0
- data/lib/wx/doc/gen/gauge.rb +127 -0
- data/lib/wx/doc/gen/gb_sizer_item.rb +78 -0
- data/lib/wx/doc/gen/gcdc.rb +61 -0
- data/lib/wx/doc/gen/gdi_common.rb +1108 -0
- data/lib/wx/doc/gen/gdi_object.rb +29 -0
- data/lib/wx/doc/gen/generic_dir_ctrl.rb +198 -0
- data/lib/wx/doc/gen/graphics_context.rb +764 -0
- data/lib/wx/doc/gen/graphics_object.rb +494 -0
- data/lib/wx/doc/gen/grid/event_list.rb +173 -0
- data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +33 -0
- data/lib/wx/doc/gen/grid/grid_cell_attr.rb +279 -0
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +31 -0
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +32 -0
- data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +44 -0
- data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +31 -0
- data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +48 -0
- data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +33 -0
- data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +40 -0
- data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +35 -0
- data/lib/wx/doc/gen/grid/grid_cell_editor.rb +181 -0
- data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +34 -0
- data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +39 -0
- data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +41 -0
- data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +74 -0
- data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +41 -0
- data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +31 -0
- data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +98 -0
- data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +31 -0
- data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +45 -0
- data/lib/wx/doc/gen/grid/grid_ctrl.rb +2381 -0
- data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +87 -0
- data/lib/wx/doc/gen/grid/grid_event.rb +96 -0
- data/lib/wx/doc/gen/grid/grid_range_select_event.rb +96 -0
- data/lib/wx/doc/gen/grid/grid_size_event.rb +71 -0
- data/lib/wx/doc/gen/grid/grid_string_table.rb +130 -0
- data/lib/wx/doc/gen/grid/grid_table_base.rb +288 -0
- data/lib/wx/doc/gen/grid/grid_table_message.rb +73 -0
- data/lib/wx/doc/gen/grid_bag_sizer.rb +298 -0
- data/lib/wx/doc/gen/grid_sizer.rb +135 -0
- data/lib/wx/doc/gen/help_controller.rb +136 -0
- data/lib/wx/doc/gen/help_provider.rb +80 -0
- data/lib/wx/doc/gen/html/event_list.rb +46 -0
- data/lib/wx/doc/gen/html/html_cell.rb +441 -0
- data/lib/wx/doc/gen/html/html_cell_event.rb +62 -0
- data/lib/wx/doc/gen/html/html_easy_printing.rb +169 -0
- data/lib/wx/doc/gen/html/html_help_controller.rb +256 -0
- data/lib/wx/doc/gen/html/html_help_data.rb +144 -0
- data/lib/wx/doc/gen/html/html_help_frame.rb +112 -0
- data/lib/wx/doc/gen/html/html_help_window.rb +230 -0
- data/lib/wx/doc/gen/html/html_link_event.rb +36 -0
- data/lib/wx/doc/gen/html/html_list_box.rb +150 -0
- data/lib/wx/doc/gen/html/html_printout.rb +87 -0
- data/lib/wx/doc/gen/html/html_window.rb +386 -0
- data/lib/wx/doc/gen/icon.rb +267 -0
- data/lib/wx/doc/gen/icon_location.rb +38 -0
- data/lib/wx/doc/gen/image.rb +1144 -0
- data/lib/wx/doc/gen/image_list.rb +181 -0
- data/lib/wx/doc/gen/keyboard_state.rb +124 -0
- data/lib/wx/doc/gen/list_box.rb +260 -0
- data/lib/wx/doc/gen/list_ctrl.rb +1542 -0
- data/lib/wx/doc/gen/list_event.rb +177 -0
- data/lib/wx/doc/gen/listbook.rb +100 -0
- data/lib/wx/doc/gen/locale.rb +4143 -0
- data/lib/wx/doc/gen/log.rb +505 -0
- data/lib/wx/doc/gen/mdi_client_window.rb +38 -0
- data/lib/wx/doc/gen/mdi_frame.rb +235 -0
- data/lib/wx/doc/gen/media_ctrl.rb +225 -0
- data/lib/wx/doc/gen/media_event.rb +109 -0
- data/lib/wx/doc/gen/memory_dc.rb +95 -0
- data/lib/wx/doc/gen/menu.rb +493 -0
- data/lib/wx/doc/gen/menu_bar.rb +247 -0
- data/lib/wx/doc/gen/menu_item.rb +333 -0
- data/lib/wx/doc/gen/message_dialog.rb +195 -0
- data/lib/wx/doc/gen/mini_frame.rb +72 -0
- data/lib/wx/doc/gen/mirror_dc.rb +29 -0
- data/lib/wx/doc/gen/mouse_state.rb +108 -0
- data/lib/wx/doc/gen/multi_choice_dialog.rb +58 -0
- data/lib/wx/doc/gen/non_owned_window.rb +46 -0
- data/lib/wx/doc/gen/notebook.rb +220 -0
- data/lib/wx/doc/gen/number_entry_dialog.rb +75 -0
- data/lib/wx/doc/gen/object.rb +69 -0
- data/lib/wx/doc/gen/paint_dc.rb +34 -0
- data/lib/wx/doc/gen/palette.rb +90 -0
- data/lib/wx/doc/gen/panel.rb +96 -0
- data/lib/wx/doc/gen/pen.rb +484 -0
- data/lib/wx/doc/gen/pg/event_list.rb +102 -0
- data/lib/wx/doc/gen/pg/numeric_property_validator.rb +47 -0
- data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +295 -0
- data/lib/wx/doc/gen/pg/pg_cell.rb +166 -0
- data/lib/wx/doc/gen/pg/pg_editor.rb +569 -0
- data/lib/wx/doc/gen/pg/pg_multi_button.rb +161 -0
- data/lib/wx/doc/gen/pg/pg_properties.rb +2193 -0
- data/lib/wx/doc/gen/pg/pg_property.rb +1852 -0
- data/lib/wx/doc/gen/pg/pg_validation_info.rb +327 -0
- data/lib/wx/doc/gen/pg/property_grid.rb +619 -0
- data/lib/wx/doc/gen/pg/property_grid_event.rb +135 -0
- data/lib/wx/doc/gen/pg/property_grid_interface.rb +847 -0
- data/lib/wx/doc/gen/pg/property_grid_manager.rb +349 -0
- data/lib/wx/doc/gen/pg/property_grid_page.rb +265 -0
- data/lib/wx/doc/gen/pg/property_grid_page_state.rb +155 -0
- data/lib/wx/doc/gen/picker_base.rb +143 -0
- data/lib/wx/doc/gen/platform_info.rb +379 -0
- data/lib/wx/doc/gen/popup_window.rb +93 -0
- data/lib/wx/doc/gen/progress_dialog.rb +106 -0
- data/lib/wx/doc/gen/property_sheet_dialog.rb +185 -0
- data/lib/wx/doc/gen/prt/event_list.rb +13 -0
- data/lib/wx/doc/gen/prt/page_setup_dialog.rb +38 -0
- data/lib/wx/doc/gen/prt/post_script_dc.rb +32 -0
- data/lib/wx/doc/gen/prt/preview_frame.rb +39 -0
- data/lib/wx/doc/gen/prt/print_abort_dialog.rb +127 -0
- data/lib/wx/doc/gen/prt/print_data.rb +598 -0
- data/lib/wx/doc/gen/prt/print_dialog.rb +47 -0
- data/lib/wx/doc/gen/prt/printer.rb +428 -0
- data/lib/wx/doc/gen/prt/printer_dc.rb +35 -0
- data/lib/wx/doc/gen/query_layout_info_event.rb +98 -0
- data/lib/wx/doc/gen/radio_box.rb +258 -0
- data/lib/wx/doc/gen/radio_button.rb +128 -0
- data/lib/wx/doc/gen/rbn/event_list.rb +132 -0
- data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +1652 -0
- data/lib/wx/doc/gen/rbn/ribbon_bar.rb +227 -0
- data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +40 -0
- data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +400 -0
- data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +58 -0
- data/lib/wx/doc/gen/rbn/ribbon_control.rb +116 -0
- data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +208 -0
- data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +51 -0
- data/lib/wx/doc/gen/rbn/ribbon_page.rb +129 -0
- data/lib/wx/doc/gen/rbn/ribbon_panel.rb +232 -0
- data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +41 -0
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +321 -0
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +36 -0
- data/lib/wx/doc/gen/region.rb +299 -0
- data/lib/wx/doc/gen/rtc/event_list.rb +121 -0
- data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +2052 -0
- data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +2031 -0
- data/lib/wx/doc/gen/rtc/rich_text_event.rb +146 -0
- data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +171 -0
- data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +180 -0
- data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +104 -0
- data/lib/wx/doc/gen/rtc/rich_text_printing.rb +241 -0
- data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +55 -0
- data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +153 -0
- data/lib/wx/doc/gen/sash_event.rb +133 -0
- data/lib/wx/doc/gen/sash_layout_window.rb +203 -0
- data/lib/wx/doc/gen/sash_window.rb +154 -0
- data/lib/wx/doc/gen/screen_dc.rb +27 -0
- data/lib/wx/doc/gen/scrolled_canvas.rb +317 -0
- data/lib/wx/doc/gen/scrolled_control.rb +317 -0
- data/lib/wx/doc/gen/scrolled_window.rb +337 -0
- data/lib/wx/doc/gen/simplebook.rb +93 -0
- data/lib/wx/doc/gen/single_choice_dialog.rb +74 -0
- data/lib/wx/doc/gen/sizer.rb +847 -0
- data/lib/wx/doc/gen/sizer_item.rb +227 -0
- data/lib/wx/doc/gen/slider.rb +316 -0
- data/lib/wx/doc/gen/spin_button.rb +124 -0
- data/lib/wx/doc/gen/spin_ctrl.rb +170 -0
- data/lib/wx/doc/gen/spin_event.rb +47 -0
- data/lib/wx/doc/gen/splash_screen.rb +83 -0
- data/lib/wx/doc/gen/splitter_event.rb +87 -0
- data/lib/wx/doc/gen/splitter_window.rb +357 -0
- data/lib/wx/doc/gen/static_bitmap.rb +126 -0
- data/lib/wx/doc/gen/static_box.rb +123 -0
- data/lib/wx/doc/gen/static_box_sizer.rb +67 -0
- data/lib/wx/doc/gen/static_line.rb +66 -0
- data/lib/wx/doc/gen/static_text.rb +98 -0
- data/lib/wx/doc/gen/status_bar.rb +203 -0
- data/lib/wx/doc/gen/stc/event_list.rb +217 -0
- data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +4000 -0
- data/lib/wx/doc/gen/stc/styled_text_event.rb +7319 -0
- data/lib/wx/doc/gen/std_dialog_button_sizer.rb +74 -0
- data/lib/wx/doc/gen/svg_file_dc.rb +153 -0
- data/lib/wx/doc/gen/system_options.rb +109 -0
- data/lib/wx/doc/gen/system_settings.rb +481 -0
- data/lib/wx/doc/gen/task_bar_icon.rb +94 -0
- data/lib/wx/doc/gen/task_bar_icon_event.rb +86 -0
- data/lib/wx/doc/gen/text_attr.rb +645 -0
- data/lib/wx/doc/gen/text_ctrl.rb +841 -0
- data/lib/wx/doc/gen/text_entry.rb +389 -0
- data/lib/wx/doc/gen/text_entry_dialog.rb +170 -0
- data/lib/wx/doc/gen/text_validator.rb +212 -0
- data/lib/wx/doc/gen/time_picker_ctrl.rb +103 -0
- data/lib/wx/doc/gen/timer.rb +103 -0
- data/lib/wx/doc/gen/timer_event.rb +73 -0
- data/lib/wx/doc/gen/tip_provider.rb +60 -0
- data/lib/wx/doc/gen/toggle_button.rb +84 -0
- data/lib/wx/doc/gen/tool_bar.rb +744 -0
- data/lib/wx/doc/gen/tool_tip.rb +73 -0
- data/lib/wx/doc/gen/toolbook.rb +103 -0
- data/lib/wx/doc/gen/top_level_window.rb +462 -0
- data/lib/wx/doc/gen/tree_ctrl.rb +863 -0
- data/lib/wx/doc/gen/tree_event.rb +101 -0
- data/lib/wx/doc/gen/treebook.rb +154 -0
- data/lib/wx/doc/gen/utils.rb +257 -0
- data/lib/wx/doc/gen/v_list_box.rb +224 -0
- data/lib/wx/doc/gen/v_scrolled_window.rb +224 -0
- data/lib/wx/doc/gen/validator.rb +73 -0
- data/lib/wx/doc/gen/variant.rb +340 -0
- data/lib/wx/doc/gen/window.rb +2414 -0
- data/lib/wx/doc/gen/window_dc.rb +35 -0
- data/lib/wx/doc/gen/window_disabler.rb +24 -0
- data/lib/wx/doc/gen/with_images.rb +73 -0
- data/lib/wx/doc/gen/wizard.rb +197 -0
- data/lib/wx/doc/gen/wizard_event.rb +105 -0
- data/lib/wx/doc/gen/wizard_page.rb +61 -0
- data/lib/wx/doc/gen/wizard_page_simple.rb +72 -0
- data/lib/wx/doc/gen/xml_node.rb +282 -0
- data/lib/wx/doc/gen/xml_resource.rb +304 -0
- data/lib/wx/doc/grid/grid.rb +20 -0
- data/lib/wx/doc/help_controller.rb +14 -0
- data/lib/wx/doc/html/html_help_controller.rb +8 -0
- data/lib/wx/doc/pg/events.rb +15 -0
- data/lib/wx/doc/pg/pg_property.rb +8 -0
- data/lib/wx/doc/pg/pgeditor.rb +21 -0
- data/lib/wx/doc/pg/property_grid.rb +48 -0
- data/lib/wx/doc/pg/property_grid_interface.rb +64 -0
- data/lib/wx/doc/prt/page_setup_dialog.rb +15 -0
- data/lib/wx/doc/prt/print_data.rb +9 -0
- data/lib/wx/doc/prt/print_dialog.rb +26 -0
- data/lib/wx/doc/prt/printer.rb +15 -0
- data/lib/wx/doc/rbn/ribbon_bar.rb +9 -0
- data/lib/wx/doc/rbn/ribbon_button_bar.rb +9 -0
- data/lib/wx/doc/rbn/ribbon_gallery.rb +9 -0
- data/lib/wx/doc/rbn/ribbon_tool_bar.rb +9 -0
- data/lib/wx/doc/rtc/richtext_printing.rb +14 -0
- data/lib/wx/doc/screen_dc.rb +10 -0
- data/lib/wx/doc/stock_objects.rb +98 -0
- data/lib/wx/doc/stream.rb +38 -0
- data/lib/wx/doc/system_settings.rb +29 -0
- data/lib/wx/doc/treebook.rb +9 -0
- data/lib/wx/doc/variant.rb +163 -0
- data/lib/wx/doc/xml_resource.rb +19 -0
- data/lib/wx/global_const.rb +84 -0
- data/lib/wx/grid/events/evt_list.rb +156 -0
- data/lib/wx/grid/grid.rb +7 -0
- data/lib/wx/grid/keyword_defs.rb +10 -0
- data/lib/wx/grid/require.rb +9 -0
- data/lib/wx/grid.rb +14 -0
- data/lib/wx/helpers.rb +65 -0
- data/lib/wx/html/events/evt_list.rb +37 -0
- data/lib/wx/html/htmlhelpcontroller.rb +6 -0
- data/lib/wx/html/htmlwindow.rb +19 -0
- data/lib/wx/html/keyword_defs.rb +22 -0
- data/lib/wx/html/require.rb +10 -0
- data/lib/wx/html.rb +15 -0
- data/lib/wx/keyword_ctors.rb +226 -0
- data/lib/wx/keyword_defs.rb +487 -0
- data/lib/wx/pg/events/evt_list.rb +73 -0
- data/lib/wx/pg/events.rb +14 -0
- data/lib/wx/pg/keyword_defs.rb +15 -0
- data/lib/wx/pg/pg_editor.rb +13 -0
- data/lib/wx/pg/pg_properties.rb +24 -0
- data/lib/wx/pg/pg_property.rb +27 -0
- data/lib/wx/pg/property_grid.rb +71 -0
- data/lib/wx/pg/property_grid_interface.rb +46 -0
- data/lib/wx/pg/require.rb +12 -0
- data/lib/wx/pg.rb +14 -0
- data/lib/wx/prt/keyword_defs.rb +8 -0
- data/lib/wx/prt/page_setup_dialog.rb +15 -0
- data/lib/wx/prt/previewframe.rb +13 -0
- data/lib/wx/prt/require.rb +8 -0
- data/lib/wx/prt.rb +14 -0
- data/lib/wx/rbn/events/evt_list.rb +102 -0
- data/lib/wx/rbn/events.rb +4 -0
- data/lib/wx/rbn/keyword_defs.rb +43 -0
- data/lib/wx/rbn/require.rb +12 -0
- data/lib/wx/rbn/ribbon_art_provider.rb +10 -0
- data/lib/wx/rbn/ribbon_bar.rb +12 -0
- data/lib/wx/rbn/ribbon_button_bar.rb +26 -0
- data/lib/wx/rbn/ribbon_control.rb +25 -0
- data/lib/wx/rbn/ribbon_gallery.rb +26 -0
- data/lib/wx/rbn/ribbon_page.rb +15 -0
- data/lib/wx/rbn/ribbon_panel.rb +15 -0
- data/lib/wx/rbn/ribbon_tool_bar.rb +26 -0
- data/lib/wx/rbn.rb +14 -0
- data/lib/wx/rtc/events/evt_list.rb +98 -0
- data/lib/wx/rtc/ext/rich_text_ctrl.rb +24 -0
- data/lib/wx/rtc/ext.rb +15 -0
- data/lib/wx/rtc/keyword_defs.rb +17 -0
- data/lib/wx/rtc/require.rb +8 -0
- data/lib/wx/rtc.rb +15 -0
- data/lib/wx/stc/events/evt_list.rb +178 -0
- data/lib/wx/stc/keyword_defs.rb +8 -0
- data/lib/wx/stc/require.rb +7 -0
- data/lib/wx/stc.rb +14 -0
- data/lib/wx/version.rb +3 -0
- data/lib/wx/wxruby/base.rb +87 -0
- data/lib/wx/wxruby/cmd/sampler.rb +68 -0
- data/lib/wx/wxruby/cmd/test.rb +27 -0
- data/lib/wx.rb +14 -0
- data/lib/wxruby_aui.so +0 -0
- data/lib/wxruby_core.so +0 -0
- data/lib/wxruby_grid.so +0 -0
- data/lib/wxruby_html.so +0 -0
- data/lib/wxruby_pg.so +0 -0
- data/lib/wxruby_prt.so +0 -0
- data/lib/wxruby_rbn.so +0 -0
- data/lib/wxruby_rtc.so +0 -0
- data/lib/wxruby_stc.so +0 -0
- data/rakelib/install.rb +220 -0
- data/rakelib/lib/config/cygwin.rb +6 -0
- data/rakelib/lib/config/linux.rb +78 -0
- data/rakelib/lib/config/macosx.rb +6 -0
- data/rakelib/lib/config/mingw.rb +133 -0
- data/rakelib/lib/config/netbsd.rb +6 -0
- data/rakelib/lib/config/unixish.rb +187 -0
- data/rakelib/lib/config.rb +673 -0
- data/rakelib/lib/ext/enum_chain.rb +22 -0
- data/rakelib/prepost.rake +91 -0
- data/rakelib/prepost.rb +26 -0
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +7 -0
- data/rakelib/yard/templates/default/layout/html/setup.rb +5 -0
- data/rakelib/yard/yard/relative_markdown_links/version.rb +8 -0
- data/rakelib/yard/yard/relative_markdown_links.rb +39 -0
- data/rakelib/yard/yard-custom-templates.rb +2 -0
- data/rakelib/yard/yard-relative_markdown_links.rb +4 -0
- data/samples/art/wxruby-128x128.png +0 -0
- data/samples/art/wxruby-256x256.png +0 -0
- data/samples/art/wxruby-64x64.png +0 -0
- data/samples/art/wxruby.ico +0 -0
- data/samples/art/wxruby.png +0 -0
- data/samples/aui/aui.rb +1321 -0
- data/samples/aui/tn_aui.png +0 -0
- data/samples/bigdemo/About.rbw +39 -0
- data/samples/bigdemo/ColorPanel.rbw +23 -0
- data/samples/bigdemo/GridSimple.rbw +78 -0
- data/samples/bigdemo/MDIDemo.rbw +57 -0
- data/samples/bigdemo/PopupMenu.rbw +146 -0
- data/samples/bigdemo/ShapedWindow.rbw +128 -0
- data/samples/bigdemo/Sizers.rbw +541 -0
- data/samples/bigdemo/bigdemo.rb +810 -0
- data/samples/bigdemo/demoTemplate.rbw +33 -0
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/choice.xpm +27 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +27 -0
- data/samples/bigdemo/icons/copy.xpm +25 -0
- data/samples/bigdemo/icons/cut.xpm +24 -0
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +27 -0
- data/samples/bigdemo/icons/help.xpm +25 -0
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +27 -0
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +44 -0
- data/samples/bigdemo/icons/new.xpm +24 -0
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +45 -0
- data/samples/bigdemo/icons/open.xpm +26 -0
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +38 -0
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +26 -0
- data/samples/bigdemo/icons/print.xpm +26 -0
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +27 -0
- data/samples/bigdemo/icons/robert.xpm +415 -0
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +25 -0
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +39 -0
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +42 -0
- data/samples/bigdemo/icons/stattext.xpm +24 -0
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +79 -0
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +27 -0
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +38 -0
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +38 -0
- data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +91 -0
- data/samples/bigdemo/tips.txt +7 -0
- data/samples/bigdemo/utils.rb +12 -0
- data/samples/bigdemo/wxArtProvider.rbw +281 -0
- data/samples/bigdemo/wxBitmapButton.rbw +65 -0
- data/samples/bigdemo/wxButton.rbw +64 -0
- data/samples/bigdemo/wxCalendarCtrl.rbw +59 -0
- data/samples/bigdemo/wxCheckBox.rbw +50 -0
- data/samples/bigdemo/wxCheckListBox.rbw +65 -0
- data/samples/bigdemo/wxChoice.rbw +47 -0
- data/samples/bigdemo/wxChoicebook.rbw +78 -0
- data/samples/bigdemo/wxColourDialog.rbw +33 -0
- data/samples/bigdemo/wxComboBox.rbw +77 -0
- data/samples/bigdemo/wxCursor.rbw +136 -0
- data/samples/bigdemo/wxDialog.rbw +74 -0
- data/samples/bigdemo/wxDirDialog.rbw +29 -0
- data/samples/bigdemo/wxDragImage.rbw +70 -0
- data/samples/bigdemo/wxFileDialog.rbw +37 -0
- data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
- data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
- data/samples/bigdemo/wxFontDialog.rbw +200 -0
- data/samples/bigdemo/wxFrame.rbw +53 -0
- data/samples/bigdemo/wxGauge.rbw +65 -0
- data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
- data/samples/bigdemo/wxGrid.rbw +66 -0
- data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
- data/samples/bigdemo/wxListBox.rbw +140 -0
- data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -0
- data/samples/bigdemo/wxMDIWindows.rbw +50 -0
- data/samples/bigdemo/wxMenu.rbw +247 -0
- data/samples/bigdemo/wxMessageDialog.rbw +27 -0
- data/samples/bigdemo/wxMiniFrame.rbw +70 -0
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +29 -0
- data/samples/bigdemo/wxNotebook.rbw +136 -0
- data/samples/bigdemo/wxProgressDialog.rbw +43 -0
- data/samples/bigdemo/wxRadioBox.rbw +72 -0
- data/samples/bigdemo/wxRadioButton.rbw +125 -0
- data/samples/bigdemo/wxSashWindow.rbw +141 -0
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
- data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
- data/samples/bigdemo/wxSlider.rbw +42 -0
- data/samples/bigdemo/wxSpinButton.rbw +50 -0
- data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
- data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +47 -0
- data/samples/bigdemo/wxStaticText.rbw +55 -0
- data/samples/bigdemo/wxStatusBar.rbw +126 -0
- data/samples/bigdemo/wxTextCtrl.rbw +149 -0
- data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
- data/samples/bigdemo/wxToggleButton.rbw +49 -0
- data/samples/bigdemo/wxToolBar.rbw +131 -0
- data/samples/bigdemo/wxTreeCtrl.rbw +191 -0
- data/samples/calendar/calendar.rb +363 -0
- data/samples/calendar/tn_calendar.png +0 -0
- data/samples/caret/caret.rb +293 -0
- data/samples/caret/mondrian.xpm +44 -0
- data/samples/caret/tn_caret.png +0 -0
- data/samples/controls/books.rb +183 -0
- data/samples/controls/choice.xpm +27 -0
- data/samples/controls/combo.xpm +27 -0
- data/samples/controls/controls.rb +1143 -0
- data/samples/controls/gauge.xpm +27 -0
- data/samples/controls/get_item_sample.rb +117 -0
- data/samples/controls/list.xpm +27 -0
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +44 -0
- data/samples/controls/radio.xpm +27 -0
- data/samples/controls/stattext.xpm +24 -0
- data/samples/controls/test2.bmp +0 -0
- data/samples/controls/text.xpm +27 -0
- data/samples/controls/tn_books.png +0 -0
- data/samples/controls/tn_controls.png +0 -0
- data/samples/controls/tn_get_item_sample.png +0 -0
- data/samples/dialogs/dialogs.rb +879 -0
- data/samples/dialogs/tips.txt +18 -0
- data/samples/dialogs/tn_dialogs.png +0 -0
- data/samples/dialogs/tn_wizard.png +0 -0
- data/samples/dialogs/wizard.rb +89 -0
- data/samples/dragdrop/dragdrop.rb +200 -0
- data/samples/dragdrop/tn_dragdrop.png +0 -0
- data/samples/drawing/SVGlogo24.xpm +310 -0
- data/samples/drawing/bitmap.rb +76 -0
- data/samples/drawing/bitmap_image.rb +131 -0
- data/samples/drawing/graphics_drawing.rb +257 -0
- data/samples/drawing/maths_images.rb +327 -0
- data/samples/drawing/rmagic_bitmap_image.rb +139 -0
- data/samples/drawing/ruby-logo.jpg +0 -0
- data/samples/drawing/svgtest.rb +373 -0
- data/samples/drawing/tn_bitmap.png +0 -0
- data/samples/drawing/tn_bitmap_image.png +0 -0
- data/samples/drawing/tn_graphics_drawing.png +0 -0
- data/samples/drawing/tn_maths_images.png +0 -0
- data/samples/drawing/tn_rmagic_bitmap_image.png +0 -0
- data/samples/drawing/tn_svgtest.png +0 -0
- data/samples/etc/choice.rb +82 -0
- data/samples/etc/miniframe.rb +92 -0
- data/samples/etc/sash.rb +140 -0
- data/samples/etc/scrollwin.rb +120 -0
- data/samples/etc/system_settings.rb +263 -0
- data/samples/etc/tn_choice.png +0 -0
- data/samples/etc/tn_miniframe.png +0 -0
- data/samples/etc/tn_sash.png +0 -0
- data/samples/etc/tn_scrollwin.png +0 -0
- data/samples/etc/tn_system_settings.png +0 -0
- data/samples/event/activation.rb +129 -0
- data/samples/event/event.rb +220 -0
- data/samples/event/threaded.rb +141 -0
- data/samples/event/tn_activation.png +0 -0
- data/samples/event/tn_event.png +0 -0
- data/samples/event/tn_threaded.png +0 -0
- data/samples/event/tn_update_ui_event.png +0 -0
- data/samples/event/update_ui_event.rb +91 -0
- data/samples/grid/grid.rb +224 -0
- data/samples/grid/gridtablebase.rb +178 -0
- data/samples/grid/tn_grid.png +0 -0
- data/samples/grid/tn_gridtablebase.png +0 -0
- data/samples/html/8859_2.htm +14 -0
- data/samples/html/cp1250.htm +19 -0
- data/samples/html/foo.png +0 -0
- data/samples/html/html.rb +278 -0
- data/samples/html/i18n.gif +0 -0
- data/samples/html/imagemap.htm +20 -0
- data/samples/html/imagemap.png +0 -0
- data/samples/html/listtest.htm +28 -0
- data/samples/html/pic.png +0 -0
- data/samples/html/pic2.bmp +0 -0
- data/samples/html/regres.htm +20 -0
- data/samples/html/subsup.html +42 -0
- data/samples/html/tables.htm +255 -0
- data/samples/html/test.htm +375 -0
- data/samples/html/tn_html.png +0 -0
- data/samples/mdi/mdi.rb +118 -0
- data/samples/mdi/tn_mdi.png +0 -0
- data/samples/minimal/minimal.rb +95 -0
- data/samples/minimal/mondrian.ico +0 -0
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +38 -0
- data/samples/minimal/tn_minimal.png +0 -0
- data/samples/minimal/tn_nothing.png +0 -0
- data/samples/printing/mondrian.ico +0 -0
- data/samples/printing/mondrian.xpm +44 -0
- data/samples/printing/printing.rb +499 -0
- data/samples/printing/printing2.rb +251 -0
- data/samples/printing/sample-text.txt +213 -0
- data/samples/printing/tn_printing.png +0 -0
- data/samples/printing/tn_printing2.png +0 -0
- data/samples/propgrid/propgrid.rb +2711 -0
- data/samples/propgrid/propgrid_minimal.rb +107 -0
- data/samples/propgrid/sample_props.rb +434 -0
- data/samples/propgrid/tn_propgrid.png +0 -0
- data/samples/propgrid/tn_propgrid_minimal.png +0 -0
- data/samples/ribbon/align_center.xpm +21 -0
- data/samples/ribbon/align_left.xpm +21 -0
- data/samples/ribbon/align_right.xpm +21 -0
- data/samples/ribbon/aui_style.xpm +53 -0
- data/samples/ribbon/auto_crop_selection.xpm +55 -0
- data/samples/ribbon/auto_crop_selection_small.xpm +33 -0
- data/samples/ribbon/circle.xpm +38 -0
- data/samples/ribbon/circle_small.xpm +22 -0
- data/samples/ribbon/colours.xpm +25 -0
- data/samples/ribbon/cross.xpm +38 -0
- data/samples/ribbon/empty.xpm +23 -0
- data/samples/ribbon/expand_selection_h.xpm +46 -0
- data/samples/ribbon/expand_selection_v.xpm +46 -0
- data/samples/ribbon/eye.xpm +26 -0
- data/samples/ribbon/hexagon.xpm +38 -0
- data/samples/ribbon/msw_style.xpm +65 -0
- data/samples/ribbon/position_left.xpm +22 -0
- data/samples/ribbon/position_top.xpm +22 -0
- data/samples/ribbon/ribbon.rb +900 -0
- data/samples/ribbon/ribbon.xpm +54 -0
- data/samples/ribbon/selection_panel.xpm +23 -0
- data/samples/ribbon/square.xpm +38 -0
- data/samples/ribbon/tn_ribbon.png +0 -0
- data/samples/ribbon/triangle.xpm +38 -0
- data/samples/sample.xpm +475 -0
- data/samples/sampler/back.xpm +21 -0
- data/samples/sampler/copy.xpm +44 -0
- data/samples/sampler/cut.xpm +46 -0
- data/samples/sampler/editor.rb +560 -0
- data/samples/sampler/ext.rb +51 -0
- data/samples/sampler/filesave.xpm +42 -0
- data/samples/sampler/find.xpm +62 -0
- data/samples/sampler/findrepl.xpm +63 -0
- data/samples/sampler/forward.xpm +21 -0
- data/samples/sampler/paste.xpm +46 -0
- data/samples/sampler/play.xpm +24 -0
- data/samples/sampler/redo.xpm +58 -0
- data/samples/sampler/sample.rb +347 -0
- data/samples/sampler/stc_editor.rb +321 -0
- data/samples/sampler/txt_editor.rb +130 -0
- data/samples/sampler/undo.xpm +58 -0
- data/samples/sampler.rb +394 -0
- data/samples/splash/mobile.xpm +1835 -0
- data/samples/splash/splash.png +0 -0
- data/samples/splash/splash.rb +164 -0
- data/samples/splash/tn_splash.png +0 -0
- data/samples/text/document-open.png +0 -0
- data/samples/text/document-save.png +0 -0
- data/samples/text/edit-copy.png +0 -0
- data/samples/text/edit-cut.png +0 -0
- data/samples/text/edit-paste.png +0 -0
- data/samples/text/edit-redo.png +0 -0
- data/samples/text/edit-undo.png +0 -0
- data/samples/text/format-text-bold.png +0 -0
- data/samples/text/format-text-italic.png +0 -0
- data/samples/text/format-text-underline.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +44 -0
- data/samples/text/preferences-desktop-font.png +0 -0
- data/samples/text/rich_textctrl.rb +326 -0
- data/samples/text/scintilla.rb +179 -0
- data/samples/text/textctrl.rb +124 -0
- data/samples/text/tn_rich_textctrl.png +0 -0
- data/samples/text/tn_scintilla.png +0 -0
- data/samples/text/tn_textctrl.png +0 -0
- data/samples/text/tn_unicode.png +0 -0
- data/samples/text/unicode.rb +238 -0
- data/samples/text/utf8.txt +15 -0
- data/samples/treectrl/checked.xpm +54 -0
- data/samples/treectrl/icon1.xpm +79 -0
- data/samples/treectrl/icon2.xpm +53 -0
- data/samples/treectrl/icon3.xpm +79 -0
- data/samples/treectrl/icon4.xpm +43 -0
- data/samples/treectrl/icon5.xpm +79 -0
- data/samples/treectrl/state1.xpm +145 -0
- data/samples/treectrl/state2.xpm +144 -0
- data/samples/treectrl/state3.xpm +142 -0
- data/samples/treectrl/state4.xpm +145 -0
- data/samples/treectrl/state5.xpm +85 -0
- data/samples/treectrl/tn_treectrl.png +0 -0
- data/samples/treectrl/treectrl.rb +1720 -0
- data/samples/treectrl/unchecked.xpm +30 -0
- data/samples/xrc/custom_dialog.xrc +46 -0
- data/samples/xrc/custom_xrc_sample.rb +84 -0
- data/samples/xrc/samples.xrc +46 -0
- data/samples/xrc/tn_xrc_sample.png +0 -0
- data/samples/xrc/xrc_sample.rb +86 -0
- data/tests/test_basic.rb +20 -0
- data/tests/test_clipboard.rb +241 -0
- data/tests/test_dialog.rb +28 -0
- data/tests/test_event_handling.rb +103 -0
- data/tests/test_events.rb +45 -0
- data/tests/test_geometry.rb +141 -0
- data/tests/test_intl.rb +107 -0
- data/tests/test_item_data.rb +120 -0
- data/tests/test_variant.rb +151 -0
- data/tests/testapp.rb +40 -0
- data/tests/testapp_noframe.rb +28 -0
- metadata +930 -0
@@ -0,0 +1,116 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 2. wxRuby Life Cycles
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 2. wxRuby Life Cycles
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
Managing the life cycles of native objects in Ruby extension libraries is tricky business because of the disparity
|
11
|
+
between common C++ dynamic memory management and the GC management scheme of the Ruby language and this certainly applies
|
12
|
+
to an event based environment like the wxRuby extension for wxWidgets.
|
13
|
+
That said, the wxRuby library should provide you with a fairly worry-free API in that respect.
|
14
|
+
|
15
|
+
The wxRuby extension manages to provide water-tight GC management for just about all mapped wxWidget objects.
|
16
|
+
|
17
|
+
There are just a few, fairly specific, things to take notice of.
|
18
|
+
|
19
|
+
## Application instance
|
20
|
+
|
21
|
+
Any wxWidgets application typically creates a single application instance and the same goes for wxRuby applications.
|
22
|
+
We already saw [here](00_starting.md) how to start a wxRuby application. Important to note is that any reference to the
|
23
|
+
(global) application instance will ever only be valid as long as the application is still active.<br>
|
24
|
+
In essence this means the reference is valid from the moment the constructor (`#initialize`) is called to the moment
|
25
|
+
any available `#on_exit` method has finished.
|
26
|
+
|
27
|
+
There are some caveats to that however.
|
28
|
+
|
29
|
+
1. Although the application instance is valid in the constructor, the wxWidgets
|
30
|
+
framework will only be fully initialized the moment the `#on_init` method starts. This means that all kinds of methods
|
31
|
+
requiring initialized GUI resources (like window creation) will fail if called before that moment.
|
32
|
+
|
33
|
+
2. The global application instance returned by `Wx.get_app` will only be set from the moment the `#on_init` method
|
34
|
+
starts to the moment the `#on_exit` method finishes. Outside that timespan the method will return `nil`.
|
35
|
+
|
36
|
+
Also be careful with storing your own application instance variables. Code like
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
class MyApp < Wx::App
|
40
|
+
def initialize
|
41
|
+
super
|
42
|
+
# ...
|
43
|
+
end
|
44
|
+
def on_init
|
45
|
+
# ...
|
46
|
+
end
|
47
|
+
end
|
48
|
+
$app = MyApp.new
|
49
|
+
$app.run
|
50
|
+
```
|
51
|
+
|
52
|
+
is entirely valid but for the fact that you **should** remember that after the `#run` method returns the `$app` variable
|
53
|
+
does **not** reference a valid application instance anymore. Calling methods on that instance may result in unexpected
|
54
|
+
behavior.<br>
|
55
|
+
It is actually easier and safer to rewrite this code as:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
class MyApp < Wx::App
|
59
|
+
def initialize
|
60
|
+
super
|
61
|
+
# ...
|
62
|
+
end
|
63
|
+
def on_init
|
64
|
+
# ...
|
65
|
+
end
|
66
|
+
end
|
67
|
+
MyApp.run # or MyApp.new.run
|
68
|
+
```
|
69
|
+
|
70
|
+
This way there is no reference to accidentally use after `#run` returns and `Wx.get_app` will return `nil` after that
|
71
|
+
moment.
|
72
|
+
|
73
|
+
## Framework (re-)initialization
|
74
|
+
|
75
|
+
As mentioned above the wxWidgets GUI framework resources will only be fully initialized after the `#on_init` method
|
76
|
+
starts. Likewise the framework resources will be de-initialized (deleted) after `#on_exit` method ends which means that
|
77
|
+
your application should not attempt to access any of these resources (windows, fonts, colours etc.) after that moment.
|
78
|
+
|
79
|
+
Also, largely because of the way the wxWidgets framework is designed but also because of that way this meshes with Ruby
|
80
|
+
GC, there is no safe way to re-initialize the framework after an application instance ends it run. This means you
|
81
|
+
**cannot** safely attempt to start another application instance after a previous (first) one has ended.
|
82
|
+
|
83
|
+
## Windows
|
84
|
+
|
85
|
+
Window instances (and it's derivatives) are fully managed by the wxWidget framework and cannot (are not) managed by
|
86
|
+
Ruby GC handling. This means on the one hand that a window instances life time is not controlled by any reference
|
87
|
+
a Ruby variable may hold and on the other hand that the Ruby object linked to that native window object is kept alive
|
88
|
+
(marked in GC) as long as the window instance is alive.<br>
|
89
|
+
Generally speaking window lifetimes are dependent on the (toplevel) window (or it's parent) being closed. In case of a
|
90
|
+
toplevel window this result in automatic destruction of the window and all it's child windows (controls). There are
|
91
|
+
however exceptions to this where explicit calling of a window's `#destroy` method is required to prevent memory leaks
|
92
|
+
(when a window is not a child window but also not a toplevel window for example or in case of dialogs; see
|
93
|
+
[here](03_dialogs.md)). Please check out the wxWidgets documentation for more detailed information.
|
94
|
+
|
95
|
+
This has several consequences you need to be aware of.
|
96
|
+
|
97
|
+
First of, in cases where you keep a reference to any window (control) instance in a local or instance variable in Ruby
|
98
|
+
(which is fairly common practice) you need to be aware that the reference is only valid as long as the window has not
|
99
|
+
been destroyed. In most cases this will not be an issue as most references are kept as instance variables of parent
|
100
|
+
windows for child windows where the instance variables will only ever be used as long the parent window is alive itself.
|
101
|
+
In other circumstances you should take care to track the lifetime of the window that is referenced.
|
102
|
+
|
103
|
+
Secondly, as already indicated above not all window instances will be automatically destroyed. It is for example fairly
|
104
|
+
common in more complex applications to create and show other windows as response to events triggered in the toplevel
|
105
|
+
window. These windows will not (and should not) be automatically designated as toplevel window but they are also not
|
106
|
+
owned (i.e. not child windows). Closing these windows will not automatically destroy them (which is a good thing as
|
107
|
+
these are often re-shown after renewed events from the toplevel window) and will also not be automatically destroyed
|
108
|
+
when any parent window is destroyed. This means they pose a threat for potential memory leaks.<br>
|
109
|
+
In case it concerns a fairly simple application which creates one or two of these sub-windows and needs to keep these
|
110
|
+
around for most or all of the lifetime of the application this is not really an issue as the window will be cleaned up
|
111
|
+
at application exit eventually. If however it concerns a more complex application which potentially could create a large
|
112
|
+
number of these sub windows (probably each only used for limited purposes) it would be advisable to track instances and
|
113
|
+
destroy these on a regular basis when not used (closed) possibly re-creating them as needed.
|
114
|
+
|
115
|
+
Dialogs are special cases of toplevel windows which are not automatically destroyed when closed. The wxRuby library
|
116
|
+
therefor provides special support to ease handling the destruction of these. See [here](03_dialogs.md) for more details.
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 3. wxRuby Dialogs
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 3. wxRuby Dialogs
|
7
|
+
|
8
|
+
Dialogs are a special class of window which are never automatically destroyed in wxWidgets.
|
9
|
+
In C++ this does not cause a lot of management overhead for application programmers because of the possibility of
|
10
|
+
static declaration of dialogs instances where the statically declared object is automatically destructed as execution
|
11
|
+
leaves the declaration scope.<br>
|
12
|
+
This kind of construct does not exist in Ruby where everything is dynamically allocated and garbage collection normally
|
13
|
+
takes care of releasing objects that have gone *'out of scope'*.
|
14
|
+
|
15
|
+
Like any non-owned, non-toplevel windows as discussed [here](02_lifecycles.md) this means dialogs should be explicitly
|
16
|
+
destroyed in program code as appropriate like:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
dlg = Wx::MessageDialog.new(parent, 'Select Yes or No', "Confirmation", Wx::YES_NO)
|
20
|
+
if dlg.show_modal == Wx::ID_YES
|
21
|
+
# do something
|
22
|
+
end
|
23
|
+
dlg.destroy
|
24
|
+
```
|
25
|
+
|
26
|
+
Although this is sometimes useful (for example in cases where a dialog is repeatedly used), most of the time this makes
|
27
|
+
for somewhat bothersome programming.
|
28
|
+
|
29
|
+
Luckily wxRuby has a solution for this.
|
30
|
+
|
31
|
+
For all dialog classes (which includes Wx::Dialog and all it's derivatives, including user defined) the library defines
|
32
|
+
a module function which is identically named to the dialog class in the same scope as where the dialog class has been
|
33
|
+
first defined. This is similar to the module functions Ruby itself defines for the basic object classes like `Integer`,
|
34
|
+
`String`, `Array`, `Hash` and such for the `Kernel` module.<br>
|
35
|
+
These dialog *functors* accept the same arguments as the dialog class's constructor with the addition of a block. The
|
36
|
+
*functor* will call the class constructor and pass the created dialog instance as argument to the block. After returning
|
37
|
+
from the block the dialog instance will automatically be destroyed. So, using this approach we could write the previous
|
38
|
+
example like:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
Wx.MessageDialog(parent, 'Select Yes or No', "Confirmation", Wx::YES_NO) do |dlg|
|
42
|
+
if dlg.show_modal == Wx::ID_YES
|
43
|
+
# do something
|
44
|
+
end
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
Even better, if the only purpose is to show the dialog until closed without caring for the result we can leave out the
|
49
|
+
block. In that case the *functor* will simply create the dialog instance, call `#show_modal` on it and destroy the
|
50
|
+
instance after returning from `#show_modal` like:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
Wx.MessageDialog(parent, 'Hello world!', 'Information', Wx::OK)
|
54
|
+
```
|
55
|
+
|
56
|
+
Regular dialog constructors are still usable for situations where the dialog instance should have a
|
57
|
+
prolonged lifetime or where different modeless behavior is required.
|
@@ -0,0 +1,143 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 4. wxRuby Enum values
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 4. wxRuby Enum values
|
7
|
+
|
8
|
+
The wxWidget library liberally mixes integer constants and enum values for things like IDs, style flags
|
9
|
+
and option flags and such without much consistency.<br>
|
10
|
+
In previous wxRuby versions these were all mapped to integer constants which had 2 distinct disadvantages.
|
11
|
+
|
12
|
+
- **loss of scoping**<br>
|
13
|
+
Integer constants for enum values would all be declared in the enclosing scope for the enum declaration loosing
|
14
|
+
the naming scope which originally existed in C++ (excepting anonymous enums).
|
15
|
+
|
16
|
+
- **loss of type-safety**<br>
|
17
|
+
Constants for enum values with identical integer values are indistinguishable from each other.
|
18
|
+
|
19
|
+
The wxRuby3 project attempts to provide a solution to that by introducing the `Wx::Enum` class which
|
20
|
+
is used as a base class for mapping all (named) wxWidget enums to Ruby.
|
21
|
+
The reference documentation for the `Wx::Enum` class can be found [here](https://mcorino.github.io/wxRuby3/Wx/Enum.html).
|
22
|
+
|
23
|
+
Any named wxWidget enum is mapped to a similarly named (Rubified C++ name) derived Enum class with each enum value
|
24
|
+
defined as a constant of the enum class referencing an instance of the enum class with the corresponding
|
25
|
+
integer value like for example the 'wxSystemFont' enum which is defined in wxRuby as:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
module Wx
|
29
|
+
class SystemFont < Wx::Enum
|
30
|
+
|
31
|
+
# Original equipment manufacturer dependent fixed-pitch font.
|
32
|
+
#
|
33
|
+
SYS_OEM_FIXED_FONT = Wx::SystemFont.new(10)
|
34
|
+
|
35
|
+
# Windows fixed-pitch (monospaced) font.
|
36
|
+
#
|
37
|
+
SYS_ANSI_FIXED_FONT = Wx::SystemFont.new(11)
|
38
|
+
|
39
|
+
# Windows variable-pitch (proportional) font.
|
40
|
+
#
|
41
|
+
SYS_ANSI_VAR_FONT = Wx::SystemFont.new(12)
|
42
|
+
|
43
|
+
# System font.
|
44
|
+
#
|
45
|
+
SYS_SYSTEM_FONT = Wx::SystemFont.new(13)
|
46
|
+
|
47
|
+
# Device-dependent font.
|
48
|
+
#
|
49
|
+
SYS_DEVICE_DEFAULT_FONT = Wx::SystemFont.new(14)
|
50
|
+
|
51
|
+
# Default font for user interface objects such as menus and dialog boxes.
|
52
|
+
#
|
53
|
+
SYS_DEFAULT_GUI_FONT = Wx::SystemFont.new(17)
|
54
|
+
|
55
|
+
end # SystemFont
|
56
|
+
end
|
57
|
+
```
|
58
|
+
|
59
|
+
or the 'wxBorder' enum which is defined in wxRuby as:
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
module Wx
|
63
|
+
# Border flags for {Wx::Window}.
|
64
|
+
class Border < Wx::Enum
|
65
|
+
|
66
|
+
# This is different from {Wx::Border::BORDER_NONE} as by default the controls do have a border.
|
67
|
+
#
|
68
|
+
BORDER_DEFAULT = Wx::Border.new(0)
|
69
|
+
|
70
|
+
#
|
71
|
+
#
|
72
|
+
BORDER_NONE = Wx::Border.new(2097152)
|
73
|
+
|
74
|
+
#
|
75
|
+
#
|
76
|
+
BORDER_STATIC = Wx::Border.new(16777216)
|
77
|
+
|
78
|
+
#
|
79
|
+
#
|
80
|
+
BORDER_SIMPLE = Wx::Border.new(33554432)
|
81
|
+
|
82
|
+
#
|
83
|
+
#
|
84
|
+
BORDER_RAISED = Wx::Border.new(67108864)
|
85
|
+
|
86
|
+
#
|
87
|
+
#
|
88
|
+
BORDER_SUNKEN = Wx::Border.new(134217728)
|
89
|
+
|
90
|
+
#
|
91
|
+
#
|
92
|
+
BORDER_DOUBLE = Wx::Border.new(268435456)
|
93
|
+
|
94
|
+
#
|
95
|
+
#
|
96
|
+
BORDER_THEME = Wx::Border.new(268435456)
|
97
|
+
|
98
|
+
#
|
99
|
+
#
|
100
|
+
BORDER_MASK = Wx::Border.new(522190848)
|
101
|
+
|
102
|
+
end # Border
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
106
|
+
Enum instances are interchangeable with integer constants in wxRuby with respect to arithmetic or logical
|
107
|
+
operations. This make it possible to use enum values to construct integer bitflag arguments like:
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
Wx::TextCtrl.new(pane, Wx::ID_ANY, sample_desc.description, style: Wx::TE_MULTILINE|Wx::TE_READONLY|Wx::BORDER_NONE)
|
111
|
+
```
|
112
|
+
|
113
|
+
where `Wx::ID_ANY` is a `Wx::StandardID` enum instance passed to provide an integer argument value, `Wx::TE_MULTILINE`
|
114
|
+
and `Wx::TE_READONLY` are simple integer constants and `Wx::BORDER_NONE` is a `Wx::Border` enum instance.
|
115
|
+
|
116
|
+
In other cases however enum values can provide just the right kind of type safety where explicit enum values are
|
117
|
+
expected like for example with:
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
Wx::Font.new(36, Wx::FONTFAMILY_SWISS, Wx::FONTSTYLE_NORMAL, Wx::FONTWEIGHT_NORMAL)
|
121
|
+
```
|
122
|
+
|
123
|
+
where the `Wx::Font` constructor definition is:
|
124
|
+
|
125
|
+
> initialize(pointSize, family, style, weight, underline = false, faceName = `Wx::EMPTY_STRING`, encoding = `Wx::FONTENCODING_DEFAULT`) ⇒ `Wx::Font`
|
126
|
+
|
127
|
+
with the following parameter specification:
|
128
|
+
|
129
|
+
> - pointSize (`Integer`)
|
130
|
+
> - family (`Wx::FontFamily`)
|
131
|
+
> - style (`Wx::FontStyle`)
|
132
|
+
> - weight (`Wx::FontWeight`)
|
133
|
+
> - underline (`true`, `false`) (defaults to: `false`)
|
134
|
+
> - faceName (`String`) (defaults to: `Wx::EMPTY_STRING`)
|
135
|
+
> - encoding (`Wx::FontEncoding`) (defaults to: `Wx::FONTENCODING_DEFAULT`)
|
136
|
+
|
137
|
+
In this case the constructor explicitly expects specific enum value types for *family*, *style* and *weigth* and
|
138
|
+
providing the integer literal value `74` instead of `Wx::FONTFAMILY_SWISS` (or any other constant representing the same
|
139
|
+
integer value) will not work (raises an exception) although the integer values for the two are equal.
|
140
|
+
|
141
|
+
As you have probably noticed it is not required to use the full naming for an enum instance constant (like
|
142
|
+
`Wx::FontFamily::FONTFAMILY_SWISS`). All enum value constants are accessible from the naming scope where the enum class
|
143
|
+
to which they belong has been declared.
|
@@ -0,0 +1,166 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 5. wxRuby Event Handling
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 5. wxRuby Event Handling
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
Event handling is the core of runtime code execution in event based frameworks like wxWidgets which means it needs to
|
11
|
+
be fully supported by wxRuby. Fortunately it is.<br>
|
12
|
+
As Ruby is a fully dynamic language though the statically declared event tables typical for wxWidgets application are not.<br>
|
13
|
+
Instead wxRuby offers a dynamic solution that is just as easy to use and even offers more flexibility in a typical Ruby-way.
|
14
|
+
|
15
|
+
## Event handlers
|
16
|
+
|
17
|
+
Instead of the `EVT_XXX` event handler declaration macros used in wxWidgets wxRuby provides similarly named event handler
|
18
|
+
definition methods for each of the known event declarations which are inherited by **all** classes derived from `Wx::EvtHandler`
|
19
|
+
(which includes all window classes, the `Wx::App` class and `Wx::Timer` as well as various other classes).<br>
|
20
|
+
|
21
|
+
Naming is (mostly) identical but rubified. So `EVT_MENU` becomes `evt_menu`, `EVT_IDLE` becomes `evt_idle`, `EVT_UPDATE_UI`
|
22
|
+
becomes `evt_update_ui` etc.
|
23
|
+
|
24
|
+
Like the event handler macros some of these methods require a single (window) id (like `evt_menu`) or a range of of ids
|
25
|
+
(specified through a first and last id like for `evt_update_ui_range`) and some require only a handler definition (like
|
26
|
+
`evt_idle`).
|
27
|
+
|
28
|
+
Event handler setup is typically something done during the initialization of an event handler object (like a window) but
|
29
|
+
this is not required. As all event handlers are assigned dynamically in wxRuby you can setup (some) event handlers at a
|
30
|
+
later moment. You could also disconnect earlier activated handlers at any time (see `Wx::EvtHandler#disconnect`).
|
31
|
+
|
32
|
+
In case of some frame class `MyForm` including a menu a wxWidgets static event handling table like:
|
33
|
+
|
34
|
+
```c++
|
35
|
+
wxBEGIN_EVENT_TABLE(MyForm, wxFrame)
|
36
|
+
EVT_IDLE(MyForm::OnIdle)
|
37
|
+
EVT_MOVE(MyForm::OnMove)
|
38
|
+
EVT_SIZE(MyForm::OnResize)
|
39
|
+
|
40
|
+
EVT_MENU( wxID_ABOUT, MyForm::OnAbout )
|
41
|
+
EVT_MENU( wxID_EXIT, MyForm::OnCloseClick )
|
42
|
+
wxEND_EVENT_TABLE()
|
43
|
+
```
|
44
|
+
|
45
|
+
could translate to event handler initializations in wxRuby like this:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
class MyForm < Wx::Frame
|
49
|
+
|
50
|
+
def initialize(title)
|
51
|
+
super(nil, title: title)
|
52
|
+
|
53
|
+
# initialize frame elements
|
54
|
+
# ...
|
55
|
+
|
56
|
+
# setup event handlers
|
57
|
+
evt_idle do |evt|
|
58
|
+
# do something
|
59
|
+
evt.skip
|
60
|
+
end
|
61
|
+
evt_move :on_move
|
62
|
+
|
63
|
+
evt_size method(:on_size)
|
64
|
+
|
65
|
+
evt_menu(Wx::ID_ABOUT, Proc.new { on_about })
|
66
|
+
evt_menu(Wx::ID_EXIT) { close(false) }
|
67
|
+
end
|
68
|
+
|
69
|
+
def on_idle(evt)
|
70
|
+
#...
|
71
|
+
end
|
72
|
+
|
73
|
+
def on_move(evt)
|
74
|
+
#...
|
75
|
+
end
|
76
|
+
|
77
|
+
def on_resize(evt)
|
78
|
+
#...
|
79
|
+
end
|
80
|
+
|
81
|
+
def on_about
|
82
|
+
#...
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
```
|
87
|
+
|
88
|
+
As you can see there are multiple options for specifying the actual handler. Any event handler definition method will
|
89
|
+
accept either a `Symbol` (or `String`) specifying a method of the receiver (the event handler instance), a `Proc` object
|
90
|
+
(or lambda) or a `Method` object.
|
91
|
+
|
92
|
+
Event handler methods are not required to declare the single event object argument. The event handler definition method
|
93
|
+
will take care of checking and handling method arity.
|
94
|
+
|
95
|
+
## Custom Events
|
96
|
+
|
97
|
+
Custom event definitions are fully supported in wxRuby including the definition of new event types.
|
98
|
+
|
99
|
+
New event classes can be registered with `Wx::EvtHandler#register_class` which returns the new event type for the event
|
100
|
+
class like this:
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
# A custom type of event associated with a target control. Note that for
|
104
|
+
# user-defined controls, the associated event should inherit from
|
105
|
+
# Wx::CommandEvent rather than Wx::Event.
|
106
|
+
class ProgressUpdateEvent < Wx::CommandEvent
|
107
|
+
# Create a new unique constant identifier, associate this class
|
108
|
+
# with events of that identifier and create an event handler definition method 'evt_update_progress'
|
109
|
+
# for setting up this handler.
|
110
|
+
EVT_UPDATE_PROGRESS = Wx::EvtHandler.register_class(self, nil, 'evt_update_progress', 0)
|
111
|
+
|
112
|
+
def initialize(value, gauge)
|
113
|
+
# The constant id is the arg to super
|
114
|
+
super(EVT_UPDATE_PROGRESS)
|
115
|
+
# simply use instance variables to store custom event associated data
|
116
|
+
@value = value
|
117
|
+
@gauge = gauge
|
118
|
+
end
|
119
|
+
|
120
|
+
attr_reader :value, :gauge
|
121
|
+
end
|
122
|
+
```
|
123
|
+
|
124
|
+
Check the reference documentation [here](https://mcorino.github.io/wxRuby3/Wx/EvtHandler.html) for more information.
|
125
|
+
|
126
|
+
## Event processing
|
127
|
+
|
128
|
+
In wxRuby overruling the normal chain of event handling has been limited to being able to override the default
|
129
|
+
`Wx::EvtHandler#try_before` and `Wx::EvtHandler#try_after` methods. These are the advised interception points for events
|
130
|
+
when you really need to do this.<br>
|
131
|
+
Overriding `Wx::EvtHandler#process_event` is not considered to be efficient (or desired)
|
132
|
+
for wxRuby applications and has therefor been blocked.
|
133
|
+
|
134
|
+
## Event insertion
|
135
|
+
|
136
|
+
Use of `Wx::EvtHandler#process_event` or `Wx::EvtHandler#queue_event` and `Wx::EvtHandler#add_pending_event` in wxRuby to
|
137
|
+
trigger event processing of user generated (possibly custom) events is fully supported.
|
138
|
+
|
139
|
+
As with wxWidgets `Wx::EvtHandler#process_event` will trigger immediate processing of the given event, not returning before
|
140
|
+
this has finished.<br>
|
141
|
+
`Wx::EvtHandler#queue_event` and `Wx::EvtHandler#add_pending_event` on the other hand will post (append) the given event
|
142
|
+
to the event queue and return immediately after that is done. The event will than be processed after any other events in
|
143
|
+
the queue. Unlike in wxWidgets in wxRuby there is no practical difference between `queue_event` and `add_pending_event`.
|
144
|
+
|
145
|
+
## Asynchronous execution
|
146
|
+
|
147
|
+
In addition to `Wx::EvtHandler#queue_event` and `Wx::EvtHandler#add_pending_event` to trigger asynchronous processing
|
148
|
+
wxRuby also supports `Wx::EvtHandler#call_after`.
|
149
|
+
|
150
|
+
This method provides the means to trigger asynchronous execution of arbitrary code and because it has been rubified is
|
151
|
+
easy and powerful to use. Like with event handler definition this method accepts a `Symbol` or `String` (identifying a
|
152
|
+
method of the receiver), a `Proc` object (or lambda), a `Method` object or a block. Unlike an event handler method no
|
153
|
+
event object will be passed but rather any arguments passed to the `call_after` method in addition to the 'handler'.
|
154
|
+
|
155
|
+
Given an event handler object `call_after` could be used like:
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
# sync call to method of event handler (no args)
|
159
|
+
evt_handler.call_after :async_method
|
160
|
+
|
161
|
+
# async call of lambda (single arg)
|
162
|
+
evt_handler.call_after(->(txt) { Wx.log_info(txt) }, "Hello")
|
163
|
+
|
164
|
+
# async call of block
|
165
|
+
evt_handler.call_after('Call nr. %d', 1) { |fmt, num| Wx.log_info(fmt, num) }
|
166
|
+
```
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 6. wxRuby geometry classes
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 6. wxRuby Geometry classes
|
7
|
+
|
8
|
+
## Size (Wx::Size) and position (Wx::Point)
|
9
|
+
|
10
|
+
The wxWidgets API has a lot methods that require either `wxSize`, `wxPoint` or both type of value as argument. Although
|
11
|
+
this can be specified in C++ still relatively concise like
|
12
|
+
```ruby
|
13
|
+
new wxFrame(nullptr, -1, "title", wxPoint(0,0), wxSize(500,400))
|
14
|
+
```
|
15
|
+
in Ruby this expands to the more verbose
|
16
|
+
```ruby
|
17
|
+
Wx::Frame.new(nil, -1, 'title', Wx::Point.new(0,0), Wx::Size.new(500,400))
|
18
|
+
```
|
19
|
+
which starts to feel awkward to specify what are in essence just pairs of integers.
|
20
|
+
|
21
|
+
To provide a simpler, more compact and more Ruby-like, alternative the wxRuby API therefor supports specifying arrays
|
22
|
+
of integer pairs in (almost) all cases where `Wx::Size` or `Wx::Point` is expected. So the following code is equivalent
|
23
|
+
to the previous code:
|
24
|
+
```ruby
|
25
|
+
Wx::Frame.new(nil, -1, 'title', [0,0], [500,400])
|
26
|
+
```
|
27
|
+
|
28
|
+
In addition `Wx::Size` and `Wx::Point` support parallel assignment semantics such that you can write code like
|
29
|
+
```ruby
|
30
|
+
win.paint do | dc |
|
31
|
+
# ...
|
32
|
+
x, y = win.get_position
|
33
|
+
dc.draw_circle(x, y, 4)
|
34
|
+
dc.draw_rectangle(x-4, y-4, 8, 8)
|
35
|
+
end
|
36
|
+
```
|
37
|
+
instead of
|
38
|
+
```ruby
|
39
|
+
win.paint do | dc |
|
40
|
+
# ...
|
41
|
+
pos = win.get_position
|
42
|
+
dc.draw_circle(pos.x, pos.y, 4)
|
43
|
+
dc.draw_rectangle(pos.x-4, pos.y-4, 8, 8)
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
## Areas (Wx::Rect)
|
48
|
+
|
49
|
+
Like `Wx::Size` and `Wx::Point` wxRuby supports parallel assignment for `Wx::Rect` such that you can write code like
|
50
|
+
```ruby
|
51
|
+
x, y, width, height = win.get_client_rect
|
52
|
+
```
|
53
|
+
|
54
|
+
Providing arrays of integers as alternative for `Wx::Rect` arguments is not supported as specifying `[0, 0, 20, 40]` is
|
55
|
+
ambiguous. This could either mean a rectangle with origin `x=0,y=0` and size `width=20,height=40` (`Wx::Rect.new(0,0,20,40)`)
|
56
|
+
or a rectangle from origin top left `x=0,y=0` to point bottom right `x=20,y=40` (`Wx::Rect.new(Wx::Point.new(0,0), Wx::Point.new(20,40))`).
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 7. wxRuby Colour and Font
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 6. wxRuby Colour and Font
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
The wxWidgets API makes use of typical C++ features to support automatic conversion of certain types providing
|
11
|
+
user friendly options for argument specifications. This way for example a developer does not need to explicitly
|
12
|
+
declare a colour object construction where a colour instance value is expected but rather can specify a simple string
|
13
|
+
constant like:
|
14
|
+
|
15
|
+
```C++
|
16
|
+
wxPen pen;
|
17
|
+
pen.SetColour("CYAN"); // instead of pen.SetColour(wxColour("CYAN"));
|
18
|
+
```
|
19
|
+
|
20
|
+
For the wxRuby API similar support has been achieved for various much used argument types.
|
21
|
+
|
22
|
+
## Colour
|
23
|
+
|
24
|
+
Wherever a `Wx::Colour` object is expected as an argument wxRuby supports the specification of `String` or `Symbol`
|
25
|
+
values as a developer friendly alternative. This way the following code is equivalent:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
pen = Wx::Pen.new
|
29
|
+
pen.set_colour(Wx::Colour.new("CYAN"))
|
30
|
+
|
31
|
+
pen = Wx::Pen.new
|
32
|
+
pen.set_colour("CYAN")
|
33
|
+
|
34
|
+
pen = Wx::Pen.new
|
35
|
+
pen.set_colour(:CYAN)
|
36
|
+
```
|
37
|
+
|
38
|
+
## Font
|
39
|
+
|
40
|
+
Wherever a `Wx::Font` object is expected as an argument wxRuby supports the specification of a `Wx::FontInfo` object.
|
41
|
+
This way the following code is equivalent:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
title = Wx::StaticText.new(self, -1, "Title")
|
45
|
+
title.set_font(Wx::Font.new(18, Wx::FontFamily::FONTFAMILY_SWISS, Wx::FontStyle::FONTSTYLE_NORMAL, Wx::FontWeight::FONTWEIGHT_BOLD))
|
46
|
+
|
47
|
+
title = Wx::StaticText.new(self, -1, "Title")
|
48
|
+
title.set_font(Wx::FontInfo.new(18)
|
49
|
+
.family(Wx::FontFamily::FONTFAMILY_SWISS)
|
50
|
+
.style(Wx::FontStyle::FONTSTYLE_NORMAL)
|
51
|
+
.bold())
|
52
|
+
```
|