ruber 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/CHANGES +21 -0
  2. data/data/share/apps/ruber/ruberui.rc +3 -1
  3. data/lib/ruber/application/application.rb +22 -23
  4. data/lib/ruber/application/plugin.yaml +7 -2
  5. data/lib/ruber/{projects → application}/project_files_list.rb +0 -0
  6. data/lib/ruber/{projects → application}/project_files_widget.rb +0 -0
  7. data/lib/ruber/application/ui/project_files_rule_chooser_widget.rb +74 -0
  8. data/lib/ruber/{projects → application}/ui/project_files_rule_chooser_widget.ui +0 -0
  9. data/lib/ruber/application/ui/project_files_widget.rb +117 -0
  10. data/lib/ruber/{projects → application}/ui/project_files_widget.ui +0 -0
  11. data/lib/ruber/component_manager.rb +14 -9
  12. data/lib/ruber/editor/document.rb +35 -5
  13. data/lib/ruber/kde_sugar.rb +16 -0
  14. data/lib/ruber/main_window/choose_plugins_dlg.rb +7 -4
  15. data/lib/ruber/main_window/main_window.rb +131 -193
  16. data/lib/ruber/main_window/main_window_actions.rb +157 -58
  17. data/lib/ruber/main_window/main_window_internal.rb +145 -54
  18. data/lib/ruber/main_window/open_file_in_project_dlg.rb +4 -4
  19. data/lib/ruber/main_window/plugin.yaml +3 -6
  20. data/lib/ruber/main_window/ui/workspace_settings_widget.rb +2 -2
  21. data/lib/ruber/main_window/workspace.rb +62 -32
  22. data/lib/ruber/output_widget.rb +20 -16
  23. data/lib/ruber/pane.rb +11 -5
  24. data/lib/ruber/project.rb +27 -12
  25. data/lib/ruber/projects/ui/project_files_rule_chooser_widget.rb +2 -2
  26. data/lib/ruber/projects/ui/project_files_widget.rb +2 -2
  27. data/lib/ruber/utils.rb +37 -4
  28. data/lib/ruber/version.rb +1 -1
  29. data/lib/ruber/world/document_factory.rb +121 -0
  30. data/lib/ruber/world/document_list.rb +396 -0
  31. data/lib/ruber/world/environment.rb +470 -0
  32. data/lib/ruber/{main_window → world}/hint_solver.rb +1 -1
  33. data/lib/ruber/world/plugin.yaml +11 -0
  34. data/lib/ruber/world/project_factory.rb +131 -0
  35. data/lib/ruber/world/project_list.rb +265 -0
  36. data/lib/ruber/world/ui/workspace_settings_widget.rb +51 -0
  37. data/lib/ruber/{main_window → world}/ui/workspace_settings_widget.ui +0 -0
  38. data/lib/ruber/world/world.rb +307 -0
  39. data/plugins/auto_end/auto_end.rb +135 -9
  40. data/plugins/autosave/autosave.rb +4 -4
  41. data/plugins/find_in_files/find_in_files.rb +5 -5
  42. data/plugins/find_in_files/find_in_files_widgets.rb +1 -1
  43. data/plugins/project_browser/project_browser.rb +4 -4
  44. data/plugins/rake/rake.rb +4 -4
  45. data/plugins/rake/rake_extension.rb +1 -1
  46. data/plugins/rspec/rspec.rb +4 -4
  47. data/plugins/rspec/ruber_rspec_formatter.rb +2 -2
  48. data/plugins/ruby_development/ruby_development.rb +3 -3
  49. data/plugins/ruby_runner/ruby_runner.rb +2 -2
  50. data/plugins/state/plugin.yaml +6 -8
  51. data/plugins/state/state.rb +201 -391
  52. data/plugins/state/ui/config_widget.rb +5 -5
  53. data/plugins/state/ui/config_widget.ui +3 -3
  54. data/plugins/syntax_checker/syntax_checker.rb +4 -0
  55. data/spec/annotation_model_spec.rb +1 -1
  56. data/spec/auto_end_spec.rb +98 -47
  57. data/spec/component_manager_spec.rb +80 -21
  58. data/spec/document_factory_spec.rb +115 -0
  59. data/spec/document_list_spec.rb +560 -450
  60. data/spec/document_spec.rb +143 -55
  61. data/spec/editor_view_spec.rb +2 -2
  62. data/spec/environment_spec.rb +1900 -0
  63. data/spec/hint_solver_spec.rb +5 -5
  64. data/spec/kde_sugar_spec.rb +16 -0
  65. data/spec/output_widget_spec.rb +177 -51
  66. data/spec/pane_spec.rb +29 -5
  67. data/spec/plugin_spec.rb +1 -1
  68. data/spec/project_factory_spec.rb +104 -0
  69. data/spec/project_list_spec.rb +352 -447
  70. data/spec/project_spec.rb +34 -33
  71. data/spec/qt_sugar_spec.rb +2 -2
  72. data/spec/state_spec.rb +508 -811
  73. data/spec/utils_spec.rb +149 -98
  74. data/spec/workspace_spec.rb +120 -9
  75. data/spec/world_spec.rb +1219 -0
  76. metadata +23 -14
  77. data/lib/ruber/documents/document_list.rb +0 -412
  78. data/lib/ruber/documents/plugin.yaml +0 -4
  79. data/lib/ruber/main_window/view_manager.rb +0 -431
  80. data/lib/ruber/projects/plugin.yaml +0 -11
  81. data/lib/ruber/projects/project_list.rb +0 -314
