class Syskit::GUI::BatchManager
Constants
- StartJob
Public Class Methods
new(syskit, parent = nil)
click to toggle source
Calls superclass method
# File lib/syskit/gui/batch_manager.rb, line 6 def initialize(syskit, parent = nil) super(parent) @syskit = syskit @actions = Qt::Widget.new actions_layout = Qt::HBoxLayout.new(@actions) @process_btn = Qt::PushButton.new("Process") @cancel_btn = Qt::PushButton.new("Cancel") actions_layout.add_widget(@process_btn) actions_layout.add_widget(@cancel_btn) add_widget(@actions, permanent: true) @process_btn.connect(SIGNAL(:clicked)) do process end @cancel_btn.connect(SIGNAL(:clicked)) do cancel end disable_actions @start_job = Array.new @drop_job = Array.new end
Public Instance Methods
cancel()
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 49 def cancel clear end
clear()
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 53 def clear clear_widgets @start_job.clear @drop_job.clear disable_actions end
create_new_job(action_name, arguments = Hash.new)
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 88 def create_new_job(action_name, arguments = Hash.new) action_model = @syskit.actions.find { |m| m.name == action_name } if !action_model raise ArgumentError, "no action named #{action_name} found" end if action_model.arguments.empty? start_job(action_name, Hash.new) true else formatted_arguments = String.new action_model.arguments.each do |arg| default_arg = arguments.fetch( arg.name.to_sym, arg.default) has_default_arg = arguments.has_key?(arg.name.to_sym) || !arg.required? if !formatted_arguments.empty? formatted_arguments << ",\n" end doc_lines = (arg.doc || "").split("\n") formatted_arguments << "\n # #{doc_lines.join("\n # ")}\n" if !has_default_arg formatted_arguments << " #{arg.name}: " elsif default_arg.nil? formatted_arguments << " #{arg.name}: nil" elsif default_arg.respond_to?(:name) && MetaRuby::Registration.accessible_by_name?(default_arg) formatted_arguments << " #{arg.name}: #{default_arg.name}" elsif as_string = ToString.convert(default_arg) formatted_arguments << " #{arg.name}: #{as_string}" elsif arg.required? formatted_arguments << " #{arg.name}: " else formatted_arguments << " # #{arg.name}'s default argument cannot be handled by the IDE\n" formatted_arguments << " # #{arg.name}: #{default_arg}" end end formatted_action = "#{action_name}!(\n#{formatted_arguments}\n)" dialog = NewJobDialog.new(self, formatted_action) if dialog.exec == Qt::Dialog::Accepted action_name, action_options = dialog.result start_job(action_name, action_options) true else false end end end
disable_actions()
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 62 def disable_actions emit active(false) @process_btn.enabled = false @cancel_btn.enabled = false end
drop_job(job_widget)
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 76 def drop_job(job_widget) @drop_job << job_widget.job add_before(Qt::Label.new("<b>Drop</b> #{job_widget.label}"), @actions) enable_actions end
enable_actions()
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 68 def enable_actions emit active(true) @process_btn.enabled = true @cancel_btn.enabled = true end
process()
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 31 def process batch = @syskit.client.create_batch @drop_job.each do |j| batch.drop_job(j.job_id) end @start_job.each do |j| arguments = j.action_arguments arguments.delete(:job_id) batch.start_job(j.action_name, arguments) end begin batch.__process rescue Exception => e Qt::MessageBox.critical(self, "Syskit Process Batch", "failed to process batch: #{e.message}, see console output for more details") end clear end
start_job(action_name, action_arguments)
click to toggle source
# File lib/syskit/gui/batch_manager.rb, line 82 def start_job(action_name, action_arguments) @start_job << StartJob.new(action_name, action_arguments) add_before(Qt::Label.new("<b>Start</b> #{action_name}"), @actions) enable_actions end