wxruby 1.9.0-i386-mswin32 → 1.9.1-i386-mswin32

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 (136) hide show
  1. data/lib/wx.rb +42 -35
  2. data/lib/wx/accessors.rb +52 -0
  3. data/lib/wx/classes/evthandler.rb +36 -32
  4. data/lib/wx/classes/grid.rb +13 -13
  5. data/lib/wx/classes/point.rb +43 -0
  6. data/lib/wx/classes/size.rb +44 -0
  7. data/lib/wx/classes/styledtextctrl.rb +92 -0
  8. data/lib/wx/classes/textctrl.rb +14 -0
  9. data/lib/wx/classes/window.rb +4 -0
  10. data/lib/wx/keyword_ctors.rb +219 -0
  11. data/lib/wx/keyword_defs.rb +455 -0
  12. data/lib/wx/version.rb +1 -1
  13. data/lib/wxruby2.exp +0 -0
  14. data/lib/wxruby2.lib +0 -0
  15. data/lib/wxruby2.so +0 -0
  16. data/samples/SAMPLES-LICENSE.TXT +17 -17
  17. data/samples/aui/aui.rb +6 -5
  18. data/samples/bigdemo/About.rbw +39 -39
  19. data/samples/bigdemo/ColorPanel.rbw +25 -25
  20. data/samples/bigdemo/GridSimple.rbw +80 -80
  21. data/samples/bigdemo/MDIDemo.rbw +59 -59
  22. data/samples/bigdemo/PopupMenu.rbw +151 -151
  23. data/samples/bigdemo/Sizers.rbw +545 -545
  24. data/samples/bigdemo/bigdemo.rb +826 -826
  25. data/samples/bigdemo/demoTemplate.rbw +37 -37
  26. data/samples/bigdemo/icons/choice.xpm +27 -27
  27. data/samples/bigdemo/icons/combo.xpm +27 -27
  28. data/samples/bigdemo/icons/copy.xpm +25 -25
  29. data/samples/bigdemo/icons/cut.xpm +24 -24
  30. data/samples/bigdemo/icons/gauge.xpm +27 -27
  31. data/samples/bigdemo/icons/help.xpm +25 -25
  32. data/samples/bigdemo/icons/list.xpm +27 -27
  33. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  34. data/samples/bigdemo/icons/new.xpm +24 -24
  35. data/samples/bigdemo/icons/ogl.ico +0 -0
  36. data/samples/bigdemo/icons/ogl.xpm +45 -45
  37. data/samples/bigdemo/icons/open.xpm +26 -26
  38. data/samples/bigdemo/icons/paste.xpm +38 -38
  39. data/samples/bigdemo/icons/preview.xpm +26 -26
  40. data/samples/bigdemo/icons/print.xpm +26 -26
  41. data/samples/bigdemo/icons/radio.xpm +27 -27
  42. data/samples/bigdemo/icons/robert.xpm +415 -415
  43. data/samples/bigdemo/icons/save.xpm +25 -25
  44. data/samples/bigdemo/icons/smiles.xpm +39 -39
  45. data/samples/bigdemo/icons/smiley.xpm +42 -42
  46. data/samples/bigdemo/icons/stattext.xpm +24 -24
  47. data/samples/bigdemo/icons/test2.bmp +0 -0
  48. data/samples/bigdemo/icons/test2.xpm +79 -79
  49. data/samples/bigdemo/icons/text.xpm +27 -27
  50. data/samples/bigdemo/icons/tog1.xpm +38 -38
  51. data/samples/bigdemo/icons/tog2.xpm +38 -38
  52. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  53. data/samples/bigdemo/tips.txt +7 -7
  54. data/samples/bigdemo/utils.rb +11 -11
  55. data/samples/bigdemo/wxButton.rbw +66 -66
  56. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
  57. data/samples/bigdemo/wxCheckBox.rbw +52 -52
  58. data/samples/bigdemo/wxCheckListBox.rbw +77 -77
  59. data/samples/bigdemo/wxChoice.rbw +49 -49
  60. data/samples/bigdemo/wxColourDialog.rbw +34 -34
  61. data/samples/bigdemo/wxComboBox.rbw +79 -79
  62. data/samples/bigdemo/wxDialog.rbw +92 -92
  63. data/samples/bigdemo/wxDirDialog.rbw +32 -32
  64. data/samples/bigdemo/wxFileDialog.rbw +39 -39
  65. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
  66. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
  67. data/samples/bigdemo/wxFontDialog.rbw +176 -176
  68. data/samples/bigdemo/wxFrame.rbw +55 -55
  69. data/samples/bigdemo/wxGauge.rbw +73 -73
  70. data/samples/bigdemo/wxGrid.rbw +68 -68
  71. data/samples/bigdemo/wxListBox.rbw +142 -142
  72. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
  73. data/samples/bigdemo/wxMDIWindows.rbw +52 -52
  74. data/samples/bigdemo/wxMenu.rbw +238 -238
  75. data/samples/bigdemo/wxMessageDialog.rbw +30 -30
  76. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
  77. data/samples/bigdemo/wxNotebook.rbw +138 -138
  78. data/samples/bigdemo/wxProgressDialog.rbw +45 -45
  79. data/samples/bigdemo/wxRadioBox.rbw +74 -74
  80. data/samples/bigdemo/wxRadioButton.rbw +127 -127
  81. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
  82. data/samples/bigdemo/wxScrolledWindow.rbw +196 -196
  83. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
  84. data/samples/bigdemo/wxSlider.rbw +44 -44
  85. data/samples/bigdemo/wxSpinButton.rbw +52 -52
  86. data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
  87. data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
  88. data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
  89. data/samples/bigdemo/wxStaticText.rbw +57 -57
  90. data/samples/bigdemo/wxStatusBar.rbw +128 -128
  91. data/samples/bigdemo/wxTextCtrl.rbw +151 -151
  92. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
  93. data/samples/bigdemo/wxToggleButton.rbw +51 -51
  94. data/samples/bigdemo/wxToolBar.rbw +133 -133
  95. data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
  96. data/samples/calendar/calendar.rb +275 -275
  97. data/samples/caret/caret.rb +296 -296
  98. data/samples/caret/mondrian.xpm +44 -44
  99. data/samples/controls/controls.rb +1140 -1140
  100. data/samples/controls/get_item_sample.rb +87 -87
  101. data/samples/controls/icons/choice.xpm +27 -27
  102. data/samples/controls/icons/combo.xpm +27 -27
  103. data/samples/controls/icons/gauge.xpm +27 -27
  104. data/samples/controls/icons/list.xpm +27 -27
  105. data/samples/controls/icons/radio.xpm +27 -27
  106. data/samples/controls/icons/stattext.xpm +24 -24
  107. data/samples/controls/icons/text.xpm +27 -27
  108. data/samples/controls/mondrian.xpm +44 -44
  109. data/samples/dialogs/dialogs.rb +724 -724
  110. data/samples/dialogs/tips.txt +18 -18
  111. data/samples/etc/activation.rb +108 -108
  112. data/samples/etc/choice.rb +72 -72
  113. data/samples/etc/miniframe.rb +84 -84
  114. data/samples/etc/sash.rb +135 -135
  115. data/samples/etc/scrollwin.rb +116 -116
  116. data/samples/etc/system_settings.rb +258 -258
  117. data/samples/etc/wizard.rb +81 -81
  118. data/samples/event/event.rb +184 -0
  119. data/samples/images/images.rb +48 -48
  120. data/samples/listbook/listbook.rb +183 -183
  121. data/samples/listbook/listbook.xrc +370 -370
  122. data/samples/mdi/mdi.rb +87 -87
  123. data/samples/minimal/minimal.rb +83 -95
  124. data/samples/minimal/mondrian.png +0 -0
  125. data/samples/minimal/nothing.rb +46 -46
  126. data/samples/minimal/text.rb +35 -35
  127. data/samples/text/scintilla.rb +22 -28
  128. data/samples/text/textctrl.rb +124 -124
  129. data/samples/text/unicode.rb +238 -238
  130. data/samples/text/utf8.txt +14 -14
  131. data/samples/treectrl/treectrl.rb +1210 -1210
  132. data/samples/xrc/samples.xrc +46 -46
  133. data/samples/xrc/xrc_sample.rb +107 -107
  134. metadata +13 -5
  135. data/samples/minimal/mondrian.ico +0 -0
  136. data/samples/minimal/mondrian.xpm +0 -44
