wxruby 2.0.0-x86-linux → 2.0.1-x86-linux

Sign up to get free protection for your applications and to get access to all the features.
Binary file
Binary file
Binary file
data/art/wxruby.png ADDED
Binary file
data/lib/wx/accessors.rb CHANGED
@@ -47,9 +47,7 @@ module WxRubyStyleAccessors
47
47
  if respond_to?(meth)
48
48
  send(meth, *args)
49
49
  else
50
- e = NoMethodError.new("undefined method '#{sym}' for #{self.inspect}")
51
- e.set_backtrace(caller)
52
- Kernel.raise e
50
+ super
53
51
  end
54
52
  end
55
53
  end
@@ -11,8 +11,9 @@ class Wx::CheckListBox
11
11
 
12
12
  # Call method in ControlWithItems, then sync item data
13
13
  def append(item, data = nil)
14
- super(item)
14
+ i = super(item)
15
15
  __wx_item_data[count - 1] = data
16
+ return i
16
17
  end
17
18
 
18
19
  # Call method in ControlWithItems, then sync item data
@@ -145,7 +145,7 @@ class Wx::EvtHandler
145
145
  case window_or_id
146
146
  when Fixnum
147
147
  window_or_id
148
- when Wx::Window, Wx::MenuItem, Wx::ToolBarTool
148
+ when Wx::Window, Wx::MenuItem, Wx::ToolBarTool, Wx::Timer
149
149
  window_or_id.wx_id
150
150
  else
151
151
  Kernel.raise ArgumentError,
@@ -1,6 +1,11 @@
1
1
  # A platform-independent image; can be manipulated more extensively than
2
2
  # Bitmap, but must be converted to a Bitmap for drawing.
3
3
  class Wx::Image
4
+
5
+ # alias for backward compatibility
6
+ alias :get_data :get_rgb_data
7
+ alias :set_data :set_rgb_data
8
+
4
9
  # Load the type-guessing hash from Wx::Bitmap
5
10
  require 'wx/classes/bitmap'
6
11
  BITMAP_TYPE_GUESS = Wx::Bitmap::BITMAP_TYPE_GUESS
@@ -11,10 +11,10 @@ class Wx::ListCtrl
11
11
  # items
12
12
  def get_selections
13
13
  selections = []
14
- item = get_next_item(-1, Wx::LIST_NEXT_BELOW, Wx::LIST_STATE_SELECTED)
14
+ item = get_next_item(-1, Wx::LIST_NEXT_ALL, Wx::LIST_STATE_SELECTED)
15
15
  while item >= 0
16
16
  selections << item
17
- item = get_next_item(item, Wx::LIST_NEXT_BELOW, Wx::LIST_STATE_SELECTED)
17
+ item = get_next_item(item, Wx::LIST_NEXT_ALL, Wx::LIST_STATE_SELECTED)
18
18
  end
19
19
  selections
20
20
  end
@@ -9,7 +9,13 @@ class Wx::Sizer
9
9
  Wx::Parameter[ :user_data, nil ] ]
10
10
 
11
11
  def add_item(item, *mixed_args)
12
- args = Wx::args_as_list(ADD_ITEM_PARAMS, *mixed_args)
12
+
13
+ begin
14
+ args = Wx::args_as_list(ADD_ITEM_PARAMS, *mixed_args)
15
+ rescue => err
16
+ err.set_backtrace(caller)
17
+ Kernel.raise err
18
+ end
13
19
 
14
20
  full_args = []
15
21
 
@@ -0,0 +1,10 @@
1
+ # Class with movable sash to separate two windows
2
+ class Wx::SplitterWindow
3
+ # These were released in wxRuby 2.0 with names slightly out of kilter
4
+ # with the documentation. The correct ones have an underscore before
5
+ # the digit.
6
+ #
7
+ # FIXME - the old names :get_window1 should be deleted in future versions.
8
+ alias :get_window_1 :get_window1
9
+ alias :get_window_2 :get_window2
10
+ end
@@ -24,6 +24,8 @@ class Wx::Timer
24
24
  # In common with other classes, make the id method refer to the
