ruber 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/CHANGES +25 -0
  2. data/bin/ruber +0 -0
  3. data/data/share/apps/ruber/ruberui.rc +15 -1
  4. data/data/share/icons/{ruber.png → ruber-old.pgn} +0 -0
  5. data/lib/ruber/application/application.rb +216 -73
  6. data/lib/ruber/application/plugin.yaml +2 -2
  7. data/lib/ruber/document_project.rb +25 -5
  8. data/lib/ruber/documents/document_list.rb +11 -15
  9. data/lib/ruber/editor/document.rb +106 -50
  10. data/lib/ruber/editor/editor_view.rb +4 -2
  11. data/lib/ruber/external_program_plugin.rb +8 -0
  12. data/lib/ruber/kde_config_option_backend.rb +12 -4
  13. data/lib/ruber/kde_sugar.rb +35 -1
  14. data/lib/ruber/main_window/choose_plugins_dlg.rb +10 -10
  15. data/lib/ruber/main_window/hint_solver.rb +263 -0
  16. data/lib/ruber/main_window/main_window.rb +462 -206
  17. data/lib/ruber/main_window/main_window_actions.rb +228 -62
  18. data/lib/ruber/main_window/main_window_internal.rb +169 -115
  19. data/lib/ruber/main_window/plugin.yaml +13 -3
  20. data/lib/ruber/main_window/save_modified_files_dlg.rb +1 -1
  21. data/lib/ruber/main_window/ui/choose_plugins_widget.rb +1 -1
  22. data/lib/ruber/main_window/ui/main_window_settings_widget.rb +1 -1
  23. data/lib/ruber/main_window/ui/new_project_widget.rb +1 -1
  24. data/lib/ruber/main_window/ui/open_file_in_project_dlg.rb +1 -1
  25. data/lib/ruber/main_window/ui/output_color_widget.rb +1 -1
  26. data/lib/ruber/main_window/ui/workspace_settings_widget.rb +51 -0
  27. data/lib/ruber/main_window/ui/workspace_settings_widget.ui +28 -0
  28. data/lib/ruber/main_window/view_manager.rb +418 -0
  29. data/lib/ruber/main_window/workspace.png +0 -0
  30. data/lib/ruber/output_widget.rb +43 -37
  31. data/lib/ruber/pane.rb +621 -0
  32. data/lib/ruber/plugin_specification_reader.rb +8 -1
  33. data/lib/ruber/projects/project_files_list.rb +6 -0
  34. data/lib/ruber/projects/ui/project_files_rule_chooser_widget.rb +1 -1
  35. data/lib/ruber/projects/ui/project_files_widget.rb +1 -1
  36. data/lib/ruber/qt_sugar.rb +94 -4
  37. data/lib/ruber/utils.rb +16 -7
  38. data/lib/ruber/version.rb +2 -2
  39. data/plugins/autosave/autosave.rb +62 -1
  40. data/plugins/autosave/plugin.yaml +1 -0
  41. data/plugins/autosave/ui/autosave_config_widget.rb +37 -14
  42. data/plugins/autosave/ui/autosave_config_widget.ui +62 -12
  43. data/plugins/find_in_files/find_in_files_widgets.rb +1 -3
  44. data/plugins/find_in_files/ui/config_widget.rb +1 -1
  45. data/plugins/find_in_files/ui/find_in_files_widget.rb +1 -1
  46. data/plugins/rake/plugin.yaml +1 -1
  47. data/plugins/rake/ui/add_quick_task_widget.rb +1 -1
  48. data/plugins/rake/ui/choose_task_widget.rb +1 -1
  49. data/plugins/rake/ui/config_widget.rb +1 -1
  50. data/plugins/rake/ui/project_widget.rb +1 -1
  51. data/plugins/rspec/rspec.rb +14 -22
  52. data/plugins/rspec/ruber_rspec_formatter.rb +4 -1
  53. data/plugins/rspec/ui/rspec_project_widget.rb +1 -1
  54. data/plugins/ruby_development/plugin.yaml +7 -2
  55. data/plugins/ruby_development/ruby_development.rb +134 -13
  56. data/plugins/ruby_development/ui/config_widget.rb +66 -0
  57. data/plugins/ruby_development/ui/config_widget.ui +58 -0
  58. data/plugins/ruby_development/ui/project_widget.rb +1 -1
  59. data/plugins/ruby_runner/plugin.yaml +2 -2
  60. data/plugins/ruby_runner/ruby_runner.rb +15 -3
  61. data/plugins/ruby_runner/ui/config_widget.rb +1 -1
  62. data/plugins/ruby_runner/ui/project_widget.rb +1 -1
  63. data/plugins/ruby_runner/ui/ruby_runnner_plugin_option_widget.rb +1 -1
  64. data/plugins/state/plugin.yaml +6 -2
  65. data/plugins/state/state.rb +305 -81
  66. data/plugins/state/ui/config_widget.rb +1 -1
  67. data/spec/common.rb +11 -3
  68. data/spec/document_list_spec.rb +8 -8
  69. data/spec/document_project_spec.rb +98 -25
  70. data/spec/document_spec.rb +178 -152
  71. data/spec/editor_view_spec.rb +26 -5
  72. data/spec/framework.rb +5 -0
  73. data/spec/hint_solver_spec.rb +450 -0
  74. data/spec/kde_sugar_spec.rb +73 -6
  75. data/spec/output_widget_spec.rb +172 -156
  76. data/spec/pane_spec.rb +1165 -0
  77. data/spec/plugin_specification_reader_spec.rb +37 -1
  78. data/spec/project_files_list_spec.rb +30 -20
  79. data/spec/qt_sugar_spec.rb +269 -0
  80. data/spec/state_spec.rb +566 -353
  81. data/spec/utils_spec.rb +1 -1
  82. data/spec/view_manager_spec.rb +71 -0
  83. metadata +16 -4
