redcar 0.7 → 0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +42 -0
- data/README.md +5 -3
- data/Rakefile +39 -81
- data/bin/redcar +1 -1
- data/lib/redcar.rb +9 -6
- data/lib/redcar/installer.rb +1 -1
- data/lib/redcar/ruby_extensions.rb +19 -0
- data/lib/redcar/runner.rb +1 -1
- data/lib/redcar/usage.rb +3 -0
- data/lib/redcar_quick_start.rb +11 -11
- data/plugins/application/features/step_definitions/tree_steps.rb +22 -5
- data/plugins/application/features/step_definitions/window_steps.rb +9 -1
- data/plugins/application/features/support/env.rb +5 -2
- data/plugins/application/lib/application.rb +51 -46
- data/plugins/application/lib/application/window.rb +60 -30
- data/plugins/application_swt/lib/application_swt.rb +16 -16
- data/plugins/application_swt/lib/application_swt/window.rb +35 -7
- data/plugins/auto_completer/features/support/env.rb +0 -2
- data/plugins/auto_indenter/features/support/env.rb +0 -1
- data/plugins/auto_pairer/features/auto_pairer.feature +50 -45
- data/plugins/auto_pairer/features/support/env.rb +0 -1
- data/plugins/auto_pairer/lib/auto_pairer/document_controller.rb +11 -6
- data/plugins/clipboard-viewer/Screenshot.png +0 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer.rb +50 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer/browser_controller.rb +27 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb +67 -0
- data/plugins/clipboard-viewer/plugin.rb +9 -0
- data/plugins/clipboard-viewer/views/clipboard.html.erb +15 -0
- data/plugins/clipboard-viewer/views/default.css +43 -0
- data/plugins/clipboard-viewer/views/redcar_small_icon.png +0 -0
- data/plugins/comment/features/line_comment.feature +137 -0
- data/plugins/comment/features/selection_comment.feature +21 -0
- data/plugins/comment/features/step_definitions/comment_steps.rb +7 -0
- data/plugins/comment/lib/comment.rb +266 -0
- data/plugins/comment/plugin.rb +7 -0
- data/plugins/comment/vendor/comment_lib.json +47 -0
- data/plugins/declarations/lib/declarations.rb +1 -1
- data/plugins/document_search/features/replace.feature +10 -2
- data/plugins/document_search/features/support/env.rb +0 -1
- data/plugins/document_search/lib/document_search.rb +4 -1
- data/plugins/document_search/lib/document_search/replace.rb +11 -3
- data/plugins/document_search/lib/document_search/search_and_replace.rb +5 -2
- data/plugins/edit_view/features/case_change.feature +9 -9
- data/plugins/edit_view/features/cursor_navigation.feature +36 -0
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +63 -8
- data/plugins/edit_view/features/step_definitions/notebook_steps.rb +2 -0
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +8 -5
- data/plugins/edit_view/features/support/env.rb +8 -2
- data/plugins/edit_view/lib/edit_view.rb +16 -1
- data/plugins/edit_view/lib/edit_view/actions/cmd_enter.rb +11 -0
- data/plugins/edit_view/lib/edit_view/document.rb +27 -10
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +17 -4
- data/plugins/edit_view/spec/edit_view/document_spec.rb +3 -0
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +42 -3
- data/plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb +17 -15
- data/plugins/help/lib/help.rb +40 -0
- data/plugins/help/plugin.rb +8 -0
- data/plugins/html_view/features/step_definitions/html_view_steps.rb +6 -4
- data/plugins/line_tools/features/support/env.rb +0 -1
- data/plugins/macros/features/step_definitions/macro_steps.rb +0 -55
- data/plugins/macros/features/support/env.rb +0 -2
- data/plugins/open_default_app/lib/open_default_app.rb +35 -0
- data/plugins/open_default_app/plugin.rb +8 -0
- data/plugins/open_default_app/screenshot.png +0 -0
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +17 -3
- data/plugins/project/features/find_file.feature +3 -2
- data/plugins/project/features/highlight_focussed_tab.feature +8 -0
- data/plugins/project/features/move_and_rename_files.feature +25 -0
- data/plugins/project/features/open_and_save_files.feature +10 -1
- data/plugins/project/features/open_directory_tree.feature +32 -2
- data/plugins/project/features/step_definitions/directory_steps.rb +17 -0
- data/plugins/project/features/step_definitions/project_tree_steps.rb +3 -0
- data/plugins/project/features/sub_project.feature +14 -0
- data/plugins/project/features/support/env.rb +22 -3
- data/plugins/project/features/watch_for_modified_files.feature +32 -9
- data/plugins/project/lib/project.rb +53 -21
- data/plugins/project/lib/project/adapters/local.rb +21 -16
- data/plugins/project/lib/project/adapters/remote.rb +15 -13
- data/plugins/project/lib/project/commands.rb +37 -16
- data/plugins/project/lib/project/dir_controller.rb +41 -42
- data/plugins/project/lib/project/drb_service.rb +35 -21
- data/plugins/project/lib/project/file_list.rb +7 -1
- data/plugins/project/lib/project/manager.rb +28 -3
- data/plugins/project/lib/project/sub_project.rb +17 -0
- data/plugins/project/lib/project/support/recycle.js +2 -0
- data/plugins/project/lib/project/support/trash.rb +72 -0
- data/plugins/project/spec/fixtures/multi-byte-files/a/341/204/200/341/205/247/341/206/274/341/204/205/341/205/251/foo +1 -0
- data/plugins/project/spec/fixtures/multi-byte-files//341/204/220/341/205/246/341/204/211/341/205/263/341/204/220/341/205/263.py +1 -0
- data/plugins/project/spec/project/file_list_spec.rb +4 -0
- data/plugins/redcar/features/goto_line_command.feature +20 -0
- data/plugins/redcar/redcar.rb +107 -47
- data/plugins/repl/lib/repl.rb +20 -20
- data/plugins/repl/lib/repl/clojure_mirror.rb +50 -58
- data/plugins/repl/lib/repl/groovy_mirror.rb +22 -41
- data/plugins/repl/lib/repl/repl_mirror.rb +85 -14
- data/plugins/repl/lib/repl/ruby_mirror.rb +12 -39
- data/plugins/repl/spec/repl/groovy_mirror_spec.rb +1 -1
- data/plugins/repl/spec/repl/ruby_mirror_spec.rb +12 -12
- data/plugins/ruby/README +6 -0
- data/plugins/ruby/lib/syntax_check/ruby.rb +28 -0
- data/plugins/ruby/plugin.rb +7 -0
- data/plugins/runnables/features/command_tree.feature +9 -0
- data/plugins/runnables/features/file_runner_input.feature +20 -0
- data/plugins/runnables/features/run_alternate_command.feature +14 -0
- data/plugins/runnables/features/support/env.rb +42 -5
- data/plugins/runnables/lib/runnables.rb +67 -21
- data/plugins/runnables/lib/runnables/commands.rb +35 -18
- data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_group.rb +23 -37
- data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_type_group.rb +16 -18
- data/plugins/scm_svn/features/support/env.rb +0 -3
- data/plugins/snippets/features/snippets.feature +17 -2
- data/plugins/snippets/features/support/env.rb +0 -1
- data/plugins/snippets/lib/snippets/tab_handler.rb +51 -18
- data/plugins/swt/lib/swt/cucumber_patches.rb +13 -68
- data/plugins/swt/lib/swt/cucumber_runner.rb +2 -3
- data/plugins/syntax_check/README +6 -0
- data/plugins/syntax_check/lib/syntax_check.rb +16 -0
- data/plugins/syntax_check/lib/syntax_check/checker.rb +47 -0
- data/plugins/syntax_check/lib/syntax_check/error.rb +23 -0
- data/plugins/syntax_check/plugin.rb +7 -0
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +6 -0
- data/plugins/web_bookmarks/Screenshot.png +0 -0
- data/plugins/web_bookmarks/lib/web_bookmarks.rb +42 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb +43 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/browser_bar.rb +70 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +111 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/tree.rb +67 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/view_controller.rb +22 -0
- data/plugins/web_bookmarks/plugin.rb +11 -0
- data/plugins/web_bookmarks/views/index.html.erb +5 -0
- metadata +60 -10
@@ -147,11 +147,14 @@ def close_everything
|
|
147
147
|
dialogs.each {|d| d.controller.model.close }
|
148
148
|
end
|
149
149
|
Redcar.app.windows.each do |win|
|
150
|
-
|
150
|
+
win.treebook.trees.each do |tree|
|
151
151
|
Swt.sync_exec do
|
152
152
|
win.treebook.remove_tree(tree)
|
153
153
|
end
|
154
154
|
end
|
155
|
+
if Redcar::Project::Manager.in_window(win)
|
156
|
+
Redcar::Project.window_projects.delete(win)
|
157
|
+
end
|
155
158
|
win.notebooks.each do |notebook|
|
156
159
|
while tab = notebook.tabs.first
|
157
160
|
Swt.sync_exec do
|
@@ -191,7 +194,7 @@ After do
|
|
191
194
|
Redcar.app.history.clear
|
192
195
|
total_mem = java.lang.Runtime.getRuntime.totalMemory
|
193
196
|
free_mem = java.lang.Runtime.getRuntime.freeMemory
|
194
|
-
p [:total, total_mem, :free, free_mem, :diff, total_mem - free_mem]
|
197
|
+
#p [:total, total_mem, :free, free_mem, :diff, total_mem - free_mem]
|
195
198
|
end
|
196
199
|
|
197
200
|
at_exit {
|
@@ -42,16 +42,16 @@ module Redcar
|
|
42
42
|
# one place to hook into Redcar events.
|
43
43
|
class Application
|
44
44
|
NAME = "Redcar"
|
45
|
-
|
45
|
+
|
46
46
|
include Redcar::Model
|
47
47
|
include Redcar::Observable
|
48
|
-
|
48
|
+
|
49
49
|
def self.start
|
50
50
|
Redcar.app = Application.new
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def self.sensitivities
|
54
|
-
[
|
54
|
+
[
|
55
55
|
Sensitivity.new(:open_tab, Redcar.app, false, [:focussed_window, :tab_focussed]) do |tab|
|
56
56
|
if win = Redcar.app.focussed_window
|
57
57
|
win.focussed_notebook.focussed_tab
|
@@ -67,7 +67,7 @@ module Redcar
|
|
67
67
|
win.notebooks.length > 1
|
68
68
|
end
|
69
69
|
end,
|
70
|
-
Sensitivity.new(:other_notebook_has_tab, Redcar.app, false,
|
70
|
+
Sensitivity.new(:other_notebook_has_tab, Redcar.app, false,
|
71
71
|
[:focussed_window, :focussed_notebook, :notebook_change, :tab_closed]) do
|
72
72
|
if win = Redcar.app.focussed_window and notebook = win.nonfocussed_notebook
|
73
73
|
notebook.tabs.any?
|
@@ -75,9 +75,9 @@ module Redcar
|
|
75
75
|
end
|
76
76
|
]
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
attr_reader :clipboard, :keymap, :menu, :toolbar, :history, :task_queue, :show_toolbar
|
80
|
-
|
80
|
+
|
81
81
|
# Create an application instance with a Redcar::Clipboard and a Redcar::History.
|
82
82
|
def initialize
|
83
83
|
@windows = []
|
@@ -86,27 +86,27 @@ module Redcar
|
|
86
86
|
create_history
|
87
87
|
@event_spewer = EventSpewer.new
|
88
88
|
@task_queue = TaskQueue.new
|
89
|
-
|
89
|
+
|
90
90
|
# Don't show the toolbar by default on Mac OS X
|
91
91
|
if Redcar.platform == :osx
|
92
92
|
Application.storage['show_toolbar'] = false
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
# Otherwise, use previous setting
|
96
96
|
@show_toolbar = !!Application.storage['show_toolbar']
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
def events
|
100
100
|
@event_spewer
|
101
101
|
end
|
102
|
-
|
102
|
+
|
103
103
|
# Immediately stop the gui event loop.
|
104
|
-
# (You should probably be running QuitCommand instead.)
|
104
|
+
# (You should probably be running QuitCommand instead.)
|
105
105
|
def quit
|
106
106
|
@task_queue.stop
|
107
107
|
Redcar.gui.stop
|
108
108
|
end
|
109
|
-
|
109
|
+
|
110
110
|
# All open windows
|
111
111
|
#
|
112
112
|
# @return [Array<Redcar::Window>]
|
@@ -127,14 +127,14 @@ module Redcar
|
|
127
127
|
set_focussed_window(new_window)
|
128
128
|
#puts "App#new_window took #{Time.now - s}s"
|
129
129
|
new_window
|
130
|
-
end
|
131
|
-
|
130
|
+
end
|
131
|
+
|
132
132
|
def make_sure_at_least_one_window_open
|
133
133
|
if windows.length == 0
|
134
134
|
new_window
|
135
135
|
end
|
136
|
-
end
|
137
|
-
|
136
|
+
end
|
137
|
+
|
138
138
|
# Removes a window from this Application. Should not be called by plugins,
|
139
139
|
# use Window#close instead.
|
140
140
|
def window_closed(window)
|
@@ -143,10 +143,10 @@ module Redcar
|
|
143
143
|
self.focussed_window = windows.first
|
144
144
|
end
|
145
145
|
@window_handlers[window].each {|h| window.remove_listener(h) }
|
146
|
-
|
146
|
+
|
147
147
|
@window_handlers.delete(window)
|
148
148
|
end
|
149
|
-
|
149
|
+
|
150
150
|
def self.storage
|
151
151
|
@storage ||= begin
|
152
152
|
storage = Plugin::Storage.new('application_plugin')
|
@@ -155,45 +155,45 @@ module Redcar
|
|
155
155
|
storage
|
156
156
|
end
|
157
157
|
end
|
158
|
-
|
158
|
+
|
159
159
|
# All Redcar::Notebooks in all Windows.
|
160
160
|
def all_notebooks
|
161
161
|
windows.inject([]) { |arr, window| arr << window.notebooks }.flatten
|
162
162
|
end
|
163
|
-
|
163
|
+
|
164
164
|
# All Redcar::Tabs in all Notebooks in all Windows.
|
165
165
|
def all_tabs
|
166
166
|
all_notebooks.inject([]) { |arr, notebook| arr << notebook.tabs }.flatten
|
167
167
|
end
|
168
|
-
|
168
|
+
|
169
169
|
# The focussed Redcar::Notebook in the focussed window, or nil.
|
170
170
|
def focussed_window_notebook
|
171
171
|
focussed_window.focussed_notebook if focussed_window
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
# The focussed Redcar::Tab in the focussed notebook in the focussed window.
|
175
175
|
def focussed_notebook_tab
|
176
176
|
focussed_window_notebook.focussed_tab if focussed_window_notebook
|
177
177
|
end
|
178
178
|
|
179
|
-
# The focussed Redcar::Window.
|
179
|
+
# The focussed Redcar::Window.
|
180
180
|
def focussed_window
|
181
181
|
@focussed_window
|
182
182
|
end
|
183
|
-
|
184
|
-
# Set which window the app thinks is focussed.
|
183
|
+
|
184
|
+
# Set which window the app thinks is focussed.
|
185
185
|
# Should not be called by plugins, use Window#focus instead.
|
186
186
|
def focussed_window=(window)
|
187
187
|
set_focussed_window(window)
|
188
188
|
notify_listeners(:focussed_window, window)
|
189
189
|
end
|
190
|
-
|
190
|
+
|
191
191
|
# Set which window the app thinks is focussed.
|
192
192
|
# Should not be called by plugins, use Window#focus instead.
|
193
193
|
def set_focussed_window(window)
|
194
194
|
@focussed_window = window
|
195
195
|
end
|
196
|
-
|
196
|
+
|
197
197
|
# Redraw the main menu, reloading all the Menus and Keymaps from the plugins.
|
198
198
|
def refresh_menu!
|
199
199
|
@main_menu = nil
|
@@ -201,27 +201,32 @@ module Redcar
|
|
201
201
|
windows.each {|window| window.refresh_menu }
|
202
202
|
notify_listeners(:refresh_menu)
|
203
203
|
end
|
204
|
-
|
204
|
+
|
205
205
|
# Redraw the main toolbar, reloading all the ToolBars and Keymaps from the plugins.
|
206
206
|
def refresh_toolbar!
|
207
207
|
@main_toolbar = nil
|
208
208
|
windows.each {|window| window.refresh_toolbar }
|
209
209
|
controller.refresh_toolbar
|
210
210
|
end
|
211
|
-
|
211
|
+
|
212
212
|
# Generate the main menu by combining menus from all plugins.
|
213
213
|
#
|
214
214
|
# @return [Redcar::Menu]
|
215
|
-
def main_menu
|
215
|
+
def main_menu(window=nil)
|
216
216
|
@main_menu ||= begin
|
217
217
|
menu = Menu.new
|
218
218
|
Redcar.plugin_manager.objects_implementing(:menus).each do |object|
|
219
|
-
|
219
|
+
case object.method(:menus).arity
|
220
|
+
when 1
|
221
|
+
menu.merge(object.menus(window))
|
222
|
+
else
|
223
|
+
menu.merge(object.menus)
|
224
|
+
end
|
220
225
|
end
|
221
226
|
menu
|
222
227
|
end
|
223
228
|
end
|
224
|
-
|
229
|
+
|
225
230
|
# Generate the toolbar combining toolbars from all plugins.
|
226
231
|
#
|
227
232
|
# @return [Redcar::ToolBar]
|
@@ -234,7 +239,7 @@ module Redcar
|
|
234
239
|
toolbar
|
235
240
|
end
|
236
241
|
end
|
237
|
-
|
242
|
+
|
238
243
|
# Generate the main keymap by merging the keymaps from all plugins.
|
239
244
|
#
|
240
245
|
# @return [Redcar::Keymap]
|
@@ -243,7 +248,7 @@ module Redcar
|
|
243
248
|
keymap = Keymap.new("main", Redcar.platform)
|
244
249
|
Redcar.plugin_manager.objects_implementing(:keymaps).each do |object|
|
245
250
|
maps = object.keymaps
|
246
|
-
keymaps = maps.select do |map|
|
251
|
+
keymaps = maps.select do |map|
|
247
252
|
map.name == "main" and map.platforms.include?(Redcar.platform)
|
248
253
|
end
|
249
254
|
keymap = keymaps.inject(keymap) {|k, nk| k.merge(nk) }
|
@@ -251,14 +256,14 @@ module Redcar
|
|
251
256
|
keymap
|
252
257
|
end
|
253
258
|
end
|
254
|
-
|
259
|
+
|
255
260
|
# Loads sensitivities from all plugins.
|
256
261
|
def load_sensitivities
|
257
262
|
Redcar.plugin_manager.objects_implementing(:sensitivities).each do |object|
|
258
263
|
object.sensitivities
|
259
264
|
end
|
260
265
|
end
|
261
|
-
|
266
|
+
|
262
267
|
# Called by the Gui to tell the Application that it
|
263
268
|
# has lost focus.
|
264
269
|
def lost_application_focus
|
@@ -266,7 +271,7 @@ module Redcar
|
|
266
271
|
@application_focus = false
|
267
272
|
notify_listeners(:lost_focus, self)
|
268
273
|
end
|
269
|
-
|
274
|
+
|
270
275
|
# Called by the Gui to tell the Application that it
|
271
276
|
# has gained focus.
|
272
277
|
def gained_application_focus
|
@@ -275,24 +280,24 @@ module Redcar
|
|
275
280
|
notify_listeners(:focussed, self)
|
276
281
|
end
|
277
282
|
end
|
278
|
-
|
283
|
+
|
279
284
|
def has_focus?
|
280
285
|
@application_focus
|
281
286
|
end
|
282
|
-
|
287
|
+
|
283
288
|
def protect_application_focus
|
284
289
|
@protect_application_focus = true
|
285
290
|
r = yield
|
286
291
|
@protect_application_focus = false
|
287
292
|
r
|
288
293
|
end
|
289
|
-
|
294
|
+
|
290
295
|
def repeat_event(type)
|
291
296
|
notify_listeners(type)
|
292
297
|
end
|
293
|
-
|
298
|
+
|
294
299
|
private
|
295
|
-
|
300
|
+
|
296
301
|
def attach_window_listeners(window)
|
297
302
|
h1 = window.add_listener(:tab_focussed) do |tab|
|
298
303
|
notify_listeners(:tab_focussed, tab)
|
@@ -331,17 +336,17 @@ module Redcar
|
|
331
336
|
end
|
332
337
|
@window_handlers[window] << h1 << h2 << h3 << h4 << h5 << h6 << h7 << h8 << h9 << h10
|
333
338
|
end
|
334
|
-
|
339
|
+
|
335
340
|
def create_clipboard
|
336
341
|
@clipboard = Clipboard.new("application")
|
337
342
|
@clipboard.add_listener(:added) { notify_listeners(:clipboard_added) }
|
338
343
|
end
|
339
|
-
|
344
|
+
|
340
345
|
def create_history
|
341
346
|
@history = Command::History.new
|
342
347
|
end
|
343
348
|
|
344
|
-
public
|
349
|
+
public
|
345
350
|
|
346
351
|
def show_toolbar?
|
347
352
|
@show_toolbar
|
@@ -2,10 +2,10 @@
|
|
2
2
|
module Redcar
|
3
3
|
class Window
|
4
4
|
DEFAULT_TITLE = "Redcar"
|
5
|
-
|
5
|
+
|
6
6
|
include Redcar::Model
|
7
7
|
include Redcar::Observable
|
8
|
-
|
8
|
+
|
9
9
|
# All instantiated windows
|
10
10
|
def self.all
|
11
11
|
@all ||= []
|
@@ -14,16 +14,28 @@ module Redcar
|
|
14
14
|
attr_reader :notebooks, :notebook_orientation
|
15
15
|
attr_reader :treebook
|
16
16
|
attr_reader :speedbar
|
17
|
-
|
17
|
+
|
18
18
|
def initialize
|
19
19
|
Window.all << self
|
20
20
|
@visible = false
|
21
21
|
@notebooks = []
|
22
22
|
@notebook_orientation = :horizontal
|
23
23
|
create_notebook
|
24
|
-
@treebook
|
25
|
-
@speedbar
|
26
|
-
self.title
|
24
|
+
@treebook = Treebook.new
|
25
|
+
@speedbar = nil
|
26
|
+
self.title = DEFAULT_TITLE
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_trees_visible(value)
|
30
|
+
if value
|
31
|
+
notify_listeners(:toggle_trees_visible) unless trees_visible?
|
32
|
+
else
|
33
|
+
notify_listeners(:toggle_trees_visible) if trees_visible?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def trees_visible?
|
38
|
+
controller.treebook_visible?
|
27
39
|
end
|
28
40
|
|
29
41
|
def title
|
@@ -43,7 +55,15 @@ module Redcar
|
|
43
55
|
def visible?
|
44
56
|
@visible
|
45
57
|
end
|
46
|
-
|
58
|
+
|
59
|
+
def fullscreen
|
60
|
+
controller.fullscreen
|
61
|
+
end
|
62
|
+
|
63
|
+
def fullscreen=(value)
|
64
|
+
controller.fullscreen = value
|
65
|
+
end
|
66
|
+
|
47
67
|
# Create a new notebook in this window.
|
48
68
|
#
|
49
69
|
# @events [(:new_notebook, notebook)]
|
@@ -57,7 +77,7 @@ module Redcar
|
|
57
77
|
attach_notebook_listeners(notebook)
|
58
78
|
notify_listeners(:new_notebook, notebook)
|
59
79
|
end
|
60
|
-
|
80
|
+
|
61
81
|
def attach_notebook_listeners(notebook)
|
62
82
|
notebook.add_listener(:tab_focussed) do |tab|
|
63
83
|
notify_listeners(:tab_focussed, tab)
|
@@ -87,7 +107,7 @@ module Redcar
|
|
87
107
|
end
|
88
108
|
end
|
89
109
|
end
|
90
|
-
|
110
|
+
|
91
111
|
def close_notebook
|
92
112
|
return if @notebooks.length == 1
|
93
113
|
first_notebook, second_notebook = *@notebooks
|
@@ -98,42 +118,42 @@ module Redcar
|
|
98
118
|
self.focussed_notebook = first_notebook
|
99
119
|
notify_listeners(:notebook_removed, second_notebook)
|
100
120
|
end
|
101
|
-
|
121
|
+
|
102
122
|
def focussed_notebook
|
103
123
|
@focussed_notebook
|
104
124
|
end
|
105
|
-
|
125
|
+
|
106
126
|
def focussed_notebook_tab
|
107
127
|
@focussed_notebook.focussed_tab
|
108
128
|
end
|
109
|
-
|
129
|
+
|
110
130
|
def focussed_notebook_tab_document
|
111
131
|
focussed_notebook_tab.document if focussed_notebook_tab
|
112
|
-
end
|
113
|
-
|
132
|
+
end
|
133
|
+
|
114
134
|
def focussed_notebook=(notebook)
|
115
135
|
if notebook != @focussed_notebook
|
116
136
|
set_focussed_notebook(notebook)
|
117
137
|
notify_listeners(:notebook_focussed, notebook)
|
118
138
|
end
|
119
139
|
end
|
120
|
-
|
140
|
+
|
121
141
|
def set_focussed_notebook(notebook)
|
122
142
|
@focussed_notebook = notebook
|
123
143
|
end
|
124
|
-
|
144
|
+
|
125
145
|
def nonfocussed_notebook
|
126
146
|
@notebooks.find {|nb| nb != @focussed_notebook }
|
127
147
|
end
|
128
|
-
|
148
|
+
|
129
149
|
# Sets the orientation of the notebooks.
|
130
150
|
#
|
131
|
-
# @param [:horizontal, :vertical]
|
151
|
+
# @param [:horizontal, :vertical]
|
132
152
|
def notebook_orientation=(key)
|
133
153
|
@notebook_orientation = key
|
134
154
|
notify_listeners(:notebook_orientation_changed, key)
|
135
155
|
end
|
136
|
-
|
156
|
+
|
137
157
|
# Sets the orientation of the notebooks to whatever it is not currently.
|
138
158
|
def rotate_notebooks
|
139
159
|
if notebook_orientation == :horizontal
|
@@ -142,12 +162,12 @@ module Redcar
|
|
142
162
|
self.notebook_orientation = :horizontal
|
143
163
|
end
|
144
164
|
end
|
145
|
-
|
165
|
+
|
146
166
|
# Delegates to the new_tab method in the Window's active Notebook.
|
147
167
|
def new_tab(*args, &block)
|
148
168
|
focussed_notebook.new_tab(*args, &block)
|
149
169
|
end
|
150
|
-
|
170
|
+
|
151
171
|
attr_reader :menu, :toolbar, :keymap
|
152
172
|
|
153
173
|
def menu=(menu)
|
@@ -165,30 +185,40 @@ module Redcar
|
|
165
185
|
def popup_menu(menu)
|
166
186
|
notify_listeners(:popup_menu, menu)
|
167
187
|
end
|
168
|
-
|
188
|
+
|
169
189
|
def popup_menu_with_numbers(menu)
|
170
190
|
notify_listeners(:popup_menu_with_numbers, menu)
|
171
191
|
end
|
172
|
-
|
192
|
+
|
173
193
|
def refresh_menu
|
174
194
|
notify_listeners(:refresh_menu)
|
175
195
|
end
|
176
|
-
|
196
|
+
|
177
197
|
def refresh_toolbar
|
178
198
|
notify_listeners(:refresh_toolbar)
|
179
199
|
end
|
180
|
-
|
200
|
+
|
181
201
|
# Focus the Window.
|
182
202
|
def focus
|
183
203
|
Redcar.app.events.ignore(:window_focus, self) do
|
184
204
|
notify_listeners(:focussed, self)
|
205
|
+
refresh_tabs
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
# Check all tabs for underlying files; mark if missing
|
210
|
+
def refresh_tabs
|
211
|
+
all_tabs.each do |tab|
|
212
|
+
if tab.is_a?(Redcar::EditTab)
|
213
|
+
tab.update_for_file_changes
|
214
|
+
end
|
185
215
|
end
|
186
216
|
end
|
187
217
|
|
188
218
|
def close
|
189
219
|
Redcar.app.events.ignore(:window_close, self) do
|
190
220
|
notify_listeners(:about_to_close, self)
|
191
|
-
notebooks.each do |notebook|
|
221
|
+
notebooks.each do |notebook|
|
192
222
|
notebook.tabs.each {|tab| tab.close }
|
193
223
|
end
|
194
224
|
if notebooks.length > 1
|
@@ -197,11 +227,11 @@ module Redcar
|
|
197
227
|
notify_listeners(:closed, self)
|
198
228
|
end
|
199
229
|
end
|
200
|
-
|
230
|
+
|
201
231
|
def inspect
|
202
232
|
"#<Redcar::Window \"#{title}\">"
|
203
233
|
end
|
204
|
-
|
234
|
+
|
205
235
|
def open_speedbar(speedbar)
|
206
236
|
if @speedbar
|
207
237
|
close_speedbar
|
@@ -209,7 +239,7 @@ module Redcar
|
|
209
239
|
@speedbar = speedbar
|
210
240
|
notify_listeners(:speedbar_opened, speedbar)
|
211
241
|
end
|
212
|
-
|
242
|
+
|
213
243
|
def close_speedbar
|
214
244
|
notify_listeners(:speedbar_closed, @speedbar)
|
215
245
|
@speedbar.close if @speedbar.respond_to?(:close)
|
@@ -218,7 +248,7 @@ module Redcar
|
|
218
248
|
tab.focus
|
219
249
|
end
|
220
250
|
end
|
221
|
-
|
251
|
+
|
222
252
|
def all_tabs
|
223
253
|
notebooks.map {|nb| nb.tabs }.flatten
|
224
254
|
end
|