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.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rspec +2 -0
  4. data/Rakefile +8 -0
  5. data/VERSION +1 -1
  6. data/ext/extconf.rb +5 -1
  7. data/ext/main.cpp +3 -3
  8. data/ext/main.hpp +34 -1
  9. data/ext/rwx.cpp +17 -0
  10. data/ext/wxAnyButton.cpp +7 -6
  11. data/ext/wxApp.cpp +1 -1
  12. data/ext/wxApp.hpp +1 -1
  13. data/ext/wxAuiBook.cpp +5 -1
  14. data/ext/wxAuiPane.cpp +7 -6
  15. data/ext/wxBitmap.cpp +42 -6
  16. data/ext/wxBitmapButton.cpp +3 -2
  17. data/ext/wxBitmapComboBox.cpp +25 -11
  18. data/ext/wxBitmapToggleButton.cpp +4 -2
  19. data/ext/wxBookCtrl.cpp +13 -13
  20. data/ext/wxBrush.cpp +69 -12
  21. data/ext/wxBrush.hpp +6 -0
  22. data/ext/wxButton.cpp +3 -2
  23. data/ext/wxCalendarCtrl.cpp +7 -6
  24. data/ext/wxCalendarCtrlBase.cpp +4 -2
  25. data/ext/wxCalendarCtrlGeneric.cpp +10 -9
  26. data/ext/wxCheckBox.cpp +10 -5
  27. data/ext/wxCheckListBox.cpp +10 -9
  28. data/ext/wxChoice.cpp +10 -9
  29. data/ext/wxChoiceBook.cpp +5 -1
  30. data/ext/wxCollapsiblePane.cpp +8 -5
  31. data/ext/wxColor.cpp +69 -25
  32. data/ext/wxColor.hpp +3 -0
  33. data/ext/wxColorPicker.cpp +11 -5
  34. data/ext/wxColorPickerWidget.cpp +10 -8
  35. data/ext/wxComboBox.cpp +3 -3
  36. data/ext/wxComboCtrl.cpp +220 -0
  37. data/ext/wxComboCtrl.hpp +22 -0
  38. data/ext/wxControl.cpp +2 -2
  39. data/ext/wxDC.cpp +5 -4
  40. data/ext/wxDatePicker.cpp +10 -7
  41. data/ext/wxDirCtrl.cpp +161 -0
  42. data/ext/wxDirCtrl.hpp +21 -0
  43. data/ext/wxDirPicker.cpp +5 -5
  44. data/ext/wxDirPickerWidget.cpp +10 -8
  45. data/ext/wxFileCtrl.cpp +5 -2
  46. data/ext/wxFileCtrlBase.cpp +31 -7
  47. data/ext/wxFileCtrlGeneric.cpp +5 -2
  48. data/ext/wxFileDialog.cpp +20 -25
  49. data/ext/wxFileDirPicker.cpp +6 -6
  50. data/ext/wxFilePicker.cpp +6 -6
  51. data/ext/wxFilePickerWidget.cpp +10 -9
  52. data/ext/wxFont.cpp +6 -5
  53. data/ext/wxFontDialog.cpp +11 -22
  54. data/ext/wxFontPicker.cpp +17 -5
  55. data/ext/wxFontPickerWidget.cpp +10 -9
  56. data/ext/wxFrame.cpp +6 -4
  57. data/ext/wxGauge.cpp +9 -5
  58. data/ext/wxGrid.cpp +7 -5
  59. data/ext/wxGridCellAttr.cpp +6 -6
  60. data/ext/wxHyperLink.cpp +12 -11
  61. data/ext/wxImage.cpp +15 -10
  62. data/ext/wxInfoBar.cpp +2 -1
  63. data/ext/wxInfoBarGeneric.cpp +2 -1
  64. data/ext/wxItemContainer.cpp +5 -0
  65. data/ext/wxListBook.cpp +5 -2
  66. data/ext/wxListBox.cpp +10 -8
  67. data/ext/wxMenu.cpp +5 -4
  68. data/ext/wxMenuItem.cpp +9 -7
  69. data/ext/wxMultiChoiceDialog.cpp +5 -3
  70. data/ext/wxNoteBook.cpp +4 -2
  71. data/ext/wxOwnerDrawnComboBox.cpp +223 -0
  72. data/ext/wxOwnerDrawnComboBox.hpp +22 -0
  73. data/ext/wxPalette.cpp +1 -1
  74. data/ext/wxPanel.cpp +4 -3
  75. data/ext/wxPasswordEntryDialog.cpp +1 -1
  76. data/ext/wxPen.cpp +49 -10
  77. data/ext/wxPoint.cpp +6 -6
  78. data/ext/wxPreferences.cpp +21 -6
  79. data/ext/wxProperty.cpp +5 -7
  80. data/ext/wxPropertyCell.cpp +5 -4
  81. data/ext/wxPropertyGrid.cpp +26 -27
  82. data/ext/wxPropertyGridManager.cpp +13 -5
  83. data/ext/wxRadioBox.cpp +14 -11
  84. data/ext/wxRadioButton.cpp +9 -3
  85. data/ext/wxRearrangeCtrl.cpp +5 -1
  86. data/ext/wxRearrangeList.cpp +5 -2
  87. data/ext/wxRect.cpp +8 -7
  88. data/ext/wxRichTextCtrl.cpp +12 -6
  89. data/ext/wxRichTextStyle.cpp +5 -5
  90. data/ext/wxRichTextStyleSheet.cpp +7 -5
  91. data/ext/wxSTC.cpp +5 -1
  92. data/ext/wxSearchCtrl.cpp +12 -10
  93. data/ext/wxSimpleBook.cpp +5 -1
  94. data/ext/wxSingleChoiceDialog.cpp +4 -2
  95. data/ext/wxSize.cpp +8 -7
  96. data/ext/wxSlider.cpp +12 -7
  97. data/ext/wxSpinButton.cpp +14 -11
  98. data/ext/wxSpinButton.hpp +1 -1
  99. data/ext/wxSpinCtrl.cpp +18 -11
  100. data/ext/wxSpinCtrlDouble.cpp +161 -0
  101. data/ext/wxSpinCtrlDouble.hpp +21 -0
  102. data/ext/wxStaticBitmap.cpp +3 -1
  103. data/ext/wxStaticBitmapBase.cpp +4 -2
  104. data/ext/wxStaticBitmapGeneric.cpp +3 -1
  105. data/ext/wxStaticBox.cpp +7 -6
  106. data/ext/wxStaticLine.cpp +5 -1
  107. data/ext/wxStaticText.cpp +5 -1
  108. data/ext/wxStatusBar.cpp +12 -10
  109. data/ext/wxTaskBar.cpp +6 -4
  110. data/ext/wxTextCtrl.cpp +9 -3
  111. data/ext/wxTextEntry.cpp +8 -3
  112. data/ext/wxTimePicker.cpp +11 -8
  113. data/ext/wxTimer.cpp +4 -2
  114. data/ext/wxToggleButton.cpp +3 -1
  115. data/ext/wxToolBar.cpp +5 -1
  116. data/ext/wxToolBarTool.cpp +9 -8
  117. data/ext/wxToolBook.cpp +5 -2
  118. data/ext/wxTreeBook.cpp +5 -1
  119. data/ext/wxTreeCtrl.cpp +8 -7
  120. data/ext/wxWindow.cpp +3 -1
  121. data/ext/wxWizard.cpp +10 -10
  122. data/ext/wxWizardPage.cpp +11 -9
  123. data/rwx.gemspec +4 -2
  124. data/samples/controls/controls.rb +0 -5
  125. data/samples/dialog/dialog_sample.rb +0 -3
  126. data/spec/color_spec.rb +55 -0
  127. data/spec/spec_helper.rb +12 -0
  128. metadata +28 -3