@@ -5,7 +5,7 @@ class: 'Ruber::Application'
5
5
  config_options:
6
6
  :general:
7
7
  :plugin_dirs: {:default: Ruber::Application::DEFAULT_PLUGIN_PATHS}
8
- :plugins: {:default: 'Ruber::Application::DEFAULT_PLUGINS'}
8
+ :plugins: {:default: Ruber::Application::DEFAULT_PLUGINS}
9
9
  :auto_load_project: {:default: false }
10
10
  config_widgets:
11
- - {:caption: General, :pixmap: configure, :code: "w=Qt::CheckBox.new('&Open last project at startup');w.object_name='kcfg_general_auto_load_project';w"}
11
+ - {:caption: General, :pixmap: configure, :code: "w=Qt::CheckBox.new('&Open last project at startup');w.object_name='kcfg_general_auto_load_project';w"}
@@ -54,6 +54,7 @@ didn't exist. This means that it will be overwritten when the project is saved.
54
54
  The reason for this behaviour is that there should be no user file in the directory
55
55
  where document projects are saved.
56
56
  =end
57
+ # $CALLED = 0
57
58
  def initialize file
58
59
  @old_files = []
59
60
  begin super file_for(file)
@@ -127,12 +128,17 @@ will fail with an +ArgumentError+.
127
128
 
128
129
  If the path of the file associated with the document changes (usually because of
129
130
  a "Save As" action), the file associated with the backend is changed automatically
131
+
132
+ @todo in classes derived from Qt::Object, korundum executes the code in initialize,
133
+ up until the call to super twice. This means that two Backend items will be created.
134
+ See if something can be done to avoid it. I don't know whether this has any bad
135
+ consequence or not.
130
136
  =end
131
137
  def initialize doc
132
138
  @document = doc
133
- path = doc.path
139
+ path = backend_file
134
140
  back = Backend.new path
135
- back.instance_variable_get(:@data).empty? ? super(doc, back, doc.path) : super(doc, back)
141
+ !File.exist?(back.file) ? super(doc, back, path) : super(doc, back)
136
142
  connect doc, SIGNAL('document_url_changed(QObject*)'), self, SLOT(:change_file)
137
143
  end
138
144
 
@@ -152,6 +158,8 @@ rule's scope includes +:document+
152
158
  =end
153
159
  def match_rule? obj
154
160
  if !super then false
161
+ elsif !obj.place.include?(@document.url.local_file? ? :local : :remote)
162
+ false
155
163
  elsif !@document.file_type_match? obj.mimetype, obj.file_extension then false
