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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7daea4298f8fa4179a561773567028921b532dfa
4
- data.tar.gz: 086761364b235c6e588cdccfe7642861dc17b2f7
3
+ metadata.gz: 62bb4050b38b7f1e7b288cedacfddd13ee25c63e
4
+ data.tar.gz: eb494f8e224d34094cd6667e993f2d86736cb011
5
5
  SHA512:
6
- metadata.gz: 5b613965f1aeb188536fa7ad27cb6b9dca2d69a2bcf0283c6cc23339414335142d6a8c4e2c39372aab544a5b2c5dc94dbb272b81733d2367b68238f9810c65c4
7
- data.tar.gz: 0ee62eed5e4e037f9f88f171de4fbdb85bfbed0656887a02f01fb1b0dcbf5cbc77b356d6ff102e309a6718751b8346596d6d133a359e7071544bab82f7ccf452
6
+ metadata.gz: c67e8df721c80d812e545a0d7639c3677d6279c2bc2a20ba06fe016419e0a97ce9418da845f890ed2eb7c74f9d4ac2b123c623449f9a5be4042f14a48678607c
7
+ data.tar.gz: d779255587399de39fc5d014d07f19e932b4d4a528af0e1acc1451722e1b3298a4a9e207179e0540c785eacfa2c3bc7f7c528437585d57cbec66e2b68ee97f1d
data/.gitignore CHANGED
@@ -47,3 +47,6 @@ tmp
47
47
  _yardoc
48
48
  doc/
49
49
  /Debug
50
+
51
+ #old and tested data
52
+ old_ext/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Rakefile CHANGED
@@ -7,6 +7,11 @@ require "rake/testtask"
7
7
  require "rubygems/package_task"
8
8
  require "rdoc/task"
9
9
 
10
+ begin
11
+ require "rspec/core/rake_task"
12
+ rescue LoadError
13
+ end
14
+
10
15
  begin
11
16
  require 'rake/extensiontask'
12
17
  rescue LoadError
@@ -56,6 +61,9 @@ Rake::TestTask.new do |t|
56
61
  t.verbose = true
57
62
  end
58
63
 
64
+ RSpec::Core::RakeTask.new if Object.const_defined?(:RSpec)
65
+
66
+
59
67
  RDoc::Task.new do |rdoc|
60
68
  rdoc.title = "rwx RDocs"
61
69
  rdoc.main = "README.rdoc"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1-dev
1
+ 0.0.1.1-dev
@@ -88,10 +88,14 @@ if(wx_config = find_executable('wx-config'))
88
88
  have_member_func("wxFontPickerCtrl","GetSelectedColour","wx/fontpicker.h")
89
89
  have_member_func("wxInfoBar","GetButtonCount","wx/infobar.h")
90
90
 
91
+ have_member_func("wxOwnerDrawnComboBox","IsListEmpty","wx/odcombo.h")
92
+
91
93
  #check for enum flags
92
94
  have_const("wxFD_NO_FOLLOW","wx/filedlg.h")
93
95
  have_const("wxDIRCTRL_DEFAULT_STYLE",["wx/wx.h", "wx/dirctrl.h"])
94
-
96
+ have_func("wxDirCtrl()",["wx/wx.h", "wx/dirctrl.h"])
97
+ have_const("wxSTC_LEX_DMAP",["wx/wx.h", "wx/stc/stc.h"])
98
+
95
99
  }
96
100
  else
97
101
  abort("wx-config executable not found!")
@@ -113,12 +113,12 @@ rb_data_type_t* unwrapDataType(const VALUE& klass)
113
113
  }
114
114
 
115
115
 
