redcar 0.11.0dev → 0.11
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.
- data/CHANGES +14 -1
- data/README.md +28 -8
- data/Rakefile +23 -18
- data/bin/redcar +9 -4
- data/lib/redcar.rb +42 -4
- data/lib/redcar/installer.rb +7 -2
- data/lib/redcar/logger.rb +64 -0
- data/lib/redcar/runner.rb +17 -8
- data/lib/redcar/usage.rb +2 -0
- data/plugins/application/features/step_definitions/tree_steps.rb +4 -4
- data/plugins/application/features/support/env.rb +6 -6
- data/plugins/application/lib/application.rb +31 -3
- data/plugins/application/lib/application/command.rb +6 -0
- data/plugins/application/lib/application/command/executor.rb +0 -1
- data/plugins/application/lib/application/commands/application_commands.rb +21 -0
- data/plugins/application/lib/application/commands/notebook_commands.rb +73 -0
- data/plugins/application/lib/application/commands/tab_commands.rb +105 -0
- data/plugins/application/lib/application/commands/treebook_commands.rb +117 -0
- data/plugins/application/lib/application/commands/window_commands.rb +68 -0
- data/plugins/{tree/lib → application/lib/application}/tree.rb +0 -4
- data/plugins/{tree/lib → application/lib/application}/tree/command.rb +0 -0
- data/plugins/{tree/lib → application/lib/application}/tree/controller.rb +0 -0
- data/plugins/{tree/lib → application/lib/application}/tree/mirror.rb +0 -0
- data/plugins/application/spec/application/keymap/builder_spec.rb +1 -1
- data/plugins/application/spec/application/menu/builder_spec.rb +2 -2
- data/plugins/application_swt/lib/application_swt.rb +4 -2
- data/plugins/application_swt/lib/swt/vtab_label.rb +6 -3
- data/plugins/auto_indenter/lib/auto_indenter/document_controller.rb +6 -3
- data/plugins/clojure/lib/clojure.rb +2 -2
- data/plugins/core/lib/core.rb +0 -4
- data/plugins/core/lib/core/gui.rb +2 -4
- data/plugins/core/lib/core/plugin/storage.rb +68 -21
- data/plugins/core/spec/core/base_storage_spec.rb +81 -0
- data/plugins/core/spec/core/shared_storage_spec.rb +49 -0
- data/plugins/core/spec/core/storage_spec.rb +13 -63
- data/plugins/declarations/lib/declarations.rb +3 -1
- data/plugins/document_search/features/replace.feature +29 -20
- data/plugins/document_search/lib/document_search/find_speedbar.rb +4 -1
- data/plugins/edit_view/features/indentation_commands.feature +6 -5
- data/plugins/edit_view/features/step_definitions/notebook_steps.rb +4 -4
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +7 -7
- data/plugins/edit_view/features/step_definitions/window_steps.rb +2 -2
- data/plugins/edit_view/lib/edit_view.rb +15 -1
- data/plugins/edit_view/lib/edit_view/modified_tabs_checker.rb +7 -7
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +7 -6
- data/plugins/execute_current_tab/lib/execute_current_tab.rb +1 -1
- data/plugins/groovy/lib/groovy.rb +3 -3
- data/plugins/groovy/lib/groovy/commands.rb +1 -1
- data/plugins/help/lib/help/view_controller.rb +5 -0
- data/plugins/help/views/index.html.erb +10 -1
- data/plugins/html_view/features/step_definitions/html_view_steps.rb +1 -1
- data/plugins/html_view/features/support/env.rb +0 -15
- data/plugins/html_view/lib/html_view.rb +3 -4
- data/plugins/html_view/lib/html_view/commands.rb +1 -1
- data/plugins/key_bindings/lib/key_bindings.rb +34 -0
- data/plugins/key_bindings/plugin.rb +8 -0
- data/plugins/{tree → key_bindings}/spec/spec_helper.rb +0 -0
- data/plugins/line_tools/features/lower_text.feature +3 -4
- data/plugins/line_tools/lib/line_tools.rb +6 -5
- data/plugins/mirah/lib/mirah.rb +2 -2
- data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +5 -3
- data/plugins/project/features/open_directory_tree.feature +1 -1
- data/plugins/project/features/step_definitions/file_steps.rb +5 -5
- data/plugins/project/features/step_definitions/find_file_steps.rb +2 -3
- data/plugins/project/features/support/env.rb +4 -0
- data/plugins/project/lib/project.rb +15 -9
- data/plugins/project/lib/project/commands.rb +46 -16
- data/plugins/project/lib/project/dir_controller.rb +1 -1
- data/plugins/project/lib/project/dir_mirror.rb +3 -2
- data/plugins/project/lib/project/drb_service.rb +3 -1
- data/plugins/project/lib/project/file_list.rb +99 -21
- data/plugins/project/lib/project/find_file_dialog.rb +8 -24
- data/plugins/project/lib/project/manager.rb +68 -12
- data/plugins/project/lib/project/project_tree_controller.rb +1 -1
- data/plugins/project/plugin.rb +1 -2
- data/plugins/project_search/features/word_search.feature +1 -1
- data/plugins/project_search/lib/project_search.rb +16 -6
- data/plugins/project_search/lib/project_search/commands.rb +15 -28
- data/plugins/project_search/lib/project_search/hit.rb +4 -0
- data/plugins/project_search/lib/project_search/lucene_index.rb +14 -4
- data/plugins/project_search/lib/project_search/views/_file.html.erb +11 -11
- data/plugins/project_search/lib/project_search/word_search.rb +22 -4
- data/plugins/project_search/spec/project_search/word_search_spec.rb +2 -2
- data/plugins/redcar/redcar.rb +140 -588
- data/plugins/repl/features/step_definitions/repl_steps.rb +3 -3
- data/plugins/repl/features/support/fake_repl.rb +1 -1
- data/plugins/ruby/lib/ruby.rb +4 -4
- data/plugins/runnables/features/fixtures/alternate.ruby +1 -0
- data/plugins/runnables/features/fixtures/line_app.rb +1 -0
- data/plugins/runnables/features/fixtures/name_app.rb +1 -0
- data/plugins/runnables/features/fixtures/params_app.rb +1 -0
- data/plugins/runnables/features/fixtures/runnable_app.rb +1 -0
- data/plugins/runnables/lib/runnables.rb +21 -0
- data/plugins/runnables/lib/runnables/command_output_controller.rb +14 -9
- data/plugins/runnables/lib/runnables/output_processor.rb +4 -4
- data/plugins/runnables/lib/runnables/running_process_checker.rb +6 -6
- data/plugins/runnables/plugin.rb +1 -2
- data/plugins/scm/lib/scm.rb +18 -18
- data/plugins/scm/lib/scm/commit_mirror.rb +2 -2
- data/plugins/scm/lib/scm/scm_changes_controller.rb +1 -1
- data/plugins/scm_hg/lib/scm_hg.rb +1 -1
- data/plugins/snippets/lib/snippets/document_controller.rb +46 -40
- data/plugins/swt/lib/swt.rb +2 -0
- data/plugins/test_runner/lib/test_runner.rb +1 -0
- data/plugins/test_runner/lib/test_runner/jasmine_test_runner.rb +15 -0
- data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +21 -5
- data/plugins/textmate/lib/textmate.rb +5 -1
- data/plugins/textmate/lib/textmate/preference.rb +4 -0
- data/plugins/textmate/lib/textmate/snippet.rb +0 -2
- data/plugins/textmate/lib/textmate/tree_mirror.rb +6 -5
- data/plugins/textmate/plugin.rb +1 -1
- data/plugins/textmate/vendor/redcar-bundles/Bundles/C.tmbundle/Syntaxes/C.plist +2 -2
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Clojure.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Cucumber.tmbundle/Syntaxes/Cucumber_Plain_Text_Feature.tmLanguage +0 -4
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Cucumber.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/info.plist +3 -1
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Palm-WebOS-Development.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/RedcarRepl.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/SQL.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Scala.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Smalltalk.tmbundle/Preferences/GNU_Smalltalk.tmPreferences +1 -1
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Smalltalk.tmbundle/Preferences/MIST_Smalltalk_Format.tmPreferences +1 -1
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Smalltalk.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Vala.tmbundle/info.plist +4 -2
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Webrat.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/YAML.tmbundle/Syntaxes/YAML.plist +1 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/groovy.tmbundle/info.plist +2 -0
- data/plugins/textmate/vendor/redcar-bundles/Themes/Twilight.tmTheme +0 -2
- data/plugins/todo_list/lib/todo_list.rb +3 -3
- data/plugins/todo_list/lib/todo_list/todo_controller.rb +1 -1
- data/plugins/web_bookmarks/features/step_definitions/web_steps.rb +1 -1
- data/plugins/web_bookmarks/lib/web_bookmarks.rb +11 -4
- data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +1 -1
- data/plugins/web_bookmarks/plugin.rb +1 -2
- metadata +29 -20
- data/plugins/core/lib/core/logger.rb +0 -28
- data/plugins/file_parser/lib/file_parser.rb +0 -125
- data/plugins/file_parser/plugin.rb +0 -7
- data/plugins/tree/plugin.rb +0 -9
data/lib/redcar/usage.rb
CHANGED
@@ -28,6 +28,8 @@ module Redcar
|
|
28
28
|
puts " --home-dir=PATH Use the specified directory as Redcar home directory"
|
29
29
|
puts " -w Open the specified files and wait until they are closed"
|
30
30
|
puts " -l[NUMBER] Open a specified file at line NUMBER. Multiple comma-seperated args for multiple files are allowed."
|
31
|
+
puts " --show-log Print Redcar's log to stdout"
|
32
|
+
puts " --log-level=LEVEL Set the log level to LEVEL (default is info, options are debug, info, warn, error)"
|
31
33
|
#puts "To associate with right click in windows explorer:"
|
32
34
|
#puts
|
33
35
|
#puts " C:> redcar --associate_with_any_right_click"
|
@@ -7,19 +7,19 @@ When /^I expand the tree row "([^\"]*)"$/ do |row|
|
|
7
7
|
end
|
8
8
|
|
9
9
|
When /^I toggle tree visibility$/ do
|
10
|
-
Redcar::
|
10
|
+
Redcar::Application::ToggleTreesCommand.new.run
|
11
11
|
end
|
12
12
|
|
13
13
|
When "I close the tree" do
|
14
|
-
Redcar::
|
14
|
+
Redcar::Application::CloseTreeCommand.new.run
|
15
15
|
end
|
16
16
|
|
17
17
|
When /^I switch (up|down) a tree$/ do |type|
|
18
18
|
case type
|
19
19
|
when "down"
|
20
|
-
Redcar::
|
20
|
+
Redcar::Application::SwitchTreeDownCommand.new.run
|
21
21
|
when "up"
|
22
|
-
Redcar::
|
22
|
+
Redcar::Application::SwitchTreeUpCommand.new.run
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -200,14 +200,16 @@ def close_everything
|
|
200
200
|
dialogs.each {|d| d.controller.model.close }
|
201
201
|
end
|
202
202
|
Redcar.app.windows.each do |win|
|
203
|
+
if p = Redcar::Project::Manager.in_window(win)
|
204
|
+
Swt.sync_exec do
|
205
|
+
p.close
|
206
|
+
end
|
207
|
+
end
|
203
208
|
win.treebook.trees.each do |tree|
|
204
209
|
Swt.sync_exec do
|
205
210
|
win.treebook.remove_tree(tree)
|
206
211
|
end
|
207
212
|
end
|
208
|
-
if Redcar::Project::Manager.in_window(win)
|
209
|
-
Redcar::Project.window_projects.delete(win)
|
210
|
-
end
|
211
213
|
win.notebooks.each do |notebook|
|
212
214
|
while tab = notebook.tabs.first
|
213
215
|
Swt.sync_exec do
|
@@ -215,7 +217,7 @@ def close_everything
|
|
215
217
|
end
|
216
218
|
end
|
217
219
|
end
|
218
|
-
|
220
|
+
while win.notebooks.length > 1
|
219
221
|
Swt.sync_exec do
|
220
222
|
win.close_notebook
|
221
223
|
end
|
@@ -253,5 +255,3 @@ end
|
|
253
255
|
at_exit {
|
254
256
|
FileUtils.rm_rf(Redcar::Plugin::Storage.storage_dir)
|
255
257
|
}
|
256
|
-
|
257
|
-
|
@@ -5,9 +5,9 @@ require 'application/command/executor'
|
|
5
5
|
require 'application/command/history'
|
6
6
|
require 'application/sensitive'
|
7
7
|
require 'application/sensitivity'
|
8
|
-
|
9
8
|
require 'application/clipboard'
|
10
9
|
require 'application/command'
|
10
|
+
|
11
11
|
require 'application/dialog'
|
12
12
|
require 'application/dialogs/filter_list_dialog'
|
13
13
|
require 'application/dialogs/modeless_list_dialog'
|
@@ -28,9 +28,19 @@ require 'application/notebook'
|
|
28
28
|
require 'application/speedbar'
|
29
29
|
require 'application/tab'
|
30
30
|
require 'application/tab/command'
|
31
|
+
require 'application/tree'
|
32
|
+
require 'application/tree/command'
|
33
|
+
require 'application/tree/controller'
|
34
|
+
require 'application/tree/mirror'
|
31
35
|
require 'application/treebook'
|
32
36
|
require 'application/window'
|
33
37
|
|
38
|
+
require 'application/commands/application_commands'
|
39
|
+
require 'application/commands/tab_commands'
|
40
|
+
require 'application/commands/notebook_commands'
|
41
|
+
require 'application/commands/window_commands'
|
42
|
+
require 'application/commands/treebook_commands'
|
43
|
+
|
34
44
|
module Redcar
|
35
45
|
# A Redcar process contains one Application instance. The application instance
|
36
46
|
# (the app) contains:
|
@@ -226,6 +236,17 @@ module Redcar
|
|
226
236
|
windows.each {|window| window.refresh_toolbar }
|
227
237
|
controller.refresh_toolbar
|
228
238
|
end
|
239
|
+
|
240
|
+
# For every plugin that implements it, call the method with the given
|
241
|
+
# arguments and pass the result to the block.
|
242
|
+
#
|
243
|
+
# @param [Symbol] method_name
|
244
|
+
def call_on_plugins(method_name, *args)
|
245
|
+
Redcar.plugin_manager.objects_implementing(method_name).each do |object|
|
246
|
+
yield object.send(method_name, *args)
|
247
|
+
end
|
248
|
+
nil
|
249
|
+
end
|
229
250
|
|
230
251
|
# Generate the main menu by combining menus from all plugins.
|
231
252
|
#
|
@@ -267,7 +288,7 @@ module Redcar
|
|
267
288
|
Redcar.plugin_manager.objects_implementing(:keymaps).each do |object|
|
268
289
|
maps = object.keymaps
|
269
290
|
unless maps
|
270
|
-
|
291
|
+
Redcar.log.warn("#{object.inspect} implements :keymaps but :keymaps returns nil")
|
271
292
|
maps = []
|
272
293
|
end
|
273
294
|
keymaps = maps.select do |map|
|
@@ -275,10 +296,17 @@ module Redcar
|
|
275
296
|
end
|
276
297
|
keymap = keymaps.inject(keymap) {|k, nk| k.merge(nk) }
|
277
298
|
end
|
278
|
-
keymap
|
299
|
+
apply_user_keybindings(keymap)
|
279
300
|
end
|
280
301
|
end
|
281
302
|
|
303
|
+
def apply_user_keybindings(keymap)
|
304
|
+
Redcar.plugin_manager.objects_implementing(:user_keybindings).each do |object|
|
305
|
+
keymap.map.merge!(object.user_keybindings)
|
306
|
+
end
|
307
|
+
keymap
|
308
|
+
end
|
309
|
+
|
282
310
|
# Loads sensitivities from all plugins.
|
283
311
|
def load_sensitivities
|
284
312
|
Redcar.plugin_manager.objects_implementing(:sensitivities).each do |object|
|
@@ -80,11 +80,17 @@ module Redcar
|
|
80
80
|
|
81
81
|
def run(opts = {})
|
82
82
|
@executor = Executor.new(self, opts)
|
83
|
+
s = Time.now
|
83
84
|
result = @executor.execute
|
84
85
|
remove_instance_variable(:@executor)
|
86
|
+
Redcar.log.debug("command #{self.inspect} (#{Time.now - s})")
|
85
87
|
result
|
86
88
|
end
|
87
89
|
|
90
|
+
def inspect
|
91
|
+
"#<#{self.class.name}>"
|
92
|
+
end
|
93
|
+
|
88
94
|
private
|
89
95
|
|
90
96
|
def env
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Redcar
|
2
|
+
class Application
|
3
|
+
class QuitCommand < Command
|
4
|
+
def execute
|
5
|
+
Redcar.app.call_on_plugins(:quit_guard) do |guard|
|
6
|
+
return unless guard
|
7
|
+
end
|
8
|
+
Project::Manager.open_projects.each {|pr| pr.close }
|
9
|
+
Redcar.app.quit
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class ToggleToolbar < Command
|
14
|
+
|
15
|
+
def execute
|
16
|
+
Redcar.app.toggle_show_toolbar
|
17
|
+
Redcar.app.refresh_toolbar!
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Redcar
|
2
|
+
class Application
|
3
|
+
class OpenNewNotebookCommand < Command
|
4
|
+
|
5
|
+
def execute
|
6
|
+
win.create_notebook
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class EnlargeNotebookCommand < Command
|
11
|
+
sensitize :multiple_notebooks
|
12
|
+
|
13
|
+
def execute
|
14
|
+
if win = Redcar.app.focussed_window
|
15
|
+
win.enlarge_notebook(0)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class ResetNotebookWidthsCommand < Command
|
21
|
+
sensitize :multiple_notebooks
|
22
|
+
|
23
|
+
def execute
|
24
|
+
if win = Redcar.app.focussed_window
|
25
|
+
win.reset_notebook_widths
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class RotateNotebooksCommand < Command
|
31
|
+
sensitize :multiple_notebooks
|
32
|
+
|
33
|
+
def execute
|
34
|
+
win.rotate_notebooks
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class CloseNotebookCommand < Command
|
39
|
+
sensitize :multiple_notebooks
|
40
|
+
|
41
|
+
def execute
|
42
|
+
unless win.notebooks.length == 1
|
43
|
+
win.close_notebook
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class SwitchNotebookCommand < Command
|
49
|
+
sensitize :multiple_notebooks, :other_notebook_has_tab
|
50
|
+
|
51
|
+
def execute
|
52
|
+
new_notebook = win.nonfocussed_notebook
|
53
|
+
if new_notebook.focussed_tab
|
54
|
+
new_notebook.focussed_tab.focus
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class MoveTabToOtherNotebookCommand < Command
|
60
|
+
sensitize :multiple_notebooks, :open_tab
|
61
|
+
|
62
|
+
def execute
|
63
|
+
current_notebook = tab.notebook
|
64
|
+
i = win.notebooks.index current_notebook
|
65
|
+
|
66
|
+
target_notebook = win.notebooks[ (i + 1) % win.notebooks.length ]
|
67
|
+
target_notebook.grab_tab_from(current_notebook, tab)
|
68
|
+
tab.focus
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module Redcar
|
2
|
+
class Application
|
3
|
+
|
4
|
+
class SwitchTabDownCommand < TabCommand
|
5
|
+
|
6
|
+
def execute
|
7
|
+
win.focussed_notebook.switch_down
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class SwitchTabUpCommand < TabCommand
|
12
|
+
|
13
|
+
def execute
|
14
|
+
win.focussed_notebook.switch_up
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class MoveTabUpCommand < TabCommand
|
19
|
+
|
20
|
+
def execute
|
21
|
+
win.focussed_notebook.move_up
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class MoveTabDownCommand < TabCommand
|
26
|
+
|
27
|
+
def execute
|
28
|
+
win.focussed_notebook.move_down
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class CloseTabCommand < TabCommand
|
33
|
+
def initialize(tab=nil)
|
34
|
+
@tab = tab
|
35
|
+
end
|
36
|
+
|
37
|
+
def tab
|
38
|
+
@tab || super
|
39
|
+
end
|
40
|
+
|
41
|
+
def execute
|
42
|
+
Redcar.app.call_on_plugins(:close_tab_guard, tab) do |guard|
|
43
|
+
return unless guard
|
44
|
+
end
|
45
|
+
close_tab
|
46
|
+
@tab = nil
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def close_tab
|
52
|
+
win = tab.notebook.window
|
53
|
+
tab.close
|
54
|
+
# this will break a lot of features:
|
55
|
+
#if win.all_tabs.empty? and not Project::Manager.in_window(win)
|
56
|
+
# win.close
|
57
|
+
#end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class CloseAll < Redcar::Command
|
62
|
+
def execute
|
63
|
+
window = Redcar.app.focussed_window
|
64
|
+
tabs = window.all_tabs
|
65
|
+
tabs.each do |t|
|
66
|
+
CloseTabCommand.new(t).run
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class CloseOthers < Redcar::Command
|
72
|
+
def execute
|
73
|
+
window = Redcar.app.focussed_window
|
74
|
+
current_tab = Redcar.app.focussed_notebook_tab
|
75
|
+
tabs = window.all_tabs
|
76
|
+
tabs.each do |t|
|
77
|
+
unless t == current_tab
|
78
|
+
CloseTabCommand.new(t).run
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# define commands from SelectTab1Command to SelectTab9Command
|
85
|
+
(1..9).each do |tab_num|
|
86
|
+
const_set("SelectTab#{tab_num}Command", Class.new(Redcar::TabCommand)).class_eval do
|
87
|
+
define_method :execute do
|
88
|
+
notebook = Redcar.app.focussed_window_notebook
|
89
|
+
notebook.tabs[tab_num-1].focus if notebook.tabs[tab_num-1]
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module Redcar
|
2
|
+
class Application
|
3
|
+
|
4
|
+
class CloseTreeCommand < TreeCommand
|
5
|
+
def execute
|
6
|
+
win = Redcar.app.focussed_window
|
7
|
+
if win and treebook = win.treebook
|
8
|
+
if tree = treebook.focussed_tree
|
9
|
+
treebook.remove_tree(tree)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class ToggleTreesCommand < TreeCommand
|
16
|
+
def execute
|
17
|
+
win = Redcar.app.focussed_window
|
18
|
+
if win and treebook = win.treebook
|
19
|
+
if win.trees_visible?
|
20
|
+
win.set_trees_visible(false)
|
21
|
+
else
|
22
|
+
win.set_trees_visible(true)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class SwitchTreeDownCommand < TreeCommand
|
29
|
+
|
30
|
+
def execute
|
31
|
+
win = Redcar.app.focussed_window
|
32
|
+
win.treebook.switch_down
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class SwitchTreeUpCommand < TreeCommand
|
37
|
+
|
38
|
+
def execute
|
39
|
+
win = Redcar.app.focussed_window
|
40
|
+
win.treebook.switch_up
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class TreebookWidthCommand < Command
|
45
|
+
sensitize :open_trees
|
46
|
+
|
47
|
+
def increment
|
48
|
+
raise "Please implement me!"
|
49
|
+
end
|
50
|
+
|
51
|
+
def execute
|
52
|
+
if win = Redcar.app.focussed_window
|
53
|
+
if increment > 0
|
54
|
+
win.adjust_treebook_width(true)
|
55
|
+
else
|
56
|
+
win.adjust_treebook_width(false)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class IncreaseTreebookWidthCommand < TreebookWidthCommand
|
63
|
+
def increment
|
64
|
+
1
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class DecreaseTreebookWidthCommand < TreebookWidthCommand
|
69
|
+
def decrement
|
70
|
+
-1
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class OpenTreeFinderCommand < TreeCommand
|
75
|
+
def execute
|
76
|
+
if win = Redcar.app.focussed_window
|
77
|
+
if trees = win.treebook.trees and trees.any?
|
78
|
+
titles = []
|
79
|
+
trees.each {|t| titles << t.tree_mirror.title}
|
80
|
+
dialog = TreeFuzzyFilter.new(win,titles)
|
81
|
+
dialog.open
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class TreeFuzzyFilter < FilterListDialog
|
87
|
+
|
88
|
+
def initialize(win,titles)
|
89
|
+
super()
|
90
|
+
@win = win
|
91
|
+
@titles = titles
|
92
|
+
end
|
93
|
+
|
94
|
+
def selected(text,ix)
|
95
|
+
if tree = @win.treebook.trees.detect do |tree|
|
96
|
+
tree.tree_mirror.title == text
|
97
|
+
end
|
98
|
+
if @win.treebook.focussed_tree == tree
|
99
|
+
@win.set_trees_visible(true) if not @win.trees_visible?
|
100
|
+
else
|
101
|
+
@win.treebook.focus_tree(tree)
|
102
|
+
end
|
103
|
+
tree.focus
|
104
|
+
close
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def update_list(filter)
|
109
|
+
@titles.select do |t|
|
110
|
+
t.downcase.include?(filter.downcase)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
end
|