@@ -1,275 +1,275 @@
1
- #!/usr/bin/env ruby
2
- # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
- # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
-
5
- begin
6
- require 'wx'
7
- rescue LoadError => no_wx_err
8
- begin
9
- require 'rubygems'
10
- require 'wx'
11
- rescue LoadError
12
- raise no_wx_err
13
- end
14
- end
15
- include Wx
16
-
17
- require 'date'
18
-
19
-
20
- Calendar_File_About = ID_ABOUT
21
- Calendar_File_Quit = ID_EXIT
22
- Calendar_Cal_Monday = 200
23
- Calendar_Cal_Holidays = 201
24
- Calendar_Cal_Special = 202
25
- Calendar_Cal_Month = 203
26
- Calendar_Cal_Year = 204
27
- Calendar_Cal_SeqMonth = 205
28
- Calendar_Cal_SurroundWeeks = 206
29
-
30
-
31
- def format_date(d)
32
- return "#{d.year}-#{d.mon}-#{d.day}"
33
- end
34
-
35
- class MyCalendar < CalendarCtrl
36
- def initialize(parent, display_frame, initial_date, calendar_flags)
37
- super(parent, -1,
38
- initial_date,
39
- DEFAULT_POSITION,
40
- DEFAULT_SIZE,
41
- calendar_flags | RAISED_BORDER)
42
-
43
- @display = display_frame
44
- @date = initial_date
45
- @weekday_names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
46
-
47
- id = get_id
48
- evt_calendar(id) {|event| on_calendar(event)}
49
- evt_calendar_month(id) {on_cal_month_change}
50
- evt_calendar_year(id) {on_cal_year_change}
51
- evt_calendar_sel_changed(id) {|event| on_calendar_change(event)}
52
- evt_calendar_weekday_clicked(id) {|event| on_calendar_weekday_click(event)}
53
- end
54
-
55
- def on_calendar(event)
56
- @date = event.get_date
57
- @display.set_date(@date)
58
- end
59
-
60
- def on_calendar_change(event)
61
- @date = event.get_date
62
- log_status("Selected date: #{format_date(@date)}")
63
- end
64
-
65
- def on_cal_month_change
66
- log_status("Calendar month changed")
67
- end
68
-
69
- def on_cal_year_change
70
- log_status("Calendar year changed")
71
- end
72
-
73
- def on_calendar_weekday_click(event)
74
- wday = event.get_week_day
75
- log_status("Clicked on #{@weekday_names[wday]}")
76
- end
77
-
78
- attr_reader :date
79
- end
80
-
81
- class MyFrame < Frame
82
- def initialize(title)
83
- super(nil, -1, title)
84
- @panel = Wx::Panel.new(self)
85
- add_menu_bar
86
- add_status_bar
87
-
88
- @calendar_flags = CAL_MONDAY_FIRST | CAL_SHOW_HOLIDAYS
89
-
90
- now = DateTime.now
91
- @calendar = MyCalendar.new(@panel, self, now, @calendar_flags)
92
-
93
- @sizer = BoxSizer.new(VERTICAL)
94
- configure_window
95
-
96
- evt_menu(Calendar_File_Quit) {on_quit}
97
- evt_menu(Calendar_File_About) {on_about}
98
-
99
- evt_menu(Calendar_Cal_Monday) {|event| on_cal_monday(event)}
100
- evt_menu(Calendar_Cal_Holidays) {|event| on_cal_holidays(event)}
101
- evt_menu(Calendar_Cal_Special) {|event| on_cal_special(event)}
102
-
103
- evt_menu(Calendar_Cal_Month) {|event| on_cal_allow_month(event)}
104
- evt_menu(Calendar_Cal_Year) {|event| on_cal_allow_year(event)}
105
-
106
- evt_menu(Calendar_Cal_SeqMonth) {|event| on_cal_seq_month(event)}
107
- evt_menu(Calendar_Cal_SurroundWeeks) {|event| on_cal_show_surrounding_weeks(event)}
108
-
109
- evt_update_ui(Calendar_Cal_Year) {|event| on_allow_year_update(event)}
110
- end
111
-
112
- def add_menu_bar
113
- # create a menu bar
114
- menu_file = Menu.new
115
-
116
- menu_file.append(Calendar_File_About, "&About...\tCtrl-A", "Show about dialog")
117
- menu_file.append_separator()
118
- menu_file.append(Calendar_File_Quit, "E&xit\tAlt-X", "Quit self program")
119
-
120
- menu_cal = Menu.new
121
- menu_cal.append(Calendar_Cal_Monday,
122
- "Monday &first weekday\tCtrl-F",
123
- "Toggle between Mon and Sun as the first week day",
124
- ITEM_CHECK)
125
- menu_cal.append(Calendar_Cal_Holidays, "Show &holidays\tCtrl-H",
126
- "Toggle highlighting the holidays",
127
- ITEM_CHECK)
128
- menu_cal.append(Calendar_Cal_Special, "Highlight &special dates\tCtrl-S",
129
- "Test custom highlighting",
130
- ITEM_CHECK)
131
- menu_cal.append(Calendar_Cal_SurroundWeeks,
132
- "Show s&urrounding weeks\tCtrl-W",
133
- "Show the neighbouring weeks in the prev/next month",
134
- ITEM_CHECK)
135
- menu_cal.append_separator()
136
- menu_cal.append(Calendar_Cal_SeqMonth,
137
- "To&ggle month selector style\tCtrl-G",
138
- "Use another style for the calendar controls",
139
- ITEM_CHECK)
140
- menu_cal.append(Calendar_Cal_Month, "&Month can be changed\tCtrl-M",
141
- "Allow changing the month in the calendar",
142
- ITEM_CHECK)
143
- menu_cal.append(Calendar_Cal_Year, "&Year can be changed\tCtrl-Y",
144
- "Allow changing the year in the calendar",
145
- ITEM_CHECK)
146
-
147
- # now append the freshly created menu to the menu bar...
148
- menu_bar = MenuBar.new
149
- menu_bar.append(menu_file, "&File")
150
- menu_bar.append(menu_cal, "&Calendar")
151
-
152
- menu_bar.check(Calendar_Cal_Monday, TRUE)
153
- menu_bar.check(Calendar_Cal_Holidays, TRUE)
154
- menu_bar.check(Calendar_Cal_Month, TRUE)
155
- menu_bar.check(Calendar_Cal_Year, TRUE)
156
-
157
- # ... and attach self menu bar to the frame
158
- set_menu_bar(menu_bar)
159
- end
160
-
161
- def add_status_bar
162
- # create a status bar just for fun (by default with 1 pane only)
163
- create_status_bar
164
- set_status_text("Welcome to Windows!")
165
- end
166
-
167
- def configure_window
168
- @sizer.add(@calendar, 0, Wx::ALIGN_CENTRE|Wx::ALL, 5)
169
- @sizer.set_size_hints(@panel)
170
- layout
171
- @panel.set_sizer(@sizer)
172
- end
173
-
174
- def on_quit
175
- # true is to force the frame to close
176
- close(true)
177
- end
178
-
179
- def on_about
180
- message_box("wxRuby CalendarCtrl sample\nby Kevin Smith\n" +
181
- "based on the wxWidgets version by Vadim Zeitlin",
182
- "About Calendar", OK | ICON_INFORMATION, self)
183
- end
184
-
185
- def on_cal_monday(event)
186
- enable = get_menu_bar().is_checked(event.get_id())
187
- toggle_cal_style(enable, CAL_MONDAY_FIRST)
188
- end
189
-
190
- def on_cal_holidays(event)
191
- enable = get_menu_bar().is_checked(event.get_id())
192
- @calendar.enable_holiday_display(enable)
193
- end
194
-
195
- def on_cal_special(event)
196
- highlight_special(get_menu_bar().is_checked(event.get_id()))
197
- end
198
-
199
- def on_cal_allow_month(event)
200
- allow = get_menu_bar().is_checked(event.get_id())
201
- @calendar.enable_month_change(allow)
202
- end
203
-
204
- def on_cal_allow_year(event)
205
- allow = get_menu_bar().is_checked(event.get_id())
206
- @calendar.enable_year_change(allow)
207
- end
208
-
209
- def on_cal_seq_month(event)
210
- allow = get_menu_bar().is_checked(event.get_id())
211
- toggle_cal_style(allow, CAL_SEQUENTIAL_MONTH_SELECTION)
212
- end
213
-
214
- def on_cal_show_surrounding_weeks(event)
215
- allow = get_menu_bar().is_checked(event.get_id())
216
- toggle_cal_style(allow, CAL_SHOW_SURROUNDING_WEEKS)
217
- end
218
-
219
- def on_allow_year_update(event)
220
- event.enable( get_menu_bar().is_checked(Calendar_Cal_Month))
221
- end
222
-
223
- def toggle_cal_style(on,flag)
224
- style = @calendar.get_window_style_flag
225
- date = @calendar.date
226
- @sizer.detach(@calendar)
227
- @calendar.destroy
228
- if on
229
- style |= flag
230
- else
231
- style &= ~flag
232
- end
233
- @calendar = MyCalendar.new(@panel, self, date, style)
234
- @sizer.add(@calendar, 0, Wx::ALIGN_CENTRE|Wx::ALL, 5)
235
- layout
236
- end
237
-
238
- def highlight_special(on)
239
- if on
240
- attr_red_circle = CalendarDateAttr.new(CAL_BORDER_ROUND, RED)
241
- attr_green_square = CalendarDateAttr.new(CAL_BORDER_SQUARE, GREEN)
242
- # This wraps correctly, but causes problems because the colour is freed
243
- # when the attribute is reset.
244
- #
245
- # attr_header_like = CalendarDateAttr.new(BLUE, LIGHT_GREY)
246
-
247
- @calendar.set_attr(17, attr_red_circle)
248
- @calendar.set_attr(29, attr_green_square)
249
- # @calendar.set_attr(13, attr_header_like)
250
- else
251
- @calendar.reset_attr(17)
252
- @calendar.reset_attr(29)
253
- # @calendar.reset_attr(13)
254
- end
255
- @calendar.refresh()
256
- end
257
-
258
- def set_date(d)
259
- str = "%s-%s-%s" % [ d.year, d.mon, d.day ]
260
- Wx::MessageDialog.new( self, "The selected date is #{str}",
261
- "Date chosen" ).show_modal
262
- end
263
-
264
- end
265
-
266
-
267
- class RbApp < App
268
- def on_init()
269
- frame = MyFrame.new("Calendar Windows sample")
270
- frame.show(true)
271
- end
272
- end
273
-
274
- a = RbApp.new
275
- a.main_loop()
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+ include Wx
16
+
17
+ require 'date'
18
+
19
+
20
+ Calendar_File_About = ID_ABOUT
21
+ Calendar_File_Quit = ID_EXIT
22
+ Calendar_Cal_Monday = 200
23
+ Calendar_Cal_Holidays = 201
24
+ Calendar_Cal_Special = 202
25
+ Calendar_Cal_Month = 203
26
+ Calendar_Cal_Year = 204
27
+ Calendar_Cal_SeqMonth = 205
28
+ Calendar_Cal_SurroundWeeks = 206
29
+
30
+
31
+ def format_date(d)
32
+ return "#{d.year}-#{d.mon}-#{d.day}"
33
+ end
34
+
35
+ class MyCalendar < CalendarCtrl
36
+ def initialize(parent, display_frame, initial_date, calendar_flags)
37
+ super(parent, -1,
38
+ initial_date,
39
+ DEFAULT_POSITION,
40
+ DEFAULT_SIZE,
41
+ calendar_flags | RAISED_BORDER)
42
+
43
+ @display = display_frame
44
+ @date = initial_date
45
+ @weekday_names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
46
+
47
+ id = get_id
48
+ evt_calendar(id) {|event| on_calendar(event)}
49
+ evt_calendar_month(id) {on_cal_month_change}
50
+ evt_calendar_year(id) {on_cal_year_change}
51
+ evt_calendar_sel_changed(id) {|event| on_calendar_change(event)}
52
+ evt_calendar_weekday_clicked(id) {|event| on_calendar_weekday_click(event)}
53
+ end
54
+
55
+ def on_calendar(event)
56
+ @date = event.get_date
57
+ @display.set_date(@date)
58
+ end
59
+
60
+ def on_calendar_change(event)
61
+ @date = event.get_date
62
+ log_status("Selected date: #{format_date(@date)}")
63
+ end
64
+
65
+ def on_cal_month_change
66
+ log_status("Calendar month changed")
67
+ end
68
+
69
+ def on_cal_year_change
70
+ log_status("Calendar year changed")
71
+ end
72
+
73
+ def on_calendar_weekday_click(event)
74
+ wday = event.get_week_day
75
+ log_status("Clicked on #{@weekday_names[wday]}")
76
+ end
77
+
78
+ attr_reader :date
79
+ end
80
+
81
+ class MyFrame < Frame
82
+ def initialize(title)
83
+ super(nil, -1, title)
84
+ @panel = Wx::Panel.new(self)
85
+ add_menu_bar
86
+ add_status_bar
87
+
88
+ @calendar_flags = CAL_MONDAY_FIRST | CAL_SHOW_HOLIDAYS
89
+
90
+ now = DateTime.now
91
+ @calendar = MyCalendar.new(@panel, self, now, @calendar_flags)
92
+
93
+ @sizer = BoxSizer.new(VERTICAL)
94
+ configure_window
95
+
96
+ evt_menu(Calendar_File_Quit) {on_quit}
97
+ evt_menu(Calendar_File_About) {on_about}
98
+
99
+ evt_menu(Calendar_Cal_Monday) {|event| on_cal_monday(event)}
100
+ evt_menu(Calendar_Cal_Holidays) {|event| on_cal_holidays(event)}
101
+ evt_menu(Calendar_Cal_Special) {|event| on_cal_special(event)}
102
+
103
+ evt_menu(Calendar_Cal_Month) {|event| on_cal_allow_month(event)}
104
+ evt_menu(Calendar_Cal_Year) {|event| on_cal_allow_year(event)}
105
+
106
+ evt_menu(Calendar_Cal_SeqMonth) {|event| on_cal_seq_month(event)}
107
+ evt_menu(Calendar_Cal_SurroundWeeks) {|event| on_cal_show_surrounding_weeks(event)}
108
+
109
+ evt_update_ui(Calendar_Cal_Year) {|event| on_allow_year_update(event)}
110
+ end
111
+
112
+ def add_menu_bar
113
+ # create a menu bar
114
+ menu_file = Menu.new
115
+
116
+ menu_file.append(Calendar_File_About, "&About...\tCtrl-A", "Show about dialog")
117
+ menu_file.append_separator()
118
+ menu_file.append(Calendar_File_Quit, "E&xit\tAlt-X", "Quit self program")
119
+
120
+ menu_cal = Menu.new
121
+ menu_cal.append(Calendar_Cal_Monday,
122
+ "Monday &first weekday\tCtrl-F",
123
+ "Toggle between Mon and Sun as the first week day",
124
+ ITEM_CHECK)
125
+ menu_cal.append(Calendar_Cal_Holidays, "Show &holidays\tCtrl-H",
126
+ "Toggle highlighting the holidays",
127
+ ITEM_CHECK)
128
+ menu_cal.append(Calendar_Cal_Special, "Highlight &special dates\tCtrl-S",
129
+ "Test custom highlighting",
130
+ ITEM_CHECK)
131
+ menu_cal.append(Calendar_Cal_SurroundWeeks,
132
+ "Show s&urrounding weeks\tCtrl-W",
133
+ "Show the neighbouring weeks in the prev/next month",
134
+ ITEM_CHECK)
135
+ menu_cal.append_separator()
136
+ menu_cal.append(Calendar_Cal_SeqMonth,
137
+ "To&ggle month selector style\tCtrl-G",
138
+ "Use another style for the calendar controls",
139
+ ITEM_CHECK)
140
+ menu_cal.append(Calendar_Cal_Month, "&Month can be changed\tCtrl-M",
141
+ "Allow changing the month in the calendar",
142
+ ITEM_CHECK)
143
+ menu_cal.append(Calendar_Cal_Year, "&Year can be changed\tCtrl-Y",
144
+ "Allow changing the year in the calendar",
145
+ ITEM_CHECK)
146
+
147
+ # now append the freshly created menu to the menu bar...
148
+ menu_bar = MenuBar.new
149
+ menu_bar.append(menu_file, "&File")
150
+ menu_bar.append(menu_cal, "&Calendar")
151
+
152
+ menu_bar.check(Calendar_Cal_Monday, TRUE)
153
+ menu_bar.check(Calendar_Cal_Holidays, TRUE)
154
+ menu_bar.check(Calendar_Cal_Month, TRUE)
155
+ menu_bar.check(Calendar_Cal_Year, TRUE)
156
+
157
+ # ... and attach self menu bar to the frame
158
+ set_menu_bar(menu_bar)
159
+ end
160
+
161
+ def add_status_bar
162
+ # create a status bar just for fun (by default with 1 pane only)
163
+ create_status_bar
164
+ set_status_text("Welcome to Windows!")
165
+ end
166
+
167
+ def configure_window
168
+ @sizer.add(@calendar, 0, Wx::ALIGN_CENTRE|Wx::ALL, 5)
169
+ @sizer.set_size_hints(@panel)
170
+ layout
171
+ @panel.set_sizer(@sizer)
172
+ end
173
+
174
+ def on_quit
175
+ # true is to force the frame to close
176
+ close(true)
177
+ end
178
+
179
+ def on_about
180
+ message_box("wxRuby CalendarCtrl sample\nby Kevin Smith\n" +
181
+ "based on the wxWidgets version by Vadim Zeitlin",
182
+ "About Calendar", OK | ICON_INFORMATION, self)
183
+ end
184
+
185
+ def on_cal_monday(event)
186
+ enable = get_menu_bar().is_checked(event.get_id())
187
+ toggle_cal_style(enable, CAL_MONDAY_FIRST)
188
+ end
189
+
190
+ def on_cal_holidays(event)
191
+ enable = get_menu_bar().is_checked(event.get_id())
192
+ @calendar.enable_holiday_display(enable)
193
+ end
194
+
195
+ def on_cal_special(event)
196
+ highlight_special(get_menu_bar().is_checked(event.get_id()))
197
+ end
198
+
199
+ def on_cal_allow_month(event)
200
+ allow = get_menu_bar().is_checked(event.get_id())
201
+ @calendar.enable_month_change(allow)
202
+ end
203
+
204
+ def on_cal_allow_year(event)
205
+ allow = get_menu_bar().is_checked(event.get_id())
206
+ @calendar.enable_year_change(allow)
207
+ end
208
+
209
+ def on_cal_seq_month(event)
210
+ allow = get_menu_bar().is_checked(event.get_id())
211
+ toggle_cal_style(allow, CAL_SEQUENTIAL_MONTH_SELECTION)
212
+ end
213
+
214
+ def on_cal_show_surrounding_weeks(event)
215
+ allow = get_menu_bar().is_checked(event.get_id())
216
+ toggle_cal_style(allow, CAL_SHOW_SURROUNDING_WEEKS)
217
+ end
218
+
219
+ def on_allow_year_update(event)
220
+ event.enable( get_menu_bar().is_checked(Calendar_Cal_Month))
221
+ end
222
+
223
+ def toggle_cal_style(on,flag)
224
+ style = @calendar.get_window_style_flag
225
+ date = @calendar.date
226
+ @sizer.detach(@calendar)
227
+ @calendar.destroy
228
+ if on
229
+ style |= flag
230
+ else
231
+ style &= ~flag
232
+ end
233
+ @calendar = MyCalendar.new(@panel, self, date, style)
234
+ @sizer.add(@calendar, 0, Wx::ALIGN_CENTRE|Wx::ALL, 5)
235
+ layout
236
+ end
237
+
238
+ def highlight_special(on)
239
+ if on
240
+ attr_red_circle = CalendarDateAttr.new(CAL_BORDER_ROUND, RED)
241
+ attr_green_square = CalendarDateAttr.new(CAL_BORDER_SQUARE, GREEN)
242
+ # This wraps correctly, but causes problems because the colour is freed
243
+ # when the attribute is reset.
244
+ #
245
+ # attr_header_like = CalendarDateAttr.new(BLUE, LIGHT_GREY)
246
+
247
+ @calendar.set_attr(17, attr_red_circle)
248
+ @calendar.set_attr(29, attr_green_square)
249
+ # @calendar.set_attr(13, attr_header_like)
250
+ else
251
+ @calendar.reset_attr(17)
252
+ @calendar.reset_attr(29)
253
+ # @calendar.reset_attr(13)
254
+ end
255
+ @calendar.refresh()
256
+ end
257
+
258
+ def set_date(d)
259
+ str = "%s-%s-%s" % [ d.year, d.mon, d.day ]
260
+ Wx::MessageDialog.new( self, "The selected date is #{str}",
261
+ "Date chosen" ).show_modal
262
+ end
263
+
264
+ end
265
+
266
+
267
+ class RbApp < App
268
+ def on_init()
269
+ frame = MyFrame.new("Calendar Windows sample")
270
+ frame.show(true)
271
+ end
272
+ end
273
+
274
+ a = RbApp.new
275
+ a.main_loop()