ruber 0.0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/COPYING +339 -0
  2. data/INSTALL +137 -0
  3. data/LICENSE +8 -0
  4. data/bin/ruber +65 -0
  5. data/data/share/apps/ruber/core_components.yaml +31 -0
  6. data/data/share/apps/ruber/ruberui.rc +109 -0
  7. data/data/share/icons/ruber.png +0 -0
  8. data/data/share/pixmaps/ruby.png +0 -0
  9. data/icons/ruber-16.png +0 -0
  10. data/icons/ruber-32.png +0 -0
  11. data/icons/ruber-48.png +0 -0
  12. data/icons/ruber-8.png +0 -0
  13. data/lib/ruber/application/application.rb +288 -0
  14. data/lib/ruber/application/plugin.yaml +11 -0
  15. data/lib/ruber/component_manager.rb +899 -0
  16. data/lib/ruber/config/config.rb +82 -0
  17. data/lib/ruber/config/plugin.yaml +3 -0
  18. data/lib/ruber/document_project.rb +209 -0
  19. data/lib/ruber/documents/document_list.rb +416 -0
  20. data/lib/ruber/documents/plugin.yaml +4 -0
  21. data/lib/ruber/editor/document.rb +506 -0
  22. data/lib/ruber/editor/editor_view.rb +167 -0
  23. data/lib/ruber/editor/ktexteditor_wrapper.rb +202 -0
  24. data/lib/ruber/exception_widgets.rb +245 -0
  25. data/lib/ruber/external_program_plugin.rb +397 -0
  26. data/lib/ruber/filtered_output_widget.rb +342 -0
  27. data/lib/ruber/gui_states_handler.rb +231 -0
  28. data/lib/ruber/kde_config_option_backend.rb +167 -0
  29. data/lib/ruber/kde_sugar.rb +249 -0
  30. data/lib/ruber/main_window/choose_plugins_dlg.rb +353 -0
  31. data/lib/ruber/main_window/main_window.rb +524 -0
  32. data/lib/ruber/main_window/main_window_actions.rb +537 -0
  33. data/lib/ruber/main_window/main_window_internal.rb +239 -0
  34. data/lib/ruber/main_window/open_file_in_project_dlg.rb +212 -0
  35. data/lib/ruber/main_window/output_color_widget.rb +35 -0
  36. data/lib/ruber/main_window/plugin.yaml +58 -0
  37. data/lib/ruber/main_window/save_modified_files_dlg.rb +89 -0
  38. data/lib/ruber/main_window/status_bar.rb +156 -0
  39. data/lib/ruber/main_window/ui/choose_plugins_widget.rb +90 -0
  40. data/lib/ruber/main_window/ui/choose_plugins_widget.ui +77 -0
  41. data/lib/ruber/main_window/ui/main_window_settings_widget.rb +108 -0
  42. data/lib/ruber/main_window/ui/main_window_settings_widget.ui +89 -0
  43. data/lib/ruber/main_window/ui/new_project_widget.rb +119 -0
  44. data/lib/ruber/main_window/ui/new_project_widget.ui +178 -0
  45. data/lib/ruber/main_window/ui/open_file_in_project_dlg.rb +109 -0
  46. data/lib/ruber/main_window/ui/open_file_in_project_dlg.ui +168 -0
  47. data/lib/ruber/main_window/ui/output_color_widget.rb +241 -0
  48. data/lib/ruber/main_window/ui/output_color_widget.ui +204 -0
  49. data/lib/ruber/main_window/workspace.rb +442 -0
  50. data/lib/ruber/output_widget.rb +1093 -0
  51. data/lib/ruber/plugin.rb +264 -0
  52. data/lib/ruber/plugin_like.rb +589 -0
  53. data/lib/ruber/plugin_specification.rb +106 -0
  54. data/lib/ruber/plugin_specification_reader.rb +451 -0
  55. data/lib/ruber/project.rb +493 -0
  56. data/lib/ruber/project_backend.rb +105 -0
  57. data/lib/ruber/projects/plugin.yaml +11 -0
  58. data/lib/ruber/projects/project_files_list.rb +314 -0
  59. data/lib/ruber/projects/project_files_widget.rb +301 -0
  60. data/lib/ruber/projects/project_list.rb +314 -0
  61. data/lib/ruber/projects/ui/project_files_rule_chooser_widget.rb +74 -0
  62. data/lib/ruber/projects/ui/project_files_rule_chooser_widget.ui +61 -0
  63. data/lib/ruber/projects/ui/project_files_widget.rb +117 -0
  64. data/lib/ruber/projects/ui/project_files_widget.ui +123 -0
  65. data/lib/ruber/qt_sugar.rb +673 -0
  66. data/lib/ruber/settings_container.rb +515 -0
  67. data/lib/ruber/settings_dialog.rb +244 -0
  68. data/lib/ruber/settings_dialog_manager.rb +503 -0
  69. data/lib/ruber/utils.rb +414 -0
  70. data/lib/ruber/yaml_option_backend.rb +159 -0
  71. data/outsider_files +15 -0
  72. data/plugins/autosave/autosave.rb +404 -0
  73. data/plugins/autosave/plugin.yaml +16 -0
  74. data/plugins/autosave/ui/autosave_config_widget.rb +83 -0
  75. data/plugins/autosave/ui/autosave_config_widget.ui +68 -0
  76. data/plugins/command/command.png +0 -0
  77. data/plugins/command/command.rb +74 -0
  78. data/plugins/command/plugin.yaml +11 -0
  79. data/plugins/find_in_files/find_in_files.rb +337 -0
  80. data/plugins/find_in_files/find_in_files_dlg.rb +411 -0
  81. data/plugins/find_in_files/find_in_files_ui.rc +11 -0
  82. data/plugins/find_in_files/find_in_files_widgets.rb +485 -0
  83. data/plugins/find_in_files/plugin.yaml +23 -0
  84. data/plugins/find_in_files/ui/config_widget.rb +58 -0
  85. data/plugins/find_in_files/ui/config_widget.ui +41 -0
  86. data/plugins/find_in_files/ui/find_in_files_widget.rb +260 -0
  87. data/plugins/find_in_files/ui/find_in_files_widget.ui +324 -0
  88. data/plugins/project_browser/plugin.yaml +10 -0
  89. data/plugins/project_browser/project_browser.rb +245 -0
  90. data/plugins/rake/plugin.yaml +39 -0
  91. data/plugins/rake/rake.png +0 -0
  92. data/plugins/rake/rake.rb +567 -0
  93. data/plugins/rake/rake_extension.rb +153 -0
  94. data/plugins/rake/rake_widgets.rb +615 -0
  95. data/plugins/rake/rakeui.rc +27 -0
  96. data/plugins/rake/ui/add_quick_task_widget.rb +71 -0
  97. data/plugins/rake/ui/add_quick_task_widget.ui +59 -0
  98. data/plugins/rake/ui/choose_task_widget.rb +77 -0
  99. data/plugins/rake/ui/choose_task_widget.ui +72 -0
  100. data/plugins/rake/ui/config_widget.rb +127 -0
  101. data/plugins/rake/ui/config_widget.ui +123 -0
  102. data/plugins/rake/ui/project_widget.rb +217 -0
  103. data/plugins/rake/ui/project_widget.ui +246 -0
  104. data/plugins/rspec/plugin.yaml +30 -0
  105. data/plugins/rspec/rspec.png +0 -0
  106. data/plugins/rspec/rspec.rb +945 -0
  107. data/plugins/rspec/rspec.svg +90 -0
  108. data/plugins/rspec/rspecui.rc +20 -0
  109. data/plugins/rspec/ruber_rspec_formatter.rb +312 -0
  110. data/plugins/rspec/ui/rspec_project_widget.rb +170 -0
  111. data/plugins/rspec/ui/rspec_project_widget.ui +193 -0
  112. data/plugins/ruby_development/plugin.yaml +27 -0
  113. data/plugins/ruby_development/ruby_development.png +0 -0
  114. data/plugins/ruby_development/ruby_development.rb +453 -0
  115. data/plugins/ruby_development/ruby_developmentui.rc +19 -0
  116. data/plugins/ruby_development/ui/project_widget.rb +112 -0
  117. data/plugins/ruby_development/ui/project_widget.ui +108 -0
  118. data/plugins/ruby_runner/config_widget.rb +116 -0
  119. data/plugins/ruby_runner/plugin.yaml +26 -0
  120. data/plugins/ruby_runner/project_widget.rb +62 -0
  121. data/plugins/ruby_runner/ruby.png +0 -0
  122. data/plugins/ruby_runner/ruby_interpretersui.rc +26 -0
  123. data/plugins/ruby_runner/ruby_runner.rb +411 -0
  124. data/plugins/ruby_runner/ui/config_widget.rb +92 -0
  125. data/plugins/ruby_runner/ui/config_widget.ui +91 -0
  126. data/plugins/ruby_runner/ui/project_widget.rb +60 -0
  127. data/plugins/ruby_runner/ui/project_widget.ui +48 -0
  128. data/plugins/ruby_runner/ui/ruby_runnner_plugin_option_widget.rb +59 -0
  129. data/plugins/ruby_runner/ui/ruby_runnner_plugin_option_widget.ui +44 -0
  130. data/plugins/state/plugin.yaml +28 -0
  131. data/plugins/state/state.rb +520 -0
  132. data/plugins/state/ui/config_widget.rb +92 -0
  133. data/plugins/state/ui/config_widget.ui +89 -0
  134. data/plugins/syntax_checker/plugin.yaml +18 -0
  135. data/plugins/syntax_checker/syntax_checker.rb +662 -0
  136. data/ruber.desktop +10 -0
  137. data/spec/annotation_model_spec.rb +174 -0
  138. data/spec/common.rb +119 -0
  139. data/spec/component_manager_spec.rb +1259 -0
  140. data/spec/document_list_spec.rb +626 -0
  141. data/spec/document_project_spec.rb +373 -0
  142. data/spec/document_spec.rb +779 -0
  143. data/spec/editor_view_spec.rb +167 -0
  144. data/spec/external_program_plugin_spec.rb +676 -0
  145. data/spec/filtered_output_widget_spec.rb +642 -0
  146. data/spec/gui_states_handler_spec.rb +304 -0
  147. data/spec/kde_config_option_backend_spec.rb +214 -0
  148. data/spec/kde_sugar_spec.rb +101 -0
  149. data/spec/ktexteditor_wrapper_spec.rb +305 -0
  150. data/spec/output_widget_spec.rb +1703 -0
  151. data/spec/plugin_spec.rb +1393 -0
  152. data/spec/plugin_specification_reader_spec.rb +1765 -0
  153. data/spec/plugin_specification_spec.rb +401 -0
  154. data/spec/project_backend_spec.rb +172 -0
  155. data/spec/project_files_list_spec.rb +401 -0
  156. data/spec/project_list_spec.rb +511 -0
  157. data/spec/project_spec.rb +990 -0
  158. data/spec/qt_sugar_spec.rb +328 -0
  159. data/spec/settings_container_spec.rb +617 -0
  160. data/spec/settings_dialog_manager_spec.rb +773 -0
  161. data/spec/settings_dialog_spec.rb +419 -0
  162. data/spec/state_spec.rb +991 -0
  163. data/spec/utils_spec.rb +406 -0
  164. data/spec/workspace_spec.rb +869 -0
  165. data/spec/yaml_option_backend_spec.rb +246 -0
  166. metadata +284 -0
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE kpartgui SYSTEM 'kpartgui.dtd'>
2
+ <kpartgui version="1" name="ruber-ruby_runner_plugin" >
3
+ <MenuBar>
4
+ <Menu noMerge="1" name="ruby" >
5
+ <text>&amp;Ruby</text>
6
+ <Separator/>
7
+ <Menu name="interpreter">
8
+ <text>Ruby &amp;Interpreter</text>
9
+ <Action name="ruby_runner-configured_interpreter"/>
10
+ <Separator/>
11
+ <ActionList name="ruby_runner-interpreters"/>
12
+ </Menu>
13
+ <Separator/>
14
+ <Action name="ruby_runner-run" />
15
+ <Action name="ruby_runner-run_current_file" text="Run current file" />
16
+ <Action name="ruby_runner-run_file" />
17
+ <Separator/>
18
+ <Action name="ruby_runner-stop" />
19
+ <Separator/>
20
+ <Action name="ruby_runner-run_in_terminal"/>
21
+ <DefineGroup name="ruby_tools"/>
22
+ <Merge/>
23
+ </Menu>
24
+ </MenuBar>
25
+ <ActionProperties/>
26
+ </kpartgui>
@@ -0,0 +1,411 @@
1
+ =begin
2
+ Copyright (C) 2010 by Stefano Crocco
3
+ stefano.crocco@alice.it
4
+
5
+ This program is free software; you can redistribute it andor modify
6
+ it under the terms of the GNU General Public License as published by
7
+ the Free Software Foundation; either version 2 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the
17
+ Free Software Foundation, Inc.,
18
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
+ =end
20
+
21
+ require 'shellwords'
22
+
23
+ require 'ruber/plugin_specification_reader'
24
+ require 'ruber/external_program_plugin'
25
+ require_relative 'ui/ruby_runnner_plugin_option_widget'
26
+
27
+ require 'ruby_runner/project_widget'
28
+ require 'ruby_runner/config_widget'
29
+
30
+ module Ruber
31
+
32
+ =begin rdoc
33
+ Plugin providing support for running ruby programs.
34
+
35
+ It provides:
36
+ * an option for the user to choose which ruby interpreter to use (both at global
37
+ and project level)
38
+ * a menu entry to temporarily choose another interpreter
39
+ * a ready to use widget where the user can enter the options to pass to ruby
40
+ * a class from which plugins which need to run a ruby program may inherit
41
+
42
+ @api feature ruby_runner
43
+ @plugin RubyInterpretersPlugin
44
+ @api_class Ruber::RubyRunner::RubyOptionsWidget
45
+ @api_class Ruber::RubyRunner::RubyRunnerPluginInternal Ruber::RubyRunner::RubyRunnerPlugin
46
+ @config_option ruby interpreters [<String>] a list of the interpreters to display
47
+ in the menu
48
+ @config_option ruby ruby [String] the path of the default interpreter to use
49
+ @config_option ruby ruby_options [<String>] a list of the options to pass to the
50
+ ruby interpreter
51
+ @project_option ruby ruby [String] the path of the interpreter to use for the project
52
+ =end
53
+ module RubyRunner
54
+
55
+ =begin rdoc
56
+ Widget to use to set the @ruby_options@ setting.
57
+
58
+ It is made by a KDE::LineEdit and the corresponding Qt::Label.
59
+ It already provides the signal property to be used by SettingsDialogContainer (set
60
+ to <tt>text_changed(QString)</tt>).
61
+
62
+ Plugin developers should only need to put this widget inside their project widget
63
+ and give it the appropriate name (usually <tt>_grp__ruby_options</tt>, where _grp_
64
+ is the group specified in RubyRunnerPlugin.new)
65
+
66
+ If something fancier is needed, the underlying label and line edit widgets can
67
+ be accessed using the @label_widget@ and @text_widget@ methods.
68
+
69
+ @todo Put this class inside the namespace after it's been changed from Ruber (as rbuic
70
+ puts all classes starting with K in the KDE namespace)
71
+ =end
72
+ class RubyOptionsWidget < Ruber::ProjectConfigWidget
73
+
74
+ =begin rdoc
75
+ Signal emitted whenever the text inside the line edit changes.
76
+
77
+ @param [String] text the new content of the line edit
78
+ =end
79
+ signals 'text_changed(QString)'
80
+
81
+ =begin rdoc
82
+ Creates a new instance
83
+
84
+ @param [Qt::Widget] parent the parent widget
85
+ =end
86
+ def initialize parent = nil
87
+ super
88
+ @ui = Ui::RubyRunnerPluginOptionWidget.new
89
+ @ui.setupUi self
90
+ connect @ui.text, SIGNAL('textChanged(QString)'), self, SIGNAL('text_changed(QString)')
91
+ end
92
+
93
+ =begin rdoc
94
+ The label widget.
95
+
96
+ This is useful, for example, if you don't like the default label.
97
+
98
+ @return [Qt::Label] the label widget
99
+ =end
100
+ def label_widget
101
+ @ui.label
102
+ end
103
+
104
+ =begin rdoc
105
+ The line edit widget widget.
106
+
107
+ In most cases, you shouldn't need to use this
108
+
109
+ @return [KDE::LineEdit] the line edit widget
110
+
111
+ =end
112
+ def text_widget
113
+ @ui.text
114
+ end
115
+
116
+ =begin rdoc
117
+ Sets the text in the line edit
118
+
119
+ @param [<String>] val an array of strings, with each string being a shell token
120
+ =end
121
+ def text= val
122
+ @ui.text.text = val.join ' '
123
+ end
124
+
125
+ =begin rdoc
126
+ Converts the contents of the line edit to an array
127
+
128
+ @return [<String>] an array of shell tokens
129
+ =end
130
+ def text
131
+ Shellwords.split_with_quotes @ui.text.text
132
+ end
133
+
134
+ end
135
+
136
+ =begin rdoc
137
+ The plugin object for the @ruby_runner@ feature.
138
+
139
+ This class provides a way to set the ruby interpreter to use, allowing to override
140
+ the interpreter set globally or for the current project. This choice can be made
141
+ programmaticaly or by the user, using the "Interpreter" submenu added by this class
142
+ to the "Ruby" menu.
143
+
144
+ The interpreters which can be chosen are configured globally by the user.
145
+
146
+ @api_method #chosen_interpreter
147
+ @api_method #choose_interpreter
148
+ =end
149
+ class RubyInterpretersPlugin < GuiPlugin
150
+
151
+ =begin rdoc
152
+ Creates a new RubyInterpretersPlugin.
153
+ @param [Ruber::PluginSpecification] psf the plugin specification object describing
154
+ the plugin
155
+ =end
156
+ def initialize psf
157
+ silently do
158
+ Object.const_set :RubyOptionsWidget, RubyOptionsWidget
159
+ Ruber::RubyRunner.const_set :RubyRunnerPlugin, RubyRunnerPluginInternal
160
+ end
161
+ super
162
+ @default_interpreter_action = action_collection.action('ruby_runner-configured_interpreter')
163
+ @interpreter_actions = []
164
+ @interpreters_group = Qt::ActionGroup.new self
165
+ @interpreters_group.add_action @default_interpreter_action
166
+ @default_interpreter_action.checked = true
167
+ fill_interpreters_menu
168
+ end
169
+
170
+ =begin rdoc
171
+ The path of the interpreter chosen by the user
172
+ @return [String,nil] a string with the path of the interpreter to use or *nil* if
173
+ the default interpreter should be used
174
+ =end
175
+ def chosen_interpreter
176
+ checked = @interpreters_group.checked_action
177
+ checked.same?( @default_interpreter_action) ? nil : checked.object_name
178
+ end
179
+
180
+ =begin rdoc
181
+ Sets the ruby interpreter to use.
182
+
183
+ Calling this method will check one of the entries of the "Interpreters" submenu
184
+
185
+ @param [String, nil] arg the interpreter to use. If *nil*, the default interpreter
186
+ will be used. If it is a string, it is the path of the interpreter to use. If this
187
+ doesn't correspond to one of the entries in the "Interpreters" submenu, nothing
188
+ is done.
189
+ @return [String,nil] the chosen interpreter or *nil* if the default one should
190
+ be used.
191
+ =end
192
+ def choose_interpreter arg
193
+ if arg.nil? then @default_interpreter_action.checked = true
194
+ else
195
+ action = @interpreters_group.actions.find{|a| a.object_name == arg}
196
+ action.checked = true if action
197
+ end
198
+ chosen_interpreter
199
+ end
200
+
201
+ private
202
+
203
+ =begin rdoc
204
+ Finds the ruby interpreters availlable on the system.
205
+
206
+ The interpreters are searched using the @which -a@ command (this means that only
207
+ interpreters in the @PATH@ environment variable will be found). The names which
208
+ are tried are: @ruby@, @ruby19@, @ruby18@, @ruby1.9@ and @ruby1.8@.
209
+ @return [<String>] a list with the paths of the ruby interpreters availlable on
210
+ the system
211
+ =end
212
+ def find_interpreters
213
+ look_for = %w[ruby ruby19 ruby18 ruby1.9 ruby1.8]
214
+ look_for.map{|r| interpreters = `which #{r} 2> /dev/null`.split_lines}.flatten
215
+ end
216
+
217
+ =begin rdoc
218
+ Clears and refills the "Interpreters" submenu
219
+
220
+ The list of availlable interpreters is read from the @ruby/interpreters@ config
221
+ option
222
+
223
+ The selection is preserved if possible (that is, if an interpreter with the same
224
+ path as the previously selected one still exists). If this isn't possible, the
225
+ default entry is selected.
226
+
227
+ @return *nil*
228
+ =end
229
+ def fill_interpreters_menu
230
+ @gui.unplug_action_list 'ruby_runner-interpreters'
231
+ old_checked = @interpreters_group.checked_action.object_name
232
+ @interpreter_actions.each{|a| @interpreters_group.remove_action a}
233
+ @interpreter_actions.clear
234
+ @interpreter_actions = Ruber[:config][:ruby, :interpreters].map do |i|
235
+ a = KDE::ToggleAction.new i, action_collection
236
+ a.object_name = i
237
+ @interpreters_group.add_action a
238
+ a.checked = true if i == old_checked
239
+ a
240
+ end
241
+ @gui.plug_action_list 'ruby_runner-interpreters', @interpreter_actions
242
+ unless @interpreters_group.checked_action
243
+ action_collection.action('ruby_runner-configured_interpreter').checked = true
244
+ end
245
+ nil
246
+ end
247
+
248
+ end
249
+
250
+ =begin
251
+ Abstract class plugins which need to run a ruby program can derive from.
252
+
253
+ It provides some convenience methods to retrieve an option for a target (which
254
+ can be either a global project, a document or a file) so that, if the option isn't
255
+ found in the target itself, a global value is used. It also provide methods to
256
+ retrieve the path of the ruby interpreter to use for a given target, taking into
257
+ account the choice made by the user in the "Interpreters" submenu.
258
+
259
+ Lastly, this class adds a project option called @ruby_options@ to the PS for the
260
+ plugin.
261
+
262
+ *Note:* classes which want to derive from this class should derive from
263
+ {Ruber::RubyRunner::RubyRunnerPlugin} rather than from this.
264
+
265
+ @api_method #option_for
266
+ @api_method #interpreter_for
267
+ @api_method #ruby_command_for
268
+ =end
269
+ class RubyRunnerPluginInternal < ExternalProgramPlugin
270
+
271
+ =begin rdoc
272
+ Creates a new instance.
273
+
274
+ Before passing it to RunnerPlugin's constructor, it adds the @ruby_options@
275
+ project option to the plugin specification object, in the given group.
276
+
277
+ @param [PluginSpecification] pso the plugin specification object associated with
278
+ the plugin
279
+ @param [String,Symbol] group the group the @ruby_options@ option should be added
280
+ to. If an option called @ruby_options@ already exists in the group, it won't be
281
+ overwritten
282
+ @param [Hash] rules the rules to apply to the @ruby_options@ option
283
+ @param [Integer,nil] order has the same meaning as in the PSF and applies to the
284
+ @param line_buffered [Boolean] as in {ExternalProgramPlugin#initialize}
285
+
286
+ @option rules [<Symbol>] scope ([:global]) has the same meaning as in the PSF,
287
+ but cannot contain the @:all@ entry and *must* be an array.
288
+ @option rules [<String>] mimetypes ([]) has the same meaning as in the PSF, but
289
+ must be an array, even if it only contains one entry
290
+ @option rules [<String>] file_extension ([]) has the same meaning as in the PSF, but
291
+ must be an array, even if it only contains one entry
292
+ =end
293
+ def initialize pso, group, rules = {}, order = nil, line_buffered = true
294
+ group = group.to_sym
295
+ @group = group
296
+ default_rules = {:scope => [:global], :file_extension => [], :mimetype => []}
297
+ rules = default_rules.merge rules
298
+ ruby_options_data = {
299
+ :name => :ruby_options,
300
+ :group => group,
301
+ :default => Ruber[:config][:ruby, :ruby_options],
302
+ :scope => rules[:scope],
303
+ :mimetype => rules[:mimetype],
304
+ :file_extension => rules[:file_extension],
305
+ :order => order,
306
+ }
307
+ pso.project_options[[group, :ruby_options]] ||= PluginSpecificationReader::Option.new ruby_options_data
308
+ super pso, line_buffered
309
+ end
310
+
311
+ =begin rdoc
312
+ Searches for an option for the given target.
313
+
314
+ The behaviour of this method depends on what _target_ is:
315
+ * if it is an {AbstractProject}, the option is searched in it
316
+ * if it is a {Document} or a string representing a file name and belongins to
317
+ the current project, the option is searched in the current project
318
+ * if it is a {Document} but doesn't belong to the current project (or no current
319
+ project exists), the option is searched in the document's own project
320
+ * if it is a string representing a file which doesn't belong to the current project
321
+ (or there's no current project) the option is looked for in the global configuration
322
+ object.
323
+
324
+ In all cases, if the search fails, the option is looked up in the global configuration
325
+ object.
326
+
327
+ @param [AbstractProject, Document, String, nil] target the object to look up the
328
+ option for. If *nil*, the option will directly be looked up in the global configuration
329
+ object
330
+ @param [Symbol] group the group the option belongs to
331
+ @param [Symbol] name the name of the option
332
+ @param [Boolean] ignore_project if *true* the option won't be looked for in the
333
+ current project, even if _target_ is a {Document} or the name of a file belonging
334
+ to it
335
+ @param [Boolean] abs it has the same meaning as in {SettingsContainer#[]}
336
+ @raise ArgumentError if the option can be found
337
+ =end
338
+ def option_for target, group, name, ignore_project = false, abs = false
339
+ cont = []
340
+ case target
341
+ when AbstractProject then cont << target
342
+ when Document
343
+ cont << (ignore_project ? (target.own_project) : target.project)
344
+ when String
345
+ if !ignore_project and Ruber[:projects].project_for_file target
346
+ cont << Ruber[:projects].current
347
+ end
348
+ end
349
+ cont << Ruber[:config]
350
+ abs = :abs if abs
351
+ cont.each_with_index do |c, i|
352
+ begin return c[group, name, abs]
353
+ rescue ArgumentError
354
+ raise if i == cont.size - 1
355
+ end
356
+ end
357
+ end
358
+
359
+ =begin rdoc
360
+ Returns the name of the ruby interpreter to use for the given target
361
+
362
+ It is specialized version of {#option_for} which looks for the @ruby/ruby@ option
363
+ and takes into account the selected entry in the "Interpreters" submenu.
364
+
365
+ @param [Boolean] ignore_project as in {#option_for}
366
+ @return [String] the path of the interpreter to use
367
+ =end
368
+ def interpreter_for target, ignore_project = false
369
+ Ruber[:ruby_interpreters].chosen_interpreter ||
370
+ option_for(target, :ruby, :ruby, ignore_project)
371
+ end
372
+
373
+ =begin rdoc
374
+ Returns the command to use to execute ruby according to the appropriate options
375
+ for the given target.
376
+
377
+ To build the command, it uses the @ruby/ruby@ and the @ruby_options@ (in the group
378
+ specified in the constructor).
379
+
380
+ @param [AbstractProject, Document, String, nil] target as in {#option_for}
381
+ @param [String] dir the directory to run ruby from (it will be passed to ruby using
382
+ the @-C@ flag)
383
+ @param [Hash] opts some options to fine tune the behaviour of the method
384
+
385
+ @option opts [Boolean] default_interpreter (false) if *true*, ignores the choice
386
+ made by the user in the "Interpreters" submenu
387
+ @option opts [Boolean] ignore_project (false) as in {#option_for}
388
+ @option opts [String] ruby (nil) if given, use this instead of the content of the @ruby/ruby@
389
+ option as default interpreter
390
+ @option opts [<String>] ruby_options (nil) if given, use this instead of the content
391
+ of the @ruby_options@ option.
392
+ @return [<String>] an array whose first entry is the name of the ruby interpreter
393
+ to use and whose other elements are the options to pass to the interpreter.
394
+ =end
395
+ def ruby_command_for target, dir, opts = {}
396
+ ruby = Ruber[:ruby_interpreters].chosen_interpreter
397
+ if !ruby or opts[:default_interpreter]
398
+ ruby = if opts[:ruby] then opts[:ruby]
399
+ else option_for target, :ruby, :ruby, opts[:ignore_project]
400
+ end
401
+ end
402
+ ruby_options = opts[:ruby_options]
403
+ ruby_options ||= option_for target, @group, :ruby_options, opts[:ignore_project]
404
+ [ruby] + ruby_options + ['-C', dir]
405
+ end
406
+
407
+ end
408
+
409
+ end
410
+
411
+ end
@@ -0,0 +1,92 @@
1
+ =begin
2
+ ** Form generated from reading ui file 'config_widget.ui'
3
+ **
4
+ ** Created: ven ott 29 17:39:04 2010
5
+ ** by: Qt User Interface Compiler version 4.7.0
6
+ **
7
+ ** WARNING! All changes made in this file will be lost when recompiling ui file!
8
+ =end
9
+
10
+ class Ui_RubyRunnerConfigWidget
11
+ attr_reader :verticalLayout
12
+ attr_reader :_ruby__interpreters
13
+ attr_reader :groupBox
14
+ attr_reader :verticalLayout_2
15
+ attr_reader :horizontalLayout
16
+ attr_reader :label
17
+ attr_reader :_ruby__ruby
18
+ attr_reader :_ruby__ruby_options
19
+
20
+ def setupUi(rubyRunnerConfigWidget)
21
+ if rubyRunnerConfigWidget.objectName.nil?
22
+ rubyRunnerConfigWidget.objectName = "rubyRunnerConfigWidget"
23
+ end
24
+ rubyRunnerConfigWidget.resize(385, 306)
25
+ @verticalLayout = Qt::VBoxLayout.new(rubyRunnerConfigWidget)
26
+ @verticalLayout.objectName = "verticalLayout"
27
+ @_ruby__interpreters = KDE::EditListBox.new(rubyRunnerConfigWidget)
28
+ @_ruby__interpreters.objectName = "_ruby__interpreters"
29
+
30
+ @verticalLayout.addWidget(@_ruby__interpreters)
31
+
32
+ @groupBox = Qt::GroupBox.new(rubyRunnerConfigWidget)
33
+ @groupBox.objectName = "groupBox"
34
+ @verticalLayout_2 = Qt::VBoxLayout.new(@groupBox)
35
+ @verticalLayout_2.objectName = "verticalLayout_2"
36
+ @horizontalLayout = Qt::HBoxLayout.new()
37
+ @horizontalLayout.objectName = "horizontalLayout"
38
+ @label = Qt::Label.new(@groupBox)
39
+ @label.objectName = "label"
40
+
41
+ @horizontalLayout.addWidget(@label)
42
+
43
+ @_ruby__ruby = KDE::ComboBox.new(@groupBox)
44
+ @_ruby__ruby.objectName = "_ruby__ruby"
45
+
46
+ @horizontalLayout.addWidget(@_ruby__ruby)
47
+
48
+
49
+ @verticalLayout_2.addLayout(@horizontalLayout)
50
+
51
+ @_ruby__ruby_options = RubyOptionsWidget.new(@groupBox)
52
+ @_ruby__ruby_options.objectName = "_ruby__ruby_options"
53
+
54
+ @verticalLayout_2.addWidget(@_ruby__ruby_options)
55
+
56
+
57
+ @verticalLayout.addWidget(@groupBox)
58
+
59
+ @label.buddy = @_ruby__ruby
60
+
61
+ retranslateUi(rubyRunnerConfigWidget)
62
+
63
+ Qt::MetaObject.connectSlotsByName(rubyRunnerConfigWidget)
64
+ end # setupUi
65
+
66
+ def setup_ui(rubyRunnerConfigWidget)
67
+ setupUi(rubyRunnerConfigWidget)
68
+ end
69
+
70
+ def retranslateUi(rubyRunnerConfigWidget)
71
+ rubyRunnerConfigWidget.windowTitle = Qt::Application.translate("RubyRunnerConfigWidget", "Form", nil, Qt::Application::UnicodeUTF8)
72
+ @_ruby__interpreters.title = Qt::Application.translate("RubyRunnerConfigWidget", "&Availlable Interpreters", nil, Qt::Application::UnicodeUTF8)
73
+ @_ruby__interpreters.setProperty("signal", Qt::Variant.new(Qt::Application.translate("RubyRunnerConfigWidget", "changed()", nil, Qt::Application::UnicodeUTF8)))
74
+ @_ruby__interpreters.setProperty("read", Qt::Variant.new(Qt::Application.translate("RubyRunnerConfigWidget", "$fill_interpreters", nil, Qt::Application::UnicodeUTF8)))
75
+ @_ruby__interpreters.setProperty("store", Qt::Variant.new(Qt::Application.translate("RubyRunnerConfigWidget", "items", nil, Qt::Application::UnicodeUTF8)))
76
+ @groupBox.title = Qt::Application.translate("RubyRunnerConfigWidget", "Interpreter", nil, Qt::Application::UnicodeUTF8)
77
+ @label.text = Qt::Application.translate("RubyRunnerConfigWidget", "&Default interpreter", nil, Qt::Application::UnicodeUTF8)
78
+ @_ruby__ruby.setProperty("read", Qt::Variant.new(Qt::Application.translate("RubyRunnerConfigWidget", "$default_interpreter=", nil, Qt::Application::UnicodeUTF8)))
79
+ @_ruby__ruby.setProperty("store", Qt::Variant.new(Qt::Application.translate("RubyRunnerConfigWidget", "current_text", nil, Qt::Application::UnicodeUTF8)))
80
+ end # retranslateUi
81
+
82
+ def retranslate_ui(rubyRunnerConfigWidget)
83
+ retranslateUi(rubyRunnerConfigWidget)
84
+ end
85
+
86
+ end
87
+
88
+ module Ui
89
+ class RubyRunnerConfigWidget < Ui_RubyRunnerConfigWidget
90
+ end
91
+ end # module Ui
92
+