visualruby 1.0.19 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/Splash.rb +40 -0
  3. data/bin/editor/VR_Document.rb +81 -74
  4. data/bin/editor/VR_TabSearch.rb +5 -7
  5. data/bin/editor/VR_Tabs.rb +57 -36
  6. data/bin/editor/VR_TextShell.rb +12 -34
  7. data/bin/editor/VR_TextViewCommon.rb +9 -28
  8. data/bin/main/NewProjectGUI.rb +14 -13
  9. data/bin/main/OpenProject.rb +69 -0
  10. data/bin/main/ProjectChooserView.rb +3 -2
  11. data/bin/main/ProjectTree.rb +25 -0
  12. data/bin/main/RubygemsAPI.rb +15 -11
  13. data/bin/main/VR_ENV.rb +38 -60
  14. data/bin/main/VR_ENV_GLOBAL.rb +45 -44
  15. data/bin/main/VR_File_Tree.rb +29 -21
  16. data/bin/main/VR_Local_Gem_Tree.rb +4 -19
  17. data/bin/main/VR_Main.rb +128 -144
  18. data/bin/main/VR_Remote_Gem_Tree.rb +6 -19
  19. data/bin/main/glade/NewProjectGUI.glade +94 -98
  20. data/bin/main/glade/OpenProject.glade +259 -0
  21. data/bin/main/glade/RubygemsAPI.glade +98 -62
  22. data/bin/main/glade/VR_ENV.glade +46 -55
  23. data/bin/main/glade/VR_ENV_GLOBAL.glade +251 -180
  24. data/bin/main/glade/VR_File_Tree.glade +25 -16
  25. data/bin/main/glade/VR_Local_Gem_Tree.glade +16 -8
  26. data/bin/main/glade/VR_Main.glade +410 -449
  27. data/bin/main/glade/VR_Remote_Gem_Tree.glade +33 -31
  28. data/bin/tools/VR_Tools.rb +60 -46
  29. data/{visualruby_examples → examples}/active_record/active_record.rb +16 -10
  30. data/{visualruby_examples → examples}/active_record/bin/ChoosePerson.rb +7 -0
  31. data/examples/active_record/bin/Person.rb +21 -0
  32. data/examples/active_record/bin/glade/ChoosePerson.glade +89 -0
  33. data/examples/active_record/bin/glade/Person.glade +197 -0
  34. data/{visualruby_examples → examples}/active_record/db/development.sqlite3 +0 -0
  35. data/{visualruby_examples → examples}/active_record2/bin/CompanyGUI.rb +7 -7
  36. data/{visualruby_examples → examples}/active_record2/bin/Employee.rb +0 -0
  37. data/{visualruby_examples → examples}/active_record2/bin/Employer.rb +0 -0
  38. data/{visualruby_examples → examples}/active_record2/bin/Paycheck.rb +0 -0
  39. data/examples/active_record2/bin/glade/CompanyGUI.glade +149 -0
  40. data/examples/active_record2/bin/glade/Employee.glade +126 -0
  41. data/{visualruby_examples → examples}/active_record2/bin/glade/Employer.glade +0 -0
  42. data/{visualruby_examples → examples}/active_record2/bin/glade/Paycheck.glade +0 -0
  43. data/{visualruby_examples → examples}/active_record2/db/development.sqlite3 +0 -0
  44. data/{visualruby_examples → examples}/active_record2/main.rb +15 -9
  45. data/examples/alert_box/bin/AlertBoxDemo.rb +80 -0
  46. data/examples/alert_box/bin/glade/AlertBoxDemo.glade +234 -0
  47. data/examples/alert_box/main.rb +12 -0
  48. data/{visualruby_examples → examples}/all_widgets/bin/AllWidgets.rb +18 -10
  49. data/{visualruby_examples → examples}/all_widgets/bin/glade/AllWidgets.glade +52 -16
  50. data/{visualruby_examples → examples}/all_widgets/bin/splash.png +0 -0
  51. data/examples/all_widgets/main.rb +12 -0
  52. data/{visualruby_examples → examples}/calculator/bin/Calculator.rb +23 -22
  53. data/{visualruby_examples → examples}/calculator/bin/glade/Calculator.glade +81 -51
  54. data/examples/calculator/main.rb +13 -0
  55. data/examples/child_window/bin/ChildWindowDemo.rb +52 -0
  56. data/examples/child_window/bin/ModalWindow.rb +9 -0
  57. data/examples/child_window/bin/ModelessWindow.rb +9 -0
  58. data/examples/child_window/bin/MyChildClass.rb +21 -0
  59. data/examples/child_window/bin/glade/ChildWindowDemo.glade +87 -0
  60. data/examples/child_window/bin/glade/ModalWindow.glade +61 -0
  61. data/examples/child_window/bin/glade/ModelessWindow.glade +61 -0
  62. data/{visualruby_examples → examples}/child_window/bin/glade/MyChildClass.glade +14 -12
  63. data/examples/child_window/main.rb +12 -0
  64. data/{visualruby_examples → examples}/drag_drop/bin/DragDropDemo.rb +9 -10
  65. data/examples/drag_drop/bin/glade/DragDropDemo.glade +161 -0
  66. data/{visualruby_examples → examples}/drag_drop/img/folder.png +0 -0
  67. data/{visualruby_examples → examples}/drag_drop/img/glade.png +0 -0
  68. data/{visualruby_examples → examples}/drag_drop/img/gtk-edit.png +0 -0
  69. data/{visualruby_examples → examples}/drag_drop/img/obj.png +0 -0
  70. data/{visualruby_examples → examples}/drag_drop/img/png.png +0 -0
  71. data/{visualruby_examples → examples}/drag_drop/img/rb.png +0 -0
  72. data/{visualruby_examples → examples}/drag_drop/img/ruby.png +0 -0
  73. data/{visualruby_examples → examples}/drag_drop/img/unknown.png +0 -0
  74. data/examples/drag_drop/main.rb +11 -0
  75. data/examples/filetreeview/bin/ProjectTree.rb +32 -0
  76. data/examples/filetreeview/bin/ProjectTreeGUI.rb +28 -0
  77. data/examples/filetreeview/bin/glade/ProjectTreeGUI.glade +156 -0
  78. data/examples/filetreeview/main.rb +13 -0
  79. data/{visualruby_examples → examples}/listview/bin/SongListView.rb +24 -20
  80. data/{visualruby_examples → examples}/listview/bin/SongListViewGUI.rb +12 -11
  81. data/{visualruby_examples → examples}/listview/bin/audio-x-generic.png +0 -0
  82. data/examples/listview/bin/glade/SongListViewGUI.glade +195 -0
  83. data/examples/listview/main.rb +10 -0
  84. data/examples/listview_objects/bin/DataObject.rb +53 -0
  85. data/{visualruby_examples → examples}/listview_objects/bin/ListViewObjects.rb +7 -4
  86. data/examples/listview_objects/bin/ListViewObjectsGUI.rb +26 -0
  87. data/examples/listview_objects/bin/glade/DataObject.glade +196 -0
  88. data/examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +87 -0
  89. data/examples/listview_objects/main.rb +12 -0
  90. data/examples/settings_file/bin/MainApp.rb +38 -0
  91. data/examples/settings_file/bin/SavableSettings.rb +39 -0
  92. data/examples/settings_file/bin/glade/MainApp.glade +87 -0
  93. data/examples/settings_file/bin/glade/SavableSettings.glade +162 -0
  94. data/examples/settings_file/main.rb +14 -0
  95. data/examples/settings_file/settings.yaml +15 -0
  96. data/examples/simple_ruby_gui/bin/DataObjectGUI.rb +21 -0
  97. data/examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +195 -0
  98. data/examples/simple_ruby_gui/main.rb +16 -0
  99. data/{visualruby_examples → examples}/treeview/bin/MyClass.rb +1 -5
  100. data/examples/treeview/bin/glade/MyClass.glade +24 -0
  101. data/examples/treeview/main.rb +13 -0
  102. data/skeleton/document/New.glade +3 -4
  103. data/skeleton/document/NewWindow.rb +1 -1
  104. data/skeleton/project/bin/MyClass.rb +2 -2
  105. data/skeleton/project/bin/glade/MyClass.glade +12 -26
  106. data/skeleton/project/main.rb +4 -8
  107. data/vr +41 -37
  108. data/vrlib/lib/Alert.rb +67 -0
  109. data/vrlib/lib/DragDrop.rb +90 -0
  110. data/vrlib/lib/GladeGUI.rb +433 -0
  111. data/vrlib/lib/IconHash.rb +18 -0
  112. data/vrlib/lib/SavableClass.rb +56 -0
  113. data/vrlib/lib/SimpleComboBoxEntry.rb +8 -0
  114. data/vrlib/lib/glade/Alert.glade +119 -0
  115. data/vrlib/lib/treeview/FileTreeView.rb +113 -0
  116. data/vrlib/lib/treeview/IterMethods.rb +82 -0
  117. data/vrlib/lib/treeview/ListView.rb +85 -0
  118. data/vrlib/lib/treeview/TreeView.rb +43 -0
  119. data/vrlib/lib/treeview/ViewCommon.rb +370 -0
  120. data/vrlib/lib/treeview/columns/CalendarCol.rb +89 -0
  121. data/vrlib/lib/treeview/columns/CellRendererCombo.rb +66 -0
  122. data/vrlib/lib/treeview/columns/CellRendererDate.rb +45 -0
  123. data/vrlib/lib/treeview/columns/CellRendererObject.rb +57 -0
  124. data/vrlib/lib/treeview/columns/CellRendererPhone.rb +45 -0
  125. data/vrlib/lib/treeview/columns/CellRendererPixbuf.rb +16 -0
  126. data/vrlib/lib/treeview/columns/CellRendererProgress.rb +17 -0
  127. data/vrlib/lib/treeview/columns/CellRendererSpin.rb +37 -0
  128. data/vrlib/lib/treeview/columns/CellRendererText.rb +38 -0
  129. data/vrlib/lib/treeview/columns/CellRendererToggle.rb +47 -0
  130. data/vrlib/lib/treeview/columns/ComboCol.rb +43 -0
  131. data/vrlib/lib/treeview/columns/CurrencyCol.rb +23 -0
  132. data/vrlib/lib/treeview/columns/DateCol.rb +20 -0
  133. data/vrlib/lib/treeview/columns/ImageCol.rb +27 -0
  134. data/vrlib/lib/treeview/columns/ProgressCol.rb +27 -0
  135. data/vrlib/lib/treeview/columns/SpinCol.rb +11 -0
  136. data/vrlib/lib/treeview/columns/TextCol.rb +65 -0
  137. data/vrlib/lib/treeview/columns/TreeViewColumn.rb +93 -0
  138. data/{bin/main/glade/ProjectChooserGUI.glade → vrlib/lib/treeview/columns/glade/CalendarCol.glade} +71 -63
  139. data/{bin/main/glade/Splash.glade → vrlib/lib/treeview/columns/glade/ImageCol.glade} +5 -6
  140. data/vrlib/lib/treeview/columns/glade/TextCol.glade +82 -0
  141. data/vrlib/rdoc_replace.yaml +77 -0
  142. data/vrlib/vrlib.rb +7 -0
  143. metadata +163 -136
  144. data/bin/editor/glade/VR_Document.glade +0 -160
  145. data/bin/main/ProjectChooserGUI.rb +0 -41
  146. data/bin/main/Splash.rb +0 -22
  147. data/visualruby_examples/active_record/.vr_settings.yaml +0 -47
  148. data/visualruby_examples/active_record/bin/Person.rb +0 -13
  149. data/visualruby_examples/active_record/bin/glade/ChoosePerson.glade +0 -61
  150. data/visualruby_examples/active_record/bin/glade/Person.glade +0 -148
  151. data/visualruby_examples/active_record2/.vr_settings.yaml +0 -16
  152. data/visualruby_examples/active_record2/bin/glade/CompanyGUI.glade +0 -167
  153. data/visualruby_examples/active_record2/bin/glade/Employee.glade +0 -123
  154. data/visualruby_examples/all_widgets/.vr_settings.yaml +0 -13
  155. data/visualruby_examples/all_widgets/main.rb +0 -14
  156. data/visualruby_examples/calculator/.vr_settings.yaml +0 -11
  157. data/visualruby_examples/calculator/main.rb +0 -13
  158. data/visualruby_examples/child_window/.vr_settings.yaml +0 -16
  159. data/visualruby_examples/child_window/bin/ChildWindowDemo.rb +0 -39
  160. data/visualruby_examples/child_window/bin/MyChildClass.rb +0 -40
  161. data/visualruby_examples/child_window/bin/glade/ChildWindowDemo.glade +0 -101
  162. data/visualruby_examples/child_window/main.rb +0 -13
  163. data/visualruby_examples/drag_drop/.vr_settings.yaml +0 -12
  164. data/visualruby_examples/drag_drop/bin/glade/DragDropDemo.glade +0 -143
  165. data/visualruby_examples/drag_drop/main.rb +0 -14
  166. data/visualruby_examples/listview/.vr_settings.yaml +0 -12
  167. data/visualruby_examples/listview/bin/glade/SongListViewGUI.glade +0 -220
  168. data/visualruby_examples/listview/main.rb +0 -19
  169. data/visualruby_examples/listview_objects/.vr_settings.yaml +0 -16
  170. data/visualruby_examples/listview_objects/bin/DataObject.rb +0 -32
  171. data/visualruby_examples/listview_objects/bin/DataObjectGUI.rb +0 -41
  172. data/visualruby_examples/listview_objects/bin/ListViewObjectsGUI.rb +0 -18
  173. data/visualruby_examples/listview_objects/bin/glade/DataObject.glade +0 -198
  174. data/visualruby_examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +0 -102
  175. data/visualruby_examples/listview_objects/main.rb +0 -13
  176. data/visualruby_examples/simple_ruby_gui/.vr_settings.yaml +0 -16
  177. data/visualruby_examples/simple_ruby_gui/bin/DataObjectGUI.rb +0 -20
  178. data/visualruby_examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +0 -163
  179. data/visualruby_examples/simple_ruby_gui/main.rb +0 -16
  180. data/visualruby_examples/treeview/.vr_settings.yaml +0 -12
  181. data/visualruby_examples/treeview/bin/glade/MyClass.glade +0 -48
  182. data/visualruby_examples/treeview/main.rb +0 -14
