wxruby3 0.9.1 → 0.9.2
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/ext/wxruby3/include/wxRubyApp.h +338 -0
- data/ext/wxruby3/include/wxruby-Config.h +6 -6
- data/ext/wxruby3/swig/common.i +1 -1
- 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/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/controlwithitems.rb +17 -7
- data/lib/wx/doc/data_object.rb +2 -2
- data/lib/wx/doc/evthandler.rb +113 -108
- data/lib/wx/doc/font.rb +1 -0
- 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 -47
- data/lib/wx/doc/window_disabler.rb +10 -6
- data/lib/wx/grid/grid.rb +27 -4
- 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 +2 -2
- 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/package.rb +14 -7
- data/rakelib/lib/core/spec.rb +6 -1
- data/rakelib/lib/director/accelerator.rb +2 -3
- data/rakelib/lib/director/accessible.rb +47 -0
- data/rakelib/lib/director/app.rb +12 -319
- data/rakelib/lib/director/app_traits.rb +10 -12
- data/rakelib/lib/director/ctrl_with_items.rb +17 -5
- data/rakelib/lib/director/data_format.rb +1 -1
- data/rakelib/lib/director/derived_dc.rb +1 -1
- data/rakelib/lib/director/dialog.rb +1 -0
- data/rakelib/lib/director/drag_image.rb +2 -3
- data/rakelib/lib/director/event.rb +2 -2
- data/rakelib/lib/director/frame.rb +1 -3
- data/rakelib/lib/director/gdicommon.rb +8 -10
- data/rakelib/lib/director/graphics_context.rb +2 -4
- data/rakelib/lib/director/grid_ctrl.rb +34 -3
- 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/pgproperties.rb +1 -1
- data/rakelib/lib/director/pgproperty.rb +24 -1
- data/rakelib/lib/director/property_grid_interface.rb +5 -10
- data/rakelib/lib/director/richtext_composite_object.rb +25 -0
- data/rakelib/lib/director/richtext_ctrl.rb +14 -4
- 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/sizer.rb +15 -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 +5 -13
- 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 +5 -6
- 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/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/panel.yaml +7 -0
- data/rakelib/lib/generate/doc.rb +76 -14
- data/rakelib/lib/specs/interfaces.rb +161 -160
- data/rakelib/lib/typemap/common.rb +30 -1
- 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/treectrl/treectrl.rb +1 -1
- data/tests/media/beep_lo.wav +0 -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 +16 -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_window.rb +12 -0
- data/tests/testapp_noframe.rb +1 -1
- metadata +31 -3
|
@@ -16,11 +16,10 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
end
|
|
19
|
+
# missing from implementation currently for WXOSX (and WXQT)
|
|
20
|
+
spec.ignore_unless(Config::AnyOf.new(*%w[WXMSW WXGTK]),
|
|
21
|
+
'wxStaticBox::wxStaticBox(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)',
|
|
22
|
+
'wxStaticBox::Create(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)')
|
|
24
23
|
end
|
|
25
24
|
end # class StaticBox
|
|
26
25
|
|
|
@@ -87,6 +87,18 @@ module WXRuby3
|
|
|
87
87
|
# TODO : these will need some sort of stream solution to be useful
|
|
88
88
|
spec.ignore 'wxStyledTextCtrl::GetCharacterPointer',
|
|
89
89
|
'wxStyledTextCtrl::GetRangePointer'
|
|
90
|
+
spec.add_extend_code 'wxStyledTextCtrl', <<~__HEREDOC
|
|
91
|
+
VALUE each_line()
|
|
92
|
+
{
|
|
93
|
+
VALUE rc = Qnil;
|
|
94
|
+
for (int i=0; i<$self->GetNumberOfLines() ;++i)
|
|
95
|
+
{
|
|
96
|
+
VALUE rb_ln = WXSTR_TO_RSTR($self->GetLineText(i));
|
|
97
|
+
rc = rb_yield(rb_ln);
|
|
98
|
+
}
|
|
99
|
+
return rc;
|
|
100
|
+
}
|
|
101
|
+
__HEREDOC
|
|
90
102
|
spec.do_not_generate(:variables, :enums, :defines, :functions)
|
|
91
103
|
end
|
|
92
104
|
end # class StyledTextCtrl
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
#
|
|
3
|
+
# This software is released under the MIT license.
|
|
4
|
+
|
|
5
|
+
###
|
|
6
|
+
# wxRuby3 wxWidgets interface director
|
|
7
|
+
###
|
|
8
|
+
|
|
9
|
+
module WXRuby3
|
|
10
|
+
|
|
11
|
+
class Director
|
|
12
|
+
|
|
13
|
+
class TaskBarButton < Director
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
super
|
|
17
|
+
spec.items << 'wxThumbBarButton'
|
|
18
|
+
spec.no_proxy 'wxTaskBarButton'
|
|
19
|
+
spec.gc_as_untracked 'wxTaskBarButton', 'wxThumbBarButton'
|
|
20
|
+
spec.disown 'wxThumbBarButton *button'
|
|
21
|
+
# superfluous and causing trouble for disown policy (re-implemented in pure Ruby)
|
|
22
|
+
spec.ignore 'wxTaskBarButton::RemoveThumbBarButton(wxThumbBarButton*)', ignore_doc: false
|
|
23
|
+
spec.new_object 'wxTaskBarButton::RemoveThumbBarButton(int)'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -16,7 +16,7 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
-
spec.
|
|
19
|
+
spec.gc_as_object
|
|
20
20
|
# need a custom implementation to handle event handler proc cleanup
|
|
21
21
|
spec.add_header_code <<~__HEREDOC
|
|
22
22
|
class WXRubyTaskBarIcon : public wxTaskBarIcon
|
|
@@ -26,9 +26,11 @@ module WXRuby3
|
|
|
26
26
|
virtual ~WXRubyTaskBarIcon()
|
|
27
27
|
{
|
|
28
28
|
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
29
|
-
|
|
29
|
+
SWIG_RubyUnlinkObjects(this);
|
|
30
|
+
SWIG_RubyRemoveTracking(this);
|
|
31
|
+
}
|
|
30
32
|
};
|
|
31
|
-
|
|
33
|
+
__HEREDOC
|
|
32
34
|
spec.use_class_implementation 'wxTaskBarIcon', 'WXRubyTaskBarIcon'
|
|
33
35
|
# this one is protected so ignored by default but we want it here
|
|
34
36
|
# (we do not want GetPopupMenu available for override in Ruby)
|
|
@@ -61,16 +63,6 @@ module WXRuby3
|
|
|
61
63
|
}
|
|
62
64
|
__CODE
|
|
63
65
|
end
|
|
64
|
-
spec.add_extend_code 'wxTaskBarIcon', <<~__HEREDOC
|
|
65
|
-
// Explicitly dispose of a TaskBarIcon; needed for clean exits on
|
|
66
|
-
// Windows.
|
|
67
|
-
VALUE destroy()
|
|
68
|
-
{
|
|
69
|
-
delete $self;
|
|
70
|
-
return Qnil;
|
|
71
|
-
}
|
|
72
|
-
__HEREDOC
|
|
73
|
-
# already generated with TaskBarIconEvent
|
|
74
66
|
spec.do_not_generate :variables, :enums, :defines, :functions
|
|
75
67
|
end
|
|
76
68
|
end # class TaskBarIcon
|
|
@@ -32,7 +32,7 @@ module WXRuby3
|
|
|
32
32
|
# we will not wrap it but create a simplified interface when USE_SPELLCHECK is enabled which
|
|
33
33
|
# we will complement in pure Ruby to provide Wx::TextProofOptions class
|
|
34
34
|
spec.ignore('wxTextCtrl::EnableProofCheck', 'wxTextCtrl::GetProofCheckOptions')
|
|
35
|
-
if Config.instance.features_set?('
|
|
35
|
+
if Config.instance.features_set?('USE_SPELLCHECK')
|
|
36
36
|
spec.add_extend_code 'wxTextCtrl', <<~__HEREDOC
|
|
37
37
|
VALUE DoEnableProofCheck(bool spelling, bool grammar, const wxString& language)
|
|
38
38
|
{
|
|
@@ -99,6 +99,17 @@ module WXRuby3
|
|
|
99
99
|
else if(TYPE(value)==T_FLOAT)
|
|
100
100
|
*self << (double)(RFLOAT_VALUE(value));
|
|
101
101
|
}
|
|
102
|
+
|
|
103
|
+
VALUE each_line()
|
|
104
|
+
{
|
|
105
|
+
VALUE rc = Qnil;
|
|
106
|
+
for (int i=0; i<$self->GetNumberOfLines() ;++i)
|
|
107
|
+
{
|
|
108
|
+
VALUE rb_ln = WXSTR_TO_RSTR($self->GetLineText(i));
|
|
109
|
+
rc = rb_yield(rb_ln);
|
|
110
|
+
}
|
|
111
|
+
return rc;
|
|
112
|
+
}
|
|
102
113
|
__HEREDOC
|
|
103
114
|
spec.swig_import 'swig/classes/include/wxTextAttr.h'
|
|
104
115
|
end
|
|
@@ -41,15 +41,14 @@ module WXRuby3
|
|
|
41
41
|
wxTopLevelWindow::RestoreToGeometry
|
|
42
42
|
wxTopLevelWindow::GeometrySerializer
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
# #ignore_unless if wxRuby one day supports 'WXUNIVERSAL'
|
|
45
|
+
spec.ignore %w{
|
|
46
46
|
wxTopLevelWindow::IsUsingNativeDecorations
|
|
47
47
|
wxTopLevelWindow::UseNativeDecorations
|
|
48
48
|
wxTopLevelWindow::UseNativeDecorationsByDefault
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
spec.
|
|
52
|
-
spec.ignore('wxTopLevelWindow::OSXSetModified','wxTopLevelWindow::OSXIsModified') unless Config.instance.features_set?('__WXOSX__')
|
|
50
|
+
spec.ignore_unless('WXMSW', 'wxTopLevelWindow::MSWGetSystemMenu')
|
|
51
|
+
spec.ignore_unless('WXOSX', 'wxTopLevelWindow::OSXSetModified','wxTopLevelWindow::OSXIsModified')
|
|
53
52
|
spec.swig_import 'swig/classes/include/wxDefs.h'
|
|
54
53
|
# incorrectly documented here
|
|
55
54
|
spec.override_events 'wxTopLevelWindow',
|
|
@@ -75,7 +75,7 @@ module WXRuby3
|
|
|
75
75
|
wxTreeCtrl::GetFocusedItem
|
|
76
76
|
wxTreeCtrl::GetSelection
|
|
77
77
|
]
|
|
78
|
-
if Config.instance.features_set?('
|
|
78
|
+
if Config.instance.features_set?('HAS_LAST_VISIBLE')
|
|
79
79
|
spec.no_proxy 'wxTreeCtrl::GetLastVisible'
|
|
80
80
|
end
|
|
81
81
|
# simply a nuisance to support
|
|
@@ -84,7 +84,7 @@ module WXRuby3
|
|
|
84
84
|
wxTreeCtrl::EndEditLabel
|
|
85
85
|
]
|
|
86
86
|
# for now, ignore this version as the added customization features
|
|
87
|
-
#
|
|
87
|
+
# work only on WXMSW as yet and may cause us more trouble than it's worth
|
|
88
88
|
spec.ignore 'wxTreeCtrl::EditLabel'
|
|
89
89
|
# add simplified non-virtual version
|
|
90
90
|
spec.add_extend_code 'wxTreeCtrl', <<~__HEREDOC
|
|
@@ -94,10 +94,9 @@ module WXRuby3
|
|
|
94
94
|
(void)self->EditLabel(item);
|
|
95
95
|
}
|
|
96
96
|
__HEREDOC
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
end
|
|
97
|
+
spec.ignore_unless(Config::AnyOf.new(*%w[WXGTK WXOSX]),
|
|
98
|
+
'wxTreeCtrl::SetButtonsImageList',
|
|
99
|
+
'wxTreeCtrl::GetButtonsImageList')
|
|
101
100
|
# these reimplemented window base methods need to be properly wrapped but
|
|
102
101
|
# are missing from the XML docs
|
|
103
102
|
spec.extend_interface('wxTreeCtrl',
|
|
@@ -227,7 +227,7 @@ module WXRuby3
|
|
|
227
227
|
$1 = rb_obj_is_kind_of($input, rb_const_get(mWxPG, var_ColourPropertyValue_id()));
|
|
228
228
|
__CODE
|
|
229
229
|
end
|
|
230
|
-
if Config.instance.features_set?('
|
|
230
|
+
if Config.instance.features_set?('USE_LONGLONG')
|
|
231
231
|
# wxLongLong mapping to be considered before considering 'long' (see typecheck precedence)
|
|
232
232
|
spec.map 'wxLongLong' => 'Integer' do
|
|
233
233
|
map_in code: <<~__CODE
|
|
@@ -68,7 +68,6 @@ module WXRuby3
|
|
|
68
68
|
spec.ignore [
|
|
69
69
|
'wxWindow::TransferDataFromWindow',
|
|
70
70
|
'wxWindow::TransferDataToWindow',
|
|
71
|
-
'wxWindow::GetAccessible',
|
|
72
71
|
'wxWindow::PopEventHandler',
|
|
73
72
|
'wxWindow::SetConstraints',
|
|
74
73
|
'wxWindow::GetHandle',
|
|
@@ -110,10 +109,15 @@ module WXRuby3
|
|
|
110
109
|
spec.ignore 'wxWindow::EnableTouchEvents'
|
|
111
110
|
end
|
|
112
111
|
if Config.instance.wx_version >= '3.3.0'
|
|
113
|
-
spec.
|
|
112
|
+
spec.ignore_unless('WXMSW', 'wxWindow::MSWDisableComposited')
|
|
114
113
|
end
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
if Config.instance.features_set?('USE_ACCESSIBILITY')
|
|
115
|
+
spec.disown 'wxAccessible *accessible'
|
|
116
|
+
else
|
|
117
|
+
spec.ignore('wxWindow::SetAccessible',
|
|
118
|
+
'wxWindow::GetAccessible')
|
|
119
|
+
end
|
|
120
|
+
spec.ignore_unless('USE_HOTKEY', %w[wxWindow::RegisterHotKey wxWindow::UnregisterHotKey])
|
|
117
121
|
spec.ignore('wxWindow::SetSize(int, int)') # not useful as the wxSize variant will also accept an array
|
|
118
122
|
spec.swig_import %w{
|
|
119
123
|
swig/classes/include/wxObject.h
|
|
@@ -189,7 +193,22 @@ module WXRuby3
|
|
|
189
193
|
|
|
190
194
|
return do_paint_buffered(self);
|
|
191
195
|
}
|
|
192
|
-
|
|
196
|
+
|
|
197
|
+
VALUE each_child()
|
|
198
|
+
{
|
|
199
|
+
const wxWindowList& child_list = self->GetChildren();
|
|
200
|
+
VALUE rc = Qnil;
|
|
201
|
+
wxWindowList::compatibility_iterator node = child_list.GetFirst();
|
|
202
|
+
while (node)
|
|
203
|
+
{
|
|
204
|
+
wxObject *child = node->GetData();
|
|
205
|
+
VALUE rb_child = wxRuby_WrapWxObjectInRuby(child);
|
|
206
|
+
rc = rb_yield(rb_child);
|
|
207
|
+
node = node->GetNext();
|
|
208
|
+
}
|
|
209
|
+
return rc;
|
|
210
|
+
}
|
|
211
|
+
__HEREDOC
|
|
193
212
|
spec.override_events 'wxWindow', 'EVT_ACTIVATE' => ['EVT_ACTIVATE', 0, 'wxActivateEvent']
|
|
194
213
|
when 'wxNonOwnedWindow'
|
|
195
214
|
spec.no_proxy('wxNonOwnedWindow')
|
data/rakelib/lib/director.rb
CHANGED
|
@@ -94,7 +94,7 @@ module WXRuby3
|
|
|
94
94
|
|
|
95
95
|
def each_package(&block)
|
|
96
96
|
packages.each_value do |pkg|
|
|
97
|
-
pkg.each_package(&block) if Config.instance.features_set?(*pkg.required_features)
|
|
97
|
+
pkg.each_package(&block) if Package.full_docs? || Config.instance.features_set?(*pkg.required_features)
|
|
98
98
|
end
|
|
99
99
|
end
|
|
100
100
|
|
|
@@ -269,7 +269,7 @@ module WXRuby3
|
|
|
269
269
|
end
|
|
270
270
|
|
|
271
271
|
def handle_item_ignore(defmod, fullname, ignore, ignoredoc)
|
|
272
|
-
action = ignore ? '
|
|
272
|
+
action = (ignore==false) ? 'regard' : 'ignore'
|
|
273
273
|
# find the item
|
|
274
274
|
item = defmod.find_item(fullname)
|
|
275
275
|
if item
|
|
@@ -361,8 +361,8 @@ module WXRuby3
|
|
|
361
361
|
# extract the module definitions
|
|
362
362
|
defmod = Extractor.extract_module(spec.package, spec.module_name, spec.name, spec.items, gendoc: gendoc)
|
|
363
363
|
# handle ignores
|
|
364
|
-
spec.ignores.each_pair do |fullname,
|
|
365
|
-
handle_item_ignore(defmod, fullname,
|
|
364
|
+
spec.ignores.each_pair do |fullname, ignore_spec|
|
|
365
|
+
handle_item_ignore(defmod, fullname, ignore_spec[:ignore], ignore_spec[:ignore_doc])
|
|
366
366
|
end
|
|
367
367
|
# handle regards
|
|
368
368
|
spec.regards.each_pair do |fullname, regarddoc|
|
|
@@ -75,14 +75,14 @@ module WXRuby3
|
|
|
75
75
|
"self.#{rb_method_name(rb_name || name)}"
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
def rb_doc(xml_trans, type_maps)
|
|
79
|
-
ovls = all.select {|m| !m.docs_ignored && !m.deprecated }
|
|
80
|
-
ovl_docs = ovls.collect { |mo| mo.rb_doc_decl(xml_trans, type_maps) }
|
|
81
|
-
ovl_docs.inject({}) do |docs, (name, params, doc)|
|
|
78
|
+
def rb_doc(xml_trans, type_maps, fulldocs=false)
|
|
79
|
+
ovls = all.select {|m| !m.docs_ignored(fulldocs) && !m.deprecated }
|
|
80
|
+
ovl_docs = ovls.collect { |mo| [mo]+mo.rb_doc_decl(xml_trans, type_maps) }
|
|
81
|
+
ovl_docs.inject({}) do |docs, (movl, name, params, doc)|
|
|
82
82
|
if docs.has_key?(name)
|
|
83
|
-
docs[name] << [params, doc]
|
|
83
|
+
docs[name] << [movl, params, doc]
|
|
84
84
|
else
|
|
85
|
-
docs[name] = [[params, doc]]
|
|
85
|
+
docs[name] = [[movl, params, doc]]
|
|
86
86
|
end
|
|
87
87
|
docs
|
|
88
88
|
end
|
data/rakelib/lib/extractor.rb
CHANGED
|
@@ -182,7 +182,7 @@ module WXRuby3
|
|
|
182
182
|
extract(element) if element
|
|
183
183
|
end
|
|
184
184
|
|
|
185
|
-
attr_accessor :name, :rb_name, :
|
|
185
|
+
attr_accessor :name, :rb_name, :brief_doc, :detailed_doc, :deprecated, :only_for, :items
|
|
186
186
|
|
|
187
187
|
def extra_attributes
|
|
188
188
|
@extra_attributes ||= {}
|
|
@@ -221,8 +221,10 @@ module WXRuby3
|
|
|
221
221
|
@detailed_doc = element.xpath('detaileddescription')
|
|
222
222
|
if (el = @detailed_doc.at_xpath('para/onlyfor'))
|
|
223
223
|
@only_for = el.text.strip.split(',').collect { |s| s.downcase }
|
|
224
|
-
|
|
225
|
-
|
|
224
|
+
unless @only_for.empty?
|
|
225
|
+
@ignored = [Config::AnyOf.new(*@only_for.collect { |s| s.upcase })] # transform to feature ids like 'WXGTK'
|
|
226
|
+
@docs_ignored = @ignored
|
|
227
|
+
end
|
|
226
228
|
end
|
|
227
229
|
end
|
|
228
230
|
end
|
|
@@ -256,12 +258,39 @@ module WXRuby3
|
|
|
256
258
|
end
|
|
257
259
|
end
|
|
258
260
|
|
|
261
|
+
def get_ignore_val(val)
|
|
262
|
+
if val.is_a?(::Array)
|
|
263
|
+
val
|
|
264
|
+
elsif val.is_a?(Config::AnyOf) || val.is_a?(::String)
|
|
265
|
+
[val]
|
|
266
|
+
else
|
|
267
|
+
!!val
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
private :get_ignore_val
|
|
271
|
+
|
|
259
272
|
def ignore(val = true, ignore_doc: nil)
|
|
260
|
-
@ignored =
|
|
261
|
-
@docs_ignored = ignore_doc.nil?
|
|
273
|
+
@ignored = get_ignore_val(val)
|
|
274
|
+
@docs_ignored = if ignore_doc.nil?
|
|
275
|
+
@ignored
|
|
276
|
+
else
|
|
277
|
+
get_ignore_val(ignore_doc)
|
|
278
|
+
end
|
|
262
279
|
self
|
|
263
280
|
end
|
|
264
281
|
|
|
282
|
+
def ignored
|
|
283
|
+
@ignored == true || (@ignored.is_a?(::Array) && !Config.instance.features_set?(*@ignored))
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
def docs_ignored(fulldocs)
|
|
287
|
+
@docs_ignored == true || (!fulldocs && @docs_ignored.is_a?(::Array) && !Config.instance.features_set?(*@docs_ignored))
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
def required_features_doc
|
|
291
|
+
@docs_ignored.is_a?(::Array) ? @docs_ignored : nil
|
|
292
|
+
end
|
|
293
|
+
|
|
265
294
|
def find(name)
|
|
266
295
|
# Locate and return an item within this item that has a matching name.
|
|
267
296
|
# The name string can use a dotted notation to continue the search
|
|
@@ -87,7 +87,7 @@ module WXRuby3
|
|
|
87
87
|
attr_reader :director, :classdef, :class_spec_name, :class_registry
|
|
88
88
|
|
|
89
89
|
def item_ignored?(item)
|
|
90
|
-
@doc_gen ? item.docs_ignored : item.ignored
|
|
90
|
+
@doc_gen ? item.docs_ignored(Director::Package.full_docs?) : item.ignored
|
|
91
91
|
end
|
|
92
92
|
private :item_ignored?
|
|
93
93
|
|
|
@@ -482,12 +482,17 @@ module WXRuby3
|
|
|
482
482
|
end
|
|
483
483
|
end
|
|
484
484
|
|
|
485
|
+
def item_ignored(item, doc_gen)
|
|
486
|
+
doc_gen ? item.docs_ignored(Director::Package.full_docs?) : item.ignored
|
|
487
|
+
end
|
|
488
|
+
private :item_ignored
|
|
489
|
+
|
|
485
490
|
def preprocess(enum_maps, doc_gen = false)
|
|
486
491
|
STDERR.puts "** Preprocessing #{module_name}" if Director.trace?
|
|
487
492
|
def_items.each do |item|
|
|
488
493
|
case item
|
|
489
494
|
when Extractor::ClassDef
|
|
490
|
-
if !(
|
|
495
|
+
if !item_ignored(item, doc_gen) &&
|
|
491
496
|
(!item.is_template? || template_as_class?(item.name)) &&
|
|
492
497
|
!is_folded_base?(item.name)
|
|
493
498
|
clsproc = ClassProcessor.new(director, item, doc_gen)
|
|
@@ -536,7 +541,7 @@ module WXRuby3
|
|
|
536
541
|
errors = []
|
|
537
542
|
warnings = []
|
|
538
543
|
def_items.each do |item|
|
|
539
|
-
if Extractor::ClassDef === item && !(
|
|
544
|
+
if Extractor::ClassDef === item && !item_ignored(item, doc_gen) &&
|
|
540
545
|
(!item.is_template? || template_as_class?(item.name)) &&
|
|
541
546
|
!is_folded_base?(item.name)
|
|
542
547
|
intf_class_name = if item.is_template? || template_as_class?(item.name)
|
|
@@ -47,8 +47,6 @@
|
|
|
47
47
|
|
|
48
48
|
but take care to not cause undesirable re-entrance when doing it (see {Wx::App#yield} for more details). The simplest way to do it is to use {Wx::WindowDisabler} class as illustrated in the above example.
|
|
49
49
|
Note that a {Wx::BusyInfo} is always built with the {Wx::STAY_ON_TOP} window style (see {Wx::Frame} window styles for more info).
|
|
50
|
-
|
|
51
|
-
===
|
|
52
50
|
|
|
53
51
|
Category: Common Dialogs
|
|
54
52
|
|
|
@@ -37,7 +37,5 @@
|
|
|
37
37
|
clipboard managers will automatically flush the clipboard after each new piece of data is added, while others
|
|
38
38
|
will not. The {Wx::Clipboard#flush} function will force the clipboard manager to flush the data.
|
|
39
39
|
|
|
40
|
-
===
|
|
41
|
-
|
|
42
40
|
Category: Clipboard and Drag & Drop
|
|
43
41
|
@see Wx::DataObject
|
|
@@ -13,8 +13,6 @@
|
|
|
13
13
|
the cursor for a window, as in X, rather than to set it globally as in MS Windows, although a global
|
|
14
14
|
{set_cursor} function is also available for MS Windows use.
|
|
15
15
|
|
|
16
|
-
===
|
|
17
|
-
|
|
18
16
|
Category: Graphics Device Interface (GDI)
|
|
19
17
|
Predefined objects/pointers:
|
|
20
18
|
- {Wx::NULL_CURSOR}
|
data/rakelib/lib/generate/doc.rb
CHANGED
|
@@ -151,8 +151,10 @@ module WXRuby3
|
|
|
151
151
|
def text_to_doc(node)
|
|
152
152
|
text = node.text
|
|
153
153
|
# handle left-over doxygen tags
|
|
154
|
+
text.gsub!(/#(\w)/, '\#\1')
|
|
154
155
|
text.gsub!(/@(end)?code/, '')
|
|
155
|
-
text.gsub!('@subsection', '
|
|
156
|
+
text.gsub!('@subsection', '##')
|
|
157
|
+
text = '' if text.strip == '##' # no empty headings
|
|
156
158
|
text.gsub!('@remarks', '')
|
|
157
159
|
text.gsub!(/@see.*\n/, '')
|
|
158
160
|
text.gsub!('@ref', '')
|
|
@@ -224,6 +226,10 @@ module WXRuby3
|
|
|
224
226
|
end
|
|
225
227
|
end
|
|
226
228
|
|
|
229
|
+
def onlyfor_to_doc(node)
|
|
230
|
+
'' # handled elsewhere
|
|
231
|
+
end
|
|
232
|
+
|
|
227
233
|
def simplesect_to_doc(node)
|
|
228
234
|
case node['kind']
|
|
229
235
|
when 'since' # get rid of 'Since' notes
|
|
@@ -233,6 +239,22 @@ module WXRuby3
|
|
|
233
239
|
@see_list.concat node_to_doc(node).split(',')
|
|
234
240
|
end
|
|
235
241
|
''
|
|
242
|
+
when 'note'
|
|
243
|
+
<<~__NOTE
|
|
244
|
+
|
|
245
|
+
<div class="wxrb-note">
|
|
246
|
+
<b>Note:</b>
|
|
247
|
+
<p>#{node_to_doc(node)}</p>
|
|
248
|
+
</div>
|
|
249
|
+
__NOTE
|
|
250
|
+
when 'remark'
|
|
251
|
+
<<~__NOTE
|
|
252
|
+
|
|
253
|
+
<div class="wxrb-remark">
|
|
254
|
+
<b>Remark:</b>
|
|
255
|
+
<p>#{node_to_doc(node)}</p>
|
|
256
|
+
</div>>
|
|
257
|
+
__NOTE
|
|
236
258
|
else
|
|
237
259
|
node_to_doc(node)
|
|
238
260
|
end
|
|
@@ -280,7 +302,9 @@ module WXRuby3
|
|
|
280
302
|
|
|
281
303
|
def _ident_str_to_doc(s, ref_scope = nil)
|
|
282
304
|
return s if no_idents?
|
|
283
|
-
return s if
|
|
305
|
+
return s if s.start_with?('wxRuby')
|
|
306
|
+
return 'WXOSX' if s.start_with?('wxMac')
|
|
307
|
+
return s.sub(/\Awx/, 'WX') if %w[wxMSW wxOSX wxGTK wxX11 wxUNIVERSAL].any? { |w| s.start_with?(w) }
|
|
284
308
|
nmlist = s.split('::')
|
|
285
309
|
nm_str = nmlist.shift.to_s
|
|
286
310
|
constnm = rb_wx_name(nm_str)
|
|
@@ -402,14 +426,15 @@ module WXRuby3
|
|
|
402
426
|
|
|
403
427
|
# transform all titles
|
|
404
428
|
def title_to_doc(node)
|
|
405
|
-
"
|
|
429
|
+
"## #{node.text}\n"
|
|
406
430
|
end
|
|
407
431
|
|
|
408
432
|
def heading_to_doc(node)
|
|
409
433
|
lvl = 1+(node['level'] || '1').to_i
|
|
410
434
|
txt = node_to_doc(node)
|
|
411
435
|
event_section(/Events emitted by this class|Events using this class/i =~ txt)
|
|
412
|
-
|
|
436
|
+
txt.strip!
|
|
437
|
+
txt.empty? ? txt : "#{'#' * lvl} #{txt}"
|
|
413
438
|
end
|
|
414
439
|
|
|
415
440
|
# transform all itemizedlist
|
|
@@ -682,6 +707,36 @@ module WXRuby3
|
|
|
682
707
|
|
|
683
708
|
protected
|
|
684
709
|
|
|
710
|
+
def to_feature_text(feat)
|
|
711
|
+
if Config::AnyOf === feat
|
|
712
|
+
feat.features.collect { |f| f.is_a?(::Array) ? f.join('&') : f }.join('|')
|
|
713
|
+
else
|
|
714
|
+
feat
|
|
715
|
+
end
|
|
716
|
+
end
|
|
717
|
+
private :to_feature_text
|
|
718
|
+
|
|
719
|
+
def gen_item_requirements(fdoc, item)
|
|
720
|
+
if item.required_features_doc
|
|
721
|
+
fdoc.doc.puts '@wxrb_require ' + item.required_features_doc.collect(&->(feat){ to_feature_text(feat) }).join(',')
|
|
722
|
+
end
|
|
723
|
+
end
|
|
724
|
+
|
|
725
|
+
def has_class_requirements?
|
|
726
|
+
!(ifspec.requirements.empty? && ifspec.package.required_features.empty?)
|
|
727
|
+
end
|
|
728
|
+
|
|
729
|
+
def get_class_requirements
|
|
730
|
+
ifspec.requirements + ifspec.package.required_features.to_a
|
|
731
|
+
end
|
|
732
|
+
private :get_class_requirements
|
|
733
|
+
|
|
734
|
+
def gen_class_requirements(fdoc)
|
|
735
|
+
if has_class_requirements?
|
|
736
|
+
fdoc.doc.puts '@wxrb_require ' + get_class_requirements.collect(&->(feat){ to_feature_text(feat) }).join(',')
|
|
737
|
+
end
|
|
738
|
+
end
|
|
739
|
+
|
|
685
740
|
def get_constant_doc(const)
|
|
686
741
|
@xml_trans.to_doc(const.brief_doc, item: const)
|
|
687
742
|
end
|
|
@@ -718,6 +773,7 @@ module WXRuby3
|
|
|
718
773
|
|
|
719
774
|
def gen_enum_doc(fdoc, enumname, enumdef, enum_table)
|
|
720
775
|
fdoc.doc.puts get_enum_doc(enumdef)
|
|
776
|
+
gen_class_requirements(fdoc)
|
|
721
777
|
fdoc.puts "class #{enumname} < Wx::Enum"
|
|
722
778
|
fdoc.puts
|
|
723
779
|
fdoc.indent do
|
|
@@ -734,7 +790,7 @@ module WXRuby3
|
|
|
734
790
|
|
|
735
791
|
def gen_constants_doc(fdoc)
|
|
736
792
|
xref_table = package.all_modules.reduce(DocGenerator.constants_db) { |db, mod| db[mod] }
|
|
737
|
-
def_items.select {|itm| !itm.docs_ignored }.each do |item|
|
|
793
|
+
def_items.select {|itm| !itm.docs_ignored(Director::Package.full_docs?) }.each do |item|
|
|
738
794
|
case item
|
|
739
795
|
when Extractor::GlobalVarDef
|
|
740
796
|
unless no_gen?(:variables)
|
|
@@ -773,22 +829,24 @@ module WXRuby3
|
|
|
773
829
|
end
|
|
774
830
|
|
|
775
831
|
def get_function_doc(func)
|
|
776
|
-
func.rb_doc(@xml_trans, type_maps)
|
|
832
|
+
func.rb_doc(@xml_trans, type_maps, Director::Package.full_docs?)
|
|
777
833
|
end
|
|
778
834
|
|
|
779
835
|
def gen_functions_doc(fdoc)
|
|
780
|
-
def_items.select {|itm| !itm.docs_ignored }.each do |item|
|
|
781
|
-
if Extractor::FunctionDef === item
|
|
836
|
+
def_items.select {|itm| !itm.docs_ignored(Director::Package.full_docs?) }.each do |item|
|
|
837
|
+
if Extractor::FunctionDef === item
|
|
782
838
|
get_method_doc(item).each_pair do |name, docs|
|
|
783
839
|
if docs.size>1 # method with overloads?
|
|
784
|
-
docs.each do |params, ovl_doc|
|
|
840
|
+
docs.each do |ovl, params, ovl_doc|
|
|
785
841
|
fdoc.doc.puts "@overload #{name}(#{params})"
|
|
786
842
|
fdoc.doc.indent { fdoc.doc.puts ovl_doc }
|
|
843
|
+
fdoc.doc.indent { gen_item_requirements(fdoc, ovl) }
|
|
787
844
|
end
|
|
788
845
|
fdoc.puts "def #{name}(*args) end"
|
|
789
846
|
else
|
|
790
|
-
params, doc = docs.shift
|
|
847
|
+
mtd, params, doc = docs.shift
|
|
791
848
|
fdoc.doc.puts doc
|
|
849
|
+
gen_item_requirements(fdoc, mtd)
|
|
792
850
|
if params.empty?
|
|
793
851
|
fdoc.puts "def #{name}; end"
|
|
794
852
|
else
|
|
@@ -808,7 +866,7 @@ module WXRuby3
|
|
|
808
866
|
end
|
|
809
867
|
|
|
810
868
|
def get_method_doc(mtd)
|
|
811
|
-
mtd.rb_doc(@xml_trans, type_maps)
|
|
869
|
+
mtd.rb_doc(@xml_trans, type_maps, Director::Package.full_docs?)
|
|
812
870
|
end
|
|
813
871
|
|
|
814
872
|
def get_method_head(clsdef, mtdef)
|
|
@@ -836,14 +894,16 @@ module WXRuby3
|
|
|
836
894
|
mtd_head = get_method_head(clsdef, cm)
|
|
837
895
|
get_method_doc(mtd_head).each_pair do |name, docs|
|
|
838
896
|
if docs.size>1 # method with overloads?
|
|
839
|
-
docs.each do |params, ovl_doc|
|
|
897
|
+
docs.each do |ovl, params, ovl_doc|
|
|
840
898
|
fdoc.doc.puts "@overload #{name}(#{params})"
|
|
841
899
|
fdoc.doc.indent { fdoc.doc.puts ovl_doc }
|
|
900
|
+
fdoc.doc.indent { gen_item_requirements(fdoc, ovl) }
|
|
842
901
|
end
|
|
843
902
|
fdoc.puts "def #{name}(*args) end"
|
|
844
903
|
else
|
|
845
|
-
params, doc = docs.shift
|
|
904
|
+
mtd, params, doc = docs.shift
|
|
846
905
|
fdoc.doc.puts doc
|
|
906
|
+
gen_item_requirements(fdoc, mtd)
|
|
847
907
|
if params.empty?
|
|
848
908
|
fdoc.puts "def #{name}; end"
|
|
849
909
|
else
|
|
@@ -898,7 +958,7 @@ module WXRuby3
|
|
|
898
958
|
|
|
899
959
|
def gen_class_doc(fdoc)
|
|
900
960
|
const_table = package.all_modules.reduce(DocGenerator.constants_db) { |db, mod| db[mod] }
|
|
901
|
-
def_items.select {|itm| !itm.docs_ignored && Extractor::ClassDef === itm && !is_folded_base?(itm.name) }.each do |item|
|
|
961
|
+
def_items.select {|itm| !itm.docs_ignored(Director::Package.full_docs?) && Extractor::ClassDef === itm && !is_folded_base?(itm.name) }.each do |item|
|
|
902
962
|
if !item.is_template? || template_as_class?(item.name)
|
|
903
963
|
@xml_trans.for_class(item) do
|
|
904
964
|
intf_class_name = if (item.is_template? && template_as_class?(item.name))
|
|
@@ -911,9 +971,11 @@ module WXRuby3
|
|
|
911
971
|
fdoc.doc.puts get_class_doc(item)
|
|
912
972
|
if is_mixin?(item)
|
|
913
973
|
fdoc.doc.puts "\n@note In wxRuby this is a mixin module instead of a (base) class."
|
|
974
|
+
gen_class_requirements(fdoc)
|
|
914
975
|
fdoc.puts "module #{clsnm}"
|
|
915
976
|
else
|
|
916
977
|
fdoc.doc.puts "\n@note This class is <b>untracked</b> and should not be derived from nor instances extended!" unless is_tracked?(item)
|
|
978
|
+
gen_class_requirements(fdoc)
|
|
917
979
|
basecls = ifspec.classdef_name(base_class(item, doc: true))
|
|
918
980
|
fdoc.puts "class #{clsnm} < #{basecls ? basecls.sub(/\Awx/, '') : '::Object'}"
|
|
919
981
|
end
|