wxruby3 0.9.2-x64-mingw-ucrt → 0.9.4-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 +4 -4
- data/INSTALL.md +35 -29
- data/README.md +24 -15
- 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/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/book_ctrl_base.rb +16 -0
- data/lib/wx/core/combobox.rb +13 -3
- data/lib/wx/core/config.rb +454 -83
- data/lib/wx/core/controlwithitems.rb +40 -130
- data/lib/wx/core/enum.rb +17 -1
- data/lib/wx/core/event.rb +6 -1
- data/lib/wx/core/events/evt_list.rb +5 -4
- data/lib/wx/core/evthandler.rb +8 -2
- data/lib/wx/core/generic_validator.rb +312 -0
- data/lib/wx/core/listbox.rb +2 -2
- data/lib/wx/core/log.rb +1 -1
- data/lib/wx/core/notebook.rb +10 -8
- data/lib/wx/core/owner_drawn_combobox.rb +45 -0
- data/lib/wx/core/peristent_object.rb +15 -0
- data/lib/wx/core/persistence_manager.rb +39 -0
- data/lib/wx/core/persistent_window.rb +16 -0
- data/lib/wx/core/size.rb +4 -0
- data/lib/wx/core/sizer.rb +1 -2
- data/lib/wx/core/standard_paths.rb +22 -0
- data/lib/wx/core/text_entry.rb +4 -1
- data/lib/wx/core/top_level_window.rb +16 -0
- data/lib/wx/core/treebook.rb +18 -0
- data/lib/wx/core/validator.rb +70 -5
- data/lib/wx/core/window.rb +3 -7
- data/lib/wx/core.rb +4 -0
- data/lib/wx/doc/art_locator.rb +1 -0
- data/lib/wx/doc/book_ctrl_base.rb +19 -0
- data/lib/wx/doc/comboctrl.rb +18 -0
- data/lib/wx/doc/config.rb +101 -41
- data/lib/wx/doc/controlwithitems.rb +16 -0
- data/lib/wx/doc/date_picker_ctrl.rb +23 -0
- data/lib/wx/doc/editable_listbox.rb +44 -0
- data/lib/wx/doc/enum.rb +15 -0
- data/lib/wx/doc/event.rb +12 -0
- data/lib/wx/doc/extra/12_client_data.md +89 -0
- data/lib/wx/doc/extra/13_validators.md +139 -0
- data/lib/wx/doc/extra/14_config.md +101 -0
- data/lib/wx/doc/extra/15_persistence.md +148 -0
- data/lib/wx/doc/gdi_common.rb +4 -0
- data/lib/wx/doc/gen/about_dialog_info.rb +25 -0
- data/lib/wx/doc/gen/accelerator.rb +7 -1
- data/lib/wx/doc/gen/accessible.rb +13 -0
- data/lib/wx/doc/gen/activity_indicator.rb +7 -0
- data/lib/wx/doc/gen/animation.rb +12 -0
- data/lib/wx/doc/gen/animation_ctrl.rb +10 -0
- data/lib/wx/doc/gen/any_button.rb +17 -1
- data/lib/wx/doc/gen/app.rb +35 -1
- data/lib/wx/doc/gen/app_traits.rb +38 -5
- data/lib/wx/doc/gen/art_provider.rb +14 -0
- data/lib/wx/doc/gen/aui/aui_dock_art.rb +12 -0
- data/lib/wx/doc/gen/aui/aui_floating_frame.rb +1 -0
- data/lib/wx/doc/gen/aui/aui_manager.rb +24 -1
- data/lib/wx/doc/gen/aui/aui_manager_event.rb +9 -1
- data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +3 -0
- data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +2 -0
- data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +3 -1
- data/lib/wx/doc/gen/aui/aui_notebook.rb +20 -2
- data/lib/wx/doc/gen/aui/aui_notebook_event.rb +2 -1
- data/lib/wx/doc/gen/aui/aui_pane_info.rb +30 -1
- data/lib/wx/doc/gen/aui/aui_tab_art.rb +6 -0
- data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +1 -0
- data/lib/wx/doc/gen/aui/aui_tool_bar.rb +11 -0
- data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +2 -0
- data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +2 -1
- data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +4 -0
- data/lib/wx/doc/gen/banner_window.rb +7 -0
- data/lib/wx/doc/gen/bitmap.rb +64 -3
- data/lib/wx/doc/gen/bitmap_button.rb +6 -1
- data/lib/wx/doc/gen/bitmap_combo_box.rb +9 -3
- data/lib/wx/doc/gen/book_ctrl_base.rb +17 -2
- data/lib/wx/doc/gen/book_ctrl_event.rb +3 -1
- data/lib/wx/doc/gen/box_sizer.rb +5 -0
- data/lib/wx/doc/gen/brush.rb +16 -1
- data/lib/wx/doc/gen/busy_info.rb +8 -0
- data/lib/wx/doc/gen/button.rb +11 -3
- data/lib/wx/doc/gen/calculate_layout_event.rb +4 -0
- data/lib/wx/doc/gen/calendar_ctrl.rb +22 -0
- data/lib/wx/doc/gen/calendar_date_attr.rb +1 -0
- data/lib/wx/doc/gen/calendar_event.rb +3 -1
- data/lib/wx/doc/gen/caret.rb +3 -0
- data/lib/wx/doc/gen/check_box.rb +10 -0
- data/lib/wx/doc/gen/check_list_box.rb +3 -0
- data/lib/wx/doc/gen/choice.rb +14 -2
- data/lib/wx/doc/gen/choicebook.rb +1 -0
- data/lib/wx/doc/gen/client_dc.rb +1 -0
- data/lib/wx/doc/gen/clipboard.rb +9 -0
- data/lib/wx/doc/gen/collapsible_pane.rb +3 -0
- data/lib/wx/doc/gen/collapsible_pane_event.rb +1 -0
- data/lib/wx/doc/gen/colour.rb +20 -0
- data/lib/wx/doc/gen/colour_dialog.rb +10 -0
- data/lib/wx/doc/gen/colour_picker_ctrl.rb +4 -0
- data/lib/wx/doc/gen/colour_picker_event.rb +1 -0
- data/lib/wx/doc/gen/combo_box.rb +20 -1
- data/lib/wx/doc/gen/combo_ctrl.rb +54 -295
- data/lib/wx/doc/gen/command_link_button.rb +8 -0
- data/lib/wx/doc/gen/context_help_button.rb +7 -1
- data/lib/wx/doc/gen/control.rb +12 -0
- data/lib/wx/doc/gen/control_with_items.rb +45 -9
- data/lib/wx/doc/gen/core.rb +2 -2
- data/lib/wx/doc/gen/cursor.rb +4 -0
- data/lib/wx/doc/gen/data_format.rb +1 -0
- data/lib/wx/doc/gen/data_object.rb +27 -5
- data/lib/wx/doc/gen/date_event.rb +2 -1
- data/lib/wx/doc/gen/date_picker_ctrl.rb +7 -1
- data/lib/wx/doc/gen/dc.rb +87 -3
- data/lib/wx/doc/gen/dial_up_event.rb +2 -0
- data/lib/wx/doc/gen/dial_up_manager.rb +12 -0
- data/lib/wx/doc/gen/dialog.rb +42 -3
- data/lib/wx/doc/gen/dir_dialog.rb +6 -1
- data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +1 -0
- data/lib/wx/doc/gen/dir_picker_ctrl.rb +5 -0
- data/lib/wx/doc/gen/drag_drop.rb +20 -0
- data/lib/wx/doc/gen/drag_image.rb +7 -0
- data/lib/wx/doc/gen/editable_list_box.rb +5 -3
- data/lib/wx/doc/gen/event.rb +26 -11
- data/lib/wx/doc/gen/event_blocker.rb +2 -1
- data/lib/wx/doc/gen/event_filter.rb +3 -2
- data/lib/wx/doc/gen/event_list.rb +4 -4
- data/lib/wx/doc/gen/events.rb +165 -26
- data/lib/wx/doc/gen/evt_handler.rb +40 -2
- data/lib/wx/doc/gen/ext_help_controller.rb +9 -0
- data/lib/wx/doc/gen/file_ctrl.rb +11 -2
- data/lib/wx/doc/gen/file_ctrl_event.rb +5 -1
- data/lib/wx/doc/gen/file_dialog.rb +13 -0
- data/lib/wx/doc/gen/file_dialog_custom_control.rb +12 -0
- data/lib/wx/doc/gen/file_dialog_customize_hook.rb +11 -2
- data/lib/wx/doc/gen/file_dir_picker_event.rb +2 -1
- data/lib/wx/doc/gen/file_picker_ctrl.rb +4 -0
- data/lib/wx/doc/gen/file_system.rb +17 -1
- data/lib/wx/doc/gen/find_dialog_event.rb +2 -1
- data/lib/wx/doc/gen/find_replace_data.rb +1 -0
- data/lib/wx/doc/gen/find_replace_dialog.rb +3 -0
- data/lib/wx/doc/gen/flex_grid_sizer.rb +13 -0
- data/lib/wx/doc/gen/font.rb +75 -3
- data/lib/wx/doc/gen/font_data.rb +14 -0
- data/lib/wx/doc/gen/font_dialog.rb +6 -0
- data/lib/wx/doc/gen/font_picker_ctrl.rb +8 -0
- data/lib/wx/doc/gen/font_picker_event.rb +1 -0
- data/lib/wx/doc/gen/frame.rb +24 -7
- data/lib/wx/doc/gen/fs_file.rb +22 -0
- data/lib/wx/doc/gen/gauge.rb +8 -0
- data/lib/wx/doc/gen/gb_sizer_item.rb +5 -0
- data/lib/wx/doc/gen/gcdc.rb +2 -0
- data/lib/wx/doc/gen/gdi_common.rb +50 -8
- data/lib/wx/doc/gen/gdi_object.rb +1 -0
- data/lib/wx/doc/gen/generic_dir_ctrl.rb +7 -0
- data/lib/wx/doc/gen/graphics_context.rb +36 -7
- data/lib/wx/doc/gen/graphics_object.rb +24 -0
- data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +2 -2
- data/lib/wx/doc/gen/grid/grid_cell_attr.rb +14 -4
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +2 -2
- data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +2 -2
- data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_editor.rb +9 -2
- data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +2 -2
- data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +2 -2
- data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +6 -2
- data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +1 -2
- data/lib/wx/doc/gen/grid/grid_ctrl.rb +229 -7
- data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +4 -1
- data/lib/wx/doc/gen/grid/grid_event.rb +4 -1
- data/lib/wx/doc/gen/grid/grid_range_select_event.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_size_event.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_string_table.rb +7 -0
- data/lib/wx/doc/gen/grid/grid_table_base.rb +27 -1
- data/lib/wx/doc/gen/grid/grid_table_message.rb +1 -0
- data/lib/wx/doc/gen/grid_bag_sizer.rb +24 -4
- data/lib/wx/doc/gen/grid_sizer.rb +11 -0
- data/lib/wx/doc/gen/gui_event_loop.rb +12 -2
- data/lib/wx/doc/gen/header_ctrl.rb +106 -6
- data/lib/wx/doc/gen/header_ctrl_event.rb +5 -1
- data/lib/wx/doc/gen/help_controller.rb +11 -0
- data/lib/wx/doc/gen/help_provider.rb +12 -3
- data/lib/wx/doc/gen/html/html_cell.rb +25 -0
- data/lib/wx/doc/gen/html/html_cell_event.rb +3 -1
- data/lib/wx/doc/gen/html/html_easy_printing.rb +13 -1
- data/lib/wx/doc/gen/html/html_help_controller.rb +18 -0
- data/lib/wx/doc/gen/html/html_help_data.rb +5 -0
- data/lib/wx/doc/gen/html/html_help_window.rb +8 -0
- data/lib/wx/doc/gen/html/html_link_event.rb +1 -0
- data/lib/wx/doc/gen/html/html_list_box.rb +49 -9
- data/lib/wx/doc/gen/html/html_printout.rb +7 -0
- data/lib/wx/doc/gen/html/html_window.rb +31 -0
- data/lib/wx/doc/gen/hyperlink_ctrl.rb +2 -1
- data/lib/wx/doc/gen/hyperlink_event.rb +1 -0
- data/lib/wx/doc/gen/icon.rb +19 -1
- data/lib/wx/doc/gen/icon_location.rb +1 -0
- data/lib/wx/doc/gen/image.rb +67 -10
- data/lib/wx/doc/gen/image_list.rb +12 -2
- data/lib/wx/doc/gen/info_bar.rb +12 -0
- data/lib/wx/doc/gen/keyboard_state.rb +11 -0
- data/lib/wx/doc/gen/list_box.rb +20 -3
- data/lib/wx/doc/gen/list_ctrl.rb +89 -0
- data/lib/wx/doc/gen/list_event.rb +11 -1
- data/lib/wx/doc/gen/listbook.rb +1 -0
- data/lib/wx/doc/gen/locale.rb +22 -0
- data/lib/wx/doc/gen/log.rb +42 -0
- data/lib/wx/doc/gen/mdi_client_window.rb +4 -1
- data/lib/wx/doc/gen/mdi_frame.rb +27 -4
- data/lib/wx/doc/gen/media_ctrl.rb +17 -0
- data/lib/wx/doc/gen/media_event.rb +2 -1
- data/lib/wx/doc/gen/memory_dc.rb +10 -0
- data/lib/wx/doc/gen/menu.rb +48 -7
- data/lib/wx/doc/gen/menu_bar.rb +32 -13
- data/lib/wx/doc/gen/menu_item.rb +26 -0
- data/lib/wx/doc/gen/message_dialog.rb +10 -0
- data/lib/wx/doc/gen/mini_frame.rb +5 -2
- data/lib/wx/doc/gen/mirror_dc.rb +1 -0
- data/lib/wx/doc/gen/mouse_state.rb +1 -0
- data/lib/wx/doc/gen/multi_choice_dialog.rb +3 -1
- data/lib/wx/doc/gen/non_owned_window.rb +3 -0
- data/lib/wx/doc/gen/notebook.rb +11 -1
- data/lib/wx/doc/gen/num_validator.rb +37 -0
- data/lib/wx/doc/gen/number_entry_dialog.rb +4 -0
- data/lib/wx/doc/gen/object.rb +3 -0
- data/lib/wx/doc/gen/owner_drawn_combo_box.rb +340 -0
- data/lib/wx/doc/gen/paint_dc.rb +1 -0
- data/lib/wx/doc/gen/palette.rb +5 -0
- data/lib/wx/doc/gen/panel.rb +10 -2
- data/lib/wx/doc/gen/pen.rb +30 -1
- data/lib/wx/doc/gen/persistence_manager.rb +135 -0
- data/lib/wx/doc/gen/persistent_object.rb +52 -0
- data/lib/wx/doc/gen/persistent_window.rb +116 -0
- data/lib/wx/doc/gen/pg/numeric_property_validator.rb +2 -1
- data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +4 -1
- data/lib/wx/doc/gen/pg/pg_cell.rb +6 -1
- data/lib/wx/doc/gen/pg/pg_editor.rb +61 -15
- data/lib/wx/doc/gen/pg/pg_multi_button.rb +2 -0
- data/lib/wx/doc/gen/pg/pg_properties.rb +198 -81
- data/lib/wx/doc/gen/pg/pg_property.rb +129 -52
- data/lib/wx/doc/gen/pg/pg_validation_info.rb +2 -0
- data/lib/wx/doc/gen/pg/property_grid.rb +56 -14
- data/lib/wx/doc/gen/pg/property_grid_event.rb +16 -6
- data/lib/wx/doc/gen/pg/property_grid_interface.rb +98 -37
- data/lib/wx/doc/gen/pg/property_grid_manager.rb +29 -7
- data/lib/wx/doc/gen/pg/property_grid_page.rb +11 -4
- data/lib/wx/doc/gen/pg/property_grid_page_state.rb +7 -2
- data/lib/wx/doc/gen/picker_base.rb +11 -1
- data/lib/wx/doc/gen/platform_info.rb +31 -0
- data/lib/wx/doc/gen/popup_window.rb +5 -0
- data/lib/wx/doc/gen/progress_dialog.rb +4 -0
- data/lib/wx/doc/gen/property_sheet_dialog.rb +7 -1
- data/lib/wx/doc/gen/prt/page_setup_dialog.rb +2 -0
- data/lib/wx/doc/gen/prt/post_script_dc.rb +1 -0
- data/lib/wx/doc/gen/prt/preview_frame.rb +4 -0
- data/lib/wx/doc/gen/prt/print_abort_dialog.rb +1 -0
- data/lib/wx/doc/gen/prt/print_data.rb +27 -0
- data/lib/wx/doc/gen/prt/print_dialog.rb +4 -0
- data/lib/wx/doc/gen/prt/printer.rb +42 -5
- data/lib/wx/doc/gen/prt/printer_dc.rb +2 -0
- data/lib/wx/doc/gen/query_layout_info_event.rb +9 -0
- data/lib/wx/doc/gen/radio_box.rb +19 -0
- data/lib/wx/doc/gen/radio_button.rb +9 -0
- data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +63 -0
- data/lib/wx/doc/gen/rbn/ribbon_bar.rb +23 -0
- data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +2 -1
- data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +35 -9
- data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +2 -1
- data/lib/wx/doc/gen/rbn/ribbon_control.rb +10 -0
- data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +17 -7
- data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +2 -1
- data/lib/wx/doc/gen/rbn/ribbon_page.rb +12 -0
- data/lib/wx/doc/gen/rbn/ribbon_panel.rb +11 -0
- data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +2 -1
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +25 -0
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +2 -1
- data/lib/wx/doc/gen/rearrange_ctrl.rb +4 -0
- data/lib/wx/doc/gen/rearrange_list.rb +9 -0
- data/lib/wx/doc/gen/region.rb +42 -13
- data/lib/wx/doc/gen/region_iterator.rb +1 -0
- data/lib/wx/doc/gen/rtc/rich_text_box.rb +25 -8
- data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +41 -4
- data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +1 -0
- data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +23 -11
- data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +74 -0
- data/lib/wx/doc/gen/rtc/rich_text_event.rb +6 -1
- data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +8 -0
- data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +6 -0
- data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +1 -0
- data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +4 -0
- data/lib/wx/doc/gen/rtc/rich_text_image.rb +7 -0
- data/lib/wx/doc/gen/rtc/rich_text_object.rb +64 -4
- data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +51 -4
- data/lib/wx/doc/gen/rtc/rich_text_printing.rb +13 -0
- data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +9 -4
- data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +3 -0
- data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +2 -0
- data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +1 -0
- data/lib/wx/doc/gen/sash_event.rb +5 -1
- data/lib/wx/doc/gen/sash_layout_window.rb +10 -0
- data/lib/wx/doc/gen/sash_window.rb +3 -0
- data/lib/wx/doc/gen/screen_dc.rb +1 -0
- data/lib/wx/doc/gen/scroll_bar.rb +11 -2
- data/lib/wx/doc/gen/scrolled_canvas.rb +20 -4
- data/lib/wx/doc/gen/scrolled_control.rb +20 -4
- data/lib/wx/doc/gen/scrolled_window.rb +20 -4
- data/lib/wx/doc/gen/search_ctrl.rb +6 -0
- data/lib/wx/doc/gen/simplebook.rb +7 -0
- data/lib/wx/doc/gen/single_choice_dialog.rb +3 -1
- data/lib/wx/doc/gen/sizer.rb +79 -9
- data/lib/wx/doc/gen/sizer_item.rb +16 -2
- data/lib/wx/doc/gen/slider.rb +23 -0
- data/lib/wx/doc/gen/spin_button.rb +9 -0
- data/lib/wx/doc/gen/spin_ctrl.rb +11 -0
- data/lib/wx/doc/gen/spin_ctrl_double.rb +7 -0
- data/lib/wx/doc/gen/spin_double_event.rb +4 -1
- data/lib/wx/doc/gen/spin_event.rb +2 -1
- data/lib/wx/doc/gen/splash_screen.rb +2 -0
- data/lib/wx/doc/gen/splitter_event.rb +10 -1
- data/lib/wx/doc/gen/splitter_window.rb +38 -14
- data/lib/wx/doc/gen/static_bitmap.rb +99 -2
- data/lib/wx/doc/gen/static_box.rb +6 -0
- data/lib/wx/doc/gen/static_box_sizer.rb +3 -0
- data/lib/wx/doc/gen/static_line.rb +4 -0
- data/lib/wx/doc/gen/static_text.rb +5 -0
- data/lib/wx/doc/gen/status_bar.rb +17 -3
- data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +174 -6
- data/lib/wx/doc/gen/stc/styled_text_event.rb +27 -1
- data/lib/wx/doc/gen/std_dialog_button_sizer.rb +7 -0
- data/lib/wx/doc/gen/svg_file_dc.rb +9 -0
- data/lib/wx/doc/gen/system_options.rb +8 -0
- data/lib/wx/doc/gen/system_settings.rb +7 -0
- data/lib/wx/doc/gen/task_bar_button.rb +12 -0
- data/lib/wx/doc/gen/task_bar_icon.rb +5 -0
- data/lib/wx/doc/gen/task_bar_icon_event.rb +2 -1
- data/lib/wx/doc/gen/text_attr.rb +27 -0
- data/lib/wx/doc/gen/text_ctrl.rb +27 -3
- data/lib/wx/doc/gen/text_entry.rb +43 -9
- data/lib/wx/doc/gen/text_entry_dialog.rb +12 -0
- data/lib/wx/doc/gen/text_validator.rb +16 -0
- data/lib/wx/doc/gen/time_picker_ctrl.rb +6 -0
- data/lib/wx/doc/gen/timer.rb +8 -0
- data/lib/wx/doc/gen/timer_event.rb +1 -0
- data/lib/wx/doc/gen/tip_provider.rb +5 -0
- data/lib/wx/doc/gen/toggle_button.rb +68 -0
- data/lib/wx/doc/gen/tool_bar.rb +57 -14
- data/lib/wx/doc/gen/tool_tip.rb +6 -0
- data/lib/wx/doc/gen/toolbook.rb +3 -0
- data/lib/wx/doc/gen/top_level_window.rb +34 -3
- data/lib/wx/doc/gen/tree_ctrl.rb +49 -0
- data/lib/wx/doc/gen/tree_event.rb +7 -1
- data/lib/wx/doc/gen/treebook.rb +9 -0
- data/lib/wx/doc/gen/ui_action_simulator.rb +4 -0
- data/lib/wx/doc/gen/utils.rb +55 -16
- data/lib/wx/doc/gen/v_list_box.rb +21 -0
- data/lib/wx/doc/gen/v_scrolled_window.rb +15 -0
- data/lib/wx/doc/gen/validator.rb +9 -13
- data/lib/wx/doc/gen/variant.rb +6 -0
- data/lib/wx/doc/gen/window.rb +260 -52
- data/lib/wx/doc/gen/window_dc.rb +2 -0
- data/lib/wx/doc/gen/window_disabler.rb +1 -0
- data/lib/wx/doc/gen/with_images.rb +7 -1
- data/lib/wx/doc/gen/wizard.rb +18 -0
- data/lib/wx/doc/gen/wizard_event.rb +3 -1
- data/lib/wx/doc/gen/wizard_page.rb +5 -0
- data/lib/wx/doc/gen/wizard_page_simple.rb +4 -0
- data/lib/wx/doc/gen/wrap_sizer.rb +5 -0
- data/lib/wx/doc/gen/xml_node.rb +14 -0
- data/lib/wx/doc/gen/xml_resource.rb +22 -0
- data/lib/wx/doc/generic_validator.rb +95 -0
- data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
- data/lib/wx/doc/num_validator.rb +387 -0
- data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
- data/lib/wx/doc/persistence_manager.rb +36 -0
- data/lib/wx/doc/persistent_object.rb +27 -0
- data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
- data/lib/wx/doc/static_bitmap.rb +25 -0
- data/lib/wx/doc/text_validator.rb +10 -0
- data/lib/wx/doc/top_level_window.rb +19 -0
- data/lib/wx/doc/treebook.rb +6 -1
- data/lib/wx/doc/validator.rb +113 -0
- data/lib/wx/doc/window.rb +30 -0
- data/lib/wx/html/events/evt_list.rb +0 -10
- data/lib/wx/html/simple_html_listbox.rb +24 -91
- data/lib/wx/keyword_defs.rb +34 -2
- data/lib/wx/rbn/ribbon_gallery.rb +0 -21
- data/lib/wx/version.rb +1 -1
- 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/lib/config/mingw.rb +12 -0
- data/samples/aui/aui.rb +1237 -1233
- data/samples/calendar/calendar.rb +293 -289
- data/samples/controls/get_item_sample.rb +83 -79
- data/samples/controls/htlbox.rb +331 -327
- data/samples/dialogs/dialogs.rb +682 -694
- data/samples/dialogs/wizard.rb +52 -55
- data/samples/dragdrop/dragdrop.rb +146 -142
- data/samples/drawing/bitmap.rb +29 -26
- data/samples/drawing/bitmap_image.rb +84 -80
- data/samples/drawing/graphics_drawing.rb +209 -205
- data/samples/drawing/image_prt.rb +344 -340
- data/samples/drawing/maths_images.rb +18 -1
- data/samples/drawing/rmagic_bitmap_image.rb +88 -84
- data/samples/etc/caret.rb +306 -0
- data/samples/etc/miniframe.rb +65 -60
- data/samples/etc/sash.rb +109 -105
- data/samples/etc/scrollwin.rb +86 -80
- data/samples/etc/system_settings.rb +216 -209
- data/samples/event/activation.rb +72 -67
- data/samples/event/event.rb +160 -153
- data/samples/event/threaded.rb +8 -1
- data/samples/event/update_ui_event.rb +67 -60
- data/samples/grid/grid.rb +188 -181
- data/samples/grid/gridtablebase.rb +136 -129
- data/samples/html/html.rb +208 -204
- data/samples/mdi/mdi.rb +59 -54
- data/samples/minimal/minimal.rb +54 -51
- data/samples/minimal/nothing.rb +1 -0
- data/samples/printing/printing.rb +367 -377
- data/samples/printing/printing2.rb +203 -198
- data/samples/propgrid/propgrid.rb +2312 -2308
- data/samples/propgrid/propgrid_minimal.rb +57 -50
- data/samples/ribbon/ribbon.rb +780 -774
- data/samples/sampler/ext.rb +0 -33
- data/samples/sampler/sample.rb +4 -9
- data/samples/sampler.rb +1 -1
- data/samples/splash/splash.rb +118 -116
- data/samples/text/rich_textctrl.rb +207 -201
- data/samples/text/richtext.rb +1409 -1405
- data/samples/text/scintilla.rb +137 -128
- data/samples/text/textctrl.rb +89 -83
- data/samples/text/unicode.rb +175 -168
- data/samples/treectrl/treectrl.rb +1430 -1426
- data/samples/widgets/activityindicator.rb +95 -0
- data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
- data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
- data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/button.xpm +54 -0
- data/samples/widgets/art/widgets/checkbox.xpm +54 -0
- data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
- data/samples/widgets/art/widgets/choicebk.xpm +54 -0
- data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
- data/samples/widgets/art/widgets/combobox.xpm +54 -0
- data/samples/widgets/art/widgets/datepick.xpm +200 -0
- data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
- data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
- data/samples/widgets/art/widgets/filepicker.xpm +214 -0
- data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
- data/samples/widgets/art/widgets/gauge.xpm +54 -0
- data/samples/widgets/art/widgets/header.xpm +54 -0
- data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
- data/samples/widgets/art/widgets/listbook.xpm +54 -0
- data/samples/widgets/art/widgets/listbox.xpm +54 -0
- data/samples/widgets/art/widgets/native.xpm +81 -0
- data/samples/widgets/art/widgets/notebook.xpm +54 -0
- data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/radiobox.xpm +54 -0
- data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
- data/samples/widgets/art/widgets/slider.xpm +54 -0
- data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
- data/samples/widgets/art/widgets/statbmp.xpm +40 -0
- data/samples/widgets/art/widgets/statbox.xpm +54 -0
- data/samples/widgets/art/widgets/stattext.xpm +54 -0
- data/samples/widgets/art/widgets/text.xpm +54 -0
- data/samples/widgets/art/widgets/timepick.xpm +207 -0
- data/samples/widgets/art/widgets/toggle.xpm +54 -0
- data/samples/widgets/art/widgets/toucan.png +0 -0
- data/samples/widgets/bmpcombobox.rb +651 -0
- data/samples/widgets/button.rb +462 -0
- data/samples/widgets/checkbox.rb +211 -0
- data/samples/widgets/choice.rb +287 -0
- data/samples/widgets/clrpicker.rb +156 -0
- data/samples/widgets/combobox.rb +516 -0
- data/samples/widgets/datepick.rb +215 -0
- data/samples/widgets/dirctrl.rb +265 -0
- data/samples/widgets/dirpicker.rb +158 -0
- data/samples/widgets/editlbox.rb +122 -0
- data/samples/widgets/filectrl.rb +216 -0
- data/samples/widgets/filepicker.rb +214 -0
- data/samples/widgets/fontpicker.rb +135 -0
- data/samples/widgets/gauge.rb +311 -0
- data/samples/widgets/headerctrl.rb +236 -0
- data/samples/widgets/hyperlink.rb +203 -0
- data/samples/widgets/itemcontainer.rb +185 -0
- data/samples/widgets/listbox.rb +473 -0
- data/samples/widgets/notebook.rb +488 -0
- data/samples/widgets/odcombobox.rb +608 -0
- data/samples/widgets/radiobox.rb +328 -0
- data/samples/widgets/searchctrl.rb +159 -0
- data/samples/widgets/slider.rb +594 -0
- data/samples/widgets/spinbtn.rb +443 -0
- data/samples/widgets/statbmp.rb +130 -0
- data/samples/widgets/static.rb +436 -0
- data/samples/widgets/textctrl.rb +700 -0
- data/samples/widgets/timepick.rb +148 -0
- data/samples/widgets/tn_widgets.png +0 -0
- data/samples/widgets/toggle.rb +385 -0
- data/samples/widgets/widgets.rb +1229 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- data/tests/test_config.rb +207 -42
- data/tests/test_event_handling.rb +52 -34
- data/tests/test_events.rb +7 -0
- data/tests/test_item_data.rb +24 -0
- data/tests/test_persistence.rb +142 -0
- data/tests/test_sizer.rb +44 -1
- data/tests/test_validators.rb +805 -0
- metadata +103 -137
- data/lib/wx/core/choice.rb +0 -14
- data/lib/wx/core/combo_ctrl.rb +0 -110
- data/samples/bigdemo/About.rbw +0 -39
- data/samples/bigdemo/ColorPanel.rbw +0 -23
- data/samples/bigdemo/GridSimple.rbw +0 -78
- data/samples/bigdemo/MDIDemo.rbw +0 -57
- data/samples/bigdemo/PopupMenu.rbw +0 -146
- data/samples/bigdemo/ShapedWindow.rbw +0 -128
- data/samples/bigdemo/Sizers.rbw +0 -541
- data/samples/bigdemo/bigdemo.rb +0 -817
- data/samples/bigdemo/demoTemplate.rbw +0 -33
- 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/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +0 -27
- data/samples/bigdemo/icons/copy.xpm +0 -25
- data/samples/bigdemo/icons/cut.xpm +0 -24
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +0 -27
- data/samples/bigdemo/icons/help.xpm +0 -25
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +0 -27
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +0 -44
- data/samples/bigdemo/icons/new.xpm +0 -24
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +0 -45
- data/samples/bigdemo/icons/open.xpm +0 -26
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +0 -38
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +0 -26
- data/samples/bigdemo/icons/print.xpm +0 -26
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +0 -27
- data/samples/bigdemo/icons/robert.xpm +0 -415
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +0 -25
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +0 -39
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +0 -42
- data/samples/bigdemo/icons/stattext.xpm +0 -24
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +0 -79
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +0 -27
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +0 -38
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +0 -38
- 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 +0 -25
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +0 -98
- data/samples/bigdemo/tips.txt +0 -7
- data/samples/bigdemo/utils.rb +0 -20
- data/samples/bigdemo/wxArtProvider.rbw +0 -282
- data/samples/bigdemo/wxBitmapButton.rbw +0 -65
- data/samples/bigdemo/wxButton.rbw +0 -64
- data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
- data/samples/bigdemo/wxCheckBox.rbw +0 -50
- data/samples/bigdemo/wxCheckListBox.rbw +0 -65
- data/samples/bigdemo/wxChoice.rbw +0 -47
- data/samples/bigdemo/wxChoicebook.rbw +0 -78
- data/samples/bigdemo/wxColourDialog.rbw +0 -33
- data/samples/bigdemo/wxComboBox.rbw +0 -77
- data/samples/bigdemo/wxCursor.rbw +0 -136
- data/samples/bigdemo/wxDialog.rbw +0 -74
- data/samples/bigdemo/wxDirDialog.rbw +0 -29
- data/samples/bigdemo/wxDragImage.rbw +0 -70
- data/samples/bigdemo/wxFileDialog.rbw +0 -37
- data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
- data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
- data/samples/bigdemo/wxFontDialog.rbw +0 -200
- data/samples/bigdemo/wxFrame.rbw +0 -53
- data/samples/bigdemo/wxGauge.rbw +0 -65
- data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
- data/samples/bigdemo/wxGrid.rbw +0 -66
- data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
- data/samples/bigdemo/wxListBox.rbw +0 -140
- data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
- data/samples/bigdemo/wxMDIWindows.rbw +0 -50
- data/samples/bigdemo/wxMenu.rbw +0 -247
- data/samples/bigdemo/wxMessageDialog.rbw +0 -27
- data/samples/bigdemo/wxMiniFrame.rbw +0 -70
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
- data/samples/bigdemo/wxNotebook.rbw +0 -136
- data/samples/bigdemo/wxProgressDialog.rbw +0 -43
- data/samples/bigdemo/wxRadioBox.rbw +0 -72
- data/samples/bigdemo/wxRadioButton.rbw +0 -125
- data/samples/bigdemo/wxSashWindow.rbw +0 -141
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
- data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
- data/samples/bigdemo/wxSlider.rbw +0 -42
- data/samples/bigdemo/wxSpinButton.rbw +0 -50
- data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
- data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
- data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
- data/samples/bigdemo/wxStaticText.rbw +0 -55
- data/samples/bigdemo/wxStatusBar.rbw +0 -126
- data/samples/bigdemo/wxTextCtrl.rbw +0 -149
- data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
- data/samples/bigdemo/wxToggleButton.rbw +0 -49
- data/samples/bigdemo/wxToolBar.rbw +0 -131
- data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
- data/samples/caret/caret.rb +0 -298
- data/samples/caret/mondrian.xpm +0 -44
- data/samples/controls/books.rb +0 -189
- data/samples/controls/choice.xpm +0 -27
- data/samples/controls/combo.xpm +0 -27
- data/samples/controls/controls.rb +0 -1099
- data/samples/controls/gauge.xpm +0 -27
- data/samples/controls/list.xpm +0 -27
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +0 -44
- data/samples/controls/radio.xpm +0 -27
- data/samples/controls/stattext.xpm +0 -24
- data/samples/controls/test2.bmp +0 -0
- data/samples/controls/text.xpm +0 -27
- data/samples/controls/tn_books.png +0 -0
- data/samples/controls/tn_controls.png +0 -0
- data/samples/etc/choice.rb +0 -87
- data/samples/etc/tn_choice.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +0 -44
- /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
# :stopdoc:
|
2
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
3
|
+
#
|
4
|
+
# This software is released under the MIT license.
|
5
|
+
# :startdoc:
|
6
|
+
|
7
|
+
|
8
|
+
module Wx
|
9
|
+
|
10
|
+
class EditableListBox < Panel
|
11
|
+
|
12
|
+
# Returns list control of composite.
|
13
|
+
# @return [Wx::ListCtrl]
|
14
|
+
def get_list_ctrl; end
|
15
|
+
alias :list_ctrl :get_list_ctrl
|
16
|
+
|
17
|
+
# Returns button of composite.
|
18
|
+
# @return [Wx::BitmapButton]
|
19
|
+
def get_del_button; end
|
20
|
+
alias :del_button :get_del_button
|
21
|
+
|
22
|
+
# Returns button of composite.
|
23
|
+
# @return [Wx::BitmapButton]
|
24
|
+
def get_new_button; end
|
25
|
+
alias :new_button :get_new_button
|
26
|
+
|
27
|
+
# Returns button of composite.
|
28
|
+
# @return [Wx::BitmapButton]
|
29
|
+
def get_up_button; end
|
30
|
+
alias :up_button :get_up_button
|
31
|
+
|
32
|
+
# Returns button of composite.
|
33
|
+
# @return [Wx::BitmapButton]
|
34
|
+
def get_down_button; end
|
35
|
+
alias :down_button :get_down_button
|
36
|
+
|
37
|
+
# Returns button of composite.
|
38
|
+
# @return [Wx::BitmapButton]
|
39
|
+
def get_edit_button; end
|
40
|
+
alias :edit_button :get_edit_button
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/lib/wx/doc/enum.rb
CHANGED
@@ -68,6 +68,21 @@ module Wx
|
|
68
68
|
# @return [Boolean]
|
69
69
|
def !; end
|
70
70
|
|
71
|
+
# Returns true if all bits that are set (=1) in mask are also set in self; returns false otherwise.
|
72
|
+
# @param [Integer] mask
|
73
|
+
# @return [Boolean]
|
74
|
+
def allbits?(mask) end
|
75
|
+
|
76
|
+
# Returns true if any bit that is set (=1) in mask is also set in self; returns false otherwise.
|
77
|
+
# @param [Integer] mask
|
78
|
+
# @return [Boolean]
|
79
|
+
def anybits?(mask) end
|
80
|
+
|
81
|
+
# Returns true if no bit that is set (=1) in mask is also set in self; returns false otherwise.
|
82
|
+
# @param [Integer] mask
|
83
|
+
# @return [Boolean]
|
84
|
+
def nobits?(mask) end
|
85
|
+
|
71
86
|
# Return next integer value from enum's value.
|
72
87
|
# @return [Integer] next integer value
|
73
88
|
def succ; end
|
data/lib/wx/doc/event.rb
CHANGED
@@ -27,4 +27,16 @@ module Wx
|
|
27
27
|
|
28
28
|
end
|
29
29
|
|
30
|
+
class CommandEvent < Event
|
31
|
+
|
32
|
+
alias :set_client_data :set_client_object
|
33
|
+
|
34
|
+
alias :client_data= :set_client_object
|
35
|
+
|
36
|
+
alias :get_client_data :get_client_object
|
37
|
+
|
38
|
+
alias :client_data :get_client_object
|
39
|
+
|
40
|
+
end
|
41
|
+
|
30
42
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 12. Client/User data with wxRuby
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 12. Client/User data with wxRuby
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
The wxWidgets library has widespread support for attaching arbitrary client (or user) data to GUI elements like
|
11
|
+
windows (all event handlers actually), window items, sizer items etc.
|
12
|
+
To cater to various C++ use cases in most instances this support covers both specific wxWidgets defined types (like
|
13
|
+
wxClientData and wxObject instances) and untyped data pointers (represented as `void *`) with subtle but essential
|
14
|
+
differences.
|
15
|
+
|
16
|
+
wxRuby implements a fully compatible version of this support.
|
17
|
+
|
18
|
+
## Everything is an Object
|
19
|
+
|
20
|
+
As Ruby does not do untyped data (everything is an Object), and having two different options is confusing anyway,
|
21
|
+
wxRuby provides only a single option and more or less unifies the interface across the entire library.
|
22
|
+
In Ruby anywhere the original wxWidgets library supports some type of client (or user) data attachment wxRuby will
|
23
|
+
support the attachment of any arbitrary Ruby `Object` by either the method `#set_client_object` (where C++ supports
|
24
|
+
`SetClientData` and `SetClientObject`) or `#set_user_data` (where C++ supports `SetUserData`). Data retrieval
|
25
|
+
is supported by complementary `#get_client_object` or `#get_user_data` methods in all cases.
|
26
|
+
Wherever C++ supports `SetClientObject` wxRuby also provides the method aliases `#set_client_data` and `#get_client_data`.
|
27
|
+
|
28
|
+
Another difference with C++ is that for typed client data in wxWidgets developers could leverage object destruction as
|
29
|
+
callback trigger (through the implementation of virtual destructors) to handle any required 'unlinking' logic. This
|
30
|
+
obviously does not apply to untyped data (one of the 'subtle' differences).
|
31
|
+
As Ruby does not provide any usable object destruction hooks this does not work there.
|
32
|
+
Ruby however has 'Duck-typing' which is what wxRuby uses to provide support for a unlinking callback 'hook' for attached
|
33
|
+
client data.
|
34
|
+
|
35
|
+
> Any attached Ruby Object implementing (responding to) the method `#client_data_unlinked` will have that method called after the
|
36
|
+
> attached object has been detached from the element it was attached to (either because of data replacement or element
|
37
|
+
> deletion).
|
38
|
+
|
39
|
+
Regard the following example.
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
frame = Wx::Frame.new(nil, Wx::ID_ANY)
|
43
|
+
|
44
|
+
# attach a hash with user data
|
45
|
+
frame.set_client_data({ text: 'A string', float: 3.14 })
|
46
|
+
|
47
|
+
# ... do something with frame
|
48
|
+
|
49
|
+
# replace the user data
|
50
|
+
frame.set_client_data([1,2,3,4])
|
51
|
+
|
52
|
+
# ... do something else with frame
|
53
|
+
```
|
54
|
+
|
55
|
+
In this case standard Ruby object are attached. After attachment the object can be retrieved using a call to `get_client_data`
|
56
|
+
anywhere access to the frame instance is available.
|
57
|
+
|
58
|
+
Using a specially derived (or adapted) object a developer can handle specific logic after the object has been unlinked
|
59
|
+
like in this example:
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
# define a user data class
|
63
|
+
class MyUserData
|
64
|
+
def initialize(payload)
|
65
|
+
@payload = payload
|
66
|
+
end
|
67
|
+
attr_reader :payload
|
68
|
+
|
69
|
+
def client_data_unlinked
|
70
|
+
# handle some logic
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# ...
|
75
|
+
|
76
|
+
# attach data to some window
|
77
|
+
win.set_client_data(MyUserData.new(some_payload_data))
|
78
|
+
|
79
|
+
# ...
|
80
|
+
|
81
|
+
# reset user data for some reason (will call MyUserData#client_data_unlinked after replacement)
|
82
|
+
win.set_client_data(nil)
|
83
|
+
```
|
84
|
+
|
85
|
+
# CommandEvent data
|
86
|
+
|
87
|
+
wxRuby also fully supports the propagation of attached client data to Wx::CommandEvent objects (see
|
88
|
+
{Wx::CommandEvent#get_client_object} and {Wx::CommandEvent#set_client_object}).
|
89
|
+
As mentioned above wxRuby provides the method aliases `#set_client_data` and `#get_client_data` here also.
|
@@ -0,0 +1,139 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 13. Validators and data binding
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 13. Validators and data binding
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
wxRuby fully supports validator classes offering input validation and/or data binding and/or event filtering.
|
11
|
+
|
12
|
+
## Validation
|
13
|
+
|
14
|
+
The base Wx::Validator class defines the method {Wx::Validator#validate} which is called when validation of the
|
15
|
+
value or content of the associated window is required.
|
16
|
+
|
17
|
+
The implementation of this method should (somehow) retrieve the value of the associated window and validate that
|
18
|
+
value, returning `true` if valid or `false` otherwise. The default implementation always returns `false`.
|
19
|
+
|
20
|
+
An example would be:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
# define custom validator
|
24
|
+
class MyTextValidator < Wx::Validator
|
25
|
+
|
26
|
+
def validate(_parent)
|
27
|
+
txt = get_window.value
|
28
|
+
# validate that the control text starts with a capital if not empty
|
29
|
+
txt.empty? || (?A..?Z).include?(txt[0])
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
# ...
|
35
|
+
|
36
|
+
# assign custom validator to text control
|
37
|
+
text = Wx::TextCtrl.new(parent, MY_TEXT_ID)
|
38
|
+
text.set_validator(MyTextValidator.new)
|
39
|
+
```
|
40
|
+
|
41
|
+
The derived, specialized, validator classes {Wx::TextValidator}, {Wx::IntegerValidator}, {Wx::IntegerValidator} and
|
42
|
+
{Wx::FloatValidator} all have implementations that can be configured through specific options and do not
|
43
|
+
normally require an override to be defined.
|
44
|
+
|
45
|
+
Examples of using the standard validators would be:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
text = Wx::TextCtrl.new(parent, MY_TEXT_ID)
|
49
|
+
|
50
|
+
# accept only hexadecimal characters
|
51
|
+
text.set_validator(Wx::TextValidator.new(Wx::TextValidatorStyle::FILTER_XDIGITS))
|
52
|
+
|
53
|
+
# or only numbers between -20 and 20
|
54
|
+
text.set_validator(Wx::IntegerValidator.new(-20, 20))
|
55
|
+
```
|
56
|
+
|
57
|
+
## Event filtering
|
58
|
+
|
59
|
+
All validator classes are event handlers and can have event handling routines defined (see
|
60
|
+
[Event Handling](05_event-handling.md)).
|
61
|
+
When processing events the core implementation will allow any validator associated with a window to handle an event
|
62
|
+
before the associated window itself thereby allowing it to filter events (see {Wx::EvtHandler#process_event} for more
|
63
|
+
details).
|
64
|
+
|
65
|
+
The standard specialized validators use this functionality to filter entry of allowable characters (by handling
|
66
|
+
Wx::EVT_CHAR events).
|
67
|
+
|
68
|
+
## Data binding
|
69
|
+
|
70
|
+
Data binding concerns the transfer of a validator's associated window's value to or from a user definable storage (a
|
71
|
+
variable, memory cache entry, persistent storage ...).
|
72
|
+
|
73
|
+
To integrate with the core C++ implementation but allow for Ruby specific differences the scheme implemented for this
|
74
|
+
differs somewhat (in naming and functionality) from the original wxWidgets interface.
|
75
|
+
|
76
|
+
The responsibilities of the standard wxRuby interface for handling validator data binding is distributed over 2 base
|
77
|
+
methods and a mixin module.
|
78
|
+
|
79
|
+
- The protected {Wx::Validator#do_transfer_from_window} and {Wx::Validator#do_transfer_to_window} methods are
|
80
|
+
responsible for collecting and transferring data from/to the associated window (possibly applying conversions).<br>
|
81
|
+
<br>
|
82
|
+
These methods have default implementations in all of the derived validator classes and should not be overridden for
|
83
|
+
specializations of these as they will be ignored.<br>
|
84
|
+
Overriding these methods is necessary to implement data binding for any user defined specialization of the base
|
85
|
+
{Wx::Validator} class.<br>
|
86
|
+
<br>
|
87
|
+
- The methods the {Wx::Validator::Binding} mixin module provide the means to store data after collection from or retrieve data
|
88
|
+
before transfer to the associated window.<br>
|
89
|
+
<br>
|
90
|
+
The methods {Wx::Validator::Binding#on_transfer_from_window} and {Wx::Validator::Binding#on_transfer_to_window} provide
|
91
|
+
the means to specify user defined binding handlers for storing the data transferred from the associated window or retrieving the
|
92
|
+
data to transfer to the associated window. Like with event handling the handlers can be specified using a `String` or
|
93
|
+
`Symbol`, a `Proc` or a `Method`.<br>
|
94
|
+
<br>
|
95
|
+
The methods {Wx::Validator::Binding#do_on_transfer_from_window} and {Wx::Validator::Binding#do_on_transfer_to_window} by
|
96
|
+
default call the binding handlers if defined.
|
97
|
+
These methods can be overridden to create derived validator classes with dedicated data binding functionality like
|
98
|
+
with {Wx::GenericValidator}.
|
99
|
+
|
100
|
+
An example of a custom validator providing data binding would be:
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
class MyTextValidator < Wx::Validator
|
104
|
+
|
105
|
+
def do_transfer_from_window
|
106
|
+
get_window.get_value
|
107
|
+
end
|
108
|
+
|
109
|
+
def do_transfer_to_window(val)
|
110
|
+
get_window.set_value(val)
|
111
|
+
true
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
# ...
|
117
|
+
|
118
|
+
# use custom validator
|
119
|
+
@data = nil # attribute to store data
|
120
|
+
text.set_validator(MyTextValidator.new)
|
121
|
+
text.get_validator.on_transfer_to_window { @data }
|
122
|
+
text.get_validator.on_transfer_from_window { |v| @data = v }
|
123
|
+
```
|
124
|
+
|
125
|
+
All derived, specialized, validators implement a dedicated value cache which can be accessed through the `#value` attribute
|
126
|
+
accessor. Through this accessor the data collected from the associated window can get retrieved or the data to be transferred
|
127
|
+
to the associated window set.
|
128
|
+
With these classes it is therefor not necessary to define binding handlers. Defining binding handlers can however still be
|
129
|
+
useful to implement a custom, persistent, storage solution.
|
130
|
+
|
131
|
+
### Wx::GenericValidator
|
132
|
+
|
133
|
+
The {Wx::GenericValidator} class provides an extendable standard implementation for data binding in combination with a
|
134
|
+
large collection of controls (see class documentation).
|
135
|
+
The implementation provides a standard accessor {Wx::GenericValidator#value} to get the data value collected
|
136
|
+
from the associated window or set the data to transfer to the associated window.
|
137
|
+
|
138
|
+
To add support for any control unsupported by the standard implementation the method {Wx::GenericValidator.define_handler}
|
139
|
+
is provided (see documentation for an example).
|
@@ -0,0 +1,101 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 14. Configuration support
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 14. Configuration support
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
wxRuby3 fully supports the wxWidgets config classes providing a Ruby-fied interface.
|
11
|
+
|
12
|
+
The config classes provide a way to store some application configuration information providing features
|
13
|
+
that make them very useful for storing all kinds of small to medium volumes of hierarchically-organized,
|
14
|
+
heterogeneous data.
|
15
|
+
In wxWidgets these were especially designed for storing application configuration information and intended to be
|
16
|
+
mostly limited to that. That meant the information to be stored was intended to be:
|
17
|
+
|
18
|
+
* Typed, i.e. strings, booleans or numbers for the moment. You cannot store binary data, for example.
|
19
|
+
* Small. For instance, it is not recommended to use the Windows registry (which is the default storage medium on
|
20
|
+
that platform) for amounts of data more than a couple of kilobytes.
|
21
|
+
* Not performance critical, neither from speed nor from a memory consumption point of view.
|
22
|
+
|
23
|
+
As you will see wxRuby3 extends the support in this area and provides means to forego a lot of these restrictions.
|
24
|
+
|
25
|
+
The config classes also are intended to abstract away a lot of platform differences. In this area wxRuby3 extends the
|
26
|
+
support also.
|
27
|
+
|
28
|
+
## Default configuration support
|
29
|
+
|
30
|
+
When the default, global, config instance is used (by using {Wx::ConfigBase.get} with default argument) this will be
|
31
|
+
a platform specific instance. On Windows platforms a Windows registry based implementation is used and on other
|
32
|
+
platforms a text format configuration file.
|
33
|
+
|
34
|
+
wxRuby3 provides a single wrapper class for these with {Wx::ConfigWx}. This is an abstract class that cannot be
|
35
|
+
instantiated in Ruby which provides a common, Ruby-fied interface supported by all config classes in wxRuby3.
|
36
|
+
|
37
|
+
While wxWidgets does a decent job of abstracting platform differences it is in no way perfect in this area. With the
|
38
|
+
text format configuration files for example the stored values loose all type information since everything is stored
|
39
|
+
as strings. This also differs from the registry based implementation where some type information is not lost but some
|
40
|
+
(like boolean types) is.
|
41
|
+
This is not a problem when accessing information for which the structure and types are exactly known as the config
|
42
|
+
classes offer type specific readers (as well as writers) which coerce values to their expected types but may offer
|
43
|
+
nasty surprises when more reflectively accessing data of which the exact typing and structure is not known.
|
44
|
+
|
45
|
+
In Ruby where we more or less expect to have common API-s that can return or accept any type of object needing to be
|
46
|
+
type specific is awkward. wxRuby3 works around this as much as possible for the {Wx::ConfigWx} wrapper class but also
|
47
|
+
provides an alternative config class integrated with the wxWidgets framework that does not suffer from these restrictions.
|
48
|
+
|
49
|
+
## Enhanced Ruby configuration support
|
50
|
+
|
51
|
+
Instead of the default, platform specific, config classes it is also possible to use a custom wxRuby3 extension providing
|
52
|
+
a config class which is implemented in pure Ruby and integrated in the wxWidgets configuration framework.
|
53
|
+
To use an instance of this class as the global config instance the {Wx::ConfigBase.create} should be called at application
|
54
|
+
initialization time with it's `:use_hash_config` keyword argument set to `true` (and possibly, to be sure, it's
|
55
|
+
`forced_create` argument set to `true` also). This would create an instance of {Wx::Config} and install that as the global config instance (if no other instance was
|
56
|
+
yet installed or, overruling that condition, if `forced_create` was set to `true`).<br>
|
57
|
+
Alternatively a {Wx::Config} (or derivative) instance could be explicitly instantiated in code and assigned as global
|
58
|
+
instance with {Wx::ConfigBase.set}.
|
59
|
+
|
60
|
+
As the keyword argument indicates {Wx::Config} is a Ruby `Hash` based config class implementation.
|
61
|
+
|
62
|
+
Value objects are stored Ruby-style as-is into it's internal hash table (maintaining full type information) and are also
|
63
|
+
retrieved as-is by default (to maintain compatibility with the {Wx::ConfigWx} wrapper type coercion options are provided).
|
64
|
+
Grouping is based of nested `Hash` instances.
|
65
|
+
|
66
|
+
Because of the `Hash` based implementation and lack of (the need for) type coercion the {Wx::Config} class does have **any**
|
67
|
+
restrictions of the type of data stored. The only possible type restrictions to enforce may come from usage contexts:
|
68
|
+
|
69
|
+
* In case of value entries shared with wxWidgets framework code (like for example entries save by the persistence
|
70
|
+
framework; see [here](15_persistence.md)) value types should be restricted to those supported by the wxWidget platform
|
71
|
+
specific classes and correspond to what the framework code expects.
|
72
|
+
* In case of the need to save/restore the configuration data to/from persistent storage which imposes type restrictions these
|
73
|
+
should be applied.
|
74
|
+
|
75
|
+
With {Wx::Config} it would be perfectly alright to store arrays or any kind of arbitrary object (only be aware that `Hash`
|
76
|
+
instances will always be expected to provide configuration structure by default) as long as these do not conflict with
|
77
|
+
expectations of framework code or storage mechanisms.
|
78
|
+
|
79
|
+
With the standard Ruby YAML and JSON serialization support this also provides improved platform independent configuration
|
80
|
+
persistence options with full type information maintainability.
|
81
|
+
|
82
|
+
## Differences between default and enhanced configuration support
|
83
|
+
|
84
|
+
The major difference is, as described above, the absence of type restrictions in the enhanced Ruby config class {Wx::Config}.
|
85
|
+
|
86
|
+
Another difference is that {Wx::Config} will not automatically create missing groups or entries on reading. This will only
|
87
|
+
happen when writing configuration values.
|
88
|
+
|
89
|
+
A last difference is that the default support is by default backed up by persistent storage (windows registry or file) and
|
90
|
+
the wxRuby enhanced support only provides in-memory storage (`Hash` instance) by default. +
|
91
|
+
Persisting configuration data from {Wx::Config} will require coding customized storage and retrieval operations (which is
|
92
|
+
trivial using standard YAML or JSON support).
|
93
|
+
|
94
|
+
## Differences between wxWidgets config interface and wxRuby
|
95
|
+
|
96
|
+
In wxRuby there is no option to provide a default value argument when reading values. The reasoning is that Ruby itself
|
97
|
+
provides more than enough options to elegantly provide for defaults with statement options like `var ||= default` or
|
98
|
+
`var = get('something') || default`.
|
99
|
+
|
100
|
+
As a consequence wxRuby also does not support recording defaults on read operations (and also does not provide the
|
101
|
+
corresponding option setter/getter in the interface).
|
@@ -0,0 +1,148 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 15. Persistence support
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 15. Persistence support
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
wxRuby3 fully supports the wxWidgets persistence framework.
|
11
|
+
|
12
|
+
This framework provides the means to persist window (and other object) states which can than be restored when
|
13
|
+
re-creating these objects.
|
14
|
+
|
15
|
+
The persistence framework depends on the configuration framework (see [here](14_config.md)).
|
16
|
+
|
17
|
+
The persistence framework includes the following components:
|
18
|
+
|
19
|
+
* {Wx::PersistenceManager} which all persistent objects register themselves with. This class handles actual saving
|
20
|
+
and restoring of persistent data.
|
21
|
+
* Persistent object adapters for persistent objects. These adapters provide a bridge between the associated class –
|
22
|
+
which has no special persistence support – and {Wx::PersistenceManager}. All Persistent object adapters need to derive
|
23
|
+
from {Wx::PersistentObject} (like {Wx::PersistentWindowBase} and it's derivatives).
|
24
|
+
* The {Wx.create_persistent_object} and {Wx.persistent_register_and_restore} methods (mainly convenience methods for
|
25
|
+
wxWidgets compatibility).
|
26
|
+
|
27
|
+
## Persistence manager
|
28
|
+
|
29
|
+
By default a global singleton manager instance is available through {Wx::PersistenceManager.get} which will be used
|
30
|
+
by all available persistent object adapters for saving/restoring state values.
|
31
|
+
|
32
|
+
An alternate (possibly customized) manager instance can be installed through {Wx::PersistenceManager.set}.
|
33
|
+
|
34
|
+
## Persistent object adapters
|
35
|
+
|
36
|
+
All persistent object adapters must be derived from {Wx::PersistentObject}. This class provides common methods for
|
37
|
+
saving and restoring state values connecting to the persistence manager for actual writing and reading.
|
38
|
+
|
39
|
+
All windows/objects to be persisted need to be registered with the persistence manager. Creating the correct persistent
|
40
|
+
object adapter instance for an object to persist is abstracted away in wxWidgets by using template methods allowing
|
41
|
+
to simply only provide the object to persist instead of having to explicitly instantiate an adapter instance and provide
|
42
|
+
both to the persistence manager (which is however still possible).
|
43
|
+
|
44
|
+
wxRuby3 replaces this convenience interface (incompatible with Ruby) by a Ruby-fied approach which relies on Rubies
|
45
|
+
trusted *duck typing*.<br>
|
46
|
+
In wxRuby3 any class supported by a specific persistent object adapter class should implement the method
|
47
|
+
`#create_persistent_object` which should return a unique adapter instance for the object instance to be persisted
|
48
|
+
like this:
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
class MyPersistentObject < Wx::PersistentObject
|
52
|
+
|
53
|
+
# Save the object properties.
|
54
|
+
# The implementation of this method should use {Wx::PersistentObject#save_value}.
|
55
|
+
# @return [void]
|
56
|
+
def save
|
57
|
+
# ...
|
58
|
+
end
|
59
|
+
|
60
|
+
# Restore the object properties.
|
61
|
+
# The implementation of this method should use {Wx::PersistentObject#restore_value}.
|
62
|
+
# @return [Boolean]
|
63
|
+
def restore
|
64
|
+
# ...
|
65
|
+
end
|
66
|
+
|
67
|
+
# Returns the string uniquely identifying the objects supported by this adapter.
|
68
|
+
# This method has default implementations in any of the built-in derived adapter classes.
|
69
|
+
# @return [String]
|
70
|
+
def get_kind
|
71
|
+
'MyObject'
|
72
|
+
end
|
73
|
+
|
74
|
+
# Returns the string uniquely identifying the object we're associated with among all the other objects of the same type.
|
75
|
+
# This method has a default implementation in Wx::PersistentWindowBase returning the window name.
|
76
|
+
# @return [String]
|
77
|
+
def get_name
|
78
|
+
'object_1'
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
class MyObject
|
84
|
+
|
85
|
+
# ...
|
86
|
+
|
87
|
+
def create_persistent_object
|
88
|
+
MyPersistentObject.new(self)
|
89
|
+
end
|
90
|
+
|
91
|
+
# ...
|
92
|
+
|
93
|
+
end
|
94
|
+
```
|
95
|
+
|
96
|
+
## Persistent windows
|
97
|
+
|
98
|
+
A number of classes provide built-in support for persistence of a number of windows or controls:
|
99
|
+
|
100
|
+
* {Wx::PersistentTLW} supports top level windows (including {Wx::Frame} and {Wx::Dialog}).
|
101
|
+
* {Wx::PersistentBookCtrl} supports the book controls {Wx::Notebook}, {Wx::Listbook}, {Wx::Toolbook} and {Wx::Choicebook}.
|
102
|
+
* {Wx::PersistentTreeBookCtrl} supports {Wx::Treebook}
|
103
|
+
|
104
|
+
All persistent window adapters are derived from {Wx::PersistentWindowBase}. This class makes sure that any window
|
105
|
+
registered for persisting gets automatically saved when the window is destroyed. Intermittently explicit saving still
|
106
|
+
remains possible of course.
|
107
|
+
|
108
|
+
User defined persistent window adapters can be derived from this class or any of the built-in derivatives to support
|
109
|
+
otherwise unsupported or custom windows/controls like this:
|
110
|
+
|
111
|
+
```ruby
|
112
|
+
class PersistentButton < Wx::PersistentWindowBase
|
113
|
+
|
114
|
+
def get_kind
|
115
|
+
'Button'
|
116
|
+
end
|
117
|
+
|
118
|
+
def save
|
119
|
+
save_value('w', get.size.width)
|
120
|
+
save_value('h', get.size.height)
|
121
|
+
save_value('label', get.label)
|
122
|
+
save_value('my_custom_value', get.my_custom_value)
|
123
|
+
end
|
124
|
+
|
125
|
+
def restore
|
126
|
+
get.size = [Integer(restore_value('w')), Integer(restore_value('h'))]
|
127
|
+
get.label = restore_value('label')
|
128
|
+
get.my_custom_value = Float(restore_value('my_custom_value'))
|
129
|
+
true
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
class MyButton < Wx::Button
|
135
|
+
|
136
|
+
def initialize(parent=nil, name)
|
137
|
+
super(parent, label: '', name: name)
|
138
|
+
@my_custom_value = ''
|
139
|
+
end
|
140
|
+
|
141
|
+
attr_accessor :my_custom_value
|
142
|
+
|
143
|
+
def create_persistent_object
|
144
|
+
PersistentButton.new(self)
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
```
|
data/lib/wx/doc/gdi_common.rb
CHANGED
@@ -61,8 +61,12 @@ module Wx
|
|
61
61
|
|
62
62
|
alias :get_x :get_width
|
63
63
|
alias :x :get_width
|
64
|
+
alias :set_x :set_width
|
65
|
+
alias :x= :set_width
|
64
66
|
alias :get_y :get_height
|
65
67
|
alias :y :get_height
|
68
|
+
alias :set_y :set_height
|
69
|
+
alias :y= :set_height
|
66
70
|
|
67
71
|
# Set this size to the given size's width,height values
|
68
72
|
# @param [Wx::Size] sz
|