fidgit 0.1.0 → 0.1.1
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.
- data/lib/fidgit/elements/combo_box.rb +1 -1
- data/lib/fidgit/elements/element.rb +3 -1
- data/lib/fidgit/elements/group.rb +2 -4
- data/lib/fidgit/elements/label.rb +13 -9
- data/lib/fidgit/elements/menu_pane.rb +7 -1
- data/lib/fidgit/event.rb +4 -4
- data/lib/fidgit/states/gui_state.rb +4 -1
- data/lib/fidgit/version.rb +1 -1
- metadata +10 -10
@@ -152,6 +152,8 @@ module Fidgit
|
|
152
152
|
|
153
153
|
@enabled = options[:enabled]
|
154
154
|
|
155
|
+
@mouse_over = false
|
156
|
+
|
155
157
|
# Alignment and min/max dimensions.
|
156
158
|
@align_h = options[:align_h] || Array(options[:align]).last || default(:align_h)
|
157
159
|
raise ArgumentError, "Invalid align_h: #{@align_h}" unless VALID_ALIGN_H.include? @align_h
|
@@ -263,7 +265,7 @@ module Fidgit
|
|
263
265
|
when 1
|
264
266
|
yield self
|
265
267
|
when 0
|
266
|
-
instance_methods_eval
|
268
|
+
instance_methods_eval(&block)
|
267
269
|
else
|
268
270
|
raise "block arity must be 0 or 1"
|
269
271
|
end
|
@@ -67,7 +67,11 @@ module Fidgit
|
|
67
67
|
center_x = (current_x + x + rect.width - padding_right) / 2.0
|
68
68
|
end
|
69
69
|
|
70
|
-
|
70
|
+
# Make text centered alongside the icon
|
71
|
+
# TODO: Probably should have this as an option.
|
72
|
+
center_y = y + padding_top + ((y + height - padding_bottom) - (y + padding_top)) / 2.0
|
73
|
+
|
74
|
+
font.draw_rel(@text, center_x, center_y, z, rel_x, 0.5, 1, 1, @color)
|
71
75
|
end
|
72
76
|
|
73
77
|
nil
|
@@ -77,20 +81,20 @@ module Fidgit
|
|
77
81
|
def layout
|
78
82
|
if @icon
|
79
83
|
if @text.empty?
|
80
|
-
rect.width = [padding_left + @icon.width + padding_right,
|
81
|
-
rect.height = [padding_top + @icon.height + padding_bottom,
|
84
|
+
rect.width = [padding_left + @icon.width + padding_right, min_width].max
|
85
|
+
rect.height = [padding_top + @icon.height + padding_bottom, min_height].max
|
82
86
|
else
|
83
87
|
# Todo: Use padding_h inside here? Probably by making this a Composite.
|
84
|
-
rect.width = [padding_left + @icon.width + [padding_left + padding_right].max + font.text_width(@text) + padding_right,
|
85
|
-
rect.height = [padding_top + [@icon.height, font_size].max + padding_bottom,
|
88
|
+
rect.width = [padding_left + @icon.width + [padding_left + padding_right].max + font.text_width(@text) + padding_right, min_width].max
|
89
|
+
rect.height = [padding_top + [@icon.height, font_size].max + padding_bottom, min_height].max
|
86
90
|
end
|
87
91
|
else
|
88
92
|
if @text.empty?
|
89
|
-
rect.width = [padding_left + padding_right,
|
90
|
-
rect.height = [padding_top + padding_bottom,
|
93
|
+
rect.width = [padding_left + padding_right, min_width].max
|
94
|
+
rect.height = [padding_top + padding_bottom, min_height].max
|
91
95
|
else
|
92
|
-
rect.width = [padding_left + font.text_width(@text) + padding_right,
|
93
|
-
rect.height = [padding_top + font_size + padding_bottom,
|
96
|
+
rect.width = [padding_left + font.text_width(@text) + padding_right, min_width].max
|
97
|
+
rect.height = [padding_top + font_size + padding_bottom, min_height].max
|
94
98
|
end
|
95
99
|
end
|
96
100
|
|
@@ -65,6 +65,8 @@ module Fidgit
|
|
65
65
|
event :selected
|
66
66
|
|
67
67
|
def index(value); @items.index find(value); end
|
68
|
+
def x=(value); super(value); recalc; end
|
69
|
+
def y=(value); super(value); recalc; end
|
68
70
|
|
69
71
|
# @option (see Composite#initialize)
|
70
72
|
# @option options [Float] :x (cursor x, if in a GuiState)
|
@@ -86,6 +88,8 @@ module Fidgit
|
|
86
88
|
}.merge! options
|
87
89
|
end
|
88
90
|
|
91
|
+
@items = nil
|
92
|
+
|
89
93
|
super(options)
|
90
94
|
|
91
95
|
@items = vertical spacing: 0, padding: 0
|
@@ -133,7 +137,7 @@ module Fidgit
|
|
133
137
|
super
|
134
138
|
|
135
139
|
if @items
|
136
|
-
# Ensure the menu can't go over the edge of the screen. If it can't be avoided, align with left edge of screen.
|
140
|
+
# Ensure the menu can't go over the edge of the screen. If it can't be avoided, align with top-left edge of screen.
|
137
141
|
rect.x = [[x, $window.width - width - padding_right].min, 0].max
|
138
142
|
rect.y = [[y, $window.height - height - padding_bottom].min, 0].max
|
139
143
|
|
@@ -144,6 +148,8 @@ module Fidgit
|
|
144
148
|
# Ensure that all items are of the same width.
|
145
149
|
max_width = @items.each.to_a.map {|c| c.width }.max || 0
|
146
150
|
@items.each {|c| c.rect.width = max_width }
|
151
|
+
|
152
|
+
@items.recalc # Move all the items inside the packer to correct ones.
|
147
153
|
end
|
148
154
|
|
149
155
|
nil
|
data/lib/fidgit/event.rb
CHANGED
@@ -34,7 +34,7 @@ module Fidgit
|
|
34
34
|
raise ArgumentError, "Expected method or block for event handler" unless !block.nil? ^ !method.nil?
|
35
35
|
raise ArgumentError, "#{self.class} does not handle #{event.inspect}" unless events.include? event
|
36
36
|
|
37
|
-
@_event_handlers
|
37
|
+
@_event_handlers ||= Hash.new() { |hash, key| hash[key] = [] }
|
38
38
|
@_event_handlers[event].push(method ? method : block)
|
39
39
|
|
40
40
|
nil
|
@@ -59,7 +59,7 @@ module Fidgit
|
|
59
59
|
return :handled if send(event, self, *args) == :handled
|
60
60
|
end
|
61
61
|
|
62
|
-
if @_event_handlers
|
62
|
+
if defined? @_event_handlers
|
63
63
|
@_event_handlers[event].reverse_each do |handler|
|
64
64
|
return :handled if handler.call(self, *args) == :handled
|
65
65
|
end
|
@@ -77,8 +77,8 @@ module Fidgit
|
|
77
77
|
def self.included(base)
|
78
78
|
class << base
|
79
79
|
def events
|
80
|
-
|
81
|
-
|
80
|
+
# Copy the events already set up for your parent.
|
81
|
+
unless defined? @events
|
82
82
|
@events = if superclass.respond_to? :events
|
83
83
|
superclass.events.dup
|
84
84
|
else
|
@@ -45,11 +45,14 @@ module Fidgit
|
|
45
45
|
def message(text, options = {}, &block); MessageDialog.new(text, options, &block); end
|
46
46
|
|
47
47
|
# (see Container#clear)
|
48
|
-
def clear(*args, &block); @container.clear
|
48
|
+
def clear(*args, &block); @container.clear(*args, &block); end
|
49
49
|
|
50
50
|
def initialize
|
51
51
|
# The container is where the user puts their content.
|
52
52
|
@container = MainPacker.new
|
53
|
+
@menu = nil
|
54
|
+
@last_cursor_pos = [-1, -1]
|
55
|
+
@mouse_over = nil
|
53
56
|
|
54
57
|
unless defined? @@draw_pixel
|
55
58
|
media_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'media'))
|
data/lib/fidgit/version.rb
CHANGED
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.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-06-
|
12
|
+
date: 2011-06-13 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: &
|
17
|
+
requirement: &26059560 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 0.7.32
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *26059560
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: chingu
|
28
|
-
requirement: &
|
28
|
+
requirement: &26059164 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.9rc5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *26059164
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec
|
39
|
-
requirement: &
|
39
|
+
requirement: &26058780 !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: *
|
47
|
+
version_requirements: *26058780
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: texplay
|
50
|
-
requirement: &
|
50
|
+
requirement: &26058396 !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: *
|
58
|
+
version_requirements: *26058396
|
59
59
|
description: Fidgit is a GUI library built on Gosu/Chingu
|
60
60
|
email:
|
61
61
|
- bil.bagpuss@gmail.com
|