data/CHANGES CHANGED
@@ -1,5 +1,26 @@
1
1
  h1. Changes
2
2
 
3
+ h2. Ruber 0.0.9
4
+
5
+ h3. Features
6
+
7
+ h2. Ruber 0.0.9
8
+
9
+ h3. Features
10
+
11
+ * It is now possible to have more than one open project at the same time
12
+ * When a project is active, only the editors associated with it are visibile
13
+ * Editors not associated with a project are visible only when there's no active
14
+ project
15
+ * Made the Auto End plugin recognize some other keywords: @unless@, @for@, @while@,
16
+ @until@ (the last two were already recognized when followed by a @do@)
17
+
18
+ h3. Bug fixes
19
+
20
+ * The RSpec plugin now correctly displays pending examples
21
+ * Fixed a crash when creating a new document and saving it as a ruby file while
22
+ using the Syntax Checker plugin
23
+
3
24
  h2. Ruber 0.0.8
4
25
 
5
26
  h3. Features
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE kpartgui SYSTEM 'kpartgui.dtd'>
2
- <kpartgui version="13" name="ruber" >
2
+ <kpartgui version="14" name="ruber" >
3
3
  <MenuBar>
4
4
  <Menu name="file" >
5
5
  <text>&amp;File</text>
@@ -65,6 +65,8 @@
65
65
  <Separator/>
66
66
  <Action name="project-close"/>
67
67
  <Separator/>
68
+ <Action name="project-active_project"/>
69
+ <Separator/>
68
70
  <Action name="project-quick_open_file" />
69
71
  <Separator/>
70
72
  <Action name="project-configure"/>
@@ -85,6 +85,7 @@ Ruber can be in three states:
85
85
  it (either with the @File/Quit@ menu entry or clicking on the button on the title
86
86
  bar)
87
87
  - *quitting*:= from when the user chooses to quit Ruber onwards
88
+ - *asking_to_quit*:= while asking the user to confirm quitting Ruber
88
89
 
89
90
  >>>>>>> master
90
91
  @return [Symbol] the status of the application. It can be: @:starting@, @:running@
@@ -141,6 +142,25 @@ write the change to file. It's up to whoever called this method to do so.
141
142
  end
