fxruby 1.6.10 → 1.6.11

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.
@@ -4764,6 +4764,7 @@ module Fox
4764
4764
  def editable?(*args) # :nodoc:
4765
4765
  isEditable(*args)
4766
4766
  end
4767
+ alias :editable :editable?
4767
4768
  def editable=(*args) # :nodoc:
4768
4769
  setEditable(*args)
4769
4770
  end
@@ -263,15 +263,32 @@ module Fox
263
263
  class FXWindow
264
264
  #
265
265
  # Iterate over the child windows for this window.
266
+ # Note that this only reaches the direct child windows for this window
267
+ # and no deeper descendants. To traverse the entire widget tree,
268
+ # use #each_child_recursive.
266
269
  #
267
- def each_child
270
+ def each_child # :yields: child
268
271
  child = self.first
269
272
  while child
270
273
  next_child = child.next
271
274
  yield child
272
- child = next_child
275
+ child = next_child
273
276
  end
274
277
  end
278
+
279
+ #
280
+ # Traverse the widget tree starting from this window
281
+ # using depth-first traversal.
282
+ #
283
+ def each_child_recursive # :yields: child
284
+ each_child do |child|
285
+ yield child
286
+ child.each_child_recursive do |subchild|
287
+ yield subchild
288
+ end
289
+ end
290
+ end
291
+
275
292
 
276
293
  # Returns an array containing all child windows of this window
277
294
  def children
@@ -607,6 +624,41 @@ module Fox
607
624
  def selectItem(row, col, notify=false)
608
625
  selectRange(row, row, col, col, notify)
609
626
  end
627
+
628
+ =begin
629
+
630
+ # Deselect cell at (_row_, _col_).
631
+ # If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the table's message target
632
+ # after the item is deselected.
633
+ # Raises IndexError if either _row_ or _col_ is out of bounds.
634
+ #
635
+ def deselectItem(row, col, notify=false)
636
+ raise IndexError, "row index out of bounds" if row < 0 || row >= numRows
637
+ raise IndexError, "column index out of bounds" if col < 0 || col >= numColumns
638
+ deselectRange(row, row, col, col, notify)
639
+ end
640
+
641
+ # Deselect range.
642
+ # If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the table's message
643
+ # target for each previously selected cell that becomes deselected as a result of
644
+ # this operation.
645
+ # Raises IndexError if _startRow_, _endRow_, _startColumn_ or _endColumn_ is out of bounds.
646
+ def deselectRange(startRow, endRow, startColumn, endColumn, notify=false)
647
+ raise IndexError, "starting row index out of bounds" if startRow < 0 || startRow >= numRows
648
+ raise IndexError, "ending row index out of bounds" if endRow < 0 || endRow >= numRows
649
+ raise IndexError, "starting column index out of bounds" if startColumn < 0 || startColumn >= numColumns
650
+ raise IndexError, "ending column index out of bounds" if endColumn < 0 || endColumn >= numColumns
651
+ changes = false
652
+ for row in startRow..endRow
653
+ for col in startColumn..endColumn
654
+ changes |= deselectItem(row, col, notify)
655
+ end
656
+ end
657
+ changes
658
+ end
659
+
660
+ =end
661
+
610
662
  end
611
663
  end
612
664
 
@@ -25,7 +25,7 @@ module Fox
25
25
  # reference to that item as a parameter.
26
26
  #
27
27
  def each # :yields: aFoldingItem
28
- current = first
28
+ current = firstItem
29
29
  while current != nil
30
30
  next_current = current.next
31
31
  yield current
@@ -183,7 +183,7 @@ module Fox
183
183
  # reference to that item as a parameter.
184
184
  #
185
185
  def each # :yields: aTreeItem
186
- current = first
186
+ current = firstItem
187
187
  while current != nil
188
188
  next_current = current.next
189
189
  yield current
@@ -202,7 +202,7 @@ module Fox
202
202
  # reference to that item as a parameter.
203
203
  #
204
204
  def each # :yields: aTreeItem
205
- current = first
205
+ current = firstItem
206
206
  while current != nil
207
207
  next_current = current.next
208
208
  yield current
@@ -1104,7 +1104,7 @@ module Fox
1104
1104
  alias old_initialize initialize
1105
1105
  def initialize(app, *args, &blk)
1106
1106
  argument_names = %w{path}
1107
- default_params = { :path => defaultIconPath }
1107
+ default_params = { :path => FXIconDict.defaultIconPath }
1108
1108
  params = {}
