visualruby 1.0.19 → 3.0.2

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 (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
@@ -1,19 +1,22 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.18.3 -->
2
3
  <interface>
3
- <requires lib="gtk+" version="2.16"/>
4
- <!-- interface-naming-policy project-wide -->
4
+ <requires lib="gtk+" version="3.0"/>
5
5
  <object class="GtkWindow" id="window1">
6
- <property name="visible">True</property>
7
6
  <property name="can_focus">False</property>
8
- <property name="title" translatable="yes">Title</property>
9
7
  <property name="modal">True</property>
10
- <signal name="destroy" handler="destroy_window" swapped="no"/>
8
+ <property name="window_position">center</property>
11
9
  <child>
12
- <object class="GtkVBox" id="vbox1">
10
+ <object class="GtkBox" id="box1">
13
11
  <property name="visible">True</property>
14
12
  <property name="can_focus">False</property>
13
+ <property name="margin_left">30</property>
14
+ <property name="margin_right">30</property>
15
+ <property name="margin_top">30</property>
16
+ <property name="margin_bottom">30</property>
17
+ <property name="orientation">vertical</property>
15
18
  <child>
16
- <object class="GtkLabel" id="label1">
19
+ <object class="GtkLabel" id="labelMessage">
17
20
  <property name="visible">True</property>
18
21
  <property name="can_focus">False</property>
19
22
  <property name="xpad">80</property>
@@ -27,28 +30,27 @@
27
30
  </packing>
28
31
  </child>
29
32
  <child>
30
- <object class="GtkHButtonBox" id="hbuttonbox1">
33
+ <object class="GtkButtonBox" id="buttonbox1">
31
34
  <property name="visible">True</property>
32
35
  <property name="can_focus">False</property>
36
+ <property name="layout_style">spread</property>
33
37
  <child>
34
38
  <object class="GtkButton" id="buttonCancel">
35
39
  <property name="label" translatable="yes">Cancel</property>
36
40
  <property name="visible">True</property>
37
41
  <property name="can_focus">True</property>
38
42
  <property name="receives_default">True</property>
39
- <property name="use_action_appearance">False</property>
40
43
  </object>
41
44
  <packing>
42
45
  <property name="expand">False</property>
43
- <property name="fill">False</property>
46
+ <property name="fill">True</property>
44
47
  <property name="position">0</property>
45
48
  </packing>
46
49
  </child>
47
50
  </object>
48
51
  <packing>
49
- <property name="expand">True</property>
52
+ <property name="expand">False</property>
50
53
  <property name="fill">True</property>
51
- <property name="padding">10</property>
52
54
  <property name="position">1</property>
53
55
  </packing>
54
56
  </child>
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/ruby
2
+
3
+ #Updated for Gtk3!
4
+
5
+ # ignore -- this is for development, same as require 'vrlib'
6
+ require File.exists?("./../../vrlib/vrlib.rb") ? "./../../vrlib/vrlib.rb" : "vrlib"
7
+
8
+ # from require_all gem:
9
+ require_rel 'bin/'
10
+
11
+ ChildWindowDemo.new.show_glade()
12
+
@@ -4,14 +4,13 @@ class DragDropDemo
4
4
  include GladeGUI
5
5
 
6
6
  def before_show()
7
- @treeview1 = "I'm a widget named textview2.\n\nTry dragging a file or the button onto me."
8
- @view = VR::FileTreeView.new("./img")
7
+ @window1 = "Drag and Drop Demo"
8
+ @textview1 = "I'm a widget named textview1.\n\nTry dragging a file or the button onto me."
9
+ @view = VR::FileTreeView.new(Dir.pwd,"./img")
9
10
  @view.refresh()
10
- @builder["scrolledwindow1"].add(@view)
11
- @view.drag_to(@builder["textview1"])
12
- @view.drag_to(@builder["button1"])
13
- drag_to(@builder["button1"], @builder["textview1"])
14
- drag_to(@builder["textview1"], @builder["button1"])
11
+ @view.expand_row(@view.model.iter_first.path, false)
12
+ @builder["scrolledwindow1"].add(@view)
13
+ set_drag_drop("button1" => "textview1", @view => "textview1", "textview1" => "button1")
15
14
  end
16
15
 
17
16
 
@@ -19,7 +18,7 @@ class DragDropDemo
19
18
  # receives a drag_drop signal, an instance variable named dragged_widget is set automatically set
20
19
  # by visualruby containing a reference to the dragged widget:
21
20
 
22
- def button1__drag_drop(*args)
21
+ def button1__drag_drop(widget, *args)
23
22
  but1 = @builder["button1"]
24
23
  if but1.dragged_widget.is_a?(Gtk::TextView)
25
24
  but1.label = but1.dragged_widget.buffer.text.slice(0,15)
@@ -28,11 +27,11 @@ class DragDropDemo
28
27
  end
29
28
  end
30
29
 
31
- def textview1__drag_drop(*args)
30
+ def textview1__drag_drop(widget, context, *args)
32
31
  tv1 = @builder["textview1"]
33
32
  if tv1.dragged_widget == @view
34
33
  path = @view.get_selected_path()
35
- tv1.buffer.text = File.directory?(path) ? path : File.read(path)
34
+ tv1.buffer.text = File.basename(path)
36
35
  elsif tv1.dragged_widget.is_a?(Gtk::Button)
37
36
  tv1.buffer.text = tv1.dragged_widget.label
38
37
  end
@@ -0,0 +1,161 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.18.3 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.0"/>
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="width_request">650</property>
7
+ <property name="height_request">500</property>
8
+ <property name="can_focus">False</property>
9
+ <property name="window_position">center</property>
10
+ <property name="default_width">650</property>
11
+ <property name="default_height">500</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="vexpand">True</property>
21
+ <property name="orientation">vertical</property>
22
+ <property name="spacing">10</property>
23
+ <child>
24
+ <object class="GtkFrame" id="frame1">
25
+ <property name="width_request">520</property>
26
+ <property name="visible">True</property>
27
+ <property name="can_focus">False</property>
28
+ <property name="label_xalign">0</property>
29
+ <property name="shadow_type">in</property>
30
+ <child>
31
+ <object class="GtkAlignment" id="alignment1">
32
+ <property name="visible">True</property>
33
+ <property name="can_focus">False</property>
34
+ <property name="top_padding">12</property>
35
+ <property name="bottom_padding">13</property>
36
+ <property name="left_padding">13</property>
37
+ <property name="right_padding">13</property>
38
+ <child>
39
+ <object class="GtkLabel" id="label2">
40
+ <property name="width_request">600</property>
41
+ <property name="visible">True</property>
42
+ <property name="can_focus">False</property>
43
+ <property name="label" translatable="yes">With visualruby, you can drag-n-drop any widget onto another widget. Try dragging files or the button onto the textview in the middle of the screen. Also, try dragging between the textview and the button.</property>
44
+ <property name="wrap">True</property>
45
+ <property name="xalign">0</property>
46
+ <property name="yalign">0</property>
47
+ </object>
48
+ </child>
49
+ </object>
50
+ </child>
51
+ <child type="label">
52
+ <object class="GtkLabel" id="label1">
53
+ <property name="visible">True</property>
54
+ <property name="can_focus">False</property>
55
+ <property name="label" translatable="yes">&lt;b&gt;Instructions&lt;/b&gt;</property>
56
+ <property name="use_markup">True</property>
57
+ </object>
58
+ </child>
59
+ </object>
60
+ <packing>
61
+ <property name="expand">False</property>
62
+ <property name="fill">False</property>
63
+ <property name="padding">5</property>
64
+ <property name="position">0</property>
65
+ </packing>
66
+ </child>
67
+ <child>
68
+ <object class="GtkBox" id="box2">
69
+ <property name="visible">True</property>
70
+ <property name="can_focus">False</property>
71
+ <property name="spacing">17</property>
72
+ <child>
73
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
74
+ <property name="visible">True</property>
75
+ <property name="can_focus">True</property>
76
+ <property name="margin_top">5</property>
77
+ <property name="hexpand">True</property>
78
+ <property name="vexpand">True</property>
79
+ <property name="shadow_type">in</property>
80
+ <child>
81
+ <placeholder/>
82
+ </child>
83
+ </object>
84
+ <packing>
85
+ <property name="expand">False</property>
86
+ <property name="fill">True</property>
87
+ <property name="position">0</property>
88
+ </packing>
89
+ </child>
90
+ <child>
91
+ <object class="GtkFrame" id="frame2">
92
+ <property name="visible">True</property>
93
+ <property name="can_focus">False</property>
94
+ <property name="label_xalign">0</property>
95
+ <property name="shadow_type">etched-out</property>
96
+ <child>
97
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
98
+ <property name="visible">True</property>
99
+ <property name="can_focus">True</property>
100
+ <property name="shadow_type">in</property>
101
+ <child>
102
+ <object class="GtkTextView" id="textview1">
103
+ <property name="visible">True</property>
104
+ <property name="can_focus">True</property>
105
+ </object>
106
+ </child>
107
+ </object>
108
+ </child>
109
+ <child type="label">
110
+ <object class="GtkLabel" id="label3">
111
+ <property name="visible">True</property>
112
+ <property name="can_focus">False</property>
113
+ <property name="label" translatable="yes">textview1 </property>
114
+ </object>
115
+ </child>
116
+ </object>
117
+ <packing>
118
+ <property name="expand">True</property>
119
+ <property name="fill">True</property>
120
+ <property name="padding">10</property>
121
+ <property name="position">1</property>
122
+ </packing>
123
+ </child>
124
+ <child>
125
+ <object class="GtkButtonBox" id="buttonbox1">
126
+ <property name="visible">True</property>
127
+ <property name="can_focus">False</property>
128
+ <property name="orientation">vertical</property>
129
+ <property name="layout_style">spread</property>
130
+ <child>
131
+ <object class="GtkButton" id="button1">
132
+ <property name="label" translatable="yes">button1</property>
133
+ <property name="visible">True</property>
134
+ <property name="can_focus">True</property>
135
+ <property name="receives_default">True</property>
136
+ <property name="yalign">0.63999998569488525</property>
137
+ </object>
138
+ <packing>
139
+ <property name="expand">True</property>
140
+ <property name="fill">True</property>
141
+ <property name="position">0</property>
142
+ </packing>
143
+ </child>
144
+ </object>
145
+ <packing>
146
+ <property name="expand">False</property>
147
+ <property name="fill">True</property>
148
+ <property name="position">2</property>
149
+ </packing>
150
+ </child>
151
+ </object>
152
+ <packing>
153
+ <property name="expand">True</property>
154
+ <property name="fill">True</property>
155
+ <property name="position">1</property>
156
+ </packing>
157
+ </child>
158
+ </object>
159
+ </child>
160
+ </object>
161
+ </interface>
@@ -0,0 +1,11 @@
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
+
10
+ DragDropDemo.new.show_glade()
11
+
@@ -0,0 +1,32 @@
1
+
2
+ class ProjectTree < VR::FileTreeView #(change name)
3
+
4
+ attr_accessor :ftv
5
+
6
+ include GladeGUI
7
+
8
+ def initialize()
9
+ path = File.join(ENV["HOME"], "visualruby")
10
+ super(path, "/home/eric/vrp/vr3/img")
11
+ @test_block = proc { |folder| has_settings_file?(folder) }
12
+ end
13
+
14
+ def self__row_activated(_self, path, col)
15
+ row = vr_row(get_iter(path))
16
+ if File.exists?(File.join(row[:path], ".vr_settings.yaml")) #test if its a vr project.
17
+ alert "You selected: \n\n" + row[:file_name]
18
+ else
19
+ expand_or_collapse_folder()
20
+ end
21
+ end
22
+
23
+ def has_settings_file?(path)
24
+ Find.find(path) do |file|
25
+ if File.basename(file) == ".vr_settings.yaml"
26
+ return true
27
+ end
28
+ end
29
+ return false
30
+ end
31
+
32
+ end
@@ -0,0 +1,28 @@
1
+
2
+ class ProjectTreeGUI #(change name)
3
+
4
+ attr_accessor :ftv
5
+
6
+ include GladeGUI
7
+
8
+ def before_show()
9
+ @ftv = ProjectTree.new()
10
+ @builder["scrolledwindow1"].add(@ftv) #needs show_all
11
+ @open_folders = []
12
+ end
13
+
14
+ def show_expanders__toggled(*a)
15
+ @ftv.set_show_expanders(@builder[:show_expanders].active?)
16
+ end
17
+
18
+ def save_state__clicked(*a)
19
+ @open_folders = @ftv.get_open_folders()
20
+ alert("Saving folders: " + @open_folders.to_s, :parent=>self)
21
+ end
22
+
23
+ def load_state__clicked(*a)
24
+ @ftv.refresh( :open_folders => @open_folders )
25
+ end
26
+
27
+ end
28
+
@@ -0,0 +1,156 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.18.3 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.0"/>
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">FileTreeView Demo</property>
9
+ <property name="modal">True</property>
10
+ <property name="window_position">center</property>
11
+ <property name="default_width">400</property>
12
+ <property name="default_height">600</property>
13
+ <child>
14
+ <object class="GtkBox" id="box1">
15
+ <property name="visible">True</property>
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
+ <property name="orientation">vertical</property>
22
+ <property name="spacing">10</property>
23
+ <child>
24
+ <object class="GtkLabel" id="label1">
25
+ <property name="visible">True</property>
26
+ <property name="can_focus">False</property>
27
+ <property name="label" translatable="yes">&lt;big&gt;FileTreeView Demo&lt;/big&gt;</property>
28
+ <property name="use_markup">True</property>
29
+ </object>
30
+ <packing>
31
+ <property name="expand">False</property>
32
+ <property name="fill">True</property>
33
+ <property name="position">0</property>
34
+ </packing>
35
+ </child>
36
+ <child>
37
+ <object class="GtkFrame" id="frame1">
38
+ <property name="visible">True</property>
39
+ <property name="can_focus">False</property>
40
+ <property name="label_xalign">0</property>
41
+ <property name="shadow_type">in</property>
42
+ <child>
43
+ <object class="GtkAlignment" id="alignment1">
44
+ <property name="visible">True</property>
45
+ <property name="can_focus">False</property>
46
+ <property name="left_padding">12</property>
47
+ <child>
48
+ <object class="GtkLabel" id="label3">
49
+ <property name="visible">True</property>
50
+ <property name="can_focus">False</property>
51
+ <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.</property>
52
+ <property name="wrap">True</property>
53
+ </object>
54
+ </child>
55
+ </object>
56
+ </child>
57
+ <child type="label">
58
+ <object class="GtkLabel" id="label2">
59
+ <property name="visible">True</property>
60
+ <property name="can_focus">False</property>
61
+ <property name="label" translatable="yes">Instructions</property>
62
+ </object>
63
+ </child>
64
+ </object>
65
+ <packing>
66
+ <property name="expand">False</property>
67
+ <property name="fill">True</property>
68
+ <property name="position">1</property>
69
+ </packing>
70
+ </child>
71
+ <child>
72
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
73
+ <property name="visible">True</property>
74
+ <property name="can_focus">True</property>
75
+ <property name="margin_top">8</property>
76
+ <property name="margin_bottom">8</property>
77
+ <property name="vexpand">True</property>
78
+ <property name="shadow_type">in</property>
79
+ <child>
80
+ <placeholder/>
81
+ </child>
82
+ </object>
83
+ <packing>
84
+ <property name="expand">False</property>
85
+ <property name="fill">True</property>
86
+ <property name="position">2</property>
87
+ </packing>
88
+ </child>
89
+ <child>
90
+ <object class="GtkBox" id="box2">
91
+ <property name="visible">True</property>
92
+ <property name="can_focus">False</property>
93
+ <child>
94
+ <object class="GtkCheckButton" id="show_expanders">
95
+ <property name="label" translatable="yes">Show Expanders</property>
96
+ <property name="visible">True</property>
97
+ <property name="can_focus">True</property>
98
+ <property name="receives_default">False</property>
99
+ <property name="xalign">0</property>
100
+ <property name="draw_indicator">True</property>
101
+ </object>
102
+ <packing>
103
+ <property name="expand">False</property>
104
+ <property name="fill">True</property>
105
+ <property name="position">0</property>
106
+ </packing>
107
+ </child>
108
+ <child>
109
+ <object class="GtkButtonBox" id="buttonbox1">
110
+ <property name="visible">True</property>
111
+ <property name="can_focus">False</property>
112
+ <property name="layout_style">spread</property>
113
+ <child>
114
+ <object class="GtkButton" id="load_state">
115
+ <property name="label" translatable="yes">Load State</property>
116
+ <property name="visible">True</property>
117
+ <property name="can_focus">True</property>
118
+ <property name="receives_default">True</property>
119
+ </object>
120
+ <packing>
121
+ <property name="expand">True</property>
122
+ <property name="fill">True</property>
123
+ <property name="position">0</property>
124
+ </packing>
125
+ </child>
126
+ <child>
127
+ <object class="GtkButton" id="save_state">
128
+ <property name="label" translatable="yes">Save State</property>
129
+ <property name="visible">True</property>
130
+ <property name="can_focus">True</property>
131
+ <property name="receives_default">True</property>
132
+ </object>
133
+ <packing>
134
+ <property name="expand">True</property>
135
+ <property name="fill">True</property>
136
+ <property name="position">1</property>
137
+ </packing>
138
+ </child>
139
+ </object>
140
+ <packing>
141
+ <property name="expand">True</property>
142
+ <property name="fill">True</property>
143
+ <property name="position">1</property>
144
+ </packing>
145
+ </child>
146
+ </object>
147
+ <packing>
148
+ <property name="expand">False</property>
149
+ <property name="fill">True</property>
150
+ <property name="position">3</property>
151
+ </packing>
152
+ </child>
153
+ </object>
154
+ </child>
155
+ </object>
156
+ </interface>
@@ -0,0 +1,13 @@
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
+ require 'find'
6
+
7
+
8
+ # from require_all gem:
9
+ require_rel 'bin/'
10
+
11
+
12
+ ProjectTreeGUI.new.show_glade()
13
+
@@ -14,24 +14,26 @@ class SongListView < VR::ListView
14
14
  def initialize
15
15
  @cols = {}
16
16
  @cols[:pix] = {:pix => Gdk::Pixbuf, :song => String } #two renderers in this column
17
- @cols[:date] = DateTime
17
+ @cols[:date] = VR::CalendarCol # DateTime
18
18
  @cols[:artist] = String
19
19
  @cols[:first_name] = String
20
20
  @cols[:last_name] = String
21
21
  @cols[:popular] = VR::ProgressCol
22
22
  @cols[:buy] = VR::ComboCol
23
23
  @cols[:quantity] = VR::SpinCol
24
- @cols[:price] = VR::CurrencyCol
24
+ @cols[:price] = VR::CurrencyCol
25
25
  @cols[:check] = TrueClass
26
26
  super(@cols)
27
27
 
28
28
  col_sort_column_id(:artist => id(:last_name), :song => id(:song), :first_name=> id(:first_name))
29
+ col_sort_column_id(:last_name => id(:last_name), :popular => id(:popular))
29
30
  col_sort_column_id(:last_name => id(:last_name), :popular => id(:popular), :buy=> id(:buy))
30
- col_sort_column_id(:quantity => id(:quantity), :price => id(:price), :check => id(:check), :date => id(:date))
31
-
32
- col_title(:first_name => "First", :last_name => "Last", :quantity => "Qty", :check => "Ok")
33
- ren_width(:buy => 70, :popular => 80, :quantity => 40)
34
- ren_attr(:price, :edit_inline => true)
31
+ col_sort_column_id(:check => id(:check), :date => id(:date))
32
+ col_sort_column_id(:price => id(:price), :check => id(:check), :date => id(:date))
33
+ col_sort_column_id(:quantity => id(:quantity))
34
+ col_title(:first_name => "First", :last_name => "Last", :check => "Ok", :quantity => "Qty")
35
+ ren_width(:popular => 80, :check=> 20, :buy => 80, :quantity=>90)
36
+ # ren_attr(:price, :edit_inline => true)
35
37
  ren_editable(true)
36
38
 
37
39
  # this block executes after ARTIST is edited ("edited" event).
@@ -46,30 +48,32 @@ class SongListView < VR::ListView
46
48
  if text.split.size == 2 # insist on two names
47
49
  true
48
50
  else
49
- VR::Dialog.message_box("You must enter two names.")
51
+ alert("You must enter two names.", :parent => self)
50
52
  false
51
53
  end
52
54
  }
