visualruby 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
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,313 @@
1
+
2
+ class VR_Main
3
+
4
+ include GladeGUI
5
+
6
+ attr_accessor :proj_path, :tabs, :shell, :builder, :file_tree
7
+
8
+ def initialize(argv)
9
+ @proj_path = argv[0] == "new" ? new_project(argv[1]) : argv[0]
10
+ @proj_path = @proj_path == nil ? Dir.pwd : @proj_path.chomp("/")
11
+ @proj_path = ENV["HOME"] unless File.split(@proj_path).length >= 2 and File.directory?(@proj_path)
12
+ end
13
+
14
+ def before_show
15
+ # splash = Splash.new
16
+ # splash.show(self)
17
+ @file_tree = VR_File_Tree.new(self, File.expand_path(File.dirname(__FILE__) + "/../../img"))
18
+ @builder["scrolledwindowFileTree"].add(@file_tree)
19
+
20
+ #add document notebook
21
+ @tabs = VR_Tabs.new(self)
22
+ @builder["vboxTabs"].add(@tabs)
23
+
24
+ #add shell textview
25
+ @shell = VR_TextShell.new(@tabs)
26
+ @builder["scrollShell"].add(@shell)
27
+
28
+ #add local gem tab
29
+ @gem_tree = VR_Local_Gem_Tree.new(self)
30
+ @builder['scrolledLocalGems'].add(@gem_tree)
31
+ #add remote gem tab
32
+ @remote_gem_tree = VR_Remote_Gem_Tree.new(self)
33
+ @builder["scrolledRemoteGems"].add(@remote_gem_tree)
34
+
35
+ menuInstallExamples__activate if not File.directory?(File.join(ENV["HOME"],"","visualruby", "examples", "drag_drop"))
36
+
37
+ if Dir.entries(@proj_path).join == "..." #empty
38
+ VR_Tools.copy_recursively(File.dirname(__FILE__) + "/../../skeleton/project", @proj_path)
39
+ end
40
+
41
+ if not File.file?(@proj_path + "/" + VR_ENV::SETTINGS_FILE)
42
+ menuInstallExamples__activate if Dir.glob(ENV["HOME"] + File.join( "", "**", VR_ENV::SETTINGS_FILE)).size == 0
43
+ toolOpenFolder_clicked
44
+ else
45
+ load_project(@proj_path)
46
+ end
47
+ # splash.destroy_window()cvnc
48
+ # show_window() if not $VR_ENV.nil?
49
+ end
50
+
51
+ def project_valid?(proj_path)
52
+ return false if proj_path.nil?
53
+ if not File.directory?(proj_path.to_s)
54
+ VR::Dialog.message_box("This folder is invalid:\n\n" + proj_path)
55
+ return false
56
+ end
57
+ if ENV["HOME"] == proj_path
58
+ return false
59
+ end
60
+ if Dir.entries(proj_path).join == "..." #empty
61
+ VR_Tools.copy_recursively(File.dirname(__FILE__) + "/../../skeleton/project", proj_path)
62
+ return true
63
+ elsif not File.file?(proj_path + "/" + VR_ENV::SETTINGS_FILE)
64
+ return VR::Dialog.ok_box("No Visual Ruby project file was found in this folder:\n " + proj_path + " Do you wan to open it anyway?")
65
+ end #success!
66
+ return true
67
+ end
68
+
69
+ def load_project(proj_path) #assumes valid_project? is true
70
+ FileUtils.cd(proj_path)
71
+ @builder['window1'].title = "VR: " + File.basename(Dir.pwd)
72
+ @builder["labelStatus"].label = Dir.pwd
73
+ $VR_ENV = VR_ENV.load_yaml()
74
+ $VR_ENV_GLOBAL = VR_ENV_GLOBAL.load_yaml()
75
+ @file_tree.refresh()
76
+ load_state()
77
+ @shell.buffer.text = ""
78
+ end
79
+
80
+ def new_project(proj_path)
81
+ return nil unless proj_path
82
+ path = File.join(Dir.pwd,proj_path)
83
+ FileUtils.mkdir(path) unless File.directory?(path)
84
+ return path
85
+ end
86
+
87
+
88
+
89
+ def toolBack_clicked
90
+ @tabs.back()
91
+ end
92
+
93
+
94
+
95
+
96
+ def toolOpenFolder_clicked
97
+ save_state
98
+ return unless @tabs.try_to_save_all()
99
+ old_path = @proj_path
100
+ ProjectChooserGUI.new(self).show() #modal stops execution here, sets @proj_path
101
+ # return if @proj_path == old_path #first time needs to be ok
102
+ if project_valid?(@proj_path)
103
+ @tabs.try_to_close_all()
104
+ load_project(@proj_path)
105
+ else
106
+ @proj_path = old_path
107
+ end
108
+ end
109
+
110
+ def notebookTree_changed #file, gem notebook
111
+ case @builder['notebookTree'].page
112
+ when 1 then @gem_tree.refresh()
113
+ when 2 then @remote_gem_tree.refresh(false) #false = don't force refresh
114
+ end
115
+ end
116
+
117
+ def window1_key_press(win, key)
118
+ case x = key.keyval
119
+ when 65474 then toolRun_clicked # F5
120
+ # when 115 then toolSave_clicked # Ctrl-S
121
+ end
122
+ end
123
+
124
+ def menuCreateLauncher__activate(*a)
125
+ VR_Tools.create_desktop_launcher
126
+ end
127
+
128
+ def menuCloseAll__activate(*a)
129
+ @tabs.try_to_close_all()
130
+ end
131
+
132
+ def menuSettings__activate(*a)
133
+ $VR_ENV.show()
134
+ end
135
+
136
+ def menuGlobalSettings__activate(*a)
137
+ $VR_ENV_GLOBAL.show()
138
+ @tabs.update_style_all()
139
+ end
140
+
141
+ def menuWWWRubygems__activate(*a)
142
+ VR_Tools.popen("#{$VR_ENV_GLOBAL.browser} https://rubygems.org/users/new")
143
+ end
144
+
145
+ def menuSaveAll__activate(*a)
146
+ @tabs.try_to_save_all(false) # don't prompt
147
+ end
148
+
149
+ def menuNew__activate(*a)
150
+ @tabs.load_tab()
151
+ end
152
+ def menuSaveAs__activate(*a)
153
+ @tabs.docs[@tabs.page].save_as()
154
+ end
155
+
156
+ def toolRefresh_clicked
157
+ case @builder['notebookTree'].page
158
+ when 0 then @file_tree.refresh()
159
+ when 1 then @gem_tree.refresh()
160
+ when 2 then @remote_gem_tree.refresh()
161
+ end
162
+ end
163
+
164
+ def toolSave_clicked() # saves open tab
165
+ @tabs.docs[@tabs.page].try_to_save(false)
166
+ end
167
+
168
+
169
+ #returns false to abort!
170
+
171
+
172
+ def menuNewWindow__activate(*a)
173
+ fn = File.dirname(__FILE__) + "/../../skeleton/document/NewWindow.rb"
174
+ @tabs.load_tab()
175
+ @tabs.set_contents(File.open(fn).read)
176
+ end
177
+
178
+ def menuNewProject__activate(*a)
179
+ save_state
180
+ return unless @tabs.try_to_save_all()
181
+ old_path = @proj_path
182
+ NewProjectGUI.new(self).show
183
+ if project_valid?(@proj_path)
184
+ @tabs.try_to_close_all()
185
+ load_project(@proj_path)
186
+ else
187
+ @proj_path = old_path
188
+ end
189
+ end
190
+
191
+ def toolBackUp_clicked
192
+ return unless @tabs.try_to_save_all()
193
+ # path = File.join(ENV["HOME"], "visualruby_backup", Dir.pwd.gsub(ENV["HOME"], ""))
194
+ VR_Tools.back_up()
195
+ # VR::Dialog.message_box("Files backed up to: \n\n" + path)
196
+ end
197
+
198
+ # def toolBackUp_clicked
199
+ # return unless @tabs.try_to_save_all()
200
+ # path = $VR_ENV.backup_path
201
+ # return if path.nil?
202
+ # if File.directory?(path) and path.gsub('\\', '/').include?(ENV["HOME"])
203
+ # VR_Tools.back_up(Dir.pwd, path)
204
+ # VR::Dialog.message_box("Files backed up to: \n\n" + path)
205
+ # else
206
+ # VR::Dialog.message_box("Backup path must be subdirecory of #{ENV['HOME']}:\n\n InValid: " + path)
207
+ # menuSettings__activate
208
+ # end
209
+ # end
210
+
211
+
212
+ def toolIndent_clicked
213
+ @tabs.docs[@tabs.page].indent($VR_ENV_GLOBAL.tab_spaces)
214
+ end
215
+
216
+ def toolUnIndent_clicked
217
+ @tabs.docs[@tabs.page].unindent($VR_ENV_GLOBAL.tab_spaces)
218
+ end
219
+
220
+ def toolComment_clicked
221
+ @tabs.docs[@tabs.page].comment()
222
+ end
223
+
224
+ def toolUnComment_clicked
225
+ @tabs.docs[@tabs.page].un_comment()
226
+ end
227
+
228
+ def toolRun_clicked
229
+ run_command($VR_ENV.run_command_line)
230
+ end
231
+
232
+ def run_command(cmd)
233
+ save_state()
234
+ return unless @tabs.try_to_save_all(false) # false = don't prompt for changes to files
235
+ cur_dir = Dir.pwd
236
+ result = "\n#{cur_dir}$ #{cmd}\n"
237
+ result += `#{cmd} 2>&1`
238
+ FileUtils.cd(cur_dir)
239
+ @shell.hilight_links(result, true)
240
+ end
241
+
242
+ def save_state
243
+ return if $VR_ENV == nil
244
+ $VR_ENV.width, $VR_ENV.height = @builder["window1"].size()
245
+ $VR_ENV.panel_pos = @builder["panelMain"].position
246
+ $VR_ENV.open_folders = @file_tree.get_open_folders()
247
+ $VR_ENV.open_files = @tabs.get_open_fn()
248
+ $VR_ENV.current_file = @tabs.docs[@tabs.page].full_path_file
249
+ $VR_ENV.save_yaml()
250
+ end
251
+
252
+ def load_state
253
+ @builder["window1"].resize($VR_ENV.width, $VR_ENV.height)
254
+ @builder['panelMain'].set_position($VR_ENV.panel_pos)
255
+ @builder["window1"].visible = true
256
+ @tabs.open_file_names($VR_ENV.open_files)
257
+ @tabs.switch_to($VR_ENV.current_file)
258
+ @file_tree.open_folders($VR_ENV.open_folders)
259
+ @builder["window1"].show_all
260
+ end
261
+
262
+ def menuCreateGemspec__activate(*a)
263
+ if file_name = VR_Tools.create_gemspec()
264
+ @tabs.destroy_file_tab(file_name)
265
+ @tabs.load_tab(file_name)
266
+ @file_tree.insert(file_name)
267
+ end
268
+ end
269
+
270
+ def buttonNext_clicked
271
+ @shell.jump_to()
272
+ end
273
+
274
+ def buttonFind_clicked
275
+ str = @builder["entryFind"].text
276
+ str = str.length < 2 ? @tabs.docs[@tabs.page].selected_text() : str
277
+ return if str.length < 2
278
+ text = (@builder["radioOnDisk"].active?) ? @tabs.find_in_all(str) : @tabs.find_in_tabs(str)
279
+ @shell.hilight_links(text, false)
280
+ end
281
+
282
+ def buttonReplace_clicked
283
+ @tabs.docs[@tabs.page].replace(@builder["entryReplace"].text)
284
+ end
285
+
286
+ def entryFind_key_press(me, evt)
287
+ return if evt.keyval != 65293 #enter key
288
+ buttonFind_clicked
289
+ end
290
+
291
+ def menuTutorials__activate(*a)
292
+ VR_Tools.popen("#{$VR_ENV_GLOBAL.browser} http://www.visualruby.net")
293
+ end
294
+
295
+ def menuInstallExamples__activate(*a)
296
+ path = File.join(ENV["HOME"], "", "visualruby", "examples")
297
+ VR_Tools.copy_recursively(File.expand_path(File.join(File.dirname(__FILE__),"","..","..","visualruby_examples")), path)
298
+ VR::Dialog.message_box("The example projects are installed in:\n#{path}\nIf you want to uninstall them, just delete the folder.\n\nUse the /home/visualruby folder for all your visualruby projects.")
299
+ end
300
+
301
+ #needed so tabs can be saved
302
+ def on_window1_delete_event
303
+ save_state
304
+ return true unless @tabs.try_to_save_all()
305
+ return false #ok to close
306
+ end
307
+
308
+ def destroy_window()
309
+ super
310
+ # exit! # note exit makes it not spit out buffer
311
+ end
312
+
313
+ end
@@ -0,0 +1,70 @@
1
+
2
+ class VR_Remote_Gem_Tree < GemTree
3
+
4
+ # PIX = Gdk::Pixbuf.new(File.dirname(__FILE__) + '/../../img/rb.png')
5
+
6
+ include GladeGUI
7
+
8
+ def initialize(main)
9
+ super()
10
+ @main = main
11
+ # set_title(PIX => "Gems on rubygems.org")
12
+ @gems = Hash.new
13
+ load_glade(__FILE__, main)
14
+ end
15
+
16
+
17
+ def refresh(force = true)
18
+ return if @t
19
+ return unless force or not self.model.iter_first
20
+ return unless @api.get_key()
21
+ @t = Thread.new do
22
+ @main.shell.buffer.text += "\nContacting rubygems.org..."
23
+ self.model.clear
24
+ return unless @gems = @api.get_obj_url("/api/v1/gems.yaml")
25
+ @gems.each do |gem|
26
+ gem_info = @api.get_obj_url("/api/v1/versions/#{gem['name']}.yaml")
27
+ gem_info.each do |info|
28
+ self.add_row(:pix => RUBY_ICON, :gem => "#{gem['name']} (#{info['number']})")
29
+ end
30
+ end
31
+ @t.join
32
+ end
33
+ @t = false
34
+ end
35
+
36
+ def selected_gem
37
+ row = self.selection.selected[1].split(" (")
38
+ # ver = row[1].gsub(")","")
39
+ @gems.detect { |gem| gem['name'] == row[0] } #and gem['version'] == ver}
40
+ end
41
+
42
+ def popOpenRubygemsPage_clicked
43
+ gem = selected_gem()
44
+ VR_Tools.popen("#{$VR_ENV_GLOBAL.browser} #{gem['project_uri']}")
45
+ end
46
+
47
+ def popOpenHomepage_clicked
48
+ gem = selected_gem()
49
+ VR_Tools.popen("#{$VR_ENV_GLOBAL.browser} #{gem['homepage_uri']}")
50
+ end
51
+
52
+ # def remoteGemTree_rclicked(w, event)
53
+ # if event.event_type == Gdk::Event::BUTTON_RELEASE
54
+ # if event.button == 3 # right mouse button
55
+ # @builder['popGemRemote'].popup(nil, nil, event.button, event.time)
56
+ # end
57
+ # end
58
+ # end
59
+
60
+ def popYank_clicked
61
+ name, ver = get_name_ver(selection.selected[1])
62
+ reply = @api.yank_gem(name, ver)
63
+ @main.shell.buffer.text = "Yanking gem: #{name} #{ver}\n" + reply
64
+ self.model.remove(selection.selected) if reply.include? "OK"
65
+ end
66
+
67
+ end
68
+
69
+
70
+ #
@@ -0,0 +1,141 @@
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="modal">True</property>
9
+ <property name="default_width">450</property>
10
+ <property name="default_height">300</property>
11
+ <signal name="destroy" handler="destroy_window" swapped="no"/>
12
+ <child>
13
+ <object class="GtkHBox" id="hbox1">
14
+ <property name="visible">True</property>
15
+ <property name="can_focus">False</property>
16
+ <child>
17
+ <object class="GtkVBox" id="vbox1">
18
+ <property name="visible">True</property>
19
+ <property name="can_focus">False</property>
20
+ <child>
21
+ <object class="GtkLabel" id="label1">
22
+ <property name="visible">True</property>
23
+ <property name="can_focus">False</property>
24
+ <property name="label" translatable="yes">&lt;big&gt;&lt;big&gt;Create New Project&lt;/big&gt;&lt;/big&gt;</property>
25
+ <property name="use_markup">True</property>
26
+ </object>
27
+ <packing>
28
+ <property name="expand">True</property>
29
+ <property name="fill">True</property>
30
+ <property name="position">0</property>
31
+ </packing>
32
+ </child>
33
+ <child>
34
+ <object class="GtkLabel" id="label2">
35
+ <property name="visible">True</property>
36
+ <property name="can_focus">False</property>
37
+ <property name="label" translatable="yes">Enter the name for your new project. A directory will be created under your /home/visualruby directory with that name. Use only letters and underscores.
38
+
39
+ You are free to move the project later.</property>
40
+ <property name="wrap">True</property>
41
+ </object>
42
+ <packing>
43
+ <property name="expand">True</property>
44
+ <property name="fill">True</property>
45
+ <property name="position">1</property>
46
+ </packing>
47
+ </child>
48
+ <child>
49
+ <object class="GtkTable" id="table1">
50
+ <property name="visible">True</property>
51
+ <property name="can_focus">False</property>
52
+ <property name="n_rows">2</property>
53
+ <property name="n_columns">2</property>
54
+ <child>
55
+ <object class="GtkEntry" id="entryFolderName">
56
+ <property name="visible">True</property>
57
+ <property name="can_focus">True</property>
58
+ <property name="invisible_char">•</property>
59
+ <property name="invisible_char_set">True</property>
60
+ <property name="primary_icon_activatable">False</property>
61
+ <property name="secondary_icon_activatable">False</property>
62
+ <property name="primary_icon_sensitive">True</property>
63
+ <property name="secondary_icon_sensitive">True</property>
64
+ </object>
65
+ <packing>
66
+ <property name="left_attach">1</property>
67
+ <property name="right_attach">2</property>
68
+ </packing>
69
+ </child>
70
+ <child>
71
+ <object class="GtkLabel" id="label3">
72
+ <property name="visible">True</property>
73
+ <property name="can_focus">False</property>
74
+ <property name="xalign">1</property>
75
+ <property name="label" translatable="yes">/home/visualruby/</property>
76
+ </object>
77
+ </child>
78
+ <child>
79
+ <object class="GtkHButtonBox" id="hbuttonbox1">
80
+ <property name="visible">True</property>
81
+ <property name="can_focus">False</property>
82
+ <property name="layout_style">spread</property>
83
+ <child>
84
+ <object class="GtkButton" id="buttonCreate">
85
+ <property name="label" translatable="yes">Create Project</property>
86
+ <property name="visible">True</property>
87
+ <property name="can_focus">True</property>
88
+ <property name="receives_default">True</property>
89
+ <property name="use_action_appearance">False</property>
90
+ </object>
91
+ <packing>
92
+ <property name="expand">False</property>
93
+ <property name="fill">False</property>
94
+ <property name="position">0</property>
95
+ </packing>
96
+ </child>
97
+ <child>
98
+ <object class="GtkButton" id="buttonCancel">
99
+ <property name="label" translatable="yes">Cancel</property>
100
+ <property name="visible">True</property>
101
+ <property name="can_focus">True</property>
102
+ <property name="receives_default">True</property>
103
+ <property name="use_action_appearance">False</property>
104
+ </object>
105
+ <packing>
106
+ <property name="expand">False</property>
107
+ <property name="fill">False</property>
108
+ <property name="position">1</property>
109
+ </packing>
110
+ </child>
111
+ </object>
112
+ <packing>
113
+ <property name="left_attach">1</property>
114
+ <property name="right_attach">2</property>
115
+ <property name="top_attach">1</property>
116
+ <property name="bottom_attach">2</property>
117
+ </packing>
118
+ </child>
119
+ <child>
120
+ <placeholder/>
121
+ </child>
122
+ </object>
123
+ <packing>
124
+ <property name="expand">True</property>
125
+ <property name="fill">True</property>
126
+ <property name="padding">12</property>
127
+ <property name="position">2</property>
128
+ </packing>
129
+ </child>
130
+ </object>
131
+ <packing>
132
+ <property name="expand">True</property>
133
+ <property name="fill">True</property>
134
+ <property name="padding">17</property>
135
+ <property name="position">0</property>
136
+ </packing>
137
+ </child>
138
+ </object>
139
+ </child>
140
+ </object>
141
+ </interface>
@@ -0,0 +1,140 @@
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">700</property>
7
+ <property name="height_request">700</property>
8
+ <property name="visible">True</property>
9
+ <property name="can_focus">False</property>
10
+ <property name="title" translatable="yes">Select Visual Ruby Project Root</property>
11
+ <property name="modal">True</property>
12
+ <property name="default_width">800</property>
13
+ <property name="default_height">800</property>
14
+ <signal name="destroy" handler="destroy_window" swapped="no"/>
15
+ <child>
16
+ <object class="GtkVBox" id="vbox1">
17
+ <property name="visible">True</property>
18
+ <property name="can_focus">False</property>
19
+ <property name="spacing">10</property>
20
+ <child>
21
+ <object class="GtkLabel" id="label1">
22
+ <property name="visible">True</property>
23
+ <property name="can_focus">False</property>
24
+ <property name="label" translatable="yes">&lt;big&gt;Select from the existing projects, or open a new one.&lt;/big&gt;</property>
25
+ <property name="use_markup">True</property>
26
+ </object>
27
+ <packing>
28
+ <property name="expand">False</property>
29
+ <property name="fill">True</property>
30
+ <property name="padding">9</property>
31
+ <property name="position">0</property>
32
+ </packing>
33
+ </child>
34
+ <child>
35
+ <object class="GtkHBox" id="hbox1">
36
+ <property name="visible">True</property>
37
+ <property name="can_focus">False</property>
38
+ <child>
39
+ <object class="GtkScrolledWindow" id="scrolledwindowProjTree">
40
+ <property name="visible">True</property>
41
+ <property name="can_focus">True</property>
42
+ <property name="hscrollbar_policy">automatic</property>
43
+ <property name="vscrollbar_policy">automatic</property>
44
+ <child>
45
+ <placeholder/>
46
+ </child>
47
+ </object>
48
+ <packing>
49
+ <property name="expand">True</property>
50
+ <property name="fill">True</property>
51
+ <property name="padding">20</property>
52
+ <property name="position">0</property>
53
+ </packing>
54
+ </child>
55
+ </object>
56
+ <packing>
57
+ <property name="expand">True</property>
58
+ <property name="fill">True</property>
59
+ <property name="position">1</property>
60
+ </packing>
61
+ </child>
62
+ <child>
63
+ <object class="GtkHButtonBox" id="hbuttonbox1">
64
+ <property name="visible">True</property>
65
+ <property name="can_focus">False</property>
66
+ <property name="spacing">11</property>
67
+ <property name="layout_style">center</property>
68
+ <child>
69
+ <object class="GtkCheckButton" id="checkBackup">
70
+ <property name="label" translatable="yes">Show Backup</property>
71
+ <property name="visible">True</property>
72
+ <property name="can_focus">True</property>
73
+ <property name="receives_default">False</property>
74
+ <property name="use_action_appearance">False</property>
75
+ <property name="draw_indicator">True</property>
76
+ <signal name="toggled" handler="checkBackup_toggled" swapped="no"/>
77
+ </object>
78
+ <packing>
79
+ <property name="expand">False</property>
80
+ <property name="fill">False</property>
81
+ <property name="padding">5</property>
82
+ <property name="position">0</property>
83
+ </packing>
84
+ </child>
85
+ <child>
86
+ <object class="GtkButton" id="buttonSelect">
87
+ <property name="label" translatable="yes">Select Folder</property>
88
+ <property name="visible">True</property>
89
+ <property name="can_focus">True</property>
90
+ <property name="receives_default">True</property>
91
+ <property name="use_action_appearance">False</property>
92
+ <signal name="clicked" handler="buttonSelect_clicked" swapped="no"/>
93
+ </object>
94
+ <packing>
95
+ <property name="expand">False</property>
96
+ <property name="fill">False</property>
97
+ <property name="position">1</property>
98
+ </packing>
99
+ </child>
100
+ <child>
101
+ <object class="GtkButton" id="buttonCancel">
102
+ <property name="label" translatable="yes">Cancel</property>
103
+ <property name="visible">True</property>
104
+ <property name="can_focus">True</property>
105
+ <property name="receives_default">True</property>
106
+ <property name="use_action_appearance">False</property>
107
+ <signal name="clicked" handler="destroy_window" swapped="no"/>
108
+ </object>
109
+ <packing>
110
+ <property name="expand">False</property>
111
+ <property name="fill">False</property>
112
+ <property name="position">2</property>
113
+ </packing>
114
+ </child>
115
+ <child>
116
+ <object class="GtkButton" id="buttonOpen">
117
+ <property name="label" translatable="yes">Open</property>
118
+ <property name="visible">True</property>
119
+ <property name="can_focus">True</property>
120
+ <property name="receives_default">True</property>
121
+ <property name="use_action_appearance">False</property>
122
+ </object>
123
+ <packing>
124
+ <property name="expand">False</property>
125
+ <property name="fill">False</property>
126
+ <property name="position">3</property>
127
+ </packing>
128
+ </child>
129
+ </object>
130
+ <packing>
131
+ <property name="expand">False</property>
132
+ <property name="fill">True</property>
133
+ <property name="padding">10</property>
134
+ <property name="position">2</property>
135
+ </packing>
136
+ </child>
137
+ </object>
138
+ </child>
139
+ </object>
140
+ </interface>