1109
1109
  params = args.pop if args.last.is_a? Hash
1110
1110
  args.each_with_index { |e, i| params[argument_names[i].intern] = e }
@@ -2580,34 +2580,6 @@ module Fox
2580
2580
  end
2581
2581
  end
2582
2582
 
2583
- class FXVec4d
2584
- alias old_initialize initialize
2585
- def initialize(xx, yy, zz, *args, &blk)
2586
- argument_names = %w{ww}
2587
- default_params = { :ww => 1.0 }
2588
- params = {}
2589
- params = args.pop if args.last.is_a? Hash
2590
- args.each_with_index { |e, i| params[argument_names[i].intern] = e }
2591
- params.keys.each { |key| raise ArgumentError, "Unrecognized parameter #{key}" unless default_params.keys.include?(key) }
2592
- params = default_params.merge(params)
2593
- old_initialize(xx, yy, zz, params[:ww], &blk)
2594
- end
2595
- end
2596
-
2597
- class FXVec4f
2598
- alias old_initialize initialize
2599
- def initialize(xx, yy, zz, *args, &blk)
2600
- argument_names = %w{ww}
2601
- default_params = { :ww => 1.0 }
2602
- params = {}
2603
- params = args.pop if args.last.is_a? Hash
2604
- args.each_with_index { |e, i| params[argument_names[i].intern] = e }
2605
- params.keys.each { |key| raise ArgumentError, "Unrecognized parameter #{key}" unless default_params.keys.include?(key) }
2606
- params = default_params.merge(params)
2607
- old_initialize(xx, yy, zz, params[:ww], &blk)
2608
- end
2609
- end
2610
-
2611
2583
  class FXVerticalFrame
2612
2584
  alias old_initialize initialize
2613
2585
  def initialize(p, *args, &blk)
@@ -1,11 +1,17 @@
1
1
  module Fox
2
2
  #
3
- # Based on a suggestion from Hugh Sasse on the fxruby-users mailing list,
4
- # an FXPseudoKeyboard object provides a simple means to operate widgets
3
+ # An FXPseudoKeyboard object provides a simple means to operate widgets
5
4
  # programmatically, to aid test driven design. An FXPseudoKeyboard instance
6
5
  # can be pointed at an FXObject and will manage the sending of events to
7
6
  # it.
8
7
  #
8
+ # For example:
9
+ #
10
+ # textfield = FXTextField.new(...)
11
+ # pk = FXPseudoKeyboard.new(textfield)
12
+ # pk.doKeyPress # sends a SEL_KEYPRESS message to the textfield
13
+ # pk.doKeyRelease # sends a SEL_KEYRELEASE message to the textfield
14
+ #
9
15
  class FXPseudoKeyboard
10
16
 
11
17
  attr_accessor :target
@@ -17,16 +23,16 @@ module Fox
17
23
  def doKeyPress
18
24
  unless @target.nil?
19
25
  evt = FXEvent.new
20
- evt.type = Fox::SEL_KEYPRESS
21
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_KEYPRESS), evt)
26
+ evt.type = Fox::SEL_KEYPRESS
27
+ @target.handle(self, Fox.FXSEL(Fox::SEL_KEYPRESS, 0), evt)
22
28
  end
23
29
  end
24
30
 
25
31
  def doKeyRelease
26
32
  unless @target.nil?
27
33
  evt = FXEvent.new
28
- evt.type = Fox::SEL_KEYRELEASE
29
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_KEYRELEASE), evt)
34
+ evt.type = Fox::SEL_KEYRELEASE
35
+ @target.handle(self, Fox.FXSEL(Fox::SEL_KEYRELEASE, 0), evt)
30
36
  end
31
37
  end
32
38
  end
@@ -1,11 +1,16 @@
1
1
  module Fox
2
2
  #
3
- # Based on a suggestion from Hugh Sasse on the fxruby-users mailing list,
4
- # an FXPseudoMouse object provides a simple means to operate widgets
3
+ # An FXPseudoMouse object provides a simple means to operate widgets
5
4
  # programmatically, to aid test driven design. An FXPseudoMouse instance
6
5
  # can be pointed at an FXObject and will manage the sending of events to
7
6
  # it.
8
7
  #
8
+ # For example:
9
+ #
10
+ # canvas = FXCanvas.new(...)
11
+ # pm = FXPseudoMouse.new(canvas)
12
+ # pm.doLeftButtonPress # sends a SEL_LEFTBUTTONPRESS message to the canvas
13
+ #
9
14
  class FXPseudoMouse < FXObject