@@ -7,52 +7,53 @@ class SongListViewGUI < SongListView
7
7
  @builder["scrolledwindow1"].add(self)
8
8
  end
9
9
 
10
- def self__row_activated(*argv)
10
+ def self__row_activated(*args)
11
11
  return unless rows = selected_rows
12
12
  row = rows[0]
13
- VR::Dialog.message_box("You selected\n#{row[:song]}\nby #{row[:artist]}")
13
+ alert "You selected\n#{row[:song]}\nby #{row[:artist]}"
14
14
  end
15
15
 
16
- def invisible__toggled(*argv)
16
+ def invisible__toggled(*args)
17
17
  v = !@builder["invisible"].active?
18
18
  col_visible(:last_name => v, :first_name => v )
19
19
  end
20
20
 
21
- def radio__toggled(*argv)
21
+ def radio__toggled(*args)
22
22
  ren_radio(:check => @builder["radio"].active?)
23
23
  each_row { |r| r[:check] = false }
24
24
  repaint
25
25
  end
26
26
 
27
- def background__toggled(*argv)
27
+ def background__toggled(*args)
28
28
  val = @builder["background"].active? ? "yellow" : "white"
29
- ren_attr(:song, :background => val) # same as set_background( SONG => val)
29
+ renderer(:pix).background = val
30
+ ren_attr(:song, :background => val) # same as set_background( :song => val)
30
31
  repaint
