void ShaderManager::unregisterShader(Shader* shader) { shaders_.erase(std::remove(shaders_.begin(), shaders_.end(), shader), shaders_.end()); const Shader::ShaderObjectMap& shaderObjects = shader->getShaderObjects(); for (const auto& shaderObject : shaderObjects) { if (shaderObject.second != nullptr) { stopFileObservation(shaderObject.second->getAbsoluteFileName()); std::vector<std::string> shaderIncludes = shaderObject.second->getIncludeFileNames(); for (auto& shaderInclude : shaderIncludes) stopFileObservation(shaderInclude); } } }
void PythonEditorWidget::open() { if (unsavedChanges_) { int ret = QMessageBox::information(this, "Python Editor", "Do you want to save unsaved changes?", "Save", "Discard", "Cancel"); if (ret == 0) save(); if (ret == 2) // Cancel return; } InviwoFileDialog openFileDialog(this, "Open Python Script ...", "script"); openFileDialog.setFileMode(QFileDialog::AnyFile); openFileDialog.addSidebarPath(InviwoApplication::PATH_SCRIPTS); openFileDialog.addExtension("py", "Python Script"); if (openFileDialog.exec()) { stopFileObservation(scriptFileName_); scriptFileName_ = openFileDialog.selectedFiles().at(0).toLocal8Bit().constData(); settings_.beginGroup("PythonEditor"); settings_.setValue("lastScript", scriptFileName_.c_str()); settings_.endGroup(); startFileObservation(scriptFileName_); readFile(); } }
void PythonEditorWidget::save() { if (script_.getSource() == defaultSource) return; // nothig to be saved if (scriptFileName_.size() == 0) { saveAs(); } else if (unsavedChanges_) { stopFileObservation(scriptFileName_); std::ofstream file(scriptFileName_.c_str()); file << pythonCode_->toPlainText().toLocal8Bit().constData(); file.close(); startFileObservation(scriptFileName_); LogInfo("Python Script saved(" << scriptFileName_ << ")"); settings_.beginGroup("PythonEditor"); settings_.setValue("lastScript", scriptFileName_.c_str()); settings_.endGroup(); unsavedChanges_ = false; } }
void PythonEditorWidget::setDefaultText() { if (unsavedChanges_) { int ret = QMessageBox::information(this, "Python Editor", "Do you want to save unsaved changes?", "Save", "Discard Changes", "Cancel"); if (ret == 0) save(); else if (ret == 2) // cancel return; } pythonCode_->setPlainText(defaultSource.c_str()); script_.setSource(defaultSource); stopFileObservation(scriptFileName_); scriptFileName_ = ""; settings_.beginGroup("PythonEditor"); settings_.setValue("lastScript", scriptFileName_.c_str()); settings_.endGroup(); unsavedChanges_ = false; }
void PythonEditorWidget::saveAs() { InviwoFileDialog saveFileDialog(this, "Save Python Script ...", "script"); saveFileDialog.setFileMode(QFileDialog::AnyFile); saveFileDialog.setAcceptMode(QFileDialog::AcceptSave); saveFileDialog.setConfirmOverwrite(true); saveFileDialog.addSidebarPath(PathType::Scripts); saveFileDialog.addExtension("py", "Python Script"); if (saveFileDialog.exec()) { stopFileObservation(scriptFileName_); QString path = saveFileDialog.selectedFiles().at(0); if (!path.endsWith(".py")) path.append(".py"); setFileName(path.toLocal8Bit().constData()); unsavedChanges_ = true; save(); } }
void PythonEditorWidget::saveAs() { if (script_.getSource() == defaultSource) return; // nothig to be saved InviwoFileDialog saveFileDialog(this, "Save Python Script ...", "script"); saveFileDialog.setFileMode(QFileDialog::AnyFile); saveFileDialog.setAcceptMode(QFileDialog::AcceptSave); saveFileDialog.setConfirmOverwrite(true); saveFileDialog.addSidebarPath(InviwoApplication::PATH_SCRIPTS); saveFileDialog.addExtension("py", "Python Script"); if (saveFileDialog.exec()) { stopFileObservation(scriptFileName_); QString path = saveFileDialog.selectedFiles().at(0); if (!path.endsWith(".py")) path.append(".py"); scriptFileName_ = path.toLocal8Bit().constData(); unsavedChanges_ = true; save(); } }
void PortInspector::initialize() { if (active_ == false && needsUpdate_) { if (inspectorNetwork_) { inspectorNetwork_.reset(); processors_.clear(); inPorts_.clear(); connections_.clear(); propertyLinks_.clear(); canvasProcessor_ = nullptr; } stopFileObservation(inspectorNetworkFileName_); needsUpdate_ = false; } if (inspectorNetwork_) { return; } // Observe the filename; startFileObservation(inspectorNetworkFileName_); try { // Deserialize the network IvwDeserializer xmlDeserializer(inspectorNetworkFileName_); inspectorNetwork_ = util::make_unique<ProcessorNetwork>(); inspectorNetwork_->deserialize(xmlDeserializer); processors_ = inspectorNetwork_->getProcessors(); for (auto processor : processors_) { // Set Identifiers std::string newIdentifier = getPortClassName() + "_Port_Inspector_" + processor->getIdentifier(); processor->setIdentifier(newIdentifier); processor->initialize(); // Find the and save inports. std::vector<Inport*> inports = processor->getInports(); for (auto& inport : inports) { if (!inport->isConnected()) inPorts_.push_back(inport); } ProcessorMetaData* meta = processor->getMetaData<ProcessorMetaData>(ProcessorMetaData::CLASS_IDENTIFIER); meta->setVisibile(false); meta->setSelected(false); // Find and save the canvasProcessor CanvasProcessor* canvasProcessor = dynamic_cast<CanvasProcessor*>(processor); if (canvasProcessor) { canvasProcessor_ = canvasProcessor; } } // Store the connections and and disconnect them. connections_ = inspectorNetwork_->getConnections(); for (auto& elem : connections_) elem->getInport()->disconnectFrom(elem->getOutport()); // store the processor links. propertyLinks_ = inspectorNetwork_->getLinks(); } catch (AbortException& e) { // Error deserializing file needsUpdate_ = true; LogError(e.what()); } }