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();
    }
}
Example #2
0
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();
}