visualruby 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/bin/editor/VR_Document.rb +219 -0
  3. data/bin/editor/VR_TabSearch.rb +50 -0
  4. data/bin/editor/VR_Tabs.rb +99 -0
  5. data/bin/editor/VR_TextShell.rb +83 -0
  6. data/bin/editor/VR_TextViewCommon.rb +65 -0
  7. data/bin/editor/glade/VR_Document.glade +160 -0
  8. data/bin/main/GemTree.rb +23 -0
  9. data/bin/main/NewProjectGUI.rb +28 -0
  10. data/bin/main/ProjectChooserGUI.rb +41 -0
  11. data/bin/main/ProjectChooserView.rb +39 -0
  12. data/bin/main/RubygemsAPI.rb +93 -0
  13. data/bin/main/Splash.rb +22 -0
  14. data/bin/main/VR_ENV.rb +61 -0
  15. data/bin/main/VR_ENV_GLOBAL.rb +64 -0
  16. data/bin/main/VR_File_Tree.rb +120 -0
  17. data/bin/main/VR_Local_Gem_Tree.rb +80 -0
  18. data/bin/main/VR_Main.rb +313 -0
  19. data/bin/main/VR_Remote_Gem_Tree.rb +70 -0
  20. data/bin/main/glade/NewProjectGUI.glade +141 -0
  21. data/bin/main/glade/ProjectChooserGUI.glade +140 -0
  22. data/bin/main/glade/RubygemsAPI.glade +130 -0
  23. data/bin/main/glade/Splash.glade +18 -0
  24. data/bin/main/glade/VR_ENV.glade +168 -0
  25. data/bin/main/glade/VR_ENV_GLOBAL.glade +268 -0
  26. data/bin/main/glade/VR_File_Tree.glade +65 -0
  27. data/bin/main/glade/VR_Local_Gem_Tree.glade +45 -0
  28. data/bin/main/glade/VR_Main.glade +707 -0
  29. data/bin/main/glade/VR_Remote_Gem_Tree.glade +76 -0
  30. data/bin/tools/VR_Tools.rb +120 -0
  31. data/img/close.png +0 -0
  32. data/img/folder.png +0 -0
  33. data/img/glade.png +0 -0
  34. data/img/gtk-edit.png +0 -0
  35. data/img/obj.png +0 -0
  36. data/img/png.png +0 -0
  37. data/img/rb.png +0 -0
  38. data/img/ruby.png +0 -0
  39. data/img/splash.png +0 -0
  40. data/img/unknown.png +0 -0
  41. data/skeleton/document/New.glade +13 -0
  42. data/skeleton/document/NewWindow.rb +15 -0
  43. data/skeleton/project/bin/MyClass.rb +15 -0
  44. data/skeleton/project/bin/glade/MyClass.glade +45 -0
  45. data/skeleton/project/main.rb +14 -0
  46. data/visualruby_examples/active_record/.vr_settings.yaml +47 -0
  47. data/visualruby_examples/active_record/active_record.rb +52 -0
  48. data/visualruby_examples/active_record/bin/ChoosePerson.rb +17 -0
  49. data/visualruby_examples/active_record/bin/Person.rb +13 -0
  50. data/visualruby_examples/active_record/bin/glade/ChoosePerson.glade +61 -0
  51. data/visualruby_examples/active_record/bin/glade/Person.glade +148 -0
  52. data/visualruby_examples/active_record/db/development.sqlite3 +0 -0
  53. data/visualruby_examples/active_record2/.vr_settings.yaml +48 -0
  54. data/visualruby_examples/active_record2/active_record2.rb +142 -0
  55. data/visualruby_examples/active_record2/bin/CompanyGUI.rb +54 -0
  56. data/visualruby_examples/active_record2/bin/Employee.rb +20 -0
  57. data/visualruby_examples/active_record2/bin/Employer.rb +11 -0
  58. data/visualruby_examples/active_record2/bin/Paycheck.rb +11 -0
  59. data/visualruby_examples/active_record2/bin/glade/CompanyGUI.glade +167 -0
  60. data/visualruby_examples/active_record2/bin/glade/Employee.glade +123 -0
  61. data/visualruby_examples/active_record2/bin/glade/Employer.glade +147 -0
  62. data/visualruby_examples/active_record2/bin/glade/Paycheck.glade +145 -0
  63. data/visualruby_examples/active_record2/db/development.sqlite3 +0 -0
  64. data/visualruby_examples/all_widgets/.vr_settings.yaml +20 -0
  65. data/visualruby_examples/all_widgets/all_widgets.rb +13 -0
  66. data/visualruby_examples/all_widgets/bin/AllWidgets.rb +43 -0
  67. data/visualruby_examples/all_widgets/bin/glade/AllWidgets.glade +166 -0
  68. data/visualruby_examples/all_widgets/bin/splash.png +0 -0
  69. data/visualruby_examples/calculator/.vr_settings.yaml +21 -0
  70. data/visualruby_examples/calculator/bin/Calculator.rb +63 -0
  71. data/visualruby_examples/calculator/bin/glade/Calculator.glade +243 -0
  72. data/visualruby_examples/calculator/main.rb +13 -0
  73. data/visualruby_examples/child_window/.vr_settings.yaml +46 -0
  74. data/visualruby_examples/child_window/bin/ChildWindowDemo.rb +41 -0
  75. data/visualruby_examples/child_window/bin/MyChildClass.rb +42 -0
  76. data/visualruby_examples/child_window/bin/glade/ChildWindowDemo.glade +101 -0
  77. data/visualruby_examples/child_window/bin/glade/MyChildClass.glade +58 -0
  78. data/visualruby_examples/child_window/main.rb +13 -0
  79. data/visualruby_examples/drag_drop/.vr_settings.yaml +19 -0
  80. data/visualruby_examples/drag_drop/bin/DragDropDemo.rb +45 -0
  81. data/visualruby_examples/drag_drop/bin/glade/DragDropDemo.glade +143 -0
  82. data/visualruby_examples/drag_drop/img/folder.png +0 -0
  83. data/visualruby_examples/drag_drop/img/glade.png +0 -0
  84. data/visualruby_examples/drag_drop/img/gtk-edit.png +0 -0
  85. data/visualruby_examples/drag_drop/img/obj.png +0 -0
  86. data/visualruby_examples/drag_drop/img/png.png +0 -0
  87. data/visualruby_examples/drag_drop/img/rb.png +0 -0
  88. data/visualruby_examples/drag_drop/img/ruby.png +0 -0
  89. data/visualruby_examples/drag_drop/img/unknown.png +0 -0
  90. data/visualruby_examples/drag_drop/main.rb +14 -0
  91. data/visualruby_examples/listview/.vr_settings.yaml +46 -0
  92. data/visualruby_examples/listview/bin/SongListView.rb +89 -0
  93. data/visualruby_examples/listview/bin/SongListViewGUI.rb +67 -0
  94. data/visualruby_examples/listview/bin/audio-x-generic.png +0 -0
  95. data/visualruby_examples/listview/bin/glade/SongListViewGUI.glade +220 -0
  96. data/visualruby_examples/listview/main.rb +19 -0
  97. data/visualruby_examples/listview_objects/.vr_settings.yaml +46 -0
  98. data/visualruby_examples/listview_objects/bin/DataObject.rb +32 -0
  99. data/visualruby_examples/listview_objects/bin/DataObjectGUI.rb +41 -0
  100. data/visualruby_examples/listview_objects/bin/ListViewObjects.rb +34 -0
  101. data/visualruby_examples/listview_objects/bin/ListViewObjectsGUI.rb +18 -0
  102. data/visualruby_examples/listview_objects/bin/glade/DataObject.glade +198 -0
  103. data/visualruby_examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +102 -0
  104. data/visualruby_examples/listview_objects/main.rb +13 -0
  105. data/visualruby_examples/simple_ruby_gui/.vr_settings.yaml +45 -0
  106. data/visualruby_examples/simple_ruby_gui/bin/DataObjectGUI.rb +20 -0
  107. data/visualruby_examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +163 -0
  108. data/visualruby_examples/simple_ruby_gui/simple_ruby_gui +16 -0
  109. data/visualruby_examples/treeview/.vr_settings.yaml +18 -0
  110. data/visualruby_examples/treeview/bin/MyClass.rb +28 -0
  111. data/visualruby_examples/treeview/bin/glade/MyClass.glade +48 -0
  112. data/visualruby_examples/treeview/main.rb +14 -0
  113. data/vr +40 -0
  114. metadata +202 -0
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="visible">True</property>
7
+ <property name="can_focus">False</property>
8
+ <property name="window_position">center-always</property>
9
+ <signal name="destroy" handler="destroy_window" swapped="no"/>
10
+ <child>
11
+ <object class="GtkHBox" id="hbox1">
12
+ <property name="visible">True</property>
13
+ <property name="can_focus">False</property>
14
+ <child>
15
+ <object class="GtkVBox" id="vbox1">
16
+ <property name="visible">True</property>
17
+ <property name="can_focus">False</property>
18
+ <child>
19
+ <object class="GtkLabel" id="label1">
20
+ <property name="visible">True</property>
21
+ <property name="can_focus">False</property>
22
+ <property name="xpad">10</property>
23
+ <property name="ypad">10</property>
24
+ <property name="label" translatable="yes">Open as many child windows as you want.
25
+ You can switch between windows because they're not modal.
26
+ Then click the close button, to close everything.</property>
27
+ </object>
28
+ <packing>
29
+ <property name="expand">True</property>
30
+ <property name="fill">True</property>
31
+ <property name="padding">10</property>
32
+ <property name="position">0</property>
33
+ </packing>
34
+ </child>
35
+ <child>
36
+ <object class="GtkHButtonBox" id="hbuttonbox1">
37
+ <property name="visible">True</property>
38
+ <property name="can_focus">False</property>
39
+ <property name="spacing">10</property>
40
+ <child>
41
+ <object class="GtkButton" id="buttonOpenChild">
42
+ <property name="label" translatable="yes">Open Non-Modal Window</property>
43
+ <property name="visible">True</property>
44
+ <property name="can_focus">True</property>
45
+ <property name="receives_default">True</property>
46
+ <property name="use_action_appearance">False</property>
47
+ </object>
48
+ <packing>
49
+ <property name="expand">False</property>
50
+ <property name="fill">False</property>
51
+ <property name="position">0</property>
52
+ </packing>
53
+ </child>
54
+ <child>
55
+ <object class="GtkButton" id="modalButton">
56
+ <property name="label" translatable="yes">Open Modal Window</property>
57
+ <property name="visible">True</property>
58
+ <property name="can_focus">True</property>
59
+ <property name="receives_default">True</property>
60
+ <property name="use_action_appearance">False</property>
61
+ </object>
62
+ <packing>
63
+ <property name="expand">False</property>
64
+ <property name="fill">False</property>
65
+ <property name="position">1</property>
66
+ </packing>
67
+ </child>
68
+ <child>
69
+ <object class="GtkButton" id="cancelButton">
70
+ <property name="label" translatable="yes">Cancel</property>
71
+ <property name="visible">True</property>
72
+ <property name="can_focus">True</property>
73
+ <property name="receives_default">True</property>
74
+ <property name="use_action_appearance">False</property>
75
+ </object>
76
+ <packing>
77
+ <property name="expand">False</property>
78
+ <property name="fill">False</property>
79
+ <property name="position">2</property>
80
+ </packing>
81
+ </child>
82
+ </object>
83
+ <packing>
84
+ <property name="expand">True</property>
85
+ <property name="fill">True</property>
86
+ <property name="padding">10</property>
87
+ <property name="position">1</property>
88
+ </packing>
89
+ </child>
90
+ </object>
91
+ <packing>
92
+ <property name="expand">True</property>
93
+ <property name="fill">True</property>
94
+ <property name="padding">20</property>
95
+ <property name="position">0</property>
96
+ </packing>
97
+ </child>
98
+ </object>
99
+ </child>
100
+ </object>
101
+ </interface>
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="visible">True</property>
7
+ <property name="can_focus">False</property>
8
+ <property name="title" translatable="yes">Title</property>
9
+ <property name="modal">True</property>
10
+ <signal name="destroy" handler="destroy_window" swapped="no"/>
11
+ <child>
12
+ <object class="GtkVBox" id="vbox1">
13
+ <property name="visible">True</property>
14
+ <property name="can_focus">False</property>
15
+ <child>
16
+ <object class="GtkLabel" id="MyChildClass.hello">
17
+ <property name="visible">True</property>
18
+ <property name="can_focus">False</property>
19
+ <property name="xpad">80</property>
20
+ <property name="ypad">20</property>
21
+ <property name="label" translatable="yes">label</property>
22
+ </object>
23
+ <packing>
24
+ <property name="expand">True</property>
25
+ <property name="fill">True</property>
26
+ <property name="position">0</property>
27
+ </packing>
28
+ </child>
29
+ <child>
30
+ <object class="GtkHButtonBox" id="hbuttonbox1">
31
+ <property name="visible">True</property>
32
+ <property name="can_focus">False</property>
33
+ <child>
34
+ <object class="GtkButton" id="buttonCancel">
35
+ <property name="label" translatable="yes">Cancel</property>
36
+ <property name="visible">True</property>
37
+ <property name="can_focus">True</property>
38
+ <property name="receives_default">True</property>
39
+ <property name="use_action_appearance">False</property>
40
+ </object>
41
+ <packing>
42
+ <property name="expand">False</property>
43
+ <property name="fill">False</property>
44
+ <property name="position">0</property>
45
+ </packing>
46
+ </child>
47
+ </object>
48
+ <packing>
49
+ <property name="expand">True</property>
50
+ <property name="fill">True</property>
51
+ <property name="padding">10</property>
52
+ <property name="position">1</property>
53
+ </packing>
54
+ </child>
55
+ </object>
56
+ </child>
57
+ </object>
58
+ </interface>
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'vrlib'
4
+
5
+ #make program output in real time so errors visible in VR.
6
+ STDOUT.sync = true
7
+ STDERR.sync = true
8
+
9
+ my_path = File.expand_path(File.dirname(__FILE__))
10
+ require_all Dir.glob(my_path + "/bin/**/*.rb")
11
+
12
+ ChildWindowDemo.new.show
13
+
@@ -0,0 +1,19 @@
1
+ --- !ruby/object:VR_ENV
2
+ backup_path: /home/eric
3
+ browser: firefox
4
+ current_file: /home/eric/vrp/vrx/visualruby_examples/drag_drop/main.rb
5
+ font_name: Monospace 10
6
+ glade_path: glade-3
7
+ height: 858
8
+ open_files:
9
+ - /home/eric/vrp/vrx/visualruby_examples/drag_drop/bin/DragDropDemo.rb
10
+ - /home/eric/vrp/vrx/visualruby_examples/drag_drop/main.rb
11
+ open_folders:
12
+ - /home/eric/vrp/vrx/visualruby_examples/drag_drop
13
+ - /home/eric/vrp/vrx/visualruby_examples/drag_drop/bin
14
+ - /home/eric/vrp/vrx/visualruby_examples/drag_drop/bin/glade
15
+ panel_pos: 594
16
+ rdoc_command_line: rdoc -x README
17
+ run_command_line: ruby main.rb
18
+ tab_spaces: 2
19
+ width: 1434
@@ -0,0 +1,45 @@
1
+
2
+ class DragDropDemo
3
+
4
+ include GladeGUI
5
+
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")
9
+ @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"])
15
+ end
16
+
17
+
18
+ # This executes when button1 receives a widget dropped on it. When the button1 widget
19
+ # receives a drag_drop signal, an instance variable named dragged_widget is set automatically set
20
+ # by visualruby containing a reference to the dragged widget:
21
+
22
+ def button1__drag_drop(*args)
23
+ but1 = @builder["button1"]
24
+ if but1.dragged_widget.is_a?(Gtk::TextView)
25
+ but1.label = but1.dragged_widget.buffer.text.slice(0,15)
26
+ elsif but1.dragged_widget.is_a?(VR::FileTreeView)
27
+ but1.label = @view.get_selected_path()
28
+ end
29
+ end
30
+
31
+ def textview1__drag_drop(*args)
32
+ tv1 = @builder["textview1"]
33
+ if tv1.dragged_widget == @view
34
+ path = @view.get_selected_path()
35
+ tv1.buffer.text = File.directory?(path) ? path : File.read(path)
36
+ elsif tv1.dragged_widget.is_a?(Gtk::Button)
37
+ tv1.buffer.text = tv1.dragged_widget.label
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+
44
+
45
+
@@ -0,0 +1,143 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="width_request">800</property>
7
+ <property name="height_request">400</property>
8
+ <property name="visible">True</property>
9
+ <property name="title" translatable="yes">Drag N Drop -- Visualruby</property>
10
+ <property name="modal">True</property>
11
+ <property name="window_position">center-always</property>
12
+ <signal name="destroy" handler="destroy_window"/>
13
+ <child>
14
+ <object class="GtkVBox" id="vbox1">
15
+ <property name="visible">True</property>
16
+ <child>
17
+ <object class="GtkHBox" id="hbox2">
18
+ <property name="visible">True</property>
19
+ <child>
20
+ <object class="GtkVBox" id="vbox2">
21
+ <property name="visible">True</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="label_xalign">0</property>
28
+ <property name="shadow_type">in</property>
29
+ <child>
30
+ <object class="GtkAlignment" id="alignment1">
31
+ <property name="visible">True</property>
32
+ <property name="top_padding">12</property>
33
+ <property name="bottom_padding">13</property>
34
+ <property name="left_padding">13</property>
35
+ <property name="right_padding">13</property>
36
+ <child>
37
+ <object class="GtkLabel" id="label2">
38
+ <property name="width_request">600</property>
39
+ <property name="visible">True</property>
40
+ <property name="xalign">0</property>
41
+ <property name="yalign">0</property>
42
+ <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>
43
+ <property name="wrap">True</property>
44
+ </object>
45
+ </child>
46
+ </object>
47
+ </child>
48
+ <child type="label">
49
+ <object class="GtkLabel" id="label1">
50
+ <property name="visible">True</property>
51
+ <property name="label" translatable="yes">&lt;b&gt;Instructions&lt;/b&gt;</property>
52
+ <property name="use_markup">True</property>
53
+ </object>
54
+ </child>
55
+ </object>
56
+ <packing>
57
+ <property name="expand">False</property>
58
+ <property name="fill">False</property>
59
+ <property name="padding">5</property>
60
+ <property name="position">0</property>
61
+ </packing>
62
+ </child>
63
+ <child>
64
+ <object class="GtkHBox" id="hbox3">
65
+ <property name="visible">True</property>
66
+ <property name="spacing">10</property>
67
+ <child>
68
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
69
+ <property name="visible">True</property>
70
+ <property name="can_focus">True</property>
71
+ <property name="hscrollbar_policy">automatic</property>
72
+ <property name="vscrollbar_policy">automatic</property>
73
+ <child>
74
+ <placeholder/>
75
+ </child>
76
+ </object>
77
+ <packing>
78
+ <property name="position">0</property>
79
+ </packing>
80
+ </child>
81
+ <child>
82
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
83
+ <property name="visible">True</property>
84
+ <property name="can_focus">True</property>
85
+ <property name="hscrollbar_policy">automatic</property>
86
+ <property name="vscrollbar_policy">automatic</property>
87
+ <child>
88
+ <object class="GtkTextView" id="textview1">
89
+ <property name="visible">True</property>
90
+ <property name="can_focus">True</property>
91
+ </object>
92
+ </child>
93
+ </object>
94
+ <packing>
95
+ <property name="position">1</property>
96
+ </packing>
97
+ </child>
98
+ <child>
99
+ <object class="GtkVButtonBox" id="vbuttonbox1">
100
+ <property name="visible">True</property>
101
+ <property name="spacing">3</property>
102
+ <property name="layout_style">end</property>
103
+ <child>
104
+ <object class="GtkButton" id="button1">
105
+ <property name="label" translatable="yes">button1</property>
106
+ <property name="visible">True</property>
107
+ <property name="can_focus">True</property>
108
+ <property name="receives_default">True</property>
109
+ </object>
110
+ <packing>
111
+ <property name="expand">False</property>
112
+ <property name="fill">False</property>
113
+ <property name="position">0</property>
114
+ </packing>
115
+ </child>
116
+ </object>
117
+ <packing>
118
+ <property name="expand">False</property>
119
+ <property name="padding">10</property>
120
+ <property name="position">2</property>
121
+ </packing>
122
+ </child>
123
+ </object>
124
+ <packing>
125
+ <property name="position">1</property>
126
+ </packing>
127
+ </child>
128
+ </object>
129
+ <packing>
130
+ <property name="padding">15</property>
131
+ <property name="position">0</property>
132
+ </packing>
133
+ </child>
134
+ </object>
135
+ <packing>
136
+ <property name="padding">15</property>
137
+ <property name="position">0</property>
138
+ </packing>
139
+ </child>
140
+ </object>
141
+ </child>
142
+ </object>
143
+ </interface>
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'vrlib'
4
+
5
+ #make program output in real time so errors visible in VR.
6
+ STDOUT.sync = true
7
+ STDERR.sync = true
8
+
9
+ #everything in these directories will be included
10
+ my_path = File.expand_path(File.dirname(__FILE__))
11
+ require_all Dir.glob(my_path + "/bin/**/*.rb")
12
+
13
+ DragDropDemo.new.show
14
+
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:VR_ENV
2
+ backup_path: /home/eric
3
+ browser: C:\Program Files\iexplorer\iexplore.exe
4
+ current_file: /home/eric/vrp/vrx/visualruby_examples/listview/main.rb
5
+ font_name: Monospace 10
6
+ glade_path: glade-gtk2
7
+ height: 831
8
+ open_files:
9
+ - /home/eric/vrp/vrx/visualruby_examples/listview/bin/SongListView.rb
10
+ - /home/eric/vrp/vrx/visualruby_examples/listview/bin/SongListViewGUI.rb
11
+ - /home/eric/vrp/vrx/visualruby_examples/listview/main.rb
12
+ open_folders:
13
+ - /home/eric/vrp/vrx/visualruby_examples/listview
14
+ - /home/eric/vrp/vrx/visualruby_examples/listview/bin
15
+ - /home/eric/vrp/vrx/visualruby_examples/listview/bin/glade
16
+ panel_pos: 494
17
+ rdoc_command_line: rdoc -x README
18
+ run_command_line: ruby main.rb
19
+ tab_spaces: 2
20
+ width: 1190
21
+ builder: !ruby/object:Gtk::Builder {}
22
+ glade_box: !ruby/object:VR::SimpleComboBoxEntry {}
23
+ browser_box: !ruby/object:VR::SimpleComboBoxEntry {}
24
+ buttonChooseFolder: ! '...'
25
+ vbox1: !ruby/object:Gtk::VBox {}
26
+ label7: ! 'Editor Font:'
27
+ label3: ! 'Back-up Path:'
28
+ window1: !ruby/object:Gtk::Window {}
29
+ hbuttonbox1: !ruby/object:Gtk::HButtonBox {}
30
+ buttonCancel: Cancel
31
+ label8: ! 'RDoc Command Line: '
32
+ table1: !ruby/object:Gtk::Table {}
33
+ buttonTryBrowser: Try
34
+ buttonSave: Save
35
+ hboxBrowser: !ruby/object:Gtk::HBox {}
36
+ hboxGlade: !ruby/object:Gtk::HBox {}
37
+ label1: <big><big><b>Visual Ruby Settings</b></big></big>
38
+ label2: ! 'Browser Command Line:'
39
+ label4: ! 'Spaces for Each Tab in Editor:'
40
+ label5: ! 'Glade Command Line:'
41
+ label6: ! 'Command Line when "Run" is pressed:'
42
+ hbox1: !ruby/object:Gtk::HBox {}
43
+ hbox2: !ruby/object:Gtk::HBox {}
44
+ hbox3: !ruby/object:Gtk::HBox {}
45
+ hbox4: !ruby/object:Gtk::HBox {}
46
+ buttonTryGlade: Try
@@ -0,0 +1,89 @@
1
+ ##
2
+ # This class contains all the code for the ListView itself.
3
+ # It sets-up the columns and data.
4
+ # The GUI class will make changes to the view/data.
5
+ # All the GUI code is in SongListViewGUI.rb.
6
+ #
7
+
8
+ class SongListView < VR::ListView
9
+
10
+
11
+ AUDIO_ICON = Gdk::Pixbuf.new(File.dirname(__FILE__) + "/audio-x-generic.png")
12
+
13
+
14
+ def initialize
15
+ @cols = {}
16
+ @cols[:pix] = {:pix => Gdk::Pixbuf, :song => String } #two renderers in this column
17
+ @cols[:date] = DateTime
18
+ @cols[:artist] = String
19
+ @cols[:first_name] = String
20
+ @cols[:last_name] = String
21
+ @cols[:popular] = VR::ProgressCol
22
+ @cols[:buy] = VR::ComboCol
23
+ @cols[:quantity] = VR::SpinCol
24
+ @cols[:price] = VR::CurrencyCol
25
+ @cols[:check] = TrueClass
26
+ super(@cols)
27
+
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), :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)
35
+ ren_editable(true)
36
+
37
+ # this block executes after ARTIST is edited ("edited" event).
38
+ renderer(:artist).edited_callback = Proc.new { | model_col, iter |
39
+ names = iter[id(:artist)].split
40
+ iter[id(:first_name)] = names[0]
41
+ iter[id(:last_name)] = names[1]
42
+ }
43
+
44
+ # this block must evaluate to true to allow updating.
45
+ renderer(:artist).validate_block = Proc.new { |text, model_col, iter, view|
46
+ if text.split.size == 2 # insist on two names
47
+ true
48
+ else
49
+ VR::Dialog.message_box("You must enter two names.")
50
+ false
51
+ end
52
+ }
53
+ refresh()
54
+ end
55
+
56
+ # this just loads the data into the model
57
+ def refresh()
58
+ data = get_data() # returns array of songs
59
+ (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]
72
+ end
73
+ end
74
+
75
+ def get_data
76
+ rows = []
77
+ rows << ["Iggy", "Pop", "I Wanna Be Your Dog", 88, DateTime.new(1981,11,21)]
78
+ rows << ["Joe", "Cocker", "You Are So Beautiful", 91, DateTime.new(1973,12,7)]
79
+ rows << ["Elvis", "Costello", "Pump it Up", 77, DateTime.new(1982, 5, 5)]
80
+ rows << ["Paul", "McCartney", "Silly Love Songs", 69, DateTime.new(1979,7,13)]
81
+ rows << ["Dorothy", "Moore", "Misty Blue", 97, DateTime.new(1981, 1, 14)]
82
+ rows << ["Rod", "Stewart", "Hot Legs", 54, DateTime.new(1982, 9, 27)]
83
+ rows << ["Lionel", "Richie", "Three Times a Lady", 84, DateTime.new(1978, 1, 3)]
84
+ end
85
+
86
+ end
87
+
88
+
89
+
@@ -0,0 +1,67 @@
1
+
2
+ class SongListViewGUI < SongListView
3
+
4
+ include GladeGUI
5
+
6
+ def before_show
7
+ @builder["scrolledwindow1"].add(self)
8
+ end
9
+
10
+ def self__row_activated(*argv)
11
+ return unless rows = selected_rows
12
+ row = rows[0]
13
+ VR::Dialog.message_box("You selected\n#{row[:song]}\nby #{row[:artist]}")
14
+ end
15
+
16
+ def invisible__toggled(*argv)
17
+ v = !@builder["invisible"].active?
18
+ col_visible(:last_name => v, :first_name => v )
19
+ end
20
+
21
+ def radio__toggled(*argv)
22
+ ren_radio(:check => @builder["radio"].active?)
23
+ each_row { |r| r[:check] = false }
24
+ repaint
25
+ end
26
+
27
+ def background__toggled(*argv)
28
+ val = @builder["background"].active? ? "yellow" : "white"
29
+ ren_attr(:song, :background => val) # same as set_background( SONG => val)
30
+ repaint
31
+ end
32
+
33
+ def xalign__toggled(*argv)
34
+ val = @builder["xalign"].active? ? 1 : 0
35
+ ren_xalign(:artist => val)
36
+ repaint
37
+ end
38
+
39
+ def bold__toggled(*argv)
40
+ val = @builder["bold"].active? ? Pango::WEIGHT_BOLD : Pango::WEIGHT_NORMAL
41
+ ren_weight(:song => val) #number from 100 to 900, BOLD = 700
42
+ repaint
43
+ end
44
+
45
+ def center__toggled(*argv)
46
+ val = @builder["center"].active? ? 0.5 : 0
47
+ col_alignment(:artist => val)
48
+ repaint
49
+ end
50
+
51
+ def editable__toggled(*argv)
52
+ ren_editable(!@builder["editable"].active?)
53
+ end
54
+
55
+ def digits__toggled(*argv)
56
+ val = @builder["digits"].active? ? 1 : 0
57
+ ren_digits(:quantity => val)
58
+ repaint
59
+ end
60
+
61
+ def repaint
62
+ @builder["scrolledwindow1"].hide
63
+ @builder["window1"].show_all
64
+ end
65
+ end
66
+
67
+