ruber 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +25 -0
- data/bin/ruber +0 -0
- data/data/share/apps/ruber/ruberui.rc +15 -1
- data/data/share/icons/{ruber.png → ruber-old.pgn} +0 -0
- data/lib/ruber/application/application.rb +216 -73
- data/lib/ruber/application/plugin.yaml +2 -2
- data/lib/ruber/document_project.rb +25 -5
- data/lib/ruber/documents/document_list.rb +11 -15
- data/lib/ruber/editor/document.rb +106 -50
- data/lib/ruber/editor/editor_view.rb +4 -2
- data/lib/ruber/external_program_plugin.rb +8 -0
- data/lib/ruber/kde_config_option_backend.rb +12 -4
- data/lib/ruber/kde_sugar.rb +35 -1
- data/lib/ruber/main_window/choose_plugins_dlg.rb +10 -10
- data/lib/ruber/main_window/hint_solver.rb +263 -0
- data/lib/ruber/main_window/main_window.rb +462 -206
- data/lib/ruber/main_window/main_window_actions.rb +228 -62
- data/lib/ruber/main_window/main_window_internal.rb +169 -115
- data/lib/ruber/main_window/plugin.yaml +13 -3
- data/lib/ruber/main_window/save_modified_files_dlg.rb +1 -1
- data/lib/ruber/main_window/ui/choose_plugins_widget.rb +1 -1
- data/lib/ruber/main_window/ui/main_window_settings_widget.rb +1 -1
- data/lib/ruber/main_window/ui/new_project_widget.rb +1 -1
- data/lib/ruber/main_window/ui/open_file_in_project_dlg.rb +1 -1
- data/lib/ruber/main_window/ui/output_color_widget.rb +1 -1
- data/lib/ruber/main_window/ui/workspace_settings_widget.rb +51 -0
- data/lib/ruber/main_window/ui/workspace_settings_widget.ui +28 -0
- data/lib/ruber/main_window/view_manager.rb +418 -0
- data/lib/ruber/main_window/workspace.png +0 -0
- data/lib/ruber/output_widget.rb +43 -37
- data/lib/ruber/pane.rb +621 -0
- data/lib/ruber/plugin_specification_reader.rb +8 -1
- data/lib/ruber/projects/project_files_list.rb +6 -0
- data/lib/ruber/projects/ui/project_files_rule_chooser_widget.rb +1 -1
- data/lib/ruber/projects/ui/project_files_widget.rb +1 -1
- data/lib/ruber/qt_sugar.rb +94 -4
- data/lib/ruber/utils.rb +16 -7
- data/lib/ruber/version.rb +2 -2
- data/plugins/autosave/autosave.rb +62 -1
- data/plugins/autosave/plugin.yaml +1 -0
- data/plugins/autosave/ui/autosave_config_widget.rb +37 -14
- data/plugins/autosave/ui/autosave_config_widget.ui +62 -12
- data/plugins/find_in_files/find_in_files_widgets.rb +1 -3
- data/plugins/find_in_files/ui/config_widget.rb +1 -1
- data/plugins/find_in_files/ui/find_in_files_widget.rb +1 -1
- data/plugins/rake/plugin.yaml +1 -1
- data/plugins/rake/ui/add_quick_task_widget.rb +1 -1
- data/plugins/rake/ui/choose_task_widget.rb +1 -1
- data/plugins/rake/ui/config_widget.rb +1 -1
- data/plugins/rake/ui/project_widget.rb +1 -1
- data/plugins/rspec/rspec.rb +14 -22
- data/plugins/rspec/ruber_rspec_formatter.rb +4 -1
- data/plugins/rspec/ui/rspec_project_widget.rb +1 -1
- data/plugins/ruby_development/plugin.yaml +7 -2
- data/plugins/ruby_development/ruby_development.rb +134 -13
- data/plugins/ruby_development/ui/config_widget.rb +66 -0
- data/plugins/ruby_development/ui/config_widget.ui +58 -0
- data/plugins/ruby_development/ui/project_widget.rb +1 -1
- data/plugins/ruby_runner/plugin.yaml +2 -2
- data/plugins/ruby_runner/ruby_runner.rb +15 -3
- data/plugins/ruby_runner/ui/config_widget.rb +1 -1
- data/plugins/ruby_runner/ui/project_widget.rb +1 -1
- data/plugins/ruby_runner/ui/ruby_runnner_plugin_option_widget.rb +1 -1
- data/plugins/state/plugin.yaml +6 -2
- data/plugins/state/state.rb +305 -81
- data/plugins/state/ui/config_widget.rb +1 -1
- data/spec/common.rb +11 -3
- data/spec/document_list_spec.rb +8 -8
- data/spec/document_project_spec.rb +98 -25
- data/spec/document_spec.rb +178 -152
- data/spec/editor_view_spec.rb +26 -5
- data/spec/framework.rb +5 -0
- data/spec/hint_solver_spec.rb +450 -0
- data/spec/kde_sugar_spec.rb +73 -6
- data/spec/output_widget_spec.rb +172 -156
- data/spec/pane_spec.rb +1165 -0
- data/spec/plugin_specification_reader_spec.rb +37 -1
- data/spec/project_files_list_spec.rb +30 -20
- data/spec/qt_sugar_spec.rb +269 -0
- data/spec/state_spec.rb +566 -353
- data/spec/utils_spec.rb +1 -1
- data/spec/view_manager_spec.rb +71 -0
- metadata +16 -4
data/CHANGES
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
h1. Changes
|
2
2
|
|
3
|
+
h2. Ruber 0.0.7
|
4
|
+
|
5
|
+
* Ability to split views in tabs
|
6
|
+
* Ability to have more than one view for each document
|
7
|
+
* Made the terminal program used to run ruby programs configurable
|
8
|
+
* Added (optional) close buttons on tabs
|
9
|
+
|
10
|
+
h2. Ruber 0.0.6
|
11
|
+
|
12
|
+
h3. Features
|
13
|
+
|
14
|
+
* Allow Ruber to work with remote files
|
15
|
+
|
16
|
+
h3. Bug fixes
|
17
|
+
|
18
|
+
* Fixed a bug causing a crash from the Choose Plugins dialog in case of an error
|
19
|
+
* Fixed a bug causing Ruber to look for plugins in the directory installation of
|
20
|
+
a previous version if the plugin directories settings had been changed (even if
|
21
|
+
the default directory hadn't been changed)
|
22
|
+
* Made the rake plugin depend on the autosave plugin
|
23
|
+
|
24
|
+
h2. Ruber 0.0.5
|
25
|
+
|
26
|
+
* Fixed a bug causing an error when opening files
|
27
|
+
|
3
28
|
h2. Ruber 0.0.4
|
4
29
|
|
5
30
|
* Fixed a bug causing Ruber to fail starting up if the @$KDEHOME/share/apps/ruber/plugins@
|
data/bin/ruber
CHANGED
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<!DOCTYPE kpartgui SYSTEM 'kpartgui.dtd'>
|
2
|
-
<kpartgui version="
|
2
|
+
<kpartgui version="13" name="ruber" >
|
3
3
|
<MenuBar>
|
4
4
|
<Menu name="file" >
|
5
5
|
<text>&File</text>
|
@@ -18,6 +18,7 @@
|
|
18
18
|
<DefineGroup name="export_merge" />
|
19
19
|
<Separator/>
|
20
20
|
<Action name="file_close" />
|
21
|
+
<Action name="file-close_tab"/>
|
21
22
|
<Action name="file-close_all" />
|
22
23
|
<Action name="file-close_other" />
|
23
24
|
<Separator/>
|
@@ -76,6 +77,19 @@
|
|
76
77
|
<DefineGroup name="tools_operations" />
|
77
78
|
<Action name="scripts" />
|
78
79
|
</Menu>
|
80
|
+
<Menu name="window">
|
81
|
+
<text>&Window</text>
|
82
|
+
<Action name="window-split_horizontally"/>
|
83
|
+
<Action name="window-split_vertically"/>
|
84
|
+
<Separator/>
|
85
|
+
<Action name="window-switch_to_new_document"/>
|
86
|
+
<Action name="window-switch_to_file"/>
|
87
|
+
<Menu name="window-switch_to_open_document">
|
88
|
+
<text>&Switch to Document</text>
|
89
|
+
<ActionList name="window-switch_to_open_document_list"/>
|
90
|
+
</Menu>
|
91
|
+
<Action name="window-switch_to_recent_file"/>
|
92
|
+
</Menu>
|
79
93
|
<Menu name="settings" >
|
80
94
|
<text>&Settings</text>
|
81
95
|
<Action name="options_configure" />
|
File without changes
|
@@ -27,35 +27,40 @@ require 'facets/kernel/__dir__'
|
|
27
27
|
require 'fileutils'
|
28
28
|
|
29
29
|
require 'ruber/plugin_like'
|
30
|
+
require 'ruber/project'
|
30
31
|
require 'ruber/exception_widgets'
|
31
32
|
|
32
33
|
module Ruber
|
33
34
|
|
34
35
|
=begin rdoc
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
The component providing a feature
|
37
|
+
|
38
|
+
@param [Symbol] feature the feature the component should provide
|
39
|
+
@return [PluginLike,nil] the component providing the given feature or *nil* if
|
40
|
+
no components provide it
|
41
|
+
@raise [NoMethodError] if called before the application is created
|
39
42
|
=end
|
40
43
|
def self.[](feature)
|
41
44
|
# This instance variable is initialized by the application's constructor
|
42
45
|
@components[feature]
|
43
46
|
end
|
44
47
|
|
45
|
-
|
46
48
|
class Application < KDE::Application
|
47
49
|
|
48
50
|
=begin rdoc
|
49
|
-
The default
|
50
|
-
|
51
|
+
The default paths where to look for plugins.
|
52
|
+
|
53
|
+
It includes @$KDEHOME/share/apps/ruber/plugins@ and the @plugins@ subdirectory
|
54
|
+
of the ruber installation directory
|
51
55
|
=end
|
52
56
|
DEFAULT_PLUGIN_PATHS = [
|
53
57
|
File.join(KDE::Global.dirs.find_dirs( 'data', '')[0], File.join('ruber','plugins')),
|
54
|
-
|
58
|
+
RUBER_PLUGIN_DIR
|
55
59
|
]
|
56
60
|
=begin rdoc
|
57
|
-
The default plugins to load
|
58
|
-
|
61
|
+
The default plugins to load
|
62
|
+
|
63
|
+
Currently, they are: ruby_development, find_in_files, syntax_checker, command and state
|
59
64
|
=end
|
60
65
|
DEFAULT_PLUGINS = %w[ruby_development find_in_files rake command syntax_checker state]
|
61
66
|
|
@@ -63,28 +68,47 @@ command and state
|
|
63
68
|
|
64
69
|
slots 'load_settings()', :setup
|
65
70
|
|
66
|
-
|
71
|
+
=begin rdoc
|
72
|
+
@return [Hash] the command line options passed to ruber (after they've been processed)
|
73
|
+
=end
|
67
74
|
attr_reader :cmd_line_options
|
68
75
|
|
69
76
|
=begin rdoc
|
70
|
-
|
77
|
+
<<<<<<< HEAD
|
78
|
+
=======
|
79
|
+
The state Ruber is in
|
80
|
+
|
81
|
+
Ruber can be in three states:
|
82
|
+
|
83
|
+
- *starting*:= from the time it's launched to when {#setup} returns
|
84
|
+
- *running*:= from after {#setup} has returend to when the user chooses to quit
|
85
|
+
it (either with the @File/Quit@ menu entry or clicking on the button on the title
|
86
|
+
bar)
|
87
|
+
- *quitting*:= from when the user chooses to quit Ruber onwards
|
88
|
+
|
89
|
+
>>>>>>> master
|
90
|
+
@return [Symbol] the status of the application. It can be: @:starting@, @:running@
|
91
|
+
or @:quitting@
|
71
92
|
=end
|
72
93
|
attr_reader :status
|
73
94
|
|
74
95
|
=begin rdoc
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
96
|
+
Creates a new instance of {Application}
|
97
|
+
|
98
|
+
It loads the core components and sets up a single shot timer which calls {#setup}
|
99
|
+
and is fired as soon as the event loop starts.
|
100
|
+
|
101
|
+
@param [ComponentManager] manager the component manager
|
102
|
+
@param [PluginSpecification] psf the plugin specification object describing the
|
103
|
+
application component
|
80
104
|
=end
|
81
|
-
def initialize manager,
|
105
|
+
def initialize manager, psf
|
82
106
|
super()
|
83
107
|
@components = manager
|
84
108
|
@components.parent = self
|
85
109
|
Ruber.instance_variable_set :@components, @components
|
86
|
-
initialize_plugin
|
87
|
-
KDE::Global.dirs.addPrefix File.expand_path(File.join( RUBER_DATA_DIR, '..', '
|
110
|
+
initialize_plugin psf
|
111
|
+
KDE::Global.dirs.addPrefix File.expand_path(File.join( RUBER_DATA_DIR, '..', 'data'))
|
88
112
|
icon_path = KDE::Global.dirs.find_resource('icon', 'ruber')
|
89
113
|
self.window_icon = Qt::Icon.new icon_path
|
90
114
|
KDE::Global.main_component.about_data.program_icon_name = icon_path
|
@@ -95,52 +119,109 @@ The status of the application. It can be: +:starting+, +:running+ or +:quitting+
|
|
95
119
|
Qt::Timer.single_shot(0, self, SLOT(:setup))
|
96
120
|
end
|
97
121
|
|
122
|
+
=begin rdoc
|
123
|
+
@return [Array<String>] a list of the directories where Ruber looks for plugins
|
124
|
+
=end
|
125
|
+
def plugin_directories
|
126
|
+
@plugin_dirs.dup
|
127
|
+
end
|
128
|
+
alias :plugin_dirs :plugin_directories
|
129
|
+
|
130
|
+
=begin rdoc
|
131
|
+
Sets the list of directories where Ruber looks for plugins
|
132
|
+
|
133
|
+
This also changes the setting in the global configuration object, but it *doesn't*
|
134
|
+
write the change to file. It's up to whoever called this method to do so.
|
135
|
+
|
136
|
+
@param [Array<String> dirs] the directories Ruber should search for plugins
|
137
|
+
=end
|
138
|
+
def plugin_directories= dirs
|
139
|
+
@plugin_directories = dirs
|
140
|
+
Ruber[:config][:general, :plugin_dirs] = @plugin_directories
|
141
|
+
end
|
142
|
+
alias :plugin_dirs= :plugin_directories=
|
143
|
+
|
144
|
+
=begin rdoc
|
145
|
+
Quits ruber
|
146
|
+
|
147
|
+
Sets the application status to @:quitting@ and calls {ComponentManager#shutdown}
|
148
|
+
@return [nil]
|
149
|
+
=end
|
98
150
|
def quit_ruber
|
99
151
|
@status = :quitting
|
100
152
|
@components.shutdown
|
153
|
+
nil
|
101
154
|
end
|
102
155
|
|
103
156
|
=begin rdoc
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
157
|
+
Whether the application is starting or has already started
|
158
|
+
|
159
|
+
You should seldom need this method. It's mostly useful for plugins which need to
|
160
|
+
erform different actions depending on whether they're loaded at application
|
161
|
+
startup (in which case it'll return *true*) or later (when it'll return *false*)
|
162
|
+
|
163
|
+
@return [Boolean] *true* if the application status is @starting@ and *false*
|
164
|
+
otherwise
|
165
|
+
@see #status
|
113
166
|
=end
|
114
167
|
def starting?
|
115
168
|
@status == :starting
|
116
169
|
end
|
117
170
|
|
171
|
+
=begin rdoc
|
172
|
+
Whether the application is running or not
|
173
|
+
|
174
|
+
@return [Boolean] *true* if the application status is @running@ and *false*
|
175
|
+
otherwise
|
176
|
+
@see #status
|
177
|
+
=end
|
118
178
|
def running?
|
119
179
|
@status == :running
|
120
180
|
end
|
121
|
-
|
181
|
+
|
182
|
+
=begin rdoc
|
183
|
+
Whether the application is quitting or not
|
184
|
+
|
185
|
+
@return [Boolean] *true* if the application status is @quitting@ and *false*
|
186
|
+
otherwise
|
187
|
+
@see #status
|
188
|
+
=end
|
122
189
|
def quitting?
|
123
190
|
@status == :quitting
|
124
191
|
end
|
125
192
|
|
126
193
|
=begin rdoc
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
194
|
+
Loads plugins handling the exceptions they may raise in the meanwhile
|
195
|
+
|
196
|
+
It is a wrapper around {ComponentManager#load_plugins}.
|
197
|
+
|
198
|
+
If it's given a block, it simply calls {ComponentManager#load_plugins} passing
|
199
|
+
it the block.
|
200
|
+
|
201
|
+
If no block is given, the behaviour in case of an exception depends on the _silent_
|
202
|
+
argument:
|
203
|
+
* if *true*, then the error will be silently ignored and the component manager will
|
204
|
+
go on loading the remaining plugins. Errors caused by those will be ignored as
|
205
|
+
well
|
206
|
+
* if *false*, the user will be shown a {ComponentLoadingErrorDialog}. According
|
207
|
+
to what the user chooses in the dialog, the component manager will behave in
|
208
|
+
a different way, as described in {ComponentManager#load_plugins}
|
209
|
+
|
210
|
+
*Note:* this method doesn't attempt to handle exceptions raised while computing
|
143
211
|
or sorting dependencies.
|
212
|
+
@param [Array<Symbol>] plugins the names of the plugins to load. It doesn't need
|
213
|
+
to include dependencies, as they're computed automatically
|
214
|
+
@param [Boolean] silent whether errors while loading plugins should be silently
|
215
|
+
ignored or not
|
216
|
+
@param [Array<String>,nil] dirs the directories where to look for plugins. If *nil*,
|
217
|
+
then the value returned by {#plugin_directories} will be used
|
218
|
+
@yield [pso, ex] block called when loading a plugin raises an exception
|
219
|
+
@yieldparam [PluginSpecification] pso the plugin specification object associated
|
220
|
+
with the plugin which raised the exception
|
221
|
+
@yieldparam [Exception] ex the exception raised while loading the plugin
|
222
|
+
@return [Boolen] *true* if the plugins were loaded successfully and *false* otherwise
|
223
|
+
@see ComponentManager#load_plugins
|
224
|
+
@see ComponentLoadingErrorDialog
|
144
225
|
=end
|
145
226
|
def safe_load_plugins plugins, silent = false, dirs = nil, &blk
|
146
227
|
if blk.nil? and silent then blk = proc{|_pl, _e| :silent}
|
@@ -148,30 +229,53 @@ or sorting dependencies.
|
|
148
229
|
blk = Proc.new{|pl, e| ComponentLoadingErrorDialog.new(pl.name, e, nil).exec}
|
149
230
|
end
|
150
231
|
@components.load_plugins plugins, dirs || @plugin_dirs, &blk
|
232
|
+
|
151
233
|
end
|
152
234
|
|
153
235
|
private
|
154
236
|
|
155
237
|
=begin rdoc
|
156
|
-
|
157
|
-
|
238
|
+
Override of {PluginLike#load_settings}
|
239
|
+
|
240
|
+
It reads the list of plugin directories from the configuration object, replacing
|
241
|
+
all mentions of the installation paths for a different version of Ruber with the
|
242
|
+
installation path for the current version, and adds to the load path all missing
|
243
|
+
directories
|
244
|
+
@return [nil]
|
158
245
|
=end
|
159
246
|
def load_settings
|
160
247
|
@plugin_dirs = Ruber[:config][:general].plugin_dirs
|
248
|
+
ruber_base_dir = File.dirname(RUBER_DIR)
|
249
|
+
@plugin_dirs.map! do |d|
|
250
|
+
if d =~ /#{File.join Regexp.quote(ruber_base_dir), 'ruber-\d+\.\d+\.\d+'}/
|
251
|
+
RUBER_PLUGIN_DIR
|
252
|
+
else d
|
253
|
+
end
|
254
|
+
end
|
161
255
|
new_dirs = @plugin_dirs - $:
|
162
256
|
new_dirs.each{|d| $:.unshift d}
|
257
|
+
nil
|
163
258
|
end
|
164
259
|
|
165
260
|
=begin rdoc
|
166
|
-
|
167
|
-
|
168
|
-
|
261
|
+
Prepares the application for running
|
262
|
+
|
263
|
+
It loads the plugins chosen by the user according to the configuration file. If
|
264
|
+
an error occurs while finding plugin dependencies (either because of a missing
|
265
|
+
dependency or a circular dependency), the user is shown a dialog asking what to
|
266
|
+
do (quit ruber or load no plugin). If an exception is raised while loading a plugin,
|
267
|
+
it's handled according to the behaviour specified in {#safe_load_plugins} with no
|
268
|
+
block given.
|
269
|
+
|
270
|
+
It also takes care of the command line options, opening the files and projects
|
271
|
+
specified in it.
|
272
|
+
|
273
|
+
At the end, the main window is shown
|
274
|
+
@return [nil]
|
169
275
|
=end
|
170
276
|
def setup
|
171
277
|
# Create $KDEHOME/share/apps/ruber/plugins if it's missing
|
172
|
-
|
173
|
-
rescue Errno::EEXIST
|
174
|
-
end
|
278
|
+
FileUtils.mkdir_p DEFAULT_PLUGIN_PATHS[0]
|
175
279
|
chosen_plugins = Ruber[:config][:general, :plugins].map(&:to_sym)
|
176
280
|
needed_plugins = []
|
177
281
|
deps_problem_msg = Proc.new do |e|
|
@@ -217,17 +321,28 @@ Do you want to start the application without them or to quit Ruber?
|
|
217
321
|
end
|
218
322
|
@status = :running
|
219
323
|
Ruber[:main_window].show
|
324
|
+
nil
|
220
325
|
end
|
221
326
|
|
222
327
|
|
223
328
|
=begin rdoc
|
224
|
-
|
225
|
-
* the configuration manager
|
226
|
-
* the document keeper
|
227
|
-
* the main window
|
329
|
+
Loads the core components
|
228
330
|
|
229
|
-
|
230
|
-
|
331
|
+
In loading order, the core components are:
|
332
|
+
* the configuration manager
|
333
|
+
* the document list
|
334
|
+
* the project list
|
335
|
+
* the main window
|
336
|
+
|
337
|
+
In case loading one of the core components raises an exception, the user is
|
338
|
+
warned with a dialog and ruber is closed.
|
339
|
+
|
340
|
+
After creating the configuration manager, {#register_with_config} is called.
|
341
|
+
|
342
|
+
If a previous session is being restored, {MainWindow#restore} is called, otherwise
|
343
|
+
an empty document is created (unless the user specified some files or project
|
344
|
+
on the command line)
|
345
|
+
@return [nil]
|
231
346
|
=end
|
232
347
|
def load_core_components
|
233
348
|
begin
|
@@ -247,40 +362,68 @@ Do you want to start the application without them or to quit Ruber?
|
|
247
362
|
else
|
248
363
|
open_command_line_files
|
249
364
|
if Ruber[:projects].projects.empty? and Ruber[:documents].documents.empty?
|
250
|
-
|
365
|
+
doc = Ruber[:documents].new_document
|
366
|
+
# This is the default document. Set the default_document attribute of
|
367
|
+
# the ruber_default_document extension to true
|
368
|
+
# TODO this extension is currently provided by the main window because
|
369
|
+
# the application component is actually loaded after the other. This
|
370
|
+
# is wrong. To avoid it, don't call load_core_components from initialize
|
371
|
+
# but have the ruber starting code (in bin/ruber) start it manually. Then
|
372
|
+
# move the extension to the application
|
373
|
+
doc.extension(:ruber_default_document).default_document = true
|
374
|
+
Ruber[:main_window].display_doc doc
|
251
375
|
end
|
252
376
|
end
|
253
377
|
end
|
254
378
|
|
255
379
|
=begin rdoc
|
256
|
-
|
257
|
-
<tt>load_settings</tt> method and connects to the configuration manager's
|
258
|
-
<tt>settings_changed</tt> signal.
|
380
|
+
Registers the configuration options with the configuration manager
|
259
381
|
|
260
|
-
|
261
|
-
|
262
|
-
|
382
|
+
This means, calling {#load_settings} and connecting to the configuration manager's
|
383
|
+
{ConfigurationManager#settings_changed settings_changed}signal.
|
384
|
+
|
385
|
+
This tasks are usually performed by {PluginLike#initialize_plugin},
|
386
|
+
but as the config manager didn't exist when that method was called, it is
|
387
|
+
necessary to to them later
|
388
|
+
@return [nil]
|
263
389
|
=end
|
264
390
|
def register_with_config
|
265
391
|
config = Ruber[:config]
|
266
392
|
@plugin_description.config_options.each_value{|o| config.add_option o}
|
267
393
|
load_settings
|
268
394
|
connect config, SIGNAL(:settings_changed), self, SLOT(:load_settings)
|
395
|
+
nil
|
269
396
|
end
|
270
397
|
|
271
398
|
=begin rdoc
|
272
|
-
Opens the files and/or project listed on the command line
|
273
|
-
|
399
|
+
Opens the files and/or project listed on the command line
|
400
|
+
|
401
|
+
If neither files nor projects have been specified on the command line,
|
402
|
+
a single empty document is created.
|
403
|
+
@return [nil]
|
274
404
|
=end
|
275
405
|
def open_command_line_files
|
276
|
-
|
406
|
+
urls = @cmd_line_options.urls
|
277
407
|
win = Ruber[:main_window]
|
278
|
-
projects, files =
|
279
|
-
prj = win.safe_open_project projects.last unless projects.empty?
|
280
|
-
files += @cmd_line_options.getOptionList('file')
|
408
|
+
projects, files = urls.partition{|u| File.extname(u.to_local_file || '') == '.ruprj'}
|
409
|
+
prj = win.safe_open_project projects.last.to_local_file unless projects.empty?
|
410
|
+
files += @cmd_line_options.getOptionList('file').map do |f|
|
411
|
+
url = KDE::Url.new f
|
412
|
+
url.path = File.expand_path(f) if url.protocol.empty?
|
413
|
+
url
|
414
|
+
end
|
281
415
|
files.each do |f|
|
282
416
|
win.display_document f
|
283
417
|
end
|
418
|
+
nil
|
419
|
+
end
|
420
|
+
|
421
|
+
class DefaultDocumentExtension
|
422
|
+
include Extension
|
423
|
+
attr_accessor :default_document
|
424
|
+
def initialize doc
|
425
|
+
@default_document = false
|
426
|
+
end
|
284
427
|
end
|
285
428
|
|
286
429
|
end
|