nature 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/nature +28 -0
- data/src/Combo.rb +2 -0
- data/src/Combos.rb +43 -0
- data/src/Fantasy.rb +173 -0
- data/src/Game.rb +2 -0
- data/src/MyClass.rb +15 -0
- data/src/ParseSchedule.rb +43 -0
- data/src/TallyGames.rb +27 -0
- data/src/Team.rb +9 -0
- data/src/Util.rb +17 -0
- data/src/glade/Combos.glade +118 -0
- data/src/glade/Fantasy.glade +289 -0
- data/src/glade/MyClass.glade +36 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7f61559d6ac9da59f703d78c5ef139aacf14b8ad
|
4
|
+
data.tar.gz: e1c438707be57842e25f98779eb6df492c6ffff6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ac1fc1ede8d932621e640539b69554d86102855aeacae3752f97edae27b4f2c0b73dfd50fa5002c6d8c49a76ed2a93a56ef96ad47381bf7e3a296f15046ae2d7
|
7
|
+
data.tar.gz: 6319a8899646765ac85257e3d107c445f8e995ee79d70c459fcc4eaa475664405fd4048b5a94df24ca068b2051a0bb63a240d107a3d4f3536fbf2e3c9814f39f
|
data/nature
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require "active_record"
|
4
|
+
require "vrlib"
|
5
|
+
require "csv"
|
6
|
+
|
7
|
+
# from require_all gem:
|
8
|
+
require_rel 'src/'
|
9
|
+
require 'sqlite3'
|
10
|
+
|
11
|
+
ActiveRecord::Base.establish_connection(
|
12
|
+
:adapter => "sqlite3",
|
13
|
+
:database => File.expand_path("~/visualruby/nature/db/nature.sqlite3")
|
14
|
+
)
|
15
|
+
|
16
|
+
#Fantasy.fill_bye_week
|
17
|
+
#ParseSchedule.parse_teams
|
18
|
+
|
19
|
+
#ParseSchedule.parse(2017)
|
20
|
+
|
21
|
+
#TallyGames.fill_run_pts
|
22
|
+
|
23
|
+
# TallyGames.combo_run_pts("ATL", "HOU")
|
24
|
+
|
25
|
+
Fantasy.new.show_glade
|
26
|
+
|
27
|
+
# MyClass.new.show_glade()
|
28
|
+
|
data/src/Combo.rb
ADDED
data/src/Combos.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
class Combos
|
3
|
+
|
4
|
+
include GladeGUI
|
5
|
+
|
6
|
+
def initialize(parent)
|
7
|
+
@parent = parent
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
def before_show()
|
12
|
+
@view = VR::ListView.new(team1: String, team2: String, avg_run_pts: Float, avg_wr_pts: Float, avg_te_pts: Float, avg_qb_pts: Float)
|
13
|
+
@view.add_active_record_rows(Combo.all)
|
14
|
+
@view.col_sortable(true)
|
15
|
+
@view.show
|
16
|
+
@builder[:scrolledwindow1].add @view
|
17
|
+
end
|
18
|
+
|
19
|
+
def buttonFilter__clicked(button)
|
20
|
+
and_or = extract_key(button)
|
21
|
+
filter = @builder[:entryFilter].text.upcase.gsub(" ", "").split(",")
|
22
|
+
@view.model.clear
|
23
|
+
@view.hide
|
24
|
+
# rows = Combo.all.where("team1 IN (#{filter}) and team2 IN (#{filter})")
|
25
|
+
rows = Combo.where("team1 IN (?) #{and_or} team2 IN (?)", filter, filter)
|
26
|
+
if rows.count > 0
|
27
|
+
@view.add_active_record_rows(rows)
|
28
|
+
else
|
29
|
+
@view.add_active_record_rows(Combo.all)
|
30
|
+
end
|
31
|
+
@view.show
|
32
|
+
end
|
33
|
+
|
34
|
+
def view__row_activated(*args) # 3rd arg is VR::TreeViewColumn of clicked cell
|
35
|
+
return unless rows = @view.selected_rows
|
36
|
+
col = args[2].col_symbol.to_s
|
37
|
+
return unless col.start_with?("avg_")
|
38
|
+
col = col.split("_")[1]
|
39
|
+
row = rows[0]
|
40
|
+
@parent.combo_pts(row[0], row[1], col, true)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
data/src/Fantasy.rb
ADDED
@@ -0,0 +1,173 @@
|
|
1
|
+
def r2(flot)
|
2
|
+
"%5.2f" % flot
|
3
|
+
end
|
4
|
+
|
5
|
+
class Fantasy
|
6
|
+
|
7
|
+
include GladeGUI
|
8
|
+
|
9
|
+
def before_show()
|
10
|
+
@avgs = {}
|
11
|
+
@avgs["run"] = 18.6
|
12
|
+
@avgs["wr"] = 22.7
|
13
|
+
@avgs["te"] = 7.5
|
14
|
+
@avgs["qb"] = 20
|
15
|
+
|
16
|
+
@avg_o = {}
|
17
|
+
@avg_o["run"] = 12.5
|
18
|
+
@avg_o["wr"] = 14.5
|
19
|
+
@avg_o["qb"] = 17.9
|
20
|
+
@avg_o["te"] = 8.6
|
21
|
+
|
22
|
+
|
23
|
+
@show = true
|
24
|
+
end
|
25
|
+
def buttonFillRunPts__clicked(*a)
|
26
|
+
@show = true
|
27
|
+
type = @builder[:type].active_text
|
28
|
+
home_advantage = @builder[:entryHomeFieldPts].text.to_f
|
29
|
+
o_factor = @builder[:entryOFactor].text.to_f
|
30
|
+
d_factor = @builder[:entryDFactor].text.to_f
|
31
|
+
count = 0
|
32
|
+
out "clear"
|
33
|
+
Game.all.each do |g|
|
34
|
+
home = Team.where(code: g.home).first
|
35
|
+
away = Team.where(code: g.away).first
|
36
|
+
home_o = home.read_attribute("#{type}_o")
|
37
|
+
away_o = away.read_attribute("#{type}_o")
|
38
|
+
home_d = home.read_attribute("#{type}_d")
|
39
|
+
away_d = away.read_attribute("#{type}_d")
|
40
|
+
|
41
|
+
home_d_factor = home_d/@avgs[type]
|
42
|
+
away_d_factor = away_d/@avgs[type]
|
43
|
+
|
44
|
+
home_pts = (@avg_o[type] + (o_factor * (home_o-@avg_o[type]))) * (away_d_factor) + home_advantage
|
45
|
+
away_pts = (@avg_o[type] + (o_factor * (away_o-@avg_o[type]))) * (home_d_factor) - home_advantage
|
46
|
+
|
47
|
+
g.send("home_#{type}_pts=", home_pts)
|
48
|
+
g.send("away_#{type}_pts=", away_pts)
|
49
|
+
# g.home_run_pts = (o_factor * home.run_o) + home_advantage + (d_factor * (away.run_d - 18.6))
|
50
|
+
# g.away_run_pts = (o_factor * away.run_o) - home_advantage + (d_factor * (home.run_d - 18.6))
|
51
|
+
#
|
52
|
+
|
53
|
+
|
54
|
+
out "#{g.away} @ #{g.home}"
|
55
|
+
out "#{g.home} #{type} offense = #{home_o}"
|
56
|
+
out "#{g.away} #{type} defense = #{r2(away_d)} (factor=#{r2(away_d_factor)})"
|
57
|
+
out "home total = #{r2(home_pts)}"
|
58
|
+
out "#{g.away} #{type} offense = #{away_o}"
|
59
|
+
out "#{g.home} #{type} defense = #{r2(home_d)} (factor=#{r2(home_d_factor)})"
|
60
|
+
out "away total = #{r2(away_pts)}\n"
|
61
|
+
count = count + 1
|
62
|
+
g.save!
|
63
|
+
# return if count > 5
|
64
|
+
end
|
65
|
+
out "Updated #{type} Points: Home = #{home_advantage.to_s} O Factor = #{o_factor.to_s} D Factor = #{d_factor}"
|
66
|
+
# @builder[:window1].show_all
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
def buttonComputeCombos__clicked(*a)
|
72
|
+
# Combo.destroy_all
|
73
|
+
out "clear"
|
74
|
+
type = @builder[:type].active_text
|
75
|
+
@teams = []
|
76
|
+
Team.all.each do |team1|
|
77
|
+
@teams << team1.code
|
78
|
+
end
|
79
|
+
@teams = @teams.sort
|
80
|
+
for i in 0..31 do
|
81
|
+
for j in (i+1)..31 do
|
82
|
+
combo_pts(@teams[i], @teams[j], type)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
out "Combos Updated"
|
86
|
+
end
|
87
|
+
|
88
|
+
def buttonShowCombos__clicked(*a)
|
89
|
+
Combos.new(self).show_glade
|
90
|
+
end
|
91
|
+
|
92
|
+
def buttonRunCombo__clicked(*a)
|
93
|
+
team1 = @builder[:entryTeam1].text
|
94
|
+
team2 = @builder[:entryTeam2].text
|
95
|
+
if team2 < team1
|
96
|
+
team1, team2 = team2, team1
|
97
|
+
end
|
98
|
+
out "clear"
|
99
|
+
type = @builder[:type].active_text
|
100
|
+
combo_pts(team1, team2, type, true)
|
101
|
+
end
|
102
|
+
|
103
|
+
def combo_pts(team1,team2, type, show = false)
|
104
|
+
@show, @old_show = show, @show
|
105
|
+
tot1 = 0
|
106
|
+
tot2 = 0
|
107
|
+
tot_best = 0
|
108
|
+
tot_games = 0
|
109
|
+
out "clear" if show
|
110
|
+
out "#{type} Combos for #{team1} & #{team2}", true
|
111
|
+
for week in 1..16 do
|
112
|
+
best_pts = -99
|
113
|
+
best_team = "Error"
|
114
|
+
out "\nweek ##{week}"
|
115
|
+
clear_events
|
116
|
+
Game.where("(home = '#{team1}' or away = '#{team1}' or home = '#{team2}' or away = '#{team2}') and week = #{week}").each do |g|
|
117
|
+
home_pts = g.read_attribute("home_#{type}_pts")
|
118
|
+
away_pts = g.read_attribute("away_#{type}_pts")
|
119
|
+
if g.home == team1 or g.home == team2
|
120
|
+
out " #{g.away} @ #{g.home} => #{g.home} = #{r2(home_pts)}"
|
121
|
+
if home_pts > best_pts
|
122
|
+
best_pts = home_pts
|
123
|
+
best_team = g.home
|
124
|
+
end
|
125
|
+
end
|
126
|
+
if g.away == team1 or g.away == team2
|
127
|
+
out "#{g.away} @ #{g.home} => #{g.away} = #{r2(away_pts)}"
|
128
|
+
if away_pts > best_pts
|
129
|
+
best_pts = away_pts
|
130
|
+
best_team = g.away
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
if best_team != "Error"
|
135
|
+
out "best = #{best_team} (#{r2(best_pts)})"
|
136
|
+
tot_best = tot_best + best_pts
|
137
|
+
tot_games = tot_games + 1
|
138
|
+
end
|
139
|
+
end
|
140
|
+
out "\ntot games: #{tot_games} total: #{r2(tot_best)} avg: #{r2(tot_best/tot_games)}"
|
141
|
+
unless c = Combo.where("team1 = '#{team1}' and team2 = '#{team2}'").first
|
142
|
+
c = Combo.create
|
143
|
+
c.team1 = team1
|
144
|
+
c.team2 = team2
|
145
|
+
end
|
146
|
+
c.send("avg_#{type}_pts=", tot_best/tot_games)
|
147
|
+
c.save!
|
148
|
+
@show = @old_show
|
149
|
+
end
|
150
|
+
|
151
|
+
def out(str, show = @show)
|
152
|
+
if str == "clear"
|
153
|
+
@builder[:out].buffer.text = ""
|
154
|
+
elsif show
|
155
|
+
@builder[:out].buffer.text += str + "\n"
|
156
|
+
end
|
157
|
+
clear_events
|
158
|
+
end
|
159
|
+
|
160
|
+
def self.fill_bye_week()
|
161
|
+
Team.all.each do |t|
|
162
|
+
for week in 1..17
|
163
|
+
if Game.where("'#{t.code}' IN (home, away) AND week =#{week}").first
|
164
|
+
next
|
165
|
+
else
|
166
|
+
t.bye_week = week
|
167
|
+
t.save!
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
data/src/Game.rb
ADDED
data/src/MyClass.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
class ParseSchedule
|
3
|
+
|
4
|
+
def self.parse_teams
|
5
|
+
Team.delete_all
|
6
|
+
CSV.foreach("./data/teams.csv") do |row|
|
7
|
+
r = Team.create
|
8
|
+
r.name = row[1]
|
9
|
+
r.code = row[0]
|
10
|
+
r.save
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# record format
|
15
|
+
# 5,Sun,October 9,1:00PM,Philadelphia Eagles,@,Detroit Lions,preview,,,,,,
|
16
|
+
def self.parse(season) #int
|
17
|
+
Game.destroy_all
|
18
|
+
CSV.foreach("./data/#{season.to_s}_schedule.csv") do |row|
|
19
|
+
week = row[0].to_i
|
20
|
+
@switch = row[5] == "@"
|
21
|
+
home = Team.get_code(@switch ? row[6] : row[4])
|
22
|
+
unless game = Game.where(week: week, home: home).first
|
23
|
+
game = Game.create
|
24
|
+
end
|
25
|
+
day = row[2]
|
26
|
+
year = day.include?("January") ? (season + 1) : season
|
27
|
+
date = Date.strptime("#{day}, #{year}", "%B %e, %Y")
|
28
|
+
# game.date = date
|
29
|
+
game.week = week
|
30
|
+
@switch = row[5] == "@"
|
31
|
+
game.home = Team.get_code(@switch ? row[6] : row[3])
|
32
|
+
game.away = Team.get_code(@switch ? row[3] : row[6])
|
33
|
+
# game.home_points = @switch ? row[9].to_i : row[8].to_i
|
34
|
+
# game.away_points = @switch ? row[8].to_i : row[9].to_i
|
35
|
+
# game.home_yards = @switch ? row[12].to_i : row[10].to_i
|
36
|
+
# game.away_yards = @switch ? row[10].to_i : row[12].to_i
|
37
|
+
# game.home_turnovers = @switch ? row[13].to_i : row[11].to_i
|
38
|
+
# game.away_turnovers = @switch ? row[11].to_i : row[13].to_i
|
39
|
+
# game.season = season
|
40
|
+
game.save!
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/src/TallyGames.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
class TallyGames
|
2
|
+
|
3
|
+
def self.fill_run_pts
|
4
|
+
home_advantage = 3
|
5
|
+
o_factor = 0
|
6
|
+
d_factor = 1
|
7
|
+
count = 0
|
8
|
+
Game.all.each do |g|
|
9
|
+
home = Team.where(code: g.home).first
|
10
|
+
away = Team.where(code: g.away).first
|
11
|
+
g.home_run_pts = (o_factor * home.run_o) + home_advantage + (d_factor * (away.run_d - 18.6))
|
12
|
+
g.away_run_pts = (o_factor * away.run_o) - home_advantage + (d_factor * (home.run_d - 18.6))
|
13
|
+
puts "#{g.away} @ #{g.home}"
|
14
|
+
puts "#{g.home} offense = #{home.run_o}"
|
15
|
+
puts "#{g.away} defense = #{away.run_d}"
|
16
|
+
puts "home total = #{g.home_run_pts}"
|
17
|
+
puts "#{g.away} offense = #{away.run_o}"
|
18
|
+
puts "#{g.home} defense = #{home.run_d}"
|
19
|
+
puts "away total = #{g.away_run_pts}"
|
20
|
+
count = count + 1
|
21
|
+
g.save!
|
22
|
+
# return if count > 100
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
end
|
data/src/Team.rb
ADDED
data/src/Util.rb
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!-- Generated with glade 3.16.1 -->
|
3
|
+
<interface>
|
4
|
+
<requires lib="gtk+" version="3.0"/>
|
5
|
+
<object class="GtkWindow" id="window1">
|
6
|
+
<property name="width_request">600</property>
|
7
|
+
<property name="height_request">600</property>
|
8
|
+
<property name="can_focus">False</property>
|
9
|
+
<property name="title" translatable="yes">Nature Boy</property>
|
10
|
+
<property name="window_position">center</property>
|
11
|
+
<property name="gravity">west</property>
|
12
|
+
<child>
|
13
|
+
<object class="GtkBox" id="box1">
|
14
|
+
<property name="visible">True</property>
|
15
|
+
<property name="can_focus">False</property>
|
16
|
+
<property name="margin_left">11</property>
|
17
|
+
<property name="margin_right">11</property>
|
18
|
+
<property name="margin_top">11</property>
|
19
|
+
<property name="margin_bottom">11</property>
|
20
|
+
<property name="orientation">vertical</property>
|
21
|
+
<property name="spacing">9</property>
|
22
|
+
<child>
|
23
|
+
<object class="GtkLabel" id="label1">
|
24
|
+
<property name="visible">True</property>
|
25
|
+
<property name="can_focus">False</property>
|
26
|
+
<property name="label" translatable="yes"><big><big><big>Team Combos</big></big></big></property>
|
27
|
+
<property name="use_markup">True</property>
|
28
|
+
</object>
|
29
|
+
<packing>
|
30
|
+
<property name="expand">False</property>
|
31
|
+
<property name="fill">True</property>
|
32
|
+
<property name="position">0</property>
|
33
|
+
</packing>
|
34
|
+
</child>
|
35
|
+
<child>
|
36
|
+
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
37
|
+
<property name="visible">True</property>
|
38
|
+
<property name="can_focus">True</property>
|
39
|
+
<property name="shadow_type">in</property>
|
40
|
+
<child>
|
41
|
+
<placeholder/>
|
42
|
+
</child>
|
43
|
+
</object>
|
44
|
+
<packing>
|
45
|
+
<property name="expand">True</property>
|
46
|
+
<property name="fill">True</property>
|
47
|
+
<property name="position">1</property>
|
48
|
+
</packing>
|
49
|
+
</child>
|
50
|
+
<child>
|
51
|
+
<object class="GtkGrid" id="grid1">
|
52
|
+
<property name="visible">True</property>
|
53
|
+
<property name="can_focus">False</property>
|
54
|
+
<child>
|
55
|
+
<object class="GtkEntry" id="entryFilter">
|
56
|
+
<property name="visible">True</property>
|
57
|
+
<property name="can_focus">True</property>
|
58
|
+
<property name="hexpand">True</property>
|
59
|
+
</object>
|
60
|
+
<packing>
|
61
|
+
<property name="left_attach">0</property>
|
62
|
+
<property name="top_attach">0</property>
|
63
|
+
<property name="width">1</property>
|
64
|
+
<property name="height">1</property>
|
65
|
+
</packing>
|
66
|
+
</child>
|
67
|
+
<child>
|
68
|
+
<object class="GtkButtonBox" id="buttonbox1">
|
69
|
+
<property name="visible">True</property>
|
70
|
+
<property name="can_focus">False</property>
|
71
|
+
<property name="halign">end</property>
|
72
|
+
<property name="spacing">9</property>
|
73
|
+
<property name="layout_style">end</property>
|
74
|
+
<child>
|
75
|
+
<object class="GtkButton" id="buttonFilter[and]">
|
76
|
+
<property name="label" translatable="yes">And</property>
|
77
|
+
<property name="visible">True</property>
|
78
|
+
<property name="can_focus">True</property>
|
79
|
+
<property name="receives_default">True</property>
|
80
|
+
</object>
|
81
|
+
<packing>
|
82
|
+
<property name="expand">False</property>
|
83
|
+
<property name="fill">True</property>
|
84
|
+
<property name="position">0</property>
|
85
|
+
</packing>
|
86
|
+
</child>
|
87
|
+
<child>
|
88
|
+
<object class="GtkButton" id="buttonFilter[or]">
|
89
|
+
<property name="label" translatable="yes">Or</property>
|
90
|
+
<property name="visible">True</property>
|
91
|
+
<property name="can_focus">True</property>
|
92
|
+
<property name="receives_default">True</property>
|
93
|
+
</object>
|
94
|
+
<packing>
|
95
|
+
<property name="expand">False</property>
|
96
|
+
<property name="fill">True</property>
|
97
|
+
<property name="position">1</property>
|
98
|
+
</packing>
|
99
|
+
</child>
|
100
|
+
</object>
|
101
|
+
<packing>
|
102
|
+
<property name="left_attach">1</property>
|
103
|
+
<property name="top_attach">0</property>
|
104
|
+
<property name="width">1</property>
|
105
|
+
<property name="height">1</property>
|
106
|
+
</packing>
|
107
|
+
</child>
|
108
|
+
</object>
|
109
|
+
<packing>
|
110
|
+
<property name="expand">False</property>
|
111
|
+
<property name="fill">True</property>
|
112
|
+
<property name="position">2</property>
|
113
|
+
</packing>
|
114
|
+
</child>
|
115
|
+
</object>
|
116
|
+
</child>
|
117
|
+
</object>
|
118
|
+
</interface>
|
@@ -0,0 +1,289 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!-- Generated with glade 3.16.1 -->
|
3
|
+
<interface>
|
4
|
+
<requires lib="gtk+" version="3.0"/>
|
5
|
+
<object class="GtkWindow" id="window1">
|
6
|
+
<property name="can_focus">False</property>
|
7
|
+
<property name="title" translatable="yes">Nature Boy</property>
|
8
|
+
<property name="gravity">east</property>
|
9
|
+
<child>
|
10
|
+
<object class="GtkBox" id="box1">
|
11
|
+
<property name="visible">True</property>
|
12
|
+
<property name="can_focus">False</property>
|
13
|
+
<property name="valign">start</property>
|
14
|
+
<property name="margin_left">10</property>
|
15
|
+
<property name="margin_right">10</property>
|
16
|
+
<property name="margin_top">10</property>
|
17
|
+
<property name="margin_bottom">10</property>
|
18
|
+
<property name="vexpand">True</property>
|
19
|
+
<property name="orientation">vertical</property>
|
20
|
+
<property name="spacing">10</property>
|
21
|
+
<child>
|
22
|
+
<object class="GtkLabel" id="label1">
|
23
|
+
<property name="visible">True</property>
|
24
|
+
<property name="can_focus">False</property>
|
25
|
+
<property name="label" translatable="yes"><big><big><big>Nature Boy's Fantasy World</big></big></big></property>
|
26
|
+
<property name="use_markup">True</property>
|
27
|
+
</object>
|
28
|
+
<packing>
|
29
|
+
<property name="expand">False</property>
|
30
|
+
<property name="fill">True</property>
|
31
|
+
<property name="position">0</property>
|
32
|
+
</packing>
|
33
|
+
</child>
|
34
|
+
<child>
|
35
|
+
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
36
|
+
<property name="height_request">400</property>
|
37
|
+
<property name="visible">True</property>
|
38
|
+
<property name="can_focus">True</property>
|
39
|
+
<property name="vexpand">True</property>
|
40
|
+
<property name="shadow_type">in</property>
|
41
|
+
<child>
|
42
|
+
<object class="GtkTextView" id="out">
|
43
|
+
<property name="height_request">360</property>
|
44
|
+
<property name="visible">True</property>
|
45
|
+
<property name="can_focus">True</property>
|
46
|
+
<property name="hexpand">True</property>
|
47
|
+
<property name="vexpand">True</property>
|
48
|
+
<property name="wrap_mode">word</property>
|
49
|
+
</object>
|
50
|
+
</child>
|
51
|
+
</object>
|
52
|
+
<packing>
|
53
|
+
<property name="expand">True</property>
|
54
|
+
<property name="fill">True</property>
|
55
|
+
<property name="position">1</property>
|
56
|
+
</packing>
|
57
|
+
</child>
|
58
|
+
<child>
|
59
|
+
<object class="GtkGrid" id="grid2">
|
60
|
+
<property name="visible">True</property>
|
61
|
+
<property name="can_focus">False</property>
|
62
|
+
<child>
|
63
|
+
<object class="GtkGrid" id="grid3">
|
64
|
+
<property name="visible">True</property>
|
65
|
+
<property name="can_focus">False</property>
|
66
|
+
<property name="row_spacing">2</property>
|
67
|
+
<property name="column_spacing">2</property>
|
68
|
+
<child>
|
69
|
+
<object class="GtkEntry" id="entryHomeFieldPts">
|
70
|
+
<property name="visible">True</property>
|
71
|
+
<property name="can_focus">True</property>
|
72
|
+
<property name="text" translatable="yes">3</property>
|
73
|
+
</object>
|
74
|
+
<packing>
|
75
|
+
<property name="left_attach">1</property>
|
76
|
+
<property name="top_attach">0</property>
|
77
|
+
<property name="width">1</property>
|
78
|
+
<property name="height">1</property>
|
79
|
+
</packing>
|
80
|
+
</child>
|
81
|
+
<child>
|
82
|
+
<object class="GtkEntry" id="entryOFactor">
|
83
|
+
<property name="visible">True</property>
|
84
|
+
<property name="can_focus">True</property>
|
85
|
+
<property name="text" translatable="yes">1</property>
|
86
|
+
</object>
|
87
|
+
<packing>
|
88
|
+
<property name="left_attach">1</property>
|
89
|
+
<property name="top_attach">1</property>
|
90
|
+
<property name="width">1</property>
|
91
|
+
<property name="height">1</property>
|
92
|
+
</packing>
|
93
|
+
</child>
|
94
|
+
<child>
|
95
|
+
<object class="GtkEntry" id="entryDFactor">
|
96
|
+
<property name="visible">True</property>
|
97
|
+
<property name="can_focus">True</property>
|
98
|
+
<property name="text" translatable="yes">1</property>
|
99
|
+
</object>
|
100
|
+
<packing>
|
101
|
+
<property name="left_attach">1</property>
|
102
|
+
<property name="top_attach">2</property>
|
103
|
+
<property name="width">1</property>
|
104
|
+
<property name="height">1</property>
|
105
|
+
</packing>
|
106
|
+
</child>
|
107
|
+
<child>
|
108
|
+
<object class="GtkLabel" id="label2">
|
109
|
+
<property name="visible">True</property>
|
110
|
+
<property name="can_focus">False</property>
|
111
|
+
<property name="label" translatable="yes">Home Field Pts:</property>
|
112
|
+
</object>
|
113
|
+
<packing>
|
114
|
+
<property name="left_attach">0</property>
|
115
|
+
<property name="top_attach">0</property>
|
116
|
+
<property name="width">1</property>
|
117
|
+
<property name="height">1</property>
|
118
|
+
</packing>
|
119
|
+
</child>
|
120
|
+
<child>
|
121
|
+
<object class="GtkLabel" id="label3">
|
122
|
+
<property name="visible">True</property>
|
123
|
+
<property name="can_focus">False</property>
|
124
|
+
<property name="label" translatable="yes">Offense Factor:</property>
|
125
|
+
</object>
|
126
|
+
<packing>
|
127
|
+
<property name="left_attach">0</property>
|
128
|
+
<property name="top_attach">1</property>
|
129
|
+
<property name="width">1</property>
|
130
|
+
<property name="height">1</property>
|
131
|
+
</packing>
|
132
|
+
</child>
|
133
|
+
<child>
|
134
|
+
<object class="GtkLabel" id="label4">
|
135
|
+
<property name="visible">True</property>
|
136
|
+
<property name="can_focus">False</property>
|
137
|
+
<property name="label" translatable="yes">Defense Factor:</property>
|
138
|
+
</object>
|
139
|
+
<packing>
|
140
|
+
<property name="left_attach">0</property>
|
141
|
+
<property name="top_attach">2</property>
|
142
|
+
<property name="width">1</property>
|
143
|
+
<property name="height">1</property>
|
144
|
+
</packing>
|
145
|
+
</child>
|
146
|
+
</object>
|
147
|
+
<packing>
|
148
|
+
<property name="left_attach">0</property>
|
149
|
+
<property name="top_attach">0</property>
|
150
|
+
<property name="width">1</property>
|
151
|
+
<property name="height">1</property>
|
152
|
+
</packing>
|
153
|
+
</child>
|
154
|
+
<child>
|
155
|
+
<object class="GtkButtonBox" id="buttonbox1">
|
156
|
+
<property name="visible">True</property>
|
157
|
+
<property name="can_focus">False</property>
|
158
|
+
<property name="orientation">vertical</property>
|
159
|
+
<property name="spacing">2</property>
|
160
|
+
<property name="layout_style">start</property>
|
161
|
+
<child>
|
162
|
+
<object class="GtkButton" id="buttonFillRunPts">
|
163
|
+
<property name="label" translatable="yes">Fill Run Values</property>
|
164
|
+
<property name="visible">True</property>
|
165
|
+
<property name="can_focus">True</property>
|
166
|
+
<property name="receives_default">True</property>
|
167
|
+
</object>
|
168
|
+
<packing>
|
169
|
+
<property name="expand">False</property>
|
170
|
+
<property name="fill">True</property>
|
171
|
+
<property name="position">0</property>
|
172
|
+
</packing>
|
173
|
+
</child>
|
174
|
+
<child>
|
175
|
+
<object class="GtkButton" id="buttonComputeCombos">
|
176
|
+
<property name="label" translatable="yes">Compute Combos</property>
|
177
|
+
<property name="visible">True</property>
|
178
|
+
<property name="can_focus">True</property>
|
179
|
+
<property name="receives_default">True</property>
|
180
|
+
</object>
|
181
|
+
<packing>
|
182
|
+
<property name="expand">False</property>
|
183
|
+
<property name="fill">True</property>
|
184
|
+
<property name="position">1</property>
|
185
|
+
</packing>
|
186
|
+
</child>
|
187
|
+
<child>
|
188
|
+
<object class="GtkButton" id="buttonShowCombos">
|
189
|
+
<property name="label" translatable="yes">Show Combos</property>
|
190
|
+
<property name="visible">True</property>
|
191
|
+
<property name="can_focus">True</property>
|
192
|
+
<property name="receives_default">True</property>
|
193
|
+
</object>
|
194
|
+
<packing>
|
195
|
+
<property name="expand">False</property>
|
196
|
+
<property name="fill">True</property>
|
197
|
+
<property name="position">2</property>
|
198
|
+
</packing>
|
199
|
+
</child>
|
200
|
+
</object>
|
201
|
+
<packing>
|
202
|
+
<property name="left_attach">1</property>
|
203
|
+
<property name="top_attach">0</property>
|
204
|
+
<property name="width">1</property>
|
205
|
+
<property name="height">1</property>
|
206
|
+
</packing>
|
207
|
+
</child>
|
208
|
+
</object>
|
209
|
+
<packing>
|
210
|
+
<property name="expand">False</property>
|
211
|
+
<property name="fill">True</property>
|
212
|
+
<property name="position">2</property>
|
213
|
+
</packing>
|
214
|
+
</child>
|
215
|
+
<child>
|
216
|
+
<object class="GtkGrid" id="grid1">
|
217
|
+
<property name="visible">True</property>
|
218
|
+
<property name="can_focus">False</property>
|
219
|
+
<child>
|
220
|
+
<object class="GtkButton" id="buttonRunCombo">
|
221
|
+
<property name="label" translatable="yes">Run Combo</property>
|
222
|
+
<property name="visible">True</property>
|
223
|
+
<property name="can_focus">True</property>
|
224
|
+
<property name="receives_default">True</property>
|
225
|
+
</object>
|
226
|
+
<packing>
|
227
|
+
<property name="left_attach">3</property>
|
228
|
+
<property name="top_attach">0</property>
|
229
|
+
<property name="width">1</property>
|
230
|
+
<property name="height">1</property>
|
231
|
+
</packing>
|
232
|
+
</child>
|
233
|
+
<child>
|
234
|
+
<object class="GtkEntry" id="entryTeam2">
|
235
|
+
<property name="visible">True</property>
|
236
|
+
<property name="can_focus">True</property>
|
237
|
+
<property name="text" translatable="yes">BAL</property>
|
238
|
+
</object>
|
239
|
+
<packing>
|
240
|
+
<property name="left_attach">2</property>
|
241
|
+
<property name="top_attach">0</property>
|
242
|
+
<property name="width">1</property>
|
243
|
+
<property name="height">1</property>
|
244
|
+
</packing>
|
245
|
+
</child>
|
246
|
+
<child>
|
247
|
+
<object class="GtkEntry" id="entryTeam1">
|
248
|
+
<property name="visible">True</property>
|
249
|
+
<property name="can_focus">True</property>
|
250
|
+
<property name="text" translatable="yes">ATL</property>
|
251
|
+
</object>
|
252
|
+
<packing>
|
253
|
+
<property name="left_attach">1</property>
|
254
|
+
<property name="top_attach">0</property>
|
255
|
+
<property name="width">1</property>
|
256
|
+
<property name="height">1</property>
|
257
|
+
</packing>
|
258
|
+
</child>
|
259
|
+
<child>
|
260
|
+
<object class="GtkComboBoxText" id="type">
|
261
|
+
<property name="visible">True</property>
|
262
|
+
<property name="can_focus">False</property>
|
263
|
+
<property name="active">0</property>
|
264
|
+
<property name="active_id">0</property>
|
265
|
+
<items>
|
266
|
+
<item id="<Enter ID>" translatable="yes">run</item>
|
267
|
+
<item translatable="yes">wr</item>
|
268
|
+
<item translatable="yes">te</item>
|
269
|
+
<item translatable="yes">qb</item>
|
270
|
+
</items>
|
271
|
+
</object>
|
272
|
+
<packing>
|
273
|
+
<property name="left_attach">0</property>
|
274
|
+
<property name="top_attach">0</property>
|
275
|
+
<property name="width">1</property>
|
276
|
+
<property name="height">1</property>
|
277
|
+
</packing>
|
278
|
+
</child>
|
279
|
+
</object>
|
280
|
+
<packing>
|
281
|
+
<property name="expand">False</property>
|
282
|
+
<property name="fill">True</property>
|
283
|
+
<property name="position">3</property>
|
284
|
+
</packing>
|
285
|
+
</child>
|
286
|
+
</object>
|
287
|
+
</child>
|
288
|
+
</object>
|
289
|
+
</interface>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!-- Generated with glade 3.16.1 -->
|
3
|
+
<interface>
|
4
|
+
<requires lib="gtk+" version="3.0"/>
|
5
|
+
<object class="GtkWindow" id="window1">
|
6
|
+
<property name="can_focus">False</property>
|
7
|
+
<property name="window_position">center</property>
|
8
|
+
<child>
|
9
|
+
<object class="GtkButtonBox" id="buttonbox1">
|
10
|
+
<property name="visible">True</property>
|
11
|
+
<property name="can_focus">False</property>
|
12
|
+
<property name="halign">center</property>
|
13
|
+
<property name="valign">center</property>
|
14
|
+
<property name="margin_left">50</property>
|
15
|
+
<property name="margin_right">50</property>
|
16
|
+
<property name="margin_top">50</property>
|
17
|
+
<property name="margin_bottom">50</property>
|
18
|
+
<property name="orientation">vertical</property>
|
19
|
+
<property name="layout_style">start</property>
|
20
|
+
<child>
|
21
|
+
<object class="GtkButton" id="button1">
|
22
|
+
<property name="label" translatable="yes">button</property>
|
23
|
+
<property name="visible">True</property>
|
24
|
+
<property name="can_focus">True</property>
|
25
|
+
<property name="receives_default">True</property>
|
26
|
+
</object>
|
27
|
+
<packing>
|
28
|
+
<property name="expand">True</property>
|
29
|
+
<property name="fill">True</property>
|
30
|
+
<property name="position">0</property>
|
31
|
+
</packing>
|
32
|
+
</child>
|
33
|
+
</object>
|
34
|
+
</child>
|
35
|
+
</object>
|
36
|
+
</interface>
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nature
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eric Cunningham
|
8
|
+
autorequire:
|
9
|
+
bindir:
|
10
|
+
- "."
|
11
|
+
cert_chain: []
|
12
|
+
date: 2017-08-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: visualruby
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 3.1.10
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 3.1.10
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: require_all
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.2.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.2.0
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: sqlite3
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.2.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.2.0
|
56
|
+
description: Full description here
|
57
|
+
email: you@yoursite.com
|
58
|
+
executables:
|
59
|
+
- nature
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- "./nature"
|
64
|
+
- src/Combo.rb
|
65
|
+
- src/Combos.rb
|
66
|
+
- src/Fantasy.rb
|
67
|
+
- src/Game.rb
|
68
|
+
- src/MyClass.rb
|
69
|
+
- src/ParseSchedule.rb
|
70
|
+
- src/TallyGames.rb
|
71
|
+
- src/Team.rb
|
72
|
+
- src/Util.rb
|
73
|
+
- src/glade/Combos.glade
|
74
|
+
- src/glade/Fantasy.glade
|
75
|
+
- src/glade/MyClass.glade
|
76
|
+
homepage: http://www.yoursite.org/
|
77
|
+
licenses: []
|
78
|
+
metadata: {}
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
requirements: []
|
94
|
+
rubyforge_project: nowarning
|
95
|
+
rubygems_version: 2.5.1
|
96
|
+
signing_key:
|
97
|
+
specification_version: 4
|
98
|
+
summary: Short Description Here.
|
99
|
+
test_files: []
|