156
164
  else true
157
165
  end
@@ -170,7 +178,7 @@ directory if the document isn't associated with a file.
170
178
  =begin rdoc
171
179
  Override of <tt>AbstractProject#write</tt> which prevents a Errno::ENOENT exception
172
180
  to be raised by the backend if the document isn't associated with a file. If the
173
- docuement is associated with a file, however, the exception will be raised as usual.
181
+ document is associated with a file, however, the exception will be raised as usual.
174
182
 
175
183
  The reason for this kind of behaviour is that the backend is expected to raise
176
184
  the exception when the document isn't associated with a file: it simply means that
@@ -190,7 +198,12 @@ Override of AbstractProject#files which returns an array with the path of the
190
198
  associated document, if it corresponds to a file, and an empty array otherwise
191
199
  =end
192
200
  def files
193
- path = @document.path
201
+ url = @document.url
202
+ if url.local_file?
203
+ path = url.path
204
+ else
205
+ path = url.to_encoded(Qt::Url::RemoveUserInfo|Qt::Url::RemovePort|Qt::Url::RemoveFragment).to_s
206
+ end
194
207
  path.empty? ? [] : [path]
195
208
  end
196
209
 
@@ -201,7 +214,14 @@ Updates the backend so that the associated file reflects the file associated wit
201
214
  the document.
202
215
  =end
203
216
  def change_file
204
- @backend.document_path = @document.path
217
+ @backend.document_path = backend_file
218
+ end
219
+
220
+ def backend_file
221
+ if @document.has_file?
222
+ @document.url.to_encoded(Qt::Url::RemoveUserInfo|Qt::Url::RemovePort|Qt::Url::RemoveFragment).to_s
223
+ else ''
224
+ end
205
225
  end
206
226
 
207
227
  end