31
32
  end
32
33
 
33
- def xalign__toggled(*argv)
34
+ def xalign__toggled(*args)
34
35
  val = @builder["xalign"].active? ? 1 : 0
35
36
  ren_xalign(:artist => val)
36
37
  repaint
37
38
  end
38
39
 
39
- def bold__toggled(*argv)
40
+ def bold__toggled(*args)
40
41
  val = @builder["bold"].active? ? Pango::WEIGHT_BOLD : Pango::WEIGHT_NORMAL
41
42
  ren_weight(:song => val) #number from 100 to 900, BOLD = 700
42
43
  repaint
43
44
  end
44
45
 
45
- def center__toggled(*argv)
46
+ def center__toggled(*args)
46
47
  val = @builder["center"].active? ? 0.5 : 0
47
48
  col_alignment(:artist => val)
48
49
  repaint
49
50
  end
50
51
 
51
- def editable__toggled(*argv)
52
+ def editable__toggled(*args)
52
53
  ren_editable(!@builder["editable"].active?)
53
54
  end
54
55
 
55
- def digits__toggled(*argv)
56
+ def digits__toggled(*args)
56
57
  val = @builder["digits"].active? ? 1 : 0
57
58
  ren_digits(:quantity => val)
58
59
  repaint
@@ -0,0 +1,195 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.16.1 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.10"/>
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="can_focus">False</property>
7
+ <property name="title" translatable="yes">ListView Demo</property>
8
+ <property name="window_position">center</property>
9
+ <property name="default_width">960</property>
10
+ <child>
11
+ <object class="GtkBox" id="box1">
12
+ <property name="visible">True</property>
13
+ <property name="can_focus">False</property>
14
+ <property name="margin_left">15</property>
15
+ <property name="margin_right">15</property>
16
+ <property name="margin_top">20</property>
17
+ <property name="margin_bottom">20</property>
18
+ <property name="orientation">vertical</property>
19
+ <property name="spacing">15</property>
20
+ <child>
21
+ <object class="GtkLabel" id="label1">
22
+ <property name="visible">True</property>
23
+ <property name="can_focus">False</property>
24
+ <property name="label" translatable="yes">&lt;big&gt;ListView Demo&lt;/big&gt;</property>
25
+ <property name="use_markup">True</property>
26
+ </object>
27
+ <packing>
28
+ <property name="expand">False</property>
29
+ <property name="fill">True</property>
30
+ <property name="position">0</property>
31
+ </packing>
32
+ </child>
33
+ <child>
34
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
35
+ <property name="width_request">800</property>
36
+ <property name="height_request">200</property>
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">False</property>
46
+ <property name="fill">True</property>
47
+ <property name="position">1</property>
48
+ </packing>
49
+ </child>
50
+ <child>
51
+ <object class="GtkGrid" id="grid2">
52
+ <property name="visible">True</property>
53
+ <property name="can_focus">False</property>
54
+ <property name="column_homogeneous">True</property>
55
+ <child>
56
+ <object class="GtkCheckButton" id="invisible">
57
+ <property name="label" translatable="yes">First and Last Name Invisible</property>
58
+ <property name="visible">True</property>
59
+ <property name="can_focus">True</property>
60
+ <property name="receives_default">False</property>
61
+ <property name="xalign">0</property>
62
+ <property name="draw_indicator">True</property>
63
+ </object>
64
+ <packing>
65
+ <property name="left_attach">0</property>
66
+ <property name="top_attach">0</property>
67
+ <property name="width">1</property>
68
+ <property name="height">1</property>
69
+ </packing>
70
+ </child>
71
+ <child>
72
+ <object class="GtkCheckButton" id="xalign">
73
+ <property name="label" translatable="yes">Right Justify Name</property>
74
+ <property name="visible">True</property>
75
+ <property name="can_focus">True</property>
76
+ <property name="receives_default">False</property>
77
+ <property name="xalign">0</property>
78
+ <property name="draw_indicator">True</property>
79
+ </object>
80
+ <packing>
81
+ <property name="left_attach">0</property>
82
+ <property name="top_attach">1</property>
83
+ <property name="width">1</property>
84
+ <property name="height">1</property>
85
+ </packing>
86
+ </child>
87
+ <child>
88
+ <object class="GtkCheckButton" id="bold">
89
+ <property name="label" translatable="yes">Make Song Bold Text</property>
90
+ <property name="visible">True</property>
91
+ <property name="can_focus">True</property>
92
+ <property name="receives_default">False</property>
93
+ <property name="xalign">0</property>
94
+ <property name="draw_indicator">True</property>
95
+ </object>
96
+ <packing>
97
+ <property name="left_attach">0</property>
98
+ <property name="top_attach">2</property>
99
+ <property name="width">1</property>
100
+ <property name="height">1</property>
101
+ </packing>
102
+ </child>
103
+ <child>
104
+ <object class="GtkCheckButton" id="background">
105
+ <property name="label" translatable="yes">Make Song Background Yellow</property>
106
+ <property name="visible">True</property>
107
+ <property name="can_focus">True</property>
108
+ <property name="receives_default">False</property>
109
+ <property name="xalign">0</property>
110
+ <property name="draw_indicator">True</property>
111
+ </object>
112
+ <packing>
113
+ <property name="left_attach">0</property>
114
+ <property name="top_attach">3</property>
115
+ <property name="width">1</property>
116
+ <property name="height">1</property>
117
+ </packing>
118
+ </child>
119
+ <child>
120
+ <object class="GtkCheckButton" id="center">
121
+ <property name="label" translatable="yes">Center Artist Header</property>
122
+ <property name="visible">True</property>
123
+ <property name="can_focus">True</property>
124
+ <property name="receives_default">False</property>
125
+ <property name="xalign">0</property>
126
+ <property name="draw_indicator">True</property>
127
+ </object>
128
+ <packing>
129
+ <property name="left_attach">1</property>
130
+ <property name="top_attach">0</property>
131
+ <property name="width">1</property>
132
+ <property name="height">1</property>
133
+ </packing>
134
+ </child>
135
+ <child>
136
+ <object class="GtkCheckButton" id="editable">
137
+ <property name="label" translatable="yes">Turn Off Editing Cells</property>
138
+ <property name="visible">True</property>
139
+ <property name="can_focus">True</property>
140
+ <property name="receives_default">False</property>
141
+ <property name="xalign">0</property>
142
+ <property name="draw_indicator">True</property>
143
+ </object>
144
+ <packing>
145
+ <property name="left_attach">1</property>
146
+ <property name="top_attach">1</property>
147
+ <property name="width">1</property>
148
+ <property name="height">1</property>
149
+ </packing>
150
+ </child>
151
+ <child>
152
+ <object class="GtkCheckButton" id="radio">
153
+ <property name="label" translatable="yes">Make Ok Boxes Radio Type</property>
154
+ <property name="visible">True</property>
155
+ <property name="can_focus">True</property>
156
+ <property name="receives_default">False</property>
157
+ <property name="margin_top">5</property>
158
+ <property name="margin_bottom">3</property>
159
+ <property name="xalign">0</property>
160
+ <property name="draw_indicator">True</property>
161
+ </object>
162
+ <packing>
163
+ <property name="left_attach">1</property>
164
+ <property name="top_attach">3</property>
165
+ <property name="width">1</property>
166
+ <property name="height">1</property>
167
+ </packing>
168
+ </child>
169
+ <child>
170
+ <object class="GtkCheckButton" id="digits">
171
+ <property name="label" translatable="yes">Show 10ths of Quantity</property>
172
+ <property name="visible">True</property>
173
+ <property name="can_focus">True</property>
174
+ <property name="receives_default">False</property>
175
+ <property name="xalign">0</property>
176
+ <property name="draw_indicator">True</property>
177
+ </object>
178
+ <packing>
179
+ <property name="left_attach">1</property>
180
+ <property name="top_attach">2</property>
181
+ <property name="width">1</property>
182
+ <property name="height">1</property>
183
+ </packing>
184
+ </child>
185
+ </object>
186
+ <packing>
187
+ <property name="expand">False</property>
188
+ <property name="fill">True</property>
189
+ <property name="position">2</property>
190
+ </packing>
191
+ </child>
192
+ </object>
193
+ </child>
194
+ </object>
195
+ </interface>
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # ignore -- this is for development, same as require 'vrlib'
4
+ require File.exists?("./../../vrlib/vrlib.rb") ? "./../../vrlib/vrlib.rb" : "vrlib"
5
+
6
+ # from require_all gem:
7
+ require_rel 'bin/'
8
+
9
+ SongListViewGUI.new.show_glade()
10
+
@@ -0,0 +1,53 @@
1
+ # This is a basic object that contains data. Using visualruby, you can easily
2
+ # load your objects into a listview and manipulate them. You just define one
3
+ # of the colums's type as the object's name (here DataObject) and it will appear in the
4
+ # ListView.
5
+
6
+ class DataObject
7
+
8
+ include GladeGUI
9
+
10
+ def initialize(name, address, email, phone)
11
+ @name = name
12
+ @address = address
13
+ @email = email
14
+ @phone = phone
15
+ end
16
+
17
+ # In the glade form, there are buttons named buttonSave and buttonCancel.
18
+ # By using the naming convention <name>__clicked these methods will be called when the clicked even occurs.
19
+
20
+ def buttonSave__clicked(*args)
21
+ get_glade_variables()
22
+ @builder["window1"].destroy
23
+ end
24
+
25
+
26
+ def buttonCancel__clicked(*args)
27
+ @builder["window1"].destroy
28
+ end
29
+
30
+
31
+ #The to_s method defines how this object appears in the ListView.
32
+ #Think of it like an icon. It should be a short representation
33
+ #of the object. THen when the user clicks on it, they get the full object
34
+
35
+ def to_s
36
+ "#{@name} (#{@email})"
37
+ end
38
+
39
+ #The visual_attributes method defines the appearance of the object in the
40
+ #ListView. You can change the background to red for example to flag the object.
41
+ #Here the invalid emails will be shown with a yellow background. Try entering an invalid
42
+ #email, and you'll see it will turn yellow.
43
+
44
+ def visual_attributes()
45
+ { :background => email_valid? ? "white" : "yellow" }
46
+ end
47
+
48
+ def email_valid?
49
+ @email =~ /\A[\w\._%-]+@[\w\.-]+\.[a-zA-Z]{2,4}\z/
50
+ end
51
+
52
+
53
+ end
@@ -1,8 +1,11 @@
1
-
1
+ # This is a listview that contains objects! THe columns contain a date object, a user defined, and
2
+ # a long (blob) text string. The columns are named :join, :name, and :quote.
2
3
 
