/// Display a save file dialog. If `directory` is an invalid file or directory the browser will start at the current /// working directory. /// \param const QString& title title of the window /// \param const QString& directory directory to start the file browser at /// \param const QString& nameFilter filter to filter filenames by - see `QFileDialog` /// \return QScriptValue file path as a string if one was selected, otherwise `QScriptValue::NullValue` QScriptValue WindowScriptingInterface::save(const QString& title, const QString& directory, const QString& nameFilter) { QString path = directory; if (path.isEmpty()) { path = getPreviousBrowseLocation(); } #ifndef Q_OS_WIN path = fixupPathForMac(directory); #endif QString result = OffscreenUi::getSaveFileName(nullptr, title, path, nameFilter); if (!result.isEmpty()) { setPreviousBrowseLocation(QFileInfo(result).absolutePath()); } return result.isEmpty() ? QScriptValue::NullValue : QScriptValue(result); }
/// Display a "browse to directory" dialog. If `directory` is an invalid file or directory the browser will start at the current /// working directory. /// \param const QString& title title of the window /// \param const QString& directory directory to start the directory browser at /// \return QScriptValue file path as a string if one was selected, otherwise `QScriptValue::NullValue` QScriptValue WindowScriptingInterface::browseDir(const QString& title, const QString& directory) { ensureReticleVisible(); QString path = directory; if (path.isEmpty()) { path = getPreviousBrowseLocation(); } #ifndef Q_OS_WIN path = fixupPathForMac(directory); #endif QString result = OffscreenUi::getExistingDirectory(nullptr, title, path); if (!result.isEmpty()) { setPreviousBrowseLocation(QFileInfo(result).absolutePath()); } return result.isEmpty() ? QScriptValue::NullValue : QScriptValue(result); }
/// Display a save file dialog. If `directory` is an invalid file or directory the browser will start at the current /// working directory. /// \param const QString& title title of the window /// \param const QString& directory directory to start the file browser at /// \param const QString& nameFilter filter to filter filenames by - see `QFileDialog` void WindowScriptingInterface::saveAsync(const QString& title, const QString& directory, const QString& nameFilter) { ensureReticleVisible(); QString path = directory; if (path.isEmpty()) { path = getPreviousBrowseLocation(); } #ifndef Q_OS_WIN path = fixupPathForMac(directory); #endif ModalDialogListener* dlg = OffscreenUi::getSaveFileNameAsync(nullptr, title, path, nameFilter); connect(dlg, &ModalDialogListener::response, this, [=] (QVariant response) { const QString& result = response.toString(); disconnect(dlg, &ModalDialogListener::response, this, nullptr); if (!result.isEmpty()) { setPreviousBrowseLocation(QFileInfo(result).absolutePath()); } emit saveFileChanged(result); }); }