visualruby 1.0.19 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|