25
25
  # wxWidgets id, not ruby's deprecated name for object_id
26
26
  alias :id :get_id
27
+ # In case a more explicit option is preferred.
28
+ alias :wx_id :get_id
27
29
 
28
30
  # This class can be linked to an owner - an instance of a class
29
31
  # derived from EvtHandler which will receive Timer events. However,
@@ -13,7 +13,13 @@ class Wx::ToolBar
13
13
  Wx::Parameter[ :client_data, nil ] ]
14
14
 
15
15
  def add_item(bitmap1, *mixed_args)
16
- args = Wx::args_as_list(ADD_ITEM_PARAMS, *mixed_args)
16
+
17
+ begin
18
+ args = Wx::args_as_list(ADD_ITEM_PARAMS, *mixed_args)
19
+ rescue => err
20
+ err.set_backtrace(caller)
21
+ Kernel.raise err
22
+ end
17
23
 
18
24
  bitmap2 = args.shift
19
25
  pos = args.shift
data/lib/wx/helpers.rb CHANGED
@@ -9,22 +9,31 @@ module Wx
9
9
  # possible argument. +mixed_args+ is an array which may optionally end
10
10
  # with a set of named arguments
11
11
  def self.args_as_list(param_spec, *mixed_args)
12
- # get keyword arguments from mixed args if supplied, else empty
13
- kwa = mixed_args.last.kind_of?(Hash) ? mixed_args.pop : {}
14
- out_args = []
15
- param_spec.each_with_index do | param, i |
16
- if arg = mixed_args[i] # use the supplied list arg
17
- out_args << arg
18
- elsif kwa.key?(param.name) # use the keyword arg
19
- out_args << kwa[param.name]
20
- else # use the default argument
21
- out_args << param.default
12
+
13
+ begin
14
+ # get keyword arguments from mixed args if supplied, else empty
15
+ kwa = mixed_args.last.kind_of?(Hash) ? mixed_args.pop : {}
16
+ out_args = []
17
+ param_spec.each_with_index do | param, i |
18
+ if arg = mixed_args[i] # use the supplied list arg
19
+ out_args << arg
20
+ elsif kwa.key?(param.name) # use the keyword arg
21
+ out_args << kwa.delete(param.name)
22
+ else # use the default argument
23
+ out_args << param.default
24
+ end
22
25
  end
26
+ rescue
27
+ Kernel.raise ArgumentError,
28
+ "Bad arg composition of #{mixed_args.inspect}"
29
+ end
30
+
31
+ unless kwa.empty?
32
+ Kernel.raise ArgumentError,
33
+ "Unknown keyword argument(s) : #{kwa.keys.inspect}"
23
34
  end
35
+
24
36
  out_args
25
- rescue
26
- Kernel.raise ArgumentError,
27
- "Bad arg composition of #{mixed_args.inspect}"
28
37
  end
29
38
 
30
39
  # Given an integer constant +int_const+, returns an array Wx constant
@@ -163,8 +163,8 @@ module Wx
163
163
  return
164
164
  end
165
165
 
166
- real_args = [ parent ] + self.class.args_as_list(*mixed_args)
167
166
  begin
167
+ real_args = [ parent ] + self.class.args_as_list(*mixed_args)
168
168
  pre_wx_kwctor_init(*real_args)
169
169
  rescue => err
170
170
  msg = "Error initializing #{self.inspect}\n"+
@@ -105,6 +105,15 @@ end
105
105
 
106
106
  # MISCELLANEOUS WINDOWS
107
107
 
