visualruby 1.0.19 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/Splash.rb +40 -0
  3. data/bin/editor/VR_Document.rb +81 -74
  4. data/bin/editor/VR_TabSearch.rb +5 -7
  5. data/bin/editor/VR_Tabs.rb +57 -36
  6. data/bin/editor/VR_TextShell.rb +12 -34
  7. data/bin/editor/VR_TextViewCommon.rb +9 -28
  8. data/bin/main/NewProjectGUI.rb +14 -13
  9. data/bin/main/OpenProject.rb +69 -0
  10. data/bin/main/ProjectChooserView.rb +3 -2
  11. data/bin/main/ProjectTree.rb +25 -0
  12. data/bin/main/RubygemsAPI.rb +15 -11
  13. data/bin/main/VR_ENV.rb +38 -60
  14. data/bin/main/VR_ENV_GLOBAL.rb +45 -44
  15. data/bin/main/VR_File_Tree.rb +29 -21
  16. data/bin/main/VR_Local_Gem_Tree.rb +4 -19
  17. data/bin/main/VR_Main.rb +128 -144
  18. data/bin/main/VR_Remote_Gem_Tree.rb +6 -19
  19. data/bin/main/glade/NewProjectGUI.glade +94 -98
  20. data/bin/main/glade/OpenProject.glade +259 -0
  21. data/bin/main/glade/RubygemsAPI.glade +98 -62
  22. data/bin/main/glade/VR_ENV.glade +46 -55
  23. data/bin/main/glade/VR_ENV_GLOBAL.glade +251 -180
  24. data/bin/main/glade/VR_File_Tree.glade +25 -16
  25. data/bin/main/glade/VR_Local_Gem_Tree.glade +16 -8
  26. data/bin/main/glade/VR_Main.glade +410 -449
  27. data/bin/main/glade/VR_Remote_Gem_Tree.glade +33 -31
  28. data/bin/tools/VR_Tools.rb +60 -46
  29. data/{visualruby_examples → examples}/active_record/active_record.rb +16 -10
  30. data/{visualruby_examples → examples}/active_record/bin/ChoosePerson.rb +7 -0
  31. data/examples/active_record/bin/Person.rb +21 -0
  32. data/examples/active_record/bin/glade/ChoosePerson.glade +89 -0
  33. data/examples/active_record/bin/glade/Person.glade +197 -0
  34. data/{visualruby_examples → examples}/active_record/db/development.sqlite3 +0 -0
  35. data/{visualruby_examples → examples}/active_record2/bin/CompanyGUI.rb +7 -7
  36. data/{visualruby_examples → examples}/active_record2/bin/Employee.rb +0 -0
  37. data/{visualruby_examples → examples}/active_record2/bin/Employer.rb +0 -0
  38. data/{visualruby_examples → examples}/active_record2/bin/Paycheck.rb +0 -0
  39. data/examples/active_record2/bin/glade/CompanyGUI.glade +149 -0
  40. data/examples/active_record2/bin/glade/Employee.glade +126 -0
  41. data/{visualruby_examples → examples}/active_record2/bin/glade/Employer.glade +0 -0
  42. data/{visualruby_examples → examples}/active_record2/bin/glade/Paycheck.glade +0 -0
  43. data/{visualruby_examples → examples}/active_record2/db/development.sqlite3 +0 -0
  44. data/{visualruby_examples → examples}/active_record2/main.rb +15 -9
  45. data/examples/alert_box/bin/AlertBoxDemo.rb +80 -0
  46. data/examples/alert_box/bin/glade/AlertBoxDemo.glade +234 -0
  47. data/examples/alert_box/main.rb +12 -0
  48. data/{visualruby_examples → examples}/all_widgets/bin/AllWidgets.rb +18 -10
  49. data/{visualruby_examples → examples}/all_widgets/bin/glade/AllWidgets.glade +52 -16
  50. data/{visualruby_examples → examples}/all_widgets/bin/splash.png +0 -0
  51. data/examples/all_widgets/main.rb +12 -0
  52. data/{visualruby_examples → examples}/calculator/bin/Calculator.rb +23 -22
  53. data/{visualruby_examples → examples}/calculator/bin/glade/Calculator.glade +81 -51
  54. data/examples/calculator/main.rb +13 -0
  55. data/examples/child_window/bin/ChildWindowDemo.rb +52 -0
  56. data/examples/child_window/bin/ModalWindow.rb +9 -0
  57. data/examples/child_window/bin/ModelessWindow.rb +9 -0
  58. data/examples/child_window/bin/MyChildClass.rb +21 -0
  59. data/examples/child_window/bin/glade/ChildWindowDemo.glade +87 -0
  60. data/examples/child_window/bin/glade/ModalWindow.glade +61 -0
  61. data/examples/child_window/bin/glade/ModelessWindow.glade +61 -0
  62. data/{visualruby_examples → examples}/child_window/bin/glade/MyChildClass.glade +14 -12
  63. data/examples/child_window/main.rb +12 -0
  64. data/{visualruby_examples → examples}/drag_drop/bin/DragDropDemo.rb +9 -10
  65. data/examples/drag_drop/bin/glade/DragDropDemo.glade +161 -0
  66. data/{visualruby_examples → examples}/drag_drop/img/folder.png +0 -0
  67. data/{visualruby_examples → examples}/drag_drop/img/glade.png +0 -0
  68. data/{visualruby_examples → examples}/drag_drop/img/gtk-edit.png +0 -0
  69. data/{visualruby_examples → examples}/drag_drop/img/obj.png +0 -0
  70. data/{visualruby_examples → examples}/drag_drop/img/png.png +0 -0
  71. data/{visualruby_examples → examples}/drag_drop/img/rb.png +0 -0
  72. data/{visualruby_examples → examples}/drag_drop/img/ruby.png +0 -0
  73. data/{visualruby_examples → examples}/drag_drop/img/unknown.png +0 -0
  74. data/examples/drag_drop/main.rb +11 -0
  75. data/examples/filetreeview/bin/ProjectTree.rb +32 -0
  76. data/examples/filetreeview/bin/ProjectTreeGUI.rb +28 -0
  77. data/examples/filetreeview/bin/glade/ProjectTreeGUI.glade +156 -0
  78. data/examples/filetreeview/main.rb +13 -0
  79. data/{visualruby_examples → examples}/listview/bin/SongListView.rb +24 -20
  80. data/{visualruby_examples → examples}/listview/bin/SongListViewGUI.rb +12 -11
  81. data/{visualruby_examples → examples}/listview/bin/audio-x-generic.png +0 -0
  82. data/examples/listview/bin/glade/SongListViewGUI.glade +195 -0
  83. data/examples/listview/main.rb +10 -0
  84. data/examples/listview_objects/bin/DataObject.rb +53 -0
  85. data/{visualruby_examples → examples}/listview_objects/bin/ListViewObjects.rb +7 -4
  86. data/examples/listview_objects/bin/ListViewObjectsGUI.rb +26 -0
  87. data/examples/listview_objects/bin/glade/DataObject.glade +196 -0
  88. data/examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +87 -0
  89. data/examples/listview_objects/main.rb +12 -0
  90. data/examples/settings_file/bin/MainApp.rb +38 -0
  91. data/examples/settings_file/bin/SavableSettings.rb +39 -0
  92. data/examples/settings_file/bin/glade/MainApp.glade +87 -0
  93. data/examples/settings_file/bin/glade/SavableSettings.glade +162 -0
  94. data/examples/settings_file/main.rb +14 -0
  95. data/examples/settings_file/settings.yaml +15 -0
  96. data/examples/simple_ruby_gui/bin/DataObjectGUI.rb +21 -0
  97. data/examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +195 -0
  98. data/examples/simple_ruby_gui/main.rb +16 -0
  99. data/{visualruby_examples → examples}/treeview/bin/MyClass.rb +1 -5
  100. data/examples/treeview/bin/glade/MyClass.glade +24 -0
  101. data/examples/treeview/main.rb +13 -0
  102. data/skeleton/document/New.glade +3 -4
  103. data/skeleton/document/NewWindow.rb +1 -1
  104. data/skeleton/project/bin/MyClass.rb +2 -2
  105. data/skeleton/project/bin/glade/MyClass.glade +12 -26
  106. data/skeleton/project/main.rb +4 -8
  107. data/vr +41 -37
  108. data/vrlib/lib/Alert.rb +67 -0
  109. data/vrlib/lib/DragDrop.rb +90 -0
  110. data/vrlib/lib/GladeGUI.rb +433 -0
  111. data/vrlib/lib/IconHash.rb +18 -0
  112. data/vrlib/lib/SavableClass.rb +56 -0
  113. data/vrlib/lib/SimpleComboBoxEntry.rb +8 -0
  114. data/vrlib/lib/glade/Alert.glade +119 -0
  115. data/vrlib/lib/treeview/FileTreeView.rb +113 -0
  116. data/vrlib/lib/treeview/IterMethods.rb +82 -0
  117. data/vrlib/lib/treeview/ListView.rb +85 -0
  118. data/vrlib/lib/treeview/TreeView.rb +43 -0
  119. data/vrlib/lib/treeview/ViewCommon.rb +370 -0
  120. data/vrlib/lib/treeview/columns/CalendarCol.rb +89 -0
  121. data/vrlib/lib/treeview/columns/CellRendererCombo.rb +66 -0
  122. data/vrlib/lib/treeview/columns/CellRendererDate.rb +45 -0
  123. data/vrlib/lib/treeview/columns/CellRendererObject.rb +57 -0
  124. data/vrlib/lib/treeview/columns/CellRendererPhone.rb +45 -0
  125. data/vrlib/lib/treeview/columns/CellRendererPixbuf.rb +16 -0
  126. data/vrlib/lib/treeview/columns/CellRendererProgress.rb +17 -0
  127. data/vrlib/lib/treeview/columns/CellRendererSpin.rb +37 -0
  128. data/vrlib/lib/treeview/columns/CellRendererText.rb +38 -0
  129. data/vrlib/lib/treeview/columns/CellRendererToggle.rb +47 -0
  130. data/vrlib/lib/treeview/columns/ComboCol.rb +43 -0
  131. data/vrlib/lib/treeview/columns/CurrencyCol.rb +23 -0
  132. data/vrlib/lib/treeview/columns/DateCol.rb +20 -0
  133. data/vrlib/lib/treeview/columns/ImageCol.rb +27 -0
  134. data/vrlib/lib/treeview/columns/ProgressCol.rb +27 -0
  135. data/vrlib/lib/treeview/columns/SpinCol.rb +11 -0
  136. data/vrlib/lib/treeview/columns/TextCol.rb +65 -0
  137. data/vrlib/lib/treeview/columns/TreeViewColumn.rb +93 -0
  138. data/{bin/main/glade/ProjectChooserGUI.glade → vrlib/lib/treeview/columns/glade/CalendarCol.glade} +71 -63
  139. data/{bin/main/glade/Splash.glade → vrlib/lib/treeview/columns/glade/ImageCol.glade} +5 -6
  140. data/vrlib/lib/treeview/columns/glade/TextCol.glade +82 -0
  141. data/vrlib/rdoc_replace.yaml +77 -0
  142. data/vrlib/vrlib.rb +7 -0
  143. metadata +163 -136
  144. data/bin/editor/glade/VR_Document.glade +0 -160
  145. data/bin/main/ProjectChooserGUI.rb +0 -41
  146. data/bin/main/Splash.rb +0 -22
  147. data/visualruby_examples/active_record/.vr_settings.yaml +0 -47
  148. data/visualruby_examples/active_record/bin/Person.rb +0 -13
  149. data/visualruby_examples/active_record/bin/glade/ChoosePerson.glade +0 -61
  150. data/visualruby_examples/active_record/bin/glade/Person.glade +0 -148
  151. data/visualruby_examples/active_record2/.vr_settings.yaml +0 -16
  152. data/visualruby_examples/active_record2/bin/glade/CompanyGUI.glade +0 -167
  153. data/visualruby_examples/active_record2/bin/glade/Employee.glade +0 -123
  154. data/visualruby_examples/all_widgets/.vr_settings.yaml +0 -13
  155. data/visualruby_examples/all_widgets/main.rb +0 -14
  156. data/visualruby_examples/calculator/.vr_settings.yaml +0 -11
  157. data/visualruby_examples/calculator/main.rb +0 -13
  158. data/visualruby_examples/child_window/.vr_settings.yaml +0 -16
  159. data/visualruby_examples/child_window/bin/ChildWindowDemo.rb +0 -39
  160. data/visualruby_examples/child_window/bin/MyChildClass.rb +0 -40
  161. data/visualruby_examples/child_window/bin/glade/ChildWindowDemo.glade +0 -101
  162. data/visualruby_examples/child_window/main.rb +0 -13
  163. data/visualruby_examples/drag_drop/.vr_settings.yaml +0 -12
  164. data/visualruby_examples/drag_drop/bin/glade/DragDropDemo.glade +0 -143
  165. data/visualruby_examples/drag_drop/main.rb +0 -14
  166. data/visualruby_examples/listview/.vr_settings.yaml +0 -12
  167. data/visualruby_examples/listview/bin/glade/SongListViewGUI.glade +0 -220
  168. data/visualruby_examples/listview/main.rb +0 -19
  169. data/visualruby_examples/listview_objects/.vr_settings.yaml +0 -16
  170. data/visualruby_examples/listview_objects/bin/DataObject.rb +0 -32
  171. data/visualruby_examples/listview_objects/bin/DataObjectGUI.rb +0 -41
  172. data/visualruby_examples/listview_objects/bin/ListViewObjectsGUI.rb +0 -18
  173. data/visualruby_examples/listview_objects/bin/glade/DataObject.glade +0 -198
  174. data/visualruby_examples/listview_objects/bin/glade/ListViewObjectsGUI.glade +0 -102
  175. data/visualruby_examples/listview_objects/main.rb +0 -13
  176. data/visualruby_examples/simple_ruby_gui/.vr_settings.yaml +0 -16
  177. data/visualruby_examples/simple_ruby_gui/bin/DataObjectGUI.rb +0 -20
  178. data/visualruby_examples/simple_ruby_gui/bin/glade/DataObjectGUI.glade +0 -163
  179. data/visualruby_examples/simple_ruby_gui/main.rb +0 -16
  180. data/visualruby_examples/treeview/.vr_settings.yaml +0 -12
  181. data/visualruby_examples/treeview/bin/glade/MyClass.glade +0 -48
  182. data/visualruby_examples/treeview/main.rb +0 -14
