void MainWindow::setProgram(std::tr1::shared_ptr<Program> program) { program_ = program; mainGlWidget_->setProgram(program_); fsGlWidget_->setProgram(program_); dockDesign_->setProgram(program); dockCode_->setProgram(program); dockConsole_->setProgram(program); // Recreate menu objectMenu_->clear(); // Should also destroy all mappings const std::vector<ObjectFactoryPtr> & factories = program->factories(); QAction * action; for (unsigned int i = 0; i < factories.size(); i++) { action = objectMenu_->addAction(QString::fromStdString(factories[i]->name()), objectMapper_, SLOT(map())); objectMapper_->setMapping(action, i); } }