108
+ # OpenGL Canvas
109
+ Wx::define_keyword_ctors('GLCanvas') do
110
+ wx_ctor_params :id
111
+ wx_ctor_params :pos, :size, :style => Wx::FULL_REPAINT_ON_RESIZE
112
+ wx_ctor_params :name => 'GLCanvas'
113
+ wx_ctor_params :attrib_list => [Wx::GL_RGBA, Wx::GL_DOUBLEBUFFER]
114
+ wx_ctor_params :palette => Wx::NULL_PALETTE
115
+ end
116
+
108
117
  # A window whose colour changes according to current user settings
109
118
  Wx::define_keyword_ctors('Panel') do
110
119
  wx_ctor_params :id, :pos, :size, :style => Wx::TAB_TRAVERSAL
@@ -227,7 +236,8 @@ end
227
236
  Wx::define_keyword_ctors('DirDialog') do
228
237
  wx_ctor_params :message => 'Choose a directory'
229
238
  wx_ctor_params :default_path => ''
230
- wx_ctor_params :style, :pos, :size, :name => 'wxDirCtrl'
239
+ wx_ctor_params :style => Wx::DD_DEFAULT_STYLE
240
+ wx_ctor_params :pos, :size, :name => 'wxDirCtrl'
231
241
  end
232
242
 
233
243
  # wxFileDialog File selector dialog
@@ -236,7 +246,8 @@ Wx::define_keyword_ctors('FileDialog') do
236
246
  wx_ctor_params :default_dir => ''
237
247
  wx_ctor_params :default_file => ''
238
248
  wx_ctor_params :wildcard => '*.*'
239
- wx_ctor_params :style, :pos
249
+ wx_ctor_params :style => Wx::FD_DEFAULT_STYLE
250
+ wx_ctor_params :pos, :size, :name => 'filedlg'
240
251
  end
241
252
 
242
253
  # wxFindReplaceDialog Text search/replace dialog
@@ -551,8 +562,7 @@ Wx::define_keyword_ctors('HtmlListBox') do
551
562
  end
552
563
 
553
564
  Wx::define_keyword_ctors('DatePickerCtrl') do
554
- wx_ctor_params :id, :dt => Time.now
555
- wx_ctor_params :pos, :size, :style, :validator, :name => 'dateCtrl'
565
+ wx_ctor_params :id, :dt, :pos, :size, :style, :validator, :name => 'dateCtrl'
556
566
  end
557
567
 
558
568
  Wx::define_keyword_ctors('RichTextCtrl') do
data/lib/wx/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Wx
2
- WXRUBY_VERSION = '2.0.0'
2
+ WXRUBY_VERSION = '2.0.1'
3
3
  end
data/lib/wxruby2.so CHANGED
Binary file
@@ -7,16 +7,13 @@ rescue LoadError
7
7
  end
8
8
  require 'wx'
9
9
 
10
-
11
10
  include Wx
12
11
 
13
- BUTTON_CLOSE = 1003
14
-
15
12
  class MyFrame < Frame
16
13
  def initialize(parent, log)
17
14
  @log = log
18
- super(parent, -1, "Shaped Window", DEFAULT_POSITION, Size.new(350,200),
19
- FRAME_SHAPED|SIMPLE_BORDER|FRAME_NO_TASKBAR|STAY_ON_TOP)
15
+ super(parent, :title => "Shaped Window", :size => [350,200],
16
+ :style => FRAME_SHAPED|SIMPLE_BORDER|FRAME_NO_TASKBAR|STAY_ON_TOP)
20
17
 
21
18
  @has_shape = false
22
19
  @delta = [0,0]
@@ -28,9 +25,9 @@ class MyFrame < Frame
28
25
  evt_right_up {on_exit}
29
26
  evt_paint {on_paint}
30
27
 
31
- shape = File.join( File.dirname(__FILE__), 'icons', 'ruby.png' )
28
+ shape = File.join( File.dirname(__FILE__), 'icons', 'wxruby-128x128.png' )
32
29
  @bmp = Bitmap.new( Image.new(shape) )
33
- set_client_size(@bmp.get_width, @bmp.get_height)
30
+ set_client_size(@bmp.width, @bmp.height)
34
31
 