3
4
  class ListViewObjects < VR::ListView
4
5
 
5
6
  def initialize()
7
+
8
+ #define column types, then call super()
6
9
  @cols = {}
7
10
  @cols[:join] = VR::CalendarCol
8
11
  @cols[:name] = DataObject
@@ -10,14 +13,14 @@ class ListViewObjects < VR::ListView
10
13
  super(@cols)
11
14
  col_title(:join => "Joined On", :name => "Name (email)", :quote => "Favorite Quote")
12
15
  col_width(:join => 200, :name => 300)
13
- refresh()
16
+ populate_data()
14
17
  end
15
18
 
16
19
 
17
20
 
18
- def refresh() # just populates model with random data
21
+ def populate_data() # just populates model with random data
19
22
  row = add_row()
20
- row[:join] = VR::CalendarCol.new DateTime.new(2011, 1, 15, 7, 23, 0)
23
+ row[:join] = VR::CalendarCol.new DateTime.new(2011, 1, 15, 7, 23, 0)
21
24
  row[:name] = DataObject.new("Henry Johnson", "18458 S Beauford St.", "hohohoja@email.net", "154-453-8585")
22
25
  row[:quote] = VR::TextCol.new "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth.\n\n- Umberto Eco"
23
26
  row = add_row()
@@ -0,0 +1,26 @@
1
+
2
+ # This class just adds a GUI to the ListViewObjects class.
3
+
4
+ class ListViewObjectsGUI < ListViewObjects
5
+
6
+ include GladeGUI
7
+
8
+ def before_show
9
+ @builder["scrolledwindow1"].add(self)
10
+ self.visible = true
11
+ # edited_callback is a method that is called after a cell has been edited. It is
12
+ # used to do housekeeping after the value of the cell has changed.
13
+ renderer(:quote).edited_callback = method(:self__cursor_changed)
14
+ end
15
+
16
+ # When the selection changes, the quote at the bottom of the page needs to be updated.
17
+ # Then the quote matches the selected record. Try it.
18
+
19
+ def self__cursor_changed(*args)
20
+ return unless row = selected_rows.first # iter = selection.selected
21
+ @builder["labelQuote"].label = row[:quote].text
22
+ end
23
+
24
+
25
+ end
26
+
@@ -0,0 +1,196 @@
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="GtkBox" id="box1">
10
+ <property name="visible">True</property>
11
+ <property name="can_focus">False</property>
12
+ <property name="margin_left">20</property>
13
+ <property name="margin_right">20</property>
14
+ <property name="orientation">vertical</property>
15
+ <child>
16
+ <object class="GtkLabel" id="label5">
17
+ <property name="visible">True</property>
18
+ <property name="can_focus">False</property>
19
+ <property name="label" translatable="yes">&lt;big&gt;&lt;big&gt;Basic Object Demo&lt;/big&gt;&lt;/big&gt;
20
+ This was created with visualruby. See visualruby.net.</property>
21
+ <property name="use_markup">True</property>
22
+ <property name="ellipsize">start</property>
23
+ </object>
24
+ <packing>
25
+ <property name="expand">True</property>
26
+ <property name="fill">True</property>
27
+ <property name="padding">15</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_homogeneous">True</property>
36
+ <property name="column_homogeneous">True</property>
37
+ <child>
38
+ <object class="GtkLabel" id="label6">
39
+ <property name="visible">True</property>
40
+ <property name="can_focus">False</property>
41
+ <property name="xalign">1</property>
42
+ <property name="xpad">10</property>
43
+ <property name="label" translatable="yes">Name:</property>
44
+ </object>
45
+ <packing>
46
+ <property name="left_attach">0</property>
47
+ <property name="top_attach">0</property>
48
+ <property name="width">1</property>
49
+ <property name="height">1</property>
50
+ </packing>
51
+ </child>
52
+ <child>
53
+ <object class="GtkLabel" id="label7">
54
+ <property name="visible">True</property>
55
+ <property name="can_focus">False</property>
56
+ <property name="xalign">1</property>
57
+ <property name="xpad">10</property>
58
+ <property name="label" translatable="yes">Address:</property>
59
+ </object>
60
+ <packing>
61
+ <property name="left_attach">0</property>
62
+ <property name="top_attach">1</property>
63
+ <property name="width">1</property>
64
+ <property name="height">1</property>
65
+ </packing>
66
+ </child>
67
+ <child>
68
+ <object class="GtkLabel" id="label8">
69
+ <property name="visible">True</property>
70
+ <property name="can_focus">False</property>
71
+ <property name="xalign">1</property>
72
+ <property name="xpad">10</property>
73
+ <property name="label" translatable="yes">Email:</property>
74
+ </object>
75
+ <packing>
76
+ <property name="left_attach">0</property>
77
+ <property name="top_attach">2</property>
78
+ <property name="width">1</property>
79
+ <property name="height">1</property>
80
+ </packing>
81
+ </child>
82
+ <child>
83
+ <object class="GtkLabel" id="label9">
84
+ <property name="visible">True</property>
85
+ <property name="can_focus">False</property>
86
+ <property name="xalign">1</property>
87
+ <property name="xpad">10</property>
88
+ <property name="label" translatable="yes">Phone:</property>
89
+ </object>
90
+ <packing>
91
+ <property name="left_attach">0</property>
92
+ <property name="top_attach">3</property>
93
+ <property name="width">1</property>
94
+ <property name="height">1</property>
95
+ </packing>
96
+ </child>
97
+ <child>
98
+ <object class="GtkEntry" id="name">
99
+ <property name="visible">True</property>
100
+ <property name="can_focus">True</property>
101
+ </object>
102
+ <packing>
103
+ <property name="left_attach">1</property>
104
+ <property name="top_attach">0</property>
105
+ <property name="width">1</property>
106
+ <property name="height">1</property>
107
+ </packing>
108
+ </child>
109
+ <child>
110
+ <object class="GtkEntry" id="address">
111
+ <property name="visible">True</property>
112
+ <property name="can_focus">True</property>
113
+ </object>
114
+ <packing>
115
+ <property name="left_attach">1</property>
116
+ <property name="top_attach">1</property>
117
+ <property name="width">1</property>
118
+ <property name="height">1</property>
119
+ </packing>
120
+ </child>
121
+ <child>
122
+ <object class="GtkEntry" id="email">
123
+ <property name="visible">True</property>
124
+ <property name="can_focus">True</property>
125
+ </object>
126
+ <packing>
127
+ <property name="left_attach">1</property>
128
+ <property name="top_attach">2</property>
129
+ <property name="width">1</property>
130
+ <property name="height">1</property>
131
+ </packing>
132
+ </child>
133
+ <child>
134
+ <object class="GtkEntry" id="phone">
135
+ <property name="visible">True</property>
136
+ <property name="can_focus">True</property>
137
+ </object>
138
+ <packing>
139
+ <property name="left_attach">1</property>
140
+ <property name="top_attach">3</property>
141
+ <property name="width">1</property>
142
+ <property name="height">1</property>
143
+ </packing>
144
+ </child>
145
+ </object>
146
+ <packing>
147
+ <property name="expand">True</property>
148
+ <property name="fill">True</property>
149
+ <property name="padding">10</property>
150
+ <property name="position">1</property>
151
+ </packing>
152
+ </child>
153
+ <child>
154
+ <object class="GtkButtonBox" id="buttonbox1">
155
+ <property name="visible">True</property>
156
+ <property name="can_focus">False</property>
157
+ <property name="margin_top">15</property>
158
+ <property name="margin_bottom">15</property>
159
+ <property name="layout_style">spread</property>
160
+ <child>
161
+ <object class="GtkButton" id="buttonSave">
162
+ <property name="label" translatable="yes">Save</property>
163
+ <property name="visible">True</property>
164
+ <property name="can_focus">True</property>
165
+ <property name="receives_default">True</property>
166
+ </object>
167
+ <packing>
168
+ <property name="expand">False</property>
169
+ <property name="fill">True</property>
170
+ <property name="position">0</property>
171
+ </packing>
172
+ </child>
173
+ <child>
174
+ <object class="GtkButton" id="buttonCancel">
175
+ <property name="label" translatable="yes">Cancel</property>
176
+ <property name="visible">True</property>
177
+ <property name="can_focus">True</property>
178
+ <property name="receives_default">True</property>
179
+ </object>
180
+ <packing>
181
+ <property name="expand">False</property>
182
+ <property name="fill">True</property>
183
+ <property name="position">1</property>
184
+ </packing>
185
+ </child>
186
+ </object>
187
+ <packing>
188
+ <property name="expand">False</property>
189
+ <property name="fill">True</property>
190
+ <property name="position">2</property>
191
+ </packing>
192
+ </child>
193
+ </object>
194
+ </child>
195
+ </object>
196
+ </interface>