53
55
  refresh()
56
+ self.visible = true
54
57
  end
55
58
 
56
59
  # this just loads the data into the model
57
60
  def refresh()
58
61
  data = get_data() # returns array of songs
59
62
  (0..6).each do |i|
60
- row = add_row()
61
- row[:pix] = AUDIO_ICON
62
- row[:first_name] = data[i][0]
63
- row[:last_name] = data[i][1]
64
- row[:artist] = row[:first_name] + " " + row[:last_name]
65
- row[:song] = data[i][2]
66
- row[:quantity] = VR::SpinCol.new(0,0,100,1)
67
- row[:price] = VR::CurrencyCol.new(2.99)
68
- row[:popular] = data[i][3]
69
- row[:buy] = VR::ComboCol.new("Buy", "Buy", "Rent", "Listen") # all rows use the same combobox
70
- row[:check] = false
71
- row[:date] = data[i][4]
63
+ row = model.append # add_row()
64
+ row[id(:pix)] = AUDIO_ICON
65
+ row[id(:first_name)] = data[i][0]
66
+ row[id(:last_name)] = data[i][1]
67
+ row[id(:artist)] = row[id(:first_name)] + " " + row[id(:last_name)]
68
+ row[id(:song)] = data[i][2]
69
+ row[id(:quantity)] = VR::SpinCol.new(0,0,100,1) # Gtk::Adjustment.new(0,0,100,1,0,0) #
70
+ row[id(:price)] = VR::CurrencyCol.new(2.99)
71
+ row[id(:popular)] = data[i][3]
72
+ row[id(:buy)] = VR::ComboCol.new("Buy", "Buy", "Rent", "Listen") # all rows use the same combobox
73
+ row[id(:check)] = false
74
+ row[id(:date)] = VR::CalendarCol.new(data[i][4], :format => "%d %b %Y ", :hide_time=>true, :hide_date => false)
72
75
  end
76
+
73
77
  end
74
78
 
75
79
  def get_data