rwx 0.0.1.dev → 0.0.1.1.dev

Sign up to get free protection for your applications and to get access to all the features.
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
+