plugins/runnables/lib/runnables.rb in redcar-0.3.9 vs plugins/runnables/lib/runnables.rb in redcar-0.3.10.0dev
- old
+ new
@@ -1,31 +1,41 @@
-require File.dirname(__FILE__) + "/../vendor/session-2.4.0/lib/session"
+require File.dirname(__FILE__) + "/../vendor/session/lib/session"
Session.use_open4 = true
require 'runnables/command_output_controller'
require 'runnables/running_process_checker'
+require 'runnables/output_processor'
module Redcar
class Runnables
TREE_TITLE = "Runnables"
-
- def self.run_process(path, command, title, output)
- controller = CommandOutputController.new(path, command, title)
- if output == "window"
- Project::Manager.open_project_for_path(".")
- output = "tab"
+
+ def self.run_process(path, command, title, output = "tab")
+ if Runnables.storage['save_project_before_running'] == true
+ Redcar.app.focussed_window.notebooks.each do |notebook|
+ notebook.tabs.each do |tab|
+ case tab
+ when EditTab
+ tab.edit_view.document.save!
+ end
+ end
+ end
end
+ controller = CommandOutputController.new(path, command, title)
if output == "none"
controller.run
- else
+ else #default to new tab
+ if output == "window"
+ Project::Manager.open_project_for_path(".")
+ end
tab = Redcar.app.focussed_window.new_tab(HtmlTab)
tab.html_view.controller = controller
tab.focus
end
end
-
+
def self.menus
Menu::Builder.build do
sub_menu "Project", :priority => 15 do
group(:priority => 15) {
separator
@@ -67,10 +77,18 @@
def top
@top
end
end
+
+ def self.storage
+ @storage ||= begin
+ storage = Plugin::Storage.new('runnables')
+ storage.set_default('save_project_before_running', false)
+ storage
+ end
+ end
class RunnableGroup
include Redcar::Tree::Mirror::NodeMirror
def initialize(name,runnables)
@@ -218,8 +236,5 @@
end
end
end
end
end
-
-
-