wxruby3 0.9.7 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/INSTALL.md +183 -42
- data/README.md +40 -48
- data/ext/mkrf_conf_ext.rb +72 -0
- data/lib/wx/core/app.rb +16 -0
- data/lib/wx/core/colour.rb +36 -28
- data/lib/wx/core/const.rb +19 -0
- data/lib/wx/core/enum.rb +17 -1
- data/lib/wx/core/geometry.rb +121 -0
- data/lib/wx/core/graphics_pen_info.rb +18 -0
- data/lib/wx/core/image.rb +49 -0
- data/lib/wx/core/menu_bar.rb +11 -0
- data/lib/wx/core/paintdc.rb +9 -3
- data/lib/wx/core/secret_store.rb +38 -0
- data/lib/wx/doc/app.rb +97 -41
- data/lib/wx/doc/bitmap.rb +4 -0
- data/lib/wx/doc/client_dc.rb +2 -2
- data/lib/wx/doc/clipboard.rb +1 -1
- data/lib/wx/doc/colour.rb +12 -0
- data/lib/wx/doc/const.rb +16 -0
- data/lib/wx/doc/cursor.rb +4 -0
- data/lib/wx/doc/dc_overlay.rb +34 -0
- data/lib/wx/doc/enum.rb +7 -1
- data/lib/wx/doc/event_blocker.rb +1 -1
- data/lib/wx/doc/evthandler.rb +25 -3
- data/lib/wx/doc/functions.rb +3 -6
- data/lib/wx/doc/gc_dc.rb +13 -4
- data/lib/wx/doc/geometry.rb +136 -0
- data/lib/wx/doc/graphics_context.rb +25 -7
- data/lib/wx/doc/icon.rb +4 -0
- data/lib/wx/doc/image.rb +56 -0
- data/lib/wx/doc/list_ctrl.rb +6 -6
- data/lib/wx/doc/memory_dc.rb +2 -11
- data/lib/wx/doc/mirror_dc.rb +1 -1
- data/lib/wx/doc/pen.rb +26 -0
- data/lib/wx/doc/persistence_manager.rb +1 -1
- data/lib/wx/doc/persistent_object.rb +1 -1
- data/lib/wx/doc/pg/property_grid_interface.rb +3 -3
- data/lib/wx/doc/prt/printer_dc.rb +2 -2
- data/lib/wx/doc/region_iterator.rb +1 -1
- data/lib/wx/doc/scaled_dc.rb +1 -1
- data/lib/wx/doc/screen_dc.rb +1 -1
- data/lib/wx/doc/secret_store.rb +55 -0
- data/lib/wx/doc/svg_file_dc.rb +1 -1
- data/lib/wx/doc/textctrl.rb +1 -1
- data/lib/wx/doc/tree_ctrl.rb +2 -2
- data/lib/wx/doc/validator.rb +6 -6
- data/lib/wx/doc/variant.rb +2 -2
- data/lib/wx/doc/window.rb +5 -4
- data/lib/wx/grid/keyword_defs.rb +1 -1
- data/lib/wx/html/keyword_defs.rb +3 -3
- data/lib/wx/keyword_defs.rb +76 -71
- data/lib/wx/pg/keyword_defs.rb +2 -2
- data/lib/wx/pg/pg_property.rb +12 -0
- data/lib/wx/rbn/keyword_defs.rb +1 -1
- data/lib/wx/rtc/keyword_defs.rb +1 -1
- data/lib/wx/stc/keyword_defs.rb +1 -1
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/base.rb +3 -5
- data/lib/wx/wxruby/cmd/check.rb +182 -0
- data/lib/wx/wxruby/cmd/sampler.rb +1 -1
- data/lib/wx/wxruby/cmd/setup.rb +9 -3
- data/lib/wx/wxruby/cmd/test.rb +1 -1
- data/rakelib/configure.rb +67 -52
- data/rakelib/gem.rake +97 -66
- data/rakelib/gem.rb +294 -41
- data/rakelib/install.rb +3 -3
- data/rakelib/lib/config/{cygwin.rb → freebsd.rb} +1 -1
- data/rakelib/lib/config/linux.rb +4 -2
- data/rakelib/lib/config/macosx.rb +42 -11
- data/rakelib/lib/config/mingw.rb +2 -2
- data/rakelib/lib/config/pkgman/{base.rb → linux.rb} +36 -61
- data/rakelib/lib/config/pkgman/macosx.rb +17 -78
- data/rakelib/lib/config/unixish.rb +17 -8
- data/rakelib/lib/config/{netbsd.rb → unknown.rb} +3 -2
- data/rakelib/lib/config.rb +74 -33
- data/rakelib/lib/core/include/enum.inc +31 -1
- data/rakelib/lib/director/affine_matrix.rb +51 -0
- data/rakelib/lib/director/app.rb +29 -13
- data/rakelib/lib/director/art_provider.rb +4 -0
- data/rakelib/lib/director/aui_manager.rb +1 -1
- data/rakelib/lib/director/cursor.rb +6 -2
- data/rakelib/lib/director/dc.rb +1 -6
- data/rakelib/lib/director/derived_dc.rb +88 -31
- data/rakelib/lib/director/geometry.rb +142 -0
- data/rakelib/lib/director/graphics_context.rb +3 -2
- data/rakelib/lib/director/graphics_object.rb +18 -25
- data/rakelib/lib/director/grid_ctrl.rb +2 -2
- data/rakelib/lib/director/image.rb +59 -0
- data/rakelib/lib/director/menu.rb +2 -3
- data/rakelib/lib/director/menu_bar.rb +0 -3
- data/rakelib/lib/director/pen.rb +1 -1
- data/rakelib/lib/director/richtext_composite_object.rb +2 -4
- data/rakelib/lib/director/richtext_ctrl.rb +1 -1
- data/rakelib/lib/director/secret_store.rb +117 -0
- data/rakelib/lib/director/system_settings.rb +1 -1
- data/rakelib/lib/director/tree_event.rb +2 -2
- data/rakelib/lib/director/window.rb +4 -3
- data/rakelib/lib/extractor/function.rb +1 -1
- data/rakelib/lib/generate/doc/animation_ctrl.yaml +10 -0
- data/rakelib/lib/generate/doc/banner_window.yaml +35 -0
- data/rakelib/lib/generate/doc/graphics_context.yaml +12 -0
- data/rakelib/lib/generate/doc/graphics_object.yaml +12 -0
- data/rakelib/lib/generate/doc/grid_ctrl.yaml +25 -0
- data/rakelib/lib/generate/doc/header_ctrl.yaml +91 -0
- data/rakelib/lib/generate/doc/icon.yaml +10 -0
- data/rakelib/lib/generate/doc/info_bar.yaml +27 -0
- data/rakelib/lib/generate/doc/log.yaml +1 -1
- data/rakelib/lib/generate/doc/media_ctrl.yaml +27 -0
- data/rakelib/lib/generate/doc/persistent_window.yaml +22 -0
- data/rakelib/lib/generate/doc/pg_editor.yaml +1 -1
- data/rakelib/lib/generate/doc/pg_property.yaml +4 -4
- data/rakelib/lib/generate/doc/rearrange_list.yaml +14 -0
- data/rakelib/lib/generate/doc/ribbon_panel.yaml +15 -0
- data/rakelib/lib/generate/doc/rich_text_formatting_dialog.yaml +26 -0
- data/rakelib/lib/generate/doc/secret_store.yaml +55 -0
- data/rakelib/lib/generate/doc/text_ctrl.yaml +1 -1
- data/rakelib/lib/generate/doc/wizard.yaml +27 -0
- data/rakelib/lib/generate/doc.rb +5 -5
- data/rakelib/lib/generate/interface.rb +1 -1
- data/rakelib/lib/specs/interfaces.rb +4 -0
- data/rakelib/lib/swig_runner.rb +24 -3
- data/rakelib/lib/typemap/common.rb +10 -0
- data/rakelib/lib/typemap/points_list.rb +8 -2
- data/rakelib/lib/typemap/richtext.rb +17 -0
- data/rakelib/prepost.rake +8 -1
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +4 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +3 -3
- data/samples/dialogs/wizard.rb +20 -19
- data/samples/drawing/art/drawing/image.bmp +0 -0
- data/samples/drawing/art/drawing/mask.bmp +0 -0
- data/samples/drawing/art/drawing/pat35.bmp +0 -0
- data/samples/drawing/art/drawing/pat36.bmp +0 -0
- data/samples/drawing/art/drawing/pat4.bmp +0 -0
- data/samples/drawing/art/drawing/smile.xpm +42 -0
- data/samples/drawing/drawing.rb +2276 -0
- data/samples/drawing/tn_drawing.png +0 -0
- data/samples/html/html.rb +1 -1
- data/samples/propgrid/propgrid.rb +1 -1
- data/samples/propgrid/propgrid_minimal.rb +1 -1
- data/samples/propgrid/sample_props.rb +1 -1
- data/samples/sampler/editor.rb +13 -11
- data/samples/sampler/sample.rb +2 -0
- data/samples/sampler.rb +14 -10
- data/samples/text/richtext.rb +53 -0
- data/samples/text/scintilla.rb +1 -1
- data/samples/text/unicode.rb +4 -4
- data/tests/lib/wxapp_runner.rb +1 -1
- data/tests/test_config.rb +7 -4
- data/tests/test_ext_controls.rb +12 -5
- data/tests/test_secret_store.rb +83 -0
- data/tests/test_std_controls.rb +12 -12
- metadata +66 -47
- data/lib/wx/doc/extra/00_starting.md +0 -154
- data/lib/wx/doc/extra/01_packages.md +0 -180
- data/lib/wx/doc/extra/02_lifecycles.md +0 -166
- data/lib/wx/doc/extra/03_dialogs.md +0 -57
- data/lib/wx/doc/extra/04_enums.md +0 -143
- data/lib/wx/doc/extra/05_event-handling.md +0 -191
- data/lib/wx/doc/extra/06_geometry.md +0 -62
- data/lib/wx/doc/extra/07_colour_and_font.md +0 -52
- data/lib/wx/doc/extra/08_extensions.md +0 -144
- data/lib/wx/doc/extra/09_exceptions.md +0 -54
- data/lib/wx/doc/extra/10_art.md +0 -111
- data/lib/wx/doc/extra/11_drawing_and_dc.md +0 -62
- data/lib/wx/doc/extra/12_client_data.md +0 -89
- data/lib/wx/doc/extra/13_validators.md +0 -139
- data/lib/wx/doc/extra/14_config.md +0 -101
- data/lib/wx/doc/extra/15_persistence.md +0 -148
- data/rakefile +0 -14
- data/rakelib/lib/config/pkgman/arch.rb +0 -53
- data/rakelib/lib/config/pkgman/debian.rb +0 -66
- data/rakelib/lib/config/pkgman/rhel.rb +0 -54
- data/rakelib/lib/config/pkgman/suse.rb +0 -54
- data/samples/sampler/back.xpm +0 -21
- data/samples/sampler/copy.xpm +0 -44
- data/samples/sampler/cut.xpm +0 -46
- data/samples/sampler/filesave.xpm +0 -42
- data/samples/sampler/find.xpm +0 -62
- data/samples/sampler/findrepl.xpm +0 -63
- data/samples/sampler/forward.xpm +0 -21
- data/samples/sampler/paste.xpm +0 -46
- data/samples/sampler/redo.xpm +0 -58
- data/samples/sampler/undo.xpm +0 -58
|
@@ -0,0 +1,117 @@
|
|
|
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 SecretStore < Director
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
super
|
|
17
|
+
spec.items << 'wxSecretValue'
|
|
18
|
+
spec.gc_as_untracked # don't even track SecretStore and SecretValue objects
|
|
19
|
+
# there is no possibility of SecretStore derivatives
|
|
20
|
+
# not least because wxRuby only ever allows a single global SecretStore
|
|
21
|
+
spec.disable_proxies
|
|
22
|
+
spec.make_abstract 'wxSecretStore'
|
|
23
|
+
|
|
24
|
+
spec.include 'ruby/encoding.h'
|
|
25
|
+
|
|
26
|
+
spec.ignore 'wxSecretValue::GetAsString',
|
|
27
|
+
'wxSecretValue::GetSize',
|
|
28
|
+
'wxSecretValue::GetData',
|
|
29
|
+
'wxSecretValue::Wipe',
|
|
30
|
+
'wxSecretValue::WipeString',
|
|
31
|
+
'wxSecretValue::wxSecretValue(const wxString&)',
|
|
32
|
+
'wxSecretValue::wxSecretValue(size_t, const void *)'
|
|
33
|
+
spec.regard 'wxSecretValue::wxSecretValue()',
|
|
34
|
+
'wxSecretValue::wxSecretValue(const wxSecretValue&)',
|
|
35
|
+
regard_doc: false
|
|
36
|
+
# customize string arg ctor
|
|
37
|
+
spec.add_extend_code 'wxSecretValue', <<~__HEREDOC
|
|
38
|
+
wxSecretValue(VALUE secret_string)
|
|
39
|
+
{
|
|
40
|
+
if (RTEST(secret_string) && TYPE(secret_string) == T_STRING)
|
|
41
|
+
{
|
|
42
|
+
if (ENCODING_GET(secret_string) == rb_utf8_encindex())
|
|
43
|
+
{
|
|
44
|
+
return new wxSecretValue(RSTR_TO_WXSTR(secret_string));
|
|
45
|
+
}
|
|
46
|
+
else
|
|
47
|
+
{
|
|
48
|
+
return new wxSecretValue(RSTRING_LEN(secret_string), (void*)StringValuePtr(secret_string));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else
|
|
52
|
+
{
|
|
53
|
+
rb_raise(rb_eArgError, "Expected String or Wx::SecretValue for #0");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
__HEREDOC
|
|
57
|
+
|
|
58
|
+
# customize GetData
|
|
59
|
+
spec.map 'const void*' => 'String', swig: false do
|
|
60
|
+
map_out code: ''
|
|
61
|
+
end
|
|
62
|
+
spec.add_extend_code 'wxSecretValue', <<~__HEREDOC
|
|
63
|
+
VALUE get_data()
|
|
64
|
+
{
|
|
65
|
+
size_t sz = $self->GetSize();
|
|
66
|
+
const void* data = $self->GetData();
|
|
67
|
+
return rb_enc_str_new(static_cast<const char*>(data), sz, rb_ascii8bit_encoding());
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
VALUE get_as_string()
|
|
71
|
+
{
|
|
72
|
+
size_t sz = $self->GetSize();
|
|
73
|
+
const void* data = $self->GetData();
|
|
74
|
+
return rb_utf8_str_new(static_cast<const char*>(data), sz);
|
|
75
|
+
}
|
|
76
|
+
__HEREDOC
|
|
77
|
+
|
|
78
|
+
# customize GetDefault
|
|
79
|
+
spec.ignore 'wxSecretStore::GetDefault', ignore_doc: false
|
|
80
|
+
spec.add_extend_code 'wxSecretStore', <<~__HEREDOC
|
|
81
|
+
static VALUE get_default()
|
|
82
|
+
{
|
|
83
|
+
wxSecretStore* result = new wxSecretStore(wxSecretStore::GetDefault());
|
|
84
|
+
return SWIG_NewPointerObj(result, SWIGTYPE_p_wxSecretStore, SWIG_POINTER_OWN);
|
|
85
|
+
}
|
|
86
|
+
__HEREDOC
|
|
87
|
+
spec.map 'wxString *errmsg' => 'String' do
|
|
88
|
+
map_in ignore: true, temp: 'wxString tmp', code: '$1 = &tmp;'
|
|
89
|
+
map_argout code: <<~__CODE
|
|
90
|
+
if ($result == Qfalse)
|
|
91
|
+
{
|
|
92
|
+
$result = SWIG_Ruby_AppendOutput($result, WXSTR_TO_RSTR(tmp$argnum));
|
|
93
|
+
}
|
|
94
|
+
__CODE
|
|
95
|
+
end
|
|
96
|
+
spec.map 'wxString& username' => 'String' do
|
|
97
|
+
map_in ignore: true, temp: 'wxString tmp', code: '$1 = &tmp;'
|
|
98
|
+
map_argout code: <<~__CODE
|
|
99
|
+
if ($result == Qtrue)
|
|
100
|
+
{
|
|
101
|
+
$result = SWIG_Ruby_AppendOutput($result, WXSTR_TO_RSTR(tmp$argnum));
|
|
102
|
+
}
|
|
103
|
+
__CODE
|
|
104
|
+
end
|
|
105
|
+
# the type matching of the username argument is tricky here since there only is the const difference
|
|
106
|
+
# have to explicitly overrule here for Save() incl. explicitly negating the argout mapping
|
|
107
|
+
spec.map 'const wxString& username' => 'String' do
|
|
108
|
+
map_in temp: 'wxString tmp', code: 'tmp = RSTR_TO_WXSTR($input); $1 = &tmp;'
|
|
109
|
+
map_argout by_ref: true
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
end # class SecretStore
|
|
114
|
+
|
|
115
|
+
end # class Director
|
|
116
|
+
|
|
117
|
+
end # module WXRuby3
|
|
@@ -22,7 +22,7 @@ module WXRuby3
|
|
|
22
22
|
'wxSystemSettings::HasFeature',
|
|
23
23
|
'wxSystemSettings::GetScreenType'
|
|
24
24
|
spec.ignore 'wxSystemSettings::GetAppearance'
|
|
25
|
-
spec.add_extend_code <<~__HEREDOC
|
|
25
|
+
spec.add_extend_code 'wxSystemSettings', <<~__HEREDOC
|
|
26
26
|
static wxString GetAppearanceName()
|
|
27
27
|
{
|
|
28
28
|
return wxSystemSettings::GetAppearance().GetName();
|
|
@@ -55,9 +55,9 @@ module WXRuby3
|
|
|
55
55
|
static const rb_data_type_t __wxTreeItemId_type = {
|
|
56
56
|
"TreeItemId",
|
|
57
57
|
#if RUBY_API_VERSION_MAJOR >= 3
|
|
58
|
-
{ NULL, NULL, __wxTreeItemId_size, 0,
|
|
58
|
+
{ NULL, NULL, __wxTreeItemId_size, 0, {}},
|
|
59
59
|
#else
|
|
60
|
-
{ NULL, NULL, __wxTreeItemId_size,
|
|
60
|
+
{ NULL, NULL, __wxTreeItemId_size, {}},
|
|
61
61
|
#endif
|
|
62
62
|
NULL, NULL, RUBY_TYPED_FREE_IMMEDIATELY
|
|
63
63
|
};
|
|
@@ -150,13 +150,14 @@ module WXRuby3
|
|
|
150
150
|
static VALUE do_paint_buffered(wxWindow* ptr)
|
|
151
151
|
{
|
|
152
152
|
VALUE rc = Qnil;
|
|
153
|
-
wxAutoBufferedPaintDC dc(ptr);
|
|
154
153
|
#if wxALWAYS_NATIVE_DOUBLE_BUFFER
|
|
154
|
+
wxPaintDC dc(ptr);
|
|
155
155
|
wxPaintDC* ptr_dc = &dc;
|
|
156
156
|
VALUE r_class = rb_const_get(mWxCore, rb_intern("PaintDC"));
|
|
157
157
|
#else
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
wxBufferedPaintDC dc(ptr);
|
|
159
|
+
wxBufferedPaintDC* ptr_dc = &dc;
|
|
160
|
+
VALUE r_class = rb_const_get(mWxCore, rb_intern("BufferedPaintDC"));
|
|
160
161
|
#endif
|
|
161
162
|
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(r_class);
|
|
162
163
|
VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ptr_dc), swig_type, 0);
|
|
@@ -293,7 +293,7 @@ module WXRuby3
|
|
|
293
293
|
@is_static = element['static'] == 'yes'
|
|
294
294
|
@is_virtual = %w[virtual pure-virtual].include?(element['virt'])
|
|
295
295
|
@is_pure_virtual = (element['virt'] == 'pure-virtual')
|
|
296
|
-
@args_string.sub!(/\s*=0/, '') if @is_pure_virtual
|
|
296
|
+
@args_string.sub!(/\)(\s*const)?\s*=0/, ')\1') if @is_pure_virtual
|
|
297
297
|
@is_override = !!element.at_xpath('reimplements')
|
|
298
298
|
@is_const = (element['const'] == 'yes')
|
|
299
299
|
@is_ctor = (@name == @class_name)
|
|
@@ -13,3 +13,13 @@
|
|
|
13
13
|
animations.add("throbber_2x.gif")
|
|
14
14
|
animationCtrl.play if animationCtrl.set_animation(animations)
|
|
15
15
|
```
|
|
16
|
+
:wxAnimationCtrl.SetAnimation:
|
|
17
|
+
:detail:
|
|
18
|
+
:pre:
|
|
19
|
+
:programlisting:
|
|
20
|
+
- :pattern: !ruby/regexp /.*/
|
|
21
|
+
:replace: |
|
|
22
|
+
|
|
23
|
+
```ruby
|
|
24
|
+
animationCtrl.set_animation(Wx::AnimationBundle.new('progress.gif'))
|
|
25
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxBannerWindow:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
class MyFrame < Wx::Frame
|
|
11
|
+
|
|
12
|
+
def initialize(...)
|
|
13
|
+
|
|
14
|
+
# ... create the frame itself ...
|
|
15
|
+
|
|
16
|
+
# Create and initialize the banner.
|
|
17
|
+
banner = Wx::BannerWindow.new(self, Wx::TOP)
|
|
18
|
+
banner.set_text("Welcome to my wonderful program",
|
|
19
|
+
" Before doing anything else, you need to connect to the online server.\n" +
|
|
20
|
+
" Please enter your credentials in the controls below.")
|
|
21
|
+
|
|
22
|
+
# And position it along the top edge of the window.
|
|
23
|
+
sizer = Wx::VBoxSizer.new
|
|
24
|
+
sizer.add(banner, Wx::SizerFlags.new.expand)
|
|
25
|
+
|
|
26
|
+
# ... add the rest of the window contents to the same sizer ...
|
|
27
|
+
|
|
28
|
+
set_sizer_and_fit(sizer)
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# ...
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
```
|
|
@@ -32,3 +32,15 @@
|
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
```
|
|
35
|
+
:wxGraphicsPenInfo:
|
|
36
|
+
:detail:
|
|
37
|
+
:pre:
|
|
38
|
+
:programlisting:
|
|
39
|
+
- :pattern: !ruby/regexp /.*/
|
|
40
|
+
:replace: |
|
|
41
|
+
|
|
42
|
+
```ruby
|
|
43
|
+
ctx = Wx::GraphicsContext.create(dc)
|
|
44
|
+
|
|
45
|
+
ctx.set_pen(Wx::GraphicsPenInfo.new(Wx::BLUE).width(1.25).style(Wx::PENSTYLE_DOT))
|
|
46
|
+
```
|
|
@@ -23,3 +23,28 @@
|
|
|
23
23
|
|
|
24
24
|
end
|
|
25
25
|
```
|
|
26
|
+
:wxGrid.GetSelectedBlocks:
|
|
27
|
+
:detail:
|
|
28
|
+
:pre:
|
|
29
|
+
:programlisting:
|
|
30
|
+
- :pattern: !ruby/regexp /.*/
|
|
31
|
+
:replace: |
|
|
32
|
+
|
|
33
|
+
```ruby
|
|
34
|
+
grid.get_selected_blocks.each do |gbc|
|
|
35
|
+
break if gbc.intersects(my_block)
|
|
36
|
+
end
|
|
37
|
+
```
|
|
38
|
+
:post:
|
|
39
|
+
- :pattern: !ruby/regexp /,\s+e\.g\.\s+with\s+range-for\s+loop:/
|
|
40
|
+
:subst: ':'
|
|
41
|
+
:wxGridFitMode:
|
|
42
|
+
:detail:
|
|
43
|
+
:pre:
|
|
44
|
+
:programlisting:
|
|
45
|
+
- :pattern: !ruby/regexp /.*/
|
|
46
|
+
:replace: |
|
|
47
|
+
|
|
48
|
+
```ruby
|
|
49
|
+
grid.set_default_cell_fit_mode(Wx::GRID::GridFitMode.clip)
|
|
50
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxHeaderCtrl.Create:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
Wx::HD_DEFAULT_STYLE & ~Wx::HD_ALLOW_REORDER
|
|
11
|
+
```
|
|
12
|
+
:wxHeaderCtrl.AddColumnsItems:
|
|
13
|
+
:detail:
|
|
14
|
+
:pre:
|
|
15
|
+
:programlisting:
|
|
16
|
+
- :pattern: !ruby/regexp /.*/
|
|
17
|
+
:replace: |
|
|
18
|
+
|
|
19
|
+
```ruby
|
|
20
|
+
menu = Wx::Menu.new
|
|
21
|
+
menu.append(100, 'Some custom command')
|
|
22
|
+
menu.append_separator
|
|
23
|
+
add_columns_items(menu, 200)
|
|
24
|
+
rc = get_popup_menu_selection_from_user(menu, pt)
|
|
25
|
+
if rc >= 200
|
|
26
|
+
# ... toggle visibility of the column rc-200 ...
|
|
27
|
+
end
|
|
28
|
+
```
|
|
29
|
+
:wxHeaderCtrl.UpdateColumnWidthToFit:
|
|
30
|
+
:detail:
|
|
31
|
+
:pre:
|
|
32
|
+
:programlisting:
|
|
33
|
+
- :pattern: !ruby/regexp /.*/
|
|
34
|
+
:replace: |
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
class MyHeaderColumn < Wx::HeaderColumn
|
|
38
|
+
# ...
|
|
39
|
+
|
|
40
|
+
def set_width(width)
|
|
41
|
+
@width = width
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def get_width
|
|
45
|
+
@width
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
class MyHeaderCtrl < Wx::HeaderCtrl
|
|
51
|
+
# ...
|
|
52
|
+
|
|
53
|
+
protected
|
|
54
|
+
|
|
55
|
+
def get_column(idx)
|
|
56
|
+
# @cols = Array<MyHeaderColumn>
|
|
57
|
+
@cols[idx]
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def update_column_width_to_fit(idx, widthTitle)
|
|
61
|
+
widthContents = # ... compute minimal width for column idx ...
|
|
62
|
+
@cols[idx].set_width([widthContents, widthTitle].max)
|
|
63
|
+
true
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
```
|
|
68
|
+
:wxHeaderCtrlSimple.HideColumn:
|
|
69
|
+
:detail:
|
|
70
|
+
:pre:
|
|
71
|
+
:programlisting:
|
|
72
|
+
- :pattern: !ruby/regexp /.*/
|
|
73
|
+
:replace: |
|
|
74
|
+
|
|
75
|
+
```ruby
|
|
76
|
+
show_column(idx, false)
|
|
77
|
+
```
|
|
78
|
+
:wxHeaderColumnSimple:
|
|
79
|
+
:detail:
|
|
80
|
+
:pre:
|
|
81
|
+
:programlisting:
|
|
82
|
+
- :pattern: !ruby/regexp /.*/
|
|
83
|
+
:replace: |
|
|
84
|
+
|
|
85
|
+
```ruby
|
|
86
|
+
header = Wx::HeaderCtrlSimple.new(...)
|
|
87
|
+
col = Wx::HeaderColumnSimple.new('Title')
|
|
88
|
+
col.set_width(100)
|
|
89
|
+
col.set_sortable(100)
|
|
90
|
+
header.append_column(col)
|
|
91
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxInfoBar:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
class MyFrame < Wx::Frame
|
|
11
|
+
|
|
12
|
+
def initialize()
|
|
13
|
+
# ...
|
|
14
|
+
@infoBar = Wx::InfoBar.new(self)
|
|
15
|
+
|
|
16
|
+
sizer = Wx::VBoxSizer.new
|
|
17
|
+
sizer.add(@infoBar, Wx::SizerFlags.new.expand)
|
|
18
|
+
# ... add other frame controls to the sizer ...
|
|
19
|
+
set_sizer(sizer)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def some_method
|
|
23
|
+
@infoBar.show_message('Something happened', Wx::ICON_INFORMATION)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxMediaCtrl:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
class MyFrame < Wx::Frame
|
|
11
|
+
|
|
12
|
+
def initialize()
|
|
13
|
+
# ... setup frame controls ...
|
|
14
|
+
# bind events
|
|
15
|
+
# ...
|
|
16
|
+
evt_media_stop MY_ID, :on_media_stop
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def on_media_stop(evt)
|
|
20
|
+
if @userWantsToSeek
|
|
21
|
+
@mediactrl.seek(@mediactrl.length - 1)
|
|
22
|
+
evt.veto
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxPersistentComboBox:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
# Suppose you need to ask the user to select their favourite Linux
|
|
11
|
+
# distribution, for some reason:
|
|
12
|
+
combo = Wx::ComboBox.new(self, Wx::ID_ANY)
|
|
13
|
+
unless Wx.persistent_register_and_restore(combo, 'distribution')
|
|
14
|
+
# Seed it with some default contents.
|
|
15
|
+
combo.append("Debian")
|
|
16
|
+
combo.append("Fedora")
|
|
17
|
+
combo.append("Ubuntu")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Optionally, you might want to restore the last used entry:
|
|
21
|
+
combo.set_selection(0)
|
|
22
|
+
```
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
- :pattern: !ruby/regexp /class.*MyProperty.*:.*public.*wxPGProperty/
|
|
139
139
|
:replace: |
|
|
140
140
|
|
|
141
|
-
```
|
|
141
|
+
```ruby
|
|
142
142
|
class MyProperty < Wx::PG::PGProperty
|
|
143
143
|
|
|
144
144
|
# All arguments of this ctor must have a default value -
|
|
@@ -171,10 +171,10 @@
|
|
|
171
171
|
end
|
|
172
172
|
```
|
|
173
173
|
:post:
|
|
174
|
-
- :pattern: !ruby/regexp
|
|
174
|
+
- :pattern: !ruby/regexp /\#\#\swxIntProperty.*\#\#\swxUIntProperty/m
|
|
175
175
|
:subst: |
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
## Wx::PG::IntProperty
|
|
178
178
|
|
|
179
179
|
It derives from {Wx::PG::NumericProperty} and displays value as a signed long integer.
|
|
180
180
|
Supported special attributes:
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
- {Wx::PG::PG_ATTR_MIN}, {Wx::PG::PG_ATTR_MAX} to specify acceptable value range.
|
|
183
183
|
- {Wx::PG::PG_ATTR_SPINCTRL_STEP}, {Wx::PG::PG_ATTR_SPINCTRL_WRAP}, {Wx::PG::PG_ATTR_SPINCTRL_MOTION}: Sets SpinCtrl editor parameters.
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
## Wx::PG::UIntProperty
|
|
186
186
|
|
|
187
187
|
- :pattern: !ruby/regexp /Since\s\{Wx::PG::PGProperty\}\sderives.*For\sinstance:/m
|
|
188
188
|
:subst: ''
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxRibbonPanel:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
panel = @ribbon.get_page(0).get_panel_by_id(ID_EDITOR_PANEL)
|
|
11
|
+
panel.show(!panel.is_shown) if panel
|
|
12
|
+
# Update the UI
|
|
13
|
+
@ribbon.realise
|
|
14
|
+
@ribbon.layout
|
|
15
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxRichTextFormattingDialog:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
range = if @richTextCtrl.has_selection
|
|
11
|
+
@richTextCtrl.get_selection_range
|
|
12
|
+
else
|
|
13
|
+
(0..@richTextCtrl.get_last_position+1)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
pages = Wx::RTC::RICHTEXT_FORMAT_FONT|Wx::RTC::RICHTEXT_FORMAT_INDENTS_SPACING|
|
|
17
|
+
Wx::RTC::RICHTEXT_FORMAT_TABS|Wx::RTC::RICHTEXT_FORMAT_BULLETS
|
|
18
|
+
|
|
19
|
+
Wx::RTC.RichTextFormattingDialog(pages, self) do |formatDlg|
|
|
20
|
+
formatDlg.GetStyle(m_richTextCtrl, range);
|
|
21
|
+
|
|
22
|
+
if formatDlg.show_modal == Wx::ID_OK
|
|
23
|
+
formatDlg.apply_style(@richTextCtrl, range)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxSecretStore:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /\!store\..*Save.*username.*password\)/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
store = Wx::SecretStore.get_default
|
|
11
|
+
rc, err = store.ok?
|
|
12
|
+
if rc
|
|
13
|
+
unless store.save('MyApp/MyService', username, password)
|
|
14
|
+
Wx.log_warning('Failed to save credentials to the system secret store.')
|
|
15
|
+
end
|
|
16
|
+
else
|
|
17
|
+
Wx.log_warning("This system doesn't support storing passwords securely (#{err}).")
|
|
18
|
+
end
|
|
19
|
+
```
|
|
20
|
+
- :pattern: !ruby/regexp /store\..*Load.*username.*password\)/
|
|
21
|
+
:replace: |
|
|
22
|
+
|
|
23
|
+
```ruby
|
|
24
|
+
store = Wx::SecretStore.get_default
|
|
25
|
+
rc, _ = store.ok?
|
|
26
|
+
if rc
|
|
27
|
+
password = Wx::SecretValue.new
|
|
28
|
+
rc, username = store.load('MyApp/MyService', password)
|
|
29
|
+
if rc
|
|
30
|
+
# ... use the password ...
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
```
|
|
34
|
+
:wxSecretStore.IsOk:
|
|
35
|
+
:brief:
|
|
36
|
+
:replace:
|
|
37
|
+
:text: |
|
|
38
|
+
Check if this object can actually be used.
|
|
39
|
+
Returns true if the object can be used.
|
|
40
|
+
Returns false and an error message describing the reason if not.
|
|
41
|
+
|
|
42
|
+
:wxSecretStore.Load:
|
|
43
|
+
:detail:
|
|
44
|
+
:post:
|
|
45
|
+
- :pattern: !ruby/regexp /Otherwise\s+the\s+function.*arguments\./
|
|
46
|
+
:subst: |
|
|
47
|
+
Otherwise the function returns true and the username and updates the provided password argument.
|
|
48
|
+
|
|
49
|
+
:wxSecretValue:
|
|
50
|
+
:detail:
|
|
51
|
+
:post:
|
|
52
|
+
- :pattern: !ruby/regexp /\s+\Z/
|
|
53
|
+
:subst: |
|
|
54
|
+
|
|
55
|
+
@note Due to a bug using binary secrets will not work for WXGTK wxWidgets<=3.2.4 (WXOSX and WXMSW work fine). This has been fixed for later versions.
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
text.append_text("Blue on grey text\n")
|
|
16
16
|
```
|
|
17
17
|
:post:
|
|
18
|
-
- :pattern: !ruby/regexp
|
|
18
|
+
- :pattern: !ruby/regexp /\#\#\s+wxTextCtrl\s+and\s+C\+\+\s+Streams.*See\s+\{Wx::StreamToTextRedirector\}\s+for\s+more\s+details\./m
|
|
19
19
|
:subst: ''
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
:wxWizard:
|
|
3
|
+
:detail:
|
|
4
|
+
:pre:
|
|
5
|
+
:programlisting:
|
|
6
|
+
- :pattern: !ruby/regexp /.*/
|
|
7
|
+
:replace: |
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
class MyFrame < Wx::Frame
|
|
11
|
+
|
|
12
|
+
# ...
|
|
13
|
+
|
|
14
|
+
def on_run_wizard(_event)
|
|
15
|
+
Wx.Wizard(self) do |wizard|
|
|
16
|
+
|
|
17
|
+
wizard.run_wizard(get_initial_page_from_some_where)
|
|
18
|
+
|
|
19
|
+
# The wizard is destroyed when the block ends.
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
```
|
|
25
|
+
:post:
|
|
26
|
+
- :pattern: !ruby/regexp /Note\s+that\s+\{Wx::Wizard\}\s+inherits\s+from\s+\{Wx::Dialog\}.*typically\s+you\s+would\s+use\s+like\s+this:/
|
|
27
|
+
:subst: 'Note that {Wx::Wizard} inherits from {Wx::Dialog} so that typically you would use it like this:'
|