wxruby3 0.9.0 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/ext/wxruby3/include/wxRubyApp.h +338 -0
- data/ext/wxruby3/include/wxruby-Config.h +6 -6
- data/ext/wxruby3/include/wxruby-runtime.h +3 -0
- data/ext/wxruby3/swig/common.i +22 -0
- data/ext/wxruby3/swig/custom/director.swg +296 -0
- data/ext/wxruby3/swig/custom/rubyapi.swg +19 -0
- data/ext/wxruby3/swig/custom/rubyerrors.swg +45 -0
- data/ext/wxruby3/swig/custom/rubyhead.swg +192 -0
- data/ext/wxruby3/swig/custom/rubyrun.swg +187 -0
- data/ext/wxruby3/swig/custom/swigrun.swg +363 -0
- data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +173 -0
- data/ext/wxruby3/swig/wx.i +50 -30
- 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/collapsible_pane.rb +1 -1
- data/lib/wx/core/const.rb +83 -0
- data/lib/wx/core/controlwithitems.rb +8 -6
- data/lib/wx/core/menu.rb +10 -0
- data/lib/wx/core/notebook.rb +6 -2
- data/lib/wx/core/sizer.rb +11 -0
- data/lib/wx/core/task_bar_button.rb +19 -0
- data/lib/wx/core/textctrl.rb +11 -1
- data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
- data/lib/wx/core/window.rb +10 -0
- data/lib/wx/doc/app.rb +48 -38
- data/lib/wx/doc/art_locator.rb +47 -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/const.rb +66 -66
- data/lib/wx/doc/controlwithitems.rb +17 -7
- data/lib/wx/doc/data_object.rb +2 -2
- data/lib/wx/doc/event.rb +0 -6
- data/lib/wx/doc/evthandler.rb +113 -108
- data/lib/wx/doc/font.rb +1 -0
- data/lib/wx/doc/functions.rb +9 -9
- data/lib/wx/doc/gc_dc.rb +6 -1
- 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/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/pg/events.rb +13 -9
- 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/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 +12 -8
- 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/variant.rb +164 -160
- data/lib/wx/doc/window.rb +57 -42
- data/lib/wx/doc/window_disabler.rb +10 -6
- data/lib/wx/grid/grid.rb +27 -4
- data/lib/wx/keyword_defs.rb +43 -6
- data/lib/wx/pg/pg_property.rb +22 -0
- 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/rakelib/lib/config/linux.rb +0 -3
- data/rakelib/lib/config/macosx.rb +1 -1
- data/rakelib/lib/config/mingw.rb +1 -1
- data/rakelib/lib/config/unixish.rb +1 -1
- data/rakelib/lib/config.rb +14 -4
- data/rakelib/lib/core/include/funcall.inc +33 -14
- data/rakelib/lib/core/include/swigdirector.inc +384 -0
- data/rakelib/lib/core/include/swigrubyerrors.inc +161 -0
- data/{ext/wxruby3/swig/custom/swig4/rubyrun.swg → rakelib/lib/core/include/swigrubyrun.inc} +245 -120
- data/rakelib/lib/core/include/swigrun.inc +700 -0
- data/rakelib/lib/core/package.rb +19 -9
- data/rakelib/lib/core/parameter.rb +3 -0
- data/rakelib/lib/core/spec.rb +6 -1
- data/rakelib/lib/director/accelerator.rb +3 -4
- data/rakelib/lib/director/accessible.rb +47 -0
- data/rakelib/lib/director/animation.rb +1 -1
- data/rakelib/lib/director/animation_ctrl.rb +20 -0
- data/rakelib/lib/director/app.rb +15 -304
- data/rakelib/lib/director/app_traits.rb +10 -12
- data/rakelib/lib/director/art_provider.rb +1 -1
- data/rakelib/lib/director/ctrl_with_items.rb +17 -5
- data/rakelib/lib/director/data_format.rb +1 -1
- data/rakelib/lib/director/data_object_simple_base.rb +1 -2
- data/rakelib/lib/director/derived_dc.rb +1 -1
- data/rakelib/lib/director/dialog.rb +6 -0
- data/rakelib/lib/director/dialup_event.rb +44 -0
- data/rakelib/lib/director/dialup_manager.rb +45 -0
- data/rakelib/lib/director/drag_image.rb +2 -3
- data/rakelib/lib/director/event.rb +22 -4
- data/rakelib/lib/director/file_ctrl.rb +35 -0
- data/rakelib/lib/director/file_ctrl_event.rb +26 -0
- data/rakelib/lib/director/frame.rb +1 -3
- data/rakelib/lib/director/gdicommon.rb +27 -11
- data/rakelib/lib/director/graphics_context.rb +2 -4
- data/rakelib/lib/director/grid_cell_editor.rb +6 -6
- data/rakelib/lib/director/grid_ctrl.rb +34 -3
- data/rakelib/lib/director/help_controller.rb +1 -1
- data/rakelib/lib/director/icon.rb +5 -2
- data/rakelib/lib/director/list_ctrl.rb +5 -6
- data/rakelib/lib/director/locale.rb +1 -3
- data/rakelib/lib/director/log.rb +1 -4
- data/rakelib/lib/director/media_ctrl.rb +54 -0
- data/rakelib/lib/director/menu.rb +16 -1
- data/rakelib/lib/director/menu_item.rb +2 -2
- data/rakelib/lib/director/pgarray_editor_dialog.rb +0 -6
- data/rakelib/lib/director/pgeditor.rb +2 -2
- data/rakelib/lib/director/pgproperties.rb +3 -3
- data/rakelib/lib/director/pgproperty.rb +24 -1
- data/rakelib/lib/director/property_grid_interface.rb +5 -10
- data/rakelib/lib/director/richtext_buffer.rb +1 -1
- data/rakelib/lib/director/richtext_composite_object.rb +25 -0
- data/rakelib/lib/director/richtext_ctrl.rb +15 -5
- data/rakelib/lib/director/richtext_formatting_dialog.rb +7 -5
- data/rakelib/lib/director/richtext_paragraph_layout_box.rb +9 -7
- data/rakelib/lib/director/sash_event.rb +42 -0
- data/rakelib/lib/director/sizer.rb +79 -1
- data/rakelib/lib/director/sizer_item.rb +22 -0
- data/rakelib/lib/director/static_box.rb +4 -5
- data/rakelib/lib/director/styled_text_ctrl.rb +12 -0
- data/rakelib/lib/director/task_bar_button.rb +30 -0
- data/rakelib/lib/director/task_bar_icon.rb +6 -14
- data/rakelib/lib/director/textctrl.rb +12 -1
- data/rakelib/lib/director/tool_tip.rb +1 -1
- data/rakelib/lib/director/top_level_window.rb +4 -5
- data/rakelib/lib/director/tree_ctrl.rb +24 -50
- data/rakelib/lib/director/variant.rb +1 -1
- data/rakelib/lib/director/window.rb +24 -5
- data/rakelib/lib/director.rb +4 -4
- data/rakelib/lib/extractor/function.rb +6 -6
- data/rakelib/lib/extractor.rb +34 -5
- data/rakelib/lib/generate/analyzer.rb +8 -3
- data/rakelib/lib/generate/doc/animation_ctrl.yaml +15 -0
- data/rakelib/lib/generate/doc/busy_info.yaml +0 -2
- data/rakelib/lib/generate/doc/clipboard.yaml +0 -2
- data/rakelib/lib/generate/doc/cursor.yaml +0 -2
- data/rakelib/lib/generate/doc/events.yaml +10 -4
- data/rakelib/lib/generate/doc/panel.yaml +7 -0
- data/rakelib/lib/generate/doc/static_box.yaml +8 -0
- data/rakelib/lib/generate/doc/xml_resource.yaml +3 -0
- data/rakelib/lib/generate/doc.rb +89 -16
- data/rakelib/lib/generate/interface.rb +4 -3
- data/rakelib/lib/specs/interfaces.rb +161 -156
- data/rakelib/lib/swig_runner.rb +4 -50
- data/rakelib/lib/typemap/common.rb +54 -10
- data/rakelib/lib/typemap/data_format.rb +1 -1
- data/rakelib/lib/typemap/data_object_data.rb +2 -2
- data/rakelib/lib/typemap/pgprop_arg.rb +7 -2
- data/rakelib/lib/typemap/points_list.rb +5 -7
- data/rakelib/lib/util/string.rb +10 -8
- 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/text/richtext.rb +0 -30
- data/samples/treectrl/treectrl.rb +1 -1
- data/tests/media/beep_lo.wav +0 -0
- data/tests/test_app_exit_exception.rb +36 -0
- data/tests/test_app_init_exception.rb +20 -0
- data/tests/test_book_controls.rb +29 -0
- data/tests/test_exceptions.rb +41 -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 +78 -1
- data/tests/test_styled_text_ctrl.rb +46 -0
- data/tests/test_tree_ctrl.rb +138 -0
- data/tests/test_window.rb +12 -0
- data/tests/testapp_noframe.rb +1 -1
- metadata +54 -5
- data/ext/wxruby3/swig/custom/swig3/rubyrun.swg +0 -456
data/tests/test_menu.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
require_relative './lib/wxframe_runner'
|
6
|
+
|
7
|
+
class MenuTests < WxRuby::Test::GUITests
|
8
|
+
|
9
|
+
def setup
|
10
|
+
super
|
11
|
+
@menu = Wx::Menu.new
|
12
|
+
@menu.append(Wx::ID_HIGHEST+1, 'Item 1', 'Test menuitem 1')
|
13
|
+
@menu.append(Wx::ID_HIGHEST+2, 'Item 2', 'Test menuitem 2')
|
14
|
+
@menu.append_separator
|
15
|
+
@menu.append_check_item(Wx::ID_HIGHEST+3, 'Check 3', 'Test menuitem 3')
|
16
|
+
@menu.append_separator
|
17
|
+
@menu.append_radio_item(Wx::ID_HIGHEST+4, 'Radio 4', 'Test menuitem 4')
|
18
|
+
@menu.append_radio_item(Wx::ID_HIGHEST+5, 'Radio 5', 'Test menuitem 5')
|
19
|
+
@menu.append_radio_item(Wx::ID_HIGHEST+6, 'Radio 6', 'Test menuitem 6')
|
20
|
+
frame_win.menu_bar = Wx::MenuBar.new
|
21
|
+
frame_win.menu_bar.append(@menu, "&Test")
|
22
|
+
end
|
23
|
+
|
24
|
+
def cleanup
|
25
|
+
frame_win.menu_bar = nil
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
attr_reader :menu
|
30
|
+
|
31
|
+
def test_basic
|
32
|
+
assert_equal(8, menu.get_menu_item_count)
|
33
|
+
check, pos = menu.find_child_item(Wx::ID_HIGHEST+3)
|
34
|
+
assert_not_nil(check)
|
35
|
+
assert_equal(3, pos)
|
36
|
+
assert_equal('Check 3', check.item_label)
|
37
|
+
assert_false(check.checked?)
|
38
|
+
check.check
|
39
|
+
assert_true(check.checked?)
|
40
|
+
radio, pos = menu.find_child_item(Wx::ID_HIGHEST+5)
|
41
|
+
assert_not_nil(radio)
|
42
|
+
assert_equal(6, pos)
|
43
|
+
assert_equal('Radio 5', radio.item_label)
|
44
|
+
assert_false(radio.checked?)
|
45
|
+
radio.check
|
46
|
+
assert_true(radio.checked?)
|
47
|
+
radio, pos = menu.find_child_item(Wx::ID_HIGHEST+4)
|
48
|
+
assert_false(radio.checked?)
|
49
|
+
radio, pos = menu.find_child_item(Wx::ID_HIGHEST+6)
|
50
|
+
assert_false(radio.checked?)
|
51
|
+
radio.check
|
52
|
+
assert_true(radio.checked?)
|
53
|
+
radio, pos = menu.find_child_item(Wx::ID_HIGHEST+5)
|
54
|
+
assert_false(radio.checked?)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_enumerate
|
58
|
+
radio, pos = menu.find_child_item(Wx::ID_HIGHEST+4)
|
59
|
+
assert_true(radio.checked?) # first by default checked
|
60
|
+
menu.each_item do |mi|
|
61
|
+
mi.check if mi.id == (Wx::ID_HIGHEST+5)
|
62
|
+
end
|
63
|
+
radio, pos = menu.find_child_item(Wx::ID_HIGHEST+4)
|
64
|
+
assert_false(radio.checked?)
|
65
|
+
radio = menu.each_item.detect { |mi| mi.id == (Wx::ID_HIGHEST+5) }
|
66
|
+
assert_true(radio.checked?)
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
data/tests/test_pg.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
require_relative './lib/wxframe_runner'
|
6
|
+
|
7
|
+
class PGChoicesTests < WxRuby::Test::GUITests
|
8
|
+
|
9
|
+
def test_enum_labels
|
10
|
+
texts = %w[Red Blue Green Yellow Black White]
|
11
|
+
choices = Wx::PG::PGChoices.new(texts)
|
12
|
+
choices.each_label { |lbl| assert_equal(texts.shift, lbl) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_enum_entries
|
16
|
+
texts = %w[Flag1 Flag2 Flag3 Flag4]
|
17
|
+
choices = Wx::PG::PGChoices.new
|
18
|
+
texts.each_with_index do |s, i|
|
19
|
+
choices.add(s, 1 << i)
|
20
|
+
end
|
21
|
+
choices.each_entry.each_with_index do |entry, ix|
|
22
|
+
assert_equal(1 << ix, entry.value)
|
23
|
+
assert_equal(texts[ix], entry.get_text)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/tests/test_richtext.rb
CHANGED
@@ -67,6 +67,51 @@ class RichTextCtrlWriteTests < WxRuby::Test::GUITests
|
|
67
67
|
assert_equal('Second Line', richtext.get_line_text(1))
|
68
68
|
end
|
69
69
|
|
70
|
+
def test_enumerate_lines
|
71
|
+
richtext.write_text <<~__HEREDOC
|
72
|
+
This is line 1.
|
73
|
+
This is line 2.
|
74
|
+
This is line 3.
|
75
|
+
__HEREDOC
|
76
|
+
assert_equal(4, richtext.get_number_of_lines)
|
77
|
+
richtext.each_line.each_with_index do |txt, lnr|
|
78
|
+
if lnr < 3
|
79
|
+
assert("This is line #{lnr+1}.", txt)
|
80
|
+
else
|
81
|
+
assert('', txt)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
line_enum = richtext.each_line
|
85
|
+
txt = line_enum.detect { |l| l.index('2') }
|
86
|
+
assert_equal('This is line 2.', txt)
|
87
|
+
para = richtext.buffer.get_child_at_position(0)
|
88
|
+
assert_kind_of(Wx::RTC::RichTextParagraph, para)
|
89
|
+
assert_equal(1, para.get_lines.size)
|
90
|
+
para.each_line do |rtl|
|
91
|
+
txt = para.get_text_for_range(rtl.get_range)
|
92
|
+
assert("This is line 1.", txt)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_enumerate_children
|
97
|
+
richtext.write_text <<~__HEREDOC
|
98
|
+
This is line 1.
|
99
|
+
This is line 2.
|
100
|
+
This is line 3.
|
101
|
+
__HEREDOC
|
102
|
+
richtext.write_image(Wx.Bitmap(:wxruby, Wx::BitmapType::BITMAP_TYPE_PNG, art_section: 'test_art'))
|
103
|
+
assert_equal(4, richtext.buffer.get_child_count)
|
104
|
+
richtext.buffer.each_child.each_with_index do |c, i|
|
105
|
+
if i<3
|
106
|
+
assert_kind_of(Wx::RTC::RichTextParagraph, c)
|
107
|
+
assert_equal(1, c.get_lines.size)
|
108
|
+
else
|
109
|
+
assert_equal(1, c.get_child_count)
|
110
|
+
c.each_child { |cc| assert_kind_of(Wx::RTC::RichTextImage, cc) }
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
70
115
|
def test_write_image
|
71
116
|
assert_nothing_raised { richtext.write_image(Wx.Bitmap(:wxruby, Wx::BitmapType::BITMAP_TYPE_PNG, art_section: 'test_art')) }
|
72
117
|
img_obj = richtext.buffer.get_leaf_object_at_position(0)
|
data/tests/test_sizer.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
require_relative './lib/wxframe_runner'
|
6
|
+
|
7
|
+
class SizerTests < WxRuby::Test::GUITests
|
8
|
+
|
9
|
+
def setup
|
10
|
+
super
|
11
|
+
frame_win.set_sizer(Wx::VBoxSizer.new)
|
12
|
+
end
|
13
|
+
|
14
|
+
def cleanup
|
15
|
+
super
|
16
|
+
GC.start
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_detach
|
20
|
+
frame_win.get_sizer.add(Wx::HBoxSizer.new)
|
21
|
+
frame_win.get_sizer.add_spacer(5)
|
22
|
+
# detaches HBoxSizer transferring ownership to Ruby; should not cause segfaults at GC
|
23
|
+
frame_win.get_sizer.detach(0)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_sizer_item_detach_and_re_attach
|
27
|
+
frame_win.get_sizer.add(Wx::HBoxSizer.new)
|
28
|
+
frame_win.get_sizer.add_spacer(5)
|
29
|
+
# get and detach
|
30
|
+
szr_itm = frame_win.get_sizer.get_item(0)
|
31
|
+
assert_not_nil(szr_itm)
|
32
|
+
assert_true(szr_itm.is_sizer)
|
33
|
+
szr = szr_itm.get_sizer
|
34
|
+
assert_not_nil(szr)
|
35
|
+
szr_itm.detach_sizer
|
36
|
+
assert_nil(szr_itm.get_sizer)
|
37
|
+
# remove sizer item
|
38
|
+
assert_true(frame_win.get_sizer.remove(0))
|
39
|
+
# re-attach detached sizer (should not cause segfaults at close due to incorrect ownership transfers)
|
40
|
+
assert_not_nil(frame_win.get_sizer.prepend(szr))
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_children
|
44
|
+
frame_win.get_sizer.add(Wx::HBoxSizer.new)
|
45
|
+
frame_win.get_sizer.add_spacer(5)
|
46
|
+
frame_win.get_sizer.add(Wx::VBoxSizer.new)
|
47
|
+
|
48
|
+
assert_equal(3, frame_win.sizer.item_count)
|
49
|
+
children = frame_win.sizer.get_children
|
50
|
+
assert_equal(3, children.size)
|
51
|
+
assert_true(children[0].sizer?)
|
52
|
+
assert_true(children[1].spacer?)
|
53
|
+
assert_true(children[2].sizer?)
|
54
|
+
frame_win.sizer.each_child do |si|
|
55
|
+
assert_equal(children.shift, si)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
data/tests/test_std_controls.rb
CHANGED
@@ -111,6 +111,34 @@ class TextCtrlTests < WxRuby::Test::GUITests
|
|
111
111
|
assert_equal('', text.get_value)
|
112
112
|
end
|
113
113
|
|
114
|
+
def test_stream_append
|
115
|
+
text << 'This is the number ' << 101 << '.'
|
116
|
+
assert_equal('This is the number 101.', text.get_value)
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_enumerate_lines
|
120
|
+
text.destroy
|
121
|
+
@text = Wx::TextCtrl.new(frame_win, style: Wx::TE_MULTILINE, name: 'Text')
|
122
|
+
text << <<~__HEREDOC
|
123
|
+
This is line 1.
|
124
|
+
This is line 2.
|
125
|
+
This is line 3.
|
126
|
+
__HEREDOC
|
127
|
+
assert_equal(4, text.get_number_of_lines)
|
128
|
+
text.each_line.each_with_index do |txt, lnr|
|
129
|
+
if lnr < 3
|
130
|
+
assert("This is line #{lnr+1}.", txt)
|
131
|
+
else
|
132
|
+
assert('', txt)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
txt = text.each_line { |l| break l if l.index('2')}
|
136
|
+
assert_equal('This is line 2.', txt)
|
137
|
+
line_enum = text.each_line
|
138
|
+
txt = line_enum.detect { |l| l.index('3') }
|
139
|
+
assert_equal('This is line 3.', txt)
|
140
|
+
end
|
141
|
+
|
114
142
|
if has_ui_simulator?
|
115
143
|
def test_max_length
|
116
144
|
sim = get_ui_simulator
|
@@ -165,7 +193,7 @@ class ComboBoxTests < WxRuby::Test::GUITests
|
|
165
193
|
def setup
|
166
194
|
super
|
167
195
|
@combo = Wx::ComboBox.new(frame_win, name: 'ComboBox', choices: %w[One Two Three])
|
168
|
-
@combo.clear
|
196
|
+
@combo.value = '' # don't use #clear as that also clears the choices
|
169
197
|
end
|
170
198
|
|
171
199
|
def cleanup
|
@@ -180,6 +208,19 @@ class ComboBoxTests < WxRuby::Test::GUITests
|
|
180
208
|
assert_equal('', combo.get_value)
|
181
209
|
end
|
182
210
|
|
211
|
+
def test_enumerate
|
212
|
+
strings = combo.get_strings
|
213
|
+
combo.each_string.each_with_index do |str, ix|
|
214
|
+
assert_equal(strings[ix], str)
|
215
|
+
end
|
216
|
+
combo.each_string { |s| assert_equal(strings.shift, s)}
|
217
|
+
str_enum = combo.each_string
|
218
|
+
assert_kind_of(::Enumerator, str_enum)
|
219
|
+
assert_true(str_enum.any? { |s| s == 'Three'})
|
220
|
+
assert_true(combo.each_string.none? { |s| s == 'Four'})
|
221
|
+
assert_equal('BREAK', combo.each_string { |_| break 'BREAK' })
|
222
|
+
end
|
223
|
+
|
183
224
|
end
|
184
225
|
|
185
226
|
class CheckBoxTests < WxRuby::Test::GUITests
|
@@ -439,3 +480,39 @@ class GaugeTests < WxRuby::Test::GUITests
|
|
439
480
|
assert_equal(100, gauge.value)
|
440
481
|
end
|
441
482
|
end
|
483
|
+
|
484
|
+
class StaticBoxTests < WxRuby::Test::GUITests
|
485
|
+
|
486
|
+
def setup
|
487
|
+
super
|
488
|
+
@box = nil
|
489
|
+
end
|
490
|
+
|
491
|
+
def cleanup
|
492
|
+
@box.destroy if @box
|
493
|
+
super
|
494
|
+
end
|
495
|
+
|
496
|
+
attr_reader :box
|
497
|
+
|
498
|
+
def test_basic
|
499
|
+
@box = Wx::StaticBox.new(frame_win, label: 'Box')
|
500
|
+
|
501
|
+
txt = Wx::StaticText.new(box, Wx::ID_ANY, "This window is a child of the staticbox")
|
502
|
+
assert_equal(box, txt.parent)
|
503
|
+
end
|
504
|
+
|
505
|
+
unless Wx::PLATFORM == 'WXOSX'
|
506
|
+
|
507
|
+
def test_label_window
|
508
|
+
check = Wx::CheckBox.new(frame_win, Wx::ID_ANY, 'Enable')
|
509
|
+
@box = Wx::StaticBox.new(frame_win, label: check)
|
510
|
+
|
511
|
+
button = Wx::Button.new(box, label: 'Button')
|
512
|
+
box.enable(false)
|
513
|
+
assert_false(button.is_enabled)
|
514
|
+
end
|
515
|
+
|
516
|
+
end
|
517
|
+
|
518
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
require_relative './lib/wxframe_runner'
|
6
|
+
|
7
|
+
class StyledTextCtrlTests < WxRuby::Test::GUITests
|
8
|
+
|
9
|
+
def setup
|
10
|
+
super
|
11
|
+
@text = Wx::STC::StyledTextCtrl.new(frame_win, name: 'StyledText')
|
12
|
+
end
|
13
|
+
|
14
|
+
def cleanup
|
15
|
+
@text.destroy
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :text
|
20
|
+
|
21
|
+
def test_text
|
22
|
+
assert_equal('', text.get_value)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_enumerate_lines
|
26
|
+
text.write_text <<~__HEREDOC
|
27
|
+
This is line 1.
|
28
|
+
This is line 2.
|
29
|
+
This is line 3.
|
30
|
+
__HEREDOC
|
31
|
+
assert_equal(4, text.get_number_of_lines)
|
32
|
+
text.each_line.each_with_index do |txt, lnr|
|
33
|
+
if lnr < 3
|
34
|
+
assert("This is line #{lnr+1}.", txt)
|
35
|
+
else
|
36
|
+
assert('', txt)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
txt = text.each_line { |l| break l if l.index('2')}
|
40
|
+
assert_equal('This is line 2.', txt)
|
41
|
+
line_enum = text.each_line
|
42
|
+
txt = line_enum.detect { |l| l.index('3') }
|
43
|
+
assert_equal('This is line 3.', txt)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
require_relative './lib/wxframe_runner'
|
6
|
+
|
7
|
+
class TreeCtrlTests < WxRuby::Test::GUITests
|
8
|
+
|
9
|
+
def setup
|
10
|
+
super
|
11
|
+
@tree = Wx::TreeCtrl.new(frame_win, name: 'TreeCtrl')
|
12
|
+
end
|
13
|
+
|
14
|
+
def cleanup
|
15
|
+
@tree.destroy
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :tree
|
20
|
+
|
21
|
+
def tog_style(flag)
|
22
|
+
style = tree.get_window_style ^ flag
|
23
|
+
|
24
|
+
if Wx.has_feature?(:WXMSW)
|
25
|
+
# treectrl styles can't be changed on the fly using the native
|
26
|
+
# control and the tree must be recreated
|
27
|
+
tree.destroy
|
28
|
+
@tree = Wx::TreeCtrl.new(frame_win, style: style, name: 'TreeCtrl')
|
29
|
+
else
|
30
|
+
tree.set_window_style(style)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
private :tog_style
|
34
|
+
|
35
|
+
ITEMS = [
|
36
|
+
['Cat1', [
|
37
|
+
'Item1.1',
|
38
|
+
'Item1.2',
|
39
|
+
'Item1.3'
|
40
|
+
]
|
41
|
+
],
|
42
|
+
['Cat2', [
|
43
|
+
['Cat2.1', %w[Item2.1.1 Item2.1.2] ],
|
44
|
+
'Item2.2',
|
45
|
+
'Item2.3'
|
46
|
+
]
|
47
|
+
],
|
48
|
+
'Item3',
|
49
|
+
'Item4'
|
50
|
+
]
|
51
|
+
|
52
|
+
def add_tree_items(parent, items)
|
53
|
+
items.each do |itm|
|
54
|
+
if ::Array === itm
|
55
|
+
cat = tree.append_item(parent, itm.first.to_s)
|
56
|
+
add_tree_items(cat, itm.last)
|
57
|
+
else
|
58
|
+
tree.append_item(parent, itm.to_s)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
private :add_tree_items
|
63
|
+
|
64
|
+
def build_tree
|
65
|
+
root = tree.add_root('root')
|
66
|
+
add_tree_items(root, ITEMS)
|
67
|
+
end
|
68
|
+
private :build_tree
|
69
|
+
|
70
|
+
def test_tree
|
71
|
+
build_tree
|
72
|
+
|
73
|
+
assert_equal(4, tree.get_item_children(tree.get_root_item).size)
|
74
|
+
cat1 = tree.get_item_children(tree.get_root_item)[0]
|
75
|
+
assert_equal(3, tree.get_item_children(cat1).size)
|
76
|
+
cat2 = tree.get_item_children(tree.get_root_item)[1]
|
77
|
+
assert_equal(3, tree.get_item_children(cat2).size)
|
78
|
+
cat21 = tree.get_item_children(cat2)[0]
|
79
|
+
assert_equal(2, tree.get_item_children(cat21).size)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_hidden_root
|
83
|
+
tog_style(Wx::TR_HIDE_ROOT)
|
84
|
+
build_tree
|
85
|
+
|
86
|
+
assert_equal(4, tree.get_root_items.size)
|
87
|
+
cat1 = tree.get_root_items[0]
|
88
|
+
assert_equal(3, tree.get_item_children(cat1).size)
|
89
|
+
cat2 = tree.get_root_items[1]
|
90
|
+
assert_equal(3, tree.get_item_children(cat2).size)
|
91
|
+
cat21 = tree.get_item_children(cat2)[0]
|
92
|
+
assert_equal(2, tree.get_item_children(cat21).size)
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_enumerable
|
96
|
+
build_tree
|
97
|
+
|
98
|
+
item211 = tree.detect { |itmid| tree.item_text(itmid) == 'Item2.1.1'}
|
99
|
+
assert_not_nil(item211)
|
100
|
+
assert_true(item211.ok?)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_enumerate
|
104
|
+
build_tree
|
105
|
+
|
106
|
+
tree.each_item_child(tree.get_root_item) do |itmid|
|
107
|
+
if tree.item_text(itmid) == 'Cat2'
|
108
|
+
tree.each_item_child(itmid) do |sub_itmid|
|
109
|
+
if tree.item_text(sub_itmid) == 'Cat2.1'
|
110
|
+
new_itm = tree.append_item(sub_itmid, 'Another Item')
|
111
|
+
assert_not_nil(new_itm)
|
112
|
+
assert_true(new_itm.ok?)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
assert_equal(4, tree.get_item_children(tree.get_root_item).size)
|
118
|
+
cat1 = tree.get_item_children(tree.get_root_item)[0]
|
119
|
+
assert_equal(3, tree.get_item_children(cat1).size)
|
120
|
+
cat2 = tree.get_item_children(tree.get_root_item)[1]
|
121
|
+
assert_equal(3, tree.get_item_children(cat2).size)
|
122
|
+
cat21 = tree.get_item_children(cat2)[0]
|
123
|
+
assert_equal(3, tree.get_item_children(cat21).size)
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_enumerator
|
127
|
+
build_tree
|
128
|
+
|
129
|
+
root_enum = tree.each_item_child(tree.get_root_item)
|
130
|
+
assert_kind_of(::Enumerator, root_enum)
|
131
|
+
cat2 = root_enum.detect { |itmid| tree.item_text(itmid) == 'Cat2' }
|
132
|
+
assert_not_nil(cat2)
|
133
|
+
assert_true(cat2.ok?)
|
134
|
+
cat2_enum = tree.each_item_child(cat2)
|
135
|
+
assert_equal(3, cat2_enum.to_a.size)
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
data/tests/test_window.rb
CHANGED
@@ -229,6 +229,18 @@ class WindowTests < WxRuby::Test::GUITests
|
|
229
229
|
assert_equal(child1, window.find_window_by_id(Wx::ID_HIGHEST + 1))
|
230
230
|
assert_equal(child1, window.find_window_by_name("child1"))
|
231
231
|
|
232
|
+
child1 = Wx::Window.new(window, Wx::ID_HIGHEST + 2)
|
233
|
+
|
234
|
+
children = window.get_children
|
235
|
+
window.each_child do |child|
|
236
|
+
assert_equal(child, children.shift)
|
237
|
+
end
|
238
|
+
|
239
|
+
children = window.get_children
|
240
|
+
enum = window.each_child
|
241
|
+
assert_equal(children.first, enum.find { |c| c.get_id == Wx::ID_HIGHEST + 1})
|
242
|
+
assert_equal(children.last, enum.find { |c| c.get_id == Wx::ID_HIGHEST + 2})
|
243
|
+
|
232
244
|
window.destroy_children
|
233
245
|
|
234
246
|
assert_equal(0, window.get_children.count)
|
data/tests/testapp_noframe.rb
CHANGED