diff --git a/ApplicationCode/UserInterface/CMakeLists_files.cmake b/ApplicationCode/UserInterface/CMakeLists_files.cmake index 14e5001400..8ceec80770 100644 --- a/ApplicationCode/UserInterface/CMakeLists_files.cmake +++ b/ApplicationCode/UserInterface/CMakeLists_files.cmake @@ -92,6 +92,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiuAbstractOverlayContentFrame.h ${CMAKE_CURRENT_LIST_DIR}/RiuAbstractLegendFrame.h ${CMAKE_CURRENT_LIST_DIR}/RiuCategoryLegendFrame.h ${CMAKE_CURRENT_LIST_DIR}/RiuScalarMapperLegendFrame.h +${CMAKE_CURRENT_LIST_DIR}/RiuFileDialogTools.h ) set (SOURCE_GROUP_SOURCE_FILES @@ -183,6 +184,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiuAbstractOverlayContentFrame.cpp ${CMAKE_CURRENT_LIST_DIR}/RiuAbstractLegendFrame.cpp ${CMAKE_CURRENT_LIST_DIR}/RiuCategoryLegendFrame.cpp ${CMAKE_CURRENT_LIST_DIR}/RiuScalarMapperLegendFrame.cpp +${CMAKE_CURRENT_LIST_DIR}/RiuFileDialogTools.cpp ) list(APPEND CODE_HEADER_FILES diff --git a/ApplicationCode/UserInterface/RiuFileDialogTools.cpp b/ApplicationCode/UserInterface/RiuFileDialogTools.cpp new file mode 100644 index 0000000000..d20692bc78 --- /dev/null +++ b/ApplicationCode/UserInterface/RiuFileDialogTools.cpp @@ -0,0 +1,87 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2020 Equinor ASA +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#include "RiuFileDialogTools.h" + +#include + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RiuFileDialogTools::getSaveFileName( QWidget* parent /*= nullptr*/, + const QString& caption /*= QString()*/, + const QString& dir /*= QString()*/, + const QString& filter /*= QString()*/, + QString* selectedFilter /*= nullptr */ ) +{ +#ifdef WIN32 + return QFileDialog::getSaveFileName( parent, caption, dir, filter, selectedFilter, QFileDialog::DontUseNativeDialog ); +#else + auto options = QFileDialog::DontUseNativeDialog; + return QFileDialog::getSaveFileName( parent, caption, dir, filter, selectedFilter, options ); +#endif +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QStringList RiuFileDialogTools::getOpenFileNames( QWidget* parent /*= nullptr*/, + const QString& caption /*= QString()*/, + const QString& dir /*= QString()*/, + const QString& filter /*= QString()*/, + QString* selectedFilter /*= nullptr */ ) +{ +#ifdef WIN32 + return QFileDialog::getOpenFileNames( parent, caption, dir, filter, selectedFilter ); +#else + auto options = QFileDialog::DontUseNativeDialog; + return QFileDialog::getOpenFileNames( parent, caption, dir, filter, selectedFilter, options ); +#endif +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RiuFileDialogTools::getExistingDirectory( QWidget* parent /*= nullptr*/, + const QString& caption /*= QString()*/, + const QString& dir /*= QString() */ ) +{ +#ifdef WIN32 + return QFileDialog::getExistingDirectory( parent, caption, dir ); +#else + auto options = QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks | QFileDialog::DontUseNativeDialog; + return QFileDialog::getExistingDirectory( parent, caption, dir, options ); +#endif +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RiuFileDialogTools::getOpenFileName( QWidget* parent /*= nullptr*/, + const QString& caption /*= QString()*/, + const QString& dir /*= QString()*/, + const QString& filter /*= QString()*/, + QString* selectedFilter /*= nullptr */ ) +{ +#ifdef WIN32 + return getOpenFileName( parent, caption, dir, filter, selectedFilter ); +#else + auto options = QFileDialog::DontUseNativeDialog; + return getOpenFileName( parent, caption, dir, filter, selectedFilter, options ); +#endif +} diff --git a/ApplicationCode/UserInterface/RiuFileDialogTools.h b/ApplicationCode/UserInterface/RiuFileDialogTools.h new file mode 100644 index 0000000000..9eb8abec05 --- /dev/null +++ b/ApplicationCode/UserInterface/RiuFileDialogTools.h @@ -0,0 +1,49 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2020 Equinor ASA +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include +#include + +class QWidget; + +namespace RiuFileDialogTools +{ +QString getSaveFileName( QWidget* parent = nullptr, + const QString& caption = QString(), + const QString& dir = QString(), + const QString& filter = QString(), + QString* selectedFilter = nullptr ); + +QStringList getOpenFileNames( QWidget* parent = nullptr, + const QString& caption = QString(), + const QString& dir = QString(), + const QString& filter = QString(), + QString* selectedFilter = nullptr ); + +QString + getExistingDirectory( QWidget* parent = nullptr, const QString& caption = QString(), const QString& dir = QString() ); + +QString getOpenFileName( QWidget* parent = nullptr, + const QString& caption = QString(), + const QString& dir = QString(), + const QString& filter = QString(), + QString* selectedFilter = nullptr ); + +} // namespace RiuFileDialogTools