142
143
  alias :plugin_dirs= :plugin_directories=
143
144
 
145
+ =begin rdoc
146
+ Asks the user to confirm quitting Ruber
147
+
148
+ This method is called whenever Ruber needs to be closed and, in turn, calls the
149
+ {PluginLike#query_close query_close} method of each plugin and component (using
150
+ {ComponentManager#query_close}).
151
+
152
+ During the execution of this method, {#status} returns @:asking_to_quit@. After
153
+ this method returns, the status returns what it was before.
154
+ @return [Boolean] *true* if the application can be closed and *false* otherwise
155
+ =end
156
+ def ask_to_quit
157
+ old_status = @status
158
+ @status = :asking_to_quit
159
+ res = @components.query_close
160
+ @status = old_status
161
+ res
162
+ end
163
+
144
164
  =begin rdoc
145
165
  Quits ruber
146
166
 
@@ -349,7 +369,7 @@ on the command line)
349
369
  current = 'config'
350
370
  @components.load_component 'config'
351
371
  register_with_config
352
- %w[documents projects main_window].each do |i|
372
+ %w[world main_window].each do |i|
353
373
  current = i
354
374
  @components.load_component i
355
375
  end
@@ -359,20 +379,7 @@ on the command line)
359
379
  exit 1
360
380
  end
361
381
  if sessionRestored? then Ruber[:main_window].restore 1, false
362
- else
363
- open_command_line_files
364
- if Ruber[:projects].projects.empty? and Ruber[:documents].documents.empty?
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
375
- end
382
+ else open_command_line_files
376
383
  end
377
384
  end
378
385
 
@@ -418,14 +425,6 @@ necessary to to them later
418
425
  nil
419
426
  end
420
427
 
421
- class DefaultDocumentExtension
422
- include Extension
423
- attr_accessor :default_document
424
- def initialize doc
425
- @default_document = false
426
- end
427
- end
428
-
429
428
  end
430
429
 
431
430
  end
@@ -1,6 +1,6 @@
1
1
  name: app
2
2
  description: The application itself
3
- require: application
3
+ require: [application, project_files_widget, project_files_list]
4
4
  class: 'Ruber::Application'
5
5
  config_options:
6
6
  :general:
@@ -8,4 +8,9 @@ config_options:
8
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"}
12
+ project_options:
13
+ general:
14
+ project_files: {default: {:include: [], :exclude: [], :extensions: ["*.rb"]}}
15
+ extensions:
16
+ project_files: {class: ProjectFilesList}
@@ -0,0 +1,74 @@
1
+ =begin
2
+ ** Form generated from reading ui file 'project_files_rule_chooser_widget.ui'
3
+ **
4
+ ** Created: gio apr 21 20:42:42 2011
5
+ ** by: Qt User Interface Compiler version 4.7.2
6
+ **
7
+ ** WARNING! All changes made in this file will be lost when recompiling ui file!
8
+ =end
9
+
10
+ class Ui_ProjectFilesRuleChooser
11
+ attr_reader :gridLayout
12
+ attr_reader :remove_rule_btn
13
+ attr_reader :add_regexp_btn
14
+ attr_reader :add_path_btn
15
+ attr_reader :rules_widget
16
+
17
+ def setupUi(projectFilesRuleChooser)
18
+ if projectFilesRuleChooser.objectName.nil?
19
+ projectFilesRuleChooser.objectName = "projectFilesRuleChooser"
20
+ end
21
+ projectFilesRuleChooser.resize(505, 143)
22
+ @gridLayout = Qt::GridLayout.new(projectFilesRuleChooser)
23
+ @gridLayout.objectName = "gridLayout"
24
+ @remove_rule_btn = KDE::PushButton.new(projectFilesRuleChooser)
25
+ @remove_rule_btn.objectName = "remove_rule_btn"
26
+
27
+ @gridLayout.addWidget(@remove_rule_btn, 3, 1, 1, 1)
28
+
29
+ @add_regexp_btn = KDE::PushButton.new(projectFilesRuleChooser)
30
+ @add_regexp_btn.objectName = "add_regexp_btn"
31
+
32
+ @gridLayout.addWidget(@add_regexp_btn, 0, 1, 1, 1)
33
+
34
+ @add_path_btn = KDE::PushButton.new(projectFilesRuleChooser)
35
+ @add_path_btn.objectName = "add_path_btn"
36
+
37
+ @gridLayout.addWidget(@add_path_btn, 1, 1, 1, 1)
38
+
39
+ @rules_widget = Qt::TreeView.new(projectFilesRuleChooser)
40
+ @rules_widget.objectName = "rules_widget"
41
+ @rules_widget.rootIsDecorated = false
42
+ @rules_widget.uniformRowHeights = true
43
+ @rules_widget.allColumnsShowFocus = true
44
+
45
+ @gridLayout.addWidget(@rules_widget, 0, 0, 5, 1)
46
+
47
+
48
+ retranslateUi(projectFilesRuleChooser)
49
+
50
+ Qt::MetaObject.connectSlotsByName(projectFilesRuleChooser)
51
+ end # setupUi
52
+
53
+ def setup_ui(projectFilesRuleChooser)
54
+ setupUi(projectFilesRuleChooser)
55
+ end
56
+
57
+ def retranslateUi(projectFilesRuleChooser)
58
+ projectFilesRuleChooser.windowTitle = Qt::Application.translate("ProjectFilesRuleChooser", "Form", nil, Qt::Application::UnicodeUTF8)
59
+ @remove_rule_btn.text = Qt::Application.translate("ProjectFilesRuleChooser", "&Remove rule", nil, Qt::Application::UnicodeUTF8)
60
+ @add_regexp_btn.text = Qt::Application.translate("ProjectFilesRuleChooser", "Add &regexp rule", nil, Qt::Application::UnicodeUTF8)
61
+ @add_path_btn.text = Qt::Application.translate("ProjectFilesRuleChooser", "Add &file rule", nil, Qt::Application::UnicodeUTF8)
62
+ end # retranslateUi
63
+
64
+ def retranslate_ui(projectFilesRuleChooser)
65
+ retranslateUi(projectFilesRuleChooser)
66
+ end
67
+
68
+ end
69
+
70
+ module Ui
71
+ class ProjectFilesRuleChooser < Ui_ProjectFilesRuleChooser
72
+ end
73
+ end # module Ui
74
+
@@ -0,0 +1,117 @@
1
+ =begin
2
+ ** Form generated from reading ui file 'project_files_widget.ui'
3
+ **
4
+ ** Created: gio apr 21 20:42:42 2011
5
+ ** by: Qt User Interface Compiler version 4.7.2
6
+ **
7
+ ** WARNING! All changes made in this file will be lost when recompiling ui file!
8
+ =end
9
+
10
+ class Ui_ProjectFilesWidget
11
+ attr_reader :verticalLayout
12
+ attr_reader :groupBox
13
+ attr_reader :gridLayout
14
+ attr_reader :label
15
+ attr_reader :extensions
16
+ attr_reader :label_2
17
+ attr_reader :include_rules
18
+ attr_reader :groupBox_2
19
+ attr_reader :gridLayout_2
20
+ attr_reader :label_3
21
+ attr_reader :exclude_rules
22
+
23
+ def setupUi(projectFilesWidget)
24
+ if projectFilesWidget.objectName.nil?
25
+ projectFilesWidget.objectName = "projectFilesWidget"
26
+ end
27
+ projectFilesWidget.resize(518, 576)
28
+ @verticalLayout = Qt::VBoxLayout.new(projectFilesWidget)
29
+ @verticalLayout.objectName = "verticalLayout"
30
+ @groupBox = Qt::GroupBox.new(projectFilesWidget)
31
+ @groupBox.objectName = "groupBox"
32
+ @gridLayout = Qt::GridLayout.new(@groupBox)
33
+ @gridLayout.objectName = "gridLayout"
34
+ @label = Qt::Label.new(@groupBox)
35
+ @label.objectName = "label"
36
+
37
+ @gridLayout.addWidget(@label, 0, 0, 1, 1)
38
+
39
+ @extensions = KDE::LineEdit.new(@groupBox)
40
+ @extensions.objectName = "extensions"
41
+
42
+ @gridLayout.addWidget(@extensions, 0, 1, 1, 1)
43
+
44
+ @label_2 = Qt::Label.new(@groupBox)
45
+ @label_2.objectName = "label_2"
46
+ @sizePolicy = Qt::SizePolicy.new(Qt::SizePolicy::Preferred, Qt::SizePolicy::Fixed)
47
+ @sizePolicy.setHorizontalStretch(0)
48
+ @sizePolicy.setVerticalStretch(0)
49
+ @sizePolicy.heightForWidth = @label_2.sizePolicy.hasHeightForWidth
50
+ @label_2.sizePolicy = @sizePolicy
51
+
52
+ @gridLayout.addWidget(@label_2, 1, 0, 1, 1)
53
+
54
+ @include_rules = Ruber::ProjectFilesRuleChooser.new(@groupBox)
55
+ @include_rules.objectName = "include_rules"
56
+ @include_rules.minimumSize = Qt::Size.new(350, 200)
57
+ @include_rules.focusPolicy = Qt::StrongFocus
58
+
59
+ @gridLayout.addWidget(@include_rules, 2, 0, 1, 2)
60
+
61
+
62
+ @verticalLayout.addWidget(@groupBox)
63
+
64
+ @groupBox_2 = Qt::GroupBox.new(projectFilesWidget)
65
+ @groupBox_2.objectName = "groupBox_2"
66
+ @gridLayout_2 = Qt::GridLayout.new(@groupBox_2)
67
+ @gridLayout_2.objectName = "gridLayout_2"
68
+ @label_3 = Qt::Label.new(@groupBox_2)
69
+ @label_3.objectName = "label_3"
70
+ @sizePolicy.heightForWidth = @label_3.sizePolicy.hasHeightForWidth
71
+ @label_3.sizePolicy = @sizePolicy
72
+
73
+ @gridLayout_2.addWidget(@label_3, 0, 0, 1, 1)
74
+
75
+ @exclude_rules = Ruber::ProjectFilesRuleChooser.new(@groupBox_2)
76
+ @exclude_rules.objectName = "exclude_rules"
77
+ @exclude_rules.minimumSize = Qt::Size.new(350, 200)
78
+ @exclude_rules.focusPolicy = Qt::StrongFocus
79
+
80
+ @gridLayout_2.addWidget(@exclude_rules, 1, 0, 1, 1)
81
+
82
+
83
+ @verticalLayout.addWidget(@groupBox_2)
84
+
85
+ @label.buddy = @extensions
86
+ @label_2.buddy = @include_rules
87
+ @label_3.buddy = @include_rules
88
+
89
+ retranslateUi(projectFilesWidget)
90
+
91
+ Qt::MetaObject.connectSlotsByName(projectFilesWidget)
92
+ end # setupUi
93
+
94
+ def setup_ui(projectFilesWidget)
95
+ setupUi(projectFilesWidget)
96
+ end
97
+
98
+ def retranslateUi(projectFilesWidget)
99
+ projectFilesWidget.windowTitle = Qt::Application.translate("ProjectFilesWidget", "Form", nil, Qt::Application::UnicodeUTF8)
100
+ @groupBox.title = Qt::Application.translate("ProjectFilesWidget", "Files to include", nil, Qt::Application::UnicodeUTF8)
101
+ @label.text = Qt::Application.translate("ProjectFilesWidget", "Extensions", nil, Qt::Application::UnicodeUTF8)
102
+ @label_2.text = Qt::Application.translate("ProjectFilesWidget", "&Rules", nil, Qt::Application::UnicodeUTF8)
103
+ @groupBox_2.title = Qt::Application.translate("ProjectFilesWidget", "Files to exclude", nil, Qt::Application::UnicodeUTF8)
104
+ @label_3.text = Qt::Application.translate("ProjectFilesWidget", "&Rules", nil, Qt::Application::UnicodeUTF8)
105
+ end # retranslateUi
106
+
107
+ def retranslate_ui(projectFilesWidget)
108
+ retranslateUi(projectFilesWidget)
109
+ end
110
+
111
+ end
112
+
113
+ module Ui
114
+ class ProjectFilesWidget < Ui_ProjectFilesWidget
115
+ end
116
+ end # module Ui
117
+
@@ -574,8 +574,10 @@ Method required for the Plugin interface. Does nothing
574
574
  components are passed in reverse loading order (i.e., the last loaded component
575
575
  will be the first passed to the block.)
576
576
  =end
577
- def each_component #:yields: comp
578
- @components.reverse_each{|k, v| yield v}
577
+ def each_component order = :normal #:yields: comp
578
+ if order == :reverse then @components.reverse_each{|k, v| yield v}
579
+ else @components.each{|k, v| yield v}
580
+ end
579
581
  end
580
582
 
581
583
  =begin rdoc
@@ -584,8 +586,9 @@ Method required for the Plugin interface. Does nothing
584
586
  plugins are passed in reverse loading order (i.e., the last loaded plugin
585
587
  will be the first passed to the block.)
586
588
  =end
587
- def each_plugin #:yields: plug
588
- @components.reverse_each do |k, v|
589
+ def each_plugin order = :normal #:yields: plug
590
+ meth = @components.method(order == :reverse ? :reverse_each : :each)
591
+ meth.call do |k, v|
589
592
  yield v if v.is_a?(Ruber::Plugin)
590
593
  end
591
594
  end
@@ -635,7 +638,7 @@ Method required for the Plugin interface. Does nothing
635
638
  end
636
639
  file = File.join dir, 'plugin.yaml'
637
640
  pdf = PluginSpecification.full file
638
- parent = Ruber[:app] rescue self
641
+ parent = @components[:app] || self #Ruber[:app] rescue self
639
642
  comp = pdf.class_obj.new parent, pdf
640
643
  emit component_loaded(comp)
641
644
  comp
@@ -770,9 +773,9 @@ Method required for the Plugin interface. Does nothing
770
773
  * delete all the plugins from the list of loaded components.
771
774
  =end
772
775
  def shutdown
773
- each_component{|c| c.save_settings unless c.equal?(self)}
776
+ each_component(:reverse){|c| c.save_settings unless c.equal?(self)}
774
777
  @components[:config].write
775
- each_component{|c| c.shutdown unless c.equal? self}
778
+ each_component(:reverse){|c| c.shutdown unless c.equal? self}
776
779
  # @components[:config].write
777
780
  # each_component do |c|
778
781
  # unless c.equal? self
@@ -802,7 +805,9 @@ Method required for the Plugin interface. Does nothing
802
805
  =end
803
806
  def unload_plugin name
804
807
  plug = @components[name]
805
- raise ArgumentError, "A component can't be unloaded" unless plug.is_a?(Plugin)
808
+ if plug.nil? then raise ArgumentError, "No plugin with name #{name}"
809
+ elsif !plug.is_a?(Plugin) then raise ArgumentError, "A component can't be unloaded"
810
+ end
806
811
  # plug.save_settings
807
812
  plug.plugin_description.features.each do |f|
808
813
  emit method("unloading_#{f}").call( plug )
@@ -822,7 +827,7 @@ Method required for the Plugin interface. Does nothing
822
827
  This method is intented to be called from <tt>MainWindow#queryClose</tt>.
823
828
  =end
824
829
  def query_close
825
- res = each_component do |c|
830
+ res = each_component(:reverse) do |c|
826
831
  unless c.equal? self
827
832
  break false unless c.query_close
828
833
  end
@@ -1,5 +1,5 @@
1
1
  =begin
2
- Copyright (C) 2010 by Stefano Crocco
2
+ Copyright (C) 2010, 2011 by Stefano Crocco
3
3
  stefano.crocco@alice.it
4
4
 
5
5
  This program is free software; you can redistribute it andor modify
@@ -30,6 +30,36 @@ require 'ruber/document_project'
30
30
  module Ruber
31
31
 
32
32
  class Document < Qt::Object
33
+
34
+ # @docs = {}
35
+ # @close_mapper = Qt::SignalMapper.new
36
+ # @close_mapper.connect(SIGNAL('mapped(QObject*)')) do |d|
37
+ # @docs.delete d.url
38
+ # end
39
+ # @rename_mapper = Qt::SignalMapper.new
40
+ # @rename_mapper.connect(SIGNAL('mapped(QObject*)')) do |d|
41
+ # @docs.reject!{|k, v| v == d}
42
+ # @docs[d.url] = d
43
+ # end
44
+
45
+ # def self.new *args, &blk
46
+ # file = args[0]
47
+ # doc = if file
48
+ # url = KDE::Url.new file
49
+ # existing_doc = @docs[url]
50
+ # return existing_doc if existing_doc
51
+ # new_doc = super
52
+ # Qt::Object.connect new_doc, SIGNAL('closing(QObject*)'), @close_mapper,
53
+ # SLOT(:map)
54
+ # @close_mapper.set_mapping new_doc, new_doc
55
+ # new_url = new_doc.url if url.valid?
56
+ # @docs[new_url] = new_doc
57
+ # else super
58
+ # end
59
+ # Qt::Object.connect doc, SIGNAL('document_url_changed(QObject*)'), @rename_mapper, SLOT(:map)
60
+ # @rename_mapper.set_mapping doc, doc
61
+ # doc
62
+ # end
33
63
 
34
64
  extend Forwardable
35
65
 
@@ -85,7 +115,7 @@ it is still included in the array returned by {#views}
85
115
  =begin rdoc
86
116
  Creates a new Ruber::Document.
87
117
  =end
88
- def initialize parent = nil, file = nil
118
+ def initialize file = nil, parent = nil
89
119
  super parent
90
120
  @active = false
91
121
  @doc = KTextEditor::EditorChooser.editor('katepart').create_document( self)
@@ -139,7 +169,7 @@ Creates a new Ruber::Document.
139
169
  end
140
170
 
141
171
  =begin rdoc
142
- @return [Array<EditorView>] a list of the views assciated with the document
172
+ @return [Array<EditorView>] a list of all the views associated with the document
143
173
  =end
144
174
  def views
145
175
  @views.dup
@@ -325,7 +355,7 @@ Return the project with wider scope the document belongs to. This is:
325
355
  associated with a file or the file doesn't belong the global project
326
356
  =end
327
357
  def project
328
- prj = Ruber[:projects].current
358
+ prj = Ruber[:world].active_project
329
359
  return @project if path.empty? or !prj
330
360
  prj.project_files.file_in_project?(url.to_encoded.to_s) ? prj : @project
331
361
  end
@@ -440,7 +470,7 @@ encoding here is set to UTF-8 if using ruby 1.9 and to ISO-8859-1 if using ruby
440
470
  =end
441
471
  def document_save_as
442
472
  enc = RUBY_VERSION.match(/1\.9/) ? 'UTF-8' : 'ISO-8859-1'
443
- prj = Ruber[:projects].current
473
+ prj = Ruber[:world].active_project
444
474
  path = if !self.path.empty? then self.path
445
475
  elsif prj then prj.project_directory
446
476
  else ''