10
15
 
11
16
  attr_accessor :target
@@ -18,7 +23,7 @@ module Fox
18
23
  unless @target.nil?
19
24
  evt = FXEvent.new
20
25
  evt.type = Fox::SEL_MOTION
21
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_MOTION), evt)
26
+ @target.handle(self, Fox.FXSEL(Fox::SEL_MOTION, 0), evt)
22
27
  end
23
28
  end
24
29
 
@@ -26,7 +31,7 @@ module Fox
26
31
  unless @target.nil?
27
32
  evt = FXEvent.new
28
33
  evt.type = Fox::SEL_MOUSEWHEEL
29
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_MOUSEWHEEL), evt)
34
+ @target.handle(self, Fox.FXSEL(Fox::SEL_MOUSEWHEEL, 0), evt)
30
35
  end
31
36
  end
32
37
 
@@ -34,7 +39,7 @@ module Fox
34
39
  unless @target.nil?
35
40
  evt = FXEvent.new
36
41
  evt.type = Fox::SEL_LEFTBUTTONPRESS
37
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_LEFTBUTTONPRESS), evt)
42
+ @target.handle(self, Fox.FXSEL(Fox::SEL_LEFTBUTTONPRESS, 0), evt)
38
43
  end
39
44
  end
40
45
 
@@ -42,7 +47,7 @@ module Fox
42
47
  unless @target.nil?
43
48
  evt = FXEvent.new
44
49
  evt.type = Fox::SEL_LEFTBUTTONRELEASE
45
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_LEFTBUTTONRELEASE), evt)
50
+ @target.handle(self, Fox.FXSEL(Fox::SEL_LEFTBUTTONRELEASE, 0), evt)
46
51
  end
47
52
  end
48
53
 
@@ -50,7 +55,7 @@ module Fox
50
55
  unless @target.nil?
51
56
  evt = FXEvent.new
52
57
  evt.type = Fox::SEL_MIDDLEBUTTONPRESS
53
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_MIDDLEBUTTONPRESS), evt)
58
+ @target.handle(self, Fox.FXSEL(Fox::SEL_MIDDLEBUTTONPRESS, 0), evt)
54
59
  end
55
60
  end
56
61
 
@@ -58,7 +63,7 @@ module Fox
58
63
  unless @target.nil?
59
64
  evt = FXEvent.new
60
65
  evt.type = Fox::SEL_MIDDLEBUTTONRELEASE
61
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_MIDDLEBUTTONRELEASE), evt)
66
+ @target.handle(self, Fox.FXSEL(Fox::SEL_MIDDLEBUTTONRELEASE, 0), evt)
62
67
  end
63
68
  end
64
69
 
@@ -66,7 +71,7 @@ module Fox
66
71
  unless @target.nil?
67
72
  evt = FXEvent.new
68
73
  evt.type = Fox::SEL_RIGHTBUTTONPRESS
69
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_RIGHTBUTTONPRESS), evt)
74
+ @target.handle(self, Fox.FXSEL(Fox::SEL_RIGHTBUTTONPRESS, 0), evt)
70
75
  end
71
76
  end
72
77
 
@@ -74,7 +79,7 @@ module Fox
74
79
  unless @target.nil?
75
80
  evt = FXEvent.new
76
81
  evt.type = Fox::SEL_RIGHTBUTTONRELEASE
77
- @target.handle(self, Fox.MKUINT(0, Fox::SEL_RIGHTBUTTONRELEASE), evt)
82
+ @target.handle(self, Fox.FXSEL(Fox::SEL_RIGHTBUTTONRELEASE, 0), evt)
78
83
  end
79
84
  end
80
85
  end
@@ -3,7 +3,7 @@ module Fox
3
3
  # Returns the FXRuby version number as a string, e.g. "1.0.19".
4
4
  #
5
5
  def Fox.fxrubyversion
6
- "1.6.10"
6
+ "1.6.11"
7
7
  end
8
8
  end
9
9
 
@@ -21,7 +21,7 @@ module Fox
21
21
  # Construct icon dictionary, and set initial search path; also
22
22
  # creates a default icon source object.
23
23
  #
24
- def initialize(app, path=defaultIconPath);
24
+ def initialize(app, path=FXIconDict.defaultIconPath);
25
25
 
26
26
  # Change icon source to _src_ (an FXIconSource instance).
