visualruby 3.6.3 → 3.6.4
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.
- checksums.yaml +4 -4
- data/.vr_settings.yaml +22 -10
- data/all_requires.rb +35 -0
- data/examples/01_phantom/main.rb +6 -0
- data/examples/02_hello/.vr_settings.yaml +21 -0
- data/examples/{phantom → 02_hello}/main.rb +2 -3
- data/examples/02_hello/src/MyClass.rb +11 -0
- data/examples/02_hello/src/glade/MyClass.glade +36 -0
- data/examples/03_simple_ruby_gui/main.rb +11 -0
- data/examples/04_calculator/.vr_settings.yaml +21 -0
- data/examples/04_calculator/calculator.rb +7 -0
- data/examples/{calculator/bin/Calculator.rb → 04_calculator/src/CalculatorGUI.rb} +3 -3
- data/examples/07_event_handlers/.vr_settings.yaml +23 -0
- data/examples/07_event_handlers/main.rb +9 -0
- data/examples/07_event_handlers/src/MyClass.rb +26 -0
- data/examples/07_event_handlers/src/MyTextView.rb +13 -0
- data/examples/07_event_handlers/src/glade/MyClass.glade +90 -0
- data/examples/active_record/.vr_settings.yaml +2 -3
- data/examples/active_record/active_record.rb +1 -1
- data/examples/alert_box/.vr_settings.yaml +11 -8
- data/examples/alert_box/alertdemo.rb +11 -0
- data/examples/alert_box/{bin → src}/AlertBoxDemo.rb +19 -6
- data/examples/alert_box/{bin → src}/glade/AlertBoxDemo.glade +37 -4
- data/examples/all_widgets/.vr_settings.yaml +8 -7
- data/examples/all_widgets/{main.rb → all_widgets.rb} +1 -4
- data/examples/all_widgets/{bin → src}/AllWidgets.rb +1 -1
- data/examples/child_window/.vr_settings.yaml +10 -9
- data/examples/child_window/child_window.rb +11 -0
- data/examples/drag_drop/.vr_settings.yaml +6 -5
- data/examples/drag_drop/{main.rb → drag_drop.rb} +1 -3
- data/examples/filetreeview/.vr_settings.yaml +10 -8
- data/examples/filetreeview/filetreeview.rb +10 -0
- data/examples/filetreeview/{bin → src}/ProjectTree.rb +1 -12
- data/examples/filetreeview/{bin → src}/ProjectTreeGUI.rb +9 -0
- data/examples/filetreeview/{bin → src}/glade/ProjectTreeGUI.glade +37 -37
- data/examples/golf_handicap/.vr_settings.yaml +5 -6
- data/examples/golf_handicap/eric_cunningham.yaml +106 -0
- data/examples/golf_handicap/golf_handicap.rb +18 -0
- data/examples/golf_handicap/src/Handicap.rb +31 -29
- data/examples/golf_handicap/src/LoadGolfer.rb +27 -27
- data/examples/golf_handicap/src/Score.rb +10 -9
- data/examples/golf_handicap/src/glade/Handicap.glade +46 -42
- data/examples/golf_handicap/src/glade/Score.glade +58 -80
- data/examples/listview/.vr_settings.yaml +10 -8
- data/examples/listview/listview.rb +7 -0
- data/examples/listview/{bin → src}/SongListView.rb +2 -1
- data/examples/listview/{bin → src}/SongListViewGUI.rb +1 -0
- data/lib/Alert.rb +2 -2
- data/lib/GladeGUI.rb +10 -11
- data/lib/TestWindow.rb +33 -0
- data/lib/VR_GtkWindow.rb +7 -0
- data/lib/glade/TestWindow.glade +73 -0
- data/lib/treeview/TreeView.rb +0 -2
- data/lib/vrlib.rb +1 -0
- data/skeleton/project/main.rb +1 -4
- data/src/editor/VR_Document.rb +1 -4
- data/src/editor/VR_TabSearch.rb +1 -1
- data/src/main/RubygemsAPI.rb +3 -8
- data/src/main/SplashWindow.rb +18 -0
- data/src/main/VR_Main.rb +19 -26
- data/src/main/VR_Tools.rb +10 -8
- data/src/main/glade/VR_Main.glade +173 -178
- data/src/version.rb +1 -1
- data/test.rb +7 -0
- data/vr +40 -70
- metadata +59 -41
- data/examples/alert_box/main.rb +0 -9
- data/examples/calculator/.vr_settings.yaml +0 -19
- data/examples/calculator/main.rb +0 -9
- data/examples/filetreeview/main.rb +0 -11
- data/examples/listview/main.rb +0 -8
- data/examples/simple_ruby_gui/main.rb +0 -14
- /data/examples/{phantom → 01_phantom}/.vr_settings.yaml +0 -0
- /data/examples/{phantom → 01_phantom}/src/MyClass.rb +0 -0
- /data/examples/{phantom → 01_phantom}/src/glade/MyClass.glade +0 -0
- /data/examples/{simple_ruby_gui → 03_simple_ruby_gui}/.vr_settings.yaml +0 -0
- /data/examples/{simple_ruby_gui → 03_simple_ruby_gui}/bin/DataObjectGUI.rb +0 -0
- /data/examples/{simple_ruby_gui → 03_simple_ruby_gui}/bin/glade/DataObjectGUI.glade +0 -0
- /data/examples/{calculator/bin/glade/Calculator.glade → 04_calculator/src/glade/CalculatorGUI.glade} +0 -0
- /data/examples/all_widgets/{bin → src}/glade/AllWidgets.glade +0 -0
- /data/examples/all_widgets/{bin → src}/splash.png +0 -0
- /data/examples/child_window/{bin → src}/ChildWindowDemo.rb +0 -0
- /data/examples/child_window/{bin → src}/ModalWindow.rb +0 -0
- /data/examples/child_window/{bin → src}/ModelessWindow.rb +0 -0
- /data/examples/child_window/{bin → src}/MyChildClass.rb +0 -0
- /data/examples/child_window/{bin → src}/glade/ChildWindowDemo.glade +0 -0
- /data/examples/child_window/{bin → src}/glade/ModalWindow.glade +0 -0
- /data/examples/child_window/{bin → src}/glade/ModelessWindow.glade +0 -0
- /data/examples/child_window/{bin → src}/glade/MyChildClass.glade +0 -0
- /data/examples/drag_drop/{bin → src}/DragDropDemo.rb +0 -0
- /data/examples/drag_drop/{bin → src}/glade/DragDropDemo.glade +0 -0
- /data/examples/listview/{bin → src}/audio-x-generic.png +0 -0
- /data/examples/listview/{bin → src}/glade/SongListViewGUI.glade +0 -0
@@ -39,7 +39,7 @@ class AllWidgets
|
|
39
39
|
@window1 = "Showing All Widgets"
|
40
40
|
@label1 = "I'm a Label"
|
41
41
|
@checkbutton1 = true
|
42
|
-
@image1 = "
|
42
|
+
@image1 = "src/splash.png"
|
43
43
|
@linkbutton1 = "http://www.visualruby.net"
|
44
44
|
@entry1 = "I'm an Entry Box"
|
45
45
|
@progressbar1 = 0.85 # text property set in glade
|
@@ -4,18 +4,19 @@ width: 1097
|
|
4
4
|
height: 691
|
5
5
|
panel_pos: 437
|
6
6
|
notebook_panel_position: 400
|
7
|
-
run_command_line: ruby
|
7
|
+
run_command_line: ruby child_window.rb
|
8
8
|
open_files:
|
9
|
+
- "/home/eric/vrp/vr3/examples/child_window/src/ChildWindowDemo.rb"
|
9
10
|
- "/home/eric/vrp/vr3/examples/child_window/main.rb"
|
10
|
-
- "/home/eric/vrp/vr3/examples/child_window/
|
11
|
-
- "/home/eric/vrp/vr3/examples/child_window/
|
12
|
-
- "/home/eric/vrp/vr3/examples/child_window/
|
13
|
-
- "/home/eric/vrp/vr3/examples/child_window/bin/ModelessWindow.rb"
|
11
|
+
- "/home/eric/vrp/vr3/examples/child_window/child_window.rb"
|
12
|
+
- "/home/eric/vrp/vr3/examples/child_window/src/ModalWindow.rb"
|
13
|
+
- "/home/eric/vrp/vr3/examples/child_window/src/MyChildClass.rb"
|
14
14
|
open_folders:
|
15
15
|
- "/home/eric/vrp/vr3/examples/child_window"
|
16
|
-
- "/home/eric/vrp/vr3/examples/child_window/
|
17
|
-
|
18
|
-
|
19
|
-
current_line: 2
|
16
|
+
- "/home/eric/vrp/vr3/examples/child_window/src"
|
17
|
+
current_file: "/home/eric/vrp/vr3/examples/child_window/src/ChildWindowDemo.rb"
|
18
|
+
current_line: 30
|
20
19
|
rdoc_command_line: rdoc -x README
|
20
|
+
builder: !ruby/object:Gtk::Builder {}
|
21
|
+
top_level_window: false
|
21
22
|
settings_file_version: 1
|
@@ -4,15 +4,16 @@ width: 1307
|
|
4
4
|
height: 698
|
5
5
|
panel_pos: 423
|
6
6
|
notebook_panel_position: 400
|
7
|
-
run_command_line: ruby
|
7
|
+
run_command_line: ruby drag_drop.rb
|
8
8
|
open_files:
|
9
|
-
- "/home/eric/vrp/vr3/examples/drag_drop/
|
10
|
-
- "/home/eric/vrp/vr3/examples/drag_drop/main.rb"
|
9
|
+
- "/home/eric/vrp/vr3/examples/drag_drop/src/DragDropDemo.rb"
|
11
10
|
open_folders:
|
12
11
|
- "/home/eric/vrp/vr3/examples/drag_drop"
|
13
12
|
- "/home/eric/vrp/vr3/examples/drag_drop/bin"
|
14
13
|
- "/home/eric/vrp/vr3/examples/drag_drop/bin/glade"
|
15
|
-
current_file: "/home/eric/vrp/vr3/examples/drag_drop/
|
16
|
-
current_line:
|
14
|
+
current_file: "/home/eric/vrp/vr3/examples/drag_drop/src/DragDropDemo.rb"
|
15
|
+
current_line: 4
|
17
16
|
rdoc_command_line: rdoc -x README
|
17
|
+
builder: !ruby/object:Gtk::Builder {}
|
18
18
|
settings_file_version: 1
|
19
|
+
top_level_window: false
|
@@ -4,18 +4,20 @@ width: 1301
|
|
4
4
|
height: 744
|
5
5
|
panel_pos: 490
|
6
6
|
notebook_panel_position: 400
|
7
|
-
run_command_line: ruby
|
7
|
+
run_command_line: ruby filetreeview.rb
|
8
8
|
open_files:
|
9
|
-
- "/home/eric/vrp/vr3/examples/filetreeview/
|
10
|
-
- "/home/eric/vrp/vr3/examples/filetreeview/
|
11
|
-
- "/home/eric/vrp/vr3/examples/filetreeview/
|
9
|
+
- "/home/eric/vrp/vr3/examples/filetreeview/src/ProjectTreeGUI.rb"
|
10
|
+
- "/home/eric/vrp/vr3/examples/filetreeview/filetreeview.rb"
|
11
|
+
- "/home/eric/vrp/vr3/examples/filetreeview/src/ProjectTree.rb"
|
12
12
|
open_folders:
|
13
13
|
- "/home/eric/vrp/vr3/examples/filetreeview"
|
14
|
-
- "/home/eric/vrp/vr3/examples/filetreeview/bin"
|
15
|
-
- "/home/eric/vrp/vr3/examples/filetreeview/bin/glade"
|
16
14
|
- "/home/eric/vrp/vr3/examples/filetreeview/img"
|
17
|
-
|
18
|
-
|
15
|
+
- "/home/eric/vrp/vr3/examples/filetreeview/src"
|
16
|
+
- "/home/eric/vrp/vr3/examples/filetreeview/src/glade"
|
17
|
+
current_file: "/home/eric/vrp/vr3/examples/filetreeview/src/ProjectTree.rb"
|
18
|
+
current_line: 39
|
19
19
|
rdoc_command_line: rdoc -x README
|
20
|
+
builder: !ruby/object:Gtk::Builder {}
|
21
|
+
top_level_window: false
|
20
22
|
settings_file_version: 1
|
21
23
|
filename: ".vr_settings.yaml"
|
@@ -21,18 +21,7 @@ class ProjectTree < VR::FileTreeView
|
|
21
21
|
def initialize()
|
22
22
|
root_path = File.join(ENV["HOME"], "visualruby")
|
23
23
|
icon_path = File.join(File.dirname(__FILE__), "/../img")
|
24
|
-
|
25
|
-
super(root_path, icon_path, glob)
|
26
|
-
@validate_block = proc { |folder| has_settings_file?(folder) }
|
27
|
-
end
|
28
|
-
|
29
|
-
def self__row_activated(_self, path, col)
|
30
|
-
row = vr_row(get_iter(path))
|
31
|
-
if File.exists?(File.join(row[:path], ".vr_settings.yaml")) #test if its a vr project.
|
32
|
-
alert "You selected: \n\n" + row[:file_name]
|
33
|
-
else
|
34
|
-
expand_or_collapse_folder()
|
35
|
-
end
|
24
|
+
super(root_path, icon_path, "*" , proc { |folder| has_settings_file?(folder) })
|
36
25
|
end
|
37
26
|
|
38
27
|
|
@@ -12,6 +12,15 @@ class ProjectTreeGUI #(change name)
|
|
12
12
|
@open_folders = []
|
13
13
|
end
|
14
14
|
|
15
|
+
def ftv__row_activated(_self, path, col)
|
16
|
+
return unless row = @ftv.selected_rows.first
|
17
|
+
if File.exists?(File.join(row[:path], ".vr_settings.yaml")) #test if its a vr project.
|
18
|
+
alert "You selected: \n\n" + row[:file_name]
|
19
|
+
else
|
20
|
+
@ftv.expand_or_collapse_folder()
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
15
24
|
def show_expanders__toggled(*a)
|
16
25
|
@ftv.set_show_expanders(@builder[:show_expanders].active?)
|
17
26
|
end
|
@@ -1,31 +1,31 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!-- Generated with glade 3.
|
2
|
+
<!-- Generated with glade 3.40.0 -->
|
3
3
|
<interface>
|
4
4
|
<requires lib="gtk+" version="3.0"/>
|
5
5
|
<object class="GtkWindow" id="window1">
|
6
6
|
<property name="visible">True</property>
|
7
|
-
<property name="
|
7
|
+
<property name="can-focus">False</property>
|
8
8
|
<property name="title" translatable="yes">FileTreeView Demo</property>
|
9
9
|
<property name="modal">True</property>
|
10
|
-
<property name="
|
11
|
-
<property name="
|
12
|
-
<property name="
|
10
|
+
<property name="window-position">center</property>
|
11
|
+
<property name="default-width">460</property>
|
12
|
+
<property name="default-height">700</property>
|
13
13
|
<child>
|
14
14
|
<object class="GtkBox" id="box1">
|
15
15
|
<property name="visible">True</property>
|
16
|
-
<property name="
|
17
|
-
<property name="
|
18
|
-
<property name="
|
19
|
-
<property name="
|
20
|
-
<property name="
|
16
|
+
<property name="can-focus">False</property>
|
17
|
+
<property name="margin-left">20</property>
|
18
|
+
<property name="margin-right">20</property>
|
19
|
+
<property name="margin-top">20</property>
|
20
|
+
<property name="margin-bottom">20</property>
|
21
21
|
<property name="orientation">vertical</property>
|
22
22
|
<property name="spacing">10</property>
|
23
23
|
<child>
|
24
24
|
<object class="GtkLabel" id="label1">
|
25
25
|
<property name="visible">True</property>
|
26
|
-
<property name="
|
26
|
+
<property name="can-focus">False</property>
|
27
27
|
<property name="label" translatable="yes"><big>FileTreeView Demo</big></property>
|
28
|
-
<property name="
|
28
|
+
<property name="use-markup">True</property>
|
29
29
|
</object>
|
30
30
|
<packing>
|
31
31
|
<property name="expand">False</property>
|
@@ -36,22 +36,22 @@
|
|
36
36
|
<child>
|
37
37
|
<object class="GtkFrame" id="frame1">
|
38
38
|
<property name="visible">True</property>
|
39
|
-
<property name="
|
40
|
-
<property name="
|
41
|
-
<property name="
|
39
|
+
<property name="can-focus">False</property>
|
40
|
+
<property name="label-xalign">0</property>
|
41
|
+
<property name="shadow-type">in</property>
|
42
42
|
<child>
|
43
43
|
<object class="GtkAlignment" id="alignment1">
|
44
44
|
<property name="visible">True</property>
|
45
|
-
<property name="
|
46
|
-
<property name="
|
45
|
+
<property name="can-focus">False</property>
|
46
|
+
<property name="left-padding">12</property>
|
47
47
|
<child>
|
48
48
|
<object class="GtkLabel" id="label3">
|
49
49
|
<property name="visible">True</property>
|
50
|
-
<property name="
|
51
|
-
<property name="
|
52
|
-
<property name="
|
53
|
-
<property name="
|
54
|
-
<property name="
|
50
|
+
<property name="can-focus">False</property>
|
51
|
+
<property name="margin-left">10</property>
|
52
|
+
<property name="margin-right">10</property>
|
53
|
+
<property name="margin-top">10</property>
|
54
|
+
<property name="margin-bottom">10</property>
|
55
55
|
<property name="label" translatable="yes">This filetreeview shows only the folders that contain the hidden file, .vr_settings. This is how a visualruby project is identified. You will only be able to select valid visualruby project folders. </property>
|
56
56
|
<property name="wrap">True</property>
|
57
57
|
</object>
|
@@ -61,7 +61,7 @@
|
|
61
61
|
<child type="label">
|
62
62
|
<object class="GtkLabel" id="label2">
|
63
63
|
<property name="visible">True</property>
|
64
|
-
<property name="
|
64
|
+
<property name="can-focus">False</property>
|
65
65
|
<property name="label" translatable="yes">Instructions</property>
|
66
66
|
</object>
|
67
67
|
</child>
|
@@ -75,11 +75,11 @@
|
|
75
75
|
<child>
|
76
76
|
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
77
77
|
<property name="visible">True</property>
|
78
|
-
<property name="
|
79
|
-
<property name="
|
80
|
-
<property name="
|
78
|
+
<property name="can-focus">True</property>
|
79
|
+
<property name="margin-top">8</property>
|
80
|
+
<property name="margin-bottom">8</property>
|
81
81
|
<property name="vexpand">True</property>
|
82
|
-
<property name="
|
82
|
+
<property name="shadow-type">in</property>
|
83
83
|
<child>
|
84
84
|
<placeholder/>
|
85
85
|
</child>
|
@@ -93,15 +93,15 @@
|
|
93
93
|
<child>
|
94
94
|
<object class="GtkBox" id="box2">
|
95
95
|
<property name="visible">True</property>
|
96
|
-
<property name="
|
96
|
+
<property name="can-focus">False</property>
|
97
97
|
<child>
|
98
98
|
<object class="GtkCheckButton" id="show_expanders">
|
99
99
|
<property name="label" translatable="yes">Show Expanders</property>
|
100
100
|
<property name="visible">True</property>
|
101
|
-
<property name="
|
102
|
-
<property name="
|
101
|
+
<property name="can-focus">True</property>
|
102
|
+
<property name="receives-default">False</property>
|
103
103
|
<property name="xalign">0</property>
|
104
|
-
<property name="
|
104
|
+
<property name="draw-indicator">True</property>
|
105
105
|
</object>
|
106
106
|
<packing>
|
107
107
|
<property name="expand">False</property>
|
@@ -112,14 +112,14 @@
|
|
112
112
|
<child>
|
113
113
|
<object class="GtkButtonBox" id="buttonbox1">
|
114
114
|
<property name="visible">True</property>
|
115
|
-
<property name="
|
116
|
-
<property name="
|
115
|
+
<property name="can-focus">False</property>
|
116
|
+
<property name="layout-style">spread</property>
|
117
117
|
<child>
|
118
118
|
<object class="GtkButton" id="load_state">
|
119
119
|
<property name="label" translatable="yes">Load State</property>
|
120
120
|
<property name="visible">True</property>
|
121
|
-
<property name="
|
122
|
-
<property name="
|
121
|
+
<property name="can-focus">True</property>
|
122
|
+
<property name="receives-default">True</property>
|
123
123
|
</object>
|
124
124
|
<packing>
|
125
125
|
<property name="expand">True</property>
|
@@ -131,8 +131,8 @@
|
|
131
131
|
<object class="GtkButton" id="save_state">
|
132
132
|
<property name="label" translatable="yes">Save State</property>
|
133
133
|
<property name="visible">True</property>
|
134
|
-
<property name="
|
135
|
-
<property name="
|
134
|
+
<property name="can-focus">True</property>
|
135
|
+
<property name="receives-default">True</property>
|
136
136
|
</object>
|
137
137
|
<packing>
|
138
138
|
<property name="expand">True</property>
|
@@ -4,19 +4,18 @@ width: 1086
|
|
4
4
|
height: 600
|
5
5
|
panel_pos: 360
|
6
6
|
notebook_panel_position: 400
|
7
|
-
run_command_line: ruby golf_handicap
|
7
|
+
run_command_line: ruby golf_handicap.rb
|
8
8
|
open_files:
|
9
|
-
- "/home/eric/vrp/vr3/examples/golf_handicap/golf_handicap"
|
10
9
|
- "/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
10
|
- "/home/eric/vrp/vr3/examples/golf_handicap/src/LoadGolfer.rb"
|
11
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/src/Score.rb"
|
12
|
+
- "/home/eric/vrp/vr3/examples/golf_handicap/golf_handicap.rb"
|
14
13
|
open_folders:
|
15
14
|
- "/home/eric/vrp/vr3/examples/golf_handicap"
|
16
15
|
- "/home/eric/vrp/vr3/examples/golf_handicap/src"
|
17
16
|
- "/home/eric/vrp/vr3/examples/golf_handicap/src/glade"
|
18
|
-
current_file: "/home/eric/vrp/vr3/examples/golf_handicap/
|
19
|
-
current_line:
|
17
|
+
current_file: "/home/eric/vrp/vr3/examples/golf_handicap/src/LoadGolfer.rb"
|
18
|
+
current_line: 9
|
20
19
|
rdoc_command_line: rdoc -x README
|
21
20
|
builder: !ruby/object:Gtk::Builder {}
|
22
21
|
top_level_window: false
|
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Handicap
|
2
|
+
scores:
|
3
|
+
- !ruby/object:Score
|
4
|
+
ui_course_name_ent: Agusta National
|
5
|
+
ui_course_rating_ent: '70'
|
6
|
+
ui_course_slope_ent: '134'
|
7
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-30 00:00:00.000000000 Z
|
8
|
+
ui_score_ent: '90'
|
9
|
+
used: "y"
|
10
|
+
handicap: '16.2'
|
11
|
+
builder: !ruby/object:Gtk::Builder {}
|
12
|
+
top_level_window: false
|
13
|
+
- !ruby/object:Score
|
14
|
+
ui_course_name_ent: Agusta National
|
15
|
+
ui_course_rating_ent: '70'
|
16
|
+
ui_course_slope_ent: '134'
|
17
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-28 18:07:05.009883419 -04:00
|
18
|
+
ui_score_ent: '90'
|
19
|
+
used: "y"
|
20
|
+
handicap: '16.2'
|
21
|
+
builder: !ruby/object:Gtk::Builder {}
|
22
|
+
top_level_window: false
|
23
|
+
- !ruby/object:Score
|
24
|
+
ui_course_name_ent: Bushwood Links
|
25
|
+
ui_course_rating_ent: '71'
|
26
|
+
ui_course_slope_ent: '120'
|
27
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-28 18:07:00.570518201 -04:00
|
28
|
+
ui_score_ent: '90'
|
29
|
+
used: ''
|
30
|
+
handicap: '16.3'
|
31
|
+
builder: !ruby/object:Gtk::Builder {}
|
32
|
+
top_level_window: false
|
33
|
+
- !ruby/object:Score
|
34
|
+
ui_course_name_ent: Bushwood Links
|
35
|
+
ui_course_rating_ent: '71'
|
36
|
+
ui_course_slope_ent: '120'
|
37
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-28 18:04:04.941273790 -04:00
|
38
|
+
ui_score_ent: '90'
|
39
|
+
used: ''
|
40
|
+
handicap: '16.3'
|
41
|
+
builder: !ruby/object:Gtk::Builder {}
|
42
|
+
top_level_window: false
|
43
|
+
- !ruby/object:Score
|
44
|
+
ui_course_name_ent: Agusta National
|
45
|
+
ui_course_rating_ent: '70'
|
46
|
+
ui_course_slope_ent: '134'
|
47
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-28 00:00:00.000000000 Z
|
48
|
+
ui_score_ent: '99'
|
49
|
+
used: ''
|
50
|
+
handicap: '16.3'
|
51
|
+
builder: !ruby/object:Gtk::Builder {}
|
52
|
+
top_level_window: false
|
53
|
+
- !ruby/object:Score
|
54
|
+
ui_course_name_ent: Bushwood Links
|
55
|
+
ui_course_rating_ent: '71'
|
56
|
+
ui_course_slope_ent: '120'
|
57
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-26 00:00:00.000000000 Z
|
58
|
+
ui_score_ent: '90'
|
59
|
+
used: ''
|
60
|
+
handicap: '16.3'
|
61
|
+
builder: !ruby/object:Gtk::Builder {}
|
62
|
+
top_level_window: false
|
63
|
+
- !ruby/object:Score
|
64
|
+
ui_course_name_ent: Bushwood Links
|
65
|
+
ui_course_rating_ent: '71'
|
66
|
+
ui_course_slope_ent: '120'
|
67
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-13 00:00:00.000000000 Z
|
68
|
+
ui_score_ent: '89'
|
69
|
+
used: "y"
|
70
|
+
handicap: n/a
|
71
|
+
builder: !ruby/object:Gtk::Builder {}
|
72
|
+
top_level_window: false
|
73
|
+
- !ruby/object:Score
|
74
|
+
ui_course_name_ent: Bushwood Links
|
75
|
+
ui_course_rating_ent: '71'
|
76
|
+
ui_course_slope_ent: '120'
|
77
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-11 00:00:00.000000000 Z
|
78
|
+
ui_score_ent: '98'
|
79
|
+
used: ''
|
80
|
+
handicap: n/a
|
81
|
+
builder: !ruby/object:Gtk::Builder {}
|
82
|
+
top_level_window: false
|
83
|
+
- !ruby/object:Score
|
84
|
+
ui_course_name_ent: Whittier Narrows
|
85
|
+
ui_course_rating_ent: '70'
|
86
|
+
ui_course_slope_ent: '116'
|
87
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-02 00:00:00.000000000 Z
|
88
|
+
ui_score_ent: '96'
|
89
|
+
used: ''
|
90
|
+
handicap: n/a
|
91
|
+
builder: !ruby/object:Gtk::Builder {}
|
92
|
+
top_level_window: false
|
93
|
+
- !ruby/object:Score
|
94
|
+
ui_course_name_ent: Bushwood Links
|
95
|
+
ui_course_rating_ent: '71'
|
96
|
+
ui_course_slope_ent: '120'
|
97
|
+
ui_date_calendar: !ruby/object:DateTime 2024-09-02 00:00:00.000000000 Z
|
98
|
+
ui_score_ent: '89'
|
99
|
+
used: ''
|
100
|
+
handicap: n/a
|
101
|
+
builder: !ruby/object:Gtk::Builder {}
|
102
|
+
top_level_window: false
|
103
|
+
vr_yaml_file: "/home/eric/vrp/vr3/examples/golf_handicap/eric_cunningham.yaml"
|
104
|
+
builder: !ruby/object:Gtk::Builder {}
|
105
|
+
ui_rounds_listview:
|
106
|
+
top_level_window: true
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
require "vrlib"
|
3
|
+
require_relative "src/Handicap"
|
4
|
+
require_relative "src/LoadGolfer"
|
5
|
+
require_relative "src/Score"
|
6
|
+
|
7
|
+
last_file = Dir.glob("*.yaml").max_by {|f| File.mtime(f)}
|
8
|
+
|
9
|
+
if last_file.nil?
|
10
|
+
load_new_golfer
|
11
|
+
else
|
12
|
+
VR::load_yaml(Handicap, last_file).show_glade
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
@@ -7,51 +7,53 @@ class Handicap
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def before_show()
|
10
|
-
@
|
10
|
+
@ui_rounds_listview = VR::ListView.new(rnd: String, date: VR::Col::CalendarCol,
|
11
11
|
course: String, rating_slope: String, score: String, diff: Score,
|
12
12
|
hcp: String)
|
13
|
-
@
|
14
|
-
@
|
15
|
-
@
|
13
|
+
@ui_rounds_listview.col_xalign(diff: 1, hcp: 1, score: 1)
|
14
|
+
@ui_rounds_listview.col_sortable(date: true, course: true)
|
15
|
+
@ui_rounds_listview.show
|
16
16
|
golfer_file = File.basename(@vr_yaml_file, ".*")
|
17
17
|
golfer = golfer_file.split("_").map(&:capitalize).join(' ')
|
18
|
-
@builder[:
|
18
|
+
@builder[:ui_name_lbl].label = "<big><big><big><big><big>#{golfer}</big></big></big></big></big>"
|
19
19
|
if File.exists?(golfer_file + ".jpg")
|
20
|
-
@builder[:
|
21
|
-
@builder[:
|
20
|
+
@builder[:ui_image].file = golfer_file + ".jpg"
|
21
|
+
@builder[:ui_image].visible = true
|
22
22
|
end
|
23
23
|
refresh()
|
24
24
|
end
|
25
25
|
|
26
26
|
def refresh()
|
27
27
|
update_handicaps
|
28
|
-
@
|
28
|
+
@ui_rounds_listview.model.clear
|
29
29
|
i = 1
|
30
30
|
@scores.each do |s|
|
31
|
-
row = @
|
31
|
+
row = @ui_rounds_listview.add_row()
|
32
32
|
row[:rnd] = "#{i}."
|
33
33
|
i += 1
|
34
|
-
row[:date] = VR::Col::CalendarCol.new(s.
|
35
|
-
row[:course] = s.
|
36
|
-
row[:score] = s.
|
37
|
-
row[:rating_slope] = "#{s.
|
38
|
-
row[:diff] = s
|
34
|
+
row[:date] = VR::Col::CalendarCol.new(s.ui_date_calendar, :format => "%d %b %Y ", :hide_time=>true, :hide_date => false)
|
35
|
+
row[:course] = s.ui_course_name_ent
|
36
|
+
row[:score] = s.ui_score_ent
|
37
|
+
row[:rating_slope] = "#{s.ui_course_rating_ent.to_s}/#{s.ui_course_slope_ent.to_s}"
|
38
|
+
row[:diff] = s # store whole object
|
39
39
|
row[:hcp] = s.handicap
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def
|
44
|
-
if row = @
|
43
|
+
def ui_add_but__clicked(*a)
|
44
|
+
if row = @ui_rounds_listview.selected_rows.first
|
45
45
|
course = row[:course]
|
46
46
|
rating, slope = row[:rating_slope].split("/")
|
47
47
|
else
|
48
|
-
course =
|
48
|
+
course = "Agusta National"
|
49
|
+
rating = "70"
|
50
|
+
slope = "134"
|
49
51
|
end
|
50
52
|
score = Score.new(course, rating, slope)
|
51
|
-
score.show_glade
|
52
|
-
if !score.used.nil? and score.
|
53
|
+
score.show_glade(self)
|
54
|
+
if !score.used.nil? and score.ui_score_ent.to_i > 50 #score.used = "n" when save butoon pressed
|
53
55
|
@scores << score
|
54
|
-
@scores.sort! { |x,y| y.
|
56
|
+
@scores.sort! { |x,y| y.ui_date_calendar <=> x.ui_date_calendar }
|
55
57
|
refresh()
|
56
58
|
end
|
57
59
|
end
|
@@ -62,7 +64,7 @@ class Handicap
|
|
62
64
|
end
|
63
65
|
@scores.each {|s| s.used = ""}
|
64
66
|
fill_handicap(@scores)
|
65
|
-
@builder[:
|
67
|
+
@builder[:ui_handicap_lbl].label = "<big><big><big><big><big><big><big><big>#{@scores[0].handicap}</big></big></big></big></big></big></big></big>" if @scores[0]
|
66
68
|
end
|
67
69
|
|
68
70
|
def fill_handicap(score_array)
|
@@ -76,8 +78,8 @@ class Handicap
|
|
76
78
|
score_array[0].handicap = count > 0 ? x[0..x.index(".")+1] : "n/a" if score_array[0]
|
77
79
|
end
|
78
80
|
|
79
|
-
def
|
80
|
-
@
|
81
|
+
def ui_change_but__clicked(*a)
|
82
|
+
@ui_rounds_listview = nil # so it doesn't save contents
|
81
83
|
VR::save_yaml(self)
|
82
84
|
@builder[:window1].destroy
|
83
85
|
load_new_golfer
|
@@ -85,7 +87,7 @@ class Handicap
|
|
85
87
|
|
86
88
|
|
87
89
|
def window1__delete_event(*)
|
88
|
-
@
|
90
|
+
@ui_rounds_listview = nil
|
89
91
|
VR::save_yaml(self)
|
90
92
|
return false #ok to close
|
91
93
|
end
|
@@ -98,18 +100,18 @@ class Handicap
|
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
101
|
-
def
|
102
|
-
return unless row = @
|
103
|
+
def ui_delete_but__clicked(*a)
|
104
|
+
return unless row = @ui_rounds_listview.selected_rows.first
|
103
105
|
if alert("Are you sure you want to delete this score?", button_yes: "Delete", button_no: "Cancel")
|
104
106
|
@scores.delete(row[:diff])
|
105
107
|
refresh
|
106
108
|
end
|
107
109
|
end
|
108
110
|
|
109
|
-
def
|
110
|
-
return unless row = @
|
111
|
+
def ui_edit_but__clicked(*a)
|
112
|
+
return unless row = @ui_rounds_listview.selected_rows.first
|
111
113
|
row[:diff].show_glade
|
112
|
-
@scores.sort! { |x,y| y.
|
114
|
+
@scores.sort! { |x,y| y.ui_date_calendar <=> x.ui_date_calendar }
|
113
115
|
refresh
|
114
116
|
end
|
115
117
|
end
|
@@ -1,27 +1,27 @@
|
|
1
|
-
def load_new_golfer
|
2
|
-
files = []
|
3
|
-
names = []
|
4
|
-
Dir[File.expand_path(
|
5
|
-
|
6
|
-
|
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
|
-
|
13
|
-
elsif answer == false
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
else
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
1
|
+
def load_new_golfer
|
2
|
+
files = []
|
3
|
+
names = []
|
4
|
+
Dir[File.expand_path("*.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
|