@@ -3,30 +3,31 @@ class NewProjectGUI
3
3
 
4
4
  include GladeGUI
5
5
 
6
+ attr_accessor :my_var
7
+
6
8
  def initialize(parent)
7
9
  @parent = parent
8
- @parent.proj_path = nil
9
- end
10
-
11
- def before_show
12
- @builder["labelHomePath"].label = File.join(ENV["HOME"], "visualruby" + "/")
10
+ @projects_home = $VR_ENV_GLOBAL.projects_home + "/"
13
11
  end
14
12
 
15
- def buttonCreate__clicked(*a)
13
+ def buttonCreate__clicked(*args)
16
14
  fn = @builder["entryFolderName"].text
17
- fn = fn.gsub(/[^\w\.]/, '_')
18
- path = File.expand_path(File.join("~", "visualruby", fn))
15
+ fn = fn.gsub(/[^\w\.\/]/, '_')
16
+ path = File.join($VR_ENV_GLOBAL.projects_home + "/" + fn)
19
17
  if File.directory?(path)
20
- VR::msg "That folder already exists. You can delete it and try again."
18
+ alert "The folder <b>" + path + "</b> is already ok disk. You can open it using the <b>Open Project</b> button.",
19
+ :headline=> "Project Already Exists", :parent => self, :width => 500
21
20
  else