@@ -94,9 +94,10 @@ the value of _create_if_needed_ a new document associated with the file or url
94
94
  will be created. In this case, the {#document_created} signal will be emitted.
95
95
 
96
96
  @param [String, KDE::Url] file the file name or URL associated with the document.
97
- A relative file name will be expanded with respect to the current directory. If
98
- it is a string, it will _always_ be interpreted as a filename. If you want it
99
- to be considered an URL, you need to create a @KDE::Url@ for it
97
+ A relative file name will be expanded with respect to the current directory. A
98
+ string containing a url will be interpreted as an url, not as a filename. If you
99
+ need a document with a name which looks like an url, you can create an empty
100
+ @KDE::Url@, then using @path=@ to set its path
100
101
  @param [Boolean] create_if_needed whether or not to create a document associated
101
102
  with _file_ if there isn't one
102
103
  @return [Document,nil] the document associated with _file_. If no such document
@@ -107,22 +108,17 @@ will be created. In this case, the {#document_created} signal will be emitted.
107
108
  =end
108
109
  def document file, create_if_needed = true
109
110
  if file.is_a? String
110
- file = File.expand_path(file)
111
- doc = document_for_file file
112
- return doc if doc or !create_if_needed
113
- elsif file.is_a? KDE::Url
114
- doc = document_for_url file
115
- return doc if doc or !create_if_needed
111
+ url = KDE::Url.new file
112
+ url.path = File.expand_path(file) if url.relative?
113
+ else url = file
116
114
  end
115
+ doc = document_for_url file
116
+ return doc if doc or !create_if_needed
117
117
  if !doc and create_if_needed
118
- url = KDE::Url.new file
119
118
  if url.local_file?
120
119
  raise ArgumentError, "File #{url.path} doesn't exist" unless File.exist?(url.path)
121
120
  end
122
- doc = Document.new Ruber[:main_window], file
123
- begin @docs[0].close if @docs.only.pristine?
124
- rescue IndexError
125
- end
121
+ doc = Document.new Ruber[:main_window], url
126
122
  add_document doc
127
123
  emit document_created(doc)
128
124
  end
@@ -227,8 +223,8 @@ The {#closing_document} signal is emitted before removing the document.
227
223
  @return [nil]
228
224
  =end
229
225
  def close_document doc
230
- emit closing_document(doc)
231
226
  @docs.delete doc
227
+ emit closing_document(doc)
232
228
  nil
233
229
  end
234
230
  private :close_document
@@ -40,13 +40,17 @@ module Ruber
40
40
  def_delegator :@doc, :documentSave, :save_document
41
41
 
42
42
  signal_data = {
43
- 'text_changed' => ['KTextEditor::Document*', [nil]],
44
- 'about_to_close' => ['KTextEditor::Document*', [nil]],
45
- 'about_to_reload' => ['KTextEditor::Document*', [nil]],
46
- 'highlighting_mode_changed' => ['KTextEditor::Document*', [nil]],
47
- 'document_url_changed' => ['KTextEditor::Document*', [nil]],
48
- 'mode_changed' => ['KTextEditor::Document*', [nil]]
49
- }
43
+ 'text_changed' => ['KTextEditor::Document*', [nil]],
44
+ 'about_to_close' => ['KTextEditor::Document*', [nil]],
45
+ 'about_to_reload' => ['KTextEditor::Document*', [nil]],
46
+ 'highlighting_mode_changed' => ['KTextEditor::Document*', [nil]],
47
+ 'mode_changed' => ['KTextEditor::Document*', [nil]],
48
+ 'sig_query_close' => ['bool*, bool*', [0,1]],
49
+ 'canceled' => ['QString', [0]],
50
+ 'started' => ['KIO::Job*', [0]],
51
+ 'set_status_bar_text' => ['QString', [0]],
52
+ 'setWindowCaption' => ['QString', [0]]
53
+ }
50
54
 
51
55
  @signal_table = KTextEditorWrapper.prepare_wrapper_connections self, signal_data
52
56
 
@@ -56,17 +60,24 @@ module Ruber
56
60
  'mode_changed(QObject*)', 'text_modified(KTextEditor::Range, KTextEditor::Range, QObject*)',
57
61
  'text_inserted(KTextEditor::Range, QObject*)', 'text_removed(KTextEditor::Range, QObject*)',
58
62
  'view_created(QObject*, QObject*)', 'closing(QObject*)', :activated, :deactivated,
59
- 'modified_on_disk(QObject*, bool, KTextEditor::ModificationInterface::ModifiedOnDiskReason)'
63
+ 'modified_on_disk(QObject*, bool, KTextEditor::ModificationInterface::ModifiedOnDiskReason)',
64
+ 'sig_query_close(bool*, bool*)', 'canceled(QString)', 'completed()', 'completed1(bool)',
65
+ 'started(KIO::Job*)', 'set_status_bar_text(QString)', 'setWindowCaption(QString)'
60
66
 
61
- slots :document_save_as, :save
62
-
63
67
  =begin rdoc
64
- The view associated with the document. If a view hasn't been created, this is *nil*
68
+ Signal emitted before a view associated with the document is closed
69
+
70
+ When this signal is emitted, the view is still associated with the document, and
71
+ it is still included in the array returned by {#views}
72
+ @param [EditorView] view the view which is being closed
73
+ @param [Document] doc *self*
65
74
  =end
66
- attr_reader :view
75
+ signals 'closing_view(QWidget*, QObject*)'
76
+
77
+ slots :document_save_as, :save
67
78
 
68
79
  def inspect
69
- if disposed? then "< #{self.class} #{object_id}DISPOSED >"
80
+ if disposed? then "< #{self.class} #{object_id} DISPOSED >"
70
81
  else super
71
82
  end
72
83
  end
@@ -79,7 +90,7 @@ Creates a new Ruber::Document.
79
90
  @active = false
80
91
  @doc = KTextEditor::EditorChooser.editor('katepart').create_document( self)
81
92
  initialize_wrapper @doc, self.class.instance_variable_get(:@signal_table)
82
- @view = nil
93
+ @views = []
83
94
  @doc.openUrl(file.is_a?(String) ? KDE::Url.from_path(file) : file) if file
84
95
  @annotation_model = AnnotationModel.new self
85
96
  interface('annotation_interface').annotation_model = @annotation_model
@@ -90,8 +101,21 @@ Creates a new Ruber::Document.
90
101
  @doc.connect(SIGNAL('modifiedChanged(KTextEditor::Document*)')) do |doc|
91
102
  emit modified_changed(@doc.modified?, self)
92
103
  end
93
- @doc.connect(SIGNAL('documentNameChanged(KTextEditor::Document*)')) do |doc|
94
- Ruber[:components].each_component{|c| c.update_project @project}
104
+ @doc.connect(SIGNAL('documentUrlChanged(KTextEditor::Document*)')) do |doc|
105
+ if !doc.url.remote_file?
106
+ Ruber[:components].each_component{|c| c.update_project @project}
107
+ end
108
+ emit document_url_changed self
109
+ end
110
+
111
+ @doc.connect SIGNAL(:completed) do
112
+ if @doc.url.remote_file?
113
+ Ruber[:components].each_component{|c|c.update_project @project}
114
+ end
115
+ emit completed
116
+ end
117
+
118
+ @doc.connect SIGNAL('documentNameChanged(KTextEditor::Document*)') do |doc|
95
119
  emit document_name_changed doc.document_name, self
96
120
  end
97
121
 
@@ -110,9 +134,34 @@ Creates a new Ruber::Document.
110
134
  @modified_on_disk = (reason != KTextEditor::ModificationInterface::OnDiskUnmodified)
111
135
  emit modified_on_disk(self, mod, reason)
112
136
  end
137
+ connect @doc, SIGNAL('completed(bool)'), self, SIGNAL('completed1(bool)')
113
138
 
114
139
  end
115
140
 
141
+ =begin rdoc
142
+ @return [Array<EditorView>] a list of the views assciated with the document
143
+ =end
144
+ def views
145
+ @views.dup
146
+ end
147
+
148
+ =begin rdoc
149
+ @return [Boolean] whether the document has at least one view associated with it
150
+ =end
151
+ def has_view?
152
+ !@views.empty?
153
+ end
154
+
155
+ =begin rdoc
156
+ The view which currently has user focus, if any
157
+ @return [EditorView,nil] the view associated with the document which currently has
158
+ user focus or *nil* if none of the views associated with the document has user
159
+ focus
160
+ =end
161
+ def active_view
162
+ @doc.active_view.parent rescue nil
163
+ end
164
+
116
165
  =begin rdoc
117
166
  Executes the action with name _name_ contained in document's view's action
118
167
  collection. This is made by having the action emit the <tt>triggered()</tt> or
@@ -174,17 +223,39 @@ status of the document.
174
223
  if @modified_on_disk then ICONS[:modified_on_disk]
175
224
  elsif @doc.modified? then ICONS[:modified]
176
225
  else
177
- icon_name = KDE::MimeType.mime_type(@doc.mime_type).icon_name
226
+ if has_file? :remote
227
+ mime = KDE::MimeType.find_by_content Qt::ByteArray.new(@doc.text)
228
+ else mime = KDE::MimeType.mime_type(@doc.mime_type)
229
+ end
230
+ icon_name = mime.icon_name
178
231
  Qt::Icon.new(KDE::IconLoader.load_mime_type_pixmap icon_name)
179
232
  end
180
233
  end
181
234
 
182
235
  =begin rdoc
183
- Tells whether the document is associated with a file, that is if it has been
184
- saved to file before or not.
236
+ Whether the document is associated with a file
237
+
238
+ Depending on the value of _which_ this method can also return *true* only if the
239
+ document is associated with a local file or with a remote file. In particular:
240
+ * if it's @:local@ this method will return *true* only if the document is associated
241
+ with a local file
242
+ * if it's @:remote@, this method will return *true* only if the document is associated
243
+ with a remote file
244
+ * with any other value, this method will return *true* if the document is associated
245
+ with any file
246
+
247
+ @param [Symbol, Object] which the kind of files which are acceptable
248
+ @return [Boolean] *true* if the document is associated with a file of the kind
249
+ matching _which_ and *false* otherwise
185
250
  =end
186
- def has_file?
187
- !@doc.url.empty?
251
+ def has_file? which = :any
252
+ u = url
253
+ return false if u.empty?
254
+ case which
255
+ when :local then url.local_file?
256
+ when :remote then !url.local_file?
257
+ else true
258
+ end
188
259
  end
189
260
 
190
261
  =begin rdoc
@@ -221,13 +292,6 @@ This method is associated with the Save menu entry
221
292
  @project.save
222
293
  res
223
294
  end
224
- # unless url.empty? then save_document
225
- # else document_save_as
226
- # res = KDE::FileDialog.get_save_file_name KDE::Url.new, "*.rb|Ruby files (*.rb)\n*|All files", nil,
227
- # KDE::i18n("Save \"#{@doc.document_name}\" as")
228
- # return false unless res
229
- # save_as KDE::Url.from_path(res)
230
- # end
231
295
  end
232
296
 
233
297
  =begin rdoc
@@ -235,20 +299,22 @@ Creats a view for the document. _parent_ is the view's parent widget. Raises
235
299
  +RuntimeError+ if the document already has a view.
236
300
  =end
237
301
  def create_view parent = nil
238
- raise "Can't create a second view for this document" if @view
239
- @doc.create_view nil
240
- @view = EditorView.new self, @doc.views.first, parent
241
- @view.connect(SIGNAL('closing()')){@view = nil}
242
- @view.connect(SIGNAL('destroyed(QObject*)')){@view = nil}
243
- gui = @view.send(:internal)
302
+ inner_view = @doc.create_view nil
303
+ view = EditorView.new self, inner_view, parent
304
+ @views << view
305
+ gui = view.send(:internal)
244
306
  action = gui.action_collection.action('file_save_as')
245
307
  disconnect action, SIGNAL(:triggered), @doc, SLOT('documentSaveAs()')
246
308
  connect action, SIGNAL(:triggered), self, SLOT(:document_save_as)
247
309
  action = gui.action_collection.action('file_save')
248
310
  disconnect action, SIGNAL(:triggered), @doc, SLOT('documentSave()')
249
311
  connect action, SIGNAL(:triggered), self, SLOT(:save)
250
- emit view_created(@view, self)
251
- @view
312
+ view.connect(SIGNAL('closing(QWidget*)')) do |v|
313
+ emit closing_view v, self
314
+ @views.delete v
315
+ end
316
+ emit view_created(view, self)
317
+ view
252
318
  end
253
319
 
254
320
  =begin rdoc
@@ -261,7 +327,7 @@ Return the project with wider scope the document belongs to. This is:
261
327
  def project
262
328
  prj = Ruber[:projects].current
263
329
  return @project if path.empty? or !prj
264
- prj.project_files.file_in_project?(path) ? prj : @project
330
+ prj.project_files.file_in_project?(url.to_encoded.to_s) ? prj : @project
265
331
  end
266
332
 
267
333
  =begin rdoc
@@ -324,26 +390,16 @@ TODO: maybe remove the argument, since this method is not called anymore at
324
390
  if !ask || query_close
325
391
  emit closing(self)
326
392
  @project.save unless path.empty?
327
- @view.close if @doc.views.size > 0
393
+ @views.dup.each{|v| v.close}
328
394
  return false unless close_url false
329
395
  @project.close false
396
+ delete_later
330
397
  self.disconnect
331
- dispose
332
398
  true
333
399
  else false
334
400
  end
335
401
  end
336
-
337
- =begin rdoc
338
- Closes the view _view_ associated with the document.
339
-
340
- Currently, the _view_ parameter is unused, as a document can only have one view,
341
- and all this method does is to call the <tt>close</tt> method with _ask_ as argument.
342
- =end
343
- def close_view view, ask = true
344
- close ask
345
- end
346
-
402
+
347
403
  =begin rdoc
348
404
  The <tt>KParts::Part</tt> associated with the document
349
405
  =end
@@ -42,7 +42,7 @@ module Ruber
42
42
 
43
43
  @signal_table = KTextEditorWrapper.prepare_wrapper_connections self, signal_data
44
44
 
45
- signals 'closing()', 'cursor_position_changed(KTextEditor::Cursor, QWidget*)',
45
+ signals 'closing(QWidget*)', 'cursor_position_changed(KTextEditor::Cursor, QWidget*)',
46
46
  'view_mode_changed(QString, QWidget*)', 'edit_mode_changed(KTextEditor::View::EditMode, QWidget*)',
47
47
  'selection_mode_changed(bool, QWidget*)', 'mouse_position_changed(KTextEditor::Cursor, QWidget*)',
48
48
  'selection_changed(QWidget*)'
@@ -71,6 +71,7 @@ module Ruber
71
71
  alias_method :document, :doc
72
72
  def initialize doc, internal, parent = nil
73
73
  super parent
74
+ set_attribute Qt::WA_DeleteOnClose, true
74
75
  @block_selection = false
75
76
  @doc = doc
76
77
  @view = internal
@@ -124,8 +125,9 @@ module Ruber
124
125
  end
125
126
 
126
127
  def close
127
- emit closing
128
+ emit closing self
128
129
  super
130
+ # delete_later
129
131
  end
130
132
 
131
133
  def set_annotation_border_visible vis
@@ -265,6 +265,9 @@ want to call *super*)
265
265
  _lines_ is an array where each entry corresponds to a line of output from the
266
266
  program. If buffering is on, each entry is a complete line (or should be considered
267
267
  such). If buffering is off, you'll have to take care of newlines by yourself.
268
+
269
+ @param [Array<String>] lines the output lines
270
+ @return [nil]
268
271
  =end
269
272
  def process_standard_output lines
270
273
  return unless @output_widget
@@ -276,6 +279,7 @@ such). If buffering is off, you'll have to take care of newlines by yourself.
276
279
  mod.set_data idx, Qt::Variant.new(l)
277
280
  @output_widget.set_output_type idx, :output
278
281
  end
282
+ nil
279
283
  end
280
284
 
281
285
  =begin rdoc
@@ -290,6 +294,9 @@ want to call *super*)
290
294
  _lines_ is an array where each entry corresponds to a line of output from the