27
27
  def iconSource=(src); end
@@ -0,0 +1,32 @@
1
+ require 'test/unit'
2
+ require 'testcase'
3
+ require 'fox16'
4
+
5
+ include Fox
6
+
7
+ class TC_FXFoldingList < TestCase
8
+
9
+ def setup
10
+ super(self.class.name)
11
+ @foldingList = FXFoldingList.new(mainWindow)
12
+ end
13
+
14
+ def test_each_for_empty_list
15
+ count = 0
16
+ @foldingList.each { |item| count += 1 }
17
+ assert_equal(0, count, "count for empty list should be zero")
18
+ end
19
+
20
+ def test_each
21
+ @foldingList.appendItem(nil, "1")
22
+ @foldingList.appendItem(nil, "2")
23
+ @foldingList.appendItem(nil, "3")
24
+ @foldingList.appendItem(nil, "4")
25
+ @foldingList.appendItem(nil, "5")
26
+ count = 0
27
+ @foldingList.each { |item| count += 1 }
28
+ assert_equal(5, count, "count didn't match expected number of items")
29
+ end
30
+
31
+ end
32
+
@@ -80,4 +80,21 @@ class TC_FXTreeList < TestCase
80
80
  @treeList.removeItem(theItem, true)
81
81
  assert_same(theItem, anItem)
82
82
  end
83
+
84
+ def test_each_for_empty_list
85
+ count = 0
86
+ @treeList.each { |item| count += 1 }
87
+ assert_equal(0, count, "count for empty list should be zero")
88
+ end
89
+
90
+ def test_each
91
+ @treeList.appendItem(nil, "1")
92
+ @treeList.appendItem(nil, "2")
93
+ @treeList.appendItem(nil, "3")
94
+ @treeList.appendItem(nil, "4")
95
+ count = 0
96
+ @treeList.each { |item| count += 1 }
97
+ assert_equal(4, count, "count didn't match expected number of items")
98
+ end
99
+
83
100
  end
@@ -5,6 +5,7 @@ require 'fox16'
5
5
  include Fox
6
6
 
7
7
  class TC_FXTreeListBox < TestCase
8
+
8
9
  def setup
9
10
  super(self.class.name)
10
11
  @treeListBox = FXTreeListBox.new(mainWindow)
@@ -19,5 +20,22 @@ class TC_FXTreeListBox < TestCase
19
20
  assert_equal("B", @treeListBox.firstItem.next.text)
20
21
  assert_equal("C", @treeListBox.lastItem.text)
21
22
  end
23
+
24
+ def test_each_for_empty_list
25
+ count = 0
26
+ @treeListBox.each { |item| count += 1 }
27
+ assert_equal(0, count, "count for empty list should be zero")
28
+ end
29
+
30
+ def test_each
31
+ @treeListBox.appendItem(nil, "1")
32
+ @treeListBox.appendItem(nil, "2")
33
+ @treeListBox.appendItem(nil, "3")
34
+ @treeListBox.appendItem(nil, "4")
35
+ count = 0
36
+ @treeListBox.each { |item| count += 1 }
37
+ assert_equal(4, count, "count didn't match expected number of items")
38
+ end
39
+
22
40
  end
23
41
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: fxruby
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.6.10
7
- date: 2007-04-09 00:00:00 -05:00
6
+ version: 1.6.11
7
+ date: 2007-04-18 00:00:00 -05:00
8
8
  summary: FXRuby is the Ruby binding to the FOX GUI toolkit.
9
9
  require_paths:
10
10
  - ext/fox16
@@ -260,6 +260,7 @@ files:
260
260
  - tests/TC_FXDirList.rb
261
261
  - tests/TC_FXFileAssoc.rb
262
262
  - tests/TC_FXFileStream.rb
263
+ - tests/TC_FXFoldingList.rb
263
264
  - tests/TC_FXFont.rb
264
265
  - tests/TC_FXFontDesc.rb
265
266
  - tests/TC_FXGLGroup.rb
@@ -782,6 +783,8 @@ rdoc_options:
782
783
  - rdoc-sources/README.rdoc
783
784
  - --exclude
784
785
  - ext/fox16
786
+ - --exclude
787
+ - !ruby/regexp /acceltable|aliases|bitmapview|canvas|html|kwargs|missingdep|responder|tkcompat/
785
788
  extra_rdoc_files:
786
789
  - rdoc-sources
787
790
  - rdoc-sources/README.rdoc