22
- Dir.mkdir path
21
+ FileUtils.mkpath path
22
+ VR_Tools.copy_skeleton_project(path)
23
23
  @parent.proj_path = path
24
- destroy_window()
24
+ @builder["window1"].destroy
25
25
  end
26
26
  end
27
27
 
28
- def buttonCancel__clicked(*a)
29
- destroy_window()
28
+ def buttonCancel__clicked(*args)
29
+ @my_var = "Hello"
30
+ # @builder["window1"].destroy
30
31
  end
31
32
 
32
33
  end
@@ -0,0 +1,69 @@
1
+
2
+ class OpenProject
3
+
4
+ include GladeGUI
5
+
6
+ def initialize(parent)
7
+ @parent = parent
8
+ @projects_home = $VR_ENV_GLOBAL.projects_home
9
+ end
10
+
11
+ def before_show
12
+ @ftv = ProjectTree.new()
13
+ @ftv.set_show_expanders(false)
14
+ @builder["view"].add(@ftv)
15
+ @ftv.visible = true
16
+ end
17
+
18
+ def ftv__cursor_changed(*a)
19
+ return unless row = @ftv.selected_rows.first
20
+ @ftv.expand_or_collapse_folder()
21
+ end
22
+
23
+ def ftv__row_activated(_self, path, col)
24
+ buttonOpen__clicked
25
+ end
26
+
27
+ def buttonChange__clicked(*a)
28
+ $VR_ENV_GLOBAL.show_glade(self)
29
+ @projects_home = $VR_ENV_GLOBAL.projects_home
30
+ @ftv.refresh(:root => @projects_home)
31
+ @builder[:projects_home].label = @projects_home
32
+ end
33
+
34
+ def buttonDelete__clicked(*a)
35
+ return unless row = @ftv.selected_rows.first
36
+ return if row[:path] == Dir.pwd #can't delete current project
37
+ if alert("Do you really want to delete \n<b>" + row[:path] + " </b>?",
38
+ parent: self, headline: "Warning!", button_yes: "Delete", button_no: "Cancel", width: 400)
39
+ FileUtils.remove_dir(row[:path], true)
40
+ @ftv.refresh()
41
+ end
42
+ end
43
+
44
+ def buttonOpen__clicked(*a)
45
+ return unless row = @ftv.selected_rows.first
46
+ test_file = File.join(row[:path], VR_ENV::SETTINGS_FILE)
47
+ if File.exists?(test_file)
48
+ @parent.proj_path = row[:path]
49
+ buttonCancel__clicked
50
+ else
51
+ # alert("This is not a visualruby project. It's a folder that holds visualruby projects.", :parent=>self, :width=>400)
52
+ @ftv.expand_or_collapse_folder()
53
+ end
54
+ end
55
+
56
+ def buttonNew__clicked(*a)
57
+ old_proj_path = @parent.proj_path
58
+ NewProjectGUI.new(@parent).show_glade(self)
59
+ @builder[:window1].destroy if @parent.proj_path != old_proj_path #new path created!
60
+ end
61
+
62
+
63
+ def buttonCancel__clicked(*a) #save state
64
+ $VR_ENV_GLOBAL.projects_home_open_folders = @ftv.get_open_folders()
65
+ VR::save_yaml($VR_ENV_GLOBAL)
66
+ @builder["window1"].destroy
67
+ end
68
+
69
+ end
@@ -11,7 +11,7 @@ class ProjectChooserView < VR::ListView
11
11
  end