291
295
  program. If buffering is on, each entry is a complete line (or should be considered
292
296
  such). If buffering is off, you'll have to take care of newlines by yourself.
297
+
298
+ @param [Array<String>] lines the lines on standard error
299
+ @return [nil]
293
300
  =end
294
301
  def process_standard_error lines
295
302
  return unless @output_widget
@@ -301,6 +308,7 @@ such). If buffering is off, you'll have to take care of newlines by yourself.
301
308
  mod.set_data idx, Qt::Variant.new(l)
302
309
  @output_widget.set_output_type idx, :error
303
310
  end
311
+ nil
304
312
  end
305
313
 
306
314
  =begin rdoc
@@ -89,8 +89,12 @@ default value will be returned
89
89
  return opt.default.deep_copy unless grp.has_key(humanize(opt.name))
90
90
  if @yaml_options.include? [opt.group, opt.name] or !recognized_value?(opt.default)
91
91
  YAML.load grp.read_entry humanize(opt.name), ''
92
- # else res = grp.read_entry humanize(opt.name), opt.default
93
- else (grp.read_entry humanize(opt.name), Qt::Variant.from_value(opt.default)).value
92
+ else
93
+ #Uncomment the following lines if the state/open_projects is read as a string
94
+ # begin grp.read_entry humanize(opt.name), opt.default
95
+ # rescue ArgumentError
96
+ (grp.read_entry humanize(opt.name), Qt::Variant.from_value(opt.default)).value
97
+ # end
94
98
  end
95
99
  end
96
100
 
@@ -114,8 +118,12 @@ and on file.
114
118
  elsif need_yaml? opt, value
115
119
  @config.group(humanize(opt.group)).write_entry(humanize(opt.name), YAML.dump(value))
116
120
  @yaml_options << [opt.group, opt.name]
117
- # else @config.group(humanize(opt.group)).write_entry(humanize(opt.name), value)
118
- else @config.group(humanize(opt.group)).write_entry(humanize(opt.name), Qt::Variant.from_value(value))
121
+ else
122
+ #Uncomment the following lines if the state/open_projects is written as a string
123
+ # begin @config.group(humanize(opt.group)).write_entry(humanize(opt.name), value)
124
+ # rescue ArgumentError
125
+ @config.group(humanize(opt.group)).write_entry(humanize(opt.name), Qt::Variant.from_value(value))
126
+ # end
119
127
  end
120
128
  end
121
129
  @yaml_options.uniq!