fidgit 0.0.5alpha → 0.0.6alpha

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.
@@ -80,7 +80,7 @@
80
80
  :padding_left: 4
81
81
 
82
82
  :FileBrowser: # < Composite
83
- :pattern: *.*
83
+ :pattern: "*.*"
84
84
  :show_extension: true
85
85
 
86
86
  :GridPacker: # < Packer
data/fidgit.gemspec CHANGED
@@ -21,8 +21,8 @@ Gem::Specification.new do |s|
21
21
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
22
  s.require_paths = ["lib"]
23
23
 
24
- s.add_dependency('gosu', '~> 0.7.28')
25
- s.add_dependency('chingu', '~> 0.9rc4')
24
+ s.add_dependency('gosu', '~> 0.7.32')
25
+ s.add_dependency('chingu', '~> 0.9rc5')
26
26
  s.add_development_dependency('rspec', '~> 2.1.0')
27
27
  s.add_development_dependency('texplay', '~> 0.3.5')
28
28
  end
@@ -2,6 +2,10 @@
2
2
 
3
3
  module Fidgit
4
4
  class ComboBox < Button
5
+ extend Forwardable
6
+
7
+ def_delegators :@menu, :each
8
+
5
9
  event :changed
6
10
 
7
11
  def index; @menu.index(@value) end
@@ -46,6 +50,8 @@ class ComboBox < Button
46
50
  end
47
51
  end
48
52
 
53
+ @@arrow ||= Gosu::Image["combo_arrow.png"]
54
+
49
55
  super('', options)
50
56
 
51
57
  rect.height = [height, font_size + padding_top + padding_bottom].max
@@ -57,12 +63,19 @@ class ComboBox < Button
57
63
 
58
64
  # Force text to be updated if the item added has the same value.
59
65
  if item.value == @value
60
- @text = item.text
66
+ self.text = item.text
67
+ self.icon = item.icon
61
68
  end
62
69
 
63
70
  item
64
71
  end
65
72
 
73
+ def draw
74
+ super
75
+ size = height / @@arrow.width.to_f
76
+ @@arrow.draw x + width - height, y, z, size, size
77
+ end
78
+
66
79
  def clicked_left_mouse_button(sender, x, y)
67
80
  @menu.x = self.x
68
81
  @menu.y = self.y + height + border_thickness
@@ -71,17 +84,25 @@ class ComboBox < Button
71
84
  nil
72
85
  end
73
86
 
87
+ def clear
88
+ self.text = ""
89
+ self.icon = nil
90
+ @menu.clear
91
+ end
92
+
93
+ protected
94
+ def layout
95
+ super
96
+ rect.width + height # Allow size for the arrow.
97
+
98
+ nil
99
+ end
100
+
101
+
74
102
  protected
75
103
  # Any combo-box passed a block will allow you access to its methods.
76
104
  def post_init_block(&block)
77
- case block.arity
78
- when 1
79
- yield self
80
- when 0
81
- instance_methods_eval &block
82
- else
83
- raise "block arity must be 0 or 1"
84
- end
105
+ with(&block)
85
106
  end
86
107
  end
87
108
  end
@@ -4,11 +4,9 @@ module Fidgit
4
4
  # A container that contains Elements.
5
5
  # @abstract
6
6
  class Container < Element
7
- def size; @children.size; end
8
- def each(&block); @children.each &block; end
9
- def find(&block); @children.find &block; end
10
- def index(value); @children.index value; end
11
- def [](index); @children[index]; end
7
+ extend Forwardable
8
+
9
+ def_delegators :@children, :size, :each, :find, :index, :[]
12
10
 
13
11
  def x=(value)
14
12
  each {|c| c.x += value - x }
@@ -91,6 +89,7 @@ module Fidgit
91
89
  List.new({parent: self}.merge!(options), &block)
92
90
  end
93
91
 
92
+ # Deprecated: use horizontal/vertical/grid
94
93
  def pack(arrangement, options = {}, &block)
95
94
  klass = case arrangement
96
95
  when :horizontal
@@ -106,6 +105,24 @@ module Fidgit
106
105
  klass.new({parent: self}.merge!(options), &block)
107
106
  end
108
107
 
108
+ public
109
+ # Pack elements within the block horizontally.
110
+ def horizontal(options = {}, &block)
111
+ HorizontalPacker.new({ parent: self }.merge!(options), &block)
112
+ end
113
+
114
+ public
115
+ # Pack elements within the blockvertically.
116
+ def vertical(options = {}, &block)
117
+ VerticalPacker.new({ parent: self }.merge!(options), &block)
118
+ end
119
+
120
+ public
121
+ # Pack elements within the block in a grid (matrix) formation.
122
+ def grid(options = {}, &block)
123
+ GridPacker.new({ parent: self }.merge!(options), &block)
124
+ end
125
+
109
126
  def radio_button(text, value, options = {}, &block)
110
127
  RadioButton.new(text, value, {parent: self}.merge!(options), &block)
111
128
  end
@@ -174,14 +191,7 @@ module Fidgit
174
191
  protected
175
192
  # Any container passed a block will allow you access to its methods.
176
193
  def post_init_block(&block)
177
- case block.arity
178
- when 1
179
- yield self
180
- when 0
181
- instance_methods_eval &block
182
- else
183
- raise "block arity must be 0 or 1"
184
- end
194
+ with(&block)
185
195
  end
186
196
  end
187
197
  end
@@ -248,6 +248,20 @@ module Fidgit
248
248
  @parent.send :add, self if @parent
249
249
  end
250
250
 