12
12
 
13
13
  def refresh(show_backup = false)
14
- model.set_sort_column_id(1)
14
+ # model.set_sort_column_id(1, :ascending)
15
15
  self.model.clear
16
16
  pattern = ""
17
17
  backup_path = Dir.pwd.gsub(ENV["HOME"], File.join(ENV["HOME"], "visualruby_backup"))
@@ -31,7 +31,8 @@ class ProjectChooserView < VR::ListView
31
31
  row[:file_name] = File.dirname(fn)
32
32
  row[:modified] = DateTime.parse(t.to_s)
33
33
  end
34
- model.set_sort_column_id(id(:modified), Gtk::SORT_DESCENDING)
34
+
35
+ # model.set_sort_column_id(id(:modified), :descending)
35
36
  end
36
37
 
37
38
  end
@@ -0,0 +1,25 @@
1
+
2
+ class ProjectTree < VR::FileTreeView #(change name)
3
+
4
+ attr_accessor :ftv
5
+
6
+ include GladeGUI
7
+
8
+ def initialize()
9
+ path = $VR_ENV_GLOBAL.projects_home
10
+ icon_path = File.expand_path(File.join(File.path(__FILE__), "..", "..", "..", "img"))
11
+ super(path, icon_path)
12
+ @test_block = proc { |folder| has_settings_file?(folder) }
13
+ open_folders($VR_ENV_GLOBAL.projects_home_open_folders)
14
+ end
15
+
16
+ def has_settings_file?(path)
17
+ Find.find(path) do |file|
18
+ if File.basename(file) == VR_ENV::SETTINGS_FILE
19
+ return true
20
+ end
21
+ end
22
+ return false
23
+ end
24
+
25
+ end
@@ -3,16 +3,16 @@ class RubygemsAPI
3
3
 
