visualruby 1.0.12

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.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/bin/editor/VR_Document.rb +219 -0
  3. data/bin/editor/VR_TabSearch.rb +50 -0
  4. data/bin/editor/VR_Tabs.rb +99 -0
  5. data/bin/editor/VR_TextShell.rb +83 -0
  6. data/bin/editor/VR_TextViewCommon.rb +65 -0
  7. data/bin/editor/glade/VR_Document.glade +160 -0
  8. data/bin/main/GemTree.rb +23 -0
  9. data/bin/main/NewProjectGUI.rb +28 -0
  10. data/bin/main/ProjectChooserGUI.rb +41 -0
  11. data/bin/main/ProjectChooserView.rb +39 -0
  12. data/bin/main/RubygemsAPI.rb +93 -0
  13. data/bin/main/Splash.rb +22 -0
  14. data/bin/main/VR_ENV.rb +61 -0
  15. data/bin/main/VR_ENV_GLOBAL.rb +64 -0
  16. data/bin/main/VR_File_Tree.rb +120 -0
  17. data/bin/main/VR_Local_Gem_Tree.rb +80 -0
  18. data/bin/main/VR_Main.rb +313 -0
  19. data/bin/main/VR_Remote_Gem_Tree.rb +70 -0
  20. data/bin/main/glade/NewProjectGUI.glade +141 -0
  21. data/bin/main/glade/ProjectChooserGUI.glade +140 -0
  22. data/bin/main/glade/RubygemsAPI.glade +130 -0
  23. data/bin/main/glade/Splash.glade +18 -0
  24. data/bin/main/glade/VR_ENV.glade +168 -0
  25. data/bin/main/glade/VR_ENV_GLOBAL.glade +268 -0
  26. data/bin/main/glade/VR_File_Tree.glade +65 -0
  27. data/bin/main/glade/VR_Local_Gem_Tree.glade +45 -0
  28. data/bin/main/glade/VR_Main.glade +707 -0
  29. data/bin/main/glade/VR_Remote_Gem_Tree.glade +76 -0
  30. data/bin/tools/VR_Tools.rb +120 -0
  31. data/img/close.png +0 -0
  32. data/img/folder.png +0 -0
  33. data/img/glade.png +0 -0
  34. data/img/gtk-edit.png +0 -0
  35. data/img/obj.png +0 -0
  36. data/img/png.png +0 -0
  37. data/img/rb.png +0 -0
  38. data/img/ruby.png +0 -0
  39. data/img/splash.png +0 -0
  40. data/img/unknown.png +0 -0
  41. data/skeleton/document/New.glade +13 -0
  42. data/skeleton/document/NewWindow.rb +15 -0
  43. data/skeleton/project/bin/MyClass.rb +15 -0
  44. data/skeleton/project/bin/glade/MyClass.glade +45 -0
  45. data/skeleton/project/main.rb +14 -0
  46. data/visualruby_examples/active_record/.vr_settings.yaml +47 -0
  47. data/visualruby_examples/active_record/active_record.rb +52 -0
  48. data/visualruby_examples/active_record/bin/ChoosePerson.rb +17 -0
  49. data/visualruby_examples/active_record/bin/Person.rb +13 -0
  50. data/visualruby_examples/active_record/bin/glade/ChoosePerson.glade +61 -0
  51. data/visualruby_examples/active_record/bin/glade/Person.glade +148 -0
  52. data/visualruby_examples/active_record/db/development.sqlite3 +0 -0
  53. data/visualruby_examples/active_record2/.vr_settings.yaml +48 -0
  54. data/visualruby_examples/active_record2/active_record2.rb +142 -0
  55. data/visualruby_examples/active_record2/bin/CompanyGUI.rb +54 -0
  56. data/visualruby_examples/active_record2/bin/Employee.rb +20 -0
  57. data/visualruby_examples/active_record2/bin/Employer.rb +11 -0
  58. data/visualruby_examples/active_record2/bin/Paycheck.rb +11 -0
  59. data/visualruby_examples/active_record2/bin/glade/CompanyGUI.glade +167 -0
  60. data/visualruby_examples/active_record2/bin/glade/Employee.glade +123 -0
  61. data/visualruby_examples/active_record2/bin/glade/Employer.glade +147 -0
  62. data/visualruby_examples/active_record2/bin/glade/Paycheck.glade +145 -0
  63. data/visualruby_examples/active_record2/db/development.sqlite3 +0 -0
  64. data/visualruby_examples/all_widgets/.vr_settings.yaml +20 -0
  65. data/visualruby_examples/all_widgets/all_widgets.rb +13 -0
  66. data/visualruby_examples/all_widgets/bin/AllWidgets.rb +43 -0
  67. data/visualruby_examples/all_widgets/bin/glade/AllWidgets.glade +166 -0
  68. data/visualruby_examples/all_widgets/bin/splash.png +0 -0
  69. data/visualruby_examples/calculator/.vr_settings.yaml +21 -0
  70. data/visualruby_examples/calculator/bin/Calculator.rb +63 -0
  71. data/visualruby_examples/calculator/bin/glade/Calculator.glade +243 -0
  72. data/visualruby_examples/calculator/main.rb +13 -0
  73. data/visualruby_examples/child_window/.vr_settings.yaml +46 -0
  74. data/visualruby_examples/child_window/bin/ChildWindowDemo.rb +41 -0
  75. data/visualruby_examples/child_window/bin/MyChildClass.rb +42 -0
  76. data/visualruby_examples/child_window/bin/glade/ChildWindowDemo.glade +101 -0
  77. data/visualruby_examples/child_window/bin/glade/MyChildClass.glade +58 -0
  78. data/visualruby_examples/child_window/main.rb +13 -0
  79. data/visualruby_examples/drag_drop/.vr_settings.yaml +19 -0
  80. data/visualruby_examples/drag_drop/bin/DragDropDemo.rb +45 -0
  81. data/visualruby_examples/drag_drop/bin/glade/DragDropDemo.glade +143 -0
  82. data/visualruby_examples/drag_drop/img/folder.png +0 -0
  83. data/visualruby_examples/drag_drop/img/glade.png +0 -0
  84. data/visualruby_examples/drag_drop/img/gtk-edit.png +0 -0
  85. data/visualruby_examples/drag_drop/img/obj.png +0 -0
  86. data/visualruby_examples/drag_drop/img/png.png +0 -0
  87. data/visualruby_examples/drag_drop/img/rb.png +0 -0
  88. data/visualruby_examples/drag_drop/img/ruby.png +0 -0
  89. data/visualruby_examples/drag_drop/img/unknown.png +0 -0
  90. data/visualruby_examples/drag_drop/main.rb +14 -0
  91. data/visualruby_examples/listview/.vr_settings.yaml +46 -0
  92. data/visualruby_examples/listview/bin/SongListView.rb +89 -0
  93. data/visualruby_examples/listview/bin/SongListViewGUI.rb +67 -0
  94. data/visualruby_examples/listview/bin/audio-x-generic.png +0 -0
  95. data/visualruby_examples/listview/bin/glade/SongListViewGUI.glade +220 -0
  96. data/visualruby_examples/listview/main.rb +19 -0
  97. data/visualruby_examples/listview_objects/.vr_settings.yaml +46 -0
  98. data/visualruby_examples/listview_objects/bin/DataObject.rb +32 -0
  99. data/visualruby_examples/listview_objects/bin/DataObjectGUI.rb +41 -0
  100. data/visualruby_examples/listview_objects/bin/ListViewObjects.rb +34 -0
  101. data/visualruby_examples/listview_objects/bin/ListViewObjectsGUI.rb +18 -0
  102. data/visualruby_examples/listview_objects/bin/glade/DataObject.glade +198 -0
  103. data/visualruby_examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +102 -0
  104. data/visualruby_examples/listview_objects/main.rb +13 -0
  105. data/visualruby_examples/simple_ruby_gui/.vr_settings.yaml +45 -0
  106. data/visualruby_examples/simple_ruby_gui/bin/DataObjectGUI.rb +20 -0
  107. data/visualruby_examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +163 -0
  108. data/visualruby_examples/simple_ruby_gui/simple_ruby_gui +16 -0
  109. data/visualruby_examples/treeview/.vr_settings.yaml +18 -0
  110. data/visualruby_examples/treeview/bin/MyClass.rb +28 -0
  111. data/visualruby_examples/treeview/bin/glade/MyClass.glade +48 -0
  112. data/visualruby_examples/treeview/main.rb +14 -0
  113. data/vr +40 -0
  114. metadata +202 -0
