UI window to instanciate compositions
# File lib/orocos/roby/gui/orocos_composer.rb, line 18 def initialize(system_model, robot, engine) @system_model = system_model @robot = robot super() @model_to_item = Hash.new @engine = engine end
# File lib/orocos/roby/gui/orocos_composer.rb, line 30 def actual_selection composer.actual_selection end
# File lib/orocos/roby/gui/orocos_composer.rb, line 56 def exec main.exec end
# File lib/orocos/roby/gui/orocos_composer.rb, line 49 def item_clicked(item, column) idx = item.data(column, Qt::UserRole) composer.model = composition_models[idx] end
# File lib/orocos/roby/gui/orocos_composer.rb, line 26 def model composer.model end
# File lib/orocos/roby/gui/orocos_composer.rb, line 34 def set(model, selection) composer.disable_updates ui.compositionModels.current_item = model_to_item[model] composer.model = model composer.selection.merge!(selection) composer.enable_updates composer.update end
# File lib/orocos/roby/gui/orocos_composer.rb, line 60 def setupUi(main) @main = main @ui = Ui::OrocosComposer.new @ui.setupUi(main) @graph_holder_layout = Qt::VBoxLayout.new(ui.graphHolder) composer = @composer = Ui::InstanciateComposition.new(system_model, robot, ui.graphHolder, engine) @composer_widget = composer.view @graph_holder_layout.add_widget(@composer_widget) @ui.use_main_selection.checked = composer.engine.use_main_selection? @ui.use_main_selection.connect(SIGNAL('toggled(bool)')) do |value| composer.engine.use_main_selection = value composer.update end Qt::Object.connect(ui.compositionModels, SIGNAL('itemClicked(QTreeWidgetItem*,int)'), self, SLOT('item_clicked(QTreeWidgetItem*,int)')) composer.connect(SIGNAL('updated()')) do begin text = composer.to_ruby ui.codeDisplay.text = text ui.btnDone.enabled = true rescue Exception => e ui.codeDisplay.text = e.message ui.btnDone.enabled = false end end @composition_models = [] system_model.each_composition do |model| next if model.is_specialization? composition_models << model item = Qt::TreeWidgetItem.new(ui.compositionModels, [model.short_name]) model_to_item[model] = item item.setData(0, Qt::UserRole, Qt::Variant.new(composition_models.size - 1)) end ui.btnCancel.connect(SIGNAL('clicked()')) do main.reject end ui.btnDone.connect(SIGNAL('clicked()')) do main.accept end ui.btnSaveSVG.connect(SIGNAL('clicked()')) do if filename = Qt::FileDialog.get_save_file_name composer.save_svg(filename) end end settings = Qt::Settings.new('Orocos', 'SystemBuilder') main.restore_geometry(settings.value('composer/geometry').to_byte_array) ui.hsplitter.restore_state( settings.value('composer/hsplitter/state').to_byte_array) ui.vsplitter.restore_state( settings.value('composer/vsplitter/state').to_byte_array) class << main; attr_accessor :ui end main.ui = ui def main.closeEvent(event) settings = Qt::Settings.new('Orocos', 'SystemBuilder') settings.setValue("composer/geometry", Qt::Variant.new(save_geometry)) settings.setValue("composer/vsplitter/state", Qt::Variant.new(ui.vsplitter.save_state)) settings.setValue("composer/hsplitter/state", Qt::Variant.new(ui.hsplitter.save_state)) super end end
# File lib/orocos/roby/gui/orocos_composer.rb, line 43 def state model = composer.model actual_selection = composer.actual_selection return model, actual_selection end