4
4
  include GladeGUI
5
5
 
6
- CREDENTIALS_FILE = ENV['HOME'] + "/.gem/credentials"
6
+ CREDENTIALS_FILE = File.join(ENV['HOME'], ".gem", "credentials")
7
7
 
8
8
  def initialize
9
- load_glade(__FILE__)
10
9
  uri = URI.parse("https://rubygems.org")
11
10
  @http = Net::HTTP.new(uri.host, uri.port)
12
11
  @http.use_ssl = true
13
12
  @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
13
+ load_glade()
14
14
  end
15
-
15
+
16
16
  def get_key()
17
17
  if File.file?(CREDENTIALS_FILE)
18
18
  return Gem.configuration.rubygems_api_key
@@ -28,17 +28,19 @@ class RubygemsAPI
28
28
  @builder["dialog1"].run do |response_id|
29
29
  if response_id == 1 #Ok Button
30
30
  get_glade_all() #gets @username, @password
31
+ alert "You: " + @username + @password
31
32
  path = "/api/v1/api_key.yaml"
32
33
  @http.start() do |h|
33
34
  req = Net::HTTP::Get.new(path)
34
35
  req.basic_auth @username, @password
35
36
  response = h.request(req)
36
37
  obj = YAML.load(response.body)
38
+ alert obj.to_s
37
39
  key = obj[:rubygems_api_key]
38
40
  if key
39
- File.open(CREDENTIALS_FILE,"w") { |f| f.write(YAML.dump(obj)) }
41
+ File.open(CREDENTIALS_FILE,"w",0600) { |f| f.write(YAML.dump(obj)) }
40
42
  else
41
- VR::Dialog.message_box(obj.values[0])
43
+ alert obj.values[0]
42
44
  end
43
45
  end
44
46
  end
@@ -56,19 +58,21 @@ class RubygemsAPI
56
58
  return obj = YAML.load(response.body)
57
59
  }
58
60
  end
59
-
60
-
61
- # in Windows, the File.open { read } doesn't work for the gemfile.
62
- # also, you must set a variable (bod) to close the io stream
61
+
62
+
63
+ # in Windows, the File.open { read } doesn't work for the gemfile.
64
+ # also, you must set a variable (bod) to close the io stream
63
65
 
64
66
  def push_gem(fn)
65
- return unless key = get_key()
67
+ unless key = get_key()
68
+ return "No Rubygems Credentials"
69
+ end
66
70
  path = "https://rubygems.org/api/v1/gems"
67
71
  req = Net::HTTP::Post.new(path)
68
72
  req.add_field('Authorization', key)
69
73
  req.content_type = 'application/octet-stream'
70
74
  bod = File.open(fn, "rb") {|io| io.read } # no good in win: File.open(fn).read
71
- req.body = bod #must do it like this to close io ??!?!
75
+ req.body = bod #must do it like this to close io ??!?!
72
76
  req.content_length = req.body.size
73
77
  @http.start() do |h|
74
78
  response = h.request(req)
data/bin/main/VR_ENV.rb CHANGED
@@ -1,61 +1,39 @@
1
-
2
- class VR_ENV
3
-
4
- include GladeGUI
5
-
1
+ class VR_ENV
2
+
3
+ include GladeGUI
4
+
6
5
  SETTINGS_FILE = ".vr_settings.yaml"