@@ -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 (rb_obj_is_kind_of(vcolor, rb_cWXColor) ||
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
- } else if(rb_respond_to(vcolor,rwxID_red) &&
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
- return *unwrap<wxColor*>(vcolor);
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 wrap(new wxColor);
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
- if(_self->IsOk())
158
- _self->Set(val_to_char(val),_self->Green(),_self->Blue(),_self->Alpha());
159
- else
160
- _self->Set(val_to_char(val),0,0,0);
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
- if(_self->IsOk())
168
- _self->Set(_self->Red(),val_to_char(val),_self->Blue(),_self->Alpha());
169
- else
170
- _self->Set(0,val_to_char(val),0,0);
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
- if(_self->IsOk())
177
- _self->Set(_self->Red(),_self->Green(),val_to_char(val),_self->Alpha());
178
- else
179
- _self->Set(0,0,val_to_char(val),0);
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
- int red(0), green(0), blue(0), alpha(0);
226
+ char red(0), green(0), blue(0), alpha(0);
187
227
 
188
- if(_self->IsOk()) {
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),1);
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
 
@@ -14,6 +14,9 @@ extern VALUE rb_cWXColor;
14
14
  void Init_WXColor(VALUE rb_mWX);
15
15
 
16
16
 
17
+ template <>
18
+ VALUE wrap< wxColor >(const wxColor& color );
19
+
17
20
  template <>
18
21
  VALUE wrap< wxColor >(wxColor *color );
19
22
 
@@ -58,7 +58,11 @@ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
58
58
 
59
59
  }
60
60
 
61
- _self->Create(unwrap<wxWindow*>(parent),id,color,wxDefaultPosition,wxDefaultSize,style);
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",
@@ -51,11 +51,12 @@ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
51
51
 
52
52
  }
53
53
 
54
- _self->Create(
55
- unwrap<wxWindow*>(parent),id,color,
56
- wxDefaultPosition,wxDefaultSize,style
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);
@@ -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));
@@ -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
+