wxruby3 0.9.0.pre.beta.14 → 0.9.0.pre.rc.1
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/README.md +47 -4
- data/assets/hello_button.png +0 -0
- data/assets/hello_button_clicked.png +0 -0
- data/assets/hello_world.png +0 -0
- data/assets/repo-social-preview.png +0 -0
- data/ext/wxruby3/include/wxruby-runtime.h +1 -0
- data/ext/wxruby3/swig/memory_management.i +6 -10
- data/ext/wxruby3/swig/wx.i +17 -6
- data/lib/wx/core/art_locator.rb +2 -2
- data/lib/wx/core/artprovider.rb +2 -2
- data/lib/wx/core/bitmap.rb +6 -5
- data/lib/wx/core/bitmap_combobox.rb +34 -0
- data/lib/wx/core/controlwithitems.rb +52 -14
- data/lib/wx/core/cursor.rb +1 -1
- data/lib/wx/core/dc.rb +0 -20
- data/lib/wx/core/event_blocker.rb +14 -0
- data/lib/wx/core/evthandler.rb +36 -0
- data/lib/wx/core/find_replace_dialog.rb +24 -0
- data/lib/wx/core/icon.rb +1 -1
- data/lib/wx/core/image.rb +1 -1
- data/lib/wx/core/paintdc.rb +8 -0
- data/lib/wx/core/text_entry.rb +15 -0
- data/lib/wx/core/v_list_box.rb +13 -0
- data/lib/wx/core/window.rb +1 -1
- data/lib/wx/doc/busy_info.rb +21 -0
- data/lib/wx/doc/client_dc.rb +28 -0
- data/lib/wx/doc/controlwithitems.rb +11 -0
- data/lib/wx/doc/dc.rb +0 -14
- data/lib/wx/doc/event_blocker.rb +27 -0
- data/lib/wx/doc/evthandler.rb +4 -0
- data/lib/wx/doc/extra/02_lifecycles.md +49 -0
- data/lib/wx/doc/extra/10_art.md +1 -1
- data/lib/wx/doc/extra/11_drawing_and_dc.md +62 -0
- data/lib/wx/doc/memory_dc.rb +75 -0
- data/lib/wx/doc/mirror_dc.rb +16 -0
- data/lib/wx/doc/prt/printer_dc.rb +26 -0
- data/lib/wx/doc/screen_dc.rb +10 -6
- data/lib/wx/doc/svg_file_dc.rb +20 -0
- data/lib/wx/doc/v_list_box.rb +9 -0
- data/lib/wx/doc/window_disabler.rb +10 -0
- data/lib/wx/html/keyword_defs.rb +6 -7
- data/lib/wx/html/require.rb +1 -0
- data/lib/wx/html/simple_html_listbox.rb +105 -0
- data/lib/wx/keyword_defs.rb +7 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/cmd/test.rb +1 -1
- data/rakelib/install.rb +3 -1
- data/rakelib/lib/core/mapping.rb +5 -5
- data/rakelib/lib/core/spec.rb +7 -3
- data/rakelib/lib/core/spec_helper.rb +9 -1
- data/rakelib/lib/director/accelerator.rb +1 -1
- data/rakelib/lib/director/app.rb +25 -3
- data/rakelib/lib/director/art_provider.rb +5 -1
- data/rakelib/lib/director/aui_pane_info.rb +1 -1
- data/rakelib/lib/director/aui_tab_ctrl.rb +1 -1
- data/rakelib/lib/director/bitmap.rb +2 -1
- data/rakelib/lib/director/bitmap_combobox.rb +32 -0
- data/rakelib/lib/director/brush.rb +1 -0
- data/rakelib/lib/director/busy_info.rb +1 -1
- data/rakelib/lib/director/choice.rb +1 -0
- data/rakelib/lib/director/clipboard.rb +1 -1
- data/rakelib/lib/director/colour.rb +1 -0
- data/rakelib/lib/director/colour_picker_ctrl.rb +1 -1
- data/rakelib/lib/director/combobox.rb +1 -2
- data/rakelib/lib/director/ctrl_with_items.rb +3 -0
- data/rakelib/lib/director/cursor.rb +1 -0
- data/rakelib/lib/director/data_object.rb +5 -7
- data/rakelib/lib/director/dc.rb +5 -1
- data/rakelib/lib/director/defs.rb +3 -0
- data/rakelib/lib/director/derived_dc.rb +278 -27
- data/rakelib/lib/director/dialog.rb +4 -1
- data/rakelib/lib/director/dir_picker_ctrl.rb +1 -1
- data/rakelib/lib/director/event.rb +3 -3
- data/rakelib/lib/director/event_blocker.rb +41 -0
- data/rakelib/lib/director/event_filter.rb +20 -0
- data/rakelib/lib/director/event_handler.rb +29 -2
- data/rakelib/lib/director/file_picker_ctrl.rb +1 -1
- data/rakelib/lib/director/find_replace_data.rb +1 -0
- data/rakelib/lib/director/font.rb +2 -1
- data/rakelib/lib/director/font_data.rb +1 -0
- data/rakelib/lib/director/font_picker_ctrl.rb +1 -1
- data/rakelib/lib/director/gdi_object.rb +1 -0
- data/rakelib/lib/director/graphics_context.rb +6 -6
- data/rakelib/lib/director/grid_table_message.rb +1 -1
- data/rakelib/lib/director/html_cell.rb +1 -1
- data/rakelib/lib/director/html_data_object.rb +5 -7
- data/rakelib/lib/director/html_listbox.rb +65 -1
- data/rakelib/lib/director/icon.rb +2 -0
- data/rakelib/lib/director/listbox.rb +1 -0
- data/rakelib/lib/director/locale.rb +2 -1
- data/rakelib/lib/director/palette.rb +1 -0
- data/rakelib/lib/director/pen.rb +2 -1
- data/rakelib/lib/director/pgproperties.rb +1 -1
- data/rakelib/lib/director/pgproperty.rb +1 -1
- data/rakelib/lib/director/pgvalidation_info.rb +1 -1
- data/rakelib/lib/director/platform_info.rb +1 -1
- data/rakelib/lib/director/print_data.rb +1 -1
- data/rakelib/lib/director/property_grid_interface.rb +1 -1
- data/rakelib/lib/director/property_grid_page_state.rb +1 -1
- data/rakelib/lib/director/region.rb +1 -0
- data/rakelib/lib/director/ribbon_art_provider.rb +1 -1
- data/rakelib/lib/director/richtext_buffer_data_object.rb +5 -7
- data/rakelib/lib/director/richtext_header_footer_data.rb +1 -1
- data/rakelib/lib/director/searchctrl.rb +24 -0
- data/rakelib/lib/director/sizer.rb +2 -2
- data/rakelib/lib/director/styled_text_ctrl.rb +2 -0
- data/rakelib/lib/director/text_entry.rb +2 -2
- data/rakelib/lib/director/tree_ctrl.rb +6 -3
- data/rakelib/lib/director/uiaction_simulator.rb +20 -0
- data/rakelib/lib/director/variant.rb +1 -1
- data/rakelib/lib/director/vlistbox.rb +25 -0
- data/rakelib/lib/director/window.rb +0 -6
- data/rakelib/lib/director/with_images.rb +1 -1
- data/rakelib/lib/director/xml_node.rb +1 -1
- data/rakelib/lib/extractor/function.rb +5 -3
- data/rakelib/lib/generate/doc/about_dialog_info.yaml +46 -0
- data/rakelib/lib/generate/doc/accelerator.yaml +21 -0
- data/rakelib/lib/generate/doc/art_provider.yaml +35 -0
- data/rakelib/lib/generate/doc/bitmap.yaml +37 -0
- data/rakelib/lib/generate/doc/box_sizer.yaml +15 -0
- data/rakelib/lib/generate/doc/busy_info.yaml +74 -0
- data/rakelib/lib/generate/doc/client_dc.yaml +19 -0
- data/rakelib/lib/generate/doc/clipboard.yaml +43 -0
- data/rakelib/lib/generate/doc/collapsible_pane.yaml +21 -0
- data/rakelib/lib/generate/doc/colour_dialog.yaml +32 -0
- data/rakelib/lib/generate/doc/control.yaml +46 -0
- data/rakelib/lib/generate/doc/cursor.yaml +40 -0
- data/rakelib/lib/generate/doc/data_object.yaml +55 -0
- data/rakelib/lib/generate/doc/dc.yaml +14 -0
- data/rakelib/lib/generate/doc/dialog.yaml +36 -0
- data/rakelib/lib/generate/doc/dir_dialog.yaml +25 -0
- data/rakelib/lib/generate/doc/events.yaml +152 -0
- data/rakelib/lib/generate/doc/evt_handler.yaml +63 -0
- data/rakelib/lib/generate/doc.rb +76 -13
- data/rakelib/lib/generate/interface.rb +11 -0
- data/rakelib/lib/specs/interfaces.rb +5 -4
- data/rakelib/lib/swig_runner.rb +3 -3
- data/rakelib/lib/typemap/common.rb +15 -3
- data/rakelib/lib/util/string.rb +1 -0
- data/rakelib/yard/yard/relative_markdown_links.rb +5 -1
- data/samples/bigdemo/wxArtProvider.rbw +5 -4
- data/samples/controls/controls.rb +2 -2
- data/samples/controls/htlbox.rb +411 -0
- data/samples/controls/tn_htlbox.png +0 -0
- data/samples/drawing/graphics_drawing.rb +1 -2
- data/samples/drawing/{svgtest.rb → image_prt.rb} +49 -18
- data/samples/drawing/tn_image_prt.png +0 -0
- data/samples/propgrid/propgrid.rb +23 -21
- data/samples/ribbon/ribbon.rb +47 -46
- data/tests/lib/wxapp_runner.rb +3 -3
- data/tests/lib/wxframe_runner.rb +59 -0
- data/tests/test_app_event_filter.rb +74 -0
- data/tests/test_art_provider.rb +52 -0
- data/tests/test_clipboard.rb +2 -1
- data/tests/test_event_handling.rb +199 -16
- data/tests/test_events.rb +4 -11
- data/tests/test_gdi_object.rb +161 -0
- data/tests/test_intl.rb +11 -14
- data/tests/test_item_data.rb +33 -1
- data/tests/test_std_controls.rb +147 -0
- metadata +56 -4
- data/samples/drawing/tn_svgtest.png +0 -0
|
@@ -12,14 +12,16 @@ module WXRuby3
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
14
|
spec.disable_proxies
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
# do not track GraphicContext objects as that causes problems probably for similar
|
|
16
|
+
# reasons as for DC objects
|
|
17
|
+
spec.gc_as_untracked
|
|
18
|
+
# ignore all these; wxRuby only supports the ::draw_on methods
|
|
18
19
|
spec.ignore 'wxGraphicsContext::CreateFromNative',
|
|
19
20
|
'wxGraphicsContext::CreateFromNativeWindow',
|
|
20
21
|
'wxGraphicsContext::CreateFromNativeHDC',
|
|
22
|
+
'wxGraphicsContext::CreateFromUnknownDC',
|
|
21
23
|
'wxGraphicsContext::GetNativeContext',
|
|
22
|
-
'wxGraphicsContext::Create
|
|
24
|
+
'wxGraphicsContext::Create'
|
|
23
25
|
# type mappings
|
|
24
26
|
# Typemap to fix GraphicsContext#get_text_extent
|
|
25
27
|
spec.map_apply 'double *OUTPUT' => [ 'wxDouble* width', 'wxDouble* height',
|
|
@@ -135,8 +137,6 @@ module WXRuby3
|
|
|
135
137
|
}
|
|
136
138
|
__CODE
|
|
137
139
|
end
|
|
138
|
-
spec.new_object 'wxGraphicsContext::Create',
|
|
139
|
-
'wxGraphicsContext::CreateFromUnknownDC'
|
|
140
140
|
# add convenience method providing efficient gc memory management
|
|
141
141
|
spec.add_extend_code 'wxGraphicsContext', <<~__HEREDOC
|
|
142
142
|
static VALUE draw_on(wxWindow* win)
|
|
@@ -20,7 +20,7 @@ module WXRuby3
|
|
|
20
20
|
spec.make_abstract 'wxHtmlCell'
|
|
21
21
|
spec.make_abstract 'wxHtmlLinkInfo'
|
|
22
22
|
spec.make_abstract 'wxHtmlContainerCell'
|
|
23
|
-
spec.
|
|
23
|
+
spec.gc_as_untracked 'wxHtmlLinkInfo' # no tracking
|
|
24
24
|
spec.ignore 'wxHtmlCell::Find'
|
|
25
25
|
# not useful for wxRuby as we do not support customizing these
|
|
26
26
|
spec.ignore 'wxHtmlCell::AdjustPagebreak',
|
|
@@ -20,13 +20,11 @@ module WXRuby3
|
|
|
20
20
|
# we only allow Ruby derivatives from wxDataObject but not of any of the C++ implemented
|
|
21
21
|
# specializations
|
|
22
22
|
spec.no_proxy 'wxHTMLDataObject'
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
%feature("notabstract") wxHTMLDataObject;
|
|
29
|
-
__HEREDOC
|
|
23
|
+
# SWIG gets confused and doesn't realise that various virtual methods
|
|
24
|
+
# from wxDataObject are implemented fully in this subclass, and so,
|
|
25
|
+
# believing it to be abstract doesn't provide an allocator for this
|
|
26
|
+
# class. This overrides this.
|
|
27
|
+
spec.make_concrete 'wxHTMLDataObject'
|
|
30
28
|
|
|
31
29
|
end
|
|
32
30
|
|
|
@@ -12,7 +12,7 @@ module WXRuby3
|
|
|
12
12
|
class HtmlListBox < Window
|
|
13
13
|
|
|
14
14
|
def setup
|
|
15
|
-
spec.items << 'wxSimpleHtmlListBox'
|
|
15
|
+
spec.items << 'wxSimpleHtmlListBox' << 'wxItemContainer'
|
|
16
16
|
super
|
|
17
17
|
spec.override_inheritance_chain('wxHtmlListBox', %w[wxVListBox wxVScrolledWindow wxPanel wxWindow wxEvtHandler wxObject])
|
|
18
18
|
spec.make_abstract 'wxHtmlListBox'
|
|
@@ -44,8 +44,72 @@ module WXRuby3
|
|
|
44
44
|
$self->GetFileSystem().ChangePathTo(location, is_dir);
|
|
45
45
|
}
|
|
46
46
|
__HEREDOC
|
|
47
|
+
# make sure protected methods are included
|
|
48
|
+
spec.regard 'wxHtmlListBox::OnGetItem',
|
|
49
|
+
'wxHtmlListBox::OnGetItemMarkup',
|
|
50
|
+
'wxHtmlListBox::GetSelectedTextColour',
|
|
51
|
+
'wxHtmlListBox::GetSelectedTextBgColour',
|
|
52
|
+
'wxHtmlListBox::OnLinkClicked'
|
|
53
|
+
# add missing protected overloads
|
|
54
|
+
spec.extend_interface 'wxHtmlListBox',
|
|
55
|
+
'virtual void OnDrawItem(wxDC &dc, const wxRect &rect, size_t n) const',
|
|
56
|
+
'virtual wxCoord OnMeasureItem(size_t n) const',
|
|
57
|
+
'virtual void OnDrawBackground(wxDC &dc, const wxRect &rect, size_t n) const',
|
|
58
|
+
'virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const',
|
|
59
|
+
visibility: 'protected'
|
|
60
|
+
|
|
47
61
|
# override inheritance chain
|
|
48
62
|
spec.override_inheritance_chain('wxSimpleHtmlListBox', %w[wxHtmlListBox wxVListBox wxVScrolledWindow wxPanel wxWindow wxEvtHandler wxObject])
|
|
63
|
+
spec.fold_bases('wxSimpleHtmlListBox' => %w[wxItemContainer])
|
|
64
|
+
# override SWIG's confusion
|
|
65
|
+
spec.make_concrete 'wxSimpleHtmlListBox'
|
|
66
|
+
# not useful overload
|
|
67
|
+
spec.ignore 'wxSimpleHtmlListBox::wxSimpleHtmlListBox(wxWindow *, wxWindowID, const wxPoint &, const wxSize &, int, const wxString[], long, const wxValidator &, const wxString &)'
|
|
68
|
+
# add missing overloads
|
|
69
|
+
spec.extend_interface 'wxSimpleHtmlListBox',
|
|
70
|
+
'virtual wxString GetString(unsigned int n) const',
|
|
71
|
+
'virtual void SetString(unsigned int n, const wxString &string)'
|
|
72
|
+
spec.ignore([ 'wxItemContainer::Append(const wxString &, wxClientData *)',
|
|
73
|
+
'wxItemContainer::Append(const std::vector< wxString > &)',
|
|
74
|
+
'wxItemContainer::Append(const wxArrayString &, wxClientData **)',
|
|
75
|
+
'wxItemContainer::Append(unsigned int, const wxString *)',
|
|
76
|
+
'wxItemContainer::Append(unsigned int, const wxString *, void **)',
|
|
77
|
+
'wxItemContainer::Append(unsigned int, const wxString *, wxClientData **)',
|
|
78
|
+
'wxItemContainer::Insert(const wxString &, unsigned int, wxClientData *)',
|
|
79
|
+
'wxItemContainer::Insert(const std::vector< wxString > &)',
|
|
80
|
+
'wxItemContainer::Insert(const wxArrayString &, unsigned int, wxClientData **)',
|
|
81
|
+
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int)',
|
|
82
|
+
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, void **)',
|
|
83
|
+
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, wxClientData **)',
|
|
84
|
+
'wxItemContainer::Set(const std::vector< wxString > &)',
|
|
85
|
+
'wxItemContainer::Set(const wxArrayString &, wxClientData **)',
|
|
86
|
+
'wxItemContainer::Set(unsigned int, const wxString *)',
|
|
87
|
+
'wxItemContainer::Set(unsigned int, const wxString *, void **)',
|
|
88
|
+
'wxItemContainer::Set(unsigned int, const wxString *, wxClientData **)',
|
|
89
|
+
'wxItemContainer::DetachClientObject',
|
|
90
|
+
'wxItemContainer::HasClientObjectData',
|
|
91
|
+
'wxItemContainer::GetClientObject',
|
|
92
|
+
'wxItemContainer::SetClientObject',
|
|
93
|
+
'wxItemContainer::HasClientUntypedData',
|
|
94
|
+
'wxItemContainer::Clear'])
|
|
95
|
+
spec.ignore([ 'wxItemContainer::Append(const wxArrayString &, void **)',
|
|
96
|
+
'wxItemContainer::Insert(const wxArrayString &, unsigned int, void **)',
|
|
97
|
+
'wxItemContainer::Set(const wxArrayString &, void **)'], ignore_doc: false)
|
|
98
|
+
# for doc only
|
|
99
|
+
spec.map 'void** clientData' => 'Array', swig: false do
|
|
100
|
+
map_in code: ''
|
|
101
|
+
end
|
|
102
|
+
spec.ignore(%w[wxItemContainer::GetClientData wxItemContainer::SetClientData], ignore_doc: false) # keep docs
|
|
103
|
+
# Replace the old Wx definition of this method (which segfaults)
|
|
104
|
+
# Only need the setter as we cache data in Ruby and the getter
|
|
105
|
+
# therefor can be pure Ruby
|
|
106
|
+
spec.add_extend_code('wxSimpleHtmlListBox', <<~__HEREDOC
|
|
107
|
+
VALUE set_client_data(int n, VALUE item_data) {
|
|
108
|
+
self->SetClientData(n, (void *)item_data);
|
|
109
|
+
return item_data;
|
|
110
|
+
}
|
|
111
|
+
__HEREDOC
|
|
112
|
+
)
|
|
49
113
|
end
|
|
50
114
|
end # class HtmlListBox
|
|
51
115
|
|
|
@@ -13,6 +13,8 @@ module WXRuby3
|
|
|
13
13
|
|
|
14
14
|
def setup
|
|
15
15
|
spec.items << 'wxIconBundle'
|
|
16
|
+
spec.gc_as_untracked 'wxIcon'
|
|
17
|
+
spec.gc_as_untracked 'wxIconBundle'
|
|
16
18
|
spec.disable_proxies
|
|
17
19
|
spec.require_app 'wxIcon', 'wxIconBundle'
|
|
18
20
|
# disable as there is no way to distinguish char*/[] from wxString in Ruby
|
|
@@ -14,7 +14,8 @@ module WXRuby3
|
|
|
14
14
|
spec.disable_proxies
|
|
15
15
|
spec.items << 'wxLanguageInfo' << 'language.h'
|
|
16
16
|
spec.gc_as_object('wxLocale')
|
|
17
|
-
spec.
|
|
17
|
+
spec.gc_as_untracked('wxLanguageInfo')
|
|
18
|
+
spec.make_concrete 'wxLanguageInfo'
|
|
18
19
|
spec.regard %w[
|
|
19
20
|
wxLanguageInfo::Language
|
|
20
21
|
wxLanguageInfo::LocaleTag
|
|
@@ -12,6 +12,7 @@ module WXRuby3
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
14
|
spec.disable_proxies
|
|
15
|
+
spec.gc_as_untracked 'wxPalette'
|
|
15
16
|
if Config.instance.wx_port == :wxQT
|
|
16
17
|
# mismatched implementation which does nothing anyway
|
|
17
18
|
spec.ignore 'wxPalette::wxPalette(int, const unsigned char *, const unsigned char *, const unsigned char *)'
|
data/rakelib/lib/director/pen.rb
CHANGED
|
@@ -12,7 +12,8 @@ module WXRuby3
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
14
|
spec.items << 'wxPenInfo'
|
|
15
|
-
spec.
|
|
15
|
+
spec.gc_as_untracked 'wxPenInfo'
|
|
16
|
+
spec.gc_as_untracked 'wxPen'
|
|
16
17
|
spec.disable_proxies
|
|
17
18
|
spec.add_header_code <<~__HEREDOC
|
|
18
19
|
// special free funcs are needed to clean up Dashes array if it has been
|
|
@@ -26,7 +26,7 @@ module WXRuby3
|
|
|
26
26
|
'wxEnumProperty::wxEnumProperty(const wxString &, const wxString &, const wxChar *const *, const long *, wxPGChoices *, int)'
|
|
27
27
|
spec.ignore 'wxEditEnumProperty::wxEditEnumProperty(const wxString &, const wxString &, const wxChar *const *, const long *, const wxString&)',
|
|
28
28
|
'wxEditEnumProperty::wxEditEnumProperty(const wxString &, const wxString &, const wxChar *const *, const long *, wxPGChoices *, const wxString&)'
|
|
29
|
-
spec.
|
|
29
|
+
spec.gc_as_untracked 'wxColourPropertyValue'
|
|
30
30
|
spec.regard 'wxColourPropertyValue::m_type',
|
|
31
31
|
'wxColourPropertyValue::m_colour'
|
|
32
32
|
spec.regard 'wxSystemColourProperty::Init',
|
|
@@ -29,7 +29,7 @@ module WXRuby3
|
|
|
29
29
|
'drawn_height' => 'wxPGPaintData::m_drawnHeight'
|
|
30
30
|
# wxPGChoices are always returned by value and never transfer ownership
|
|
31
31
|
# so we do not need tracking or special free function
|
|
32
|
-
spec.
|
|
32
|
+
spec.gc_as_untracked 'wxPGChoices'
|
|
33
33
|
# prevent exposure of wxPGChoicesData; not of any real use in wxRuby
|
|
34
34
|
spec.ignore 'wxPGChoices::wxPGChoices(wxPGChoicesData*)',
|
|
35
35
|
'wxPGChoices::AssignData',
|
|
@@ -12,7 +12,7 @@ module WXRuby3
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
14
|
spec.items << 'propgrid/propgrid.h'
|
|
15
|
-
spec.
|
|
15
|
+
spec.gc_as_untracked 'wxPGValidationInfo'
|
|
16
16
|
if Config.instance.wx_version < '3.3.0'
|
|
17
17
|
spec.ignore 'wxPGVFBFlags' # not a constant but a rather a clumsy typedef
|
|
18
18
|
end
|
|
@@ -11,7 +11,7 @@ module WXRuby3
|
|
|
11
11
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
|
-
spec.
|
|
14
|
+
spec.gc_as_untracked
|
|
15
15
|
spec.disable_proxies # fixed and final data structures
|
|
16
16
|
spec.items << 'wxPrintDialogData' << 'wxPageSetupDialogData'
|
|
17
17
|
spec.ignore 'wxPrintDialogData::SetSetupDialog' # deprecated since 2.5.4
|
|
@@ -19,7 +19,7 @@ module WXRuby3
|
|
|
19
19
|
|
|
20
20
|
def setup
|
|
21
21
|
super
|
|
22
|
-
spec.
|
|
22
|
+
spec.gc_as_untracked 'wxPropertyGridInterface' # actually no GC control necessary as this is a mixin only
|
|
23
23
|
# turn wxPropertyGridInterface into a mixin module
|
|
24
24
|
spec.make_mixin 'wxPropertyGridInterface'
|
|
25
25
|
# add typedef to work around flaky define in wxWidgets
|
|
@@ -13,7 +13,7 @@ module WXRuby3
|
|
|
13
13
|
super
|
|
14
14
|
spec.items << 'wxPropertyGridHitTestResult'
|
|
15
15
|
spec.gc_never 'wxPropertyGridPageState'
|
|
16
|
-
spec.
|
|
16
|
+
spec.gc_as_untracked 'wxPropertyGridHitTestResult'
|
|
17
17
|
spec.make_abstract 'wxPropertyGridPageState'
|
|
18
18
|
spec.disable_proxies
|
|
19
19
|
spec.ignore 'wxPropertyGridPageState::DoDelete',
|
|
@@ -13,7 +13,7 @@ module WXRuby3
|
|
|
13
13
|
spec.items << 'wxRibbonPageTabInfo' << 'wxRibbonMSWArtProvider' << 'wxRibbonAUIArtProvider'
|
|
14
14
|
super
|
|
15
15
|
spec.gc_as_object 'wxRibbonArtProvider'
|
|
16
|
-
spec.
|
|
16
|
+
spec.gc_as_untracked 'wxRibbonPageTabInfo'
|
|
17
17
|
spec.suppress_warning(473,
|
|
18
18
|
'wxRibbonArtProvider::Clone',
|
|
19
19
|
'wxRibbonMSWArtProvider::Clone',
|
|
@@ -20,13 +20,11 @@ module WXRuby3
|
|
|
20
20
|
# we only allow Ruby derivatives from wxDataObject but not of any of the C++ implemented
|
|
21
21
|
# specializations
|
|
22
22
|
spec.no_proxy 'wxRichTextBufferDataObject'
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
%feature("notabstract") wxRichTextBufferDataObject;
|
|
29
|
-
__HEREDOC
|
|
23
|
+
# SWIG gets confused and doesn't realise that various virtual methods
|
|
24
|
+
# from wxDataObject are implemented fully in this subclass, and so,
|
|
25
|
+
# believing it to be abstract doesn't provide an allocator for this
|
|
26
|
+
# class. This overrides this.
|
|
27
|
+
spec.make_concrete 'wxRichTextBufferDataObject'
|
|
30
28
|
|
|
31
29
|
# ignore overrrides (will be available through base class)
|
|
32
30
|
spec.ignore 'wxRichTextBufferDataObject::GetPreferredFormat'
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
require_relative './window'
|
|
7
|
+
|
|
8
|
+
module WXRuby3
|
|
9
|
+
|
|
10
|
+
class Director
|
|
11
|
+
|
|
12
|
+
class SearchCtrl < Window
|
|
13
|
+
|
|
14
|
+
def setup
|
|
15
|
+
super
|
|
16
|
+
# mixin TextEntry
|
|
17
|
+
spec.include_mixin 'wxSearchCtrl', 'Wx::TextEntry'
|
|
18
|
+
spec.override_inheritance_chain('wxSearchCtrl', %w[wxControl wxWindow wxEvtHandler wxObject])
|
|
19
|
+
end
|
|
20
|
+
end # class SearchCtrl
|
|
21
|
+
|
|
22
|
+
end # class Director
|
|
23
|
+
|
|
24
|
+
end # module WXRuby3
|
|
@@ -15,7 +15,7 @@ module WXRuby3
|
|
|
15
15
|
case spec.module_name
|
|
16
16
|
when 'wxSizer'
|
|
17
17
|
spec.items << 'wxSizerFlags'
|
|
18
|
-
spec.
|
|
18
|
+
spec.gc_as_untracked('wxSizerFlags')
|
|
19
19
|
spec.make_abstract('wxSizer')
|
|
20
20
|
spec.ignore %w[wxSizer::IsShown wxSizer::SetVirtualSizeHints]
|
|
21
21
|
# cannot use these with wxRuby
|
|
@@ -44,7 +44,7 @@ module WXRuby3
|
|
|
44
44
|
spec.suppress_warning(517, 'wxSizer')
|
|
45
45
|
when 'wxGridBagSizer'
|
|
46
46
|
spec.items << 'wxGBSpan' << 'wxGBPosition'
|
|
47
|
-
spec.
|
|
47
|
+
spec.gc_as_untracked 'wxGBSpan', 'wxGBPosition'
|
|
48
48
|
# cannot use this with wxRuby
|
|
49
49
|
spec.ignore 'wxGridBagSizer::Add(wxGBSizerItem *)'
|
|
50
50
|
end
|
|
@@ -14,6 +14,8 @@ module WXRuby3
|
|
|
14
14
|
def setup
|
|
15
15
|
super
|
|
16
16
|
spec.override_inheritance_chain('wxStyledTextCtrl', %w[wxControl wxWindow wxEvtHandler wxObject])
|
|
17
|
+
# mixin TextEntry
|
|
18
|
+
spec.include_mixin 'wxStyledTextCtrl', 'Wx::TextEntry'
|
|
17
19
|
spec.map 'int *', 'long *', as: 'Integer' do
|
|
18
20
|
map_in ignore: true, temp: '$*1_ltype a', code: '$1 = &a;'
|
|
19
21
|
map_argout code: <<~__CODE
|
|
@@ -12,8 +12,8 @@ module WXRuby3
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
14
|
spec.items << 'wxTextCompleter' << 'wxTextCompleterSimple'
|
|
15
|
-
spec.
|
|
16
|
-
spec.
|
|
15
|
+
spec.gc_as_untracked 'wxTextCompleter', 'wxTextCompleterSimple'
|
|
16
|
+
spec.gc_as_untracked 'wxTextEntry' # actually no GC control necessary as this is a mixin only
|
|
17
17
|
# turn wxTextEntry into a mixin module
|
|
18
18
|
spec.make_mixin 'wxTextEntry'
|
|
19
19
|
spec.disown 'wxTextCompleter *completer' # managed by wxWidgets after passing in
|
|
@@ -194,10 +194,13 @@ module WXRuby3
|
|
|
194
194
|
else // Find the top-left most item, then recurse over it and siblings
|
|
195
195
|
{
|
|
196
196
|
wxTreeItemId base_id = FindFirstRoot(tree_ctrl);
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
if (base_id.IsOk())
|
|
198
|
+
{
|
|
199
|
+
// now do recursion
|
|
200
200
|
RecurseOverTreeIds(tree_ctrl, base_id, *rec_func);
|
|
201
|
+
while ((base_id = tree_ctrl->GetNextSibling(base_id)).IsOk())
|
|
202
|
+
RecurseOverTreeIds(tree_ctrl, base_id, *rec_func);
|
|
203
|
+
}
|
|
201
204
|
return;
|
|
202
205
|
}
|
|
203
206
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
module WXRuby3
|
|
7
|
+
|
|
8
|
+
class Director
|
|
9
|
+
|
|
10
|
+
class UIActionSimulator < Director
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
super
|
|
14
|
+
spec.gc_as_untracked # no tracking
|
|
15
|
+
end
|
|
16
|
+
end # class UIActionSimulator
|
|
17
|
+
|
|
18
|
+
end # class Director
|
|
19
|
+
|
|
20
|
+
end # module WXRuby3
|
|
@@ -15,7 +15,7 @@ module WXRuby3
|
|
|
15
15
|
super
|
|
16
16
|
# variants are (almost) always returned by value and never transfer ownership
|
|
17
17
|
# so we do not need tracking or special free function
|
|
18
|
-
spec.
|
|
18
|
+
spec.gc_as_untracked 'wxVariant'
|
|
19
19
|
spec.disable_proxies
|
|
20
20
|
# add custom wxVariant extensions so to be
|
|
21
21
|
# able to handle all PGProperty specific value types
|
|
@@ -38,6 +38,31 @@ module WXRuby3
|
|
|
38
38
|
__HEREDOC
|
|
39
39
|
# make Ruby director and wrappers use custom implementation
|
|
40
40
|
spec.use_class_implementation('wxVListBox', 'wxRubyVListBox')
|
|
41
|
+
# make sure protected methods are included
|
|
42
|
+
spec.regard 'wxVListBox::OnDrawItem',
|
|
43
|
+
'wxVListBox::OnMeasureItem',
|
|
44
|
+
'wxVListBox::OnDrawSeparator',
|
|
45
|
+
'wxVListBox::OnDrawBackground'
|
|
46
|
+
# ignore these very un-Ruby methods
|
|
47
|
+
spec.ignore 'wxVListBox::GetFirstSelected',
|
|
48
|
+
'wxVListBox::GetNextSelected'
|
|
49
|
+
# add rubified API (finish in pure Ruby)
|
|
50
|
+
spec.add_extend_code 'wxVListBox', <<~__HEREDOC
|
|
51
|
+
VALUE each_selected()
|
|
52
|
+
{
|
|
53
|
+
VALUE rc = Qnil;
|
|
54
|
+
if (rb_block_given_p())
|
|
55
|
+
{
|
|
56
|
+
unsigned long cookie;
|
|
57
|
+
int sel = $self->GetFirstSelected(cookie);
|
|
58
|
+
for (; sel != wxNOT_FOUND ;sel = $self->GetNextSelected(cookie))
|
|
59
|
+
{
|
|
60
|
+
rc = rb_yield (INT2NUM(sel));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return rc;
|
|
64
|
+
}
|
|
65
|
+
__HEREDOC
|
|
41
66
|
end
|
|
42
67
|
end # class VListBox
|
|
43
68
|
|
|
@@ -172,8 +172,6 @@ module WXRuby3
|
|
|
172
172
|
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(r_class);
|
|
173
173
|
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ptr_dc), swig_type, 0);
|
|
174
174
|
rc = rb_yield(rb_dc);
|
|
175
|
-
SWIG_RubyRemoveTracking((void *)ptr_dc);
|
|
176
|
-
DATA_PTR(rb_dc) = NULL;
|
|
177
175
|
|
|
178
176
|
return rc;
|
|
179
177
|
}
|
|
@@ -201,16 +199,12 @@ module WXRuby3
|
|
|
201
199
|
wxPaintDC dc(ptr);
|
|
202
200
|
VALUE dcVal = SWIG_NewPointerObj((void *) &dc,SWIGTYPE_p_wxPaintDC, 0);
|
|
203
201
|
rc = rb_yield(dcVal);
|
|
204
|
-
SWIG_RubyRemoveTracking((void *) &dc);
|
|
205
|
-
DATA_PTR(dcVal) = NULL;
|
|
206
202
|
}
|
|
207
203
|
else // supply a ClientDC
|
|
208
204
|
{
|
|
209
205
|
wxClientDC dc(ptr);
|
|
210
206
|
VALUE dcVal = SWIG_NewPointerObj((void *) &dc,SWIGTYPE_p_wxClientDC, 0);
|
|
211
207
|
rc = rb_yield(dcVal);
|
|
212
|
-
SWIG_RubyRemoveTracking((void *) &dc);
|
|
213
|
-
DATA_PTR(dcVal) = NULL;
|
|
214
208
|
}
|
|
215
209
|
|
|
216
210
|
return rc;
|
|
@@ -11,7 +11,7 @@ module WXRuby3
|
|
|
11
11
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
|
-
spec.
|
|
14
|
+
spec.gc_as_untracked 'wxWithImages' # actually no GC control necessary as this is a mixin only
|
|
15
15
|
# turn wxWithImages into a mixin module
|
|
16
16
|
spec.make_mixin 'wxWithImages'
|
|
17
17
|
# Avoid premature deletion of ImageList providing icons for notebook
|
|
@@ -12,7 +12,7 @@ module WXRuby3
|
|
|
12
12
|
def setup
|
|
13
13
|
super
|
|
14
14
|
spec.disable_proxies
|
|
15
|
-
spec.
|
|
15
|
+
spec.gc_as_untracked
|
|
16
16
|
spec.disown 'wxXmlNode *child'
|
|
17
17
|
# ignore this; only allow adding child node by explicitly calling Add/Insert-child methods (easier on the GC handling and avoids wxXmlAttribute)
|
|
18
18
|
spec.ignore 'wxXmlNode::wxXmlNode(wxXmlNode *, wxXmlNodeType, const wxString &, const wxString &, wxXmlAttribute *, wxXmlNode *, int)'
|
|
@@ -91,9 +91,9 @@ module WXRuby3
|
|
|
91
91
|
# unlink params_doc if any
|
|
92
92
|
params_doc.unlink if params_doc
|
|
93
93
|
# get brief doc
|
|
94
|
-
doc = xml_trans.to_doc(@brief_doc)
|
|
94
|
+
doc = xml_trans.to_doc(@brief_doc, item: self)
|
|
95
95
|
# add detailed doc text without params doc
|
|
96
|
-
doc << xml_trans.to_doc(@detailed_doc)
|
|
96
|
+
doc << xml_trans.to_doc(@detailed_doc, item: self, desc: :detail)
|
|
97
97
|
# get mapped ruby parameter list
|
|
98
98
|
params = []
|
|
99
99
|
mapped_ret_args = nil
|
|
@@ -130,7 +130,9 @@ module WXRuby3
|
|
|
130
130
|
# look up matching mapped param entry
|
|
131
131
|
if (param = params.detect { |p| p[:name] == pinm })
|
|
132
132
|
# add doc
|
|
133
|
-
param[:doc] = xml_trans.to_doc(pi.xpath('parameterdescription')
|
|
133
|
+
param[:doc] = xml_trans.to_doc(pi.xpath('parameterdescription'),
|
|
134
|
+
item: "#{name}.#{param[:name]}",
|
|
135
|
+
desc: :brief).lstrip
|
|
134
136
|
end
|
|
135
137
|
end
|
|
136
138
|
end if params_doc
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxAboutBox:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:para:
|
|
6
|
+
- :pattern: !ruby/regexp /<programlisting>.*MyFrame::ShowSimpleAboutDialog/
|
|
7
|
+
:replace: |
|
|
8
|
+
```ruby
|
|
9
|
+
def show_simple_about_dialog(event)
|
|
10
|
+
info = Wx::AboutDialogInfo.new
|
|
11
|
+
info.name = 'My Program'
|
|
12
|
+
info.version = '1.2.3 Beta'
|
|
13
|
+
info.description = 'This program does something great.'
|
|
14
|
+
info.copyright = '(C) 2007 Me <my@email.addre.ss>'
|
|
15
|
+
|
|
16
|
+
Wx.about_box(info)
|
|
17
|
+
end
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
:wxAboutDialogInfo:
|
|
21
|
+
:detail:
|
|
22
|
+
:pre:
|
|
23
|
+
:para:
|
|
24
|
+
- :pattern: !ruby/regexp /Example of usage:/
|
|
25
|
+
:replace: |
|
|
26
|
+
|
|
27
|
+
Example of usage:
|
|
28
|
+
|
|
29
|
+
```ruby
|
|
30
|
+
def on_about(event)
|
|
31
|
+
info = Wx::AboutDialogInfo.new
|
|
32
|
+
info.name = 'MyApp'
|
|
33
|
+
info.version = MY_APP_VERSION_STRING
|
|
34
|
+
info.description = 'My wxWidgets-based application!'
|
|
35
|
+
info.copyright = '(C) 1992-2023'
|
|
36
|
+
info.add_developer('My Self')
|
|
37
|
+
|
|
38
|
+
Wx.about_box(info)
|
|
39
|
+
end
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
:post:
|
|
43
|
+
- :pattern: !ruby/regexp /Example of appearance of a simple about dialog:(.|\s)+\<\/table>\<\/div>/
|
|
44
|
+
:subst: ''
|
|
45
|
+
- :pattern: !ruby/regexp /And that of a dialog using a web site link,(.|\s)+\<\/table>\<\/div>/
|
|
46
|
+
:subst: ''
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxAcceleratorTable:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:para:
|
|
6
|
+
- :pattern: !ruby/regexp /<programlisting>.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
```ruby
|
|
9
|
+
entries = [
|
|
10
|
+
Wx::AcceleratorEntry.new(Wx::ACCEL_CTRL, 'N', ID_NEW_WINDOW),
|
|
11
|
+
Wx::AcceleratorEntry.new(Wx::ACCEL_CTRL, 'X', Wx::ID_EXIT),
|
|
12
|
+
Wx::AcceleratorEntry.new(Wx::ACCEL_CTRL, 'A', Wx::ID_ABOUT),
|
|
13
|
+
Wx::AcceleratorEntry.new(Wx::ACCEL_CTRL, 'N', Wx::ID_CUT)
|
|
14
|
+
]
|
|
15
|
+
frame.accelerator_table = Wx::AcceleratorTable[entries]
|
|
16
|
+
```
|
|
17
|
+
:wxAcceleratorEntry.wxAcceleratorEntry.keyCode:
|
|
18
|
+
:brief:
|
|
19
|
+
:post:
|
|
20
|
+
- :pattern: !ruby/regexp /The\s+keycode\s+to\s+be\s+detected/
|
|
21
|
+
:subst: 'The keycode (or character) to be detected'
|