7
- SETTINGS_FILE_VERSION = 1
8
-
9
- attr_accessor :width, :height, :panel_pos, :rdoc_command_line, :settings_file_version
10
- attr_accessor :run_command_line, :open_files, :open_folders, :current_file
11
-
12
-
13
- def initialize()
14
- @settings_file_version = SETTINGS_FILE_VERSION
15
- @width = 800
16
- @height = 600
17
- @panel_pos = 360
18
- @run_command_line = "ruby main.rb"
19
- @open_files = []
20
- @open_folders = []
21
- @current_file = ""
22
- @rdoc_command_line = "rdoc -x README"
23
- save_yaml()
24
- end
25
-
26
- #todo validate
27
- def buttonSave_clicked
28
- get_glade_variables
29
- save_yaml()
30
- destroy_window()
31
- end
32
-
33
- # def buttonChooseFolder_clicked
34
- # if folder = VR::Dialog.folder_box(@builder)
35
- # if folder =~ /^#{Dir.pwd}\b/
36
- # VR::Dialog.message_box("You must select a backup path outside the project's root folder.")
37
- # else
38
- # @builder['backup_path'].text = folder
39
- # end
40
- # end
41
- # end
42
-
43
- def self.load_yaml()
44
- if File.file?(SETTINGS_FILE)
45
- me = YAML::load(File.open(SETTINGS_FILE).read)
46
- return VR_ENV.new() if me.settings_file_version.nil?
47
- return VR_ENV.new() if me.settings_file_version < SETTINGS_FILE_VERSION
48
- return me
49
- else
50
- VR_ENV.new()
51
- end
52
- end
53
-
54
- def save_yaml()
55
- data = YAML.dump(self)
56
- File.open(Dir.pwd + "/" + SETTINGS_FILE, "w") {|f| f.puts(data)}
57
- return self
58
- end
59
-
60
-
61
- end
6
+
7
+ attr_accessor :width, :height, :panel_pos, :rdoc_command_line
8
+ attr_accessor :run_command_line, :open_files, :open_folders, :current_file
9
+ attr_accessor :notebook_panel_position, :current_line
10
+
11
+ #to add setting, just add to list
12
+ def defaults
13
+ @width ||= 800
14
+ @height ||= 600
15
+ @panel_pos ||= 360
16
+ @notebook_panel_position ||= 400
17
+ @run_command_line ||= "ruby main.rb"
18
+ @open_files ||= []
19
+ @open_folders ||= []
20
+ @current_file ||= ""
21
+ @current_line ||= 1
22
+ @rdoc_command_line ||= "rdoc -x README"
23
+ end
24
+
25
+
26
+ #todo validate
27
+ def buttonSave_clicked
28
+ get_glade_variables
29
+ VR::save_yaml(self)
30
+ @builder["window1"].destroy
31
+ end
32
+
33
+ def buttonCancel__clicked(*args)
34
+ @builder["window1"].destroy
35
+ end
36
+
37
+ end
38
+
39
+
@@ -1,64 +1,65 @@
1
1
 
2
2
  class VR_ENV_GLOBAL
3
3
 
4
- GLOBAL_SETTINGS_FILE = File.join(ENV["HOME"], "visualruby", ".vr_global_settings")
5
- SETTINGS_FILE_VERSION = 1
4
+ GLOBAL_SETTINGS_FILE = File.join(ENV["HOME"], "visualruby", ".global_settings.yaml")
6
5
 
7
6
  include GladeGUI
8
7
 
9
- attr_accessor :browser, :tab_spaces, :glade_path
10
- attr_accessor :font_name, :settings_file_version
11
-
12
- def initialize
13
- @settings_file_version = SETTINGS_FILE_VERSION
14
- @browser = "firefox"
15
- @tab_spaces = 2
16
- @font_name = "Monospace 10"
17
- @glade_path = "glade-gtk2"
18
- save_yaml
8
+ attr_accessor :browser, :tab_spaces, :glade_path, :default_project, :projects_home_open_folders
9
+ attr_accessor :font_name, :settings_file_version, :projects_home
10
+
11
+ def defaults()
12
+ @browser ||= "firefox"
13
+ @tab_spaces ||= 2
14
+ @font_name ||= "Monospace 10"
15
+ @glade_path ||= "glade"
16
+ @projects_home ||= File.join(ENV["HOME"], "visualruby")
17
+ @projects_home_open_folders ||= [@projects_home]
18
+ @default_project ||= File.join(ENV["HOME"], "visualruby", "examples", "treeview")
19
19
  end
20
20
 