116
- VALUE wrapTypedPtr(void *arg,VALUE klass)
116
+ VALUE wrapTypedPtr(void *arg,VALUE klass, bool allowNull)
117
117
  {
118
- if(arg){
118
+ if(arg || allowNull){
119
119
  rb_data_type_t* datatype = unwrapDataType(klass);
120
120
  if(!datatype)
121
- rb_fatal("%s unknown datatype",rb_class2name(klass));
121
+ rb_fatal("%"PRIsVALUE" unknown datatype", klass);
122
122
 
123
123
  return TypedData_Wrap_Struct(klass, datatype, arg);
124
124
  }
@@ -94,7 +94,7 @@ extern VALUE global_holder;
94
94
  void rwx_refobject(VALUE object);
95
95
  bool rwx_unrefobject(VALUE object);
96
96
 
97
- VALUE wrapTypedPtr(void *arg,VALUE klass);
97
+ VALUE wrapTypedPtr(void *arg,VALUE klass, bool allowNull = false);
98
98
  VALUE wrapTypedPtr(wxObject *object,VALUE klass);
99
99
  VALUE wrapTypedPtr(wxEvtHandler *handler,VALUE klass);
100
100
 
@@ -377,6 +377,30 @@ DLL_LOCAL bool set_hash_option(VALUE hash,const char* name,T& val,T func(const V
377
377
 
378
378
  }
379
379
 
380
+ template <typename C, typename T>
381
+ DLL_LOCAL bool set_hash_option(VALUE hash,const char* name,void (C::*set)(const T&), C& obj,T func(const VALUE&) = unwrap<T> )
382
+ {
383
+ T val;
384
+ bool result = set_hash_option(hash,name,val,func);
385
+ if(result) {
386
+ (obj.*set)(val);
387
+ }
388
+ return result;
389
+
390
+ }
391
+ template <typename C, typename T>
392
+ DLL_LOCAL bool set_hash_option(VALUE hash,const char* name,void (C::*set)(T), C& obj,T func(const VALUE&) = unwrap<T> )
393
+ {
394
+ T val;
395
+ bool result = set_hash_option(hash,name,val,func);
396
+ if(result) {
397
+ (obj.*set)(val);
398
+ }
399
+ return result;
400
+
401
+ }
402
+
403
+
380
404
  DLL_LOCAL bool set_hash_flag_option(VALUE hash,const char* name,const int& flag,int& val);
381
405
 
382
406
  #define macro_attr(attr,type) macro_attr_func(attr,Get##attr(),Set##attr,wrap,unwrap<type>,true)
@@ -438,6 +462,15 @@ DLL_LOCAL VALUE _##func(VALUE self)\
438
462
  return wrap(_self->func());\
439
463
  }
440
464
 
465
+ #define singlereturn_array(func,T) \
466
+ DLL_LOCAL VALUE _##func(VALUE self)\
467
+ {\
468
+ T ary;\
469
+ _self->func(ary);\
470
+ return wrap(ary);\
471
+ }
472
+
473
+
441
474
  #define singlereturn_frozen(func) \
442
475
  DLL_LOCAL VALUE _##func(VALUE self)\
443
476
  {\
@@ -112,12 +112,15 @@
112
112
 
113
113
  #include "wxChoice.hpp"
114
114
  #include "wxComboBox.hpp"
115
+ #include "wxComboCtrl.hpp"
116
+ #include "wxOwnerDrawnComboBox.hpp"
115
117
  #include "wxBitmapComboBox.hpp"
116
118
 
117
119
  #include "wxSlider.hpp"
118
120
 
119
121
  #include "wxSpinButton.hpp"
120
122
  #include "wxSpinCtrl.hpp"
123
+ #include "wxSpinCtrlDouble.hpp"
121
124
 
122
125
  #include "wxTextArea.hpp"
123
126
  #include "wxTextEntry.hpp"
@@ -146,6 +149,7 @@
146
149
  #include "wxFileCtrlBase.hpp"
147
150
  #include "wxFileCtrl.hpp"
148
151
  #include "wxFileCtrlGeneric.hpp"
152
+ #include "wxDirCtrl.hpp"
149
153
 
150
154
  #include "wxCalendarCtrlBase.hpp"
151
155
  #include "wxCalendarCtrl.hpp"
@@ -207,6 +211,8 @@
207
211
 
208
212
  #include "wxPreferences.hpp"
209
213
 
214
+ #include <wx/apptrait.h>
215
+
210
216
  VALUE rb_mWX;
211
217
 
212
218
  void rb_define_attr_method(VALUE klass,std::string name,VALUE(get)(VALUE),VALUE(set)(VALUE,VALUE))
@@ -314,6 +320,7 @@ extern "C" void Init_rwx()
314
320
  Init_WXFileCtrlBase(rb_mWX);
315
321
  Init_WXFileCtrl(rb_mWX);
316
322
  Init_WXFileCtrlGeneric(rb_mWX);
323
+ Init_WXDirCtrl(rb_mWX);
317
324
 
318
325
  Init_WXCalendarCtrlBase(rb_mWX);
319
326
  Init_WXCalendarCtrl(rb_mWX);
@@ -338,6 +345,7 @@ extern "C" void Init_rwx()
338
345
  Init_WXSlider(rb_mWX);
339
346
  Init_WXSpinButton(rb_mWX);
340
347
  Init_WXSpinCtrl(rb_mWX);
348
+ Init_WXSpinCtrlDouble(rb_mWX);
341
349
 
342
350
  Init_WXHyperLink(rb_mWX);
343
351
 
@@ -379,6 +387,8 @@ extern "C" void Init_rwx()
379
387
 
380
388
  Init_WXChoice(rb_mWX);
381
389
  Init_WXComboBox(rb_mWX);
390
+ Init_WXComboCtrl(rb_mWX);
391
+ Init_WXOwnerDrawnComboBox(rb_mWX);
382
392
  Init_WXBitmapComboBox(rb_mWX);
383
393
 
384
394
  Init_WXTreeCtrl(rb_mWX);
@@ -469,4 +479,11 @@ extern "C" void Init_rwx()
469
479
  ->add(wxICON_ASTERISK,"asterisk")
470
480
  ->allow_array = false;
471
481
 
482
+ /*
483
+ int min,max;
484
+ wxString port(wxPlatformInfo::GetPortIdName(wxGUIAppTraits().GetToolkitVersion(&min,&max), false));
485
+
486
+ rb_warn("%s %d.%d", port.c_str().AsChar(), min, max);
487
+ //*/
488
+
472
489
  }
@@ -108,7 +108,14 @@ DLL_LOCAL void Init_WXAnyButton(VALUE rb_mWX)
108
108
  rb_mWX = rb_define_module("WX");
109
109
  rb_cWXWindow = rb_define_class_under(rb_mWX,"Window",rb_cObject);
110
110
  rb_cWXControl = rb_define_class_under(rb_mWX,"Control",rb_cWXWindow);
111
+ #endif
111
112
 
113
+ #ifdef wxHAS_ANY_BUTTON
114
+ using namespace RubyWX::AnyButton;
115
+ rb_cWXAnyButton = rb_define_class_under(rb_mWX,"AnyButton",rb_cWXControl);
116
+ rb_undef_alloc_func(rb_cWXAnyButton);
117
+
118
+ #if 0
112
119
  rb_define_attr(rb_cWXAnyButton,"bitmap_label",1,1);
113
120
  rb_define_attr(rb_cWXAnyButton,"bitmap_pressed",1,1);
114
121
  rb_define_attr(rb_cWXAnyButton,"bitmap_disabled",1,1);
@@ -116,14 +123,8 @@ DLL_LOCAL void Init_WXAnyButton(VALUE rb_mWX)
116
123
  rb_define_attr(rb_cWXAnyButton,"bitmap_focus",1,1);
117
124
  rb_define_attr(rb_cWXAnyButton,"bitmap_selected",1,1);
118
125
  rb_define_attr(rb_cWXAnyButton,"bitmap_hover",1,1);
119
-
120
126
  #endif
121
127
 
122
- #ifdef wxHAS_ANY_BUTTON
123
- using namespace RubyWX::AnyButton;
124
- rb_cWXAnyButton = rb_define_class_under(rb_mWX,"AnyButton",rb_cWXControl);
125
- rb_undef_alloc_func(rb_cWXAnyButton);
126
-
127
128
  rb_define_method(rb_cWXAnyButton,"initialize",RUBY_METHOD_FUNC(_initialize),-1);
128
129
 
129
130
  rb_define_attr_method(rb_cWXAnyButton,"bitmap_label",_getBitmapLabel,_setBitmapLabel);
@@ -53,7 +53,7 @@ public:
53
53
  void app_protected()
54
54
  {
55
55
  if(!ruby_app_inited)
56
- rb_raise(rb_eArgError,"%s is not running.",rb_class2name(rb_cWXApp));\
56
+ rb_raise(rb_eArgError,"%"PRIsVALUE" is not running.",rb_cWXApp);
57
57
  }
58
58
 
59
59
 
@@ -42,7 +42,7 @@ void app_protected();
42
42
  #define APP_PROTECT_NULL DLL_LOCAL VALUE _alloc(VALUE self)\
43
43
  {\
44
44
  app_protected();\
45
- return wrapTypedPtr((void*)NULL,self);\
45
+ return wrapTypedPtr((void*)NULL,self, true);\
46
46
  }
47
47
 
48
48
  #endif /* WXAPP_HPP_ */
@@ -59,7 +59,11 @@ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
59
59
 
60
60
  }
61
61
 
62
- _self->Create(unwrap<wxWindow*>(parent),id,wxDefaultPosition,wxDefaultSize,style);
62
+ if(nil_check(parent)) {
63
+ _self->Create(unwrap<wxWindow*>(parent),id,
64
+ wxDefaultPosition,wxDefaultSize,style
65
+ );
66
+ }
63
67
 
64
68
  }
