add commandline-parameter "--data-dir"

This commit is contained in:
plc-user 2025-01-27 21:48:36 +01:00
parent e9d2c13630
commit d971da5ac7
9 changed files with 119 additions and 10 deletions

View File

@ -5,7 +5,10 @@ set current_dir=%~dp0
cd /d %current_dir% cd /d %current_dir%
rem lance QElectroTech rem lance QElectroTech
rem Sans option --config-dir, la configuration de QElectroTech ainsi que la rem Sans option --config-dir, la configuration de QElectroTech seront dans
rem collection d'elements perso seront dans "%APPDATA%\qet" rem "C:/Users/<USER>/AppData/Local/QElectroTech/QElectroTech"
rem Sans l'option --data-dir, les données utilisateur (elements, titleblocks,
rem log, ...) de QElectroTech sont stockées dans
rem "C:/Users/<USER>/AppData/Roaming/QElectroTech/QElectroTech"
set command=bin\qelectrotech.exe --common-elements-dir=elements/ --common-tbt-dir=titleblocks/ --lang-dir=lang/ -style windowsvista %* set command=bin\qelectrotech.exe --common-elements-dir=elements/ --common-tbt-dir=titleblocks/ --lang-dir=lang/ -style windowsvista %*
@start %command% @start %command%

View File

@ -25,5 +25,8 @@ add_definitions(-DQET_ALLOW_OVERRIDE_CTBTD_OPTION)
# Comment the line below to deactivate the --config-dir option # Comment the line below to deactivate the --config-dir option
add_definitions(-DQET_ALLOW_OVERRIDE_CD_OPTION) add_definitions(-DQET_ALLOW_OVERRIDE_CD_OPTION)
# Comment the line below to deactivate the --data-dir option
add_definitions(-DQET_ALLOW_OVERRIDE_DD_OPTION)
#comment the line below to disable the project database export #comment the line below to disable the project database export
#add_definitions(-DQET_EXPORT_PROJECT_DB) #error Todo #add_definitions(-DQET_EXPORT_PROJECT_DB) #error Todo

View File