21
- def before_show
22
- @glade_box = VR::SimpleComboBoxEntry.new(@glade_path, "glade-gtk2", "glade", "glade-3", "C:\\Program Files (x86)\\Gtk+\\bin\\glade-3")
23
- @builder["hboxGlade"].add(@glade_box)
24
- @browser_box = VR::SimpleComboBoxEntry.new(@browser, "xdg-open", "chromium-browser", "firefox", "google-chrome", "chrome", "chromium", "iexplore", "start iexplore", "start firefox", "start google-chrome", "start chrome", "start chromium", "C:\\Program Files\\iexplorer\\iexplore.exe")
25
- @builder["hboxBrowser"].add(@browser_box)
21
+ def before_show
26
22
  @builder["font_name"].show_size = true
27
23
  end
28
-
29
- #todo validate
30
- def buttonSave_clicked
31
- get_glade_variables
32
- spaces = @builder['tab_spaces'].text.to_i
33
- @tab_spaces = spaces if spaces > 0 and spaces < 9
34
- @glade_path = @glade_box.active_text
35
- @browser = @browser_box.active_text
36
- save_yaml()
37
- destroy_window()
24
+
25
+ def buttonSave_clicked
26
+ if valid?
27
+ get_glade_variables
28
+ @tab_spaces = @builder['tab_spaces'].text.to_i
29
+ VR::save_yaml(self)
30
+ @builder["window1"].destroy
31
+ end
38
32
  end
39
33
 
40
- def save_yaml
41
- data = YAML.dump(self)
42
- File.open(GLOBAL_SETTINGS_FILE, "w") {|f| f.puts(data)}
34
+ def valid? # must validate form, not variables
35
+ tab_spaces = @builder['tab_spaces'].text.to_i
36
+ if tab_spaces < 0 or tab_spaces > 9
37
+ alert("Tab spaces must be between 1 and 9", :parent=>self)
38
+ return false
39
+ elsif not File.directory?(@builder[:projects_home].text)
40
+ alert("Projects home folder is not valid.", :parent=>self)
41
+ return false
42
+ elsif not File.exists?(File.join(@builder[:default_project].text,VR_ENV::SETTINGS_FILE))
43
+ alert("Default project is not valid.", :parent=>self)
44
+ return false
45
+ end
46
+ return true
43
47
  end
44
48
 
45
- def self.load_yaml()
46
- if File.file?(GLOBAL_SETTINGS_FILE)
47
- me = YAML::load(File.open(GLOBAL_SETTINGS_FILE).read)
48
- return VR_ENV_GLOBAL.new() if me.settings_file_version.nil?
49
- return VR_ENV_GLOBAL.new() if me.settings_file_version < SETTINGS_FILE_VERSION
50
- return me
51
- else
52
- VR_ENV_GLOBAL.new()
53
- end
54
- end
49
+ def buttonCancel__clicked(*args)
50
+ @builder["window1"].destroy
51
+ end
55
52
 
56
- def buttonTryGlade__clicked(*argv)
57
- VR_Tools.popen(@glade_box.active_text)
53
+ def buttonTryGlade__clicked(*argv)
54
+ VR_Tools.popen(@glade_path)
58
55
  end
59
56
 
60
- def buttonTryBrowser__clicked(*argv)
61
- VR_Tools.popen(@browser_box.active_text)
57
+ def buttonTryBrowser__clicked(*argv)
58
+ VR_Tools.popen(@browser)
59
+ end
60
+
61
+ def buttonCurrent__clicked(*argv)
62
+ @builder["default_project"].text = Dir.pwd
62
63
  end
63
64
 
64
65
  end
@@ -2,12 +2,13 @@
2
2
  class VR_File_Tree < VR::FileTreeView
3
3
 
4
4
  include GladeGUI
5
-
5
+
6
6
  def initialize(main, icon_path)
7
- super(icon_path)
7
+ super(Dir.pwd,icon_path)
8
8
  @main = main
9
9
  @api = RubygemsAPI.new
10
- load_glade(__FILE__)
10
+ load_glade()
11
+ # set_show_expanders(false)
11
12
  end
12
13
 
13
14
  def self__row_activated(*args)
@@ -15,8 +16,10 @@ class VR_File_Tree < VR::FileTreeView
15
16
  file_name = rows.first[:path]
16
17
  if File.extname(file_name) == ".glade"
17
18
  VR_Tools.popen("#{$VR_ENV_GLOBAL.glade_path} #{file_name} ")
18
- else
19
- @main.tabs.load_tab(file_name) if not File.directory?(file_name)
19
+ elsif File.directory?(file_name)
20
+ expand_or_collapse_folder()
21
+ else
22
+ @main.tabs.load_tab(file_name)
20
23
  end
21
24
  end
22
25
 
@@ -40,7 +43,7 @@ class VR_File_Tree < VR::FileTreeView
40
43
  end
41
44
 
42
45
  def menuRDoc_clicked
43
- return unless @main.tabs.try_to_save_all(false)
46
+ return unless @main.tabs.try_to_save_all(:ask => false)
44
47
  fn = get_selected_path()
45
48
  old_dir = Dir.pwd
46
49
  FileUtils.cd(fn)
