rwx 0.0.1.dev → 0.0.1.1.dev
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/.gitignore +3 -0
- data/.rspec +2 -0
- data/Rakefile +8 -0
- data/VERSION +1 -1
- data/ext/extconf.rb +5 -1
- data/ext/main.cpp +3 -3
- data/ext/main.hpp +34 -1
- data/ext/rwx.cpp +17 -0
- data/ext/wxAnyButton.cpp +7 -6
- data/ext/wxApp.cpp +1 -1
- data/ext/wxApp.hpp +1 -1
- data/ext/wxAuiBook.cpp +5 -1
- data/ext/wxAuiPane.cpp +7 -6
- data/ext/wxBitmap.cpp +42 -6
- data/ext/wxBitmapButton.cpp +3 -2
- data/ext/wxBitmapComboBox.cpp +25 -11
- data/ext/wxBitmapToggleButton.cpp +4 -2
- data/ext/wxBookCtrl.cpp +13 -13
- data/ext/wxBrush.cpp +69 -12
- data/ext/wxBrush.hpp +6 -0
- data/ext/wxButton.cpp +3 -2
- data/ext/wxCalendarCtrl.cpp +7 -6
- data/ext/wxCalendarCtrlBase.cpp +4 -2
- data/ext/wxCalendarCtrlGeneric.cpp +10 -9
- data/ext/wxCheckBox.cpp +10 -5
- data/ext/wxCheckListBox.cpp +10 -9
- data/ext/wxChoice.cpp +10 -9
- data/ext/wxChoiceBook.cpp +5 -1
- data/ext/wxCollapsiblePane.cpp +8 -5
- data/ext/wxColor.cpp +69 -25
- data/ext/wxColor.hpp +3 -0
- data/ext/wxColorPicker.cpp +11 -5
- data/ext/wxColorPickerWidget.cpp +10 -8
- data/ext/wxComboBox.cpp +3 -3
- data/ext/wxComboCtrl.cpp +220 -0
- data/ext/wxComboCtrl.hpp +22 -0
- data/ext/wxControl.cpp +2 -2
- data/ext/wxDC.cpp +5 -4
- data/ext/wxDatePicker.cpp +10 -7
- data/ext/wxDirCtrl.cpp +161 -0
- data/ext/wxDirCtrl.hpp +21 -0
- data/ext/wxDirPicker.cpp +5 -5
- data/ext/wxDirPickerWidget.cpp +10 -8
- data/ext/wxFileCtrl.cpp +5 -2
- data/ext/wxFileCtrlBase.cpp +31 -7
- data/ext/wxFileCtrlGeneric.cpp +5 -2
- data/ext/wxFileDialog.cpp +20 -25
- data/ext/wxFileDirPicker.cpp +6 -6
- data/ext/wxFilePicker.cpp +6 -6
- data/ext/wxFilePickerWidget.cpp +10 -9
- data/ext/wxFont.cpp +6 -5
- data/ext/wxFontDialog.cpp +11 -22
- data/ext/wxFontPicker.cpp +17 -5
- data/ext/wxFontPickerWidget.cpp +10 -9
- data/ext/wxFrame.cpp +6 -4
- data/ext/wxGauge.cpp +9 -5
- data/ext/wxGrid.cpp +7 -5
- data/ext/wxGridCellAttr.cpp +6 -6
- data/ext/wxHyperLink.cpp +12 -11
- data/ext/wxImage.cpp +15 -10
- data/ext/wxInfoBar.cpp +2 -1
- data/ext/wxInfoBarGeneric.cpp +2 -1
- data/ext/wxItemContainer.cpp +5 -0
- data/ext/wxListBook.cpp +5 -2
- data/ext/wxListBox.cpp +10 -8
- data/ext/wxMenu.cpp +5 -4
- data/ext/wxMenuItem.cpp +9 -7
- data/ext/wxMultiChoiceDialog.cpp +5 -3
- data/ext/wxNoteBook.cpp +4 -2
- data/ext/wxOwnerDrawnComboBox.cpp +223 -0
- data/ext/wxOwnerDrawnComboBox.hpp +22 -0
- data/ext/wxPalette.cpp +1 -1
- data/ext/wxPanel.cpp +4 -3
- data/ext/wxPasswordEntryDialog.cpp +1 -1
- data/ext/wxPen.cpp +49 -10
- data/ext/wxPoint.cpp +6 -6
- data/ext/wxPreferences.cpp +21 -6
- data/ext/wxProperty.cpp +5 -7
- data/ext/wxPropertyCell.cpp +5 -4
- data/ext/wxPropertyGrid.cpp +26 -27
- data/ext/wxPropertyGridManager.cpp +13 -5
- data/ext/wxRadioBox.cpp +14 -11
- data/ext/wxRadioButton.cpp +9 -3
- data/ext/wxRearrangeCtrl.cpp +5 -1
- data/ext/wxRearrangeList.cpp +5 -2
- data/ext/wxRect.cpp +8 -7
- data/ext/wxRichTextCtrl.cpp +12 -6
- data/ext/wxRichTextStyle.cpp +5 -5
- data/ext/wxRichTextStyleSheet.cpp +7 -5
- data/ext/wxSTC.cpp +5 -1
- data/ext/wxSearchCtrl.cpp +12 -10
- data/ext/wxSimpleBook.cpp +5 -1
- data/ext/wxSingleChoiceDialog.cpp +4 -2
- data/ext/wxSize.cpp +8 -7
- data/ext/wxSlider.cpp +12 -7
- data/ext/wxSpinButton.cpp +14 -11
- data/ext/wxSpinButton.hpp +1 -1
- data/ext/wxSpinCtrl.cpp +18 -11
- data/ext/wxSpinCtrlDouble.cpp +161 -0
- data/ext/wxSpinCtrlDouble.hpp +21 -0
- data/ext/wxStaticBitmap.cpp +3 -1
- data/ext/wxStaticBitmapBase.cpp +4 -2
- data/ext/wxStaticBitmapGeneric.cpp +3 -1
- data/ext/wxStaticBox.cpp +7 -6
- data/ext/wxStaticLine.cpp +5 -1
- data/ext/wxStaticText.cpp +5 -1
- data/ext/wxStatusBar.cpp +12 -10
- data/ext/wxTaskBar.cpp +6 -4
- data/ext/wxTextCtrl.cpp +9 -3
- data/ext/wxTextEntry.cpp +8 -3
- data/ext/wxTimePicker.cpp +11 -8
- data/ext/wxTimer.cpp +4 -2
- data/ext/wxToggleButton.cpp +3 -1
- data/ext/wxToolBar.cpp +5 -1
- data/ext/wxToolBarTool.cpp +9 -8
- data/ext/wxToolBook.cpp +5 -2
- data/ext/wxTreeBook.cpp +5 -1
- data/ext/wxTreeCtrl.cpp +8 -7
- data/ext/wxWindow.cpp +3 -1
- data/ext/wxWizard.cpp +10 -10
- data/ext/wxWizardPage.cpp +11 -9
- data/rwx.gemspec +4 -2
- data/samples/controls/controls.rb +0 -5
- data/samples/dialog/dialog_sample.rb +0 -3
- data/spec/color_spec.rb +55 -0
- data/spec/spec_helper.rb +12 -0
- metadata +28 -3
data/ext/wxColor.cpp
CHANGED
@@ -12,6 +12,13 @@
|
|
12
12
|
VALUE rb_cWXColor;
|
13
13
|
ID rwxID_red,rwxID_blue,rwxID_green,rwxID_alpha;
|
14
14
|
|
15
|
+
template <>
|
16
|
+
VALUE wrap< wxColor >(const wxColor& color )
|
17
|
+
{
|
18
|
+
if(!color.IsOk())
|
19
|
+
return Qnil;
|
20
|
+
return wrapTypedPtr(new wxColor(color), rb_cWXColor);
|
21
|
+
}
|
15
22
|
template <>
|
16
23
|
VALUE wrap< wxColor >(wxColor *color )
|
17
24
|
{
|
@@ -21,10 +28,15 @@ VALUE wrap< wxColor >(wxColor *color )
|
|
21
28
|
template <>
|
22
29
|
bool is_wrapable< wxColor >(const VALUE &vcolor)
|
23
30
|
{
|
24
|
-
if
|
25
|
-
rb_obj_is_kind_of(vcolor, rb_cString) || FIXNUM_P(vcolor)){
|
31
|
+
if(rb_obj_is_kind_of(vcolor, rb_cWXColor) || FIXNUM_P(vcolor)){
|
26
32
|
return true;
|
27
|
-
}
|
33
|
+
}else if(rb_obj_is_kind_of(vcolor, rb_cString)){
|
34
|
+
wxLogNull logNo;
|
35
|
+
wxString name(unwrap<wxString>(vcolor));
|
36
|
+
wxColor col(name);
|
37
|
+
return col.IsOk();
|
38
|
+
}
|
39
|
+
else if(rb_respond_to(vcolor,rwxID_red) &&
|
28
40
|
rb_respond_to(vcolor,rwxID_blue) &&
|
29
41
|
rb_respond_to(vcolor,rwxID_green)){
|
30
42
|
return true;
|
@@ -50,6 +62,10 @@ void set_color_part(char& cv,const VALUE &val, const ID &id)
|
|
50
62
|
template <>
|
51
63
|
wxColor unwrap< wxColor >(const VALUE &vcolor)
|
52
64
|
{
|
65
|
+
//NULLColor is not wanted
|
66
|
+
// if(NIL_P(vcolor))
|
67
|
+
// return wxNullColour;
|
68
|
+
|
53
69
|
if(rb_obj_is_kind_of(vcolor, rb_cString)){
|
54
70
|
wxLogNull logNo;
|
55
71
|
wxString name(unwrap<wxString>(vcolor));
|
@@ -81,7 +97,10 @@ wxColor unwrap< wxColor >(const VALUE &vcolor)
|
|
81
97
|
|
82
98
|
return color;
|
83
99
|
}else{
|
84
|
-
|
100
|
+
wxColor *col = unwrap<wxColor*>(vcolor);
|
101
|
+
if(!col->IsOk())
|
102
|
+
rb_raise(rb_eTypeError,"invalid %"PRIsVALUE, rb_cWXColor);
|
103
|
+
return *col;
|
85
104
|
}
|
86
105
|
|
87
106
|
|
@@ -90,11 +109,16 @@ wxColor unwrap< wxColor >(const VALUE &vcolor)
|
|
90
109
|
namespace RubyWX {
|
91
110
|
namespace Color {
|
92
111
|
DLL_LOCAL VALUE _alloc(VALUE self) {
|
93
|
-
return
|
112
|
+
return wrapTypedPtr(new wxColor,self);
|
94
113
|
}
|
95
114
|
|
96
115
|
void define_const()
|
97
116
|
{
|
117
|
+
#if 0
|
118
|
+
rb_mWX = rb_define_module("WX");
|
119
|
+
rb_cWXColor = rb_define_class_under(rb_mWX,"Color",rb_cObject);
|
120
|
+
#endif
|
121
|
+
|
98
122
|
if(rb_const_defined(rb_cWXColor,rb_intern("BLACK")))
|
99
123
|
return;
|
100
124
|
|
@@ -140,6 +164,17 @@ DLL_LOCAL VALUE _getAlpha(VALUE self)
|
|
140
164
|
return CHR2FIX(0);
|
141
165
|
}
|
142
166
|
|
167
|
+
DLL_LOCAL void init_values(wxColor *self, char &red, char &green, char &blue, char &alpha)
|
168
|
+
{
|
169
|
+
if(self->IsOk()) {
|
170
|
+
red = self->Red();
|
171
|
+
green = self->Green();
|
172
|
+
blue = self->Blue();
|
173
|
+
alpha = self->Alpha();
|
174
|
+
}
|
175
|
+
}
|
176
|
+
|
177
|
+
|
143
178
|
DLL_LOCAL char val_to_char(VALUE val)
|
144
179
|
{
|
145
180
|
char cval(0);
|
@@ -154,42 +189,43 @@ DLL_LOCAL VALUE _setRed(VALUE self,VALUE val)
|
|
154
189
|
{
|
155
190
|
rb_check_frozen(self);
|
156
191
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
192
|
+
char red(0), green(0), blue(0), alpha(0);
|
193
|
+
init_values(_self, red, green, blue, alpha);
|
194
|
+
red = val_to_char(val);
|
195
|
+
_self->Set(red, green, blue, alpha);
|
196
|
+
|
161
197
|
return val;
|
162
198
|
}
|
163
199
|
|
164
200
|
DLL_LOCAL VALUE _setGreen(VALUE self,VALUE val)
|
165
201
|
{
|
166
202
|
rb_check_frozen(self);
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
203
|
+
|
204
|
+
char red(0), green(0), blue(0), alpha(0);
|
205
|
+
init_values(_self, red, green, blue, alpha);
|
206
|
+
green = val_to_char(val);
|
207
|
+
_self->Set(red, green, blue, alpha);
|
208
|
+
|
171
209
|
return val;
|
172
210
|
}
|
173
211
|
DLL_LOCAL VALUE _setBlue(VALUE self,VALUE val)
|
174
212
|
{
|
175
213
|
rb_check_frozen(self);
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
214
|
+
|
215
|
+
char red(0), green(0), blue(0), alpha(0);
|
216
|
+
init_values(_self, red, green, blue, alpha);
|
217
|
+
blue = val_to_char(val);
|
218
|
+
_self->Set(red, green, blue, alpha);
|
219
|
+
|
180
220
|
return val;
|
181
221
|
}
|
182
222
|
DLL_LOCAL VALUE _setAlpha(VALUE self,VALUE val)
|
183
223
|
{
|
184
224
|
rb_check_frozen(self);
|
185
225
|
|
186
|
-
|
226
|
+
char red(0), green(0), blue(0), alpha(0);
|
187
227
|
|
188
|
-
|
189
|
-
red = _self->Red();
|
190
|
-
green = _self->Green();
|
191
|
-
blue = _self->Blue();
|
192
|
-
}
|
228
|
+
init_values(_self, red, green, blue, alpha);
|
193
229
|
|
194
230
|
if(!RTEST(val))
|
195
231
|
alpha = wxALPHA_OPAQUE;
|
@@ -360,6 +396,9 @@ DLL_LOCAL VALUE _equal(VALUE self, VALUE other)
|
|
360
396
|
/* Document-attr: alpha
|
361
397
|
* returns the alpha value of Color.
|
362
398
|
*/
|
399
|
+
/* Document-attr: name
|
400
|
+
* returns the name of the Color or nil if no name found
|
401
|
+
*/
|
363
402
|
|
364
403
|
/* Document-const: BLACK
|
365
404
|
* predefined Color constant.
|
@@ -387,6 +426,9 @@ DLL_LOCAL VALUE _equal(VALUE self, VALUE other)
|
|
387
426
|
*/
|
388
427
|
DLL_LOCAL void Init_WXColor(VALUE rb_mWX)
|
389
428
|
{
|
429
|
+
#if 0
|
430
|
+
rb_mWX = rb_define_module("WX");
|
431
|
+
#endif
|
390
432
|
using namespace RubyWX::Color;
|
391
433
|
rb_cWXColor = rb_define_class_under(rb_mWX,"Color",rb_cObject);
|
392
434
|
|
@@ -395,6 +437,7 @@ DLL_LOCAL void Init_WXColor(VALUE rb_mWX)
|
|
395
437
|
rb_define_attr(rb_cWXColor,"green",1,1);
|
396
438
|
rb_define_attr(rb_cWXColor,"blue",1,1);
|
397
439
|
rb_define_attr(rb_cWXColor,"alpha",1,1);
|
440
|
+
rb_define_attr(rb_cWXColor,"name",1,0);
|
398
441
|
|
399
442
|
rb_define_const(rb_cWXColor,"BLACK",wrap(wxBLACK));
|
400
443
|
rb_define_const(rb_cWXColor,"BLUE",wrap(wxBLUE));
|
@@ -417,12 +460,13 @@ DLL_LOCAL void Init_WXColor(VALUE rb_mWX)
|
|
417
460
|
rb_define_attr_method(rb_cWXColor,"blue",_getBlue,_setBlue);
|
418
461
|
rb_define_attr_method(rb_cWXColor,"alpha",_getAlpha,_setAlpha);
|
419
462
|
|
463
|
+
rb_define_attr_method(rb_cWXColor,"name",_name,NULL);
|
464
|
+
|
420
465
|
rb_define_method(rb_cWXColor,"to_s",RUBY_METHOD_FUNC(_tos),0);
|
421
|
-
rb_define_method(rb_cWXColor,"name",RUBY_METHOD_FUNC(_name),0);
|
422
466
|
rb_define_method(rb_cWXColor,"inspect",RUBY_METHOD_FUNC(_inspect),0);
|
423
467
|
|
424
468
|
rb_define_method(rb_cWXColor,"marshal_dump",RUBY_METHOD_FUNC(_marshal_dump),0);
|
425
|
-
rb_define_method(rb_cWXColor,"marshal_load",RUBY_METHOD_FUNC(_marshal_load)
|
469
|
+
rb_define_method(rb_cWXColor,"marshal_load",RUBY_METHOD_FUNC(_marshal_load),-2);
|
426
470
|
|
427
471
|
rb_define_method(rb_cWXColor,"==",RUBY_METHOD_FUNC(_equal),1);
|
428
472
|
|
data/ext/wxColor.hpp
CHANGED
data/ext/wxColorPicker.cpp
CHANGED
@@ -58,7 +58,11 @@ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
|
|
58
58
|
|
59
59
|
}
|
60
60
|
|
61
|
-
|
61
|
+
if(nil_check(parent)) {
|
62
|
+
_self->Create(unwrap<wxWindow*>(parent),id,color,
|
63
|
+
wxDefaultPosition,wxDefaultSize,style
|
64
|
+
);
|
65
|
+
}
|
62
66
|
}
|
63
67
|
|
64
68
|
rb_call_super(argc,argv);
|
@@ -100,15 +104,18 @@ DLL_LOCAL void Init_WXColorPicker(VALUE rb_mWX)
|
|
100
104
|
rb_cWXControl = rb_define_class_under(rb_mWX,"Control",rb_cWXWindow);
|
101
105
|
|
102
106
|
rb_cWXPickerBase = rb_define_class_under(rb_mWX,"PickerBase",rb_cWXControl);
|
103
|
-
|
104
|
-
rb_define_attr(rb_cWXColorPicker,"color",1,1);
|
105
|
-
rb_define_attr(rb_cWXColorPickerEvent,"color",1,1);
|
106
107
|
#endif
|
107
108
|
|
108
109
|
#if wxUSE_COLOURPICKERCTRL
|
109
110
|
using namespace RubyWX::ColorPicker;
|
110
111
|
rb_cWXColorPicker = rb_define_class_under(rb_mWX,"ColorPicker",rb_cWXPickerBase);
|
111
112
|
rb_define_alloc_func(rb_cWXColorPicker,_alloc);
|
113
|
+
rb_cWXColorPickerEvent = rb_define_class_under(rb_cWXEvent,"ColorPicker",rb_cWXEvent);
|
114
|
+
|
115
|
+
#if 0
|
116
|
+
rb_define_attr(rb_cWXColorPicker,"color",1,1);
|
117
|
+
rb_define_attr(rb_cWXColorPickerEvent,"color",1,1);
|
118
|
+
#endif
|
112
119
|
|
113
120
|
rb_define_method(rb_cWXColorPicker,"initialize",RUBY_METHOD_FUNC(_initialize),-1);
|
114
121
|
|
@@ -117,7 +124,6 @@ DLL_LOCAL void Init_WXColorPicker(VALUE rb_mWX)
|
|
117
124
|
rb_define_const(rb_cWXColorPicker,"DEFAULT_STYLE",INT2NUM(wxCLRP_DEFAULT_STYLE));
|
118
125
|
rb_define_const(rb_cWXColorPicker,"SHOW_LABEL",INT2NUM(wxCLRP_SHOW_LABEL));
|
119
126
|
|
120
|
-
rb_cWXColorPickerEvent = rb_define_class_under(rb_cWXEvent,"ColorPicker",rb_cWXEvent);
|
121
127
|
registerEventType("colorpicker_changed",wxEVT_COLOURPICKER_CHANGED,rb_cWXColorPickerEvent);
|
122
128
|
|
123
129
|
rb_define_attr_method(rb_cWXColorPickerEvent,"color",
|
data/ext/wxColorPickerWidget.cpp
CHANGED
@@ -51,11 +51,12 @@ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
|
|
51
51
|
|
52
52
|
}
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
if(nil_check(parent)) {
|
55
|
+
_self->Create(
|
56
|
+
unwrap<wxWindow*>(parent),id,color,
|
57
|
+
wxDefaultPosition,wxDefaultSize,style
|
58
|
+
);
|
59
|
+
}
|
59
60
|
}
|
60
61
|
|
61
62
|
rb_call_super(argc,argv);
|
@@ -84,9 +85,6 @@ DLL_LOCAL void Init_WXColorPickerWidget(VALUE rb_mWX)
|
|
84
85
|
rb_cWXAnyButton = rb_define_class_under(rb_mWX,"AnyButton",rb_cWXControl);
|
85
86
|
|
86
87
|
rb_cWXButton = rb_define_class_under(rb_mWX,"Button",rb_cWXAnyButton);
|
87
|
-
|
88
|
-
rb_define_attr(rb_cWXColorPickerWidget,"color",1,1);
|
89
|
-
|
90
88
|
#endif
|
91
89
|
|
92
90
|
#if wxUSE_COLOURPICKERCTRL
|
@@ -94,6 +92,10 @@ DLL_LOCAL void Init_WXColorPickerWidget(VALUE rb_mWX)
|
|
94
92
|
rb_cWXColorPickerWidget = rb_define_class_under(rb_mWX,"ColorPickerWidget",rb_cWXButton);
|
95
93
|
rb_define_alloc_func(rb_cWXColorPickerWidget,_alloc);
|
96
94
|
|
95
|
+
#if 0
|
96
|
+
rb_define_attr(rb_cWXColorPickerWidget,"color",1,1);
|
97
|
+
#endif
|
98
|
+
|
97
99
|
rb_define_method(rb_cWXColorPickerWidget,"initialize",RUBY_METHOD_FUNC(_initialize),-1);
|
98
100
|
|
99
101
|
rb_define_attr_method(rb_cWXColorPickerWidget,"color",_getColour,_setColour);
|
data/ext/wxComboBox.cpp
CHANGED
@@ -179,6 +179,9 @@ DLL_LOCAL void Init_WXComboBox(VALUE rb_mWX)
|
|
179
179
|
|
180
180
|
rb_define_method(rb_cWXComboBox,"initialize",RUBY_METHOD_FUNC(_initialize),-1);
|
181
181
|
|
182
|
+
rb_include_module(rb_cWXComboBox,rb_mWXItemContainer);
|
183
|
+
rb_include_module(rb_cWXComboBox,rb_mWXTextEntry);
|
184
|
+
|
182
185
|
rb_define_method(rb_cWXComboBox,"clear",RUBY_METHOD_FUNC(_Clear),0);
|
183
186
|
rb_define_method(rb_cWXComboBox,"popup",RUBY_METHOD_FUNC(_Popup),0);
|
184
187
|
rb_define_method(rb_cWXComboBox,"dismiss",RUBY_METHOD_FUNC(_Dismiss),0);
|
@@ -188,9 +191,6 @@ DLL_LOCAL void Init_WXComboBox(VALUE rb_mWX)
|
|
188
191
|
rb_define_method(rb_cWXComboBox,"list_empty?",RUBY_METHOD_FUNC(_IsListEmpty),0);
|
189
192
|
rb_define_method(rb_cWXComboBox,"text_empty?",RUBY_METHOD_FUNC(_IsTextEmpty),0);
|
190
193
|
|
191
|
-
rb_include_module(rb_cWXComboBox,rb_mWXItemContainer);
|
192
|
-
rb_include_module(rb_cWXComboBox,rb_mWXTextEntry);
|
193
|
-
|
194
194
|
//define Choice constants
|
195
195
|
rb_define_const(rb_cWXComboBox,"SORT",INT2NUM(wxCB_SORT));
|
196
196
|
rb_define_const(rb_cWXComboBox,"READONLY",INT2NUM(wxCB_READONLY));
|
data/ext/wxComboCtrl.cpp
ADDED
@@ -0,0 +1,220 @@
|
|
1
|
+
/*
|
2
|
+
* wxComboCtrl.cpp
|
3
|
+
*
|
4
|
+
* Created on: 14.10.2014
|
5
|
+
* Author: hanmac
|
6
|
+
*/
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
#include "wxEvtHandler.hpp"
|
11
|
+
#include "wxTextEntry.hpp"
|
12
|
+
#include "wxTextCtrl.hpp"
|
13
|
+
#include "wxComboCtrl.hpp"
|
14
|
+
|
15
|
+
VALUE rb_cWXComboCtrl;
|
16
|
+
|
17
|
+
#if wxUSE_COMBOCTRL
|
18
|
+
#define _self unwrap<wxComboCtrl*>(self)
|
19
|
+
|
20
|
+
namespace RubyWX {
|
21
|
+
namespace ComboCtrl {
|
22
|
+
|
23
|
+
APP_PROTECT(wxComboCtrl)
|
24
|
+
|
25
|
+
singlefunc(Popup)
|
26
|
+
singlefunc(Dismiss)
|
27
|
+
|
28
|
+
singlereturn(GetPopupWindow)
|
29
|
+
singlereturn(GetTextCtrl)
|
30
|
+
singlereturn(GetButton)
|
31
|
+
|
32
|
+
singlereturn(GetBitmapNormal)
|
33
|
+
singlereturn(GetBitmapPressed)
|
34
|
+
singlereturn(GetBitmapHover)
|
35
|
+
singlereturn(GetBitmapDisabled)
|
36
|
+
|
37
|
+
//macro_attr(PopupMinWidth,int)
|
38
|
+
macro_attr(CustomPaintWidth,int)
|
39
|
+
|
40
|
+
|
41
|
+
DLL_LOCAL VALUE _set_bitmap_normal(VALUE self, VALUE val)
|
42
|
+
{
|
43
|
+
_self->SetButtonBitmaps(
|
44
|
+
unwrap<wxBitmap>(val),
|
45
|
+
false,
|
46
|
+
_self->GetBitmapPressed(),
|
47
|
+
_self->GetBitmapHover(),
|
48
|
+
_self->GetBitmapDisabled()
|
49
|
+
);
|
50
|
+
return val;
|
51
|
+
}
|
52
|
+
DLL_LOCAL VALUE _set_bitmap_pressed(VALUE self, VALUE val)
|
53
|
+
{
|
54
|
+
_self->SetButtonBitmaps(
|
55
|
+
_self->GetBitmapNormal(),
|
56
|
+
false,
|
57
|
+
unwrap<wxBitmap>(val),
|
58
|
+
_self->GetBitmapHover(),
|
59
|
+
_self->GetBitmapDisabled()
|
60
|
+
);
|
61
|
+
return val;
|
62
|
+
}
|
63
|
+
DLL_LOCAL VALUE _set_bitmap_hover(VALUE self, VALUE val)
|
64
|
+
{
|
65
|
+
_self->SetButtonBitmaps(
|
66
|
+
_self->GetBitmapNormal(),
|
67
|
+
false,
|
68
|
+
_self->GetBitmapPressed(),
|
69
|
+
unwrap<wxBitmap>(val),
|
70
|
+
_self->GetBitmapDisabled()
|
71
|
+
);
|
72
|
+
return val;
|
73
|
+
}
|
74
|
+
DLL_LOCAL VALUE _set_bitmap_disabled(VALUE self, VALUE val)
|
75
|
+
{
|
76
|
+
_self->SetButtonBitmaps(
|
77
|
+
_self->GetBitmapNormal(),
|
78
|
+
false,
|
79
|
+
_self->GetBitmapPressed(),
|
80
|
+
_self->GetBitmapHover(),
|
81
|
+
unwrap<wxBitmap>(val)
|
82
|
+
);
|
83
|
+
return val;
|
84
|
+
}
|
85
|
+
|
86
|
+
/*
|
87
|
+
* call-seq:
|
88
|
+
* ComboCtrl.new(parent, name, [options])
|
89
|
+
* ComboCtrl.new(parent, [options])
|
90
|
+
*
|
91
|
+
* creates a new ComboCtrl widget.
|
92
|
+
* ===Arguments
|
93
|
+
* * parent of this window or nil
|
94
|
+
* * name is a String describing a resource in a loaded xrc
|
95
|
+
*
|
96
|
+
* *options: Hash with possible options to set:
|
97
|
+
* * items [String]
|
98
|
+
* * select Integer
|
99
|
+
* * value String
|
100
|
+
*/
|
101
|
+
DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
|
102
|
+
{
|
103
|
+
VALUE parent,name,hash;
|
104
|
+
rb_scan_args(argc, argv, "11:",&parent,&name,&hash);
|
105
|
+
|
106
|
+
if(!_created && !rb_obj_is_kind_of(name,rb_cString)) {
|
107
|
+
wxWindowID id(wxID_ANY);
|
108
|
+
wxString value;
|
109
|
+
int style(0);
|
110
|
+
|
111
|
+
if(rb_obj_is_kind_of(hash,rb_cHash)) {
|
112
|
+
set_hash_option(hash,"id",id,unwrapID);
|
113
|
+
set_hash_option(hash,"value",value);
|
114
|
+
set_hash_option(hash,"style",style);
|
115
|
+
|
116
|
+
TextCtrl::set_style_flags(hash,style);
|
117
|
+
}
|
118
|
+
_self->Create(
|
119
|
+
unwrap<wxWindow*>(parent),id,value,
|
120
|
+
wxDefaultPosition,wxDefaultSize,style
|
121
|
+
);
|
122
|
+
|
123
|
+
}
|
124
|
+
|
125
|
+
rb_call_super(argc,argv);
|
126
|
+
|
127
|
+
if(rb_obj_is_kind_of(hash,rb_cHash)) {
|
128
|
+
VALUE temp;
|
129
|
+
set_option(value,Value,wxString)
|
130
|
+
|
131
|
+
}
|
132
|
+
|
133
|
+
return self;
|
134
|
+
}
|
135
|
+
|
136
|
+
}
|
137
|
+
}
|
138
|
+
#endif
|
139
|
+
|
140
|
+
/* Document-method: popup
|
141
|
+
* call-seq:
|
142
|
+
* popup -> self
|
143
|
+
*
|
144
|
+
* Shows the list box portion of the combo box.
|
145
|
+
* ===Return value
|
146
|
+
* self
|
147
|
+
*/
|
148
|
+
/* Document-method: dismiss
|
149
|
+
* call-seq:
|
150
|
+
* dismiss -> self
|
151
|
+
*
|
152
|
+
* Hides the list box portion of the combo box.
|
153
|
+
* ===Return value
|
154
|
+
* self
|
155
|
+
*/
|
156
|
+
/* Document-const: MULTILINE
|
157
|
+
* The text control allows multiple lines. If this style is not specified, line break characters should not be used in the controls value.
|
158
|
+
*/
|
159
|
+
/* Document-const: PROCESS_TAB
|
160
|
+
* The control will receive :char events for TAB pressed - normally, TAB is used for passing to the next control in a dialog instead. For the control created with this style, you can still use Ctrl-Enter to pass to the next control from the keyboard.
|
161
|
+
*/
|
162
|
+
/* Document-const: PROCESS_ENTER
|
163
|
+
* The control will generate the event :text_enter (otherwise pressing Enter key is either processed internally by the control or used for navigation between dialog controls).
|
164
|
+
*/
|
165
|
+
/* Document-const: PASSWORD
|
166
|
+
* The text will be echoed as asterisks.
|
167
|
+
*/
|
168
|
+
DLL_LOCAL void Init_WXComboCtrl(VALUE rb_mWX)
|
169
|
+
{
|
170
|
+
#if 0
|
171
|
+
rb_mWX = rb_define_module("WX");
|
172
|
+
rb_cWXWindow = rb_define_class_under(rb_mWX,"Window",rb_cObject);
|
173
|
+
|
174
|
+
rb_cWXControl = rb_define_class_under(rb_mWX,"Control",rb_cWXWindow);
|
175
|
+
rb_mWXTextEntry = rb_define_module_under(rb_mWX,"TextEntry");
|
176
|
+
#endif
|
177
|
+
#if wxUSE_COMBOCTRL
|
178
|
+
using namespace RubyWX::ComboCtrl;
|
179
|
+
rb_cWXComboCtrl = rb_define_class_under(rb_mWX,"ComboCtrl",rb_cWXControl);
|
180
|
+
rb_define_alloc_func(rb_cWXComboCtrl,_alloc);
|
181
|
+
|
182
|
+
#if 0
|
183
|
+
rb_define_attr(rb_cWXComboCtrl,"popup_window",1,0);
|
184
|
+
rb_define_attr(rb_cWXComboCtrl,"text_ctrl",1,0);
|
185
|
+
rb_define_attr(rb_cWXComboCtrl,"button",1,0);
|
186
|
+
|
187
|
+
rb_define_attr(rb_cWXComboCtrl,"bitmap_normal",1,1);
|
188
|
+
rb_define_attr(rb_cWXComboCtrl,"bitmap_pressed",1,1);
|
189
|
+
rb_define_attr(rb_cWXComboCtrl,"bitmap_hover",1,1);
|
190
|
+
rb_define_attr(rb_cWXComboCtrl,"bitmap_disabled",1,1);
|
191
|
+
#endif
|
192
|
+
|
193
|
+
rb_define_attr_method(rb_cWXComboCtrl,"popup_window",_GetPopupWindow,0);
|
194
|
+
rb_define_attr_method(rb_cWXComboCtrl,"text_ctrl",_GetTextCtrl,0);
|
195
|
+
rb_define_attr_method(rb_cWXComboCtrl,"button",_GetButton,0);
|
196
|
+
|
197
|
+
rb_define_attr_method(rb_cWXComboCtrl,"bitmap_normal",_GetBitmapNormal,_set_bitmap_normal);
|
198
|
+
rb_define_attr_method(rb_cWXComboCtrl,"bitmap_pressed",_GetBitmapPressed,_set_bitmap_pressed);
|
199
|
+
rb_define_attr_method(rb_cWXComboCtrl,"bitmap_hover",_GetBitmapHover,_set_bitmap_hover);
|
200
|
+
rb_define_attr_method(rb_cWXComboCtrl,"bitmap_disabled",_GetBitmapDisabled,_set_bitmap_disabled);
|
201
|
+
|
202
|
+
rb_define_method(rb_cWXComboCtrl,"initialize",RUBY_METHOD_FUNC(_initialize),-1);
|
203
|
+
|
204
|
+
rb_define_method(rb_cWXComboCtrl,"popup",RUBY_METHOD_FUNC(_Popup),0);
|
205
|
+
rb_define_method(rb_cWXComboCtrl,"dismiss",RUBY_METHOD_FUNC(_Dismiss),0);
|
206
|
+
|
207
|
+
rb_include_module(rb_cWXComboCtrl,rb_mWXTextEntry);
|
208
|
+
|
209
|
+
//define TextCtrl constants
|
210
|
+
rb_define_const(rb_cWXComboCtrl,"MULTILINE",INT2NUM(wxTE_MULTILINE));
|
211
|
+
rb_define_const(rb_cWXComboCtrl,"PROCESS_TAB",INT2NUM(wxTE_PROCESS_TAB));
|
212
|
+
rb_define_const(rb_cWXComboCtrl,"PROCESS_ENTER",INT2NUM(wxTE_PROCESS_ENTER));
|
213
|
+
rb_define_const(rb_cWXComboCtrl,"PASSWORD",INT2NUM(wxTE_PASSWORD));
|
214
|
+
|
215
|
+
registerInfo<wxComboCtrl>(rb_cWXComboCtrl);
|
216
|
+
|
217
|
+
#endif
|
218
|
+
|
219
|
+
}
|
220
|
+
|