35
32
  if Wx::PLATFORM == 'WXGTK'
36
33
  # wxGTK requires that the window be created before you can
@@ -69,8 +66,8 @@ class MyFrame < Frame
69
66
 
70
67
  def on_left_down(event)
71
68
  capture_mouse
72
- point = client_to_screen(event.get_position)
73
- origin = get_position
69
+ point = client_to_screen(event.position)
70
+ origin = position
74
71
  dx = point.x - origin.x
75
72
  dy = point.y - origin.y
76
73
  @delta = [dx, dy]
@@ -84,7 +81,7 @@ class MyFrame < Frame
84
81
 
85
82
  def on_mouse_move(event)
86
83
  if event.dragging and event.left_is_down
87
- point = client_to_screen(event.get_position)
84
+ point = client_to_screen(event.position)
88
85
  move(point.x - @delta[0], point.y - @delta[1])
89
86
  end
90
87
  end
@@ -92,16 +89,16 @@ end
92
89
 
93
90
  class TestPanel < Wx::Panel
94
91
  def initialize(parent, log)
95
- super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NO_FULL_REPAINT_ON_RESIZE)
92
+ super(parent, :style => Wx::NO_FULL_REPAINT_ON_RESIZE)
96
93
  @log = log
97
94
 
98
- b = Button.new(self, -1, 'Show the ShapedWindow Sample', Wx::Point.new(50,50))
99
- evt_button(b.get_id) { on_button }
95
+ b = Button.new(self, :label => 'Show the ShapedWindow Sample', :pos => [50,50])
96
+ evt_button(b) { on_button }
100
97
  end
101
98
 
102
99
  def on_button
103
100
  win = MyFrame.new(self, @log)
104
- win.set_size(Wx::Size.new(200, 200))
101
+ win.size = [200, 200]
105
102
  win.center_on_parent(Wx::BOTH)
106
103
  win.show(true)
107
104
  end
@@ -743,7 +743,7 @@ class DemoTaskBarIcon < Wx::TaskBarIcon
743
743
  @frame = frame
744
744
 
745
745
  # starting image
746
- icon = make_icon('ruby.png')
746
+ icon = make_icon('wxruby-128x128.png')
747
747
  set_icon(icon, 'wxRuby Demo')
748
748
  @image_index = 1
749
749
 
@@ -796,7 +796,7 @@ class DemoTaskBarIcon < Wx::TaskBarIcon
796
796
  end
797
797
 
798
798
  def on_taskbar_change(evt)
799
- names = [ "ruby.png", "wxwin16x16.xpm", "smiles.xpm", "mondrian.xpm" ]
799
+ names = [ "wxruby-128x128.png", "wxwin16x16.xpm", "smiles.xpm", "mondrian.xpm" ]
800
800
  name = names[@image_index]
801
801
  @image_index += 1
802
802
  if @image_index >= names.length
@@ -11,24 +11,20 @@ require 'wx'
11
11
 
12
12
  class TestPanel < Wx::Panel
13
13
  def initialize(parent, log)
14
- super(parent, -1)
14
+ super(parent)
15
15
 
16
- Wx::StaticText.new( self, -1, "This is a wxStaticBitmap.",
17
- Wx::Point.new(45,5))
16
+ Wx::StaticText.new( self, :label => "This is a wxStaticBitmap.", :pos => [45,5])
18
17
 
19
18
  bmp_file1 = File.join(File.dirname(__FILE__), 'icons', 'test2.xpm')
20
- Wx::StaticBitmap.new( self, -1,
21
- Wx::Bitmap.new(bmp_file1, Wx::BITMAP_TYPE_XPM),
22
- Wx::Point.new(80,25))
19
+ Wx::StaticBitmap.new( self, :label => Wx::Bitmap.new(bmp_file1),
20
+ :pos => [80,25])
23
21
 
24
22
  bmp_file2 = File.join(File.dirname(__FILE__), 'icons', 'robert.xpm')