@@ -53,20 +56,25 @@ class VR_File_Tree < VR::FileTreeView
53
56
  end
54
57
 
55
58
  def popBuildGem_clicked
56
- file_name = get_selected_path()
57
- @main.tabs.try_to_save_all(false)
58
- gem_builder = "Invalid .gemspec file: " + file_name
59
- begin #try ruby 2.0.0 way first:
60
- spec = Gem::Specification.load(file_name)
61
- gem_builder = "Built Gem:\n" + Gem::Package.build(spec)
62
- rescue #try old way
59
+ file_name = get_selected_path()
60
+ root = File.dirname(file_name)
61
+ unless root == Dir.pwd
62
+ alert("You must create gems from the root folder.")
63
+ return
64
+ end
65
+ @main.tabs.try_to_save_all(:ask => false)
66
+ gem_builder = "Loading .gemspec file: " + file_name + "\n"
67
+ begin
68
+ Gem::Specification.reset
63
69
  spec = Gem::Specification.load(file_name)
64
- b = Gem::Builder.new(spec)
65
- b.build()
66
- gem_builder = b.success()
70
+ gem_file_name = Gem::Package.build(spec)
71
+ gem_builder = gem_builder + "Built Gem: " + gem_file_name + "\n"
72
+ gem_path = File.join(root, gem_file_name)
73
+ add_file(gem_path) if File.exists?(gem_path)
74
+ rescue
75
+ gem_builder = gem_builder + "Error: " + gem_file_name.to_s
67
76
  end
68
- @main.shell.buffer.text = gem_builder
69
- refresh()
77
+ @main.shell.buffer.text = gem_builder
70
78
  end
71
79
 
72
80
  def popGlade_clicked
@@ -85,9 +93,9 @@ class VR_File_Tree < VR::FileTreeView
85
93
  else
86
94
  VR_Tools.popen("#{$VR_ENV_GLOBAL.glade_path} #{glade_file}")
87
95
  end
88
- end
96
+ end
89
97
 
90
- def self__button_release_event(w, event) # right mouse button
98
+ def self__button_release_event(w, event) # right click
91
99
  return unless path = get_selected_path() and event.button == 3
92
100
  if File.file?(path) and (File.extname(path) == ".rb" or File.extname(path) == "")
93
101
  @builder['popFile'].popup(nil, nil, event.button, event.time)
@@ -103,7 +111,7 @@ class VR_File_Tree < VR::FileTreeView
103
111
  def self__key_press_event(view, evt)
104
112
  return unless evt.keyval == 65535 #delete
105
113
  return unless file_name = get_selected_path()
106
- return unless VR::Dialog.ok_box("Delete: " + File.basename(file_name) + "?")
114
+ return unless alert("Delete: <b>" + File.basename(file_name) + "</b> ?" , :button_yes => "Delete", :button_no=>"Cancel", :parent=>self, :headline => "Delete FIle?")
107
115
  if File.file?(file_name)
108
116
  @main.tabs.destroy_file_tab(file_name)
109
117
  File.delete(file_name)
@@ -6,8 +6,8 @@ class VR_Local_Gem_Tree < GemTree
6
6
  def initialize(main)
7
7
  super()
8
8
  @main = main
9
- # set_title(PIX => "Gems on this Computer")
10
- load_glade(__FILE__)
9
+ load_glade()
10
+ parse_signals()
11
11
  end
12
12
 
13
13
  def refresh()
@@ -19,11 +19,10 @@ class VR_Local_Gem_Tree < GemTree
19
19
  add_row( :pix => RUBY_ICON, :gem => "#{gem} (#{v})" )
20
20
  end
21
21
  end
22
- end
23
-
22
+ end
24
23
 
25
24
  #todo
26
- def popViewSpec_clicked;
25
+ def popViewSpec_clicked
27
26
  gem, ver = selected_gem()
28
27
  spec = `gem specification #{gem} -v #{ver}`
29
28
  @main.tabs.load_tab()
@@ -56,19 +55,6 @@ class VR_Local_Gem_Tree < GemTree
56
55
  end
57
56
 
58
57
 
59
- # def popUninstall_clicked
60
- # gem, ver = selected_gem()
61
- # #command = "gem uninstall " + gem_name.gsub("("," -x -v ").gsub(")","")
62
- # command = "gem uninstall #{gem} -x -v '#{ver}' 2>&1"
63
- # @main.shell.buffer.text = VR_Tools.sudo_command(command)
64
- # refresh()
65
- # end
66
-
67
- # def get_name_ver(line)
68
- # match = /^(.*)\s+\((.*)\)/.match(line)
69
- # return match[1], match[2]
70
- # end
71
-
72
58
  def selected_gem
73
59
  row = self.selection.selected[1].split(" (")
74
60
  ver = row[1].gsub(")","")
@@ -77,4 +63,3 @@ class VR_Local_Gem_Tree < GemTree
77
63
 
78
64
  end
79
65
 
80
-