@@ -0,0 +1,148 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="width_request">450</property>
7
+ <property name="height_request">230</property>
8
+ <property name="visible">True</property>
9
+ <property name="modal">True</property>
10
+ <signal name="destroy" handler="destroy_window"/>
11
+ <child>
12
+ <object class="GtkHBox" id="hbox1">
13
+ <property name="visible">True</property>
14
+ <child>
15
+ <object class="GtkVBox" id="vbox1">
16
+ <property name="width_request">450</property>
17
+ <property name="visible">True</property>
18
+ <child>
19
+ <object class="GtkLabel" id="label5">
20
+ <property name="visible">True</property>
21
+ <property name="yalign">0.4699999988079071</property>
22
+ <property name="label" translatable="yes">&lt;big&gt;&lt;big&gt;Person&lt;/big&gt;&lt;/big&gt;</property>
23
+ <property name="use_markup">True</property>
24
+ </object>
25
+ <packing>
26
+ <property name="padding">10</property>
27
+ <property name="position">0</property>
28
+ </packing>
29
+ </child>
30
+ <child>
31
+ <object class="GtkTable" id="table1">
32
+ <property name="visible">True</property>
33
+ <property name="n_rows">4</property>
34
+ <property name="n_columns">2</property>
35
+ <property name="column_spacing">5</property>
36
+ <property name="row_spacing">5</property>
37
+ <child>
38
+ <object class="GtkLabel" id="label1">
39
+ <property name="visible">True</property>
40
+ <property name="xalign">1</property>
41
+ <property name="label" translatable="yes">Name:</property>
42
+ </object>
43
+ <packing>
44
+ <property name="x_options">GTK_FILL</property>
45
+ </packing>
46
+ </child>
47
+ <child>
48
+ <object class="GtkLabel" id="label2">
49
+ <property name="visible">True</property>
50
+ <property name="xalign">1</property>
51
+ <property name="label" translatable="yes">Address:</property>
52
+ </object>
53
+ <packing>
54
+ <property name="top_attach">1</property>
55
+ <property name="bottom_attach">2</property>
56
+ <property name="x_options">GTK_FILL</property>
57
+ </packing>
58
+ </child>
59
+ <child>
60
+ <object class="GtkLabel" id="label3">
61
+ <property name="visible">True</property>
62
+ <property name="xalign">1</property>
63
+ <property name="label" translatable="yes">Phone Number:</property>
64
+ </object>
65
+ <packing>
66
+ <property name="top_attach">2</property>
67
+ <property name="bottom_attach">3</property>
68
+ <property name="x_options">GTK_FILL</property>
69
+ </packing>
70
+ </child>
71
+ <child>
72
+ <object class="GtkLabel" id="label4">
73
+ <property name="visible">True</property>
74
+ <property name="xalign">1</property>
75
+ <property name="label" translatable="yes">Email:</property>
76
+ </object>
77
+ <packing>
78
+ <property name="top_attach">3</property>
79
+ <property name="bottom_attach">4</property>
80
+ <property name="x_options">GTK_FILL</property>
81
+ </packing>
82
+ </child>
83
+ <child>
84
+ <object class="GtkEntry" id="Person.name">
85
+ <property name="visible">True</property>
86
+ <property name="can_focus">True</property>
87
+ <property name="invisible_char">•</property>
88
+ </object>
89
+ <packing>
90
+ <property name="left_attach">1</property>
91
+ <property name="right_attach">2</property>
92
+ </packing>
93
+ </child>
94
+ <child>
95
+ <object class="GtkEntry" id="Person.address">
96
+ <property name="visible">True</property>
97
+ <property name="can_focus">True</property>
98
+ <property name="invisible_char">•</property>
99
+ </object>
100
+ <packing>
101
+ <property name="left_attach">1</property>
102
+ <property name="right_attach">2</property>
103
+ <property name="top_attach">1</property>
104
+ <property name="bottom_attach">2</property>
105
+ </packing>
106
+ </child>
107
+ <child>
108
+ <object class="GtkEntry" id="phone">
109
+ <property name="visible">True</property>
110
+ <property name="can_focus">True</property>
111
+ <property name="invisible_char">•</property>
112
+ </object>
113
+ <packing>
114
+ <property name="left_attach">1</property>
115
+ <property name="right_attach">2</property>
116
+ <property name="top_attach">2</property>
117
+ <property name="bottom_attach">3</property>
118
+ </packing>
119
+ </child>
120
+ <child>
121
+ <object class="GtkEntry" id="email">
122
+ <property name="visible">True</property>
123
+ <property name="can_focus">True</property>
124
+ <property name="invisible_char">•</property>
125
+ </object>
126
+ <packing>
127
+ <property name="left_attach">1</property>
128
+ <property name="right_attach">2</property>
129
+ <property name="top_attach">3</property>
130
+ <property name="bottom_attach">4</property>
131
+ </packing>
132
+ </child>
133
+ </object>
134
+ <packing>
135
+ <property name="padding">20</property>
136
+ <property name="position">1</property>
137
+ </packing>
138
+ </child>
139
+ </object>
140
+ <packing>
141
+ <property name="padding">20</property>
142
+ <property name="position">0</property>
143
+ </packing>
144
+ </child>
145
+ </object>
146
+ </child>
147
+ </object>
148
+ </interface>
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:VR_ENV
2
+ backup_path: /home/eric
3
+ browser: firefox
4
+ current_file: /home/eric/vrp/vrx/visualruby_examples/active_record2/active_record2.rb
5
+ font_name: Monospace 10
6
+ glade_path: glade-gtk2
7
+ height: 865
8
+ open_files:
9
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2/active_record2.rb
10
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2/bin/CompanyGUI.rb
11
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2/bin/Employee.rb
12
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2/bin/Paycheck.rb
13
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2/bin/Employer.rb
14
+ open_folders:
15
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2
16
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2/bin
17
+ - /home/eric/vrp/vrx/visualruby_examples/active_record2/bin/glade
18
+ panel_pos: 541
19
+ rdoc_command_line: rdoc -x README
20
+ run_command_line: ruby active_record2.rb
21
+ tab_spaces: 2
22
+ width: 1346
23
+ builder: !ruby/object:Gtk::Builder {}
24
+ glade_box: !ruby/object:VR::SimpleComboBoxEntry {}
25
+ browser_box: !ruby/object:VR::SimpleComboBoxEntry {}
26
+ buttonChooseFolder: ! '...'
27
+ vbox1: !ruby/object:Gtk::VBox {}
28
+ label7: ! 'Editor Font:'
29
+ label3: ! 'Back-up Path:'
30
+ window1: !ruby/object:Gtk::Window {}
31
+ hbuttonbox1: !ruby/object:Gtk::HButtonBox {}
32
+ buttonCancel: Cancel
33
+ label8: ! 'RDoc Command Line: '
34
+ table1: !ruby/object:Gtk::Table {}
35
+ buttonTryBrowser: Try
36
+ buttonSave: Save
37
+ hboxBrowser: !ruby/object:Gtk::HBox {}
38
+ hboxGlade: !ruby/object:Gtk::HBox {}
39
+ label1: <big><big><b>Visual Ruby Settings</b></big></big>
40
+ label2: ! 'Browser Command Line:'
41
+ label4: ! 'Spaces for Each Tab in Editor:'
42
+ label5: ! 'Glade Command Line:'
43
+ label6: ! 'Command Line when "Run" is pressed:'
44
+ hbox1: !ruby/object:Gtk::HBox {}
45
+ hbox2: !ruby/object:Gtk::HBox {}
46
+ hbox3: !ruby/object:Gtk::HBox {}
47
+ hbox4: !ruby/object:Gtk::HBox {}
48
+ buttonTryGlade: Try
@@ -0,0 +1,142 @@
1
+ require 'vrlib.rb'
2
+ require 'active_record'
3
+
4
+ #make program output in real time so errors visible in VR.
5
+ STDOUT.sync = true
6
+ STDERR.sync = true
7
+
8
+ #everything in these directories will be included
9
+ my_path = File.expand_path(File.dirname(__FILE__))
10
+ require_all Dir.glob(my_path + "/bin/**/*.rb")
11
+
12
+ ActiveRecord::Base.establish_connection(
13
+ :adapter => "sqlite3",
14
+ :database => "db/development.sqlite3"
15
+ )
16
+
17
+
18
+ CompanyGUI.new.show
19
+
20
+ # This code just populates the database
21
+
22
+ #ActiveRecord::Schema.define do
23
+ # create_table :employers do |table|
24
+ # table.column :name, :string
25
+ # table.column :address, :string
26
+ # table.column :company_type, :string
27
+ # end
28
+ # create_table :employees do |table|
29
+ # table.column :employer_id, :integer
30
+ # table.column :name, :string
31
+ # table.column :address, :string
32
+ # end
33
+ # create_table :paychecks do |table|
34
+ # table.column :employee_id, :integer
35
+ # table.column :date, :date
36
+ # table.column :description, :string
37
+ # table.column :amount, :float
38
+ # end
39
+ #
40
+ #end
41
+ #
42
+ #p = Employer.create
43
+ #p.name = "Hal's Lawnmowers"
44
+ #p.address = "4675 St Bernard Wy, Lincoln, NE 83748"
45
+ #p.company_type = "Home and Garden"
46
+ #p.save
47
+ #
48
+ #e = p.employees.create
49
+ #e.name = "Kenny Arthur"
50
+ #e.address = "11430 W Foothill, San Mateo CA 90054"
51
+ #e.save
52
+ #
53
+ #c = e.paychecks.create
54
+ #c.date = DateTime.new(2011, 12, 18)
55
+ #c.description = "Cash Advance"
56
+ #c.amount = 400
57
+ #c.save
58
+ #
59
+ #c = e.paychecks.create
60
+ #c.date = DateTime.new(2011, 11, 25)
61
+ #c.description = "November Hours"
62
+ #c.amount = -545.56
63
+ #c.save
64
+ #
65
+ #c = e.paychecks.create
66
+ #c.date = DateTime.new(2011, 11, 28)
67
+ #c.description = "Payment"
68
+ #c.amount = 900
69
+ #c.save
70
+ #
71
+ #e = p.employees.create
72
+ #e.name = "Albert Davidson"
73
+ #e.address = "324 Sheffield Blvd, San Francisco CA 90048"
74
+ #e.save
75
+ #
76
+ #c = e.paychecks.create
77
+ #c.date = DateTime.new(2011, 12, 28)
78
+ #c.description = "Payment: Christmas Bonus"
79
+ #c.amount = 500
80
+ #c.save
81
+ #
82
+ #c = e.paychecks.create
83
+ #c.date = DateTime.new(2011, 11, 25)
84
+ #c.description = "November Hours"
85
+ #c.amount = -755.56
86
+ #c.save
87
+ #
88
+ #c = e.paychecks.create
89
+ #c.date = DateTime.new(2011, 11, 28)
90
+ #c.description = "Payment"
91
+ #c.amount = 1000
92
+ #c.save
93
+ #
94
+ #p = Employer.create
95
+ #p.name = "99 cent Supermart"
96
+ #p.address = "222 Cleveland Blvd, Foster City, CA 96858"
97
+ #p.company_type = "Discount Stores"
98
+ #p.save
99
+ #
100
+ #e = p.employees.create
101
+ #e.name = "Richard King"
102
+ #e.address = "490 S Brooks Blvd, San Francisco CA 90044"
103
+ #e.save
104
+ #
105
+ #c = e.paychecks.create
106
+ #c.date = DateTime.new(2011, 9, 18)
107
+ #c.description = "Payment: Overtime"
108
+ #c.amount = 500
109
+ #c.save
110
+ #
111
+ #c = e.paychecks.create
112
+ #c.date = DateTime.new(2011, 11, 25)
113
+ #c.description = "November Hours"
114
+ #c.amount = -485.56
115
+ #c.save
116
+ #
117
+ #c = e.paychecks.create
118
+ #c.date = DateTime.new(2011, 11, 28)
119
+ #c.description = "December Hours"
120
+ #c.amount = -756.56
121
+ #c.save
122
+ #
123
+ #
124
+ #e = p.employees.create
125
+ #e.name = "Angel Cervantes"
126
+ #e.address = "1984 99th Blvd, Sacremento, CA 95558"
127
+ #e.save
128
+ #
129
+ #c = e.paychecks.create
130
+ #c.date = DateTime.new(2011, 11, 28)
131
+ #c.description = "Payment: November"
132
+ #c.amount = 750
133
+ #c.save
134
+ #
135
+ #c = e.paychecks.create
136
+ #c.date = DateTime.new(2011, 11, 25)
137
+ #c.description = "November Hours"
138
+ #c.amount = -855.56
139
+ #c.save
140
+ #
141
+ #
142
+ #
@@ -0,0 +1,54 @@
1
+
2
+ class CompanyGUI
3
+
4
+ include GladeGUI
5
+
6
+
7
+ def before_show()
8
+ @employer_view = VR::ListView.new(:employer => Employer, :address => String, :company_type => String)
9
+ @builder["scroll_employer"].add(@employer_view)
10
+ @employer_view.selection.signal_connect("changed") { employer_view__changed }
11
+ @employer_view.col_width(:employer => 160, :address => 340, :company_type => 180)
12
+
13
+ @employee_view = VR::ListView.new(:employer => Employer, :employee => Employee, :address => String, :balance => String)
14
+ @builder["scroll_employee"].add(@employee_view)
15
+ @employee_view.selection.signal_connect("changed") { employee_view__changed }
16
+ @employee_view.col_width(:employer => 160, :employee => 150, :address => 320)
17
+
18
+ @paycheck_view = VR::ListView.new(:employee => Employee, :date => DateTime, :description => String, :amt => Paycheck)
19
+ @builder["scroll_paycheck"].add(@paycheck_view)
20
+ @paycheck_view.col_width(:employee => 200, :date => 100, :description => 220, :amt => 100)
21
+
22
+ Employer.all.each do |e|
23
+ row = @employer_view.add_row
24
+ row[:employer] = e
25
+ row.load_object(e)
26
+ end
27
+
28
+ @employer_view.select_row(0)
29
+ end
30
+
31
+
32
+ def employer_view__changed
33
+ return unless row = @employer_view.selected_rows[0]
34
+ @employee_view.model.clear
35
+ Employee.where(:employer_id => row[:employer].id).each do |e|
36
+ row = @employee_view.add_row
37
+ row[:employee] = e
38
+ row.load_object(e)
39
+ end
40
+ @employee_view.select_row(0)
41
+ end
42
+
43
+ def employee_view__changed
44
+ return unless row = @employee_view.selected_rows[0]
45
+ @paycheck_view.model.clear
46
+ Paycheck.where(:employee_id => row[:employee].id).each do |e|
47
+ row = @paycheck_view.add_row
48
+ row.load_object(e) #this loads employee object
49
+ row[:amt] = e
50
+ end
51
+ end
52
+
53
+
54
+ end
@@ -0,0 +1,20 @@
1
+
2
+ class Employee < ActiveRecord::Base
3
+ has_many :paychecks
4
+ belongs_to :employer
5
+
6
+ include GladeGUI
7
+
8
+ def visual_attributes
9
+ bal = balance().to_f
10
+ hash = { :text => name }
11
+ hash[:foreground] = (bal < 0) ? "white" : "black"
12
+ hash[:background] = (bal < 0) ? "red" : "white"
13
+ return hash
14
+ end
15
+
16
+ def balance()
17
+ Paycheck.sum(:amount, :conditions => "employee_id = #{id}").round(2).to_s
18
+ end
19
+
20
+ end
@@ -0,0 +1,11 @@
1
+
2
+ class Employer < ActiveRecord::Base
3
+ has_many :employees
4
+
5
+ include GladeGUI
6
+
7
+ def to_s # this is what shows in the VR::ListView
8
+ name
9
+ end
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+
2
+ class Paycheck < ActiveRecord::Base
3
+ belongs_to :employee
4
+
5
+ include GladeGUI
6
+
7
+ def to_s
8
+ sprintf("%.2f", amount)
9
+ end
10
+
11
+ end
@@ -0,0 +1,167 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="visible">True</property>
7
+ <property name="can_focus">False</property>
8
+ <property name="title" translatable="yes">All Paychecks</property>
9
+ <property name="modal">True</property>
10
+ <property name="default_width">740</property>
11
+ <property name="default_height">700</property>
12
+ <signal name="destroy" handler="destroy_window" swapped="no"/>
13
+ <child>
14
+ <object class="GtkHBox" id="hbox1">
15
+ <property name="visible">True</property>
16
+ <property name="can_focus">False</property>
17
+ <child>
18
+ <object class="GtkVBox" id="vbox1">
19
+ <property name="visible">True</property>
20
+ <property name="can_focus">False</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">&lt;big&gt;&lt;big&gt;Paychecks For All Employees&lt;/big&gt;&lt;/big&gt;</property>
26
+ <property name="use_markup">True</property>
27
+ </object>
28
+ <packing>
29
+ <property name="expand">True</property>
30
+ <property name="fill">True</property>
31
+ <property name="position">0</property>
32
+ </packing>
33
+ </child>
34
+ <child>
35
+ <object class="GtkLabel" id="label2">
36
+ <property name="visible">True</property>
37
+ <property name="can_focus">False</property>
38
+ <property name="xalign">0.019999999552965164</property>
39
+ <property name="ypad">5</property>
40
+ <property name="label" translatable="yes">&lt;big&gt;Companies:&lt;/big&gt;</property>
41
+ <property name="use_markup">True</property>
42
+ </object>
43
+ <packing>
44
+ <property name="expand">False</property>
45
+ <property name="fill">True</property>
46
+ <property name="position">1</property>
47
+ </packing>
48
+ </child>
49
+ <child>
50
+ <object class="GtkScrolledWindow" id="scroll_employer">
51
+ <property name="visible">True</property>
52
+ <property name="can_focus">True</property>
53
+ <property name="hscrollbar_policy">automatic</property>
54
+ <property name="vscrollbar_policy">automatic</property>
55
+ <child>
56
+ <placeholder/>
57
+ </child>
58
+ </object>
59
+ <packing>
60
+ <property name="expand">True</property>
61
+ <property name="fill">True</property>
62
+ <property name="position">2</property>
63
+ </packing>
64
+ </child>
65
+ <child>
66
+ <object class="GtkLabel" id="label3">
67
+ <property name="visible">True</property>
68
+ <property name="can_focus">False</property>
69
+ <property name="xalign">0.019999999552965164</property>
70
+ <property name="ypad">5</property>
71
+ <property name="label" translatable="yes">&lt;big&gt;Employees:&lt;/big&gt;</property>
72
+ <property name="use_markup">True</property>
73
+ </object>
74
+ <packing>
75
+ <property name="expand">False</property>
76
+ <property name="fill">True</property>
77
+ <property name="position">3</property>
78
+ </packing>
79
+ </child>
80
+ <child>
81
+ <object class="GtkScrolledWindow" id="scroll_employee">
82
+ <property name="visible">True</property>
83
+ <property name="can_focus">True</property>
84
+ <property name="hscrollbar_policy">automatic</property>
85
+ <property name="vscrollbar_policy">automatic</property>
86
+ <child>
87
+ <placeholder/>
88
+ </child>
89
+ </object>
90
+ <packing>
91
+ <property name="expand">True</property>
92
+ <property name="fill">True</property>
93
+ <property name="position">4</property>
94
+ </packing>
95
+ </child>
96
+ <child>
97
+ <object class="GtkLabel" id="label4">
98
+ <property name="visible">True</property>
99
+ <property name="can_focus">False</property>
100
+ <property name="xalign">0.019999999552965164</property>
101
+ <property name="ypad">5</property>
102
+ <property name="label" translatable="yes">&lt;big&gt;Paychecks:&lt;/big&gt;</property>
103
+ <property name="use_markup">True</property>
104
+ </object>
105
+ <packing>
106
+ <property name="expand">False</property>
107
+ <property name="fill">True</property>
108
+ <property name="position">5</property>
109
+ </packing>
110
+ </child>
111
+ <child>
112
+ <object class="GtkScrolledWindow" id="scroll_paycheck">
113
+ <property name="visible">True</property>
114
+ <property name="can_focus">True</property>
115
+ <property name="hscrollbar_policy">automatic</property>
116
+ <property name="vscrollbar_policy">automatic</property>
117
+ <child>
118
+ <placeholder/>
119
+ </child>
120
+ </object>
121
+ <packing>
122
+ <property name="expand">True</property>
123
+ <property name="fill">True</property>
124
+ <property name="position">6</property>
125
+ </packing>
126
+ </child>
127
+ <child>
128
+ <object class="GtkHButtonBox" id="hbuttonbox1">
129
+ <property name="visible">True</property>
130
+ <property name="can_focus">False</property>
131
+ <property name="spacing">20</property>
132
+ <property name="layout_style">end</property>
133
+ <child>
134
+ <object class="GtkButton" id="button2">
135
+ <property name="label" translatable="yes">Done</property>
136
+ <property name="visible">True</property>
137
+ <property name="can_focus">True</property>
138
+ <property name="receives_default">True</property>
139
+ <property name="use_action_appearance">False</property>
140
+ <signal name="clicked" handler="destroy_window" swapped="no"/>
141
+ </object>
142
+ <packing>
143
+ <property name="expand">False</property>
144
+ <property name="fill">False</property>
145
+ <property name="position">0</property>
146
+ </packing>
147
+ </child>
148
+ </object>
149
+ <packing>
150
+ <property name="expand">False</property>
151
+ <property name="fill">True</property>
152
+ <property name="padding">10</property>
153
+ <property name="position">7</property>
154
+ </packing>
155
+ </child>
156
+ </object>
157
+ <packing>
158
+ <property name="expand">True</property>
159
+ <property name="fill">True</property>
160
+ <property name="padding">20</property>
161
+ <property name="position">0</property>
162
+ </packing>
163
+ </child>
164
+ </object>
165
+ </child>
166
+ </object>
167
+ </interface>