25
- Wx::StaticBitmap.new( self, -1,
26
- Wx::Bitmap.new(bmp_file2, Wx::BITMAP_TYPE_XPM),
27
- Wx::Point.new(0, 100))
23
+ Wx::StaticBitmap.new( self, :label => Wx::Bitmap.new(bmp_file2),
24
+ :pos => [0, 100])
28
25
 
29
- Wx::StaticText.new( self, -1,
30
- "Hey, if Ousterhout (and Dunn) can do it, so can I.",
31
- Wx::Point.new(100, 125) )
26
+ Wx::StaticText.new( self, :label => "Hey, if Ousterhout (and Dunn) can do it, so can I.",
27
+ :pos => [100, 125])
32
28
  end
33
29
  end
34
30
 
@@ -17,6 +17,11 @@ Calendar_Cal_Year = 204
17
17
  Calendar_Cal_SeqMonth = 205
18
18
  Calendar_Cal_SurroundWeeks = 206
19
19
 
20
+ Calendar_DatePicker_AskDate = 300
21
+ Calendar_DatePicker_ShowCentury = 301
22
+ Calendar_DatePicker_DropDown = 302
23
+ Calendar_DatePicker_AllowNone = 303
24
+ Calendar_DatePicker_StartWithNone = 304
20
25
 
21
26
  class MyCalendar < CalendarCtrl
22
27
  def initialize(parent, display_frame, initial_date, calendar_flags)
@@ -77,6 +82,9 @@ class MyFrame < Frame
77
82
  evt_menu Wx::ID_EXIT, :on_quit
78
83
  evt_menu Wx::ID_ABOUT, :on_about
79
84
 
85
+ evt_menu Calendar_DatePicker_AskDate, :on_ask_date
86
+ evt_update_ui Calendar_DatePicker_StartWithNone, :on_update_ui_start_with_none
87
+
80
88
  evt_menu Calendar_Cal_Monday, :on_cal_monday
81
89
  evt_menu Calendar_Cal_Holidays, :on_cal_holidays
82
90
  evt_menu Calendar_Cal_Special, :on_cal_special
@@ -125,16 +133,27 @@ class MyFrame < Frame
125
133
  "Allow changing the year in the calendar",
126
134
  ITEM_CHECK)
127
135
 
136
+ menu_date = Menu.new
137
+ menu_date.append_check_item(Calendar_DatePicker_ShowCentury, "Al&ways show century")
138
+ menu_date.append_check_item(Calendar_DatePicker_DropDown, "Use &drop down control")
139
+ menu_date.append_check_item(Calendar_DatePicker_AllowNone, "Allow &no date")
140
+ menu_date.append_check_item(Calendar_DatePicker_StartWithNone, "Start &with no date")
141
+ menu_date.append_separator
142
+ menu_date.append(Calendar_DatePicker_AskDate, "&Choose date...\tCtrl-D", "Show dialog with DatePickerCtrl")
143
+
128
144
  # now append the freshly created menu to the menu bar...
129
145
  menu_bar = MenuBar.new
130
146
  menu_bar.append(menu_file, "&File")
131
147
  menu_bar.append(menu_cal, "&Calendar")
148
+ menu_bar.append(menu_date, "&Date picker")
132
149
 
133
150
  menu_bar.check(Calendar_Cal_Monday, TRUE)
134
151
  menu_bar.check(Calendar_Cal_Holidays, TRUE)
135
152
  menu_bar.check(Calendar_Cal_Month, TRUE)
136
153
  menu_bar.check(Calendar_Cal_Year, TRUE)
137
154
 
155
+ menu_bar.check(Calendar_DatePicker_ShowCentury, TRUE)
156
+
138
157
  # ... and attach self menu bar to the frame
139
158
  self.menu_bar = menu_bar
140
159
  end
@@ -201,6 +220,36 @@ class MyFrame < Frame
201
220
  event.enable( get_menu_bar().is_checked(Calendar_Cal_Month))
