diff --git a/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp b/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp index bfa9bbc58..5f645857d 100644 --- a/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp +++ b/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp @@ -31,6 +31,10 @@ #include #include +#include "nel/misc/cmd_args.h" + +extern NLMISC::CCmdArgs Args; + CClientConfigDialog::CClientConfigDialog( QWidget *parent ) : QDialog( parent ) { @@ -145,16 +149,29 @@ void CClientConfigDialog::onClickPlay() { bool started = false; + QStringList arguments; + + if (Args.haveArg("p")) + { + arguments << "-p" << QString::fromUtf8(Args.getArg("p").front().c_str()); + } + + QString clientFullPath = QString::fromUtf8(Args.getProgramPath().c_str()); + #ifdef Q_OS_WIN32 - started = QProcess::startDetached( "ryzom_client_r.exe" ); - if( !started ) - QProcess::startDetached( "ryzom_client_d.exe" ); +#ifdef _DEBUG + clientFullPath += "ryzom_client_d.exe"; +#else + clientFullPath += "ryzom_client_r.exe"; +#endif #elif defined(Q_OS_MAC) - started = QProcess::startDetached( "./Ryzom.app" ); + clientFullPath += "Ryzom"; #else - started = QProcess::startDetached( "./ryzom_client" ); + clientFullPath += "ryzom_client"; #endif + started = QProcess::startDetached(clientFullPath, arguments); + onClickOK(); } diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp b/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp index ae8b1a590..7e05f83bd 100644 --- a/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp @@ -90,10 +90,10 @@ void CDisplaySettingsWidget::load() windowedRadioButton->setChecked( true ); } - widthLineEdit->setText( QString( "%1" ).arg( mode.width ) ); - heightLineEdit->setText( QString( "%1" ).arg( mode.height ) ); - xpositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionX" ) ) ); - ypositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionY" ) ) ); + widthLineEdit->setText(QString::number(mode.width)); + heightLineEdit->setText(QString::number(mode.height)); + xpositionLineEdit->setText(QString::number(s.config.getInt("PositionX"))); + ypositionLineEdit->setText(QString::number(s.config.getInt("PositionY"))); } @@ -166,7 +166,18 @@ void CDisplaySettingsWidget::updateVideoModes() while(itr != iend) { - videomodeComboBox->addItem(QString("%1x%2 %3 bit @%4").arg(itr->width).arg(itr->height).arg(itr->depth).arg(itr->frequency)); + if (itr->frequency) + { + videomodeComboBox->addItem(QString("%1x%2 %3 bit @%4").arg(itr->width).arg(itr->height).arg(itr->depth).arg(itr->frequency)); + } + else if (itr->width) + { + videomodeComboBox->addItem(QString("%1x%2 %3 bit").arg(itr->width).arg(itr->height).arg(itr->depth)); + } + else + { + videomodeComboBox->addItem(tr("Auto")); + } ++itr; } @@ -183,7 +194,7 @@ uint32 CDisplaySettingsWidget::findVideoModeIndex( CVideoMode *mode ) //| --------------------------------------| //| Auto | OpenGL modes | //| OpenGL | OpenGL modes | - //| Direct3D | Direct3d modes | + //| Direct3D | Direct3D modes | //| --------------------------------------| // // diff --git a/code/ryzom/tools/client/client_config_qt/main.cpp b/code/ryzom/tools/client/client_config_qt/main.cpp index 2967ce4a0..b99cde6c1 100644 --- a/code/ryzom/tools/client/client_config_qt/main.cpp +++ b/code/ryzom/tools/client/client_config_qt/main.cpp @@ -37,6 +37,8 @@ #endif +NLMISC::CCmdArgs Args; + int main(sint32 argc, char **argv) { NLMISC::CApplicationContext applicationContext; @@ -44,11 +46,10 @@ int main(sint32 argc, char **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"); + 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; + if (!Args.parse(argc, argv)) return 1; QApplication::setWindowIcon(QIcon(":/resources/welcome_icon.png")); QPixmap pixmap(":/resources/splash_screen.png" ); @@ -82,16 +83,16 @@ int main(sint32 argc, char **argv) // default paths std::string ryzomDir = NLMISC::CPath::standardizePath(NLMISC::CPath::getApplicationDirectory("Ryzom")); - std::string currentDir = args.getStartupPath(); - std::string executableDir = args.getProgramPath(); + 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")) + if (Args.haveArg("p")) { - ryzomDir = NLMISC::CPath::standardizePath(ryzomDir + args.getArg("p").front()); + ryzomDir = NLMISC::CPath::standardizePath(ryzomDir + Args.getArg("p").front()); // client.cfg is always in profile directory if using -p argument configPath = ryzomDir + configFilename; diff --git a/code/ryzom/tools/client/client_config_qt/system.cpp b/code/ryzom/tools/client/client_config_qt/system.cpp index 8ef5a930b..635800878 100644 --- a/code/ryzom/tools/client/client_config_qt/system.cpp +++ b/code/ryzom/tools/client/client_config_qt/system.cpp @@ -160,6 +160,16 @@ void CSystem::GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driv std::vector< NL3D::GfxMode > modes; driver->getModes( modes ); + { + // auto mode + CVideoMode mode; + mode.depth = 0; + mode.width = 0; + mode.height = 0; + mode.frequency = 0; + dst.push_back( mode ); + } + for( std::vector< NL3D::GfxMode >::iterator itr = modes.begin(); itr != modes.end(); ++itr ) { if( ( itr->Width >= 800 ) && ( itr->Height >= 600 ) && ( itr->Depth >= 16 ) )