Skip to content
Snippets Groups Projects
GUIHelpers.h 2.46 KiB
// ************************************************************************** //
//
//  BornAgain: simulate and fit scattering at grazing incidence
//
//! @file      coregui/utils/GUIHelpers.h
//! @brief     Declares class GUIHelpers functions
//!
//! @homepage  http://www.bornagainproject.org
//! @license   GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2016
//! @authors   Scientific Computing Group at MLZ Garching
//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
//! @authors   Walter Van Herck, Joachim Wuttke
//
// ************************************************************************** //

#ifndef GUIHELPERS_H
#define GUIHELPERS_H

#include "WinDllMacros.h"
#include <QWidget>
#include <QString>
#include <exception>
#include <memory>

class QVariant;

namespace GUIHelpers
{
class BA_CORE_API_ Error : public std::exception
{
public:
    explicit Error(const QString &message) throw()
        : message(message) {}
    virtual ~Error() throw() {}

    virtual const char *what() const throw() { return message.toLatin1().data(); }

private:
    QString message;
};

BA_CORE_API_ void information(QWidget *parent, const QString &title,
        const QString &text, const QString &detailedText=QString());
BA_CORE_API_ void warning(QWidget *parent, const QString &title,
        const QString &text, const QString &detailedText=QString());
BA_CORE_API_ bool question(QWidget *parent, const QString &title,
        const QString &text, const QString &detailedText=QString(),
        const QString &yesText=QObject::tr("&Yes"),
        const QString &noText=QObject::tr("&No"));
BA_CORE_API_ bool okToDelete(QWidget *parent, const QString &title,
        const QString &text, const QString &detailedText=QString());

BA_CORE_API_ int getVariantType(const QVariant &variant);

BA_CORE_API_ QString getBornAgainVersionString();

BA_CORE_API_ QString getValidFileName(const QString &proposed_name);

BA_CORE_API_ QString getIntensityFileName(const QString &proposed_name);


BA_CORE_API_ QString fileDir(const QString &fileName);

BA_CORE_API_ bool parseVersion(const QString &version, int &major_num, int &minor_num, int &patch_num);

BA_CORE_API_ bool isVersionMatchMinimal(const QString &version, const QString &minimal_version);

template<class T, class... Ts> std::unique_ptr<T> make_unique(Ts&&... params)
{
    return std::unique_ptr<T>(new T(std::forward<Ts>(params)...));
}

} // namespace GUIHelpers

#endif // GUIHELPERS_H