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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dfad4ea2ab9c0dc40116d83d3527b2c37eca5707
|
|
4
|
+
data.tar.gz: 0545e9a2bb43d8f25456f002be2f6de45d4a909d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9d7a3d89a2780640937a303dd9eb51688e5cffa914241a808862fd84c589f7b92713f98927aa3f0963d70a936b435aad41061614372cea9ff159755d9074bd8d
|
|
7
|
+
data.tar.gz: 87860ddce8263104e234e071876270923cefc297eb8162ceb911f756c4bd44c3e74e492841c0c77aba890bb82ef2de4d2acec013b44b3bf434134d2827e0a873
|
data/Splash.rb
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require "gtk3"
|
|
2
|
+
|
|
3
|
+
def load_everything
|
|
4
|
+
require "rubygems"
|
|
5
|
+
require "gtksourceview3"
|
|
6
|
+
require "yaml" #needed
|
|
7
|
+
require "net/http" #needed
|
|
8
|
+
require "net/https" #needed
|
|
9
|
+
require "find" #needed
|
|
10
|
+
require "fileutils" #needed
|
|
11
|
+
require "rubygems/installer"
|
|
12
|
+
require "rubygems/uninstaller"
|
|
13
|
+
require "rubygems/package"
|
|
14
|
+
require "rubygems/specification"
|
|
15
|
+
require "date"
|
|
16
|
+
|
|
17
|
+
require 'require_all'
|
|
18
|
+
|
|
19
|
+
require_rel 'vrlib/lib/'
|
|
20
|
+
require_rel 'bin/'
|
|
21
|
+
|
|
22
|
+
VR_Main.new(ARGV).show_glade()
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
$splash = Gtk::Window.new()
|
|
27
|
+
image = Gtk::Image.new(:file => "img/splash.png")
|
|
28
|
+
$splash.add image
|
|
29
|
+
$splash.decorated = false
|
|
30
|
+
$splash.position = :center_always
|
|
31
|
+
$splash.show_all
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
GLib::Timeout.add(40) {
|
|
35
|
+
load_everything
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Gtk.main
|
|
39
|
+
|
|
40
|
+
|
data/bin/editor/VR_Document.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
class VR_Document <
|
|
3
|
-
|
|
2
|
+
class VR_Document < GtkSource::View
|
|
3
|
+
|
|
4
4
|
include GladeGUI
|
|
5
5
|
include VR_TextViewCommon
|
|
6
6
|
|
|
@@ -12,36 +12,36 @@ class VR_Document < Gtk::SourceView
|
|
|
12
12
|
super()
|
|
13
13
|
@title = title_label #reference to label on tab
|
|
14
14
|
reload_from_disk(full_path_file)
|
|
15
|
-
signal_connect("visibility_notify_event") { scroll_to_cursor() }
|
|
16
15
|
hilight_current_line = true
|
|
17
16
|
show_right_margin = true
|
|
18
17
|
right_margin_position = 80
|
|
19
18
|
auto_indent = true
|
|
20
|
-
lang =
|
|
19
|
+
lang = GtkSource::LanguageManager.new.get_language(get_language(full_path_file))
|
|
21
20
|
buffer.language = lang
|
|
22
21
|
buffer.highlight_syntax = true
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
buffer.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
buffer.highlight_matching_brackets = false
|
|
23
|
+
@hilight = buffer.create_tag("hilight", { "background" => "#FFF0A0" })
|
|
24
|
+
buffer.signal_connect("changed") { remove_tag(@hilight) }
|
|
25
|
+
self.show_line_numbers = true
|
|
26
|
+
self.insert_spaces_instead_of_tabs = true
|
|
27
|
+
self.indent_width = $VR_ENV_GLOBAL.tab_spaces.to_i
|
|
28
|
+
self.highlight_current_line = true
|
|
29
|
+
self.set_cursor_visible(true)
|
|
30
30
|
update_style()
|
|
31
31
|
end
|
|
32
|
-
|
|
33
|
-
def get_language(fn)
|
|
34
|
-
case File.extname(full_path_file)
|
|
35
|
-
when ".rb", "", ".gemspec" ; return "ruby"
|
|
36
|
-
when ".erb", ".html" ; return "html"
|
|
37
|
-
else ; return ""
|
|
38
|
-
end
|
|
32
|
+
|
|
33
|
+
def get_language(fn)
|
|
34
|
+
case File.extname(full_path_file)
|
|
35
|
+
when ".rb", "", ".gemspec" ; return "ruby"
|
|
36
|
+
when ".erb", ".html" ; return "html"
|
|
37
|
+
else ; return ""
|
|
38
|
+
end
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def update_style()
|
|
42
|
-
|
|
42
|
+
override_font(Pango::FontDescription.new($VR_ENV_GLOBAL.font_name))
|
|
43
43
|
tab_array = Pango::TabArray.new(1, true)
|
|
44
|
-
tab_array.set_tab(0, Pango::TAB_LEFT, $VR_ENV_GLOBAL.tab_spaces * 8)
|
|
44
|
+
tab_array.set_tab(0, Pango::TAB_LEFT, $VR_ENV_GLOBAL.tab_spaces.to_i * 8)
|
|
45
45
|
set_tabs(tab_array)
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -49,24 +49,24 @@ class VR_Document < Gtk::SourceView
|
|
|
49
49
|
@full_path_file = fn
|
|
50
50
|
@title.label = File.basename(@full_path_file)
|
|
51
51
|
buffer.text = File.open(@full_path_file, "r").read if File.file?(@full_path_file.to_s) #protect against nil to_s
|
|
52
|
-
|
|
52
|
+
buffer.modified = false
|
|
53
53
|
@modified_time = mod_time()
|
|
54
54
|
end
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
def modified_time_matches()
|
|
57
|
-
return true if @modified_time == mod_time()
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if resp == 2 # Keep Current Version
|
|
57
|
+
return true if @modified_time == mod_time()
|
|
58
|
+
text = "The file: <b>#{@full_path_file}</b>\n has been modified since you loaded it:\n\nYou loaded: #{@modified_time}\nOn disk: #{mod_time().to_s}\n\nDo you wnat to keep this version?\n"
|
|
59
|
+
ans = alert(text, headline: "Warning!", width: 400, button_yes: "Keep Current Version",
|
|
60
|
+
button_no: "Reload Disk Version", button_cancel: "Cancel", parent: @main)
|
|
61
|
+
if ans == true # yes, keep current
|
|
63
62
|
write_to_disk()
|
|
64
63
|
return true
|
|
65
|
-
elsif
|
|
64
|
+
elsif ans == false # Reload From Disk
|
|
66
65
|
reload_from_disk()
|
|
67
66
|
end
|
|
68
67
|
return false #abort!
|
|
69
|
-
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
70
|
|
|
71
71
|
def try_to_save(ask = true)
|
|
72
72
|
return false if not modified_time_matches()
|
|
@@ -84,7 +84,6 @@ class VR_Document < Gtk::SourceView
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def write_to_disk(fn = @full_path_file)
|
|
87
|
-
# modify_base(Gtk::STATE_NORMAL, Gdk::Color.parse("#FFFFFF"))
|
|
88
87
|
@full_path_file = fn
|
|
89
88
|
File.open(fn, "w") { |f| f.puts(buffer.text) }
|
|
90
89
|
buffer.modified = false
|
|
@@ -92,105 +91,113 @@ class VR_Document < Gtk::SourceView
|
|
|
92
91
|
@title.label = File.basename(fn)
|
|
93
92
|
return true
|
|
94
93
|
end
|
|
95
|
-
|
|
94
|
+
|
|
96
95
|
def save_changes?
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return @title.label == "Untitled" ? save_as() : write_to_disk()
|
|
103
|
-
elsif
|
|
96
|
+
answer = alert "Save chages to: <b> #{File.basename(@full_path_file)}</b> ?",
|
|
97
|
+
parent: @main,
|
|
98
|
+
button_yes: "Save Changes", button_no: "Discard Changes",
|
|
99
|
+
headline: "Save Changes?", button_cancel: "Cancel"
|
|
100
|
+
if answer == true # save
|
|
101
|
+
return @title.label == "Untitled" ? save_as() : write_to_disk()
|
|
102
|
+
elsif answer == false # Discard Changes
|
|
104
103
|
reload_from_disk()
|
|
105
104
|
return true #continue without saving
|
|
106
|
-
else
|
|
107
|
-
return false #abort!
|
|
108
105
|
end
|
|
109
|
-
|
|
106
|
+
return false #abort!
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
|
|
110
110
|
|
|
111
111
|
#todo update file tree, parent window?
|
|
112
112
|
def save_as() # returns false or complete file name.
|
|
113
|
-
dialog = Gtk::FileChooserDialog.new(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
dialog = Gtk::FileChooserDialog.new(
|
|
114
|
+
title: "Save File As...",
|
|
115
|
+
parent: @main.builder[:window1],
|
|
116
|
+
action: :save,
|
|
117
|
+
buttons: [["_Cancel", :cancel], ["_Save", :accept]])
|
|
118
|
+
|
|
119
|
+
dialog.current_folder = File.dirname(@full_path_file)
|
|
120
120
|
dialog.current_name = VR_Document.get_class_title(buffer.text)
|
|
121
121
|
resp = dialog.run
|
|
122
122
|
dialog.hide
|
|
123
|
-
if resp ==
|
|
123
|
+
if resp == :accept
|
|
124
124
|
write_to_disk(dialog.filename)
|
|
125
|
-
@main.file_tree.
|
|
125
|
+
@main.file_tree.refresh()
|
|
126
126
|
return true
|
|
127
127
|
end
|
|
128
128
|
return false
|
|
129
|
-
end
|
|
129
|
+
end
|
|
130
130
|
|
|
131
|
-
def jump_to_line(line_num, search_str=
|
|
131
|
+
def jump_to_line(line_num, search_str = nil)
|
|
132
|
+
while (Gtk.events_pending?)
|
|
133
|
+
Gtk.main_iteration
|
|
134
|
+
end
|
|
132
135
|
hilight_line(line_num)
|
|
133
|
-
iter = buffer.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
select_text(line_num, search_str)
|
|
136
|
+
iter = buffer.get_iter_at(:line => line_num - 1)
|
|
137
|
+
buffer.place_cursor(iter)
|
|
138
|
+
mark = buffer.get_mark("insert")
|
|
139
|
+
scroll_to_mark(mark, 0.1, true, 0.0, 0.5)
|
|
140
|
+
select_text(line_num - 1, search_str) if search_str
|
|
139
141
|
end
|
|
140
142
|
|
|
141
143
|
def hilight_line(line)
|
|
142
|
-
remove_tag(
|
|
143
|
-
apply_tag_to_line(line,
|
|
144
|
+
remove_tag(@hilight)
|
|
145
|
+
apply_tag_to_line(line-1, @hilight, nil)
|
|
144
146
|
end
|
|
145
147
|
|
|
146
|
-
def indent(spaces)
|
|
148
|
+
def indent(spaces)
|
|
149
|
+
return unless buffer.has_selection?
|
|
147
150
|
s,e = get_selected_lines()
|
|
148
151
|
(s..e).each do |i|
|
|
149
|
-
iter = buffer.
|
|
152
|
+
iter = buffer.get_iter_at(:line => i)
|
|
150
153
|
buffer.insert(iter, " " * spaces)
|
|
151
154
|
end
|
|
152
155
|
end
|
|
153
156
|
|
|
154
|
-
def unindent(spaces)
|
|
157
|
+
def unindent(spaces)
|
|
158
|
+
return unless buffer.has_selection?
|
|
155
159
|
s,e = get_selected_lines()
|
|
156
160
|
(s..e).each do |i|
|
|
157
161
|
iter, iter_end = get_line_iters(i)
|
|
158
162
|
if iter_end.offset >= iter.offset + 2
|
|
159
163
|
iter_end.offset = iter.offset + 2
|
|
160
|
-
t = buffer.get_text(iter, iter_end)
|
|
164
|
+
t = buffer.get_text(iter, iter_end, false)
|
|
161
165
|
buffer.delete(iter, iter_end)
|
|
162
166
|
buffer.insert(iter,t.lstrip)
|
|
163
167
|
end
|
|
164
168
|
end
|
|
165
169
|
end
|
|
166
170
|
|
|
167
|
-
def comment()
|
|
171
|
+
def comment()
|
|
172
|
+
return unless buffer.has_selection?
|
|
168
173
|
s,e = get_selected_lines()
|
|
169
174
|
(s..e).each do |i|
|
|
170
175
|
iter, iter_end = get_line_iters(i)
|
|
171
176
|
iter_end.offset = iter.offset+1
|
|
172
|
-
chr = buffer.get_text(iter, iter_end)
|
|
177
|
+
chr = buffer.get_text(iter, iter_end, false)
|
|
173
178
|
buffer.insert(iter, "#")
|
|
174
179
|
end
|
|
175
180
|
end
|
|
176
181
|
|
|
177
|
-
def un_comment()
|
|
182
|
+
def un_comment()
|
|
183
|
+
return unless buffer.has_selection?
|
|
178
184
|
s,e = get_selected_lines()
|
|
179
185
|
(s..e).each do |i|
|
|
180
186
|
iter, iter_end = get_line_iters(i)
|
|
181
187
|
next if iter_end.offset <= iter.offset + 1
|
|
182
188
|
iter_end.offset = iter.offset+1
|
|
183
|
-
chr = buffer.get_text(iter, iter_end)
|
|
189
|
+
chr = buffer.get_text(iter, iter_end, false)
|
|
184
190
|
buffer.delete(iter, iter_end) if chr == "#"
|
|
185
191
|
end
|
|
186
192
|
end
|
|
187
193
|
|
|
188
|
-
def get_selected_lines()
|
|
189
|
-
|
|
190
|
-
|
|
194
|
+
def get_selected_lines()
|
|
195
|
+
return unless buffer.has_selection?
|
|
196
|
+
s,e = buffer.selection_bounds
|
|
197
|
+
return s.line, e.line
|
|
191
198
|
end
|
|
192
199
|
|
|
193
|
-
def replace(str)
|
|
200
|
+
def replace(str)
|
|
194
201
|
return unless buffer.has_selection?
|
|
195
202
|
s,e = buffer.selection_bounds
|
|
196
203
|
buffer.delete(s,e)
|
|
@@ -199,7 +206,7 @@ class VR_Document < Gtk::SourceView
|
|
|
199
206
|
|
|
200
207
|
def selected_text()
|
|
201
208
|
s,e = buffer.selection_bounds
|
|
202
|
-
buffer.get_text(s, e)
|
|
209
|
+
buffer.get_text(s, e, false)
|
|
203
210
|
end
|
|
204
211
|
|
|
205
212
|
def empty?()
|
data/bin/editor/VR_TabSearch.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
module VR_TabSearch
|
|
1
|
+
|
|
2
|
+
module VR_TabSearch
|
|
3
3
|
|
|
4
4
|
def find_in_tabs(str)
|
|
5
5
|
out = "Search Results for: " + str + "\n"
|
|
@@ -13,7 +13,7 @@ module VR_TabSearch #grh
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def find_in_all(str)
|
|
16
|
-
out = "Search
|
|
16
|
+
out = "Search Results for: " + str + "\n"
|
|
17
17
|
Find.find(Dir.pwd) do |path|
|
|
18
18
|
Find.prune if path =~ /\/glade$/ or path =~ /\/doc$/ #or File.directory?(path)
|
|
19
19
|
if (File.extname(path) == ".rb" or File.extname(path) == ".erb") and not File.directory?(path)
|
|
@@ -41,10 +41,8 @@ module VR_TabSearch #grh
|
|
|
41
41
|
|
|
42
42
|
def jump_to(line)
|
|
43
43
|
return if line.nil?
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
end
|
|
47
|
-
@docs[self.page].jump_to_line(line[:line] - 1, line[:search_str])
|
|
44
|
+
load_tab(line[:path])
|
|
45
|
+
@docs[self.page].jump_to_line(line[:line], line[:search_str])
|
|
48
46
|
end
|
|
49
47
|
|
|
50
48
|
end
|
data/bin/editor/VR_Tabs.rb
CHANGED
|
@@ -5,35 +5,50 @@ class VR_Tabs < Gtk::Notebook
|
|
|
5
5
|
|
|
6
6
|
include VR_TabSearch
|
|
7
7
|
|
|
8
|
-
def initialize(main)
|
|
8
|
+
def initialize(main)
|
|
9
|
+
super()
|
|
9
10
|
@docs = Array.new
|
|
10
11
|
@main = main
|
|
11
|
-
@pix_close = Gdk::Pixbuf.new(File.dirname(__FILE__) + '/../../img/close.png')
|
|
12
|
-
|
|
12
|
+
@pix_close = Gdk::Pixbuf.new(File.dirname(__FILE__) + '/../../img/close.png')
|
|
13
|
+
@close_filename = File.dirname(__FILE__) + '/../../img/close.png'
|
|
14
|
+
self.scrollable = true #after super
|
|
15
|
+
self.expand = true
|
|
13
16
|
end
|
|
14
17
|
|
|
15
18
|
def update_style_all()
|
|
16
19
|
@docs.each { |doc| doc.update_style() }
|
|
17
20
|
end
|
|
21
|
+
|
|
22
|
+
def try_to_save_all(flags)
|
|
23
|
+
ask = flags[:ask]
|
|
24
|
+
passed = true
|
|
25
|
+
@docs.each do |doc|
|
|
26
|
+
unless doc.try_to_save(ask)
|
|
27
|
+
passed = false
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
(n_pages).times { destroy_tab() } if flags[:close]
|
|
31
|
+
return passed
|
|
32
|
+
end
|
|
18
33
|
|
|
19
|
-
|
|
20
|
-
def try_to_save_all(ask = true)
|
|
21
|
-
@docs.each do |doc|
|
|
22
|
-
return false unless doc.try_to_save(ask)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def try_to_close_all(ask = true)
|
|
28
|
-
return false unless try_to_save_all(ask)
|
|
29
|
-
(n_pages).times { destroy_tab() }
|
|
30
|
-
end
|
|
34
|
+
##todo update file_tree!
|
|
35
|
+
# def try_to_save_all(ask = true)
|
|
36
|
+
# @docs.each do |doc|
|
|
37
|
+
# return false unless doc.try_to_save(ask)
|
|
38
|
+
# end
|
|
39
|
+
# end
|
|
40
|
+
#
|
|
41
|
+
##todo update file_tree!
|
|
42
|
+
# def try_to_close_all(ask = true)
|
|
43
|
+
# return false unless try_to_save_all(ask)
|
|
44
|
+
# (n_pages).times { destroy_tab() }
|
|
45
|
+
# end
|
|
31
46
|
|
|
32
47
|
|
|
33
48
|
def switch_to(path)
|
|
34
49
|
i = @docs.index{ |d| d.full_path_file == path }
|
|
35
|
-
return false if i.nil?
|
|
36
|
-
|
|
50
|
+
return false if i.nil?
|
|
51
|
+
self.page = i if i != self.page
|
|
37
52
|
return true
|
|
38
53
|
end
|
|
39
54
|
|
|
@@ -45,16 +60,16 @@ class VR_Tabs < Gtk::Notebook
|
|
|
45
60
|
end
|
|
46
61
|
|
|
47
62
|
def load_tab(full_path_file = Dir.pwd + "/Untitled")
|
|
48
|
-
|
|
49
|
-
tab = Gtk::HBox.new
|
|
63
|
+
return if switch_to(full_path_file)
|
|
50
64
|
box = Gtk::EventBox.new
|
|
51
|
-
|
|
65
|
+
tab = Gtk::Box.new(:horizontal)
|
|
66
|
+
img = Gtk::Image.new(:pixbuf => @pix_close)
|
|
52
67
|
box.add(img)
|
|
53
68
|
title = Gtk::Label.new(File.basename(full_path_file))
|
|
54
|
-
tab.pack_start(title, true, true, 2)
|
|
55
|
-
tab.pack_start(box)
|
|
56
|
-
|
|
57
|
-
text = VR_Document.new(full_path_file, title, @main)
|
|
69
|
+
tab.pack_start(title, :expand=>true, :fill=>true, :padding=>2)
|
|
70
|
+
tab.pack_start(box)
|
|
71
|
+
tab.show_all #needed
|
|
72
|
+
text = VR_Document.new(full_path_file, title, @main)
|
|
58
73
|
child = Gtk::ScrolledWindow.new
|
|
59
74
|
child.add(text)
|
|
60
75
|
box.signal_connect("button_release_event") {remove_id(text.object_id)}
|
|
@@ -62,28 +77,34 @@ class VR_Tabs < Gtk::Notebook
|
|
|
62
77
|
if @docs.size == 1 and @docs[0].buffer.text.strip == ""
|
|
63
78
|
@docs[0] = text
|
|
64
79
|
self.remove_page(0)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
self.page = self.n_pages-1
|
|
69
|
-
@docs[self.page] = text
|
|
80
|
+
end
|
|
81
|
+
child.show_all #needed
|
|
82
|
+
append_page(child, tab)
|
|
83
|
+
self.page = self.n_pages - 1
|
|
84
|
+
@docs[self.page] = text
|
|
70
85
|
end
|
|
71
86
|
|
|
72
87
|
#used when little 'x' image is clicked to close.
|
|
73
88
|
def remove_id(object_id)
|
|
74
|
-
i = @docs.index { |doc| doc.object_id == object_id }
|
|
75
|
-
|
|
76
|
-
|
|
89
|
+
i = @docs.index { |doc| doc.object_id == object_id }
|
|
90
|
+
if @docs[i].try_to_save(true)
|
|
91
|
+
destroy_tab(i)
|
|
92
|
+
end
|
|
77
93
|
end
|
|
78
94
|
|
|
79
95
|
#if its there, destroys it
|
|
80
96
|
def destroy_file_tab(file_name)
|
|
81
97
|
destroy_tab() if switch_to(file_name)
|
|
82
98
|
end
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
99
|
+
|
|
100
|
+
# this spits out a bunch of warnings on remove_page
|
|
101
|
+
def destroy_tab(tab = self.page)
|
|
102
|
+
self.page = self.page - 1 # stops some warnings
|
|
103
|
+
VR_Tools.clear_events
|
|
104
|
+
# self.set_tab_label(get_nth_page(tab), nil)
|
|
105
|
+
self.remove_page(tab)
|
|
106
|
+
VR_Tools.clear_events
|
|
107
|
+
@docs.delete_at(tab)
|
|
87
108
|
load_tab() if @docs.empty?
|
|
88
109
|
end
|
|
89
110
|
|
data/bin/editor/VR_TextShell.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
class VR_TextShell <
|
|
2
|
+
class VR_TextShell < GtkSource::View
|
|
3
3
|
|
|
4
4
|
include VR_TextViewCommon
|
|
5
5
|
|
|
@@ -9,49 +9,25 @@ class VR_TextShell < Gtk::TextView
|
|
|
9
9
|
@current_line = 0
|
|
10
10
|
@lines = [] #needed
|
|
11
11
|
self.editable = false
|
|
12
|
-
buffer.create_tag("blue", { "foreground" => "#0000A0", "underline" => Pango::UNDERLINE_SINGLE })
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
signal_connect("
|
|
16
|
-
|
|
12
|
+
@blue = buffer.create_tag("blue", { "foreground" => "#0000A0", "underline" => Pango::UNDERLINE_SINGLE })
|
|
13
|
+
self.highlight_current_line = true
|
|
14
|
+
# @hilight = buffer.create_tag("hilight", { "background" => "#FFF0A0" } )
|
|
15
|
+
signal_connect("button_release_event") { puts "release" ; jump_to(line_at_cursor() - 1) } #buffer's lines start at 1
|
|
16
|
+
signal_connect("key_release_event") { jump_to(line_at_cursor() - 1) } #buffer's lines start at 1
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
# @buffer.signal_connect("changed") {
|
|
20
|
-
# eob_mark =
|
|
21
|
-
#@output.buffer.create_mark(nil,@output.buffer.start_iter.forward_to_end,false)
|
|
22
|
-
# @output.scroll_mark_onscreen(eob_mark)
|
|
23
|
-
# }
|
|
24
|
-
|
|
25
|
-
def buffer__move_cursor
|
|
26
|
-
remove_tag("hilight")
|
|
27
|
-
# place_cursor_onscreen
|
|
28
|
-
line = line_at_cursor()
|
|
29
|
-
apply_tag_to_line(line, "hilight")
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# def buffer__changed
|
|
33
|
-
# iter = buffer.end_iter
|
|
34
|
-
# scroll_to_iter(iter, 0.0, false, 0, 0)
|
|
35
|
-
# self.queue_draw
|
|
36
|
-
## self.hide
|
|
37
|
-
#
|
|
38
|
-
## self.show
|
|
39
|
-
#
|
|
40
|
-
# end
|
|
41
19
|
|
|
42
20
|
def hilight_links(text, jump_to_first)
|
|
43
21
|
self.buffer.text = text
|
|
44
22
|
first_valid_line = load_lines()
|
|
45
23
|
(0..@lines.size - 1).each do |i|
|
|
46
24
|
next if @lines[i].nil?
|
|
47
|
-
apply_tag_to_line(i,
|
|
25
|
+
apply_tag_to_line(i, @blue, @lines[i][:file_name] + ":" + @lines[i][:line].to_s)
|
|
48
26
|
end
|
|
49
27
|
@current_line = 0
|
|
50
28
|
@tabs.jump_to(first_valid_line) if jump_to_first and first_valid_line
|
|
51
29
|
end
|
|
52
30
|
|
|
53
|
-
|
|
54
|
-
|
|
55
31
|
def load_lines()
|
|
56
32
|
@lines = []
|
|
57
33
|
first = nil
|
|
@@ -72,10 +48,12 @@ class VR_TextShell < Gtk::TextView
|
|
|
72
48
|
end
|
|
73
49
|
|
|
74
50
|
def jump_to(line_no = @current_line+1)
|
|
75
|
-
|
|
51
|
+
puts "fed: " + line_no.to_s
|
|
52
|
+
return false if line_no > @lines.size
|
|
76
53
|
@current_line = line_no
|
|
77
|
-
remove_tag(
|
|
78
|
-
apply_tag_to_line(@current_line,
|
|
54
|
+
# remove_tag(@hilight)
|
|
55
|
+
# apply_tag_to_line(@current_line, @hilight, nil)
|
|
56
|
+
puts "jumping to " + line_no.to_s + " = " + @lines[line_no].to_s
|
|
79
57
|
@tabs.jump_to(@lines[@current_line])
|
|
80
58
|
return false #must return false for button_up event
|
|
81
59
|
end
|
|
@@ -1,34 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
module VR_TextViewCommon
|
|
4
2
|
|
|
5
|
-
def get_line_text(line)
|
|
6
|
-
return nil if line > buffer.line_count - 1
|
|
7
|
-
iter, iter_end = get_line_iters(line)
|
|
8
|
-
return buffer.get_text(iter, iter_end)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
3
|
def get_line_iters(line, search_str = nil)
|
|
12
|
-
s = buffer.
|
|
4
|
+
s = buffer.get_iter_at(:line => line)
|
|
13
5
|
e = get_end_iter(s)
|
|
14
6
|
if !search_str.nil?
|
|
15
|
-
|
|
7
|
+
s, e = s.forward_search(search_str, :text_only, e)
|
|
16
8
|
end
|
|
17
9
|
return s, e
|
|
18
10
|
end
|
|
19
11
|
|
|
20
12
|
def select_text(line, search_str = nil)
|
|
21
13
|
s, e = get_line_iters(line, search_str)
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
return if s.nil? or e.nil?
|
|
15
|
+
buffer.place_cursor(s)
|
|
16
|
+
# buffer.move_mark(buffer.get_mark("insert"),s)
|
|
17
|
+
buffer.move_mark(buffer.get_mark("selection_bound"), e)
|
|
24
18
|
end
|
|
25
19
|
|
|
26
20
|
|
|
27
|
-
# def get_text_scan_iters(line_num, search_str)
|
|
28
|
-
# st, en = get_line_iters(line_num)
|
|
29
|
-
# s, e = st.forward_search(search_str, Gtk::TextIter::SEARCH_TEXT_ONLY, en)
|
|
30
|
-
# end
|
|
31
|
-
|
|
32
21
|
def apply_tag_to_line(line, tag, search_str = nil)
|
|
33
22
|
s, e = get_line_iters(line, search_str)
|
|
34
23
|
buffer.apply_tag(tag, s, e)
|
|
@@ -40,7 +29,7 @@ module VR_TextViewCommon
|
|
|
40
29
|
if iter.line == buffer.line_count - 1 # last line
|
|
41
30
|
return buffer.end_iter
|
|
42
31
|
end
|
|
43
|
-
return buffer.
|
|
32
|
+
return buffer.get_iter_at(:line => iter.line+1)
|
|
44
33
|
end
|
|
45
34
|
|
|
46
35
|
def remove_tag(tag)
|
|
@@ -48,18 +37,10 @@ module VR_TextViewCommon
|
|
|
48
37
|
buffer.remove_tag(tag, s, e)
|
|
49
38
|
end
|
|
50
39
|
|
|
51
|
-
|
|
52
40
|
def line_at_cursor()
|
|
53
41
|
cursor_pos = buffer.cursor_position
|
|
54
|
-
iter = buffer.
|
|
55
|
-
return iter.line
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def scroll_to_cursor()
|
|
59
|
-
os = buffer.cursor_position
|
|
60
|
-
return if os > buffer.char_count - 1 or os == 0
|
|
61
|
-
iter = buffer.get_iter_at_offset(os)
|
|
62
|
-
scroll_to_iter(iter, 0.0, true, 1.0, 0.5)
|
|
42
|
+
iter = buffer.get_iter_at(:offset => cursor_pos) #get_iter_at_offset depricated
|
|
43
|
+
return iter.line + 1
|
|
63
44
|
end
|
|
64
45
|
|
|
65
46
|
end
|