251
+ public
252
+ # Evaluate a block, just like it was a constructor block.
253
+ def with(&block)
254
+ raise ArgumentError.new("Must pass a block") unless block_given?
255
+ case block.arity
256
+ when 1
257
+ yield self
258
+ when 0
259
+ instance_methods_eval &block
260
+ else
261
+ raise "block arity must be 0 or 1"
262
+ end
263
+ end
264
+
251
265
  protected
252
266
  # By default, elements do not accept block arguments.
253
267
  def post_init_block(&block)
@@ -57,11 +57,15 @@ module Fidgit
57
57
  end
58
58
  end
59
59
 
60
+ # -------------------
61
+
62
+ extend Forwardable
63
+
64
+ def_delegators :@items, :each, :clear, :size, :[]
65
+
60
66
  event :selected
61
67
 
62
68
  def index(value); @items.index find(value); end
63
- def size; @items.size; end
64
- def [](index); @items[index]; end
65
69
 
66
70
  # @option (see Composite#initialize)
67
71
  # @option options [Float] :x (cursor x, if in a GuiState)
@@ -62,14 +62,7 @@ module Fidgit
62
62
 
63
63
  protected
64
64
  def post_init_block(&block)
65
- case block.arity
66
- when 1
67
- yield @content
68
- when 0
69
- @content.instance_methods_eval &block
70
- else
71
- raise "block arity must be 0 or 1"
72
- end
65
+ with(&block)
73
66
  end
74
67
  end
75
68
  end
@@ -79,14 +79,7 @@ module Fidgit
79
79
 
80
80
  protected
81
81
  def post_init_block(&block)
82
- case block.arity
83
- when 1
84
- yield @view.content
85
- when 0
86
- @view.content.instance_methods_eval &block
87
- else
88
- raise "block arity must be 0 or 1"
89
- end
82
+ @view.content.with(&block)
90
83
  end
91
84
  end
92
85
  end
@@ -251,7 +251,7 @@ module Fidgit
251
251
  word_width = 0
252
252
 
253
253
  text.each_char do |char|
254
- char_width = font.text_width(char)
254
+ char_width = (char == "\n") ? 0 : font.text_width(char)
255
255
 
256
256
  overall_width = line_width + (line_width == 0 ? 0 : space_width) + word_width + char_width
257
257
  if overall_width > max_width and not (char == ' ' and not word.empty?)
@@ -5,6 +5,10 @@ module Fidgit
5
5
  # A 1x1 white pixel used for drawing.
6
6
  PIXEL_IMAGE = 'pixel.png'
7
7
 
8
+ extend Forwardable
9
+
10
+ def_delegators :@container, :horizontal, :vertical, :grid
11
+
8
12
  # The Container that contains all the elements for this GuiState.
9
13
  # @return [Packer]
10
14
  attr_reader :container
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module Fidgit
4
- VERSION = '0.0.5alpha'
4
+ VERSION = '0.0.6alpha'
5
5
  end
Binary file
@@ -121,23 +121,23 @@ module Fidgit
121
121
  $x.should == 7
122
122
  end
123
123
  end
124
+ end
125
+
126
+ # Abstract class, so doesn't really do anything.
127
+ describe History::Action do
128
+ before :each do
129
+ @object = described_class.new
130
+ end
124
131
 
125
- # Abstract class, so doesn't really do anything.
126
- describe History::Action do
127
- before :each do
128
- @object = described_class.new
129
- end
130
-
131
- describe "do()" do
132
- it "should raise an error" do
133
- lambda { @object.do }.should raise_error NotImplementedError
134
- end
132
+ describe "do()" do
133
+ it "should raise an error" do
134
+ lambda { @object.do }.should raise_error NotImplementedError
135
135
  end
136
+ end
136
137
 
137
- describe "undo()" do
138
- it "should raise an error" do
139
- lambda { @object.undo }.should raise_error NotImplementedError
140
- end
138
+ describe "undo()" do
139
+ it "should raise an error" do
140
+ lambda { @object.undo }.should raise_error NotImplementedError
141
141
  end
142
142
  end
143
143
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fidgit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5alpha
4
+ version: 0.0.6alpha
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -9,34 +9,34 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-03-25 00:00:00.000000000 +00:00
12
+ date: 2011-06-06 00:00:00.000000000 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: gosu
17
- requirement: &26622144 !ruby/object:Gem::Requirement
17
+ requirement: &26037252 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: 0.7.28
22
+ version: 0.7.32
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *26622144
25
+ version_requirements: *26037252
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: chingu
28
- requirement: &26621748 !ruby/object:Gem::Requirement
28
+ requirement: &26036940 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9rc4
33
+ version: 0.9rc5
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *26621748
36
+ version_requirements: *26036940
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &26621364 !ruby/object:Gem::Requirement
39
+ requirement: &26036652 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 2.1.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *26621364
47
+ version_requirements: *26036652
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: texplay
50
- requirement: &26621016 !ruby/object:Gem::Requirement
50
+ requirement: &26036364 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: 0.3.5
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *26621016
58
+ version_requirements: *26036364
59
59
  description: Fidgit is a GUI library built on Gosu/Chingu
60
60
  email:
61
61
  - bil.bagpuss@gmail.com
@@ -134,6 +134,7 @@ files:
134
134
  - lib/fidgit/version.rb
135
135
  - lib/fidgit/window.rb
136
136
  - media/images/arrow.png
137
+ - media/images/combo_arrow.png
137
138
  - media/images/file_directory.png
138
139
  - media/images/file_file.png
139
140
  - media/images/pixel.png