mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-14 03:09:08 +00:00
Merge with develop
This commit is contained in:
parent
4eb9d884d0
commit
5a8dd806f0
5 changed files with 151 additions and 16 deletions
|
@ -17,6 +17,10 @@
|
||||||
#include "stdpch.h"
|
#include "stdpch.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "nel/misc/common.h"
|
||||||
|
#include "nel/misc/i18n.h"
|
||||||
|
#include "nel/misc/path.h"
|
||||||
|
|
||||||
CConfig::CConfig()
|
CConfig::CConfig()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -25,17 +29,50 @@ CConfig::~CConfig()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CConfig::load( const char *fileName )
|
bool CConfig::create(const std::string &configFileName, const std::string &defaultFileName)
|
||||||
|
{
|
||||||
|
NLMISC::CFile::createDirectoryTree(NLMISC::CFile::getPath(configFileName));
|
||||||
|
|
||||||
|
// create the basic .cfg
|
||||||
|
FILE *fp = NLMISC::nlfopen(configFileName, "w");
|
||||||
|
|
||||||
|
if (fp == NULL) return false;
|
||||||
|
|
||||||
|
// store full path to default config file
|
||||||
|
fprintf(fp, "RootConfigFilename = \"%s\";\n", defaultFileName.c_str());
|
||||||
|
|
||||||
|
// get current locale
|
||||||
|
std::string lang = NLMISC::CI18N::getSystemLanguageCode();
|
||||||
|
|
||||||
|
const std::vector<std::string> &languages = NLMISC::CI18N::getLanguageCodes();
|
||||||
|
|
||||||
|
// search if current locale is defined in language codes
|
||||||
|
for(uint i = 0; i < languages.size(); ++i)
|
||||||
|
{
|
||||||
|
if (lang == languages[i])
|
||||||
|
{
|
||||||
|
// store the language code in the config file
|
||||||
|
fprintf(fp, "LanguageCode = \"%s\";\n", lang.c_str());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CConfig::load(const std::string &fileName)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
cf.load( fileName );
|
cf.load(fileName);
|
||||||
|
|
||||||
std::string def = getString( "RootConfigFilename" );
|
std::string def = getString("RootConfigFilename");
|
||||||
if( def.compare( "" ) != 0 )
|
if (!def.empty())
|
||||||
dcf.load( def );
|
dcf.load(def);
|
||||||
}
|
}
|
||||||
catch( NLMISC::Exception &e )
|
catch (const NLMISC::Exception &e)
|
||||||
{
|
{
|
||||||
nlwarning( "%s", e.what() );
|
nlwarning( "%s", e.what() );
|
||||||
return false;
|
return false;
|
||||||
|
@ -51,7 +88,7 @@ bool CConfig::reload()
|
||||||
cf.clear();
|
cf.clear();
|
||||||
cf.reparse();
|
cf.reparse();
|
||||||
}
|
}
|
||||||
catch( NLMISC::Exception &e )
|
catch (const NLMISC::Exception &e)
|
||||||
{
|
{
|
||||||
nlwarning( "%s", e.what() );
|
nlwarning( "%s", e.what() );
|
||||||
return false;
|
return false;
|
||||||
|
@ -112,7 +149,7 @@ bool CConfig::save()
|
||||||
{
|
{
|
||||||
cf.save();
|
cf.save();
|
||||||
}
|
}
|
||||||
catch( NLMISC::Exception &e )
|
catch (const NLMISC::Exception &e)
|
||||||
{
|
{
|
||||||
nlwarning( "%s", e.what() );
|
nlwarning( "%s", e.what() );
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -28,12 +28,20 @@ public:
|
||||||
CConfig();
|
CConfig();
|
||||||
~CConfig();
|
~CConfig();
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Create a config file.
|
||||||
|
@param fileName - The config file to create
|
||||||
|
@param defaultFileName - The default config file to use
|
||||||
|
@return Returns true on success, returns false on failure.
|
||||||
|
*/
|
||||||
|
bool create(const std::string &fileName, const std::string &defaultFileName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Loads a config file.
|
@brief Loads a config file.
|
||||||
@param fileName - The file to load
|
@param fileName - The file to load
|
||||||
@return Returns true on success, returns false on failure.
|
@return Returns true on success, returns false on failure.
|
||||||
*/
|
*/
|
||||||
bool load( const char *fileName );
|
bool load(const std::string &fileName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Reloads the contents of the config file
|
@brief Reloads the contents of the config file
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="texcompressionCheckBox">
|
<widget class="QCheckBox" name="texcompressionCheckBox">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Disable texture compression</string>
|
<string>Force texture compression</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
#include "client_config_dialog.h"
|
#include "client_config_dialog.h"
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
#include "nel/misc/cmd_args.h"
|
||||||
|
|
||||||
#include <QSplashScreen>
|
#include <QSplashScreen>
|
||||||
|
|
||||||
|
@ -42,21 +43,110 @@ int main(sint32 argc, char **argv)
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
|
// parse command-line arguments
|
||||||
|
NLMISC::CCmdArgs args;
|
||||||
|
args.setDescription("Ryzom Configuration");
|
||||||
|
args.addArg("p", "profile", "id", "Use this profile to determine what directory to use by default");
|
||||||
|
|
||||||
|
if (!args.parse(argc, argv)) return 1;
|
||||||
|
|
||||||
QApplication::setWindowIcon(QIcon(":/resources/welcome_icon.png"));
|
QApplication::setWindowIcon(QIcon(":/resources/welcome_icon.png"));
|
||||||
QPixmap pixmap(":/resources/splash_screen.png" );
|
QPixmap pixmap(":/resources/splash_screen.png" );
|
||||||
QSplashScreen splash( pixmap );
|
QSplashScreen splash( pixmap );
|
||||||
|
|
||||||
splash.show();
|
splash.show();
|
||||||
|
|
||||||
QString locale = QLocale::system().name().left(2);
|
QLocale locale = QLocale::system();
|
||||||
|
|
||||||
|
// load application translations
|
||||||
QTranslator localTranslator;
|
QTranslator localTranslator;
|
||||||
if (localTranslator.load(QString(":/translations/ryzom_configuration_%1.qm").arg(locale)))
|
if (localTranslator.load(locale, "ryzom_configuration", "_", ":/translations"))
|
||||||
{
|
{
|
||||||
app.installTranslator(&localTranslator);
|
QApplication::installTranslator(&localTranslator);
|
||||||
}
|
}
|
||||||
|
|
||||||
CSystem::GetInstance().config.load( "client.cfg" );
|
// load Qt default translations
|
||||||
|
QTranslator qtTranslator;
|
||||||
|
if (qtTranslator.load(locale, "qt", "_", ":/translations"))
|
||||||
|
{
|
||||||
|
QApplication::installTranslator(&qtTranslator);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Known cases:
|
||||||
|
// 1. Steam
|
||||||
|
// - Linux and Windows: all files in Steam folder
|
||||||
|
// - OS X: client.cfg in ~/Library/Application Support/Ryzom, client_default.cfg in Steam folder
|
||||||
|
// 2. Installer
|
||||||
|
// - Linux: client.cfg in ~/.ryzom/<config>/ client_default.cfg in ~/.ryzom/ryzom_live/
|
||||||
|
// - Windows: client.cfg in Roaming/Ryzom/<config>/ client_default.cfg in Local/Ryzom/ryzom_live/
|
||||||
|
// - OS X: client.cfg in ~/Library/Application Support/Ryzom/<config>/ client_default.cfg in ~/Library/Application Support/Ryzom/ryzom_live/
|
||||||
|
|
||||||
|
// default paths
|
||||||
|
std::string ryzomDir = NLMISC::CPath::standardizePath(NLMISC::CPath::getApplicationDirectory("Ryzom"));
|
||||||
|
std::string currentDir = args.getStartupPath();
|
||||||
|
std::string executableDir = args.getProgramPath();
|
||||||
|
|
||||||
|
std::string configFilename = "client.cfg";
|
||||||
|
std::string configPath;
|
||||||
|
|
||||||
|
// search client.cfg file in config directory (Ryzom Installer)
|
||||||
|
if (args.haveArg("p"))
|
||||||
|
{
|
||||||
|
ryzomDir = NLMISC::CPath::standardizePath(ryzomDir + args.getArg("p").front());
|
||||||
|
|
||||||
|
// client.cfg is always in profile directory if using -p argument
|
||||||
|
configPath = ryzomDir + configFilename;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifdef NL_OS_MAC
|
||||||
|
// client.cfg is in ~/Library/Application Support/Ryzom under OS X
|
||||||
|
configPath = ryzomDir + configFilename;
|
||||||
|
#else
|
||||||
|
// client.cfg is in current directory under other platforms
|
||||||
|
configPath = currentDir + configFilename;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// if file doesn't exist, create it
|
||||||
|
if (!NLMISC::CFile::fileExists(configPath))
|
||||||
|
{
|
||||||
|
// we need the full path to client_default.cfg
|
||||||
|
std::string defaultConfigFilename = "client_default.cfg";
|
||||||
|
std::string defaultConfigPath;
|
||||||
|
|
||||||
|
#ifdef NL_OS_MAC
|
||||||
|
// fix path inside bundle
|
||||||
|
defaultConfigPath = NLMISC::CPath::makePathAbsolute("../Resources", executableDir, true) + defaultConfigFilename;
|
||||||
|
#else
|
||||||
|
// same path as executables
|
||||||
|
defaultConfigPath = executableDir + defaultConfigFilename;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// test if default config exists in determined path
|
||||||
|
if (!NLMISC::CFile::fileExists(defaultConfigPath))
|
||||||
|
{
|
||||||
|
defaultConfigPath = currentDir + defaultConfigFilename;
|
||||||
|
|
||||||
|
// test if default config exists in current path
|
||||||
|
if (!NLMISC::CFile::fileExists(defaultConfigPath))
|
||||||
|
{
|
||||||
|
nlwarning("Unable to find %s", defaultConfigFilename.c_str());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CSystem::GetInstance().config.create(configPath, defaultConfigPath))
|
||||||
|
{
|
||||||
|
nlwarning("Unable to create %s", configPath.c_str());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CSystem::GetInstance().config.load(configPath))
|
||||||
|
{
|
||||||
|
nlwarning("Unable to load %s", configPath.c_str());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
CClientConfigDialog d;
|
CClientConfigDialog d;
|
||||||
d.show();
|
d.show();
|
||||||
|
|
|
@ -27,7 +27,7 @@ CSysInfoWidget::CSysInfoWidget( QWidget *parent ) :
|
||||||
osLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.osName.c_str()));
|
osLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.osName.c_str()));
|
||||||
cpuLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.cpuName.c_str()));
|
cpuLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.cpuName.c_str()));
|
||||||
|
|
||||||
ramLabel->setText(QString(tr("%1 MB").arg(CSystem::GetInstance().sysInfo.totalRAM)));
|
ramLabel->setText(QString(tr("%1 MiB").arg(CSystem::GetInstance().sysInfo.totalRAM)));
|
||||||
|
|
||||||
gfxcardLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.videoDevice.c_str()));
|
gfxcardLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.videoDevice.c_str()));
|
||||||
gfxdriverLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.videoDriverVersion.c_str()));
|
gfxdriverLabel->setText(QString::fromUtf8(CSystem::GetInstance().sysInfo.videoDriverVersion.c_str()));
|
||||||
|
|
Loading…
Reference in a new issue