void TransferFunctionPropertyDialog::importTransferFunction() { InviwoFileDialog importFileDialog( this, "Import transfer function", "transferfunction", filesystem::getPath(PathType::TransferFunctions)); importFileDialog.setAcceptMode(QFileDialog::AcceptOpen); importFileDialog.setFileMode(QFileDialog::ExistingFile); importFileDialog.addExtension("itf", "Inviwo Transfer Function"); if (importFileDialog.exec()) { QString file = importFileDialog.selectedFiles().at(0); // TODO: we need to check whether it is a valid itf file! Deserializer deserializer(InviwoApplication::getPtr(), file.toLocal8Bit().constData()); TransferFunction tf; tf.deserialize(deserializer); tfProperty_->set(tf); updateFromProperty(); } }
void FilePropertyWidgetQt::setPropertyValue() { std::string path{ property_->get() }; if (!path.empty()) { // only accept path if it exists if (filesystem::directoryExists(path)) { // TODO: replace with filesystem:: functionality! path = QDir(QString::fromStdString(path)).absolutePath().toStdString(); } } // Setup Extensions std::vector<std::string> filters = property_->getNameFilters(); InviwoFileDialog importFileDialog(this, property_->getDisplayName(), property_->getContentType(), path); for (std::vector<std::string>::const_iterator it = filters.begin(); it != filters.end(); ++it) importFileDialog.addExtension(*it); switch (property_->getAcceptMode()) { case FileProperty::AcceptMode::Save: importFileDialog.setAcceptMode(QFileDialog::AcceptSave); break; case FileProperty::AcceptMode::Open: importFileDialog.setAcceptMode(QFileDialog::AcceptOpen); break; default: importFileDialog.setAcceptMode(QFileDialog::AcceptOpen); } switch (property_->getFileMode()) { case FileProperty::FileMode::AnyFile: importFileDialog.setFileMode(QFileDialog::AnyFile); break; case FileProperty::FileMode::ExistingFile: importFileDialog.setFileMode(QFileDialog::ExistingFile); break; case FileProperty::FileMode::Directory: importFileDialog.setFileMode(QFileDialog::Directory); break; case FileProperty::FileMode::ExistingFiles: importFileDialog.setFileMode(QFileDialog::ExistingFiles); break; case FileProperty::FileMode::DirectoryOnly: importFileDialog.setFileMode(QFileDialog::DirectoryOnly); break; default: importFileDialog.setFileMode(QFileDialog::AnyFile); break; } if (importFileDialog.exec()) { QString path = importFileDialog.selectedFiles().at(0); property_->set(path.toStdString()); } updateFromProperty(); }
void FilePropertyWidgetQt::setPropertyValue() { std::string path{ property_->get() }; if (!path.empty()) { if (filesystem::directoryExists(path)) { // if a folder is selected // TODO: replace with filesystem:: functionality! path = QDir(QString::fromStdString(path)).absolutePath().toStdString(); } else if (filesystem::fileExists(path)) { // if a file is selected, set path the the folder, not the file path = QDir(QString::fromStdString(filesystem::getFileDirectory(path))) .absolutePath() .toStdString(); } } // Setup Extensions std::vector<FileExtension> filters = property_->getNameFilters(); InviwoFileDialog importFileDialog(this, property_->getDisplayName(), property_->getContentType(), path); for (const auto& filter : filters) importFileDialog.addExtension(filter); switch (property_->getAcceptMode()) { case FileProperty::AcceptMode::Save: importFileDialog.setAcceptMode(QFileDialog::AcceptSave); break; case FileProperty::AcceptMode::Open: importFileDialog.setAcceptMode(QFileDialog::AcceptOpen); break; default: importFileDialog.setAcceptMode(QFileDialog::AcceptOpen); } switch (property_->getFileMode()) { case FileProperty::FileMode::AnyFile: importFileDialog.setFileMode(QFileDialog::AnyFile); break; case FileProperty::FileMode::ExistingFile: importFileDialog.setFileMode(QFileDialog::ExistingFile); break; case FileProperty::FileMode::Directory: importFileDialog.setFileMode(QFileDialog::Directory); break; case FileProperty::FileMode::ExistingFiles: importFileDialog.setFileMode(QFileDialog::ExistingFiles); break; case FileProperty::FileMode::DirectoryOnly: importFileDialog.setFileMode(QFileDialog::DirectoryOnly); break; default: importFileDialog.setFileMode(QFileDialog::AnyFile); break; } if (importFileDialog.exec()) { QString p = importFileDialog.selectedFiles().at(0); property_->set(p.toStdString()); } updateFromProperty(); }