Обновление подмодулей
This commit is contained in:
commit
7b0128dfe3
@ -144,7 +144,7 @@ public:
|
|||||||
* @param container The container to assign from
|
* @param container The container to assign from
|
||||||
*/
|
*/
|
||||||
template< class ContiguousContainer >
|
template< class ContiguousContainer >
|
||||||
typename std::enable_if< is_contiguous_container<
|
typename std::enable_if< is_contiguous_container< //NOLINT
|
||||||
ContiguousContainer, T >::value,
|
ContiguousContainer, T >::value,
|
||||||
span& >::type
|
span& >::type
|
||||||
operator=( ContiguousContainer&& container )
|
operator=( ContiguousContainer&& container )
|
||||||
|
@ -13,7 +13,14 @@ namespace myx {
|
|||||||
|
|
||||||
namespace filesystem {
|
namespace filesystem {
|
||||||
|
|
||||||
MYXLIB_INLINE Paths::Paths() = default;
|
MYXLIB_INLINE Paths::Paths()
|
||||||
|
{
|
||||||
|
QFileInfo procSelfExe( QStringLiteral( "/proc/self/exe" ) );
|
||||||
|
QFileInfo currentExecutable = procSelfExe.canonicalFilePath();
|
||||||
|
m_executableName = currentExecutable.fileName();
|
||||||
|
m_executableFilePath = currentExecutable.absoluteFilePath();
|
||||||
|
m_executableDirectory = currentExecutable.absolutePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
MYXLIB_INLINE void Paths::setupSystemDirectories( const QString& defaultPrefixDirectory,
|
MYXLIB_INLINE void Paths::setupSystemDirectories( const QString& defaultPrefixDirectory,
|
||||||
@ -172,20 +179,8 @@ MYXLIB_INLINE Paths::HierarchyType Paths::getHierarchyType()
|
|||||||
} // Paths::getHierarchyType
|
} // Paths::getHierarchyType
|
||||||
|
|
||||||
|
|
||||||
MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& configFileExtension )
|
MYXLIB_INLINE bool Paths::initCommon()
|
||||||
{
|
{
|
||||||
QFileInfo procSelfExe( QStringLiteral( "/proc/self/exe" ) );
|
|
||||||
QFileInfo currentExecutable = procSelfExe.canonicalFilePath();
|
|
||||||
m_executableName = currentExecutable.fileName();
|
|
||||||
m_executableFilePath = currentExecutable.absoluteFilePath();
|
|
||||||
m_executableDirectory = currentExecutable.absolutePath();
|
|
||||||
|
|
||||||
m_projectName = projectDir.isEmpty() ? m_executableName
|
|
||||||
: projectDir;
|
|
||||||
m_configFileExtension = configFileExtension.isEmpty() ? QStringLiteral( "conf" )
|
|
||||||
: configFileExtension;
|
|
||||||
m_configFileName = m_projectName + "." + m_configFileExtension;
|
|
||||||
|
|
||||||
m_homeDirectory = QDir::homePath();
|
m_homeDirectory = QDir::homePath();
|
||||||
m_tempDirectory = QDir::tempPath();
|
m_tempDirectory = QDir::tempPath();
|
||||||
|
|
||||||
@ -214,6 +209,33 @@ MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& config
|
|||||||
} // Paths::updatePaths
|
} // Paths::updatePaths
|
||||||
|
|
||||||
|
|
||||||
|
MYXLIB_INLINE bool Paths::init()
|
||||||
|
{
|
||||||
|
m_projectName = m_executableName;
|
||||||
|
m_configFileName = m_executableName + ".conf";
|
||||||
|
return( initCommon() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MYXLIB_INLINE bool Paths::init( const QString& configFileName )
|
||||||
|
{
|
||||||
|
m_projectName = m_executableName;
|
||||||
|
m_configFileName = configFileName;
|
||||||
|
return( initCommon() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MYXLIB_INLINE bool Paths::init( const QString& projectName, const QString& configFileExtension )
|
||||||
|
{
|
||||||
|
m_projectName = projectName.isEmpty() ? m_executableName
|
||||||
|
: projectName;
|
||||||
|
auto ext = configFileExtension.isEmpty() ? QStringLiteral( "conf" )
|
||||||
|
: configFileExtension;
|
||||||
|
m_configFileName = m_projectName + "." + ext;
|
||||||
|
return( initCommon() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
MYXLIB_INLINE bool Paths::makeDefaultDirectories()
|
MYXLIB_INLINE bool Paths::makeDefaultDirectories()
|
||||||
{
|
{
|
||||||
bool status = true;
|
bool status = true;
|
||||||
@ -281,12 +303,6 @@ MYXLIB_INLINE const QString& Paths::configFileName() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MYXLIB_INLINE const QString& Paths::configFileExtension() const
|
|
||||||
{
|
|
||||||
return( m_configFileExtension );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
MYXLIB_INLINE const QString& Paths::userVarDataDirectory() const
|
MYXLIB_INLINE const QString& Paths::userVarDataDirectory() const
|
||||||
{
|
{
|
||||||
return( m_userVarDataDirectory );
|
return( m_userVarDataDirectory );
|
||||||
|
@ -44,62 +44,6 @@ class Paths
|
|||||||
kDevelopment = 0x07
|
kDevelopment = 0x07
|
||||||
};
|
};
|
||||||
|
|
||||||
/// @brief Тип расположения файлов по каталогам
|
|
||||||
HierarchyType m_hierarchyType { HierarchyType::kFlat };
|
|
||||||
|
|
||||||
/// @brief Имя проекта, которое используется при формировании имён файлов и каталогов
|
|
||||||
QString m_projectName;
|
|
||||||
|
|
||||||
QString m_executableName;
|
|
||||||
QString m_executableFilePath;
|
|
||||||
QString m_executableDirectory;
|
|
||||||
|
|
||||||
/// @brief Общий префикс для файлов проекта
|
|
||||||
QString m_prefixDirectory;
|
|
||||||
|
|
||||||
/// @brief Путь к каталогу с временными файлами
|
|
||||||
QString m_tempDirectory;
|
|
||||||
/// @brief Путь к домашнему каталогу текущего пользователя
|
|
||||||
QString m_homeDirectory;
|
|
||||||
|
|
||||||
/// @brief Путь к пользовательскому каталогу с изменяемыми файлами
|
|
||||||
QString m_userVarDataDirectory;
|
|
||||||
/// @brief Путь к системному каталогу с изменяемыми файлами
|
|
||||||
QString m_systemVarDataDirectory;
|
|
||||||
|
|
||||||
/// @brief Путь к пользовательскому каталогу с неизменяемыми файлами
|
|
||||||
QString m_userConstDataDirectory;
|
|
||||||
/// @brief Путь к системному каталогу с неизменяемыми файлами
|
|
||||||
QString m_systemConstDataDirectory;
|
|
||||||
|
|
||||||
/// @brief Путь к пользовательскому каталогу с журналами работы
|
|
||||||
QString m_userLogDirectory;
|
|
||||||
/// @brief Путь к системному каталогу с журналами работы
|
|
||||||
QString m_systemLogDirectory;
|
|
||||||
|
|
||||||
/// @brief Путь к пользовательскому каталогу с файлами настройки
|
|
||||||
QString m_userConfigDirectory;
|
|
||||||
/// @brief Путь к системному каталогу с файлами настройки
|
|
||||||
QString m_systemConfigDirectory;
|
|
||||||
|
|
||||||
/// @brief Полный путь к файлу настройки
|
|
||||||
QString m_configFilePath;
|
|
||||||
/// @brief Имя файла настройки
|
|
||||||
QString m_configFileName;
|
|
||||||
/// @brief Расширение для файла настройки
|
|
||||||
QString m_configFileExtension;
|
|
||||||
|
|
||||||
void setupSystemDirectories( const QString& defaultPrefixDirectory,
|
|
||||||
const QString& defaultEtcDirectory,
|
|
||||||
const QString& defaultConstDataDirectory,
|
|
||||||
const QString& defaultVarDataDirectory,
|
|
||||||
const QString& defaultLogDirectory );
|
|
||||||
HierarchyType getHierarchyType();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
Paths();
|
|
||||||
~Paths() = default;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Paths( const Paths& ) = delete;
|
Paths( const Paths& ) = delete;
|
||||||
Paths& operator=( const Paths& ) = delete;
|
Paths& operator=( const Paths& ) = delete;
|
||||||
@ -120,7 +64,20 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Обновление путей с учётом расположения исполняемого файла
|
* @brief Обновление путей с учётом расположения исполняемого файла
|
||||||
*/
|
*/
|
||||||
bool init( const QString& projectDir, const QString& configFileExtension = QStringLiteral("conf") );
|
bool init();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Обновление путей с учётом расположения исполняемого файла
|
||||||
|
* @param configFileName Имя файла настроек
|
||||||
|
*/
|
||||||
|
bool init( const QString& configFileName );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Обновление путей с учётом расположения исполняемого файла
|
||||||
|
* @param projectName Имя проекта
|
||||||
|
* @param configFileExtension Расширение для файла настроек
|
||||||
|
*/
|
||||||
|
bool init( const QString& projectName, const QString& configFileExtension );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Создание стандартных каталогов
|
* @brief Создание стандартных каталогов
|
||||||
@ -226,6 +183,62 @@ public:
|
|||||||
* @brief Имя подкаталога для проекта
|
* @brief Имя подкаталога для проекта
|
||||||
*/
|
*/
|
||||||
const QString& projectName() const;
|
const QString& projectName() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Paths();
|
||||||
|
~Paths() = default;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/// @brief Тип расположения файлов по каталогам
|
||||||
|
HierarchyType m_hierarchyType { HierarchyType::kFlat };
|
||||||
|
|
||||||
|
/// @brief Имя проекта, которое используется при формировании имён файлов и каталогов
|
||||||
|
QString m_projectName;
|
||||||
|
|
||||||
|
QString m_executableName;
|
||||||
|
QString m_executableFilePath;
|
||||||
|
QString m_executableDirectory;
|
||||||
|
|
||||||
|
/// @brief Общий префикс для файлов проекта
|
||||||
|
QString m_prefixDirectory;
|
||||||
|
|
||||||
|
/// @brief Путь к каталогу с временными файлами
|
||||||
|
QString m_tempDirectory;
|
||||||
|
/// @brief Путь к домашнему каталогу текущего пользователя
|
||||||
|
QString m_homeDirectory;
|
||||||
|
|
||||||
|
/// @brief Путь к пользовательскому каталогу с изменяемыми файлами
|
||||||
|
QString m_userVarDataDirectory;
|
||||||
|
/// @brief Путь к системному каталогу с изменяемыми файлами
|
||||||
|
QString m_systemVarDataDirectory;
|
||||||
|
|
||||||
|
/// @brief Путь к пользовательскому каталогу с неизменяемыми файлами
|
||||||
|
QString m_userConstDataDirectory;
|
||||||
|
/// @brief Путь к системному каталогу с неизменяемыми файлами
|
||||||
|
QString m_systemConstDataDirectory;
|
||||||
|
|
||||||
|
/// @brief Путь к пользовательскому каталогу с журналами работы
|
||||||
|
QString m_userLogDirectory;
|
||||||
|
/// @brief Путь к системному каталогу с журналами работы
|
||||||
|
QString m_systemLogDirectory;
|
||||||
|
|
||||||
|
/// @brief Путь к пользовательскому каталогу с файлами настройки
|
||||||
|
QString m_userConfigDirectory;
|
||||||
|
/// @brief Путь к системному каталогу с файлами настройки
|
||||||
|
QString m_systemConfigDirectory;
|
||||||
|
|
||||||
|
/// @brief Полный путь к файлу настройки
|
||||||
|
QString m_configFilePath;
|
||||||
|
/// @brief Имя файла настройки
|
||||||
|
QString m_configFileName;
|
||||||
|
|
||||||
|
void setupSystemDirectories( const QString& defaultPrefixDirectory,
|
||||||
|
const QString& defaultEtcDirectory,
|
||||||
|
const QString& defaultConstDataDirectory,
|
||||||
|
const QString& defaultVarDataDirectory,
|
||||||
|
const QString& defaultLogDirectory );
|
||||||
|
bool initCommon();
|
||||||
|
HierarchyType getHierarchyType();
|
||||||
}; // class Paths
|
}; // class Paths
|
||||||
|
|
||||||
} // namespace filesystem
|
} // namespace filesystem
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#ifndef MYX_QT_POSIX_SIGNAL_WATCHER_CPP_
|
#ifndef MYX_QT_POSIX_SIGNAL_WATCHER_CPP_
|
||||||
#define MYX_QT_POSIX_SIGNAL_WATCHER_CPP_
|
#define MYX_QT_POSIX_SIGNAL_WATCHER_CPP_
|
||||||
|
|
||||||
#include <myx/core/config.hpp>
|
|
||||||
#include <myx/backports/cpp/helpers.hpp>
|
#include <myx/backports/cpp/helpers.hpp>
|
||||||
|
#include <myx/core/config.hpp>
|
||||||
|
|
||||||
#include <myx/qt/posix_signal_watcher.hpp>
|
#include <myx/qt/posix_signal_watcher.hpp>
|
||||||
#include <myx/qt/posix_signal_watcher_p.hpp>
|
#include <myx/qt/posix_signal_watcher_p.hpp>
|
||||||
@ -37,7 +37,7 @@ PosixSignalWatcherPrivate::PosixSignalWatcherPrivate( PosixSignalWatcher* q ) :
|
|||||||
Q_Q( PosixSignalWatcher );
|
Q_Q( PosixSignalWatcher );
|
||||||
|
|
||||||
int signal = 0;
|
int signal = 0;
|
||||||
(void)!::read( sockfd, &signal, sizeof( signal ) );
|
Q_UNUSED( !::read( sockfd, &signal, sizeof( signal ) ) );
|
||||||
qDebug() << "Caught signal: " << ::strsignal( signal );
|
qDebug() << "Caught signal: " << ::strsignal( signal );
|
||||||
Q_EMIT q->posixSignal( signal );
|
Q_EMIT q->posixSignal( signal );
|
||||||
} );
|
} );
|
||||||
@ -63,11 +63,12 @@ MYXLIB_INLINE void PosixSignalWatcherPrivate::watchForSignal( int signal )
|
|||||||
|
|
||||||
#if MYX_QT_HAS_POSIX_SIGNALS
|
#if MYX_QT_HAS_POSIX_SIGNALS
|
||||||
// Register a sigaction which will write to the socket pair
|
// Register a sigaction which will write to the socket pair
|
||||||
struct sigaction sigact;
|
struct sigaction sigact; //NOLINT
|
||||||
sigact.sa_handler = PosixSignalWatcherPrivate::signalHandler; //NOLINT
|
sigact.sa_handler = PosixSignalWatcherPrivate::signalHandler; //NOLINT
|
||||||
sigact.sa_flags = 0;
|
sigact.sa_flags = 0;
|
||||||
sigemptyset( &sigact.sa_mask );
|
sigemptyset( &sigact.sa_mask );
|
||||||
sigact.sa_flags |= SA_RESTART;
|
sigact.sa_flags |= SA_RESTART;
|
||||||
|
sigact.sa_restorer = nullptr;
|
||||||
if ( ::sigaction( signal, &sigact, nullptr ) != 0 )
|
if ( ::sigaction( signal, &sigact, nullptr ) != 0 )
|
||||||
{
|
{
|
||||||
qDebug() << "PosixSignalWatcher: sigaction: " << ::strerror( errno );
|
qDebug() << "PosixSignalWatcher: sigaction: " << ::strerror( errno );
|
||||||
@ -85,7 +86,7 @@ MYXLIB_INLINE void PosixSignalWatcherPrivate::watchForSignal( int signal )
|
|||||||
*/
|
*/
|
||||||
MYXLIB_INLINE void PosixSignalWatcherPrivate::signalHandler( int signal )
|
MYXLIB_INLINE void PosixSignalWatcherPrivate::signalHandler( int signal )
|
||||||
{
|
{
|
||||||
(void)!::write( mSockpair[0], &signal, sizeof( signal ) );
|
Q_UNUSED( !::write( mSockpair[0], &signal, sizeof( signal ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#ifndef MYX_QT_TRANSLATORS_CPP_
|
#ifndef MYX_QT_TRANSLATORS_CPP_
|
||||||
#define MYX_QT_TRANSLATORS_CPP_
|
#define MYX_QT_TRANSLATORS_CPP_
|
||||||
|
|
||||||
#include <myx/core/config.hpp>
|
|
||||||
#include <myx/backports/qt/common.hpp>
|
#include <myx/backports/qt/common.hpp>
|
||||||
|
#include <myx/core/config.hpp>
|
||||||
|
|
||||||
#include <myx/qt/translators.hpp>
|
#include <myx/qt/translators.hpp>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user