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
@@ -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