65
69
 
@@ -241,6 +241,13 @@ DLL_LOCAL VALUE _setMaximized(VALUE self, VALUE val)
241
241
 
242
242
  DLL_LOCAL void Init_WXAuiPane(VALUE rb_mWX)
243
243
  {
244
+
245
+ #if wxUSE_AUI
246
+ using namespace RubyWX::AuiPane;
247
+ rb_cWXAuiPane = rb_define_class_under(rb_mWX,"AuiPane",rb_cObject);
248
+ rb_define_alloc_func(rb_cWXAuiPane,_alloc);
249
+ //rb_define_method(rb_cWXAuiManager,"[]=",RUBY_METHOD_FUNC(_set),2);
250
+
244
251
  #if 0
245
252
  rb_define_attr(rb_cWXAuiPane,"caption",1,1);
246
253
  rb_define_attr(rb_cWXAuiPane,"name",1,1);
@@ -282,12 +289,6 @@ DLL_LOCAL void Init_WXAuiPane(VALUE rb_mWX)
282
289
 
283
290
  #endif
284
291
 
285
- #if wxUSE_AUI
286
- using namespace RubyWX::AuiPane;
287
- rb_cWXAuiPane = rb_define_class_under(rb_mWX,"AuiPane",rb_cObject);
288
- rb_define_alloc_func(rb_cWXAuiPane,_alloc);
289
- //rb_define_method(rb_cWXAuiManager,"[]=",RUBY_METHOD_FUNC(_set),2);
290
-
291
292
  rb_define_attr_method(rb_cWXAuiPane,"caption",_get_caption,_set_caption);
292
293
  rb_define_attr_method(rb_cWXAuiPane,"name",_get_name,_set_name);
293
294
  rb_define_attr_method(rb_cWXAuiPane,"icon",_get_icon,_set_icon);
@@ -5,8 +5,9 @@
5
5
  * Author: hanmac
6
6
  */
7
7
 
8
-
8
+ #include "wxApp.hpp"
9
9
  #include "wxBitmap.hpp"
10
+ #include "wxColor.hpp"
10
11
  #include "wxPalette.hpp"
11
12
  #include "wxDC.hpp"
12
13
  #include <map>
@@ -14,7 +15,7 @@
14
15
 
15
16
  #define _self unwrap<wxBitmap*>(self)
16
17
 
17
- VALUE rb_cWXBitmap;
18
+ VALUE rb_cWXBitmap, rb_cWXMask;
18
19
 
19
20
  typedef std::map<wxWindowID,wxArtID> WindowArt;
20
21
  WindowArt windowArtHolder;
@@ -136,24 +137,42 @@ macro_attr(Height,int)
136
137
  macro_attr(Width,int)
137
138
  macro_attr(Depth,int)
138
139
 
139
- macro_attr(Mask,wxMask*)
140
+ singlereturn(GetMask)
141
+
140
142
  #if wxUSE_PALETTE
141
143
  macro_attr(Palette,wxPalette)
142
144
  #endif
143
145
 
146
+ DLL_LOCAL VALUE _setMask(VALUE self, VALUE val) {
147
+ if(rb_obj_is_kind_of(val, rb_cWXMask))
148
+ _self->SetMask(unwrap<wxMask*>(val));
149
+ else if(is_wrapable<wxColor>(val))
150
+ _self->SetMask(new wxMask(*_self, unwrap<wxColor>(val)));
151
+ #if wxUSE_PALETTE
152
+ else if(FIXNUM_P(val))
153
+ _self->SetMask(new wxMask(*_self, NUM2INT(val)));
154
+ #endif
155
+ else
156
+ _self->SetMask(new wxMask(unwrap<wxBitmap>(val)));
157
+ return val;
158
+ }
159
+
144
160
  DLL_LOCAL VALUE _alloc(VALUE self) {
145
- return wrap(new wxBitmap);
161
+ return wrapTypedPtr(new wxBitmap, self);
146
162
  }
147
163
 
148
164
  DLL_LOCAL VALUE _draw(VALUE self)
149
165
  {
166
+ app_protected();
167
+ rb_check_frozen(self);
168
+
150
169
  wxDC *dc;
151
170
  wxMemoryDC *mdc = new wxMemoryDC;
152
171
  mdc->SelectObject(*_self);
153
172
  #if wxUSE_GRAPHICS_CONTEXT
154
173
  dc = new wxGCDC(*mdc);
155
174
  #else
156
- dc = &mdc;
175
+ dc = mdc;
157
176
  #endif
158
177
  rb_yield(wrap(dc));
159
178
  mdc->SelectObject(wxNullBitmap);
@@ -284,11 +303,17 @@ DLL_LOCAL void Init_WXBitmap(VALUE rb_mWX)
284
303
  rb_define_method(rb_cWXBitmap,"initialize",RUBY_METHOD_FUNC(_initialize),-1);
285
304
  rb_define_private_method(rb_cWXBitmap,"initialize_copy",RUBY_METHOD_FUNC(_initialize_copy),1);
286
305
 
306
+ rb_define_attr_method(rb_cWXBitmap,"height",_getHeight,_setHeight);
307
+ rb_define_attr_method(rb_cWXBitmap,"width",_getWidth,_setWidth);
308
+ rb_define_attr_method(rb_cWXBitmap,"depth",_getDepth,_setDepth);
309
+
310
+ rb_define_attr_method(rb_cWXBitmap,"mask",_GetMask,_setMask);
311
+
287
312
  #if wxUSE_IMAGE
288
313
  rb_define_method(rb_cWXBitmap,"to_image",RUBY_METHOD_FUNC(_to_image),0);
289
314
 
290
315
  rb_define_method(rb_cWXBitmap,"marshal_dump",RUBY_METHOD_FUNC(_marshal_dump),0);
291
- rb_define_method(rb_cWXBitmap,"marshal_load",RUBY_METHOD_FUNC(_marshal_load),1);
316
+ rb_define_method(rb_cWXBitmap,"marshal_load",RUBY_METHOD_FUNC(_marshal_load),-2);
292
317
  #else
293
318
  rb_undef_method(rb_cWXBitmap,"_load");
294
319
  rb_undef_method(rb_cWXBitmap,"_dump");
@@ -298,10 +323,21 @@ DLL_LOCAL void Init_WXBitmap(VALUE rb_mWX)
298
323
  rb_define_attr_method(rb_cWXBitmap,"palette",_getPalette,_setPalette);
299
324
  #endif
300
325
 
326
+ rb_define_method(rb_cWXBitmap,"draw",RUBY_METHOD_FUNC(_draw),0);
327
+
301
328
  rb_define_method(rb_cWXBitmap,"to_bitmap",RUBY_METHOD_FUNC(_to_bitmap),0);
302
329
 
303
330
  rb_define_method(rb_cWXBitmap,"save_file",RUBY_METHOD_FUNC(_save_file),-1);
304
331
 
332
+ registerInfo<wxBitmap>(rb_cWXBitmap);
333
+
334
+ rb_cWXMask = rb_define_class_under(rb_mWX,"Mask",rb_cObject);
335
+ rb_undef_alloc_func(rb_cWXMask);
336
+ rb_undef_method(rb_cWXMask,"initialize_copy");
337
+ rb_undef_method(rb_cWXMask,"_load");
338
+ rb_undef_method(rb_cWXMask,"_dump");
339
+
340
+ registerInfo<wxMask>(rb_cWXMask);
305
341
 
306
342
  registerArtID("folder",wxART_FOLDER);
307
343
 
@@ -45,8 +45,9 @@ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
45
45
  bitmap = wrapBitmap(temp,id,WRAP_BITMAP_ID,wxART_BUTTON);
46
46
  }
47
47
 
48
- _self->Create(unwrap<wxWindow*>(parent),id,bitmap);
49
-
48
+ if(nil_check(parent)) {
49
+ _self->Create(unwrap<wxWindow*>(parent),id,bitmap);
50
+ }
50
51
  }
