ruber 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +21 -0
- data/data/share/apps/ruber/ruberui.rc +3 -1
- data/lib/ruber/application/application.rb +22 -23
- data/lib/ruber/application/plugin.yaml +7 -2
- data/lib/ruber/{projects → application}/project_files_list.rb +0 -0
- data/lib/ruber/{projects → application}/project_files_widget.rb +0 -0
- data/lib/ruber/application/ui/project_files_rule_chooser_widget.rb +74 -0
- data/lib/ruber/{projects → application}/ui/project_files_rule_chooser_widget.ui +0 -0
- data/lib/ruber/application/ui/project_files_widget.rb +117 -0
- data/lib/ruber/{projects → application}/ui/project_files_widget.ui +0 -0
- data/lib/ruber/component_manager.rb +14 -9
- data/lib/ruber/editor/document.rb +35 -5
- data/lib/ruber/kde_sugar.rb +16 -0
- data/lib/ruber/main_window/choose_plugins_dlg.rb +7 -4
- data/lib/ruber/main_window/main_window.rb +131 -193
- data/lib/ruber/main_window/main_window_actions.rb +157 -58
- data/lib/ruber/main_window/main_window_internal.rb +145 -54
- data/lib/ruber/main_window/open_file_in_project_dlg.rb +4 -4
- data/lib/ruber/main_window/plugin.yaml +3 -6
- data/lib/ruber/main_window/ui/workspace_settings_widget.rb +2 -2
- data/lib/ruber/main_window/workspace.rb +62 -32
- data/lib/ruber/output_widget.rb +20 -16
- data/lib/ruber/pane.rb +11 -5
- data/lib/ruber/project.rb +27 -12
- data/lib/ruber/projects/ui/project_files_rule_chooser_widget.rb +2 -2
- data/lib/ruber/projects/ui/project_files_widget.rb +2 -2
- data/lib/ruber/utils.rb +37 -4
- data/lib/ruber/version.rb +1 -1
- data/lib/ruber/world/document_factory.rb +121 -0
- data/lib/ruber/world/document_list.rb +396 -0
- data/lib/ruber/world/environment.rb +470 -0
- data/lib/ruber/{main_window → world}/hint_solver.rb +1 -1
- data/lib/ruber/world/plugin.yaml +11 -0
- data/lib/ruber/world/project_factory.rb +131 -0
- data/lib/ruber/world/project_list.rb +265 -0
- data/lib/ruber/world/ui/workspace_settings_widget.rb +51 -0
- data/lib/ruber/{main_window → world}/ui/workspace_settings_widget.ui +0 -0
- data/lib/ruber/world/world.rb +307 -0
- data/plugins/auto_end/auto_end.rb +135 -9
- data/plugins/autosave/autosave.rb +4 -4
- data/plugins/find_in_files/find_in_files.rb +5 -5
- data/plugins/find_in_files/find_in_files_widgets.rb +1 -1
- data/plugins/project_browser/project_browser.rb +4 -4
- data/plugins/rake/rake.rb +4 -4
- data/plugins/rake/rake_extension.rb +1 -1
- data/plugins/rspec/rspec.rb +4 -4
- data/plugins/rspec/ruber_rspec_formatter.rb +2 -2
- data/plugins/ruby_development/ruby_development.rb +3 -3
- data/plugins/ruby_runner/ruby_runner.rb +2 -2
- data/plugins/state/plugin.yaml +6 -8
- data/plugins/state/state.rb +201 -391
- data/plugins/state/ui/config_widget.rb +5 -5
- data/plugins/state/ui/config_widget.ui +3 -3
- data/plugins/syntax_checker/syntax_checker.rb +4 -0
- data/spec/annotation_model_spec.rb +1 -1
- data/spec/auto_end_spec.rb +98 -47
- data/spec/component_manager_spec.rb +80 -21
- data/spec/document_factory_spec.rb +115 -0
- data/spec/document_list_spec.rb +560 -450
- data/spec/document_spec.rb +143 -55
- data/spec/editor_view_spec.rb +2 -2
- data/spec/environment_spec.rb +1900 -0
- data/spec/hint_solver_spec.rb +5 -5
- data/spec/kde_sugar_spec.rb +16 -0
- data/spec/output_widget_spec.rb +177 -51
- data/spec/pane_spec.rb +29 -5
- data/spec/plugin_spec.rb +1 -1
- data/spec/project_factory_spec.rb +104 -0
- data/spec/project_list_spec.rb +352 -447
- data/spec/project_spec.rb +34 -33
- data/spec/qt_sugar_spec.rb +2 -2
- data/spec/state_spec.rb +508 -811
- data/spec/utils_spec.rb +149 -98
- data/spec/workspace_spec.rb +120 -9
- data/spec/world_spec.rb +1219 -0
- metadata +23 -14
- data/lib/ruber/documents/document_list.rb +0 -412
- data/lib/ruber/documents/plugin.yaml +0 -4
- data/lib/ruber/main_window/view_manager.rb +0 -431
- data/lib/ruber/projects/plugin.yaml +0 -11
- data/lib/ruber/projects/project_list.rb +0 -314
data/lib/ruber/kde_sugar.rb
CHANGED
@@ -74,6 +74,22 @@ return *true* for both absolute and relative paths.
|
|
74
74
|
!(local_file? or relative?)
|
75
75
|
end
|
76
76
|
|
77
|
+
=begin rdoc
|
78
|
+
@return [Boolean] *true* if the two URLs are equal according to @==@ and *false*
|
79
|
+
otherwise
|
80
|
+
=end
|
81
|
+
def eql? other
|
82
|
+
self == other
|
83
|
+
end
|
84
|
+
|
85
|
+
=begin rdoc
|
86
|
+
Override of Object#hash
|
87
|
+
@return [Integer] the hash value of the path associated with the URL
|
88
|
+
=end
|
89
|
+
def hash
|
90
|
+
path.hash
|
91
|
+
end
|
92
|
+
|
77
93
|
end
|
78
94
|
|
79
95
|
class TabWidget
|
@@ -144,9 +144,9 @@ deselected.
|
|
144
144
|
|
145
145
|
connect m, SIGNAL('itemChanged(QStandardItem*)'), self, SLOT('plugin_toggled(QStandardItem*)')
|
146
146
|
|
147
|
-
|
148
|
-
|
149
|
-
|
147
|
+
# def m.flags idx
|
148
|
+
# Qt::ItemIsSelectable|Qt::ItemIsEnabled| Qt::ItemIsUserCheckable
|
149
|
+
# end
|
150
150
|
|
151
151
|
@url = KDE::UrlRequester.new self
|
152
152
|
@ui.directories.custom_editor = @url.custom_editor
|
@@ -276,7 +276,10 @@ size of the contents.
|
|
276
276
|
name.data = Qt::Variant.new(k.to_s)
|
277
277
|
desc = Qt::StandardItem.new v.about.description
|
278
278
|
dir = Qt::StandardItem.new v.directory
|
279
|
-
|
279
|
+
row = [name, desc, dir]
|
280
|
+
row.each{|i| i.flags = Qt::ItemIsSelectable|Qt::ItemIsEnabled}
|
281
|
+
name.flags |= Qt::ItemIsUserCheckable
|
282
|
+
m.append_row row
|
280
283
|
end
|
281
284
|
update_plugin_status
|
282
285
|
3.times{|i| @ui.plugins.resize_column_to_contents i}
|
@@ -29,8 +29,6 @@ require 'ruber/gui_states_handler'
|
|
29
29
|
|
30
30
|
require 'ruber/main_window/main_window_internal'
|
31
31
|
require 'ruber/main_window/main_window_actions'
|
32
|
-
require 'ruber/main_window/hint_solver'
|
33
|
-
require 'ruber/main_window/view_manager'
|
34
32
|
|
35
33
|
require 'ruber/main_window/status_bar'
|
36
34
|
require 'ruber/main_window/workspace'
|
@@ -43,6 +41,9 @@ The application's main window. It is made of a menu bar, a tool bar, a workspace
|
|
43
41
|
and a status bar. The workspace (see Workspace) is the main window's central widget
|
44
42
|
and where most of the user interaction happens. It contains the editors and the
|
45
43
|
tool widgets.
|
44
|
+
|
45
|
+
@api feature main_window
|
46
|
+
@extension environment {api: '{Environment}'}
|
46
47
|
=end
|
47
48
|
class MainWindow < KParts::MainWindow
|
48
49
|
|
@@ -56,17 +57,7 @@ tool widgets.
|
|
56
57
|
|
57
58
|
slots :load_settings
|
58
59
|
|
59
|
-
=
|
60
|
-
The default hints used by methods like {#editor_for} and {#editor_for!}
|
61
|
-
=end
|
62
|
-
DEFAULT_HINTS = {
|
63
|
-
:exisiting => :always,
|
64
|
-
:strategy => [:current, :current_tab, :first],
|
65
|
-
:new => :new_tab,
|
66
|
-
:split => :horizontal,
|
67
|
-
:show => true,
|
68
|
-
:create_if_needed => true
|
69
|
-
}.freeze
|
60
|
+
DEFAULT_HINTS = Ruber::World::Environment::DEFAULT_HINTS
|
70
61
|
|
71
62
|
=begin rdoc
|
72
63
|
The widget which contains the tool widgets.
|
@@ -98,17 +89,15 @@ is the plugin description for this object.
|
|
98
89
|
super nil, 0
|
99
90
|
initialize_plugin pdf
|
100
91
|
initialize_states_handler
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
@
|
105
|
-
@tabs.tabs_closable = Ruber[:config][:workspace, :close_buttons]
|
106
|
-
@view_manager = ViewManager.new @tabs, self
|
107
|
-
@auto_activate_editors = true
|
92
|
+
@active_environment = nil
|
93
|
+
@workspace = Workspace.new self
|
94
|
+
self.central_widget = @workspace
|
95
|
+
@workspace.add_widget Ruber[:world].default_environment.tab_widget
|
108
96
|
@ui_states = {}
|
109
97
|
@actions_state_handlers = Hash.new{|h, k| h[k] = []}
|
110
98
|
@about_plugin_actions = []
|
111
99
|
@switch_to_actions = []
|
100
|
+
@activate_project_actions = []
|
112
101
|
@last_session_data = nil
|
113
102
|
self.status_bar = StatusBar.new self
|
114
103
|
self.connect(SIGNAL('current_document_changed(QObject*)')) do |doc|
|
@@ -117,17 +106,20 @@ is the plugin description for this object.
|
|
117
106
|
connect Ruber[:components], SIGNAL('component_loaded(QObject*)'), self, SLOT('add_about_plugin_action(QObject*)')
|
118
107
|
connect Ruber[:components], SIGNAL('unloading_component(QObject*)'), self, SLOT('remove_about_plugin_action(QObject*)')
|
119
108
|
connect Ruber[:components], SIGNAL('unloading_component(QObject*)'), self, SLOT('remove_plugin_ui_actions(QObject*)')
|
120
|
-
connect
|
121
|
-
connect Ruber[:
|
122
|
-
connect Ruber[:
|
109
|
+
connect Ruber[:world], SIGNAL('active_environment_changed_2(QObject*, QObject*)'), self, SLOT('slot_active_environment_changed(QObject*, QObject*)')
|
110
|
+
connect Ruber[:world], SIGNAL('document_created(QObject*)'), self, SLOT('document_created(QObject*)')
|
111
|
+
connect Ruber[:world], SIGNAL('closing_document(QObject*)'), self, SLOT(:update_switch_to_list)
|
123
112
|
|
124
113
|
setup_actions action_collection
|
125
|
-
|
126
|
-
|
127
|
-
|
114
|
+
active_project_action = action_collection.action('project-active_project')
|
115
|
+
default_view_action = active_project_action.add_action '&None (single files mode)'
|
116
|
+
|
117
|
+
connect Ruber[:world], SIGNAL('project_created(QObject*)'), self, SLOT('slot_project_created(QObject*)')
|
118
|
+
connect Ruber[:world], SIGNAL('closing_project(QObject*)'), self, SLOT('slot_project_closing(QObject*)')
|
119
|
+
|
120
|
+
Ruber[:world].connect SIGNAL('active_project_changed(QObject*)') do |prj|
|
121
|
+
@active_environment = Ruber[:world].environment prj
|
128
122
|
end
|
129
|
-
connect @tabs, SIGNAL('tabCloseRequested(int)'), self, SLOT('close_tab(int)')
|
130
|
-
connect Ruber[:projects], SIGNAL('closing_project(QObject*)'), self, SLOT('close_project_files(QObject*)')
|
131
123
|
setup_GUI
|
132
124
|
create_shell_GUI true
|
133
125
|
|
@@ -148,38 +140,27 @@ is the plugin description for this object.
|
|
148
140
|
action_collection.action("project-open_recent").load_entries recent_projects
|
149
141
|
status_bar.show
|
150
142
|
setup_initial_states
|
143
|
+
Ruber[:world].active_environment = Ruber[:world].default_environment
|
151
144
|
end
|
152
145
|
|
153
146
|
=begin rdoc
|
154
|
-
The
|
147
|
+
The toplevel panes associated with the active environment
|
155
148
|
|
156
|
-
@return
|
149
|
+
@return (see World::Environment#tabs)
|
157
150
|
=end
|
158
151
|
def tabs
|
159
|
-
@tabs
|
152
|
+
@active_environment.tabs
|
160
153
|
end
|
161
154
|
|
162
155
|
=begin rdoc
|
163
|
-
The views contained in the
|
164
|
-
|
165
|
-
If a document is given as argument, returns all views associated with the document;
|
166
|
-
if no document is given, all views are returned.
|
156
|
+
The views contained in the active environment
|
167
157
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
at the end of the array, in an arbitrary order
|
172
|
-
|
173
|
-
@param [Document,nil] doc the document to return the views for. If *nil*, all the
|
174
|
-
views will be returned
|
175
|
-
@return [Array<EditorView>] the views associated with the given document, if any,
|
176
|
-
or all the views, in activation order, from most recently activated to less recently
|
177
|
-
activated
|
158
|
+
@see World::Environment#views
|
159
|
+
@param (see World::Environment#views)
|
160
|
+
@return (see World::Environment#views)
|
178
161
|
=end
|
179
162
|
def views doc = nil
|
180
|
-
|
181
|
-
else @view_manager.activation_order.dup
|
182
|
-
end
|
163
|
+
@active_environment.views
|
183
164
|
end
|
184
165
|
|
185
166
|
##
|
@@ -296,38 +277,39 @@ hint, a new one will be created, unless the @create_if_needed@ hint is *false*.
|
|
296
277
|
@raise [ArgumentError] if _doc_ is a path or a @KDE::Url@ but the corresponding
|
297
278
|
file doesn't exist
|
298
279
|
=end
|
299
|
-
def editor_for! doc, hints =
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
280
|
+
def editor_for! doc, hints = {}
|
281
|
+
@active_environment.editor_for! doc, hints
|
282
|
+
# hints = DEFAULT_HINTS.merge hints
|
283
|
+
# if hints[:new] == :replace
|
284
|
+
# if active_editor
|
285
|
+
# hints[:existing] = :never
|
286
|
+
# hints[:show] = false
|
287
|
+
# else hints[:new] = :new_tab
|
288
|
+
# end
|
289
|
+
# end
|
290
|
+
# docs = Ruber[:documents].documents
|
291
|
+
# unless doc.is_a? Document
|
292
|
+
# unless hints.has_key? :close_starting_document
|
293
|
+
# hints[:close_starting_document] = docs.size == 1 &&
|
294
|
+
# docs[0].extension(:ruber_default_document).default_document &&
|
295
|
+
# docs[0].pristine?
|
296
|
+
# end
|
297
|
+
# url = doc
|
298
|
+
# if url.is_a? String
|
299
|
+
# url = KDE::Url.new url
|
300
|
+
# if url.relative?
|
301
|
+
# path = File.expand_path url.path
|
302
|
+
# url.path = path
|
303
|
+
# end
|
304
|
+
# end
|
305
|
+
# doc = Ruber[:documents].document url
|
306
|
+
# end
|
307
|
+
# return unless doc
|
308
|
+
# ed = @view_manager.without_activating{@view_manager.editor_for doc, hints}
|
309
|
+
# if hints[:new] == :replace
|
310
|
+
# replace_editor active_editor, ed
|
311
|
+
# else ed
|
312
|
+
# end
|
331
313
|
end
|
332
314
|
|
333
315
|
=begin rdoc
|
@@ -343,36 +325,32 @@ editor associated with the given document exists or no document corresponds to _
|
|
343
325
|
@raise [ArgumentError] if _doc_ is a path or a @KDE::Url@ but the corresponding
|
344
326
|
file doesn't exist
|
345
327
|
=end
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
328
|
+
# def editor_for doc, hints = DEFAULT_HINTS
|
329
|
+
# hints = DEFAULT_HINTS.merge hints
|
330
|
+
# hints[:create_if_needed] = false
|
331
|
+
# unless doc.is_a? Document
|
332
|
+
# url = doc
|
333
|
+
# if url.is_a? String
|
334
|
+
# url = KDE::Url.new url
|
335
|
+
# if url.relative?
|
336
|
+
# path = File.expand_path url.path
|
337
|
+
# url.path = path
|
338
|
+
# end
|
339
|
+
# end
|
340
|
+
# doc = Ruber[:documents].document_for_url url
|
341
|
+
# end
|
342
|
+
# return unless doc
|
343
|
+
# @view_manager.editor_for doc, hints
|
344
|
+
# end
|
363
345
|
|
364
346
|
=begin rdoc
|
365
347
|
The active editor
|
366
348
|
|
367
|
-
|
368
|
-
|
369
|
-
focus when the tab widget does. If the focus already is in the tab widget, then
|
370
|
-
the active editor is the one whose @is_active_window@ method returns *true*.
|
371
|
-
|
372
|
-
@return [EditorView,nil] the active editor or *nil* if there's no active editor.
|
349
|
+
@see World::Environment#active_editor
|
350
|
+
@return (see World::Environment#active_editor)
|
373
351
|
=end
|
374
352
|
def active_editor
|
375
|
-
@
|
353
|
+
@active_environment.active_editor
|
376
354
|
end
|
377
355
|
alias_method :current_editor, :active_editor
|
378
356
|
|
@@ -391,12 +369,7 @@ signals are emitted.
|
|
391
369
|
editor will be deactivated
|
392
370
|
=end
|
393
371
|
def activate_editor editor
|
394
|
-
|
395
|
-
return unless tab
|
396
|
-
@tabs.current_widget = tab
|
397
|
-
return if active_editor == editor
|
398
|
-
@view_manager.make_editor_active editor
|
399
|
-
editor
|
372
|
+
@active_environment.activate_editor editor
|
400
373
|
end
|
401
374
|
|
402
375
|
=begin rdoc
|
@@ -428,16 +401,7 @@ it).
|
|
428
401
|
@return [EditorView,nil] the new editor or *nil* if the user choose to abort
|
429
402
|
=end
|
430
403
|
def replace_editor old, editor_or_doc
|
431
|
-
|
432
|
-
return unless old.document.query_close
|
433
|
-
close_doc = true
|
434
|
-
end
|
435
|
-
if editor_or_doc.is_a?(EditorView) then ed = editor_or_doc
|
436
|
-
else ed = editor_for! editor_or_doc, :existing => :never, :show => false
|
437
|
-
end
|
438
|
-
old.parent.replace_view old, ed
|
439
|
-
close_editor old, false
|
440
|
-
ed
|
404
|
+
@active_environment.replace_editor old, editor_or_doc
|
441
405
|
end
|
442
406
|
|
443
407
|
=begin rdoc
|
@@ -451,22 +415,19 @@ The toplevel pane corresponding to the given index or editor
|
|
451
415
|
@return [Pane] the toplevel pane containing the given editor
|
452
416
|
=end
|
453
417
|
def tab arg
|
454
|
-
@
|
418
|
+
@active_environment.tab arg
|
455
419
|
end
|
456
420
|
|
457
421
|
=begin rdoc
|
458
422
|
The document associated with the active editor
|
459
423
|
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
@return [Document,nil] the document associated with the active editor or *nil*
|
464
|
-
if there's no active editor
|
424
|
+
@see World::Environment#active_document
|
425
|
+
@return (see World::Environment#active_document)
|
465
426
|
=end
|
466
|
-
def
|
427
|
+
def active_document
|
467
428
|
(ed = active_editor) ? ed.document : nil
|
468
429
|
end
|
469
|
-
alias_method :
|
430
|
+
alias_method :current_document, :active_document
|
470
431
|
|
471
432
|
=begin rdoc
|
472
433
|
Displays an editor for the given document
|
@@ -487,16 +448,17 @@ Besides the keys listed in {#editor_for!}, _hints_ can also contain the two entr
|
|
487
448
|
@return [EditorView,nil] the editor which has been activated or *nil* if the
|
488
449
|
editor couldn't be found (or created)
|
489
450
|
=end
|
490
|
-
def
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
451
|
+
def display_document doc, hints = {}
|
452
|
+
@active_environment.display_document doc, hints
|
453
|
+
# ed = editor_for! doc, hints
|
454
|
+
# return unless ed
|
455
|
+
# activate_editor ed
|
456
|
+
# line = hints[:line]
|
457
|
+
# ed.go_to line, hints[:column] || 0 if line
|
458
|
+
# ed.set_focus
|
459
|
+
# ed
|
498
460
|
end
|
499
|
-
alias_method :
|
461
|
+
alias_method :display_doc, :display_document
|
500
462
|
|
501
463
|
=begin rdoc
|
502
464
|
Executes the given block without automatically activating an editor whenever the
|
@@ -523,43 +485,27 @@ After calling this method, the focus widget of the current tab gets focus
|
|
523
485
|
@return [Object] the value returned by the block
|
524
486
|
=end
|
525
487
|
def without_activating &blk
|
526
|
-
|
488
|
+
blk.call
|
489
|
+
# @view_manager.without_activating &blk
|
527
490
|
end
|
528
491
|
|
529
492
|
=begin rdoc
|
530
493
|
Closes an editor view
|
531
494
|
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
of aborting closing the editor (and the document). If _ask_ is false, the document
|
536
|
-
will be closed without user interaction.
|
537
|
-
|
538
|
-
If there are other editors associated with the document besides the one to close,
|
539
|
-
the latter will be closed without affecting the document.
|
540
|
-
|
541
|
-
@param [EditorView] editor the editor to close
|
542
|
-
@param [Boolean] ask whether or not to ask confirmation from the user if the document
|
543
|
-
associated with _editor_ should be closed
|
544
|
-
@return [Boolean] *true* if the editor is closed and *false* if it isn't.
|
495
|
+
@see World::Environment#close_editor
|
496
|
+
@param (see World::Environment#close_editor)
|
497
|
+
@return (see World::Environment#close_editor)
|
545
498
|
@note Always use this method to close an editor, rather than calling its {EditorView#close close}
|
546
499
|
method directly, unless you want to leave the corresponding document without a view
|
547
500
|
=end
|
548
501
|
def close_editor editor, ask = true
|
549
|
-
|
550
|
-
#
|
551
|
-
# if
|
552
|
-
#
|
553
|
-
#
|
554
|
-
#
|
502
|
+
@active_environment.close_editor editor, ask
|
503
|
+
# doc = editor.document
|
504
|
+
# if doc.views.size > 1
|
505
|
+
# editor.close
|
506
|
+
# true
|
507
|
+
# else doc.close ask
|
555
508
|
# end
|
556
|
-
doc = editor.document
|
557
|
-
if doc.views.size > 1
|
558
|
-
editor.close
|
559
|
-
true
|
560
|
-
else doc.close ask
|
561
|
-
end
|
562
|
-
# focus_on_editor new_view if new_view
|
563
509
|
end
|
564
510
|
|
565
511
|
=begin rdoc
|
@@ -648,25 +594,25 @@ The new project will be made active and the existing one (if any) will be closed
|
|
648
594
|
(including the project being already open in case _allow_reuse_ is *false*)
|
649
595
|
=end
|
650
596
|
def safe_open_project file, allow_reuse = false
|
651
|
-
prj = Ruber[:projects
|
597
|
+
prj = Ruber[:world].projects[file]
|
652
598
|
if !allow_reuse and prj
|
653
|
-
text = "A project corresponding to the file
|
599
|
+
text = i18n("A project corresponding to the file %s is already open. Please, close it before attempting to open it again" % file)
|
654
600
|
KDE::MessageBox.sorry self, KDE.i18n(text)
|
655
601
|
return nil
|
656
602
|
elsif prj then return prj
|
657
603
|
end
|
658
604
|
message = nil
|
659
|
-
begin prj = Ruber[:
|
605
|
+
begin prj = Ruber[:world].project file
|
660
606
|
rescue Project::InvalidProjectFile => ex
|
661
607
|
text = "%s isn't a valid project file. The error reported was:\n%s"
|
662
|
-
message =
|
663
|
-
rescue LoadError then message =
|
608
|
+
message = i18n(text) % [file, ex.message]
|
609
|
+
rescue LoadError then message = i18n(ex.message)
|
664
610
|
end
|
665
611
|
if prj
|
666
|
-
# The following two
|
612
|
+
# The following two line should be removed when we'll allow more than one project
|
667
613
|
# open at the same time
|
668
|
-
|
669
|
-
Ruber[:
|
614
|
+
# Ruber[:projects].current_project.close if Ruber[:projects].current_project
|
615
|
+
Ruber[:world].active_project = prj
|
670
616
|
prj
|
671
617
|
else
|
672
618
|
KDE::MessageBox.sorry self, message
|
@@ -734,15 +680,21 @@ Giving focus to the editor implies:
|
|
734
680
|
@return [EditorView,nil] the editor which was given focus or *nil* if no editor
|
735
681
|
received focus
|
736
682
|
=end
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
683
|
+
# def focus_on_editor ed = nil, hints = DEFAULT_HINTS
|
684
|
+
# if ed
|
685
|
+
# ed = editor_for! ed, hints unless ed.is_a? EditorView
|
686
|
+
# activate_editor ed
|
687
|
+
# ed.set_focus
|
688
|
+
# else active_editor.set_focus if active_editor
|
689
|
+
# end
|
690
|
+
# active_editor
|
691
|
+
# end
|
692
|
+
|
693
|
+
def focus_on_editor
|
694
|
+
active_editor.set_focus if active_editor
|
744
695
|
active_editor
|
745
696
|
end
|
697
|
+
slots :focus_on_editor
|
746
698
|
|
747
699
|
=begin rdoc
|
748
700
|
@return [String] the default directory where to look for, and create, projects
|
@@ -779,20 +731,6 @@ Executes a given action
|
|
779
731
|
end
|
780
732
|
end
|
781
733
|
|
782
|
-
=begin rdoc
|
783
|
-
Settings widget for the workspace group
|
784
|
-
=end
|
785
|
-
class WorkspaceSettingsWidget < Qt::Widget
|
786
|
-
=begin rdoc
|
787
|
-
@param [Qt::Widget,nil] parent the parent widget
|
788
|
-
=end
|
789
|
-
def initialize parent = nil
|
790
|
-
super
|
791
|
-
@ui = Ui::WorkspaceSettingsWidgetBase.new
|
792
|
-
@ui.setup_ui self
|
793
|
-
end
|
794
|
-
end
|
795
|
-
|
796
734
|
end
|
797
735
|
|
798
736
|
end
|