visualruby 3.2.0 → 3.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.vr_settings.yaml +13 -3
- data/examples/all_widgets/bin/AllWidgets.rb +1 -0
- data/examples/golf_handicap/.vr_settings.yaml +27 -0
- data/examples/golf_handicap/src/Handicap.rb +115 -0
- data/examples/golf_handicap/src/LoadGolfer.rb +27 -0
- data/examples/golf_handicap/src/Score.rb +37 -0
- data/examples/golf_handicap/src/glade/Handicap.glade +178 -0
- data/examples/golf_handicap/src/glade/Score.glade +219 -0
- data/examples/simple_ruby_gui/.vr_settings.yaml +5 -6
- data/examples/simple_ruby_gui/main.rb +2 -3
- data/lib/ActLikeAHash.rb +4 -4
- data/lib/Alert.rb +1 -0
- data/lib/vrlib.rb +3 -0
- data/src/editor/VR_Document.rb +11 -11
- data/src/main/VR_File_Tree.rb +6 -5
- data/src/main/VR_Main.rb +8 -16
- data/src/version.rb +1 -1
- data/vr +9 -2
- metadata +22 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0074b60a95460353ace8f4a4e202449b0518cb02defb20280ba0d909f06a1843
|
4
|
+
data.tar.gz: bcdfdaba09fce6e9b3b9a3da3c8e64985a88ae7aaa286f8f37d581a7b5b90ef2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 040e37dad70ab5aa5cfaae814d12bb211c616c826ad1218f4184994fe3888c02afa0eb488d2053a1eb820c3db3624d6b872a6b9467158fc85c1e47ceb1c90836
|
7
|
+
data.tar.gz: dd2e5c97ef06edcef9406a65163f67ec0a0da1ee88e4c1c61628325bdef835a903a8f1d89ac4a69ed9744b489ac170356ae367e148a1d40c7c1ff6df190cfd4b
|
data/.vr_settings.yaml
CHANGED
@@ -14,16 +14,26 @@ open_files:
|
|
14
14
|
- "/home/eric/vrp/vr3/vr"
|
15
15
|
- "/home/eric/vrp/vr3/src/main/VR_Main.rb"
|
16
16
|
- "/home/eric/vrp/vr3/lib/GladeGUI.rb"
|
17
|
-
- "/home/eric/vrp/vr3/
|
17
|
+
- "/home/eric/vrp/vr3/lib/treeview/FileTreeView.rb"
|
18
18
|
- "/home/eric/vrp/vr3/src/editor/VR_Document.rb"
|
19
|
+
- "/home/eric/vrp/vr3/lib/SavableClass.rb"
|
20
|
+
- "/home/eric/vrp/vr3/lib/ActLikeAHash.rb"
|
21
|
+
- "/home/eric/vrp/vr3/src/main/VR_Remote_Gem_Tree.rb"
|
22
|
+
- "/home/eric/vrp/vr3/src/main/RubygemsAPI.rb"
|
23
|
+
- "/home/eric/vrp/vr3/examples/alert_box/main.rb"
|
24
|
+
- "/home/eric/vrp/vr3/examples/active_record/active_record.rb"
|
25
|
+
- "/home/eric/vrp/vr3/examples/active_record2/main.rb"
|
26
|
+
- "/home/eric/vrp/vr3/lib/vrlib.rb"
|
27
|
+
- "/home/eric/vrp/vr3/lib/treeview/TreeView.rb"
|
19
28
|
open_folders:
|
20
29
|
- "/home/eric/vrp/vr3"
|
30
|
+
- "/home/eric/vrp/vr3/lib"
|
21
31
|
- "/home/eric/vrp/vr3/site"
|
22
32
|
- "/home/eric/vrp/vr3/src"
|
23
33
|
- "/home/eric/vrp/vr3/src/editor"
|
24
34
|
- "/home/eric/vrp/vr3/src/main"
|
25
|
-
current_file: "/home/eric/vrp/vr3/
|
26
|
-
current_line:
|
35
|
+
current_file: "/home/eric/vrp/vr3/vr.gemspec"
|
36
|
+
current_line: 7
|
27
37
|
rdoc_command_line: yardoc lib - site/*.*
|
28
38
|
builder: !ruby/object:Gtk::Builder {}
|
29
39
|
top_level_window: false
|
@@ -0,0 +1,27 @@
|
|
1
|
+
--- !ruby/object:VR_ENV
|
2
|
+
vr_yaml_file: "/home/eric/vrp/vr3/examples/golf_handicap/.vr_settings.yaml"
|
3
|
+
width: 1086
|
4
|
+
height: 600
|
5
|
+
panel_pos: 360
|
6
|
+
notebook_panel_position: 400
|
7
|
+
run_command_line: ruby golf_handicap eric
|
8
|
+
open_files:
|
9
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/golf_handicap"
|
10
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/src/Handicap.rb"
|
11
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/src/Score.rb"
|
12
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/golf_handicap.gemspec"
|
13
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/src/LoadGolfer.rb"
|
14
|
+
open_folders:
|
15
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap"
|
16
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/src"
|
17
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/src/glade"
|
18
|
+
current_file: "/home/eric/vrp/vr3/examples/golf_handicap/golf_handicap.gemspec"
|
19
|
+
current_line: 3
|
20
|
+
rdoc_command_line: rdoc -x README
|
21
|
+
builder: !ruby/object:Gtk::Builder {}
|
22
|
+
top_level_window: false
|
23
|
+
browser: firefox
|
24
|
+
backup_path: "/home/eric"
|
25
|
+
tab_spaces: 2
|
26
|
+
glade_path: glade-3
|
27
|
+
font_name: Monospace 10
|
@@ -0,0 +1,115 @@
|
|
1
|
+
class Handicap
|
2
|
+
|
3
|
+
include GladeGUI
|
4
|
+
|
5
|
+
def initialize()
|
6
|
+
@scores = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def before_show()
|
10
|
+
@view = VR::ListView.new(rnd: String, date: VR::Col::CalendarCol,
|
11
|
+
course: String, rating_slope: String, score: String, diff: Score,
|
12
|
+
hcp: String)
|
13
|
+
@view.col_xalign(diff: 1, hcp: 1, score: 1)
|
14
|
+
@view.col_sortable(date: true, course: true)
|
15
|
+
@view.show
|
16
|
+
golfer_file = File.basename(@vr_yaml_file, ".*")
|
17
|
+
golfer = golfer_file.split("_").map(&:capitalize).join(' ')
|
18
|
+
@builder[:name].label = "<big><big><big><big><big>#{golfer}</big></big></big></big></big>"
|
19
|
+
if File.exists?(golfer_file + ".jpg")
|
20
|
+
@builder[:image].file = golfer_file + ".jpg"
|
21
|
+
@builder[:image].visible = true
|
22
|
+
end
|
23
|
+
refresh()
|
24
|
+
end
|
25
|
+
|
26
|
+
def refresh()
|
27
|
+
update_handicaps
|
28
|
+
@view.model.clear
|
29
|
+
i = 1
|
30
|
+
@scores.each do |s|
|
31
|
+
row = @view.add_row()
|
32
|
+
row[:rnd] = "#{i}."
|
33
|
+
i += 1
|
34
|
+
row[:date] = VR::Col::CalendarCol.new(s.date, :format => "%d %b %Y ", :hide_time=>true, :hide_date => false)
|
35
|
+
row[:course] = s.course_name
|
36
|
+
row[:score] = s.score
|
37
|
+
row[:rating_slope] = "#{s.course_rating.to_s}/#{s.course_slope.to_s}"
|
38
|
+
row[:diff] = s
|
39
|
+
row[:hcp] = s.handicap
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def buttonAdd__clicked(*a)
|
44
|
+
if row = @view.selected_rows.first
|
45
|
+
course = row[:course]
|
46
|
+
rating, slope = row[:rating_slope].split("/")
|
47
|
+
else
|
48
|
+
course = rating = slope = ""
|
49
|
+
end
|
50
|
+
score = Score.new(course, rating, slope)
|
51
|
+
score.show_glade
|
52
|
+
if !score.used.nil? and score.score.to_i > 50
|
53
|
+
@scores << score
|
54
|
+
@scores.sort! { |x,y| y.date <=> x.date }
|
55
|
+
refresh()
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def update_handicaps
|
60
|
+
@scores.each_index do |i|
|
61
|
+
fill_handicap(@scores[@scores.size-i-1..@scores.size-1])
|
62
|
+
end
|
63
|
+
@scores.each {|s| s.used = ""}
|
64
|
+
fill_handicap(@scores)
|
65
|
+
@builder[:handicap].label = "<big><big><big><big><big><big><big><big>#{@scores[0].handicap}</big></big></big></big></big></big></big></big>" if @scores[0]
|
66
|
+
end
|
67
|
+
|
68
|
+
def fill_handicap(score_array)
|
69
|
+
score_ar = score_array.size > 20 ? score_array[0..19] : score_array
|
70
|
+
count = use_count(score_ar) # number of scores to use for handicap
|
71
|
+
best_scores = score_ar.sort { |x,y| x.diff <=> y.diff }
|
72
|
+
best_scores = count > 0 ? best_scores[0..count-1] : []
|
73
|
+
best_scores.each {|s| s.used = "y"}
|
74
|
+
tot = best_scores.inject(0) { |sum, s| sum + s.diff }
|
75
|
+
x = (0.96*tot/count).to_s
|
76
|
+
score_array[0].handicap = count > 0 ? x[0..x.index(".")+1] : "n/a" if score_array[0]
|
77
|
+
end
|
78
|
+
|
79
|
+
def buttonChangeGolfer__clicked(*a)
|
80
|
+
@view = nil # so it doesn't save contents
|
81
|
+
VR::save_yaml(self)
|
82
|
+
@builder[:window1].destroy
|
83
|
+
load_new_golfer
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
def window1__delete_event(*)
|
88
|
+
@view = nil
|
89
|
+
VR::save_yaml(self)
|
90
|
+
return false #ok to close
|
91
|
+
end
|
92
|
+
|
93
|
+
def use_count(score_ar)
|
94
|
+
if score_ar.size > 20
|
95
|
+
return 10
|
96
|
+
else
|
97
|
+
return [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,8,9,10][score_ar.size-1]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def buttonDelete__clicked(*a)
|
102
|
+
return unless row = @view.selected_rows.first
|
103
|
+
if alert("Are you sure you want to delete this score?", button_yes: "Delete", button_no: "Cancel")
|
104
|
+
@scores.delete(row[:diff])
|
105
|
+
refresh
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def buttonEditScore__clicked(*a)
|
110
|
+
return unless row = @view.selected_rows.first
|
111
|
+
row[:diff].show_glade
|
112
|
+
@scores.sort! { |x,y| y.date <=> x.date }
|
113
|
+
refresh
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
def load_new_golfer
|
2
|
+
files = []
|
3
|
+
names = []
|
4
|
+
Dir[File.expand_path('~/visualruby/golf_handicap/**/*.yaml')].each do |file_name|
|
5
|
+
files << file_name
|
6
|
+
names << File.basename(file_name, ".*")
|
7
|
+
end
|
8
|
+
|
9
|
+
answer = files.empty? ? false : alert("Choose Golfer:", choices: names, button_no: "New Golfer")
|
10
|
+
|
11
|
+
if answer.is_a?(String)
|
12
|
+
load_file = files[names.index(answer)]
|
13
|
+
elsif answer == false
|
14
|
+
golfer_name = alert("Enter Name of Golfer to Create a new Handicap File:",
|
15
|
+
input_text: "",
|
16
|
+
button_yes: "Add Golfer"
|
17
|
+
)
|
18
|
+
exit! unless golfer_name.is_a?(String)
|
19
|
+
exit! unless golfer_name.length > 2
|
20
|
+
load_file = golfer_name.downcase.tr("^a-z\s", '').gsub(" ", "_") + ".yaml"
|
21
|
+
else
|
22
|
+
exit!
|
23
|
+
end
|
24
|
+
|
25
|
+
VR::load_yaml(Handicap, load_file).show_glade
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
class Score
|
3
|
+
|
4
|
+
attr_accessor :date, :score, :course_name, :course_rating, :course_slope, :used, :handicap
|
5
|
+
|
6
|
+
include GladeGUI
|
7
|
+
|
8
|
+
def initialize(course, rating, slope)
|
9
|
+
@course_name = course
|
10
|
+
@course_rating = rating
|
11
|
+
@course_slope = slope
|
12
|
+
@date = DateTime.now
|
13
|
+
@score = "0"
|
14
|
+
@used = nil
|
15
|
+
@handicap = "0"
|
16
|
+
end
|
17
|
+
|
18
|
+
def buttonSave__clicked(*a)
|
19
|
+
get_glade_variables
|
20
|
+
@used = "n" # signals save occured
|
21
|
+
@builder[:window1].destroy
|
22
|
+
end
|
23
|
+
|
24
|
+
def diff()
|
25
|
+
(@score.to_f - @course_rating.to_f) * 113 / @course_slope.to_f
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_s
|
29
|
+
(@used == "y" ? "*" : " ") + diff.round(1).to_s
|
30
|
+
end
|
31
|
+
|
32
|
+
def visual_attributes
|
33
|
+
# return @used == "y" ? {background: "#ABB" , weight: 600} : {background: "white", weight: 300 }
|
34
|
+
return @used == "y" ? { weight: 1200} : {weight: 400 }
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,178 @@
|
|
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">670</property>
|
7
|
+
<property name="height_request">660</property>
|
8
|
+
<property name="can_focus">False</property>
|
9
|
+
<property name="title" translatable="yes">USGA Handicap Index Calculator</property>
|
10
|
+
<property name="modal">True</property>
|
11
|
+
<property name="type_hint">utility</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">10</property>
|
17
|
+
<property name="margin_right">10</property>
|
18
|
+
<property name="margin_top">10</property>
|
19
|
+
<property name="margin_bottom">10</property>
|
20
|
+
<property name="orientation">vertical</property>
|
21
|
+
<property name="spacing">10</property>
|
22
|
+
<child>
|
23
|
+
<object class="GtkBox" id="box2">
|
24
|
+
<property name="visible">True</property>
|
25
|
+
<property name="can_focus">False</property>
|
26
|
+
<property name="spacing">20</property>
|
27
|
+
<child>
|
28
|
+
<object class="GtkImage" id="image">
|
29
|
+
<property name="can_focus">False</property>
|
30
|
+
</object>
|
31
|
+
<packing>
|
32
|
+
<property name="expand">False</property>
|
33
|
+
<property name="fill">True</property>
|
34
|
+
<property name="position">0</property>
|
35
|
+
</packing>
|
36
|
+
</child>
|
37
|
+
<child>
|
38
|
+
<object class="GtkLabel" id="name">
|
39
|
+
<property name="visible">True</property>
|
40
|
+
<property name="can_focus">False</property>
|
41
|
+
<property name="label" translatable="yes"><big><big><big><big>Eric Cunningham</big></big></big></big></property>
|
42
|
+
<property name="use_markup">True</property>
|
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="GtkFrame" id="frame1">
|
52
|
+
<property name="visible">True</property>
|
53
|
+
<property name="can_focus">False</property>
|
54
|
+
<property name="label_xalign">0</property>
|
55
|
+
<property name="shadow_type">in</property>
|
56
|
+
<child>
|
57
|
+
<object class="GtkAlignment" id="alignment1">
|
58
|
+
<property name="visible">True</property>
|
59
|
+
<property name="can_focus">False</property>
|
60
|
+
<property name="left_padding">12</property>
|
61
|
+
<child>
|
62
|
+
<object class="GtkLabel" id="handicap">
|
63
|
+
<property name="visible">True</property>
|
64
|
+
<property name="can_focus">False</property>
|
65
|
+
<property name="label" translatable="yes"><big><big><big><big><big><big><big><big>n/a</big></big></big></big></big></big></big></big></property>
|
66
|
+
<property name="use_markup">True</property>
|
67
|
+
</object>
|
68
|
+
</child>
|
69
|
+
</object>
|
70
|
+
</child>
|
71
|
+
<child type="label">
|
72
|
+
<object class="GtkLabel" id="label2">
|
73
|
+
<property name="visible">True</property>
|
74
|
+
<property name="can_focus">False</property>
|
75
|
+
<property name="label" translatable="yes">Handicap</property>
|
76
|
+
<property name="justify">center</property>
|
77
|
+
</object>
|
78
|
+
</child>
|
79
|
+
</object>
|
80
|
+
<packing>
|
81
|
+
<property name="expand">False</property>
|
82
|
+
<property name="fill">True</property>
|
83
|
+
<property name="position">2</property>
|
84
|
+
</packing>
|
85
|
+
</child>
|
86
|
+
</object>
|
87
|
+
<packing>
|
88
|
+
<property name="expand">False</property>
|
89
|
+
<property name="fill">True</property>
|
90
|
+
<property name="position">0</property>
|
91
|
+
</packing>
|
92
|
+
</child>
|
93
|
+
<child>
|
94
|
+
<object class="GtkScrolledWindow" id="view">
|
95
|
+
<property name="visible">True</property>
|
96
|
+
<property name="can_focus">True</property>
|
97
|
+
<property name="hexpand">True</property>
|
98
|
+
<property name="vexpand">True</property>
|
99
|
+
<property name="shadow_type">in</property>
|
100
|
+
<child>
|
101
|
+
<placeholder/>
|
102
|
+
</child>
|
103
|
+
</object>
|
104
|
+
<packing>
|
105
|
+
<property name="expand">False</property>
|
106
|
+
<property name="fill">True</property>
|
107
|
+
<property name="position">1</property>
|
108
|
+
</packing>
|
109
|
+
</child>
|
110
|
+
<child>
|
111
|
+
<object class="GtkButtonBox" id="buttonbox1">
|
112
|
+
<property name="visible">True</property>
|
113
|
+
<property name="can_focus">False</property>
|
114
|
+
<property name="spacing">5</property>
|
115
|
+
<property name="layout_style">end</property>
|
116
|
+
<child>
|
117
|
+
<object class="GtkButton" id="buttonChangeGolfer">
|
118
|
+
<property name="label" translatable="yes">Change Golfer</property>
|
119
|
+
<property name="visible">True</property>
|
120
|
+
<property name="can_focus">True</property>
|
121
|
+
<property name="receives_default">True</property>
|
122
|
+
</object>
|
123
|
+
<packing>
|
124
|
+
<property name="expand">False</property>
|
125
|
+
<property name="fill">True</property>
|
126
|
+
<property name="position">0</property>
|
127
|
+
</packing>
|
128
|
+
</child>
|
129
|
+
<child>
|
130
|
+
<object class="GtkButton" id="buttonAdd">
|
131
|
+
<property name="label" translatable="yes">Add Score</property>
|
132
|
+
<property name="visible">True</property>
|
133
|
+
<property name="can_focus">True</property>
|
134
|
+
<property name="receives_default">True</property>
|
135
|
+
</object>
|
136
|
+
<packing>
|
137
|
+
<property name="expand">False</property>
|
138
|
+
<property name="fill">True</property>
|
139
|
+
<property name="position">1</property>
|
140
|
+
</packing>
|
141
|
+
</child>
|
142
|
+
<child>
|
143
|
+
<object class="GtkButton" id="buttonEditScore">
|
144
|
+
<property name="label" translatable="yes">Edit Score</property>
|
145
|
+
<property name="visible">True</property>
|
146
|
+
<property name="can_focus">True</property>
|
147
|
+
<property name="receives_default">True</property>
|
148
|
+
</object>
|
149
|
+
<packing>
|
150
|
+
<property name="expand">False</property>
|
151
|
+
<property name="fill">True</property>
|
152
|
+
<property name="position">2</property>
|
153
|
+
</packing>
|
154
|
+
</child>
|
155
|
+
<child>
|
156
|
+
<object class="GtkButton" id="buttonDelete">
|
157
|
+
<property name="label" translatable="yes">Delete Score</property>
|
158
|
+
<property name="visible">True</property>
|
159
|
+
<property name="can_focus">True</property>
|
160
|
+
<property name="receives_default">True</property>
|
161
|
+
</object>
|
162
|
+
<packing>
|
163
|
+
<property name="expand">False</property>
|
164
|
+
<property name="fill">True</property>
|
165
|
+
<property name="position">3</property>
|
166
|
+
</packing>
|
167
|
+
</child>
|
168
|
+
</object>
|
169
|
+
<packing>
|
170
|
+
<property name="expand">False</property>
|
171
|
+
<property name="fill">True</property>
|
172
|
+
<property name="position">2</property>
|
173
|
+
</packing>
|
174
|
+
</child>
|
175
|
+
</object>
|
176
|
+
</child>
|
177
|
+
</object>
|
178
|
+
</interface>
|
@@ -0,0 +1,219 @@
|
|
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="modal">True</property>
|
8
|
+
<child>
|
9
|
+
<object class="GtkBox" id="box1">
|
10
|
+
<property name="visible">True</property>
|
11
|
+
<property name="can_focus">False</property>
|
12
|
+
<property name="margin_left">10</property>
|
13
|
+
<property name="margin_right">10</property>
|
14
|
+
<property name="margin_top">10</property>
|
15
|
+
<property name="margin_bottom">10</property>
|
16
|
+
<property name="orientation">vertical</property>
|
17
|
+
<property name="spacing">10</property>
|
18
|
+
<child>
|
19
|
+
<object class="GtkLabel" id="label6">
|
20
|
+
<property name="visible">True</property>
|
21
|
+
<property name="can_focus">False</property>
|
22
|
+
<property name="label" translatable="yes"><big><big>Enter Score</big></big></property>
|
23
|
+
<property name="use_markup">True</property>
|
24
|
+
</object>
|
25
|
+
<packing>
|
26
|
+
<property name="expand">False</property>
|
27
|
+
<property name="fill">True</property>
|
28
|
+
<property name="position">0</property>
|
29
|
+
</packing>
|
30
|
+
</child>
|
31
|
+
<child>
|
32
|
+
<object class="GtkGrid" id="grid1">
|
33
|
+
<property name="visible">True</property>
|
34
|
+
<property name="can_focus">False</property>
|
35
|
+
<property name="row_spacing">2</property>
|
36
|
+
<property name="column_spacing">5</property>
|
37
|
+
<child>
|
38
|
+
<object class="GtkLabel" id="label4">
|
39
|
+
<property name="visible">True</property>
|
40
|
+
<property name="can_focus">False</property>
|
41
|
+
<property name="xalign">1</property>
|
42
|
+
<property name="label" translatable="yes">Score:</property>
|
43
|
+
</object>
|
44
|
+
<packing>
|
45
|
+
<property name="left_attach">0</property>
|
46
|
+
<property name="top_attach">4</property>
|
47
|
+
<property name="width">1</property>
|
48
|
+
<property name="height">1</property>
|
49
|
+
</packing>
|
50
|
+
</child>
|
51
|
+
<child>
|
52
|
+
<object class="GtkLabel" id="label3">
|
53
|
+
<property name="visible">True</property>
|
54
|
+
<property name="can_focus">False</property>
|
55
|
+
<property name="xalign">1</property>
|
56
|
+
<property name="label" translatable="yes">Course Slope:</property>
|
57
|
+
</object>
|
58
|
+
<packing>
|
59
|
+
<property name="left_attach">0</property>
|
60
|
+
<property name="top_attach">3</property>
|
61
|
+
<property name="width">1</property>
|
62
|
+
<property name="height">1</property>
|
63
|
+
</packing>
|
64
|
+
</child>
|
65
|
+
<child>
|
66
|
+
<object class="GtkLabel" id="label2">
|
67
|
+
<property name="visible">True</property>
|
68
|
+
<property name="can_focus">False</property>
|
69
|
+
<property name="xalign">1</property>
|
70
|
+
<property name="label" translatable="yes">Course Rating:</property>
|
71
|
+
</object>
|
72
|
+
<packing>
|
73
|
+
<property name="left_attach">0</property>
|
74
|
+
<property name="top_attach">2</property>
|
75
|
+
<property name="width">1</property>
|
76
|
+
<property name="height">1</property>
|
77
|
+
</packing>
|
78
|
+
</child>
|
79
|
+
<child>
|
80
|
+
<object class="GtkLabel" id="label1">
|
81
|
+
<property name="visible">True</property>
|
82
|
+
<property name="can_focus">False</property>
|
83
|
+
<property name="xalign">1</property>
|
84
|
+
<property name="label" translatable="yes">Course Name:</property>
|
85
|
+
</object>
|
86
|
+
<packing>
|
87
|
+
<property name="left_attach">0</property>
|
88
|
+
<property name="top_attach">1</property>
|
89
|
+
<property name="width">1</property>
|
90
|
+
<property name="height">1</property>
|
91
|
+
</packing>
|
92
|
+
</child>
|
93
|
+
<child>
|
94
|
+
<object class="GtkLabel" id="label5">
|
95
|
+
<property name="visible">True</property>
|
96
|
+
<property name="can_focus">False</property>
|
97
|
+
<property name="xalign">1</property>
|
98
|
+
<property name="label" translatable="yes">Date:</property>
|
99
|
+
</object>
|
100
|
+
<packing>
|
101
|
+
<property name="left_attach">0</property>
|
102
|
+
<property name="top_attach">0</property>
|
103
|
+
<property name="width">1</property>
|
104
|
+
<property name="height">1</property>
|
105
|
+
</packing>
|
106
|
+
</child>
|
107
|
+
<child>
|
108
|
+
<object class="GtkEntry" id="course_rating">
|
109
|
+
<property name="visible">True</property>
|
110
|
+
<property name="can_focus">True</property>
|
111
|
+
</object>
|
112
|
+
<packing>
|
113
|
+
<property name="left_attach">1</property>
|
114
|
+
<property name="top_attach">2</property>
|
115
|
+
<property name="width">1</property>
|
116
|
+
<property name="height">1</property>
|
117
|
+
</packing>
|
118
|
+
</child>
|
119
|
+
<child>
|
120
|
+
<object class="GtkEntry" id="course_slope">
|
121
|
+
<property name="visible">True</property>
|
122
|
+
<property name="can_focus">True</property>
|
123
|
+
</object>
|
124
|
+
<packing>
|
125
|
+
<property name="left_attach">1</property>
|
126
|
+
<property name="top_attach">3</property>
|
127
|
+
<property name="width">1</property>
|
128
|
+
<property name="height">1</property>
|
129
|
+
</packing>
|
130
|
+
</child>
|
131
|
+
<child>
|
132
|
+
<object class="GtkEntry" id="score">
|
133
|
+
<property name="visible">True</property>
|
134
|
+
<property name="can_focus">True</property>
|
135
|
+
</object>
|
136
|
+
<packing>
|
137
|
+
<property name="left_attach">1</property>
|
138
|
+
<property name="top_attach">4</property>
|
139
|
+
<property name="width">1</property>
|
140
|
+
<property name="height">1</property>
|
141
|
+
</packing>
|
142
|
+
</child>
|
143
|
+
<child>
|
144
|
+
<object class="GtkCalendar" id="date">
|
145
|
+
<property name="visible">True</property>
|
146
|
+
<property name="can_focus">True</property>
|
147
|
+
<property name="year">2017</property>
|
148
|
+
<property name="month">8</property>
|
149
|
+
<property name="day">4</property>
|
150
|
+
</object>
|
151
|
+
<packing>
|
152
|
+
<property name="left_attach">1</property>
|
153
|
+
<property name="top_attach">0</property>
|
154
|
+
<property name="width">1</property>
|
155
|
+
<property name="height">1</property>
|
156
|
+
</packing>
|
157
|
+
</child>
|
158
|
+
<child>
|
159
|
+
<object class="GtkEntry" id="course_name">
|
160
|
+
<property name="visible">True</property>
|
161
|
+
<property name="can_focus">True</property>
|
162
|
+
</object>
|
163
|
+
<packing>
|
164
|
+
<property name="left_attach">1</property>
|
165
|
+
<property name="top_attach">1</property>
|
166
|
+
<property name="width">1</property>
|
167
|
+
<property name="height">1</property>
|
168
|
+
</packing>
|
169
|
+
</child>
|
170
|
+
</object>
|
171
|
+
<packing>
|
172
|
+
<property name="expand">False</property>
|
173
|
+
<property name="fill">True</property>
|
174
|
+
<property name="position">1</property>
|
175
|
+
</packing>
|
176
|
+
</child>
|
177
|
+
<child>
|
178
|
+
<object class="GtkButtonBox" id="buttonbox1">
|
179
|
+
<property name="visible">True</property>
|
180
|
+
<property name="can_focus">False</property>
|
181
|
+
<property name="spacing">5</property>
|
182
|
+
<property name="layout_style">end</property>
|
183
|
+
<child>
|
184
|
+
<object class="GtkButton" id="buttonSave">
|
185
|
+
<property name="label" translatable="yes">Save</property>
|
186
|
+
<property name="visible">True</property>
|
187
|
+
<property name="can_focus">True</property>
|
188
|
+
<property name="receives_default">True</property>
|
189
|
+
</object>
|
190
|
+
<packing>
|
191
|
+
<property name="expand">False</property>
|
192
|
+
<property name="fill">True</property>
|
193
|
+
<property name="position">0</property>
|
194
|
+
</packing>
|
195
|
+
</child>
|
196
|
+
<child>
|
197
|
+
<object class="GtkButton" id="buttonCancel">
|
198
|
+
<property name="label" translatable="yes">Cancel</property>
|
199
|
+
<property name="visible">True</property>
|
200
|
+
<property name="can_focus">True</property>
|
201
|
+
<property name="receives_default">True</property>
|
202
|
+
</object>
|
203
|
+
<packing>
|
204
|
+
<property name="expand">False</property>
|
205
|
+
<property name="fill">True</property>
|
206
|
+
<property name="position">1</property>
|
207
|
+
</packing>
|
208
|
+
</child>
|
209
|
+
</object>
|
210
|
+
<packing>
|
211
|
+
<property name="expand">False</property>
|
212
|
+
<property name="fill">True</property>
|
213
|
+
<property name="position">2</property>
|
214
|
+
</packing>
|
215
|
+
</child>
|
216
|
+
</object>
|
217
|
+
</child>
|
218
|
+
</object>
|
219
|
+
</interface>
|
@@ -1,7 +1,9 @@
|
|
1
1
|
--- !ruby/object:VR_ENV
|
2
|
-
|
2
|
+
vr_yaml_file: "/home/eric/vrp/vr3/examples/simple_ruby_gui/.vr_settings.yaml"
|
3
|
+
width: 1301
|
3
4
|
height: 692
|
4
5
|
panel_pos: 490
|
6
|
+
notebook_panel_position: 400
|
5
7
|
run_command_line: ruby main.rb
|
6
8
|
open_files:
|
7
9
|
- "/home/eric/vrp/vr3/examples/simple_ruby_gui/bin/DataObjectGUI.rb"
|
@@ -9,12 +11,9 @@ open_files:
|
|
9
11
|
open_folders:
|
10
12
|
- "/home/eric/vrp/vr3/examples/simple_ruby_gui"
|
11
13
|
- "/home/eric/vrp/vr3/examples/simple_ruby_gui/bin"
|
12
|
-
- "/home/eric/vrp/vr3/examples/simple_ruby_gui/bin/glade"
|
13
14
|
current_file: "/home/eric/vrp/vr3/examples/simple_ruby_gui/main.rb"
|
15
|
+
current_line: 4
|
14
16
|
rdoc_command_line: rdoc -x README
|
15
|
-
vr_yaml_file: ".vr_settings.yaml"
|
16
|
-
notebook_panel_position: 400
|
17
|
-
current_line: 13
|
18
|
-
settings_file_version: 1
|
19
17
|
builder: !ruby/object:Gtk::Builder {}
|
18
|
+
settings_file_version: 1
|
20
19
|
filename: ".vr_settings.yaml"
|
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
#Updated for Gtk3!
|
4
4
|
|
5
|
-
|
6
|
-
require File.exists?("./../../lib/vrlib.rb") ? "./../../lib/vrlib.rb" : "vrlib"
|
5
|
+
require "vrlib"
|
7
6
|
|
8
7
|
# from require_all gem:
|
9
|
-
require_rel 'bin
|
8
|
+
require_rel 'bin'
|
10
9
|
|
11
10
|
|
12
11
|
x = DataObjectGUI.new("Harvey Milktoast", "123 Main, Hemet, CA 90090",
|
data/lib/ActLikeAHash.rb
CHANGED
data/lib/Alert.rb
CHANGED
data/lib/vrlib.rb
CHANGED
data/src/editor/VR_Document.rb
CHANGED
@@ -92,28 +92,28 @@ class VR_Document < GtkSource::View
|
|
92
92
|
apply_tag_to_line(line-1, @hilight, nil)
|
93
93
|
end
|
94
94
|
|
95
|
-
|
95
|
+
|
96
|
+
def insert_before_selected(text)
|
96
97
|
return unless buffer.has_selection?
|
97
98
|
s,e = get_selected_lines()
|
98
99
|
(s..e).each do |i|
|
99
100
|
iter, iter_end = get_line_iters(i)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
def un_comment()
|
101
|
+
buffer.insert(iter, text)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def delete_before_selected(text)
|
107
106
|
return unless buffer.has_selection?
|
108
107
|
s,e = get_selected_lines()
|
109
108
|
(s..e).each do |i|
|
110
109
|
iter, iter_end = get_line_iters(i)
|
111
110
|
next if iter_end.offset <= iter.offset + 1
|
112
|
-
iter_end.offset = iter.offset+
|
111
|
+
iter_end.offset = iter.offset + text.size
|
113
112
|
chr = buffer.get_text(iter, iter_end, false)
|
114
|
-
buffer.delete(iter, iter_end) if chr ==
|
113
|
+
buffer.delete(iter, iter_end) if chr == text
|
115
114
|
end
|
116
|
-
end
|
115
|
+
end
|
116
|
+
|
117
117
|
|
118
118
|
def get_selected_lines()
|
119
119
|
return unless buffer.has_selection?
|
data/src/main/VR_File_Tree.rb
CHANGED
@@ -35,14 +35,15 @@ class VR_File_Tree < VR::FileTreeView
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def popInstallGem_clicked()
|
38
|
-
file_name = get_selected_path()
|
39
|
-
begin
|
40
|
-
inst = Gem::Installer.new(file_name, :wrappers => true, :ignore_dependencies => true)
|
41
|
-
inst.install().to_s
|
38
|
+
file_name = get_selected_path().to_s
|
39
|
+
begin
|
42
40
|
txt = "\nInstalled Gem: " + file_name
|
41
|
+
package = Gem::Package.new(file_name)
|
42
|
+
inst = Gem::Installer.new(package, wrappers: true, ignore_dependencies: true)
|
43
|
+
inst.install
|
43
44
|
txt += "\nNo check was made for dependencies"
|
44
45
|
rescue Exception => e
|
45
|
-
txt += "\n" + e.message
|
46
|
+
txt += "\n" + e.message.to_s
|
46
47
|
end
|
47
48
|
@main.shell.buffer.text = txt
|
48
49
|
end
|
data/src/main/VR_Main.rb
CHANGED
@@ -209,28 +209,20 @@ class VR_Main
|
|
209
209
|
VR_Tools.back_up()
|
210
210
|
end
|
211
211
|
|
212
|
-
def toolIndent__clicked(*a)
|
213
|
-
|
212
|
+
def toolIndent__clicked(*a)
|
213
|
+
@tabs.docs[@tabs.page].insert_before_selected(" " * $VR_ENV_GLOBAL.tab_spaces.to_i )
|
214
214
|
end
|
215
215
|
|
216
|
-
def toolUnIndent__clicked(*a)
|
217
|
-
|
216
|
+
def toolUnIndent__clicked(*a)
|
217
|
+
@tabs.docs[@tabs.page].delete_before_selected(" " * $VR_ENV_GLOBAL.tab_spaces.to_i)
|
218
218
|
end
|
219
219
|
|
220
|
-
def
|
221
|
-
|
222
|
-
evt.state = mask if mask
|
223
|
-
evt.keyval = keyval
|
224
|
-
@tabs.docs[@tabs.page].signal_emit(:key_press_event, evt)
|
220
|
+
def toolComment__clicked(*a)
|
221
|
+
@tabs.docs[@tabs.page].insert_before_selected("# ")
|
225
222
|
end
|
226
223
|
|
227
|
-
|
228
|
-
|
229
|
-
@tabs.docs[@tabs.page].comment()
|
230
|
-
end
|
231
|
-
|
232
|
-
def toolUnComment__clicked(*a)
|
233
|
-
@tabs.docs[@tabs.page].un_comment()
|
224
|
+
def toolUnComment__clicked(*a)
|
225
|
+
@tabs.docs[@tabs.page].delete_before_selected("# ")
|
234
226
|
end
|
235
227
|
|
236
228
|
def toolRun__clicked(*a)
|
data/src/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = "3.
|
1
|
+
VERSION = "3.4.5"
|
data/vr
CHANGED
@@ -13,9 +13,16 @@ def load_everything
|
|
13
13
|
require "rubygems/specification"
|
14
14
|
|
15
15
|
require 'require_all'
|
16
|
-
|
16
|
+
|
17
17
|
require_rel 'lib/'
|
18
|
-
require_rel 'src/'
|
18
|
+
require_rel 'src/'
|
19
|
+
# require File.exists?("./../../lib/vrlib.rb") ? "./../../lib/vrlib.rb" : "vrlib"
|
20
|
+
|
21
|
+
# require_rel 'lib/GladeGUI.rb'
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
19
26
|
|
20
27
|
VR_Main.new(ARGV, @splash).show_glade()
|
21
28
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: visualruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Cunningham
|
@@ -9,64 +9,50 @@ autorequire:
|
|
9
9
|
bindir:
|
10
10
|
- "."
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-05-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: gtk3
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 3.
|
20
|
+
version: '3.0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 3.
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: cairo
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - '='
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 1.15.12
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - '='
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: 1.15.12
|
27
|
+
version: '3.0'
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
29
|
name: gtksourceview3
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
45
31
|
requirements:
|
46
|
-
- -
|
32
|
+
- - "~>"
|
47
33
|
- !ruby/object:Gem::Version
|
48
|
-
version: 3.
|
34
|
+
version: '3.0'
|
49
35
|
type: :runtime
|
50
36
|
prerelease: false
|
51
37
|
version_requirements: !ruby/object:Gem::Requirement
|
52
38
|
requirements:
|
53
|
-
- -
|
39
|
+
- - "~>"
|
54
40
|
- !ruby/object:Gem::Version
|
55
|
-
version: 3.
|
41
|
+
version: '3.0'
|
56
42
|
- !ruby/object:Gem::Dependency
|
57
43
|
name: require_all
|
58
44
|
requirement: !ruby/object:Gem::Requirement
|
59
45
|
requirements:
|
60
|
-
- -
|
46
|
+
- - '='
|
61
47
|
- !ruby/object:Gem::Version
|
62
|
-
version: '1.
|
48
|
+
version: '1.4'
|
63
49
|
type: :runtime
|
64
50
|
prerelease: false
|
65
51
|
version_requirements: !ruby/object:Gem::Requirement
|
66
52
|
requirements:
|
67
|
-
- -
|
53
|
+
- - '='
|
68
54
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
55
|
+
version: '1.4'
|
70
56
|
description: |-
|
71
57
|
Visualruby is a complete IDE for making graphical user interfaces with ruby. It utilizes glade interface designer to create windows, and uses a library of GUI helpers to make coding GTK+ programs easy. The IDE really helps you organize your files and your thoughts because it names your ruby files and glade files by a naming convention. You files take on the names MyClass.rb, and MyClass.glade. Then you can easily edit the GUI (glade file) by right clicking on your class's file.
|
72
58
|
It also creates .gemspec files for you, then you can right-click on the .gemspec file to install it, or upload it to rubygems.org. You can also yank your gems with one click.
|
@@ -145,6 +131,12 @@ files:
|
|
145
131
|
- "./examples/filetreeview/img/rb.png"
|
146
132
|
- "./examples/filetreeview/img/unknown.png"
|
147
133
|
- "./examples/filetreeview/main.rb"
|
134
|
+
- "./examples/golf_handicap/.vr_settings.yaml"
|
135
|
+
- "./examples/golf_handicap/src/Handicap.rb"
|
136
|
+
- "./examples/golf_handicap/src/LoadGolfer.rb"
|
137
|
+
- "./examples/golf_handicap/src/Score.rb"
|
138
|
+
- "./examples/golf_handicap/src/glade/Handicap.glade"
|
139
|
+
- "./examples/golf_handicap/src/glade/Score.glade"
|
148
140
|
- "./examples/listview/.vr_settings.yaml"
|
149
141
|
- "./examples/listview/bin/SongListView.rb"
|
150
142
|
- "./examples/listview/bin/SongListViewGUI.rb"
|
@@ -257,7 +249,7 @@ files:
|
|
257
249
|
- "./src/main/glade/VR_Remote_Gem_Tree.glade"
|
258
250
|
- "./src/version.rb"
|
259
251
|
- "./vr"
|
260
|
-
homepage:
|
252
|
+
homepage: ''
|
261
253
|
licenses:
|
262
254
|
- MIT
|
263
255
|
metadata: {}
|
@@ -276,8 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
276
268
|
- !ruby/object:Gem::Version
|
277
269
|
version: '0'
|
278
270
|
requirements: []
|
279
|
-
|
280
|
-
rubygems_version: 2.5.1
|
271
|
+
rubygems_version: 3.2.15
|
281
272
|
signing_key:
|
282
273
|
specification_version: 4
|
283
274
|
summary: Create IDE designed to make great GUIs with Ruby
|