51
52
 
52
53
  rb_call_super(argc,argv);
@@ -28,8 +28,19 @@ singlefunc(Clear)
28
28
  singlefunc(Popup)
29
29
  singlefunc(Dismiss)
30
30
 
31
+ #if defined(wxBITMAPCOMBOBOX_OWNERDRAWN_BASED) && !defined(HAVE_WXOWNERDRAWNCOMBOBOX_ISLISTEMPTY)
32
+ DLL_LOCAL VALUE _IsListEmpty(VALUE self)
33
+ {
34
+ return wrap(dynamic_cast<wxItemContainer*>(_self)->IsEmpty());
35
+ }
36
+ DLL_LOCAL VALUE _IsTextEmpty(VALUE self)
37
+ {
38
+ return wrap(dynamic_cast<wxTextEntry*>(_self)->IsEmpty());
39
+ }
40
+ #else
31
41
  singlereturn(IsListEmpty)
32
42
  singlereturn(IsTextEmpty)
43
+ #endif
33
44
 
34
45
  /*
35
46
  * call-seq:
@@ -70,15 +81,17 @@ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
70
81
  Choice::set_style_flags(hash,style);
71
82
  TextCtrl::set_style_flags(hash,style);
72
83
  }
73
- _self->Create(
74
- unwrap<wxWindow*>(parent),id,value,
75
- wxDefaultPosition,wxDefaultSize,
76
- choices,style
77
- );
78
84
 
79
- if(selflag && check_index(selection,_self->GetCount()))
80
- _self->SetSelection(selection);
81
-
85
+ if(nil_check(parent)) {
86
+ _self->Create(
87
+ unwrap<wxWindow*>(parent),id,value,
88
+ wxDefaultPosition,wxDefaultSize,
89
+ choices,style
90
+ );
91
+
92
+ if(selflag && check_index(selection,_self->GetCount()))
93
+ _self->SetSelection(selection);
94
+ }
82
95
  }
83
96
 
84
97
  rb_call_super(argc,argv);
@@ -252,14 +265,15 @@ DLL_LOCAL void Init_WXBitmapComboBox(VALUE rb_mWX)
252
265
  rb_define_method(rb_cWXBitmapComboBox,"popup",RUBY_METHOD_FUNC(_Popup),0);
253
266
  rb_define_method(rb_cWXBitmapComboBox,"dismiss",RUBY_METHOD_FUNC(_Dismiss),0);
254
267
 
268
+
269
+ rb_include_module(rb_cWXBitmapComboBox,rb_mWXItemContainer);
270
+ rb_include_module(rb_cWXBitmapComboBox,rb_mWXTextEntry);
271
+
255
272
  rb_undef_method(rb_cWXBitmapComboBox,"empty?");
256
273
 
257
274
  rb_define_method(rb_cWXBitmapComboBox,"list_empty?",RUBY_METHOD_FUNC(_IsListEmpty),0);
258
275
  rb_define_method(rb_cWXBitmapComboBox,"text_empty?",RUBY_METHOD_FUNC(_IsTextEmpty),0);
259
276
 
260
- rb_include_module(rb_cWXBitmapComboBox,rb_mWXItemContainer);
261
- rb_include_module(rb_cWXBitmapComboBox,rb_mWXTextEntry);
262
-
263
277
  rb_define_method(rb_cWXBitmapComboBox,"get_item_bitmap",RUBY_METHOD_FUNC(_getItemBitmap),1);
264
278
  rb_define_method(rb_cWXBitmapComboBox,"set_item_bitmap",RUBY_METHOD_FUNC(_setItemBitmap),2);
265
279
  rb_define_method(rb_cWXBitmapComboBox,"each_item_bitmap",RUBY_METHOD_FUNC(_each_bitmap),0);