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.
- checksums.yaml +4 -4
- data/Splash.rb +40 -0
- data/bin/editor/VR_Document.rb +81 -74
- data/bin/editor/VR_TabSearch.rb +5 -7
- data/bin/editor/VR_Tabs.rb +57 -36
- data/bin/editor/VR_TextShell.rb +12 -34
- data/bin/editor/VR_TextViewCommon.rb +9 -28
- data/bin/main/NewProjectGUI.rb +14 -13
- data/bin/main/OpenProject.rb +69 -0
- data/bin/main/ProjectChooserView.rb +3 -2
- data/bin/main/ProjectTree.rb +25 -0
- data/bin/main/RubygemsAPI.rb +15 -11
- data/bin/main/VR_ENV.rb +38 -60
- data/bin/main/VR_ENV_GLOBAL.rb +45 -44
- data/bin/main/VR_File_Tree.rb +29 -21
- data/bin/main/VR_Local_Gem_Tree.rb +4 -19
- data/bin/main/VR_Main.rb +128 -144
- data/bin/main/VR_Remote_Gem_Tree.rb +6 -19
- data/bin/main/glade/NewProjectGUI.glade +94 -98
- data/bin/main/glade/OpenProject.glade +259 -0
- data/bin/main/glade/RubygemsAPI.glade +98 -62
- data/bin/main/glade/VR_ENV.glade +46 -55
- data/bin/main/glade/VR_ENV_GLOBAL.glade +251 -180
- data/bin/main/glade/VR_File_Tree.glade +25 -16
- data/bin/main/glade/VR_Local_Gem_Tree.glade +16 -8
- data/bin/main/glade/VR_Main.glade +410 -449
- data/bin/main/glade/VR_Remote_Gem_Tree.glade +33 -31
- data/bin/tools/VR_Tools.rb +60 -46
- data/{visualruby_examples → examples}/active_record/active_record.rb +16 -10
- data/{visualruby_examples → examples}/active_record/bin/ChoosePerson.rb +7 -0
- data/examples/active_record/bin/Person.rb +21 -0
- data/examples/active_record/bin/glade/ChoosePerson.glade +89 -0
- data/examples/active_record/bin/glade/Person.glade +197 -0
- data/{visualruby_examples → examples}/active_record/db/development.sqlite3 +0 -0
- data/{visualruby_examples → examples}/active_record2/bin/CompanyGUI.rb +7 -7
- data/{visualruby_examples → examples}/active_record2/bin/Employee.rb +0 -0
- data/{visualruby_examples → examples}/active_record2/bin/Employer.rb +0 -0
- data/{visualruby_examples → examples}/active_record2/bin/Paycheck.rb +0 -0
- data/examples/active_record2/bin/glade/CompanyGUI.glade +149 -0
- data/examples/active_record2/bin/glade/Employee.glade +126 -0
- data/{visualruby_examples → examples}/active_record2/bin/glade/Employer.glade +0 -0
- data/{visualruby_examples → examples}/active_record2/bin/glade/Paycheck.glade +0 -0
- data/{visualruby_examples → examples}/active_record2/db/development.sqlite3 +0 -0
- data/{visualruby_examples → examples}/active_record2/main.rb +15 -9
- data/examples/alert_box/bin/AlertBoxDemo.rb +80 -0
- data/examples/alert_box/bin/glade/AlertBoxDemo.glade +234 -0
- data/examples/alert_box/main.rb +12 -0
- data/{visualruby_examples → examples}/all_widgets/bin/AllWidgets.rb +18 -10
- data/{visualruby_examples → examples}/all_widgets/bin/glade/AllWidgets.glade +52 -16
- data/{visualruby_examples → examples}/all_widgets/bin/splash.png +0 -0
- data/examples/all_widgets/main.rb +12 -0
- data/{visualruby_examples → examples}/calculator/bin/Calculator.rb +23 -22
- data/{visualruby_examples → examples}/calculator/bin/glade/Calculator.glade +81 -51
- data/examples/calculator/main.rb +13 -0
- data/examples/child_window/bin/ChildWindowDemo.rb +52 -0
- data/examples/child_window/bin/ModalWindow.rb +9 -0
- data/examples/child_window/bin/ModelessWindow.rb +9 -0
- data/examples/child_window/bin/MyChildClass.rb +21 -0
- data/examples/child_window/bin/glade/ChildWindowDemo.glade +87 -0
- data/examples/child_window/bin/glade/ModalWindow.glade +61 -0
- data/examples/child_window/bin/glade/ModelessWindow.glade +61 -0
- data/{visualruby_examples → examples}/child_window/bin/glade/MyChildClass.glade +14 -12
- data/examples/child_window/main.rb +12 -0
- data/{visualruby_examples → examples}/drag_drop/bin/DragDropDemo.rb +9 -10
- data/examples/drag_drop/bin/glade/DragDropDemo.glade +161 -0
- data/{visualruby_examples → examples}/drag_drop/img/folder.png +0 -0
- data/{visualruby_examples → examples}/drag_drop/img/glade.png +0 -0
- data/{visualruby_examples → examples}/drag_drop/img/gtk-edit.png +0 -0
- data/{visualruby_examples → examples}/drag_drop/img/obj.png +0 -0
- data/{visualruby_examples → examples}/drag_drop/img/png.png +0 -0
- data/{visualruby_examples → examples}/drag_drop/img/rb.png +0 -0
- data/{visualruby_examples → examples}/drag_drop/img/ruby.png +0 -0
- data/{visualruby_examples → examples}/drag_drop/img/unknown.png +0 -0
- data/examples/drag_drop/main.rb +11 -0
- data/examples/filetreeview/bin/ProjectTree.rb +32 -0
- data/examples/filetreeview/bin/ProjectTreeGUI.rb +28 -0
- data/examples/filetreeview/bin/glade/ProjectTreeGUI.glade +156 -0
- data/examples/filetreeview/main.rb +13 -0
- data/{visualruby_examples → examples}/listview/bin/SongListView.rb +24 -20
- data/{visualruby_examples → examples}/listview/bin/SongListViewGUI.rb +12 -11
- data/{visualruby_examples → examples}/listview/bin/audio-x-generic.png +0 -0
- data/examples/listview/bin/glade/SongListViewGUI.glade +195 -0
- data/examples/listview/main.rb +10 -0
- data/examples/listview_objects/bin/DataObject.rb +53 -0
- data/{visualruby_examples → examples}/listview_objects/bin/ListViewObjects.rb +7 -4
- data/examples/listview_objects/bin/ListViewObjectsGUI.rb +26 -0
- data/examples/listview_objects/bin/glade/DataObject.glade +196 -0
- data/examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +87 -0
- data/examples/listview_objects/main.rb +12 -0
- data/examples/settings_file/bin/MainApp.rb +38 -0
- data/examples/settings_file/bin/SavableSettings.rb +39 -0
- data/examples/settings_file/bin/glade/MainApp.glade +87 -0
- data/examples/settings_file/bin/glade/SavableSettings.glade +162 -0
- data/examples/settings_file/main.rb +14 -0
- data/examples/settings_file/settings.yaml +15 -0
- data/examples/simple_ruby_gui/bin/DataObjectGUI.rb +21 -0
- data/examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +195 -0
- data/examples/simple_ruby_gui/main.rb +16 -0
- data/{visualruby_examples → examples}/treeview/bin/MyClass.rb +1 -5
- data/examples/treeview/bin/glade/MyClass.glade +24 -0
- data/examples/treeview/main.rb +13 -0
- data/skeleton/document/New.glade +3 -4
- data/skeleton/document/NewWindow.rb +1 -1
- data/skeleton/project/bin/MyClass.rb +2 -2
- data/skeleton/project/bin/glade/MyClass.glade +12 -26
- data/skeleton/project/main.rb +4 -8
- data/vr +41 -37
- data/vrlib/lib/Alert.rb +67 -0
- data/vrlib/lib/DragDrop.rb +90 -0
- data/vrlib/lib/GladeGUI.rb +433 -0
- data/vrlib/lib/IconHash.rb +18 -0
- data/vrlib/lib/SavableClass.rb +56 -0
- data/vrlib/lib/SimpleComboBoxEntry.rb +8 -0
- data/vrlib/lib/glade/Alert.glade +119 -0
- data/vrlib/lib/treeview/FileTreeView.rb +113 -0
- data/vrlib/lib/treeview/IterMethods.rb +82 -0
- data/vrlib/lib/treeview/ListView.rb +85 -0
- data/vrlib/lib/treeview/TreeView.rb +43 -0
- data/vrlib/lib/treeview/ViewCommon.rb +370 -0
- data/vrlib/lib/treeview/columns/CalendarCol.rb +89 -0
- data/vrlib/lib/treeview/columns/CellRendererCombo.rb +66 -0
- data/vrlib/lib/treeview/columns/CellRendererDate.rb +45 -0
- data/vrlib/lib/treeview/columns/CellRendererObject.rb +57 -0
- data/vrlib/lib/treeview/columns/CellRendererPhone.rb +45 -0
- data/vrlib/lib/treeview/columns/CellRendererPixbuf.rb +16 -0
- data/vrlib/lib/treeview/columns/CellRendererProgress.rb +17 -0
- data/vrlib/lib/treeview/columns/CellRendererSpin.rb +37 -0
- data/vrlib/lib/treeview/columns/CellRendererText.rb +38 -0
- data/vrlib/lib/treeview/columns/CellRendererToggle.rb +47 -0
- data/vrlib/lib/treeview/columns/ComboCol.rb +43 -0
- data/vrlib/lib/treeview/columns/CurrencyCol.rb +23 -0
- data/vrlib/lib/treeview/columns/DateCol.rb +20 -0
- data/vrlib/lib/treeview/columns/ImageCol.rb +27 -0
- data/vrlib/lib/treeview/columns/ProgressCol.rb +27 -0
- data/vrlib/lib/treeview/columns/SpinCol.rb +11 -0
- data/vrlib/lib/treeview/columns/TextCol.rb +65 -0
- data/vrlib/lib/treeview/columns/TreeViewColumn.rb +93 -0
- data/{bin/main/glade/ProjectChooserGUI.glade → vrlib/lib/treeview/columns/glade/CalendarCol.glade} +71 -63
- data/{bin/main/glade/Splash.glade → vrlib/lib/treeview/columns/glade/ImageCol.glade} +5 -6
- data/vrlib/lib/treeview/columns/glade/TextCol.glade +82 -0
- data/vrlib/rdoc_replace.yaml +77 -0
- data/vrlib/vrlib.rb +7 -0
- metadata +163 -136
- data/bin/editor/glade/VR_Document.glade +0 -160
- data/bin/main/ProjectChooserGUI.rb +0 -41
- data/bin/main/Splash.rb +0 -22
- data/visualruby_examples/active_record/.vr_settings.yaml +0 -47
- data/visualruby_examples/active_record/bin/Person.rb +0 -13
- data/visualruby_examples/active_record/bin/glade/ChoosePerson.glade +0 -61
- data/visualruby_examples/active_record/bin/glade/Person.glade +0 -148
- data/visualruby_examples/active_record2/.vr_settings.yaml +0 -16
- data/visualruby_examples/active_record2/bin/glade/CompanyGUI.glade +0 -167
- data/visualruby_examples/active_record2/bin/glade/Employee.glade +0 -123
- data/visualruby_examples/all_widgets/.vr_settings.yaml +0 -13
- data/visualruby_examples/all_widgets/main.rb +0 -14
- data/visualruby_examples/calculator/.vr_settings.yaml +0 -11
- data/visualruby_examples/calculator/main.rb +0 -13
- data/visualruby_examples/child_window/.vr_settings.yaml +0 -16
- data/visualruby_examples/child_window/bin/ChildWindowDemo.rb +0 -39
- data/visualruby_examples/child_window/bin/MyChildClass.rb +0 -40
- data/visualruby_examples/child_window/bin/glade/ChildWindowDemo.glade +0 -101
- data/visualruby_examples/child_window/main.rb +0 -13
- data/visualruby_examples/drag_drop/.vr_settings.yaml +0 -12
- data/visualruby_examples/drag_drop/bin/glade/DragDropDemo.glade +0 -143
- data/visualruby_examples/drag_drop/main.rb +0 -14
- data/visualruby_examples/listview/.vr_settings.yaml +0 -12
- data/visualruby_examples/listview/bin/glade/SongListViewGUI.glade +0 -220
- data/visualruby_examples/listview/main.rb +0 -19
- data/visualruby_examples/listview_objects/.vr_settings.yaml +0 -16
- data/visualruby_examples/listview_objects/bin/DataObject.rb +0 -32
- data/visualruby_examples/listview_objects/bin/DataObjectGUI.rb +0 -41
- data/visualruby_examples/listview_objects/bin/ListViewObjectsGUI.rb +0 -18
- data/visualruby_examples/listview_objects/bin/glade/DataObject.glade +0 -198
- data/visualruby_examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +0 -102
- data/visualruby_examples/listview_objects/main.rb +0 -13
- data/visualruby_examples/simple_ruby_gui/.vr_settings.yaml +0 -16
- data/visualruby_examples/simple_ruby_gui/bin/DataObjectGUI.rb +0 -20
- data/visualruby_examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +0 -163
- data/visualruby_examples/simple_ruby_gui/main.rb +0 -16
- data/visualruby_examples/treeview/.vr_settings.yaml +0 -12
- data/visualruby_examples/treeview/bin/glade/MyClass.glade +0 -48
- 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="
|
|
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
|
-
<
|
|
8
|
+
<property name="window_position">center</property>
|
|
11
9
|
<child>
|
|
12
|
-
<object class="
|
|
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="
|
|
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="
|
|
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">
|
|
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">
|
|
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
|
-
@
|
|
8
|
-
@
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
@view
|
|
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.
|
|
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"><b>Instructions</b></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>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -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"><big>FileTreeView Demo</big></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
|
-
|
|
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(:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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
|