wxruby 1.9.3-i386-mswin32 → 1.9.4-i386-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/LICENSE +53 -53
  2. data/README +299 -299
  3. data/lib/wx/classes/evthandler.rb +9 -0
  4. data/lib/wx/classes/timer.rb +25 -0
  5. data/lib/wx/version.rb +1 -1
  6. data/lib/wx.rb +42 -42
  7. data/lib/wxruby2.exp +0 -0
  8. data/lib/wxruby2.lib +0 -0
  9. data/lib/wxruby2.so +0 -0
  10. data/samples/SAMPLES-LICENSE.TXT +17 -17
  11. data/samples/bigdemo/About.rbw +39 -39
  12. data/samples/bigdemo/ColorPanel.rbw +25 -25
  13. data/samples/bigdemo/GridSimple.rbw +80 -80
  14. data/samples/bigdemo/MDIDemo.rbw +59 -59
  15. data/samples/bigdemo/PopupMenu.rbw +151 -151
  16. data/samples/bigdemo/Sizers.rbw +545 -545
  17. data/samples/bigdemo/bigdemo.rb +826 -826
  18. data/samples/bigdemo/demoTemplate.rbw +37 -37
  19. data/samples/bigdemo/icons/choice.xpm +27 -27
  20. data/samples/bigdemo/icons/combo.xpm +27 -27
  21. data/samples/bigdemo/icons/copy.xpm +25 -25
  22. data/samples/bigdemo/icons/cut.xpm +24 -24
  23. data/samples/bigdemo/icons/gauge.xpm +27 -27
  24. data/samples/bigdemo/icons/help.xpm +25 -25
  25. data/samples/bigdemo/icons/list.xpm +27 -27
  26. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  27. data/samples/bigdemo/icons/new.xpm +24 -24
  28. data/samples/bigdemo/icons/ogl.ico +0 -0
  29. data/samples/bigdemo/icons/ogl.xpm +45 -45
  30. data/samples/bigdemo/icons/open.xpm +26 -26
  31. data/samples/bigdemo/icons/paste.xpm +38 -38
  32. data/samples/bigdemo/icons/preview.xpm +26 -26
  33. data/samples/bigdemo/icons/print.xpm +26 -26
  34. data/samples/bigdemo/icons/radio.xpm +27 -27
  35. data/samples/bigdemo/icons/robert.xpm +415 -415
  36. data/samples/bigdemo/icons/save.xpm +25 -25
  37. data/samples/bigdemo/icons/smiles.xpm +39 -39
  38. data/samples/bigdemo/icons/smiley.xpm +42 -42
  39. data/samples/bigdemo/icons/stattext.xpm +24 -24
  40. data/samples/bigdemo/icons/test2.bmp +0 -0
  41. data/samples/bigdemo/icons/test2.xpm +79 -79
  42. data/samples/bigdemo/icons/text.xpm +27 -27
  43. data/samples/bigdemo/icons/tog1.xpm +38 -38
  44. data/samples/bigdemo/icons/tog2.xpm +38 -38
  45. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  46. data/samples/bigdemo/tips.txt +7 -7
  47. data/samples/bigdemo/utils.rb +11 -11
  48. data/samples/bigdemo/wxButton.rbw +66 -66
  49. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
  50. data/samples/bigdemo/wxCheckBox.rbw +52 -52
  51. data/samples/bigdemo/wxCheckListBox.rbw +77 -77
  52. data/samples/bigdemo/wxChoice.rbw +49 -49
  53. data/samples/bigdemo/wxColourDialog.rbw +34 -34
  54. data/samples/bigdemo/wxComboBox.rbw +79 -79
  55. data/samples/bigdemo/wxDialog.rbw +92 -92
  56. data/samples/bigdemo/wxDirDialog.rbw +32 -32
  57. data/samples/bigdemo/wxFileDialog.rbw +39 -39
  58. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
  59. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
  60. data/samples/bigdemo/wxFontDialog.rbw +176 -176
  61. data/samples/bigdemo/wxFrame.rbw +55 -55
  62. data/samples/bigdemo/wxGauge.rbw +73 -73
  63. data/samples/bigdemo/wxGrid.rbw +68 -68
  64. data/samples/bigdemo/wxListBox.rbw +142 -142
  65. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
  66. data/samples/bigdemo/wxMDIWindows.rbw +52 -52
  67. data/samples/bigdemo/wxMenu.rbw +238 -238
  68. data/samples/bigdemo/wxMessageDialog.rbw +30 -30
  69. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
  70. data/samples/bigdemo/wxNotebook.rbw +138 -138
  71. data/samples/bigdemo/wxProgressDialog.rbw +45 -45
  72. data/samples/bigdemo/wxRadioBox.rbw +74 -74
  73. data/samples/bigdemo/wxRadioButton.rbw +127 -127
  74. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
  75. data/samples/bigdemo/wxScrolledWindow.rbw +201 -201
  76. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
  77. data/samples/bigdemo/wxSlider.rbw +44 -44
  78. data/samples/bigdemo/wxSpinButton.rbw +52 -52
  79. data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
  80. data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
  81. data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
  82. data/samples/bigdemo/wxStaticText.rbw +57 -57
  83. data/samples/bigdemo/wxStatusBar.rbw +128 -128
  84. data/samples/bigdemo/wxTextCtrl.rbw +151 -151
  85. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
  86. data/samples/bigdemo/wxToggleButton.rbw +51 -51
  87. data/samples/bigdemo/wxToolBar.rbw +133 -133
  88. data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
  89. data/samples/calendar/calendar.rb +275 -275
  90. data/samples/caret/caret.rb +286 -286
  91. data/samples/caret/mondrian.xpm +44 -44
  92. data/samples/controls/controls.rb +1140 -1140
  93. data/samples/controls/get_item_sample.rb +87 -87
  94. data/samples/controls/icons/choice.xpm +27 -27
  95. data/samples/controls/icons/combo.xpm +27 -27
  96. data/samples/controls/icons/gauge.xpm +27 -27
  97. data/samples/controls/icons/list.xpm +27 -27
  98. data/samples/controls/icons/radio.xpm +27 -27
  99. data/samples/controls/icons/stattext.xpm +24 -24
  100. data/samples/controls/icons/text.xpm +27 -27
  101. data/samples/controls/mondrian.xpm +44 -44
  102. data/samples/dialogs/dialogs.rb +724 -724
  103. data/samples/dialogs/tips.txt +18 -18
  104. data/samples/drawing/graphics_drawing.rb +22 -18
  105. data/samples/drawing/images.rb +48 -48
  106. data/samples/etc/activation.rb +108 -108
  107. data/samples/etc/choice.rb +72 -72
  108. data/samples/etc/miniframe.rb +84 -84
  109. data/samples/etc/sash.rb +135 -135
  110. data/samples/etc/scrollwin.rb +116 -116
  111. data/samples/etc/system_settings.rb +258 -258
  112. data/samples/etc/threaded.rb +5 -8
  113. data/samples/etc/wizard.rb +79 -79
  114. data/samples/html/html.rb +14 -10
  115. data/samples/listbook/listbook.rb +181 -181
  116. data/samples/listbook/listbook.xrc +370 -370
  117. data/samples/mdi/mdi.rb +87 -87
  118. data/samples/minimal/minimal.rb +85 -85
  119. data/samples/minimal/nothing.rb +21 -21
  120. data/samples/text/textctrl.rb +124 -124
  121. data/samples/text/unicode.rb +238 -238
  122. data/samples/text/utf8.txt +14 -14
  123. data/samples/treectrl/treectrl.rb +1180 -1180
  124. data/samples/xrc/samples.xrc +46 -46
  125. data/samples/xrc/xrc_sample.rb +107 -107
  126. metadata +3 -3
@@ -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
- @panel.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
+ @panel.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()