BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
hostosinfo.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/utils/hostosinfo.h
6 //! @brief Defines Utils namespace
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_GUI_COREGUI_UTILS_HOSTOSINFO_H
16 #define BORNAGAIN_GUI_COREGUI_UTILS_HOSTOSINFO_H
17 
18 #include <QString>
19 
20 namespace GUI_OS_Utils {
21 
22 #define QTC_WIN_EXE_SUFFIX ".exe"
23 
25 
27 public:
28  OsSpecificAspects(EOsType osType) : m_osType(osType) {}
29 
30  QString withExecutableSuffix(const QString& executable) const
31  {
32  QString finalName = executable;
33  if (m_osType == WINDOWS_OS)
34  finalName += QLatin1String(QTC_WIN_EXE_SUFFIX);
35  return finalName;
36  }
37 
38  Qt::CaseSensitivity fileNameCaseSensitivity() const
39  {
40  return m_osType == WINDOWS_OS ? Qt::CaseInsensitive : Qt::CaseSensitive;
41  }
42 
43  QChar pathListSeparator() const { return QLatin1Char(m_osType == WINDOWS_OS ? ';' : ':'); }
44 
45  Qt::KeyboardModifier controlModifier() const
46  {
47  return m_osType == MAC_OS ? Qt::MetaModifier : Qt::ControlModifier;
48  }
49 
50 private:
52 };
53 
54 class HostOsInfo {
55 public:
56  static inline EOsType hostOs();
57 
64  };
66 
67  static bool isWindowsHost() { return hostOs() == WINDOWS_OS; }
68  static bool isLinuxHost() { return hostOs() == LINUX_OS; }
69  static bool isMacHost() { return hostOs() == MAC_OS; }
70  static inline bool isAnyUnixHost();
71 
72  static QString withExecutableSuffix(const QString& executable)
73  {
74  return hostOsAspects().withExecutableSuffix(executable);
75  }
76 
77  static Qt::CaseSensitivity fileNameCaseSensitivity()
78  {
80  }
81 
82  static QChar pathListSeparator() { return hostOsAspects().pathListSeparator(); }
83 
84  static Qt::KeyboardModifier controlModifier() { return hostOsAspects().controlModifier(); }
85 
86 private:
88 };
89 
91 {
92 #if defined(Q_OS_WIN)
93  return WINDOWS_OS;
94 #elif defined(Q_OS_LINUX)
95  return LINUX_OS;
96 #elif defined(Q_OS_MAC)
97  return MAC_OS;
98 #elif defined(Q_OS_UNIX)
99  return OTHER_UNIX_OS;
100 #else
101  return OTHER_OS;
102 #endif
103 }
104 
106 {
107 #ifdef Q_OS_UNIX
108  return true;
109 #else
110  return false;
111 #endif
112 }
113 
114 } // namespace GUI_OS_Utils
115 
116 #endif // BORNAGAIN_GUI_COREGUI_UTILS_HOSTOSINFO_H
static HostArchitecture hostArchitecture()
static QChar pathListSeparator()
Definition: hostosinfo.h:82
static QString withExecutableSuffix(const QString &executable)
Definition: hostosinfo.h:72
static bool isWindowsHost()
Definition: hostosinfo.h:67
static Qt::CaseSensitivity fileNameCaseSensitivity()
Definition: hostosinfo.h:77
static EOsType hostOs()
Definition: hostosinfo.h:90
static bool isAnyUnixHost()
Definition: hostosinfo.h:105
static bool isLinuxHost()
Definition: hostosinfo.h:68
static OsSpecificAspects hostOsAspects()
Definition: hostosinfo.h:87
static bool isMacHost()
Definition: hostosinfo.h:69
static Qt::KeyboardModifier controlModifier()
Definition: hostosinfo.h:84
Qt::KeyboardModifier controlModifier() const
Definition: hostosinfo.h:45
OsSpecificAspects(EOsType osType)
Definition: hostosinfo.h:28
Qt::CaseSensitivity fileNameCaseSensitivity() const
Definition: hostosinfo.h:38
QString withExecutableSuffix(const QString &executable) const
Definition: hostosinfo.h:30
#define QTC_WIN_EXE_SUFFIX
Definition: hostosinfo.h:22