202
221
  end
203
222
 
223
+ def on_update_ui_start_with_none(event)
224
+ event.enable( get_menu_bar().is_checked(Calendar_DatePicker_AllowNone))
225
+ end
226
+
227
+ def on_ask_date(event)
228
+ dt = @calendar.get_date
229
+
230
+ style = DP_DEFAULT
231
+ style |= DP_SHOWCENTURY if get_menu_bar.is_checked(Calendar_DatePicker_ShowCentury)
232
+ style |= DP_DROPDOWN if get_menu_bar.is_checked(Calendar_DatePicker_DropDown)
233
+ if get_menu_bar.is_checked(Calendar_DatePicker_AllowNone)
234
+ style |= DP_ALLOWNONE
235
+ dt = nil if get_menu_bar.is_checked(Calendar_DatePicker_StartWithNone)
236
+ end
237
+
238
+ dlg = MyDialog.new(self, dt, style)
239
+ if dlg.show_modal == ID_OK
240
+ if dt = dlg.get_date
241
+ today = Time.now
242
+ if dt.day == today.day && dt.month == today.month
243
+ message_box("Happy birthday", "Calendar Sample")
244
+ end
245
+ @calendar.set_date(dt)
246
+ log_status("Changed the date to your input")
247
+ else
248
+ log_status("No date entered")
249
+ end
250
+ end
251
+ end
252
+
204
253
  def toggle_cal_style(on,flag)
205
254
  style = @calendar.get_window_style_flag
206
255
  date = @calendar.date
@@ -244,6 +293,49 @@ class MyFrame < Frame
244
293
 
245
294
  end
246
295
 
296
+ class MyDialog < Dialog
297
+ def initialize(parent, dt, picker_style)
298
+ super(parent, :style => DEFAULT_DIALOG_STYLE|RESIZE_BORDER)
299
+ sizer_buttons = StdDialogButtonSizer.new
300
+ sizer_buttons.add_button(Button.new(self, ID_OK))
301
+ sizer_buttons.add_button(Button.new(self, ID_CANCEL))
302
+ sizer_buttons.realize
303
+
304
+ sizer_text = BoxSizer.new(HORIZONTAL)
305
+ sizer_text.add(StaticText.new(self, ID_ANY, "Date in ISO format:"), 0, ALL|ALIGN_CENTRE_VERTICAL, 10)
306
+ @text = TextCtrl.new(self)
307
+ sizer_text.add(@text, 1, ALL|ALIGN_CENTRE_VERTICAL|EXPAND, 10)
308
+
309
+ sizer_top = BoxSizer.new(VERTICAL)
310
+ sizer_top.add(StaticText.new(self, ID_ANY, "Enter your birthday date (not before 20th century):"), 0, ALL, 10)
311
+
312
+ @picker = DatePickerCtrl.new(self, ID_ANY, dt, DEFAULT_POSITION, DEFAULT_SIZE, picker_style)
313
+ @picker.set_range(DateTime.new(1900, 1, 1), nil)
314
+ sizer_top.add(@picker, 0, ALL|EXPAND, 10)
315
+ sizer_top.add_stretch_spacer(1)
316
+ sizer_top.add(sizer_text, 0, EXPAND)
317
+
318
+ sizer_top.add(sizer_buttons, 0, ALL|ALIGN_CENTER, 10)
319
+
320
+ set_sizer_and_fit(sizer_top)
321
+ layout
322
+
323
+ evt_date_changed(@picker, :on_date_changed)
324
+ end
325
+
326
+ def get_date
327
+ @picker.get_value
328
+ end
329
+
330
+ def on_date_changed(event)
331
+ if dt = event.get_date
332
+ @text.set_value(dt.to_s)
333
+ else
334
+ @text.set_value("")
335
+ end
336
+ end
337
+
338
+ end
247
339
 
248
340
  class RbApp < App
249
341
  def on_init()