wxruby3 0.9.1-x64-mingw-ucrt → 0.9.3-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/.yardopts +1 -0
- 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/aui/aui_tab_ctrl.rb +18 -0
- data/lib/wx/aui/auinotebook.rb +6 -2
- data/lib/wx/aui/require.rb +1 -0
- data/lib/wx/core/app.rb +2 -2
- data/lib/wx/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/collapsible_pane.rb +1 -1
- data/lib/wx/core/combobox.rb +13 -3
- data/lib/wx/core/controlwithitems.rb +40 -128
- 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/menu.rb +10 -0
- data/lib/wx/core/notebook.rb +6 -2
- data/lib/wx/core/owner_drawn_combobox.rb +45 -0
- data/lib/wx/core/size.rb +4 -0
- data/lib/wx/core/sizer.rb +12 -2
- data/lib/wx/core/standard_paths.rb +22 -0
- data/lib/wx/core/task_bar_button.rb +19 -0
- data/lib/wx/core/text_entry.rb +4 -1
- data/lib/wx/core/textctrl.rb +11 -1
- data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
- data/lib/wx/core/validator.rb +70 -5
- data/lib/wx/core/window.rb +13 -7
- data/lib/wx/doc/app.rb +48 -38
- data/lib/wx/doc/art_locator.rb +48 -43
- data/lib/wx/doc/aui/auimanager.rb +16 -8
- data/lib/wx/doc/aui/auinotebook.rb +20 -5
- data/lib/wx/doc/clipboard.rb +11 -7
- data/lib/wx/doc/colour_dialog.rb +14 -10
- data/lib/wx/doc/comboctrl.rb +18 -0
- data/lib/wx/doc/controlwithitems.rb +34 -8
- data/lib/wx/doc/data_object.rb +2 -2
- 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/evthandler.rb +113 -108
- 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/font.rb +1 -0
- data/lib/wx/doc/gc_dc.rb +6 -1
- data/lib/wx/doc/gdi_common.rb +4 -0
- data/lib/wx/doc/gen/about_dialog_info.rb +26 -2
- data/lib/wx/doc/gen/accelerator.rb +19 -4
- data/lib/wx/doc/gen/accessible.rb +48 -47
- data/lib/wx/doc/gen/activity_indicator.rb +10 -4
- data/lib/wx/doc/gen/animation.rb +19 -3
- data/lib/wx/doc/gen/animation_ctrl.rb +16 -7
- data/lib/wx/doc/gen/any_button.rb +22 -1
- data/lib/wx/doc/gen/app.rb +41 -5
- data/lib/wx/doc/gen/app_traits.rb +65 -15
- data/lib/wx/doc/gen/art_provider.rb +33 -7
- data/lib/wx/doc/gen/aui/aui_dock_art.rb +18 -3
- data/lib/wx/doc/gen/aui/aui_floating_frame.rb +2 -0
- data/lib/wx/doc/gen/aui/aui_manager.rb +35 -8
- data/lib/wx/doc/gen/aui/aui_manager_event.rb +11 -4
- data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +4 -0
- data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +3 -0
- data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +8 -1
- data/lib/wx/doc/gen/aui/aui_notebook.rb +31 -7
- data/lib/wx/doc/gen/aui/aui_notebook_event.rb +5 -4
- data/lib/wx/doc/gen/aui/aui_pane_info.rb +38 -2
- data/lib/wx/doc/gen/aui/aui_tab_art.rb +9 -3
- data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +2 -1
- data/lib/wx/doc/gen/aui/aui_tool_bar.rb +20 -6
- data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +4 -2
- data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +5 -7
- data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +5 -1
- data/lib/wx/doc/gen/aui/event_list.rb +164 -160
- data/lib/wx/doc/gen/banner_window.rb +8 -1
- data/lib/wx/doc/gen/bitmap.rb +94 -16
- data/lib/wx/doc/gen/bitmap_button.rb +16 -8
- data/lib/wx/doc/gen/bitmap_combo_box.rb +20 -10
- data/lib/wx/doc/gen/book_ctrl_base.rb +31 -4
- data/lib/wx/doc/gen/book_ctrl_event.rb +9 -3
- data/lib/wx/doc/gen/box_sizer.rb +5 -1
- data/lib/wx/doc/gen/brush.rb +20 -2
- data/lib/wx/doc/gen/busy_info.rb +10 -2
- data/lib/wx/doc/gen/button.rb +31 -11
- data/lib/wx/doc/gen/calculate_layout_event.rb +5 -3
- data/lib/wx/doc/gen/calendar_ctrl.rb +38 -13
- data/lib/wx/doc/gen/calendar_date_attr.rb +2 -1
- data/lib/wx/doc/gen/calendar_event.rb +5 -2
- data/lib/wx/doc/gen/caret.rb +3 -1
- data/lib/wx/doc/gen/check_box.rb +17 -7
- data/lib/wx/doc/gen/check_list_box.rb +8 -6
- data/lib/wx/doc/gen/choice.rb +28 -9
- data/lib/wx/doc/gen/choicebook.rb +7 -7
- data/lib/wx/doc/gen/client_dc.rb +6 -2
- data/lib/wx/doc/gen/clipboard.rb +16 -3
- data/lib/wx/doc/gen/collapsible_pane.rb +9 -7
- data/lib/wx/doc/gen/collapsible_pane_event.rb +3 -3
- data/lib/wx/doc/gen/colour.rb +28 -4
- data/lib/wx/doc/gen/colour_dialog.rb +15 -7
- data/lib/wx/doc/gen/colour_picker_ctrl.rb +13 -10
- data/lib/wx/doc/gen/colour_picker_event.rb +5 -5
- data/lib/wx/doc/gen/combo_box.rb +36 -14
- data/lib/wx/doc/gen/combo_ctrl.rb +117 -295
- data/lib/wx/doc/gen/command_link_button.rb +12 -5
- data/lib/wx/doc/gen/context_help_button.rb +13 -3
- data/lib/wx/doc/gen/control.rb +22 -8
- data/lib/wx/doc/gen/control_with_items.rb +45 -10
- data/lib/wx/doc/gen/core.rb +4 -4
- data/lib/wx/doc/gen/cursor.rb +10 -8
- data/lib/wx/doc/gen/data_format.rb +7 -1
- data/lib/wx/doc/gen/data_object.rb +42 -18
- data/lib/wx/doc/gen/date_event.rb +3 -2
- data/lib/wx/doc/gen/date_picker_ctrl.rb +18 -8
- data/lib/wx/doc/gen/dc.rb +238 -36
- data/lib/wx/doc/gen/defs.rb +51 -51
- data/lib/wx/doc/gen/dial_up_event.rb +2 -1
- data/lib/wx/doc/gen/dial_up_manager.rb +25 -5
- data/lib/wx/doc/gen/dialog.rb +72 -13
- data/lib/wx/doc/gen/dir_dialog.rb +22 -5
- data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +2 -0
- data/lib/wx/doc/gen/dir_picker_ctrl.rb +14 -10
- data/lib/wx/doc/gen/drag_drop.rb +28 -7
- data/lib/wx/doc/gen/drag_image.rb +13 -2
- data/lib/wx/doc/gen/editable_list_box.rb +7 -5
- data/lib/wx/doc/gen/event.rb +57 -26
- data/lib/wx/doc/gen/event_blocker.rb +2 -3
- data/lib/wx/doc/gen/event_filter.rb +3 -0
- data/lib/wx/doc/gen/event_list.rb +1656 -1652
- data/lib/wx/doc/gen/events.rb +305 -173
- data/lib/wx/doc/gen/evt_handler.rb +49 -3
- data/lib/wx/doc/gen/ext_help_controller.rb +10 -1
- data/lib/wx/doc/gen/file_ctrl.rb +28 -10
- data/lib/wx/doc/gen/file_ctrl_event.rb +7 -4
- data/lib/wx/doc/gen/file_dialog.rb +44 -14
- data/lib/wx/doc/gen/file_dialog_custom_control.rb +19 -0
- data/lib/wx/doc/gen/file_dialog_customize_hook.rb +11 -3
- data/lib/wx/doc/gen/file_dir_picker_event.rb +4 -4
- data/lib/wx/doc/gen/file_picker_ctrl.rb +12 -9
- data/lib/wx/doc/gen/file_system.rb +54 -15
- data/lib/wx/doc/gen/find_dialog_event.rb +6 -4
- data/lib/wx/doc/gen/find_replace_data.rb +2 -1
- data/lib/wx/doc/gen/find_replace_dialog.rb +4 -1
- data/lib/wx/doc/gen/flex_grid_sizer.rb +13 -1
- data/lib/wx/doc/gen/font.rb +103 -20
- data/lib/wx/doc/gen/font_data.rb +16 -3
- data/lib/wx/doc/gen/font_dialog.rb +6 -1
- data/lib/wx/doc/gen/font_picker_ctrl.rb +14 -7
- data/lib/wx/doc/gen/font_picker_event.rb +3 -3
- data/lib/wx/doc/gen/frame.rb +73 -15
- data/lib/wx/doc/gen/fs_file.rb +39 -10
- data/lib/wx/doc/gen/gauge.rb +19 -8
- data/lib/wx/doc/gen/gb_sizer_item.rb +5 -1
- data/lib/wx/doc/gen/gcdc.rb +3 -2
- data/lib/wx/doc/gen/gdi_common.rb +80 -11
- data/lib/wx/doc/gen/gdi_object.rb +1 -1
- data/lib/wx/doc/gen/generic_dir_ctrl.rb +13 -7
- data/lib/wx/doc/gen/graphics_context.rb +86 -10
- data/lib/wx/doc/gen/graphics_object.rb +35 -6
- data/lib/wx/doc/gen/grid/event_list.rb +168 -164
- data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +3 -0
- data/lib/wx/doc/gen/grid/grid_cell_attr.rb +16 -3
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +1 -1
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +1 -1
- data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_editor.rb +10 -1
- data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +1 -1
- data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +2 -1
- data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +1 -1
- data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +7 -1
- data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +1 -1
- data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +1 -1
- data/lib/wx/doc/gen/grid/grid_ctrl.rb +256 -12
- data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +6 -4
- data/lib/wx/doc/gen/grid/grid_event.rb +6 -4
- data/lib/wx/doc/gen/grid/grid_range_select_event.rb +4 -4
- data/lib/wx/doc/gen/grid/grid_size_event.rb +4 -4
- data/lib/wx/doc/gen/grid/grid_string_table.rb +8 -0
- data/lib/wx/doc/gen/grid/grid_table_base.rb +28 -3
- data/lib/wx/doc/gen/grid/grid_table_message.rb +2 -0
- data/lib/wx/doc/gen/grid_bag_sizer.rb +21 -7
- data/lib/wx/doc/gen/grid_sizer.rb +11 -1
- data/lib/wx/doc/gen/gui_event_loop.rb +13 -3
- data/lib/wx/doc/gen/header_ctrl.rb +110 -11
- data/lib/wx/doc/gen/header_ctrl_event.rb +4 -2
- data/lib/wx/doc/gen/help_controller.rb +14 -3
- data/lib/wx/doc/gen/help_provider.rb +22 -4
- data/lib/wx/doc/gen/html/event_list.rb +41 -37
- data/lib/wx/doc/gen/html/html_cell.rb +48 -6
- data/lib/wx/doc/gen/html/html_cell_event.rb +5 -4
- data/lib/wx/doc/gen/html/html_easy_printing.rb +20 -3
- data/lib/wx/doc/gen/html/html_help_controller.rb +26 -2
- data/lib/wx/doc/gen/html/html_help_data.rb +8 -1
- data/lib/wx/doc/gen/html/html_help_window.rb +9 -1
- data/lib/wx/doc/gen/html/html_link_event.rb +3 -3
- data/lib/wx/doc/gen/html/html_list_box.rb +54 -16
- data/lib/wx/doc/gen/html/html_printout.rb +7 -1
- data/lib/wx/doc/gen/html/html_window.rb +43 -6
- data/lib/wx/doc/gen/hyperlink_ctrl.rb +9 -8
- data/lib/wx/doc/gen/hyperlink_event.rb +3 -3
- data/lib/wx/doc/gen/icon.rb +23 -29
- data/lib/wx/doc/gen/icon_location.rb +1 -1
- data/lib/wx/doc/gen/image.rb +143 -20
- data/lib/wx/doc/gen/image_list.rb +25 -6
- data/lib/wx/doc/gen/info_bar.rb +14 -2
- data/lib/wx/doc/gen/keyboard_state.rb +11 -1
- data/lib/wx/doc/gen/list_box.rb +46 -17
- data/lib/wx/doc/gen/list_ctrl.rb +165 -29
- data/lib/wx/doc/gen/list_event.rb +13 -4
- data/lib/wx/doc/gen/listbook.rb +7 -7
- data/lib/wx/doc/gen/locale.rb +68 -4
- data/lib/wx/doc/gen/log.rb +58 -12
- data/lib/wx/doc/gen/mdi_client_window.rb +11 -2
- data/lib/wx/doc/gen/mdi_frame.rb +51 -7
- data/lib/wx/doc/gen/media_ctrl.rb +43 -18
- data/lib/wx/doc/gen/media_event.rb +6 -4
- data/lib/wx/doc/gen/memory_dc.rb +16 -6
- data/lib/wx/doc/gen/menu.rb +81 -26
- data/lib/wx/doc/gen/menu_bar.rb +74 -15
- data/lib/wx/doc/gen/menu_item.rb +67 -19
- data/lib/wx/doc/gen/message_dialog.rb +17 -8
- data/lib/wx/doc/gen/mini_frame.rb +14 -5
- data/lib/wx/doc/gen/mirror_dc.rb +1 -2
- data/lib/wx/doc/gen/mouse_state.rb +1 -1
- data/lib/wx/doc/gen/multi_choice_dialog.rb +9 -4
- data/lib/wx/doc/gen/non_owned_window.rb +4 -1
- data/lib/wx/doc/gen/notebook.rb +27 -9
- data/lib/wx/doc/gen/num_validator.rb +37 -0
- data/lib/wx/doc/gen/number_entry_dialog.rb +5 -1
- data/lib/wx/doc/gen/object.rb +3 -1
- data/lib/wx/doc/gen/owner_drawn_combo_box.rb +340 -0
- data/lib/wx/doc/gen/paint_dc.rb +1 -1
- data/lib/wx/doc/gen/palette.rb +5 -1
- data/lib/wx/doc/gen/panel.rb +25 -8
- data/lib/wx/doc/gen/pen.rb +46 -8
- data/lib/wx/doc/gen/pg/event_list.rb +97 -93
- data/lib/wx/doc/gen/pg/numeric_property_validator.rb +4 -1
- data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +12 -1
- data/lib/wx/doc/gen/pg/pg_cell.rb +11 -3
- data/lib/wx/doc/gen/pg/pg_editor.rb +161 -16
- data/lib/wx/doc/gen/pg/pg_multi_button.rb +3 -2
- data/lib/wx/doc/gen/pg/pg_properties.rb +632 -83
- data/lib/wx/doc/gen/pg/pg_property.rb +381 -77
- data/lib/wx/doc/gen/pg/pg_validation_info.rb +11 -4
- data/lib/wx/doc/gen/pg/property_grid.rb +123 -20
- data/lib/wx/doc/gen/pg/property_grid_event.rb +41 -9
- data/lib/wx/doc/gen/pg/property_grid_interface.rb +273 -34
- data/lib/wx/doc/gen/pg/property_grid_manager.rb +62 -10
- data/lib/wx/doc/gen/pg/property_grid_page.rb +33 -8
- data/lib/wx/doc/gen/pg/property_grid_page_state.rb +18 -4
- data/lib/wx/doc/gen/picker_base.rb +22 -5
- data/lib/wx/doc/gen/platform_info.rb +35 -9
- data/lib/wx/doc/gen/popup_window.rb +7 -5
- data/lib/wx/doc/gen/progress_dialog.rb +5 -0
- data/lib/wx/doc/gen/property_sheet_dialog.rb +20 -4
- data/lib/wx/doc/gen/prt/event_list.rb +8 -4
- data/lib/wx/doc/gen/prt/page_setup_dialog.rb +3 -1
- data/lib/wx/doc/gen/prt/post_script_dc.rb +3 -2
- data/lib/wx/doc/gen/prt/preview_frame.rb +5 -1
- data/lib/wx/doc/gen/prt/print_abort_dialog.rb +4 -0
- data/lib/wx/doc/gen/prt/print_data.rb +31 -3
- data/lib/wx/doc/gen/prt/print_dialog.rb +5 -1
- data/lib/wx/doc/gen/prt/printer.rb +87 -11
- data/lib/wx/doc/gen/prt/printer_dc.rb +3 -1
- data/lib/wx/doc/gen/query_layout_info_event.rb +10 -3
- data/lib/wx/doc/gen/radio_box.rb +28 -10
- data/lib/wx/doc/gen/radio_button.rb +22 -9
- data/lib/wx/doc/gen/rbn/event_list.rb +127 -123
- data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +82 -3
- data/lib/wx/doc/gen/rbn/ribbon_bar.rb +26 -4
- data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +3 -2
- data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +50 -12
- data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +3 -2
- data/lib/wx/doc/gen/rbn/ribbon_control.rb +11 -1
- data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +21 -11
- data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +2 -2
- data/lib/wx/doc/gen/rbn/ribbon_page.rb +12 -1
- data/lib/wx/doc/gen/rbn/ribbon_panel.rb +16 -4
- data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +3 -3
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +27 -3
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +3 -1
- data/lib/wx/doc/gen/rearrange_ctrl.rb +5 -2
- data/lib/wx/doc/gen/rearrange_list.rb +12 -4
- data/lib/wx/doc/gen/region.rb +104 -17
- data/lib/wx/doc/gen/region_iterator.rb +1 -1
- data/lib/wx/doc/gen/rtc/event_list.rb +116 -112
- data/lib/wx/doc/gen/rtc/rich_text_box.rb +27 -9
- data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +45 -11
- data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +1 -1
- data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +23 -14
- data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +84 -7
- data/lib/wx/doc/gen/rtc/rich_text_event.rb +8 -4
- data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +8 -2
- data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +8 -3
- data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +4 -2
- data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +6 -3
- data/lib/wx/doc/gen/rtc/rich_text_image.rb +7 -2
- data/lib/wx/doc/gen/rtc/rich_text_object.rb +82 -17
- data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +54 -11
- data/lib/wx/doc/gen/rtc/rich_text_printing.rb +15 -2
- data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +14 -9
- data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +4 -1
- data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +4 -3
- data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +2 -2
- data/lib/wx/doc/gen/sash_event.rb +13 -4
- data/lib/wx/doc/gen/sash_layout_window.rb +21 -4
- data/lib/wx/doc/gen/sash_window.rb +6 -4
- data/lib/wx/doc/gen/screen_dc.rb +1 -1
- data/lib/wx/doc/gen/scroll_bar.rb +28 -10
- data/lib/wx/doc/gen/scrolled_canvas.rb +48 -10
- data/lib/wx/doc/gen/scrolled_control.rb +48 -10
- data/lib/wx/doc/gen/scrolled_window.rb +48 -10
- data/lib/wx/doc/gen/search_ctrl.rb +14 -9
- data/lib/wx/doc/gen/simplebook.rb +8 -1
- data/lib/wx/doc/gen/single_choice_dialog.rb +9 -4
- data/lib/wx/doc/gen/sizer.rb +91 -16
- data/lib/wx/doc/gen/sizer_item.rb +21 -4
- data/lib/wx/doc/gen/slider.rb +50 -17
- data/lib/wx/doc/gen/spin_button.rb +24 -10
- data/lib/wx/doc/gen/spin_ctrl.rb +35 -9
- data/lib/wx/doc/gen/spin_ctrl_double.rb +13 -7
- data/lib/wx/doc/gen/spin_double_event.rb +6 -4
- data/lib/wx/doc/gen/spin_event.rb +4 -3
- data/lib/wx/doc/gen/splash_screen.rb +3 -2
- data/lib/wx/doc/gen/splitter_event.rb +12 -4
- data/lib/wx/doc/gen/splitter_window.rb +100 -18
- data/lib/wx/doc/gen/static_bitmap.rb +109 -7
- data/lib/wx/doc/gen/static_box.rb +15 -7
- data/lib/wx/doc/gen/static_box_sizer.rb +3 -2
- data/lib/wx/doc/gen/static_line.rb +7 -4
- data/lib/wx/doc/gen/static_text.rb +10 -6
- data/lib/wx/doc/gen/status_bar.rb +32 -8
- data/lib/wx/doc/gen/stc/event_list.rb +212 -208
- data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +207 -13
- data/lib/wx/doc/gen/stc/styled_text_event.rb +31 -6
- data/lib/wx/doc/gen/std_dialog_button_sizer.rb +7 -1
- data/lib/wx/doc/gen/svg_file_dc.rb +15 -7
- data/lib/wx/doc/gen/system_options.rb +14 -6
- data/lib/wx/doc/gen/system_settings.rb +9 -3
- data/lib/wx/doc/gen/task_bar_button.rb +324 -0
- data/lib/wx/doc/gen/task_bar_icon.rb +26 -8
- data/lib/wx/doc/gen/task_bar_icon_event.rb +5 -3
- data/lib/wx/doc/gen/text_attr.rb +47 -5
- data/lib/wx/doc/gen/text_ctrl.rb +114 -25
- data/lib/wx/doc/gen/text_entry.rb +69 -11
- data/lib/wx/doc/gen/text_entry_dialog.rb +14 -2
- data/lib/wx/doc/gen/text_validator.rb +58 -9
- data/lib/wx/doc/gen/time_picker_ctrl.rb +11 -6
- data/lib/wx/doc/gen/timer.rb +14 -2
- data/lib/wx/doc/gen/timer_event.rb +2 -2
- data/lib/wx/doc/gen/tip_provider.rb +6 -1
- data/lib/wx/doc/gen/toggle_button.rb +73 -6
- data/lib/wx/doc/gen/tool_bar.rb +141 -25
- data/lib/wx/doc/gen/tool_tip.rb +41 -5
- data/lib/wx/doc/gen/toolbook.rb +6 -4
- data/lib/wx/doc/gen/top_level_window.rb +100 -23
- data/lib/wx/doc/gen/tree_ctrl.rb +89 -16
- data/lib/wx/doc/gen/tree_event.rb +9 -4
- data/lib/wx/doc/gen/treebook.rb +16 -4
- data/lib/wx/doc/gen/ui_action_simulator.rb +10 -2
- data/lib/wx/doc/gen/utils.rb +94 -7
- data/lib/wx/doc/gen/v_list_box.rb +27 -2
- data/lib/wx/doc/gen/v_scrolled_window.rb +21 -4
- data/lib/wx/doc/gen/validator.rb +10 -14
- data/lib/wx/doc/gen/variant.rb +7 -0
- data/lib/wx/doc/gen/window.rb +415 -57
- data/lib/wx/doc/gen/window_dc.rb +2 -1
- data/lib/wx/doc/gen/window_disabler.rb +6 -2
- data/lib/wx/doc/gen/with_images.rb +13 -2
- data/lib/wx/doc/gen/wizard.rb +22 -4
- data/lib/wx/doc/gen/wizard_event.rb +5 -4
- data/lib/wx/doc/gen/wizard_page.rb +7 -2
- data/lib/wx/doc/gen/wizard_page_simple.rb +5 -1
- data/lib/wx/doc/gen/wrap_sizer.rb +5 -1
- data/lib/wx/doc/gen/xml_node.rb +33 -4
- data/lib/wx/doc/gen/xml_resource.rb +40 -5
- data/lib/wx/doc/generic_validator.rb +95 -0
- data/lib/wx/doc/graphics_context.rb +1 -0
- data/lib/wx/doc/grid/grid.rb +22 -1
- data/lib/wx/doc/help_controller.rb +11 -7
- data/lib/wx/doc/html/html_help_controller.rb +12 -4
- data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
- data/lib/wx/doc/list_ctrl.rb +33 -29
- data/lib/wx/doc/menu.rb +20 -0
- data/lib/wx/doc/notebook.rb +21 -0
- data/lib/wx/doc/num_validator.rb +387 -0
- data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
- data/lib/wx/doc/pg/events.rb +13 -9
- data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
- data/lib/wx/doc/pg/pg_property.rb +18 -0
- data/lib/wx/doc/progress_dialog.rb +36 -32
- data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
- data/lib/wx/doc/prt/print_data.rb +13 -5
- data/lib/wx/doc/prt/print_dialog.rb +31 -23
- data/lib/wx/doc/prt/printer.rb +20 -12
- data/lib/wx/doc/radio_box.rb +19 -15
- data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
- data/lib/wx/doc/region_iterator.rb +32 -28
- data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
- data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
- data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
- data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
- data/lib/wx/doc/sizer.rb +20 -0
- data/lib/wx/doc/static_bitmap.rb +25 -0
- data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
- data/lib/wx/doc/stream.rb +39 -35
- data/lib/wx/doc/system_settings.rb +30 -26
- data/lib/wx/doc/text_validator.rb +23 -9
- data/lib/wx/doc/textctrl.rb +16 -0
- data/lib/wx/doc/tree_ctrl.rb +95 -0
- data/lib/wx/doc/treebook.rb +9 -5
- data/lib/wx/doc/v_list_box.rb +9 -5
- data/lib/wx/doc/validator.rb +113 -0
- data/lib/wx/doc/variant.rb +164 -160
- data/lib/wx/doc/window.rb +87 -47
- data/lib/wx/doc/window_disabler.rb +10 -6
- data/lib/wx/grid/grid.rb +27 -4
- 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/pg/pg_property.rb +22 -0
- data/lib/wx/rbn/ribbon_gallery.rb +0 -21
- data/lib/wx/rtc/require.rb +3 -0
- data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
- data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
- data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
- data/lib/wx/stc/require.rb +1 -0
- data/lib/wx/stc/styled_text_ctrl.rb +25 -0
- 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/linux.rb +0 -3
- data/rakelib/lib/config/macosx.rb +2 -2
- data/rakelib/lib/config/mingw.rb +13 -1
- data/rakelib/lib/config/unixish.rb +1 -1
- data/rakelib/lib/config.rb +14 -4
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
- data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
- data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
- data/rakelib/yard/templates/default/tags/setup.rb +16 -0
- data/rakelib/yard/yard-custom-templates.rb +3 -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 +1233 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- data/tests/media/beep_lo.wav +0 -0
- 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_list_ctrl.rb +1 -1
- data/tests/test_media_ctrl.rb +38 -0
- data/tests/test_menu.rb +69 -0
- data/tests/test_pg.rb +27 -0
- data/tests/test_richtext.rb +45 -0
- data/tests/test_sizer.rb +59 -0
- data/tests/test_std_controls.rb +42 -1
- data/tests/test_styled_text_ctrl.rb +46 -0
- data/tests/test_tree_ctrl.rb +138 -0
- data/tests/test_validators.rb +805 -0
- data/tests/test_window.rb +12 -0
- data/tests/testapp_noframe.rb +1 -1
- metadata +113 -138
- 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,1233 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
#
|
5
|
+
# Adapted for wxRuby from wxWidgets widgets sample
|
6
|
+
# Copyright (c) 2001 Vadim Zeitlin
|
7
|
+
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
module Widgets
|
11
|
+
|
12
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
13
|
+
BookCtrl = Wx::Treebook
|
14
|
+
elsif Wx.has_feature?(:USE_NOTEBOOK)
|
15
|
+
BookCtrl = Wx::Notebook
|
16
|
+
else
|
17
|
+
BookCtrl = Wx::Choicebook
|
18
|
+
end
|
19
|
+
|
20
|
+
ICON_SIZE = 16
|
21
|
+
|
22
|
+
NATIVE_PAGE = 0
|
23
|
+
GENERIC_PAGE = 1
|
24
|
+
PICKER_PAGE = 2
|
25
|
+
COMBO_PAGE = 3
|
26
|
+
WITH_ITEMS_PAGE = 4
|
27
|
+
EDITABLE_PAGE = 5
|
28
|
+
BOOK_PAGE = 6
|
29
|
+
ALL_PAGE = 7
|
30
|
+
MAX_PAGES = 8
|
31
|
+
|
32
|
+
NATIVE_CTRLS = 1 << NATIVE_PAGE
|
33
|
+
GENERIC_CTRLS = 1 << GENERIC_PAGE
|
34
|
+
PICKER_CTRLS = 1 << PICKER_PAGE
|
35
|
+
COMBO_CTRLS = 1 << COMBO_PAGE
|
36
|
+
WITH_ITEMS_CTRLS = 1 << WITH_ITEMS_PAGE
|
37
|
+
EDITABLE_CTRLS = 1 << EDITABLE_PAGE
|
38
|
+
BOOK_CTRLS = 1 << BOOK_PAGE
|
39
|
+
ALL_CTRLS = 1 << ALL_PAGE
|
40
|
+
|
41
|
+
class Attributes
|
42
|
+
|
43
|
+
attr_accessor :tool_tip if Wx.has_feature?(:USE_TOOLTIPS)
|
44
|
+
attr_accessor :font if Wx.has_feature?(:USE_FONTDLG)
|
45
|
+
attr_accessor :col_fg, :col_bg, :col_page_bg
|
46
|
+
attr_accessor :enabled, :show, :dir, :variant, :cursor, :default_flags
|
47
|
+
|
48
|
+
def initialize
|
49
|
+
@tool_tip = 'This is a tooltip'
|
50
|
+
@enabled = true
|
51
|
+
@show = true
|
52
|
+
@dir = Wx::LayoutDirection::Layout_Default
|
53
|
+
@variant = Wx::WindowVariant::WINDOW_VARIANT_NORMAL
|
54
|
+
@cursor = Wx::NULL_CURSOR
|
55
|
+
@default_flags = Wx::Border::BORDER_DEFAULT
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
class Page < Wx::Panel
|
61
|
+
|
62
|
+
ATTRS = Attributes.new
|
63
|
+
|
64
|
+
def initialize(book, images, icon)
|
65
|
+
super(book, Wx::ID_ANY, style: Wx::CLIP_CHILDREN | Wx::TAB_TRAVERSAL)
|
66
|
+
images << Wx.Image(icon).scale(ICON_SIZE, ICON_SIZE).to_bitmap
|
67
|
+
end
|
68
|
+
|
69
|
+
# return the control shown by this page
|
70
|
+
def get_widget
|
71
|
+
nil
|
72
|
+
end
|
73
|
+
|
74
|
+
# return the control shown by this page, if it supports text entry interface
|
75
|
+
def get_text_entry
|
76
|
+
nil
|
77
|
+
end
|
78
|
+
|
79
|
+
# lazy creation of the content
|
80
|
+
def create_content
|
81
|
+
::Kernel.raise NotImplementedError
|
82
|
+
end
|
83
|
+
|
84
|
+
# some pages show additional controls, in this case override this one to
|
85
|
+
# return all of them (including the one returned by GetWidget())
|
86
|
+
def get_widgets
|
87
|
+
[get_widget]
|
88
|
+
end
|
89
|
+
|
90
|
+
# recreate the control shown by this page
|
91
|
+
#
|
92
|
+
# this is currently used only to take into account the border flags
|
93
|
+
def recreate_widget
|
94
|
+
::Kernel.raise NotImplementedError
|
95
|
+
end
|
96
|
+
|
97
|
+
# apply current attributes to the widget(s)
|
98
|
+
def set_up_widget
|
99
|
+
widgets = get_widgets
|
100
|
+
|
101
|
+
widgets.each do |widget|
|
102
|
+
::Kernel.raise 'nil widget' if widget.nil?
|
103
|
+
|
104
|
+
if Wx.has_feature?(:USE_TOOLTIPS)
|
105
|
+
widget.set_tool_tip(get_attrs.tool_tip)
|
106
|
+
end # wxUSE_TOOLTIPS
|
107
|
+
if Wx.has_feature?(:USE_FONTDLG)
|
108
|
+
widget.set_font(get_attrs.font) if get_attrs.font&.ok?
|
109
|
+
end # wxUSE_FONTDLG
|
110
|
+
|
111
|
+
widget.set_foreground_colour(get_attrs.col_fg) if get_attrs.col_fg&.ok?
|
112
|
+
widget.set_background_colour(get_attrs.col_bg) if get_attrs.col_bg&.ok?
|
113
|
+
|
114
|
+
widget.set_layout_direction(get_attrs.dir) if get_attrs.dir != Wx::LayoutDirection::Layout_Default
|
115
|
+
|
116
|
+
widget.enable(get_attrs.enabled)
|
117
|
+
widget.show(get_attrs.show)
|
118
|
+
|
119
|
+
widget.set_cursor(get_attrs.cursor)
|
120
|
+
|
121
|
+
widget.set_window_variant(get_attrs.variant)
|
122
|
+
|
123
|
+
widget.refresh
|
124
|
+
end
|
125
|
+
|
126
|
+
if get_attrs.col_page_bg&.ok?
|
127
|
+
set_background_colour(get_attrs.col_page_bg)
|
128
|
+
refresh
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
# the default attributes for the widget
|
133
|
+
def get_attrs
|
134
|
+
Page::ATTRS
|
135
|
+
end
|
136
|
+
|
137
|
+
# return true if we're showing logs in the log window (always the case
|
138
|
+
# except during startup and shutdown)
|
139
|
+
def self.is_using_log_window
|
140
|
+
Wx.get_app.is_using_log_window
|
141
|
+
end
|
142
|
+
|
143
|
+
protected
|
144
|
+
|
145
|
+
# several helper functions for page creation
|
146
|
+
|
147
|
+
# create a horz sizer containing the given control and the text ctrl
|
148
|
+
# (pointer to which will be returned next to sizer)
|
149
|
+
# with the specified id
|
150
|
+
def create_sizer_with_text(control, id = Wx::ID_ANY)
|
151
|
+
sizerRow = Wx::HBoxSizer.new
|
152
|
+
text = Wx::TextCtrl.new(control.parent, id, style: Wx::TE_PROCESS_ENTER)
|
153
|
+
|
154
|
+
sizerRow.add(control, Wx::SizerFlags.new(0).border(Wx::RIGHT).centre_vertical)
|
155
|
+
sizerRow.add(text, Wx::SizerFlags.new(1).border(Wx::LEFT).centre_vertical)
|
156
|
+
|
157
|
+
[sizerRow, text]
|
158
|
+
end
|
159
|
+
|
160
|
+
# create a sizer containing a label and a text ctrl
|
161
|
+
def create_sizer_with_text_and_label(label, id = Wx::ID_ANY, statBoxParent = nil)
|
162
|
+
create_sizer_with_text(Wx::StaticText.new(statBoxParent ? statBoxParent: self, Wx::ID_ANY, label), id)
|
163
|
+
end
|
164
|
+
|
165
|
+
# create a sizer containing a button and a text ctrl
|
166
|
+
def create_sizer_with_text_and_button(idBtn, labelBtn, id = Wx::ID_ANY, statBoxParent = nil)
|
167
|
+
create_sizer_with_text(Wx::Button.new(statBoxParent ? statBoxParent: self, idBtn, labelBtn), id)
|
168
|
+
end
|
169
|
+
|
170
|
+
# create a checkbox and add it to the sizer
|
171
|
+
def create_check_box_and_add_to_sizer(sizer, label, id = Wx::ID_ANY, statBoxParent = nil)
|
172
|
+
checkbox = Wx::CheckBox.new(statBoxParent ? statBoxParent: self, id, label)
|
173
|
+
sizer.add(checkbox, Wx::SizerFlags.new.horz_border)
|
174
|
+
sizer.add_spacer(2)
|
175
|
+
|
176
|
+
checkbox
|
177
|
+
end
|
178
|
+
|
179
|
+
class << self
|
180
|
+
# the list containing info about all pages
|
181
|
+
def widget_pages
|
182
|
+
@widget_pages ||= []
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
class PageInfo
|
188
|
+
|
189
|
+
# our ctor
|
190
|
+
def initialize(klass, label, categories = 0)
|
191
|
+
@klass = klass
|
192
|
+
@label = label
|
193
|
+
@categories = Widgets::ALL_CTRLS | categories
|
194
|
+
# dummy sorting: add and immediately sort in the list according to label
|
195
|
+
if Page.widget_pages.empty? || (pg_gt = Page.widget_pages.bsearch_index { |p| p.label > @label }).nil?
|
196
|
+
# add when first (or 'largest' label)
|
197
|
+
Page.widget_pages << self
|
198
|
+
else
|
199
|
+
Page.widget_pages.insert(pg_gt, self)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
def create(book, images)
|
204
|
+
@klass.new(book, images)
|
205
|
+
end
|
206
|
+
|
207
|
+
# the label of the page
|
208
|
+
attr_reader :label
|
209
|
+
|
210
|
+
# the list (flags) for sharing page between categories
|
211
|
+
attr_reader :categories
|
212
|
+
|
213
|
+
# the class of this page
|
214
|
+
attr_reader :klass
|
215
|
+
end
|
216
|
+
|
217
|
+
if Wx.has_feature?(:USE_LOG)
|
218
|
+
# A log target which just redirects the messages to a listbox
|
219
|
+
class LboxLogger < Wx::Log
|
220
|
+
|
221
|
+
def initialize(lbox, logOld)
|
222
|
+
super()
|
223
|
+
@lbox = lbox
|
224
|
+
#@lbox->Disable() -- looks ugly under MSW
|
225
|
+
@logOld = logOld
|
226
|
+
end
|
227
|
+
|
228
|
+
def reset
|
229
|
+
Wx::Log.set_active_target(@logOld)
|
230
|
+
end
|
231
|
+
|
232
|
+
protected
|
233
|
+
|
234
|
+
# implement sink functions
|
235
|
+
|
236
|
+
def do_log_record(level, msg, info)
|
237
|
+
if level == Wx::LOG_Trace
|
238
|
+
@logOld.log_record(level, msg, info) if @logOld
|
239
|
+
else
|
240
|
+
super
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
def do_log_text_at_level(level, msg)
|
245
|
+
# if Wx.has_feature?(:WXUNIVERSAL)
|
246
|
+
# @lbox.append_and_ensure_visible(msg)
|
247
|
+
# else # other ports don't have this method yet
|
248
|
+
@lbox.append(msg)
|
249
|
+
@lbox.set_first_item(@lbox.count - 1)
|
250
|
+
# end
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
254
|
+
end # USE_LOG
|
255
|
+
|
256
|
+
Categories = [
|
257
|
+
# if Wx.has_feature?(:WXUNIVERSAL)
|
258
|
+
# 'Universal'
|
259
|
+
# else
|
260
|
+
'Native',
|
261
|
+
# end,
|
262
|
+
'Generic',
|
263
|
+
'Pickers',
|
264
|
+
'Comboboxes',
|
265
|
+
'With items',
|
266
|
+
'Editable',
|
267
|
+
'Books',
|
268
|
+
'All controls'
|
269
|
+
]
|
270
|
+
|
271
|
+
class Frame < Wx::Frame
|
272
|
+
|
273
|
+
module ID
|
274
|
+
include Wx::IDHelper
|
275
|
+
|
276
|
+
Widgets_ClearLog = self.next_id
|
277
|
+
Widgets_Quit = self.next_id
|
278
|
+
|
279
|
+
Widgets_BookCtrl = self.next_id
|
280
|
+
|
281
|
+
if Wx.has_feature?(:USE_TOOLTIPS)
|
282
|
+
Widgets_SetTooltip = self.next_id
|
283
|
+
end # wxUSE_TOOLTIPS
|
284
|
+
Widgets_SetFgColour = self.next_id
|
285
|
+
Widgets_SetBgColour = self.next_id
|
286
|
+
Widgets_SetPageBg = self.next_id
|
287
|
+
Widgets_SetFont = self.next_id
|
288
|
+
Widgets_Enable = self.next_id
|
289
|
+
Widgets_Show = self.next_id
|
290
|
+
|
291
|
+
Widgets_BorderNone = self.next_id
|
292
|
+
Widgets_BorderStatic = self.next_id
|
293
|
+
Widgets_BorderSimple = self.next_id
|
294
|
+
Widgets_BorderRaised = self.next_id
|
295
|
+
Widgets_BorderSunken = self.next_id
|
296
|
+
Widgets_BorderDouble = self.next_id
|
297
|
+
Widgets_BorderDefault = self.next_id
|
298
|
+
|
299
|
+
Widgets_VariantNormal = self.next_id
|
300
|
+
Widgets_VariantSmall = self.next_id
|
301
|
+
Widgets_VariantMini = self.next_id
|
302
|
+
Widgets_VariantLarge = self.next_id
|
303
|
+
|
304
|
+
Widgets_LayoutDirection = self.next_id
|
305
|
+
|
306
|
+
Widgets_GlobalBusyCursor = self.next_id
|
307
|
+
Widgets_BusyCursor = self.next_id
|
308
|
+
|
309
|
+
Widgets_GoToPage = self.next_id
|
310
|
+
Widgets_GoToPageLast = self.next_id(Widgets_GoToPage + 100)
|
311
|
+
|
312
|
+
|
313
|
+
TextEntry_Begin = self.next_id
|
314
|
+
TextEntry_DisableAutoComplete = TextEntry_Begin
|
315
|
+
TextEntry_AutoCompleteFixed = self.next_id
|
316
|
+
TextEntry_AutoCompleteFilenames = self.next_id
|
317
|
+
TextEntry_AutoCompleteDirectories = self.next_id
|
318
|
+
TextEntry_AutoCompleteCustom = self.next_id
|
319
|
+
TextEntry_AutoCompleteKeyLength = self.next_id
|
320
|
+
|
321
|
+
TextEntry_SetHint = self.next_id
|
322
|
+
TextEntry_End = self.next_id
|
323
|
+
|
324
|
+
Last = self.next_id
|
325
|
+
end
|
326
|
+
|
327
|
+
def initialize(title)
|
328
|
+
super(nil, Wx::ID_ANY, title)
|
329
|
+
|
330
|
+
set_icon(Wx.Icon(:sample, art_path: File.dirname(__dir__)))
|
331
|
+
|
332
|
+
# init everything
|
333
|
+
if Wx.has_feature?(:USE_LOG)
|
334
|
+
@lboxLog = nil
|
335
|
+
@logTarget = nil
|
336
|
+
end # USE_LOG
|
337
|
+
@book = nil
|
338
|
+
|
339
|
+
if Wx.has_feature?(:USE_MENUS)
|
340
|
+
# create the menubar
|
341
|
+
mbar = Wx::MenuBar.new
|
342
|
+
menuWidget = Wx::Menu.new
|
343
|
+
if Wx.has_feature?(:USE_TOOLTIPS)
|
344
|
+
menuWidget.append(ID::Widgets_SetTooltip, "Set &tooltip...\tCtrl-T")
|
345
|
+
menuWidget.append_separator
|
346
|
+
end # wxUSE_TOOLTIPS
|
347
|
+
menuWidget.append(ID::Widgets_SetFgColour, "Set &foreground...\tCtrl-F")
|
348
|
+
menuWidget.append(ID::Widgets_SetBgColour, "Set &background...\tCtrl-B")
|
349
|
+
menuWidget.append(ID::Widgets_SetPageBg, "Set &page background...\tShift-Ctrl-B")
|
350
|
+
menuWidget.append(ID::Widgets_SetFont, "Set f&ont...\tCtrl-O")
|
351
|
+
menuWidget.append_check_item(ID::Widgets_Enable, "&Enable/disable\tCtrl-E")
|
352
|
+
menuWidget.append_check_item(ID::Widgets_Show, "Show/Hide")
|
353
|
+
|
354
|
+
menuBorders = Wx::Menu.new
|
355
|
+
menuBorders.append_radio_item(ID::Widgets_BorderDefault, "De&fault\tCtrl-Shift-9")
|
356
|
+
menuBorders.append_radio_item(ID::Widgets_BorderNone, "&None\tCtrl-Shift-0")
|
357
|
+
menuBorders.append_radio_item(ID::Widgets_BorderSimple, "&Simple\tCtrl-Shift-1")
|
358
|
+
menuBorders.append_radio_item(ID::Widgets_BorderDouble, "&Double\tCtrl-Shift-2")
|
359
|
+
menuBorders.append_radio_item(ID::Widgets_BorderStatic, "Stati&c\tCtrl-Shift-3")
|
360
|
+
menuBorders.append_radio_item(ID::Widgets_BorderRaised, "&Raised\tCtrl-Shift-4")
|
361
|
+
menuBorders.append_radio_item(ID::Widgets_BorderSunken, "S&unken\tCtrl-Shift-5")
|
362
|
+
menuWidget.append_sub_menu(menuBorders, "Set &border")
|
363
|
+
|
364
|
+
menuVariants = Wx::Menu.new
|
365
|
+
menuVariants.append_radio_item(ID::Widgets_VariantMini, "&Mini\tCtrl-Shift-6")
|
366
|
+
menuVariants.append_radio_item(ID::Widgets_VariantSmall, "&Small\tCtrl-Shift-7")
|
367
|
+
menuVariants.append_radio_item(ID::Widgets_VariantNormal, "&Normal\tCtrl-Shift-8")
|
368
|
+
menuVariants.append_radio_item(ID::Widgets_VariantLarge, "&Large\tCtrl-Shift-9")
|
369
|
+
menuWidget.append_sub_menu(menuVariants, "Set &variant")
|
370
|
+
|
371
|
+
menuWidget.append_separator
|
372
|
+
menuWidget.append_check_item(ID::Widgets_LayoutDirection,
|
373
|
+
"Toggle &layout direction\tCtrl-L")
|
374
|
+
menuWidget.check(ID::Widgets_LayoutDirection,
|
375
|
+
get_layout_direction == Wx::LayoutDirection::Layout_RightToLeft)
|
376
|
+
|
377
|
+
menuWidget.append_separator
|
378
|
+
menuWidget.append_check_item(ID::Widgets_GlobalBusyCursor,
|
379
|
+
"Toggle &global busy cursor\tCtrl-Shift-U")
|
380
|
+
menuWidget.append_check_item(ID::Widgets_BusyCursor,
|
381
|
+
"Toggle b&usy cursor\tCtrl-U")
|
382
|
+
|
383
|
+
menuWidget.append_separator
|
384
|
+
menuWidget.append(Wx::ID_EXIT, "&Quit\tCtrl-Q")
|
385
|
+
mbar.append(menuWidget, "&Widget")
|
386
|
+
|
387
|
+
menuTextEntry = Wx::Menu.new
|
388
|
+
menuTextEntry.append_radio_item(ID::TextEntry_DisableAutoComplete,
|
389
|
+
"&Disable auto-completion")
|
390
|
+
menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteFixed,
|
391
|
+
"Fixed-&list auto-completion")
|
392
|
+
menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteFilenames,
|
393
|
+
"&Files names auto-completion")
|
394
|
+
menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteDirectories,
|
395
|
+
"&Directories names auto-completion")
|
396
|
+
menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteCustom,
|
397
|
+
"&Custom auto-completion")
|
398
|
+
menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteKeyLength,
|
399
|
+
"Custom with &min length")
|
400
|
+
menuTextEntry.append_separator
|
401
|
+
menuTextEntry.append(ID::TextEntry_SetHint, "Set help &hint")
|
402
|
+
|
403
|
+
mbar.append(menuTextEntry, "&Text")
|
404
|
+
|
405
|
+
set_menu_bar(mbar)
|
406
|
+
|
407
|
+
mbar.check(ID::Widgets_Enable, true)
|
408
|
+
mbar.check(ID::Widgets_Show, true)
|
409
|
+
|
410
|
+
mbar.check(ID::Widgets_VariantNormal, true)
|
411
|
+
end # wxUSE_MENUS
|
412
|
+
|
413
|
+
# create controls
|
414
|
+
@panel = Wx::Panel.new(self)
|
415
|
+
|
416
|
+
sizerTop = Wx::VBoxSizer.new
|
417
|
+
|
418
|
+
# we have 2 panes: book with pages demonstrating the controls in the
|
419
|
+
# upper one and the log window with some buttons in the lower
|
420
|
+
|
421
|
+
style = Wx::BK_DEFAULT
|
422
|
+
# Uncomment to suppress page theme (draw in solid colour)
|
423
|
+
#style |= Wx::NB_NOPAGETHEME
|
424
|
+
|
425
|
+
@book = Widgets::BookCtrl.new(@panel, ID::Widgets_BookCtrl,
|
426
|
+
style: style, name: 'Widgets')
|
427
|
+
|
428
|
+
init_book
|
429
|
+
|
430
|
+
# the lower one only has the log listbox and a button to clear it
|
431
|
+
if Wx.has_feature?(:USE_LOG)
|
432
|
+
sizerDown = Wx::StaticBoxSizer.new(Wx::VERTICAL, @panel, '&Log window')
|
433
|
+
sizerDownBox = sizerDown.get_static_box
|
434
|
+
|
435
|
+
@lboxLog = Wx::ListBox.new(sizerDownBox)
|
436
|
+
sizerDown.add(@lboxLog, Wx::SizerFlags.new(1).expand.border)
|
437
|
+
sizerDown.set_min_size(100, 150)
|
438
|
+
else
|
439
|
+
sizerDown = Wx::VBoxSizer.new
|
440
|
+
end # USE_LOG
|
441
|
+
|
442
|
+
sizerBtns = Wx::HBoxSizer.new
|
443
|
+
if Wx.has_feature?(:USE_LOG)
|
444
|
+
btn = Wx::Button.new(sizerDownBox, ID::Widgets_ClearLog, 'Clear &log')
|
445
|
+
sizerBtns.add(btn)
|
446
|
+
sizerBtns.add_spacer(10)
|
447
|
+
end # USE_LOG
|
448
|
+
btn = Wx::Button.new(sizerDownBox, ID::Widgets_Quit, 'E&xit')
|
449
|
+
sizerBtns.add(btn)
|
450
|
+
sizerDown.add(sizerBtns, Wx::SizerFlags.new.border.right)
|
451
|
+
|
452
|
+
# put everything together
|
453
|
+
sizerTop.add(@book, Wx::SizerFlags.new(1).expand.double_border(Wx::ALL & ~(Wx::TOP | Wx::BOTTOM)))
|
454
|
+
sizerTop.add_spacer(5)
|
455
|
+
sizerTop.add(sizerDown, Wx::SizerFlags.new(0).expand.double_border(Wx::ALL & ~Wx::TOP))
|
456
|
+
|
457
|
+
@panel.set_sizer(sizerTop)
|
458
|
+
|
459
|
+
# TODO - review wxPersistenceManager
|
460
|
+
# sizeSet = wxPersistentRegisterAndRestore(this, "Main")
|
461
|
+
|
462
|
+
sizeMin = @panel.get_best_size
|
463
|
+
# if ( !sizeSet )
|
464
|
+
set_client_size(sizeMin)
|
465
|
+
set_min_client_size(sizeMin)
|
466
|
+
|
467
|
+
# connect the event handlers
|
468
|
+
if Wx.has_feature?(:USE_LOG)
|
469
|
+
evt_button(ID::Widgets_ClearLog, :on_button_clear_log)
|
470
|
+
end # USE_LOG
|
471
|
+
evt_button(ID::Widgets_Quit, :on_exit)
|
472
|
+
|
473
|
+
if Wx.has_feature?(:USE_TOOLTIPS)
|
474
|
+
evt_menu(ID::Widgets_SetTooltip, :on_set_tooltip)
|
475
|
+
end # wxUSE_TOOLTIPS
|
476
|
+
|
477
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
478
|
+
evt_treebook_page_changing(Wx::ID_ANY, :on_page_changing)
|
479
|
+
elsif Wx.has_feature?(:USE_NOTEBOOK)
|
480
|
+
evt_notebook_page_changing(Wx::ID_ANY, :on_page_changing)
|
481
|
+
else
|
482
|
+
evt_choicebook_page_changing(Wx::ID_ANY, :on_page_changing)
|
483
|
+
end
|
484
|
+
if Wx.has_feature?(:USE_MENUS)
|
485
|
+
evt_menu_range(ID::Widgets_GoToPage, ID::Widgets_GoToPageLast,
|
486
|
+
:on_go_to_page)
|
487
|
+
|
488
|
+
evt_menu(ID::Widgets_SetFgColour, :on_set_fg_col)
|
489
|
+
evt_menu(ID::Widgets_SetBgColour, :on_set_bg_col)
|
490
|
+
evt_menu(ID::Widgets_SetPageBg, :on_set_page_bg)
|
491
|
+
evt_menu(ID::Widgets_SetFont, :on_set_font)
|
492
|
+
evt_menu(ID::Widgets_Enable, :on_enable)
|
493
|
+
evt_menu(ID::Widgets_Show, :on_show)
|
494
|
+
|
495
|
+
evt_menu_range(ID::Widgets_BorderNone, ID::Widgets_BorderDefault,
|
496
|
+
:on_set_border)
|
497
|
+
|
498
|
+
evt_menu_range(ID::Widgets_VariantNormal, ID::Widgets_VariantLarge,
|
499
|
+
:on_set_variant)
|
500
|
+
|
501
|
+
evt_menu(ID::Widgets_LayoutDirection, :on_toggle_layout_direction)
|
502
|
+
|
503
|
+
evt_menu(ID::Widgets_GlobalBusyCursor, :on_toggle_global_busy_cursor)
|
504
|
+
evt_menu(ID::Widgets_BusyCursor, :on_toggle_busy_cursor)
|
505
|
+
|
506
|
+
evt_menu(ID::TextEntry_DisableAutoComplete, :on_disable_auto_complete)
|
507
|
+
evt_menu(ID::TextEntry_AutoCompleteFixed, :on_auto_complete_fixed)
|
508
|
+
evt_menu(ID::TextEntry_AutoCompleteFilenames, :on_auto_complete_filenames)
|
509
|
+
evt_menu(ID::TextEntry_AutoCompleteDirectories, :on_auto_complete_directories)
|
510
|
+
evt_menu(ID::TextEntry_AutoCompleteCustom, :on_auto_complete_custom)
|
511
|
+
evt_menu(ID::TextEntry_AutoCompleteKeyLength, :on_auto_complete_key_length)
|
512
|
+
|
513
|
+
evt_menu(ID::TextEntry_SetHint, :on_set_hint)
|
514
|
+
|
515
|
+
evt_update_ui_range(ID::TextEntry_Begin, ID::TextEntry_End - 1,
|
516
|
+
:on_update_text_ui)
|
517
|
+
|
518
|
+
evt_menu(Wx::ID_EXIT, :on_exit)
|
519
|
+
end # wxUSE_MENUS
|
520
|
+
|
521
|
+
if Wx.has_feature?(:USE_LOG)
|
522
|
+
# now that everything is created we can redirect the log messages to the
|
523
|
+
# listbox
|
524
|
+
@logTarget = LboxLogger.new(@lboxLog, Wx::Log.get_active_target)
|
525
|
+
Wx::Log.set_active_target(@logTarget)
|
526
|
+
end
|
527
|
+
end
|
528
|
+
|
529
|
+
protected
|
530
|
+
|
531
|
+
if Wx.has_feature?(:USE_LOG)
|
532
|
+
def on_button_clear_log(_event)
|
533
|
+
@lboxLog.clear
|
534
|
+
end
|
535
|
+
end # USE_LOG
|
536
|
+
|
537
|
+
def on_exit(_event)
|
538
|
+
@logTarget.reset if @logTarget
|
539
|
+
@logTarget = nil
|
540
|
+
close
|
541
|
+
end
|
542
|
+
|
543
|
+
if Wx.has_feature?(:USE_MENUS)
|
544
|
+
|
545
|
+
def on_page_changing(event)
|
546
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
547
|
+
# don't allow selection of entries without pages (categories)
|
548
|
+
event.veto unless @book.get_page(event.selection)
|
549
|
+
end
|
550
|
+
end
|
551
|
+
|
552
|
+
def on_page_changed(event)
|
553
|
+
sel = event.selection
|
554
|
+
|
555
|
+
# adjust "Page" menu selection
|
556
|
+
item, _ = get_menu_bar.find_item(ID::Widgets_GoToPage + sel)
|
557
|
+
item.check if item
|
558
|
+
|
559
|
+
get_menu_bar.check(ID::Widgets_BusyCursor, false)
|
560
|
+
|
561
|
+
# create the pages on demand, otherwise the sample startup is too slow as
|
562
|
+
# it creates hundreds of controls
|
563
|
+
curPage = current_page
|
564
|
+
if curPage.get_children.empty?
|
565
|
+
Wx::WindowUpdateLocker.update(curPage) do
|
566
|
+
curPage.create_content
|
567
|
+
curPage.layout
|
568
|
+
|
569
|
+
connect_to_widget_events
|
570
|
+
end
|
571
|
+
end
|
572
|
+
|
573
|
+
# re-apply the attributes to the widget(s)
|
574
|
+
curPage.set_up_widget
|
575
|
+
|
576
|
+
event.skip
|
577
|
+
end
|
578
|
+
|
579
|
+
def on_go_to_page(event)
|
580
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
581
|
+
@book.set_selection(event.id - ID::Widgets_GoToPage)
|
582
|
+
else
|
583
|
+
@book.set_selection(@book.get_page_count-1)
|
584
|
+
book = @book.get_current_page
|
585
|
+
book.set_selection(event.id - ID::Widgets_GoToPage)
|
586
|
+
end
|
587
|
+
end
|
588
|
+
|
589
|
+
if Wx.has_feature?(:USE_TOOLTIPS)
|
590
|
+
def on_set_tooltip(_event)
|
591
|
+
Wx.TextEntryDialog(self,
|
592
|
+
'Tooltip text (may use \\n, leave empty to remove): ',
|
593
|
+
'Widgets sample',
|
594
|
+
Page::ATTRS.tool_tip) do |dialog|
|
595
|
+
return if dialog.show_modal != Wx::ID_OK
|
596
|
+
|
597
|
+
Page::ATTRS.tool_tip = dialog.value
|
598
|
+
Page::ATTRS.tool_tip.gsub!("\\n", "\n")
|
599
|
+
end
|
600
|
+
|
601
|
+
current_page.set_up_widget
|
602
|
+
end
|
603
|
+
end # wxUSE_TOOLTIPS
|
604
|
+
|
605
|
+
# Trivial wrapper for wxGetColourFromUser() which also does something even if
|
606
|
+
# the colour dialog is not available in the current build (which may happen
|
607
|
+
# for the ports in development and it is still useful to see how colours work)
|
608
|
+
def get_colour_from_user(colDefault)
|
609
|
+
if Wx.has_feature?(:USE_COLOURDLG)
|
610
|
+
Wx.get_colour_from_user(self, colDefault)
|
611
|
+
else # !wxUSE_COLOURDLG
|
612
|
+
if colDefault == Wx::BLACK
|
613
|
+
Wx::WHITE
|
614
|
+
else
|
615
|
+
Wx::BLACK
|
616
|
+
end
|
617
|
+
end # wxUSE_COLOURDLG/!wxUSE_COLOURDLG
|
618
|
+
end
|
619
|
+
|
620
|
+
def on_set_fg_col(_event)
|
621
|
+
# allow for debugging the default colour the first time this is called
|
622
|
+
page = current_page
|
623
|
+
|
624
|
+
unless Page::ATTRS.col_fg&.ok?
|
625
|
+
Page::ATTRS.col_fg = page.get_foreground_colour
|
626
|
+
end
|
627
|
+
|
628
|
+
col = get_colour_from_user(Page::ATTRS.col_fg)
|
629
|
+
return unless col&.ok?
|
630
|
+
|
631
|
+
Page::ATTRS.col_fg = col
|
632
|
+
|
633
|
+
page.set_up_widget
|
634
|
+
end
|
635
|
+
|
636
|
+
def on_set_bg_col(_event)
|
637
|
+
# allow for debugging the default colour the first time this is called
|
638
|
+
page = current_page
|
639
|
+
|
640
|
+
unless Page::ATTRS.col_bg&.ok?
|
641
|
+
Page::ATTRS.col_bg = page.get_background_colour
|
642
|
+
end
|
643
|
+
|
644
|
+
col = get_colour_from_user(Page::ATTRS.col_bg)
|
645
|
+
return unless col&.ok?
|
646
|
+
|
647
|
+
Page::ATTRS.col_bg = col
|
648
|
+
|
649
|
+
page.set_up_widget
|
650
|
+
end
|
651
|
+
|
652
|
+
def on_set_page_bg(_event)
|
653
|
+
col = get_colour_from_user(get_background_colour)
|
654
|
+
return unless col&.ok?
|
655
|
+
|
656
|
+
Page::ATTRS.col_page_bg = col
|
657
|
+
|
658
|
+
current_page.set_up_widget
|
659
|
+
end
|
660
|
+
|
661
|
+
def on_set_font(_event)
|
662
|
+
if Wx.has_feature?(:USE_FONTDLG)
|
663
|
+
page = current_page
|
664
|
+
|
665
|
+
unless Page::ATTRS.font&.ok?
|
666
|
+
Page::ATTRS.font = page.get_font
|
667
|
+
end
|
668
|
+
|
669
|
+
font = Wx.get_font_from_user(self, Page::ATTRS.font)
|
670
|
+
return unless font&.ok?
|
671
|
+
|
672
|
+
Page::ATTRS.font = font
|
673
|
+
|
674
|
+
page.set_up_widget
|
675
|
+
# The best size of the widget could have changed after changing its font,
|
676
|
+
# so re-layout to show it correctly.
|
677
|
+
page.layout
|
678
|
+
else
|
679
|
+
Wx.log_message('Font selection dialog not available in current build.')
|
680
|
+
end
|
681
|
+
end
|
682
|
+
|
683
|
+
def on_enable(event)
|
684
|
+
Page::ATTRS.enabled = event.checked?
|
685
|
+
|
686
|
+
current_page.set_up_widget
|
687
|
+
end
|
688
|
+
|
689
|
+
def on_show(event)
|
690
|
+
Page::ATTRS.show = event.checked?
|
691
|
+
|
692
|
+
current_page.set_up_widget
|
693
|
+
end
|
694
|
+
|
695
|
+
def on_set_border(event)
|
696
|
+
case event.id
|
697
|
+
when ID::Widgets_BorderNone
|
698
|
+
border = Wx::BORDER_NONE
|
699
|
+
when ID::Widgets_BorderStatic
|
700
|
+
border = Wx::BORDER_STATIC
|
701
|
+
when ID::Widgets_BorderSimple
|
702
|
+
border = Wx::BORDER_SIMPLE
|
703
|
+
when ID::Widgets_BorderRaised
|
704
|
+
border = Wx::BORDER_RAISED
|
705
|
+
when ID::Widgets_BorderSunken
|
706
|
+
border = Wx::BORDER_SUNKEN
|
707
|
+
when ID::Widgets_BorderDouble
|
708
|
+
border = Wx::BORDER_DOUBLE
|
709
|
+
when ID::Widgets_BorderDefault
|
710
|
+
border = Wx::BORDER_DEFAULT
|
711
|
+
else
|
712
|
+
::Kernel.raise RuntimeError, 'unknown border style'
|
713
|
+
end
|
714
|
+
|
715
|
+
Page::ATTRS.default_flags &= ~Wx::BORDER_MASK
|
716
|
+
Page::ATTRS.default_flags |= border
|
717
|
+
|
718
|
+
page = current_page
|
719
|
+
|
720
|
+
page.recreate_widget
|
721
|
+
|
722
|
+
connect_to_widget_events
|
723
|
+
|
724
|
+
# re-apply the attributes to the widget(s)
|
725
|
+
page.set_up_widget
|
726
|
+
end
|
727
|
+
|
728
|
+
def on_set_variant(event)
|
729
|
+
case event.id
|
730
|
+
when ID::Widgets_VariantSmall
|
731
|
+
v = Wx::WINDOW_VARIANT_SMALL
|
732
|
+
when ID::Widgets_VariantMini
|
733
|
+
v = Wx::WINDOW_VARIANT_MINI
|
734
|
+
when ID::Widgets_VariantLarge
|
735
|
+
v = Wx::WINDOW_VARIANT_LARGE
|
736
|
+
when ID::Widgets_VariantNormal
|
737
|
+
v = Wx::WINDOW_VARIANT_NORMAL
|
738
|
+
else
|
739
|
+
::Kernel.raise RuntimeError, 'unknown window variant'
|
740
|
+
end
|
741
|
+
|
742
|
+
Page::ATTRS.variant = v
|
743
|
+
|
744
|
+
current_page.set_up_widget
|
745
|
+
current_page.layout
|
746
|
+
end
|
747
|
+
|
748
|
+
def on_toggle_layout_direction(_event)
|
749
|
+
dir = Page::ATTRS.dir
|
750
|
+
dir = get_layout_direction if dir == Wx::LayoutDirection::Layout_Default
|
751
|
+
Page::ATTRS.dir =
|
752
|
+
(dir == Wx::LayoutDirection::Layout_LeftToRight) ?
|
753
|
+
Wx::LayoutDirection::Layout_RightToLeft :
|
754
|
+
Wx::LayoutDirection::Layout_LeftToRight
|
755
|
+
|
756
|
+
current_page.set_up_widget
|
757
|
+
end
|
758
|
+
|
759
|
+
def on_toggle_global_busy_cursor(event)
|
760
|
+
if event.checked?
|
761
|
+
Wx.begin_busy_cursor
|
762
|
+
else
|
763
|
+
Wx.end_busy_cursor
|
764
|
+
end
|
765
|
+
end
|
766
|
+
|
767
|
+
def on_toggle_busy_cursor(event)
|
768
|
+
Page::ATTRS.cursor = event.checked? ? Wx::HOURGLASS_CURSOR : Wx::NULL_CURSOR
|
769
|
+
|
770
|
+
current_page.set_up_widget
|
771
|
+
end
|
772
|
+
|
773
|
+
# wxTextEntry-specific tests
|
774
|
+
def on_disable_auto_complete(_event)
|
775
|
+
unless (entry = current_page.get_text_entry)
|
776
|
+
Wx.log_error('menu item should be disabled')
|
777
|
+
return
|
778
|
+
end
|
779
|
+
|
780
|
+
if entry.auto_complete(nil)
|
781
|
+
Wx.log_message('Disabled auto completion.')
|
782
|
+
else
|
783
|
+
Wx.log_message('auto_complete() failed.')
|
784
|
+
end
|
785
|
+
end
|
786
|
+
|
787
|
+
def on_auto_complete_fixed(_event)
|
788
|
+
unless (entry = current_page.get_text_entry)
|
789
|
+
Wx.log_error('menu item should be disabled')
|
790
|
+
return
|
791
|
+
end
|
792
|
+
|
793
|
+
completion_choices = (?a..?z).collect { |c| c*2 }
|
794
|
+
completion_choices <<
|
795
|
+
'is this string for test?' <<
|
796
|
+
'this is a test string' <<
|
797
|
+
'this is another test string' <<
|
798
|
+
'this string is for test'
|
799
|
+
|
800
|
+
if entry.auto_complete(completion_choices)
|
801
|
+
Wx.log_message('Enabled auto completion of a set of fixed strings.')
|
802
|
+
else
|
803
|
+
Wx.log_message('auto_complete() failed.')
|
804
|
+
end
|
805
|
+
end
|
806
|
+
|
807
|
+
def on_auto_complete_filenames(_event)
|
808
|
+
unless (entry = current_page.get_text_entry)
|
809
|
+
Wx.log_error('menu item should be disabled')
|
810
|
+
return
|
811
|
+
end
|
812
|
+
|
813
|
+
if entry.auto_complete_file_names
|
814
|
+
Wx.log_message('Enabled auto completion of file names.')
|
815
|
+
else
|
816
|
+
Wx.log_message('auto_complete_file_names failed.')
|
817
|
+
end
|
818
|
+
end
|
819
|
+
|
820
|
+
def on_auto_complete_directories(_event)
|
821
|
+
unless (entry = current_page.get_text_entry)
|
822
|
+
Wx.log_error('menu item should be disabled')
|
823
|
+
return
|
824
|
+
end
|
825
|
+
|
826
|
+
if entry.auto_complete_directories
|
827
|
+
Wx.log_message('Enabled auto completion of directories.')
|
828
|
+
else
|
829
|
+
Wx.log_message('AutoCompleteDirectories() failed.')
|
830
|
+
end
|
831
|
+
end
|
832
|
+
|
833
|
+
def on_auto_complete_custom(_event)
|
834
|
+
do_use_custom_auto_complete
|
835
|
+
end
|
836
|
+
|
837
|
+
def on_auto_complete_key_length(_event)
|
838
|
+
message = "The auto-completion is triggered if and only if\n" +
|
839
|
+
"the length of the search key (prefix) is at least [LENGTH].\n" +
|
840
|
+
"Hint: 0 disables the length check completely."
|
841
|
+
prompt = 'Enter the minimum key length:'
|
842
|
+
caption = 'Minimum key length'
|
843
|
+
|
844
|
+
res = Wx.get_number_from_user(message, prompt, caption, 1, 0, 100, self)
|
845
|
+
return if res == -1
|
846
|
+
|
847
|
+
Wx.log_message("The minimum key length for autocomplete is #{res}.")
|
848
|
+
|
849
|
+
do_use_custom_auto_complete(res)
|
850
|
+
end
|
851
|
+
|
852
|
+
# This is a simple (and hence rather useless) example of a custom
|
853
|
+
# completer class that completes the first word (only) initially and only
|
854
|
+
# build the list of the possible second words once the first word is
|
855
|
+
# known. This allows to avoid building the full 676000 item list of
|
856
|
+
# possible strings all at once as the we have 1000 possibilities for the
|
857
|
+
# first word (000..999) and 676 (aa..zz) for the second one.
|
858
|
+
class CustomTextCompleter < Wx::TextCompleterSimple
|
859
|
+
|
860
|
+
def initialize(min_length)
|
861
|
+
super()
|
862
|
+
@min_length = min_length
|
863
|
+
end
|
864
|
+
|
865
|
+
def get_completions(prefix)
|
866
|
+
res = []
|
867
|
+
1.times do
|
868
|
+
# Wait for enough text to be entered before proposing completions:
|
869
|
+
# this is done to avoid proposing too many of them when the
|
870
|
+
# control is empty, for example.
|
871
|
+
break if prefix.size < @min_length
|
872
|
+
|
873
|
+
# The only valid strings start with 3 digits so check for their
|
874
|
+
# presence proposing to complete the remaining ones.
|
875
|
+
break unless prefix.start_with?(/\d/)
|
876
|
+
|
877
|
+
if prefix.size == 1
|
878
|
+
10.times { |i| 10.times { |j| res << "#{prefix}#{i}#{j}"} }
|
879
|
+
break
|
880
|
+
else
|
881
|
+
break unless (?0..?9).include?(prefix[1])
|
882
|
+
end
|
883
|
+
|
884
|
+
if prefix.size == 2
|
885
|
+
10.times { |i| res << "#{prefix}#{i}" }
|
886
|
+
break
|
887
|
+
else
|
888
|
+
break unless (?0..?9).include?(prefix[2])
|
889
|
+
end
|
890
|
+
|
891
|
+
# Next we must have a space and two letters.
|
892
|
+
prefix2 = prefix.dup
|
893
|
+
if prefix.size == 3
|
894
|
+
prefix2 += ' '
|
895
|
+
elsif prefix[3] != ' '
|
896
|
+
break
|
897
|
+
end
|
898
|
+
|
899
|
+
if prefix2.size == 4
|
900
|
+
(?a..?z).each { |c| (?a..?z).each { |d| res << "#{prefix2}#{c}#{d}"} }
|
901
|
+
break
|
902
|
+
else
|
903
|
+
break unless (?a..?z).include?(prefix[4])
|
904
|
+
end
|
905
|
+
|
906
|
+
if prefix.size == 5
|
907
|
+
(?a..?z).each { |c| res << "#{prefix}#{c}" }
|
908
|
+
end
|
909
|
+
ensure
|
910
|
+
# This is used for illustrative purposes only and shows how many
|
911
|
+
# completions we return every time when we're called.
|
912
|
+
Wx.log_message("Returning #{res.size} possible completions for prefix \"#{prefix}\"")
|
913
|
+
end
|
914
|
+
res
|
915
|
+
end
|
916
|
+
|
917
|
+
end
|
918
|
+
|
919
|
+
def do_use_custom_auto_complete(min_length = 1)
|
920
|
+
unless (entry = current_page.get_text_entry)
|
921
|
+
Wx.log_error('menu item should be disabled')
|
922
|
+
return
|
923
|
+
end
|
924
|
+
|
925
|
+
if entry.auto_complete(CustomTextCompleter.new(min_length))
|
926
|
+
Wx.log_message('Enabled custom auto completer for "NNN XX" items ' +
|
927
|
+
'(where N is a digit and X is a letter).')
|
928
|
+
else
|
929
|
+
Wx.log_message('auto_complete() failed.')
|
930
|
+
end
|
931
|
+
end
|
932
|
+
|
933
|
+
class << self
|
934
|
+
|
935
|
+
def s_hint
|
936
|
+
@s_hint ||= 'Type here'
|
937
|
+
end
|
938
|
+
|
939
|
+
def s_hint=(v)
|
940
|
+
@s_hint = v
|
941
|
+
end
|
942
|
+
|
943
|
+
end
|
944
|
+
|
945
|
+
def on_set_hint(_event)
|
946
|
+
unless (entry = current_page.get_text_entry)
|
947
|
+
Wx.log_error('menu item should be disabled')
|
948
|
+
return
|
949
|
+
end
|
950
|
+
|
951
|
+
hint = Wx.get_text_from_user('Text hint:', 'Widgets sample', self.class.s_hint, self)
|
952
|
+
return if hint.empty?
|
953
|
+
|
954
|
+
self.class.s_hint = hint
|
955
|
+
|
956
|
+
if entry.set_hint(hint)
|
957
|
+
Wx.log_message("Set hint to \"#{hint}\".")
|
958
|
+
else
|
959
|
+
Wx.log_message('Text hints not supported.')
|
960
|
+
end
|
961
|
+
end
|
962
|
+
|
963
|
+
def on_update_text_ui(event)
|
964
|
+
event.enable( !current_page.get_text_entry.nil? )
|
965
|
+
end
|
966
|
+
end # wxUSE_MENUS
|
967
|
+
|
968
|
+
# initialize the book: add all pages to it
|
969
|
+
def init_book
|
970
|
+
images = []
|
971
|
+
|
972
|
+
img = Wx.Image(:sample, art_path: File.dirname(__dir__))
|
973
|
+
images << img.scale(ICON_SIZE, ICON_SIZE).to_bitmap
|
974
|
+
|
975
|
+
unless Wx.has_feature?(:USE_TREEBOOK)
|
976
|
+
books = []
|
977
|
+
end
|
978
|
+
|
979
|
+
pages = []
|
980
|
+
labels = []
|
981
|
+
|
982
|
+
menuPages = Wx::Menu.new
|
983
|
+
nPage = 0
|
984
|
+
imageId = 1
|
985
|
+
|
986
|
+
# we need to first create all pages and only then add them to the book
|
987
|
+
# as we need the image list first
|
988
|
+
#
|
989
|
+
# we also construct the pages menu during this first iteration
|
990
|
+
MAX_PAGES.times do |cat|
|
991
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
992
|
+
nPage += 1 # increase for parent page
|
993
|
+
else
|
994
|
+
books << BookCtrl.new(@book, style: Wx::BK_DEFAULT)
|
995
|
+
end
|
996
|
+
|
997
|
+
pages << []
|
998
|
+
labels << []
|
999
|
+
Page.widget_pages.each do |info|
|
1000
|
+
next if info.categories.nobits?(1 << cat)
|
1001
|
+
|
1002
|
+
page = info.create(
|
1003
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
1004
|
+
@book
|
1005
|
+
else
|
1006
|
+
books.last
|
1007
|
+
end,
|
1008
|
+
images)
|
1009
|
+
pages.last << page
|
1010
|
+
|
1011
|
+
labels.last << info.label
|
1012
|
+
if cat == ALL_PAGE
|
1013
|
+
menuPages.append_radio_item(
|
1014
|
+
ID::Widgets_GoToPage + nPage,
|
1015
|
+
info.label)
|
1016
|
+
unless Wx.has_feature?(:USE_TREEBOOK)
|
1017
|
+
# consider only for book in book architecture
|
1018
|
+
nPage += 1
|
1019
|
+
end
|
1020
|
+
end
|
1021
|
+
|
1022
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
1023
|
+
# consider only for treebook architecture (with subpages)
|
1024
|
+
nPage += 1
|
1025
|
+
end
|
1026
|
+
end
|
1027
|
+
end
|
1028
|
+
|
1029
|
+
self.menu_bar.append(menuPages, '&Page')
|
1030
|
+
|
1031
|
+
images.collect! { |img_| img_.is_a?(Wx::BitmapBundle) ? img_ : Wx::BitmapBundle.new(img_) }
|
1032
|
+
@book.set_images(images)
|
1033
|
+
|
1034
|
+
MAX_PAGES.times do |cat|
|
1035
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
1036
|
+
@book.add_page(nil, Categories[cat],false,0)
|
1037
|
+
else
|
1038
|
+
@book.add_page(books[cat], Categories[cat],false,0)
|
1039
|
+
books[cat].set_images(images)
|
1040
|
+
end
|
1041
|
+
|
1042
|
+
# now do add them
|
1043
|
+
pages[cat].size.times do |n|
|
1044
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
1045
|
+
@book.add_sub_page(
|
1046
|
+
pages[cat][n],
|
1047
|
+
labels[cat][n],
|
1048
|
+
false, # don't select
|
1049
|
+
imageId
|
1050
|
+
)
|
1051
|
+
else
|
1052
|
+
books[cat].add_page(
|
1053
|
+
pages[cat][n],
|
1054
|
+
labels[cat][n],
|
1055
|
+
false, # don't select
|
1056
|
+
imageId
|
1057
|
+
)
|
1058
|
+
end
|
1059
|
+
imageId += 1
|
1060
|
+
end
|
1061
|
+
end
|
1062
|
+
|
1063
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
1064
|
+
evt_treebook_page_changed(ID::Widgets_BookCtrl, :on_page_changed)
|
1065
|
+
elsif Wx.has_feature?(:USE_NOTEBOOK)
|
1066
|
+
evt_notebook_page_changed(ID::Widgets_BookCtrl, :on_page_changed)
|
1067
|
+
else
|
1068
|
+
evt_choicebook_page_changed(ID::Widgets_BookCtrl, :on_page_changed)
|
1069
|
+
end
|
1070
|
+
|
1071
|
+
# TODO - review wxPersistenceManager
|
1072
|
+
# const bool pageSet = wxPersistentRegisterAndRestore(m_book)
|
1073
|
+
pageSet = false
|
1074
|
+
|
1075
|
+
if Wx.has_feature?(:USE_TREEBOOK)
|
1076
|
+
# for treebook page #0 is empty parent page only so select the first page
|
1077
|
+
# with some contents
|
1078
|
+
@book.set_selection(1) if !pageSet || !@book.get_current_page
|
1079
|
+
|
1080
|
+
# but ensure that the top of the tree is shown nevertheless
|
1081
|
+
tree = @book.get_tree_ctrl
|
1082
|
+
|
1083
|
+
first_child, _ = tree.get_first_child(tree.root_item)
|
1084
|
+
tree.ensure_visible(first_child)
|
1085
|
+
else
|
1086
|
+
if !pageSet || !@book.get_current_page
|
1087
|
+
# for other books set selection twice to force connected event handler
|
1088
|
+
# to force lazy creation of initial visible content
|
1089
|
+
@book.set_selection(1)
|
1090
|
+
@book.set_selection(0)
|
1091
|
+
end
|
1092
|
+
end # USE_TREEBOOK
|
1093
|
+
end
|
1094
|
+
|
1095
|
+
# return the currently selected page (never null)
|
1096
|
+
def current_page
|
1097
|
+
page = @book.get_current_page
|
1098
|
+
|
1099
|
+
unless Wx.has_feature?(:USE_TREEBOOK)
|
1100
|
+
::Kernel.raise 'no WidgetsBookCtrl?' unless page.is_a?(Wx::Treebook)
|
1101
|
+
|
1102
|
+
page = page.get_current_page
|
1103
|
+
end # !USE_TREEBOOK
|
1104
|
+
|
1105
|
+
page
|
1106
|
+
end
|
1107
|
+
|
1108
|
+
private
|
1109
|
+
|
1110
|
+
def on_widget_focus(event)
|
1111
|
+
# Don't show annoying message boxes when starting or closing the sample,
|
1112
|
+
# only log these events in our own logger.
|
1113
|
+
if Wx.get_app.is_using_log_window
|
1114
|
+
win = event.get_event_object
|
1115
|
+
Wx.log_message("Widget '#{win.class.name}' #{event.event_type == Wx::EVT_SET_FOCUS ? "got" : "lost"} focus")
|
1116
|
+
end
|
1117
|
+
|
1118
|
+
event.skip
|
1119
|
+
end
|
1120
|
+
def on_widget_context_menu(event)
|
1121
|
+
win = event.get_event_object
|
1122
|
+
Wx.log_message("Context menu event for #{win.class.name} at #{event.position.x}x#{event.position.y}")
|
1123
|
+
|
1124
|
+
event.skip
|
1125
|
+
end
|
1126
|
+
|
1127
|
+
def connect_to_widget_events
|
1128
|
+
widgets = current_page.get_widgets
|
1129
|
+
|
1130
|
+
widgets.each do |w|
|
1131
|
+
::Kernel.raise RuntimeError, 'nil widget' unless w
|
1132
|
+
|
1133
|
+
w.evt_set_focus self.method(:on_widget_focus)
|
1134
|
+
w.evt_kill_focus self.method(:on_widget_focus)
|
1135
|
+
|
1136
|
+
w.evt_context_menu self.method(:on_widget_context_menu)
|
1137
|
+
end
|
1138
|
+
end
|
1139
|
+
|
1140
|
+
end
|
1141
|
+
|
1142
|
+
class App < Wx::App
|
1143
|
+
def initialize
|
1144
|
+
super
|
1145
|
+
if Wx.has_feature?(:USE_LOG)
|
1146
|
+
@logTarget = nil
|
1147
|
+
end
|
1148
|
+
end
|
1149
|
+
|
1150
|
+
# this one is called on application startup and is a good place for the app
|
1151
|
+
# initialization (doing it here and not in the ctor allows to have an error
|
1152
|
+
# return: if OnInit() returns false, the application terminates)
|
1153
|
+
def on_init
|
1154
|
+
set_vendor_name('wxWidgets_Samples')
|
1155
|
+
|
1156
|
+
# when running multiple copies of this sample side by side this is useful to see which one is which
|
1157
|
+
title = ''
|
1158
|
+
# if Wx.has_feature?(:WXUNIVERSAL)
|
1159
|
+
# title << "wxUniv/"
|
1160
|
+
# end
|
1161
|
+
title << Wx::PLATFORM
|
1162
|
+
|
1163
|
+
frame = Frame.new(title + ' widgets demo')
|
1164
|
+
frame.show
|
1165
|
+
|
1166
|
+
if Wx.has_feature?(:USE_LOG)
|
1167
|
+
@logTarget = Wx::Log.get_active_target
|
1168
|
+
end # USE_LOG
|
1169
|
+
|
1170
|
+
true
|
1171
|
+
end
|
1172
|
+
|
1173
|
+
# real implementation of WidgetsPage method with the same name
|
1174
|
+
def is_using_log_window
|
1175
|
+
Wx.has_feature?(:USE_LOG) && (Wx::Log.get_active_target == @logTarget)
|
1176
|
+
end
|
1177
|
+
end
|
1178
|
+
|
1179
|
+
end # module Widgets
|
1180
|
+
|
1181
|
+
require_relative './activityindicator' if Wx.has_feature?(:USE_ACTIVITYINDICATOR)
|
1182
|
+
require_relative './bmpcombobox' if Wx.has_feature?(:USE_BITMAPCOMBOBOX)
|
1183
|
+
require_relative './button' if Wx.has_feature?(:USE_BUTTON)
|
1184
|
+
require_relative './checkbox' if Wx.has_feature?(:USE_CHECKBOX)
|
1185
|
+
require_relative './choice' if Wx.has_feature?(:USE_CHOICE)
|
1186
|
+
require_relative './clrpicker' if Wx.has_feature?(:USE_COLOURPICKERCTRL) && Wx.has_feature?(:USE_COLOURDLG)
|
1187
|
+
require_relative './combobox' if Wx.has_feature?(:USE_COMBOBOX)
|
1188
|
+
require_relative './datepick' if Wx.has_feature?(:USE_DATEPICKCTRL)
|
1189
|
+
require_relative './dirctrl' if Wx.has_feature?(:USE_FILEDLG) || Wx.has_feature?(:USE_DIRDLG)
|
1190
|
+
require_relative './dirpicker' if Wx.has_feature?(:USE_DIRPICKERCTRL) && Wx.has_feature?(:USE_DIRDLG)
|
1191
|
+
require_relative './editlbox' if Wx.has_feature?(:USE_EDITABLELISTBOX)
|
1192
|
+
require_relative './filectrl' if Wx.has_feature?(:USE_FILECTRL)
|
1193
|
+
require_relative './filepicker' if Wx.has_feature?(:USE_FILEPICKERCTRL) && Wx.has_feature?(:USE_FILEDLG)
|
1194
|
+
require_relative './fontpicker' if Wx.has_feature?(:USE_FONTPICKERCTRL) && Wx.has_feature?(:USE_FONTDLG)
|
1195
|
+
require_relative './gauge' if Wx.has_feature?(:USE_GAUGE)
|
1196
|
+
require_relative './headerctrl'
|
1197
|
+
require_relative './hyperlink' if Wx.has_feature?(:USE_HYPERLINKCTRL)
|
1198
|
+
require_relative './listbox' if Wx.has_feature?(:USE_LISTBOX)
|
1199
|
+
require_relative './notebook' if Wx.has_feature?(:USE_NOTEBOOK) || Wx.has_feature?(:USE_LISTBOOK) || Wx.has_feature?(:USE_CHOICEBOOK)
|
1200
|
+
require_relative './odcombobox' if Wx.has_feature?(:USE_ODCOMBOBOX)
|
1201
|
+
require_relative './radiobox' if Wx.has_feature?(:USE_RADIOBOX)
|
1202
|
+
require_relative './searchctrl' if Wx.has_feature?(:USE_SEARCHCTRL)
|
1203
|
+
require_relative './slider' if Wx.has_feature?(:USE_SLIDER)
|
1204
|
+
require_relative './spinbtn' if Wx.has_feature?(:USE_SPINBTN)
|
1205
|
+
require_relative './statbmp' if Wx.has_feature?(:USE_STATBMP)
|
1206
|
+
require_relative './static'
|
1207
|
+
require_relative './timepick' if Wx.has_feature?(:USE_TIMEPICKCTRL)
|
1208
|
+
require_relative './toggle' if Wx.has_feature?(:USE_TOGGLEBTN)
|
1209
|
+
require_relative './textctrl'
|
1210
|
+
|
1211
|
+
module WidgetsSample
|
1212
|
+
|
1213
|
+
include WxRuby::Sample if defined? WxRuby::Sample
|
1214
|
+
|
1215
|
+
def self.describe
|
1216
|
+
{ file: __FILE__,
|
1217
|
+
summary: 'wxRuby Widgets example.',
|
1218
|
+
description: <<~__DESC
|
1219
|
+
A Ruby port of the extensive wxWidgets widgets sample which showcases
|
1220
|
+
a wide selection of widgets (controls).
|
1221
|
+
__DESC
|
1222
|
+
}
|
1223
|
+
end
|
1224
|
+
|
1225
|
+
def self.run
|
1226
|
+
execute(__FILE__)
|
1227
|
+
end
|
1228
|
+
|
1229
|
+
if $0 == __FILE__
|
1230
|
+
Widgets::App.run
|
1231
|
+
end
|
1232
|
+
|
1233
|
+
end
|