@ -8,5 +8,5 @@ rem Met la collection QET en lecture seule
attrib +r elements/* /S /D attrib +r elements/* /S /D
rem lance QElectroTech rem lance QElectroTech
set command=bin\qelectrotech.exe -platform windows:fontengine=freetype --common-elements-dir=elements/ --common-tbt-dir=titleblocks/ --lang-dir=lang/ --config-dir=conf/ -style plastique %* set command=bin\qelectrotech.exe -platform windows:fontengine=freetype --common-elements-dir=elements/ --common-tbt-dir=titleblocks/ --lang-dir=lang/ --config-dir=conf/ --data-dir=conf/ -style plastique %*
@start %command% @start %command%

View File

@ -7,6 +7,7 @@ QET_EXE=$(readlink -f "${current_dir}/../qelectrotech")
QET_ELEMENTS_DIR=$(readlink -f "${current_dir}/../elements/") QET_ELEMENTS_DIR=$(readlink -f "${current_dir}/../elements/")
QET_TBT_DIR=$(readlink -f "${current_dir}/../titleblocks/") QET_TBT_DIR=$(readlink -f "${current_dir}/../titleblocks/")
QET_CONFIG_DIR="" QET_CONFIG_DIR=""
QET_DATA_DIR=""
QET_LANG_DIR=$(readlink -f "${current_dir}/../lang/") QET_LANG_DIR=$(readlink -f "${current_dir}/../lang/")
# REDEFINE_LANG="es" # REDEFINE_LANG="es"
@ -31,6 +32,10 @@ if [ -d "${QET_CONFIG_DIR}" ]; then
OPTIONS="${OPTIONS} --config-dir=${QET_CONFIG_DIR}" OPTIONS="${OPTIONS} --config-dir=${QET_CONFIG_DIR}"
fi fi
if [ -d "${QET_DATA_DIR}" ]; then
OPTIONS="${OPTIONS} --data-dir=${QET_DATA_DIR}"
fi
if [ -d "${QET_LANG_DIR}" ]; then if [ -d "${QET_LANG_DIR}" ]; then
OPTIONS="${OPTIONS} --lang-dir=${QET_LANG_DIR}" OPTIONS="${OPTIONS} --lang-dir=${QET_LANG_DIR}"
fi fi

View File

@ -57,6 +57,9 @@ DEFINES += QET_ALLOW_OVERRIDE_CTBTD_OPTION
# Commenter la ligne ci-dessous pour desactiver l'option --config-dir # Commenter la ligne ci-dessous pour desactiver l'option --config-dir
DEFINES += QET_ALLOW_OVERRIDE_CD_OPTION DEFINES += QET_ALLOW_OVERRIDE_CD_OPTION
# Commenter la ligne ci-dessous pour desactiver l'option --data-dir
DEFINES += QET_ALLOW_OVERRIDE_DD_OPTION
#comment the line below to disable the project database export #comment the line below to disable the project database export
DEFINES += QET_EXPORT_PROJECT_DB DEFINES += QET_EXPORT_PROJECT_DB

View File

@ -62,6 +62,10 @@ QString QETApp::common_tbt_dir_ = QString();
QString QETApp::config_dir = QString(); QString QETApp::config_dir = QString();
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
QString QETApp::data_dir = QString();
#endif
QString QETApp::lang_dir = QString(); QString QETApp::lang_dir = QString();
TitleBlockTemplatesFilesCollection *QETApp::m_common_tbt_collection; TitleBlockTemplatesFilesCollection *QETApp::m_common_tbt_collection;
TitleBlockTemplatesFilesCollection *QETApp::m_company_tbt_collection; TitleBlockTemplatesFilesCollection *QETApp::m_company_tbt_collection;
@ -842,7 +846,7 @@ QString QETApp::configDir()
if (config_dir != QString()) return(config_dir); if (config_dir != QString()) return(config_dir);
#endif #endif
QString configdir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); QString configdir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
if (configdir.endsWith('/')) { while (configdir.endsWith('/')) {
configdir.remove(configdir.length()-1, 1); configdir.remove(configdir.length()-1, 1);
} }
return configdir; return configdir;
@ -862,8 +866,11 @@ QString QETApp::configDir()
*/ */
QString QETApp::dataDir() QString QETApp::dataDir()
{ {
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
if (data_dir != QString()) return(data_dir);
#endif
QString datadir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); QString datadir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
if (datadir.endsWith('/')) { while (datadir.endsWith('/')) {
datadir.remove(datadir.length()-1, 1); datadir.remove(datadir.length()-1, 1);
} }
return datadir; return datadir;
@ -882,7 +889,7 @@ QString QETApp::dataDir()
QString QETApp::documentDir() QString QETApp::documentDir()
{ {
QString docdir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); QString docdir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
if (docdir.endsWith('/')) { while (docdir.endsWith('/')) {
docdir.remove(docdir.length()-1, 1); docdir.remove(docdir.length()-1, 1);
} }
return docdir; return docdir;
@ -901,7 +908,7 @@ QString QETApp::documentDir()
QString QETApp::pictureDir() QString QETApp::pictureDir()
{ {
QString picturedir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); QString picturedir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
if (picturedir.endsWith('/')) { while (picturedir.endsWith('/')) {
picturedir.remove(picturedir.length()-1, 1); picturedir.remove(picturedir.length()-1, 1);
} }
return picturedir; return picturedir;
@ -1114,7 +1121,32 @@ void QETApp::overrideConfigDir(const QString &new_cd) {
QFileInfo new_cd_info(new_cd); QFileInfo new_cd_info(new_cd);
if (new_cd_info.isDir()) { if (new_cd_info.isDir()) {
config_dir = new_cd_info.absoluteFilePath(); config_dir = new_cd_info.absoluteFilePath();
if (!config_dir.endsWith("/")) config_dir += "/"; // directory entries always without trailing slash
while (config_dir.endsWith('/')) {
config_dir.remove(config_dir.length()-1, 1);
}
}
}
#endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
/**
@brief QETApp::overrideDataDir
Redefines the path of the data folder
\~French Redefinit le chemin du dossier de data
\~ @param new_dd :
New path to data folder
\~French Nouveau chemin du dossier de data
*/
void QETApp::overrideDataDir(const QString &new_dd) {
QFileInfo new_dd_info(new_dd);
if (new_dd_info.isDir()) {
data_dir = new_dd_info.absoluteFilePath();
// directory entries always without trailing slash
while (data_dir.endsWith('/')) {
data_dir.remove(data_dir.length()-1, 1);
}
} }
} }
#endif #endif
@ -1944,6 +1976,7 @@ QList<QWidget *> QETApp::floatingToolbarsAndDocksForMainWindow(
Parse the following arguments: Parse the following arguments:
- --common-elements-dir= - --common-elements-dir=
- --config-dir - --config-dir
- --data-dir
- --help - --help
- --version - --version
- -v - -v
@ -1956,6 +1989,7 @@ QList<QWidget *> QETApp::floatingToolbarsAndDocksForMainWindow(
Parse les arguments suivants : Parse les arguments suivants :
- --common-elements-dir= - --common-elements-dir=
- --config-dir - --config-dir
- --data-dir
- --help - --help
- --version - --version
- -v - -v
@ -1995,6 +2029,11 @@ void QETApp::parseArguments()
overrideConfigDir(qet_arguments_.configDir()); overrideConfigDir(qet_arguments_.configDir());
} }
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
if (qet_arguments_.dataDirSpecified()) {
overrideDataDir(qet_arguments_.dataDir());
}
#endif
if (qet_arguments_.langDirSpecified()) { if (qet_arguments_.langDirSpecified()) {
overrideLangDir(qet_arguments_.langDir()); overrideLangDir(qet_arguments_.langDir());
@ -2496,6 +2535,9 @@ void QETApp::printHelp()
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION #ifdef QET_ALLOW_OVERRIDE_CD_OPTION
+ tr(" --config-dir=DIR Definir le dossier de configuration\n") + tr(" --config-dir=DIR Definir le dossier de configuration\n")
#endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
+ tr(" --data-dir=DIR Definir le dossier de data\n")
#endif #endif
+ tr(" --lang-dir=DIR Definir le dossier contenant les fichiers de langue\n") + tr(" --lang-dir=DIR Definir le dossier contenant les fichiers de langue\n")
); );

View File

@ -143,6 +143,18 @@ class QETApp : public QObject
static QString config_dir; static QString config_dir;
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
public:
static void overrideDataDir(const QString &);
private:
/**
@brief data_dir
Directory containing the users data
and the custom elements collection
*/
static QString data_dir;
#endif
public: public:
static void overrideLangDir(const QString &); static void overrideLangDir(const QString &);
/** /**

View File

@ -63,6 +63,9 @@ common_tbt_dir_(qet_arguments.common_tbt_dir_),
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION #ifdef QET_ALLOW_OVERRIDE_CD_OPTION
config_dir_(qet_arguments.config_dir_), config_dir_(qet_arguments.config_dir_),
#endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
data_dir_(qet_arguments.data_dir_),
#endif #endif
lang_dir_(qet_arguments.lang_dir_), lang_dir_(qet_arguments.lang_dir_),
print_help_(qet_arguments.print_help_), print_help_(qet_arguments.print_help_),
@ -89,6 +92,9 @@ QETArguments &QETArguments::operator=(const QETArguments &qet_arguments) {
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION #ifdef QET_ALLOW_OVERRIDE_CD_OPTION
config_dir_ = qet_arguments.config_dir_; config_dir_ = qet_arguments.config_dir_;
#endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
data_dir_ = qet_arguments.data_dir_;
#endif #endif
lang_dir_ = qet_arguments.lang_dir_; lang_dir_ = qet_arguments.lang_dir_;
print_help_ = qet_arguments.print_help_; print_help_ = qet_arguments.print_help_;
@ -190,6 +196,9 @@ void QETArguments::clear()
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION #ifdef QET_ALLOW_OVERRIDE_CD_OPTION
config_dir_.clear(); config_dir_.clear();
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
data_dir_.clear();
#endif
} }
/** /**
@ -239,6 +248,7 @@ void QETArguments::handleFileArgument(const QString &file) {
* --common-elements-dir= * --common-elements-dir=
* --common-tbt-dir * --common-tbt-dir
* --config-dir= * --config-dir=
* --data-dir=
* --lang-dir= * --lang-dir=
* --help * --help
* --version * --version
@ -266,7 +276,6 @@ void QETArguments::handleOptionArgument(const QString &option) {
common_elements_dir_ = option.mid(ced_arg.length()); common_elements_dir_ = option.mid(ced_arg.length());
return; return;
} }
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_CTBTD_OPTION #ifdef QET_ALLOW_OVERRIDE_CTBTD_OPTION
QString ctbtd_arg("--common-tbt-dir="); QString ctbtd_arg("--common-tbt-dir=");
@ -281,7 +290,13 @@ void QETArguments::handleOptionArgument(const QString &option) {
config_dir_ = option.mid(cd_arg.length()); config_dir_ = option.mid(cd_arg.length());
return; return;
} }
#endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
QString dd_arg("--data-dir=");
if (option.startsWith(dd_arg)) {
data_dir_ = option.mid(dd_arg.length());
return;
}
#endif #endif
QString ld_arg("--lang-dir="); QString ld_arg("--lang-dir=");
@ -353,6 +368,25 @@ QString QETArguments::configDir() const
} }
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
/**
@return true si l'utilisateur a specifie un dossier pour la data
*/
bool QETArguments::dataDirSpecified() const
{
return(!data_dir_.isEmpty());
}
/**
@return le dossier de data specifie par l'utilisateur.
Si l'utilisateur n'en a pas specifie, une chaine vide est retournee.
*/
QString QETArguments::dataDir() const
{
return(data_dir_);
}
#endif
/** /**
@return true si l'utilisateur a specifie un dossier pour les fichiers de langue @return true si l'utilisateur a specifie un dossier pour les fichiers de langue
*/ */

View File

@ -53,6 +53,10 @@ class QETArguments : public QObject {
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION #ifdef QET_ALLOW_OVERRIDE_CD_OPTION
virtual bool configDirSpecified() const; virtual bool configDirSpecified() const;
virtual QString configDir() const; virtual QString configDir() const;
#endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
virtual bool dataDirSpecified() const;
virtual QString dataDir() const;
#endif #endif
virtual bool langDirSpecified() const; virtual bool langDirSpecified() const;
virtual QString langDir() const; virtual QString langDir() const;
@ -83,6 +87,9 @@ class QETArguments : public QObject {
#endif #endif
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION #ifdef QET_ALLOW_OVERRIDE_CD_OPTION
QString config_dir_; QString config_dir_;
#endif
#ifdef QET_ALLOW_OVERRIDE_DD_OPTION
QString data_dir_;
#endif #endif
QString lang_dir_; QString lang_dir_;
bool print_help_; bool print_help_;