redcar 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +28 -0
- data/README.md +7 -0
- data/ROADMAP.md +11 -1
- data/Rakefile +61 -2
- data/bin/redcar +2 -1
- data/lib/redcar.rb +4 -3
- data/lib/redcar/installer.rb +3 -1
- data/lib/redcar/runner.rb +1 -1
- data/lib/redcar/usage.rb +4 -7
- data/lib/redcar_quick_start.rb +39 -5
- data/plugins/application/features/step_definitions/tree_steps.rb +6 -0
- data/plugins/application/features/support/env.rb +2 -6
- data/plugins/application/icons/redcar_icon_beta_dev.png +0 -0
- data/plugins/application/lib/application/command/executor.rb +8 -0
- data/plugins/application/lib/application/dialog.rb +25 -2
- data/plugins/application/lib/application/notebook.rb +4 -0
- data/plugins/application/lib/application/window.rb +4 -0
- data/plugins/application_swt/lib/application_swt.rb +2 -0
- data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +28 -1
- data/plugins/application_swt/lib/application_swt/menu.rb +4 -0
- data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +4 -0
- data/plugins/application_swt/lib/application_swt/notebook.rb +22 -1
- data/plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb +124 -0
- data/plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb +83 -0
- data/plugins/application_swt/lib/application_swt/swt_wrapper.rb +14 -0
- data/plugins/application_swt/lib/application_swt/tab.rb +28 -6
- data/plugins/application_swt/lib/application_swt/window.rb +88 -43
- data/plugins/application_swt/spec/application_swt/menu/binding_translator_spec.rb +11 -0
- data/plugins/application_swt/spec/spec_helper.rb +1 -1
- data/plugins/auto_completer/lib/auto_completer.rb +3 -20
- data/plugins/auto_pairer/lib/auto_pairer/document_controller.rb +1 -1
- data/plugins/declarations/lib/declarations/parser.rb +2 -2
- data/plugins/declarations/spec/spec_helper.rb +1 -0
- data/plugins/edit_view/features/step_definitions/notebook_steps.rb +3 -3
- data/plugins/edit_view/features/step_definitions/window_steps.rb +24 -9
- data/plugins/edit_view/features/support/env.rb +11 -9
- data/plugins/edit_view/lib/edit_view.rb +106 -6
- data/plugins/edit_view/lib/edit_view/info_speedbar.rb +32 -3
- data/plugins/edit_view/lib/edit_view/select_font_dialog.rb +39 -0
- data/plugins/edit_view/lib/edit_view/select_theme_dialog.rb +34 -0
- data/plugins/edit_view/lib/edit_view/tab_settings.rb +103 -8
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +40 -3
- data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +1 -1
- data/plugins/execute_current_tab/lib/execute_current_tab.rb +15 -6
- data/plugins/project/features/open_directory_tree.feature +10 -0
- data/plugins/project/lib/project.rb +10 -8
- data/plugins/project/lib/project/dir_mirror.rb +6 -5
- data/plugins/project/lib/project/drb_service.rb +16 -0
- data/plugins/project/lib/project/manager.rb +31 -5
- data/plugins/redcar/redcar.rb +115 -19
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +15 -0
- data/textmate/Bundles/Cucumber.tmbundle/Preferences/Cucumber_Plain_Text_Feature_Completions.tmPreferences +3 -3
- data/textmate/Bundles/Cucumber.tmbundle/Preferences/Symbol_list___Scenario.tmPreferences +1 -1
- data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/Cucumber_Plain_Text_Feature.tmLanguage +18 -76
- data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/Cucumber_Steps.tmLanguage +1 -1
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/Animation_animateStyle.tmSnippet +23 -0
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/Event_listen.tmSnippet +16 -0
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/When_Step_Plaintext.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/Event_stop.tmSnippet} +5 -5
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/Then_Step.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/Event_stopListening.tmSnippet} +5 -9
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/Cucumber_Multiline_Steps.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/List_Model.tmSnippet} +10 -7
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/Log_addLoggingMethodsToPrototype.tmSnippet +16 -0
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/Then_Step_Plaintext.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/Log_info.tmSnippet} +5 -5
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/Scenario___heading_only__.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/Log_logProperties.tmSnippet} +5 -7
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/When_Step.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/Model.tmSnippet} +7 -9
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/__L____.tmSnippet +16 -0
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/_insert____.tmSnippet +16 -0
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/_update____.tmSnippet +16 -0
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/controller_get.tmSnippet +16 -0
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/controller_pushScene.tmSnippet +16 -0
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Snippets/controller_serviceRequest.tmSnippet +21 -0
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/Scenario_Outline.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/controller_setupWidget.tmSnippet} +5 -9
- data/textmate/Bundles/{Cucumber.tmbundle/Snippets/Given_Step.tmSnippet → Palm-WebOS-Development.tmbundle/Snippets/controller_showBanner.tmSnippet} +5 -9
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/Syntaxes/Mojo.tmLanguage +713 -0
- data/textmate/Bundles/Palm-WebOS-Development.tmbundle/info.plist +188 -0
- data/textmate/Bundles/Smalltalk.tmbundle/Preferences/GNU_Smalltalk.tmPreferences +32 -0
- data/textmate/Bundles/{asciidoc.tmbundle/Preferences/Symbol_List___Heading.tmPreferences → Smalltalk.tmbundle/Preferences/GNU___Symbol_List___Method.tmPreferences} +7 -6
- data/textmate/Bundles/{Cucumber.tmbundle/Preferences/next_Symbol_list___Scenario.tmPreferences → Smalltalk.tmbundle/Preferences/GNU___Symbol_List___Section.tmPreferences} +7 -4
- data/textmate/Bundles/{asciidoc.tmbundle/Snippets/Bold.tmSnippet → Smalltalk.tmbundle/Preferences/MIST_Smalltalk_Format.tmPreferences} +8 -7
- data/textmate/Bundles/Smalltalk.tmbundle/Syntaxes/GNU_Smalltalk.tmLanguage +493 -0
- data/textmate/Bundles/Smalltalk.tmbundle/Syntaxes/GNU_Smalltalk_2.tmLanguage +807 -0
- data/textmate/Bundles/Smalltalk.tmbundle/Syntaxes/MIST_Smalltalk_Format.tmLanguage +645 -0
- data/textmate/Bundles/Smalltalk.tmbundle/info.plist +21 -0
- data/textmate/Themes/Twilight.tmTheme +4 -0
- metadata +2604 -2586
- data/textmate/Bundles/Cucumber.tmbundle/Preferences/next_Cucumber_Plain_Text_Feature_Completions.tmPreferences +0 -30
- data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/next_Cucumber_Plain_Text_Feature.tmLanguage +0 -221
- data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/next_Cucumber_Steps.tmLanguage +0 -424
- data/textmate/Bundles/asciidoc.tmbundle/Preferences/Typing_Pairs___Defaults.tmPreferences +0 -54
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Anchor.tmSnippet +0 -16
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Comment_Block.tmSnippet +0 -19
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Example_Block.tmSnippet +0 -19
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Italic.tmSnippet +0 -16
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Listing_Block.tmSnippet +0 -20
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Literal_Block.tmSnippet +0 -19
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Passthrough_Block.tmSnippet +0 -19
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Quote_Block.tmSnippet +0 -19
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Quoted.tmSnippet +0 -16
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Sidebar_Block.tmSnippet +0 -19
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Subscript.tmSnippet +0 -16
- data/textmate/Bundles/asciidoc.tmbundle/Snippets/Superscript.tmSnippet +0 -16
- data/textmate/Bundles/asciidoc.tmbundle/Syntaxes/AsciiDoc.tmLanguage +0 -428
- data/textmate/Bundles/asciidoc.tmbundle/info.plist +0 -91
data/CHANGES
CHANGED
@@ -1,4 +1,32 @@
|
|
1
1
|
|
2
|
+
Version 0.3.6 (5 Jun 2010)
|
3
|
+
==========================
|
4
|
+
|
5
|
+
Enhancements:
|
6
|
+
|
7
|
+
* Folders open in the project view on a double click (Nizar Jouini)
|
8
|
+
* Drag and drop tabs (Tim Felgentreff)
|
9
|
+
* Change font and theme commands (Sam Clopton)
|
10
|
+
* Word wrap option (Dan Lucraft)
|
11
|
+
* Toggle line numbers (Dan Lucraft)
|
12
|
+
* Can put TM themes and bundles into .redcar/{Bundles,Themes} (Dan Lucraft)
|
13
|
+
* Home command goes to start of text first then start of line (Dan Lucraft)
|
14
|
+
* The project view has a fixed width that doesn't change if you resize the main window (Tim Felgentreff)
|
15
|
+
* Optional margin that colours text differently past a configurable column. (Dan Lucraft)
|
16
|
+
* Experimental app bundle for Mac OSX. (Tim Felgentreff)
|
17
|
+
* Moved to JRuby 1.5 (Dan Lucraft)
|
18
|
+
* Opens content from standard in (Dan Lucraft)
|
19
|
+
* Dev versions of Redcar have a blue icon (Dan Lucraft)
|
20
|
+
|
21
|
+
New APIs:
|
22
|
+
|
23
|
+
* Annotations column (Dan Lucraft)
|
24
|
+
* Open popup menu and tooltips at cursor/pointer locations (Dan Lucraft)
|
25
|
+
|
26
|
+
New contributors:
|
27
|
+
|
28
|
+
* Nizar Jouini
|
29
|
+
|
2
30
|
Version 0.3.5dev (1 May 2010)
|
3
31
|
=============================
|
4
32
|
|
data/README.md
CHANGED
@@ -50,6 +50,13 @@ To run on OSX:
|
|
50
50
|
|
51
51
|
You may also need to install the rake, rspec and cucumber gems.
|
52
52
|
|
53
|
+
## UPDATING A SOURCE BUILD
|
54
|
+
|
55
|
+
If you are running a source version of Redcar and you have pulled changes from master, then you may have to update your jars by updating and rebuilding:
|
56
|
+
|
57
|
+
$ git submodule update
|
58
|
+
$ jruby -S rake build
|
59
|
+
|
53
60
|
## PROBLEMS?
|
54
61
|
|
55
62
|
* Irc at #redcar on irc.freenode.net
|
data/ROADMAP.md
CHANGED
@@ -8,7 +8,6 @@ Features still to port
|
|
8
8
|
* Tests passing on 3 platforms
|
9
9
|
* Full project support
|
10
10
|
* Text/Source/Ruby bundle commands ported
|
11
|
-
* Drag and drop of tabs
|
12
11
|
* Packaged for one-click install on 3 platforms
|
13
12
|
* Ruby on Rails/HTML/CSS/YAML bundle commands ported
|
14
13
|
|
@@ -29,3 +28,14 @@ And then for 1.0...
|
|
29
28
|
* Recently opened files
|
30
29
|
* more ... ?
|
31
30
|
|
31
|
+
|
32
|
+
Notes on features
|
33
|
+
=================
|
34
|
+
|
35
|
+
Macros
|
36
|
+
------
|
37
|
+
|
38
|
+
* Cursor movement keys are not commands:
|
39
|
+
- alt left/right
|
40
|
+
- shift alt left/right
|
41
|
+
- cmd left/right
|
data/Rakefile
CHANGED
@@ -78,7 +78,7 @@ end
|
|
78
78
|
|
79
79
|
spec = Gem::Specification.new do |s|
|
80
80
|
s.name = "redcar"
|
81
|
-
s.version = "0.3.
|
81
|
+
s.version = "0.3.6"
|
82
82
|
s.summary = "A JRuby text editor."
|
83
83
|
s.author = "Daniel Lucraft"
|
84
84
|
s.email = "dan@fluentradical.com"
|
@@ -132,13 +132,72 @@ Rake::GemPackageTask.new(spec) do |pkg|
|
|
132
132
|
pkg.gem_spec = spec
|
133
133
|
end
|
134
134
|
|
135
|
+
desc "Build a MacOS X App bundle"
|
136
|
+
task :app_bundle do
|
137
|
+
require 'erb'
|
138
|
+
|
139
|
+
redcar_icon = "redcar_icon_beta.png"
|
140
|
+
|
141
|
+
bundle_contents = File.join("pkg", "Redcar.app", "Contents")
|
142
|
+
macos_dir = File.join(bundle_contents, "MacOS")
|
143
|
+
resources_dir = File.join(bundle_contents, "Resources")
|
144
|
+
FileUtils.mkdir_p macos_dir
|
145
|
+
FileUtils.mkdir_p resources_dir
|
146
|
+
|
147
|
+
info_plist_template = ERB.new <<-PLIST
|
148
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
149
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
150
|
+
<plist version="1.0">
|
151
|
+
<dict>
|
152
|
+
<key>CFBundleExecutable</key>
|
153
|
+
<string>redcar</string>
|
154
|
+
<key>CFBundleIconFile</key>
|
155
|
+
<string><%= redcar_icon %></string>
|
156
|
+
<key>CFBundleIdentifier</key>
|
157
|
+
<string>com.redcareditor.Redcar</string>
|
158
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
159
|
+
<string>6.0</string>
|
160
|
+
<key>CFBundlePackageType</key>
|
161
|
+
<string>APPL</string>
|
162
|
+
<key>CFBundleSignature</key>
|
163
|
+
<string>????</string>
|
164
|
+
<key>CFBundleVersion</key>
|
165
|
+
<string><%= spec.version %></string>
|
166
|
+
<key>LSMinimumSystemVersion</key>
|
167
|
+
<string>10.5</string>
|
168
|
+
</dict>
|
169
|
+
</plist>
|
170
|
+
PLIST
|
171
|
+
File.open(File.join(bundle_contents, "Info.plist"), "w") do |f|
|
172
|
+
f << info_plist_template.result(binding)
|
173
|
+
end
|
174
|
+
|
175
|
+
File.open(File.join(macos_dir, "redcar"), "w") do |f|
|
176
|
+
f << '#!/bin/sh
|
177
|
+
DIR=$(cd "$(dirname "$0")"; pwd)
|
178
|
+
REDCAR=$(cd "$(dirname "${DIR}/../Resources/bin/redcar")"; pwd)
|
179
|
+
ruby $REDCAR/redcar $@'
|
180
|
+
end
|
181
|
+
File.chmod 0777, File.join(macos_dir, "redcar")
|
182
|
+
|
183
|
+
spec.files.each do |f|
|
184
|
+
FileUtils.mkdir_p File.join(resources_dir, File.dirname(f))
|
185
|
+
FileUtils.cp_r f, File.join(resources_dir, f), :remove_destination => true
|
186
|
+
end
|
187
|
+
|
188
|
+
system "#{File.join(macos_dir, "redcar")} install"
|
189
|
+
|
190
|
+
FileUtils.cp_r File.join(resources_dir, "plugins", "application", "icons", redcar_icon),
|
191
|
+
resources_dir, :remove_destination => true
|
192
|
+
end
|
193
|
+
|
135
194
|
desc 'Clean up (sanitize) the Textmate files for packaging'
|
136
195
|
task :clean_textmate do
|
137
196
|
# rename files to be x-platform safe
|
138
197
|
Dir["textmate/Bundles/*.tmbundle/*/**/*"].each do |fn|
|
139
198
|
if File.file?(fn)
|
140
199
|
bits = fn.split("/").last.split(".")[0..-2].join("_")
|
141
|
-
new_basename = bits.gsub(" ", "_").gsub(/[^\w_]/, "__") + File.extname(fn)
|
200
|
+
new_basename = bits.gsub(" ", "_").gsub(/[^\w_]/, "__").gsub(/\\./, "__") + File.extname(fn)
|
142
201
|
new_fn = File.join(File.dirname(fn), new_basename)
|
143
202
|
# p [fn,new_fn]
|
144
203
|
next if new_fn == fn
|
data/bin/redcar
CHANGED
@@ -14,6 +14,7 @@ elsif ARGV.first == '--associate_with_any_right_click'
|
|
14
14
|
installer = Redcar::Installer.new
|
15
15
|
installer.associate_with_any_right_click
|
16
16
|
else
|
17
|
+
Redcar.read_stdin
|
17
18
|
exit if Redcar.try_to_load_via_drb
|
18
19
|
require File.join(File.dirname(__FILE__), %w(.. lib redcar))
|
19
20
|
Redcar.spin_up
|
@@ -21,4 +22,4 @@ else
|
|
21
22
|
Redcar.load
|
22
23
|
Redcar::Top.start(ARGV)
|
23
24
|
Redcar.pump
|
24
|
-
end
|
25
|
+
end
|
data/lib/redcar.rb
CHANGED
@@ -40,10 +40,10 @@ require 'yaml'
|
|
40
40
|
#
|
41
41
|
# and so on.
|
42
42
|
module Redcar
|
43
|
-
VERSION = '0.3.
|
43
|
+
VERSION = '0.3.6'
|
44
44
|
VERSION_MAJOR = 0
|
45
45
|
VERSION_MINOR = 3
|
46
|
-
VERSION_RELEASE =
|
46
|
+
VERSION_RELEASE = 6
|
47
47
|
|
48
48
|
ENVIRONMENTS = [:user, :debug, :test]
|
49
49
|
|
@@ -57,6 +57,7 @@ module Redcar
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def self.environment
|
60
|
+
raise "no environment set" unless @environment
|
60
61
|
@environment
|
61
62
|
end
|
62
63
|
|
@@ -150,7 +151,7 @@ module Redcar
|
|
150
151
|
attr_accessor :app
|
151
152
|
attr_reader :gui
|
152
153
|
end
|
153
|
-
|
154
|
+
|
154
155
|
# Set the application GUI.
|
155
156
|
def self.gui=(gui)
|
156
157
|
raise "can't set gui twice" if @gui
|
data/lib/redcar/installer.rb
CHANGED
@@ -67,6 +67,8 @@ module Redcar
|
|
67
67
|
/jface/org.eclipse.jface.text_3.5.0.jar
|
68
68
|
/jface/org.eclipse.osgi.jar
|
69
69
|
/jface/org.eclipse.text_3.5.0.v20090513-2000.jar
|
70
|
+
/jface/org.eclipse.core.resources.jar
|
71
|
+
/jface/org.eclipse.core.jobs.jar
|
70
72
|
)
|
71
73
|
|
72
74
|
JRUBY_JAR_DIR = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
@@ -77,7 +79,7 @@ module Redcar
|
|
77
79
|
"/jruby/joni.jar"
|
78
80
|
]
|
79
81
|
|
80
|
-
JRUBY << "http://jruby.
|
82
|
+
JRUBY << "http://jruby.org.s3.amazonaws.com/downloads/1.5.0/jruby-complete-1.5.0.jar"
|
81
83
|
|
82
84
|
JOPENSSL = {
|
83
85
|
"/jruby/bcmail-jdk14-139-#{Redcar::VERSION}.jar" => "lib/openssl/lib/bcmail-jdk14-139.jar",
|
data/lib/redcar/runner.rb
CHANGED
@@ -11,7 +11,7 @@ module Redcar
|
|
11
11
|
# our vendored jarred one (useful for gems).
|
12
12
|
def spin_up
|
13
13
|
bin = "#{File.dirname(__FILE__)}/../../bin/redcar"
|
14
|
-
jruby_complete = File.expand_path(File.join(File.dirname(__FILE__), "..", "jruby-complete-1.
|
14
|
+
jruby_complete = File.expand_path(File.join(File.dirname(__FILE__), "..", "jruby-complete-1.5.0.jar"))
|
15
15
|
unless File.exist?(jruby_complete)
|
16
16
|
puts "\nCan't find jruby jar at #{jruby_complete}, did you run 'redcar install' ?"
|
17
17
|
exit 1
|
data/lib/redcar/usage.rb
CHANGED
@@ -19,13 +19,10 @@ module Redcar
|
|
19
19
|
puts
|
20
20
|
puts "Usage: redcar [OPTIONS] [FILE|DIR]*"
|
21
21
|
puts
|
22
|
-
puts "
|
23
|
-
puts "
|
24
|
-
puts "
|
25
|
-
puts "--
|
26
|
-
puts " --verbose Set $VERBOSE to true"
|
27
|
-
puts " --debug JRuby debugging mode: activates the profiling commands in the Debug menu"
|
28
|
-
puts ""
|
22
|
+
puts " --multiple-instance Don't attempt to open files and dirs in an already running instance"
|
23
|
+
puts " --debug JRuby debugging mode: activates the profiling commands in the Debug menu"
|
24
|
+
puts "--untitled-file=PATH Open the given file as an untitled tab."
|
25
|
+
puts " --ignore-stdin Ignore stdin"
|
29
26
|
#puts "To associate with right click in windows explorer:"
|
30
27
|
#puts
|
31
28
|
#puts " C:> redcar --associate_with_any_right_click"
|
data/lib/redcar_quick_start.rb
CHANGED
@@ -2,9 +2,34 @@ require 'socket'
|
|
2
2
|
|
3
3
|
module Redcar
|
4
4
|
DRB_PORT = 10021
|
5
|
+
DONT_READ_STDIN_ARG = "--ignore-stdin"
|
6
|
+
|
7
|
+
def self.read_stdin
|
8
|
+
if not $stdin.tty? and not ARGV.include?(DONT_READ_STDIN_ARG)
|
9
|
+
data = ""
|
10
|
+
begin
|
11
|
+
chunk = $stdin.read_nonblock(1024)
|
12
|
+
data << chunk
|
13
|
+
while chunk
|
14
|
+
chunk = $stdin.read_nonblock(1024)
|
15
|
+
data << chunk
|
16
|
+
end
|
17
|
+
rescue Errno::EAGAIN
|
18
|
+
retry
|
19
|
+
rescue EOFError
|
20
|
+
end
|
21
|
+
|
22
|
+
if data.size > 0
|
23
|
+
require 'tmpdir'
|
24
|
+
file = File.join(Dir.tmpdir, "tmp#{$$}.txt")
|
25
|
+
File.open(file, 'w') {|f| f.write data}
|
26
|
+
ARGV.unshift "--untitled-file=#{file}", DONT_READ_STDIN_ARG
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
5
30
|
|
6
31
|
def self.try_to_load_via_drb
|
7
|
-
return if ARGV.find{|arg| arg == "--multiple-instance" || arg == '--help' || arg == '-h'}
|
32
|
+
return if ARGV.find {|arg| arg == "--multiple-instance" || arg == '--help' || arg == '-h'}
|
8
33
|
begin
|
9
34
|
begin
|
10
35
|
TCPSocket.new('127.0.0.1', DRB_PORT).close
|
@@ -19,10 +44,19 @@ module Redcar
|
|
19
44
|
|
20
45
|
if ARGV.any?
|
21
46
|
ARGV.each do |arg|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
47
|
+
if File.file?(arg) or File.directory?(arg)
|
48
|
+
if drb.open_item_drb(File.expand_path(arg)) != 'ok'
|
49
|
+
return
|
50
|
+
end
|
51
|
+
end
|
52
|
+
if arg =~ /--untitled-file=(.*)/
|
53
|
+
path = $1
|
54
|
+
if File.file?(path)
|
55
|
+
if drb.open_item_untitled(File.expand_path(path)) != 'ok'
|
56
|
+
return
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
26
60
|
end
|
27
61
|
else
|
28
62
|
return unless drb.open_item_drb('just_bring_to_front')
|
@@ -16,3 +16,9 @@ Then /^I should (not )?see "([^\"]*)" in the tree$/ do |bool, rows|
|
|
16
16
|
on_top or on_2
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
Then /^the directory tree width should be the default$/ do
|
21
|
+
width = Redcar.app.focussed_window.treebook.trees.last.controller.viewer.control.bounds.width
|
22
|
+
default = Redcar::ApplicationSWT::Window::TREEBOOK_WIDTH + Redcar::ApplicationSWT::Window::SASH_WIDTH
|
23
|
+
raise "The directory tree width was #{width}, expected #{default}" unless width == default
|
24
|
+
end
|
@@ -24,16 +24,12 @@ module SwtHelper
|
|
24
24
|
end.compact
|
25
25
|
end
|
26
26
|
|
27
|
-
def sash_form
|
28
|
-
active_shell.getChildren.to_a.first
|
29
|
-
end
|
30
|
-
|
31
27
|
def tree_book
|
32
|
-
|
28
|
+
active_shell.children.to_a.first.children.to_a.first
|
33
29
|
end
|
34
30
|
|
35
31
|
def top_tree
|
36
|
-
r = tree_book
|
32
|
+
r = tree_book
|
37
33
|
r.extend(TreeHelpers)
|
38
34
|
r
|
39
35
|
end
|
Binary file
|
@@ -22,14 +22,22 @@ module Redcar
|
|
22
22
|
result = @command_instance.execute
|
23
23
|
rescue Object => e
|
24
24
|
@command_instance.error = e
|
25
|
+
print_command_error(e)
|
25
26
|
rescue java.lang.StackOverflowError => e
|
26
27
|
@command_instance.error = e
|
28
|
+
print_command_error(e)
|
27
29
|
end
|
28
30
|
record
|
29
31
|
result
|
30
32
|
end
|
31
33
|
|
32
34
|
private
|
35
|
+
|
36
|
+
def print_command_error(e)
|
37
|
+
puts "Error in command #{@command_instance.class}"
|
38
|
+
puts e.class.to_s + ": " + e.message
|
39
|
+
puts e.backtrace
|
40
|
+
end
|
33
41
|
|
34
42
|
def record
|
35
43
|
if Redcar.app.history
|
@@ -75,8 +75,31 @@ module Redcar
|
|
75
75
|
end
|
76
76
|
|
77
77
|
# Shows a tool tip to the user, at the cursor location.
|
78
|
-
|
79
|
-
|
78
|
+
#
|
79
|
+
# Allowed locations:
|
80
|
+
# * :cursor - the location of the text cursor in the focussed text widget
|
81
|
+
# * :pointer - the location of the mouse pointer
|
82
|
+
#
|
83
|
+
# If :cursor is specified with no open tab, it will default to :pointer.
|
84
|
+
#
|
85
|
+
# @param [String] message
|
86
|
+
# @param [Symbol] location
|
87
|
+
def self.tool_tip(message, location)
|
88
|
+
Redcar.gui.dialog_adapter.tool_tip(message, location)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Shows a popup menu to the user.
|
92
|
+
#
|
93
|
+
# Allowed locations:
|
94
|
+
# * :cursor - the location of the text cursor in the focussed text widget
|
95
|
+
# * :pointer - the location of the mouse pointer
|
96
|
+
#
|
97
|
+
# If :cursor is specified with no open tab, it will default to :pointer.
|
98
|
+
#
|
99
|
+
# @param [Redcar::Menu] menu
|
100
|
+
# @param [Symbol] location
|
101
|
+
def self.popup_menu(menu, location)
|
102
|
+
Redcar.gui.dialog_adapter.popup_menu(menu, location)
|
80
103
|
end
|
81
104
|
end
|
82
105
|
end
|
@@ -16,6 +16,8 @@ require "application_swt/menu"
|
|
16
16
|
require "application_swt/menu/binding_translator"
|
17
17
|
require "application_swt/notebook"
|
18
18
|
require "application_swt/notebook/drag_and_drop_listener"
|
19
|
+
require "application_swt/notebook/tab_transfer"
|
20
|
+
require "application_swt/notebook/tab_drag_and_drop_listener"
|
19
21
|
require "application_swt/speedbar"
|
20
22
|
require "application_swt/treebook"
|
21
23
|
require "application_swt/window"
|
@@ -89,14 +89,41 @@ module Redcar
|
|
89
89
|
{:button => button, :value => dialog.getValue}
|
90
90
|
end
|
91
91
|
|
92
|
-
def tool_tip(message)
|
92
|
+
def tool_tip(message, location)
|
93
93
|
tool_tip = Swt::Widgets::ToolTip.new(parent_shell, Swt::SWT::ICON_INFORMATION)
|
94
94
|
tool_tip.set_message(message)
|
95
95
|
tool_tip.set_visible(true)
|
96
|
+
tool_tip.set_location(*get_coordinates(location))
|
97
|
+
end
|
98
|
+
|
99
|
+
def popup_menu(menu, location)
|
100
|
+
window = Redcar.app.focussed_window
|
101
|
+
menu = ApplicationSWT::Menu.new(window.controller, menu, nil, Swt::SWT::POP_UP)
|
102
|
+
menu.move(*get_coordinates(location))
|
103
|
+
menu.show
|
96
104
|
end
|
97
105
|
|
98
106
|
private
|
99
107
|
|
108
|
+
def get_coordinates(location)
|
109
|
+
edit_view = EditView.focussed_tab_edit_view
|
110
|
+
if location == :cursor and not edit_view
|
111
|
+
location = :pointer
|
112
|
+
end
|
113
|
+
case location
|
114
|
+
when :cursor
|
115
|
+
location = edit_view.controller.mate_text.viewer.get_text_widget.get_location_at_offset(edit_view.cursor_offset)
|
116
|
+
x, y = location.x, location.y
|
117
|
+
widget_offset = edit_view.controller.mate_text.viewer.get_text_widget.to_display(0,0)
|
118
|
+
x += widget_offset.x
|
119
|
+
y += widget_offset.y
|
120
|
+
when :pointer
|
121
|
+
location = ApplicationSWT.display.get_cursor_location
|
122
|
+
x, y = location.x, location.y
|
123
|
+
end
|
124
|
+
[x, y]
|
125
|
+
end
|
126
|
+
|
100
127
|
def file_dialog(type, options)
|
101
128
|
dialog = Swt::Widgets::FileDialog.new(parent_shell, type)
|
102
129
|
if options[:filter_path]
|