diff --git a/code/ryzom/tools/client/client_config_qt/CMakeLists.txt b/code/ryzom/tools/client/client_config_qt/CMakeLists.txt
index c69bb6aed..87c5d7b05 100644
--- a/code/ryzom/tools/client/client_config_qt/CMakeLists.txt
+++ b/code/ryzom/tools/client/client_config_qt/CMakeLists.txt
@@ -1,57 +1,57 @@
-INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${QT_INCLUDES} )
-
-FILE( GLOB SRC *.cpp *.h )
-
-SET( CLIENT_CONFIG_HDR
- client_config_dialog.h
- display_settings_advanced_widget.h
- display_settings_details_widget.h
- display_settings_widget.h
- general_settings_widget.h
- sound_settings_widget.h
- sys_info_d3d_widget.h
- sys_info_opengl_widget.h
- sys_info_widget.h
- widget_base.h
-)
-
-SET( CLIENT_CONFIG_UIS
- client_config_dialog.ui
- display_settings_advanced_widget.ui
- display_settings_details_widget.ui
- display_settings_widget.ui
- general_settings_widget.ui
- sound_settings_widget.ui
- sys_info_d3d_widget.ui
- sys_info_opengl_widget.ui
- sys_info_widget.ui
-)
-
-SET( CLIENT_CONFIG_TRANS
- translations/ryzom_configuration_en.ts
- translations/ryzom_configuration_hu.ts
-)
-
-CONFIGURE_FILE( translations/translations.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc COPYONLY )
-SET( CLIENT_CONFIG_RCS resources.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc )
-SET( QT_USE_QTGUI TRUE )
-SET( QT_USE_QTOPENGL TRUE )
-SET( QT_USE_QTCORE TRUE )
-QT4_ADD_TRANSLATION( CLIENT_CONFIG_QM ${CLIENT_CONFIG_TRANS} )
-QT4_ADD_RESOURCES( CLIENT_CONFIG_RC_SRCS ${CLIENT_CONFIG_RCS} )
-QT4_WRAP_CPP( CLIENT_CONFIG_MOC_SRC ${CLIENT_CONFIG_HDR} )
-QT4_WRAP_UI( CLIENT_CONFIG_UI_HDRS ${CLIENT_CONFIG_UIS} )
-SOURCE_GROUP( "Resources" FILES ${CLIENT_CONFIG_RCS} )
-SOURCE_GROUP( "Forms" FILES ${CLIENT_CONFIG_UIS} )
-SOURCE_GROUP( "Generated Files" FILES ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_MOC_SRC} )
-SOURCE_GROUP( "Translation Files" FILES ${CLIENT_CONFIG_TRANS} )
-ADD_DEFINITIONS( ${QT_DEFINITIONS} )
-ADD_EXECUTABLE( ryzom_configuration_qt WIN32 MACOSX_BUNDLE ${SRC} ${CLIENT_CONFIG_MOC_SRC} ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_RC_SRCS} ${CLIENT_CONFIG_TRANS} )
-NL_DEFAULT_PROPS( ryzom_configuration_qt "Ryzom, Tools: Ryzom Configuration Qt" )
-NL_ADD_RUNTIME_FLAGS( ryzom_configuration_qt )
-NL_ADD_LIB_SUFFIX( ryzom_configuration_qt )
-TARGET_LINK_LIBRARIES( ryzom_configuration_qt nelmisc nel3d ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_gl_LIBRARY} )
-INSTALL( TARGETS ryzom_configuration_qt RUNTIME DESTINATION games COMPONENT client BUNDLE DESTINATION /Applications )
-
+INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${QT_INCLUDES} )
+
+FILE( GLOB SRC *.cpp *.h )
+
+SET( CLIENT_CONFIG_HDR
+ client_config_dialog.h
+ display_settings_advanced_widget.h
+ display_settings_details_widget.h
+ display_settings_widget.h
+ general_settings_widget.h
+ sound_settings_widget.h
+ sys_info_d3d_widget.h
+ sys_info_opengl_widget.h
+ sys_info_widget.h
+ widget_base.h
+)
+
+SET( CLIENT_CONFIG_UIS
+ client_config_dialog.ui
+ display_settings_advanced_widget.ui
+ display_settings_details_widget.ui
+ display_settings_widget.ui
+ general_settings_widget.ui
+ sound_settings_widget.ui
+ sys_info_d3d_widget.ui
+ sys_info_opengl_widget.ui
+ sys_info_widget.ui
+)
+
+SET( CLIENT_CONFIG_TRANS
+ translations/ryzom_configuration_en.ts
+ translations/ryzom_configuration_hu.ts
+)
+
+CONFIGURE_FILE( translations/translations.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc COPYONLY )
+SET( CLIENT_CONFIG_RCS resources.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc )
+SET( QT_USE_QTGUI TRUE )
+SET( QT_USE_QTOPENGL TRUE )
+SET( QT_USE_QTCORE TRUE )
+QT4_ADD_TRANSLATION( CLIENT_CONFIG_QM ${CLIENT_CONFIG_TRANS} )
+QT4_ADD_RESOURCES( CLIENT_CONFIG_RC_SRCS ${CLIENT_CONFIG_RCS} )
+QT4_WRAP_CPP( CLIENT_CONFIG_MOC_SRC ${CLIENT_CONFIG_HDR} )
+QT4_WRAP_UI( CLIENT_CONFIG_UI_HDRS ${CLIENT_CONFIG_UIS} )
+SOURCE_GROUP( "Resources" FILES ${CLIENT_CONFIG_RCS} )
+SOURCE_GROUP( "Forms" FILES ${CLIENT_CONFIG_UIS} )
+SOURCE_GROUP( "Generated Files" FILES ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_MOC_SRC} )
+SOURCE_GROUP( "Translation Files" FILES ${CLIENT_CONFIG_TRANS} )
+ADD_DEFINITIONS( ${QT_DEFINITIONS} )
+ADD_EXECUTABLE( ryzom_configuration_qt WIN32 MACOSX_BUNDLE ${SRC} ${CLIENT_CONFIG_MOC_SRC} ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_RC_SRCS} ${CLIENT_CONFIG_TRANS} )
+NL_DEFAULT_PROPS( ryzom_configuration_qt "Ryzom, Tools: Ryzom Configuration Qt" )
+NL_ADD_RUNTIME_FLAGS( ryzom_configuration_qt )
+NL_ADD_LIB_SUFFIX( ryzom_configuration_qt )
+TARGET_LINK_LIBRARIES( ryzom_configuration_qt nelmisc nel3d ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_gl_LIBRARY} )
+INSTALL( TARGETS ryzom_configuration_qt RUNTIME DESTINATION games COMPONENT client BUNDLE DESTINATION /Applications )
+
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 2f1e2225f..5c6801152 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
@@ -1,259 +1,259 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "client_config_dialog.h"
-
-#include "general_settings_widget.h"
-#include "display_settings_widget.h"
-#include "display_settings_details_widget.h"
-#include "display_settings_advanced_widget.h"
-#include "sound_settings_widget.h"
-#include "sys_info_widget.h"
-#include "sys_info_opengl_widget.h"
-#include "sys_info_d3d_widget.h"
-
-#include "system.h"
-
-#include
-
-CClientConfigDialog::CClientConfigDialog( QWidget *parent ) :
- QDialog( parent )
-{
- setupUi( this );
- connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL( clicked() ), this, SLOT( close() ) );
- connect( buttonBox->button( QDialogButtonBox::Ok ), SIGNAL( clicked() ), this, SLOT( onClickOK() ) );
- connect( applyButton, SIGNAL( clicked() ), this, SLOT( onClickApply() ) );
- connect( defaultButton, SIGNAL( clicked() ), this, SLOT( onClickDefault() ) );
- connect( playButton, SIGNAL( clicked() ), this, SLOT( onClickPlay() ) );
- connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
- this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
-
- // General
- QTreeWidgetItem *item = treeWidget->topLevelItem( 0 );
- item->setData( 0, Qt::UserRole, 0 );
-
- // Display
- item = treeWidget->topLevelItem( 1 );
- item->setData( 0, Qt::UserRole, 1 );
-
- // Display details
- item = treeWidget->topLevelItem( 1 )->child( 0 );
- item->setData( 0, Qt::UserRole, 2 );
-
- // Display advanced
- item = treeWidget->topLevelItem( 1 )->child( 1 );
- item->setData( 0, Qt::UserRole, 3 );
-
- // Sound
- item = treeWidget->topLevelItem( 2 );
- item->setData( 0, Qt::UserRole, 4 );
-
- // System information
- item = treeWidget->topLevelItem( 3 );
- item->setData( 0, Qt::UserRole, 5 );
-
- // OpenGL info
- item = treeWidget->topLevelItem( 3 )->child( 0 );
- item->setData( 0, Qt::UserRole, 6 );
-
- // Direct3D info
- item = treeWidget->topLevelItem( 3 )->child( 1 );
- item->setData( 0, Qt::UserRole, 7 );
-
-
- CategoryStackedWidget->addWidget( new CGeneralSettingsWidget( CategoryStackedWidget ) );
- CategoryStackedWidget->addWidget( new CDisplaySettingsWidget( CategoryStackedWidget ) );
- CategoryStackedWidget->addWidget( new CDisplaySettingsDetailsWidget( CategoryStackedWidget ) );
- CategoryStackedWidget->addWidget( new CDisplaySettingsAdvancedWidget( CategoryStackedWidget ) );
- CategoryStackedWidget->addWidget( new CSoundSettingsWidget( CategoryStackedWidget ) );
- CategoryStackedWidget->addWidget( new CSysInfoWidget( CategoryStackedWidget ) );
- CategoryStackedWidget->addWidget( new CSysInfoOpenGLWidget( CategoryStackedWidget ) );
- CategoryStackedWidget->addWidget( new CSysInfoD3DWidget( CategoryStackedWidget ) );
-
- for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
- {
- QWidget *w = CategoryStackedWidget->widget( i );
-
- // The sysinfo pages are not derived from CWidgetBase, so they don't have this signal!
- if( qobject_cast< CWidgetBase * >( w ) == NULL )
- continue;
-
- connect( w, SIGNAL( changed() ), this, SLOT( onSomethingChanged() ) );
- }
-
- applyButton->setEnabled( false );
-}
-
-CClientConfigDialog::~CClientConfigDialog()
-{
-}
-
-void CClientConfigDialog::closeEvent( QCloseEvent *event )
-{
- if( isOKToQuit() )
- event->accept();
- else
- event->ignore();
-}
-
-void CClientConfigDialog::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- int pageIndex = CategoryStackedWidget->currentIndex();
- // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
- disconnect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
- this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
-
- retranslateUi( this );
-
- connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
- this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
-
- CategoryStackedWidget->setCurrentIndex( pageIndex );
- }
-
- QDialog::changeEvent( event );
-}
-
-void CClientConfigDialog::onClickOK()
-{
- saveChanges();
- // Since we use the apply button's enabled state to check for unsaved changes on quit, we disable it
- applyButton->setEnabled( false );
- close();
-}
-
-void CClientConfigDialog::onClickApply()
-{
- saveChanges();
- applyButton->setEnabled( false );
-}
-
-void CClientConfigDialog::onClickDefault()
-{
- CSystem::GetInstance().config.revertToDefault();
- CSystem::GetInstance().config.save();
- reloadPages();
- applyButton->setEnabled( false );
-}
-
-void CClientConfigDialog::onClickPlay()
-{
- bool started = false;
-
-#ifdef WIN32
- started = QProcess::startDetached( "ryzom_client_r.exe" );
- if( !started )
- QProcess::startDetached( "ryzom_client_rd.exe" );
- if( !started )
- QProcess::startDetached( "ryzom_client_d.exe" );
-#else
- started = QProcess::startDetached( "./ryzom_client_r" );
- if( !started )
- QProcess::startDetached( "./ryzom_client_rd" );
- if( !started )
- QProcess::startDetached( "./ryzom_client_d" );
-#endif
-
- onClickOK();
-}
-
-void CClientConfigDialog::onClickCategory( QTreeWidgetItem *item )
-{
- if( item == NULL )
- return;
-
- static const char *iconNames[] =
- {
- ":/resources/general_icon.bmp",
- ":/resources/display_icon.bmp",
- ":/resources/display_properties_icon.bmp",
- ":/resources/display_config_icon.bmp",
- ":/resources/sound_icon.bmp",
- ":/resources/general_icon.bmp",
- ":/resources/card_icon.bmp",
- ":/resources/card_icon.bmp"
- };
-
- sint32 index = item->data( 0, Qt::UserRole ).toInt();
-
- if( ( index < 0 ) || ( index > 7 ) )
- return;
-
- CategoryStackedWidget->setCurrentIndex( index );
- categoryLabel->setText( item->text( 0 ) );
- topleftIcon->setPixmap( QPixmap( QString::fromUtf8( iconNames[ index ] ) ) );
-}
-
-void CClientConfigDialog::onSomethingChanged()
-{
- applyButton->setEnabled( true );
-}
-
-void CClientConfigDialog::saveChanges()
-{
- // First we tell the pages to save their changes into the cached config file
- for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
- {
- QWidget *w = CategoryStackedWidget->widget( i );
- CWidgetBase *wb = qobject_cast< CWidgetBase * >( w );
-
- // The system information pages are not derived from CWidgetBase, so they can't save!
- if( wb == NULL )
- continue;
-
- wb->save();
- }
-
- // Then we write the cache to the disk
- CSystem::GetInstance().config.save();
-}
-
-void CClientConfigDialog::reloadPages()
-{
- for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
- {
- QWidget *w = CategoryStackedWidget->widget( i );
- CWidgetBase *wb = qobject_cast< CWidgetBase * >( w );
-
- // The system information pages are not derived from CWidgetBase, so they can't load!
- if( wb == NULL )
- continue;
-
- wb->load();
- }
-}
-
-bool CClientConfigDialog::isOKToQuit()
-{
- // If the apply button is enabled we have unsaved changes
- if( applyButton->isEnabled() )
- {
- sint32 r = QMessageBox::warning(
- this,
- tr( "Ryzom configuration" ),
- tr( "Are you sure you want to quit without saving the configuration?" ),
- QMessageBox::Yes | QMessageBox::No
- );
-
- if( r == QMessageBox::No )
- return false;
- }
-
- return true;
-}
-
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "client_config_dialog.h"
+
+#include "general_settings_widget.h"
+#include "display_settings_widget.h"
+#include "display_settings_details_widget.h"
+#include "display_settings_advanced_widget.h"
+#include "sound_settings_widget.h"
+#include "sys_info_widget.h"
+#include "sys_info_opengl_widget.h"
+#include "sys_info_d3d_widget.h"
+
+#include "system.h"
+
+#include
+
+CClientConfigDialog::CClientConfigDialog( QWidget *parent ) :
+ QDialog( parent )
+{
+ setupUi( this );
+ connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL( clicked() ), this, SLOT( close() ) );
+ connect( buttonBox->button( QDialogButtonBox::Ok ), SIGNAL( clicked() ), this, SLOT( onClickOK() ) );
+ connect( applyButton, SIGNAL( clicked() ), this, SLOT( onClickApply() ) );
+ connect( defaultButton, SIGNAL( clicked() ), this, SLOT( onClickDefault() ) );
+ connect( playButton, SIGNAL( clicked() ), this, SLOT( onClickPlay() ) );
+ connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
+ this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
+
+ // General
+ QTreeWidgetItem *item = treeWidget->topLevelItem( 0 );
+ item->setData( 0, Qt::UserRole, 0 );
+
+ // Display
+ item = treeWidget->topLevelItem( 1 );
+ item->setData( 0, Qt::UserRole, 1 );
+
+ // Display details
+ item = treeWidget->topLevelItem( 1 )->child( 0 );
+ item->setData( 0, Qt::UserRole, 2 );
+
+ // Display advanced
+ item = treeWidget->topLevelItem( 1 )->child( 1 );
+ item->setData( 0, Qt::UserRole, 3 );
+
+ // Sound
+ item = treeWidget->topLevelItem( 2 );
+ item->setData( 0, Qt::UserRole, 4 );
+
+ // System information
+ item = treeWidget->topLevelItem( 3 );
+ item->setData( 0, Qt::UserRole, 5 );
+
+ // OpenGL info
+ item = treeWidget->topLevelItem( 3 )->child( 0 );
+ item->setData( 0, Qt::UserRole, 6 );
+
+ // Direct3D info
+ item = treeWidget->topLevelItem( 3 )->child( 1 );
+ item->setData( 0, Qt::UserRole, 7 );
+
+
+ CategoryStackedWidget->addWidget( new CGeneralSettingsWidget( CategoryStackedWidget ) );
+ CategoryStackedWidget->addWidget( new CDisplaySettingsWidget( CategoryStackedWidget ) );
+ CategoryStackedWidget->addWidget( new CDisplaySettingsDetailsWidget( CategoryStackedWidget ) );
+ CategoryStackedWidget->addWidget( new CDisplaySettingsAdvancedWidget( CategoryStackedWidget ) );
+ CategoryStackedWidget->addWidget( new CSoundSettingsWidget( CategoryStackedWidget ) );
+ CategoryStackedWidget->addWidget( new CSysInfoWidget( CategoryStackedWidget ) );
+ CategoryStackedWidget->addWidget( new CSysInfoOpenGLWidget( CategoryStackedWidget ) );
+ CategoryStackedWidget->addWidget( new CSysInfoD3DWidget( CategoryStackedWidget ) );
+
+ for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
+ {
+ QWidget *w = CategoryStackedWidget->widget( i );
+
+ // The sysinfo pages are not derived from CWidgetBase, so they don't have this signal!
+ if( qobject_cast< CWidgetBase * >( w ) == NULL )
+ continue;
+
+ connect( w, SIGNAL( changed() ), this, SLOT( onSomethingChanged() ) );
+ }
+
+ applyButton->setEnabled( false );
+}
+
+CClientConfigDialog::~CClientConfigDialog()
+{
+}
+
+void CClientConfigDialog::closeEvent( QCloseEvent *event )
+{
+ if( isOKToQuit() )
+ event->accept();
+ else
+ event->ignore();
+}
+
+void CClientConfigDialog::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ int pageIndex = CategoryStackedWidget->currentIndex();
+ // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
+ disconnect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
+ this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
+
+ retranslateUi( this );
+
+ connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
+ this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
+
+ CategoryStackedWidget->setCurrentIndex( pageIndex );
+ }
+
+ QDialog::changeEvent( event );
+}
+
+void CClientConfigDialog::onClickOK()
+{
+ saveChanges();
+ // Since we use the apply button's enabled state to check for unsaved changes on quit, we disable it
+ applyButton->setEnabled( false );
+ close();
+}
+
+void CClientConfigDialog::onClickApply()
+{
+ saveChanges();
+ applyButton->setEnabled( false );
+}
+
+void CClientConfigDialog::onClickDefault()
+{
+ CSystem::GetInstance().config.revertToDefault();
+ CSystem::GetInstance().config.save();
+ reloadPages();
+ applyButton->setEnabled( false );
+}
+
+void CClientConfigDialog::onClickPlay()
+{
+ bool started = false;
+
+#ifdef WIN32
+ started = QProcess::startDetached( "ryzom_client_r.exe" );
+ if( !started )
+ QProcess::startDetached( "ryzom_client_rd.exe" );
+ if( !started )
+ QProcess::startDetached( "ryzom_client_d.exe" );
+#else
+ started = QProcess::startDetached( "./ryzom_client_r" );
+ if( !started )
+ QProcess::startDetached( "./ryzom_client_rd" );
+ if( !started )
+ QProcess::startDetached( "./ryzom_client_d" );
+#endif
+
+ onClickOK();
+}
+
+void CClientConfigDialog::onClickCategory( QTreeWidgetItem *item )
+{
+ if( item == NULL )
+ return;
+
+ static const char *iconNames[] =
+ {
+ ":/resources/general_icon.bmp",
+ ":/resources/display_icon.bmp",
+ ":/resources/display_properties_icon.bmp",
+ ":/resources/display_config_icon.bmp",
+ ":/resources/sound_icon.bmp",
+ ":/resources/general_icon.bmp",
+ ":/resources/card_icon.bmp",
+ ":/resources/card_icon.bmp"
+ };
+
+ sint32 index = item->data( 0, Qt::UserRole ).toInt();
+
+ if( ( index < 0 ) || ( index > 7 ) )
+ return;
+
+ CategoryStackedWidget->setCurrentIndex( index );
+ categoryLabel->setText( item->text( 0 ) );
+ topleftIcon->setPixmap( QPixmap( QString::fromUtf8( iconNames[ index ] ) ) );
+}
+
+void CClientConfigDialog::onSomethingChanged()
+{
+ applyButton->setEnabled( true );
+}
+
+void CClientConfigDialog::saveChanges()
+{
+ // First we tell the pages to save their changes into the cached config file
+ for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
+ {
+ QWidget *w = CategoryStackedWidget->widget( i );
+ CWidgetBase *wb = qobject_cast< CWidgetBase * >( w );
+
+ // The system information pages are not derived from CWidgetBase, so they can't save!
+ if( wb == NULL )
+ continue;
+
+ wb->save();
+ }
+
+ // Then we write the cache to the disk
+ CSystem::GetInstance().config.save();
+}
+
+void CClientConfigDialog::reloadPages()
+{
+ for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
+ {
+ QWidget *w = CategoryStackedWidget->widget( i );
+ CWidgetBase *wb = qobject_cast< CWidgetBase * >( w );
+
+ // The system information pages are not derived from CWidgetBase, so they can't load!
+ if( wb == NULL )
+ continue;
+
+ wb->load();
+ }
+}
+
+bool CClientConfigDialog::isOKToQuit()
+{
+ // If the apply button is enabled we have unsaved changes
+ if( applyButton->isEnabled() )
+ {
+ sint32 r = QMessageBox::warning(
+ this,
+ tr( "Ryzom configuration" ),
+ tr( "Are you sure you want to quit without saving the configuration?" ),
+ QMessageBox::Yes | QMessageBox::No
+ );
+
+ if( r == QMessageBox::No )
+ return false;
+ }
+
+ return true;
+}
+
diff --git a/code/ryzom/tools/client/client_config_qt/client_config_dialog.h b/code/ryzom/tools/client/client_config_qt/client_config_dialog.h
index f4902b3f3..d9855afc0 100644
--- a/code/ryzom/tools/client/client_config_qt/client_config_dialog.h
+++ b/code/ryzom/tools/client/client_config_qt/client_config_dialog.h
@@ -1,67 +1,67 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef CLIENT_CONFIG_DIALOG_H
-#define CLIENT_CONFIG_DIALOG_H
-
-#include "ui_client_config_dialog.h"
-
-/**
- @brief The main dialog of the configuration tool
- @details Sets up and controls the configuration pages, sets up navigation,
- sets up the ok, cancel, apply, etc buttons.
-*/
-class CClientConfigDialog : public QDialog, public Ui::client_config_dialog
-{
- Q_OBJECT
-
-public:
- CClientConfigDialog( QWidget *parent = NULL );
- ~CClientConfigDialog();
-
-protected:
- void closeEvent( QCloseEvent *event );
- void changeEvent( QEvent *event );
-
-private slots:
- //////////////////////////// Main dialog buttons /////////////////////
- void onClickOK();
- void onClickApply();
- void onClickDefault();
- void onClickPlay();
- //////////////////////////////////////////////////////////////////////
- void onClickCategory( QTreeWidgetItem *item );
- void onSomethingChanged();
-
-private:
- /**
- @brief Tells the config pages to save their changes into the config file
- */
- void saveChanges();
-
- /**
- @brief Reloads the pages' contents from the config file.
- */
- void reloadPages();
-
- /**
- @brief Checks if it's OK to quit the application, may query the user
- @return Returns true if it's OK to quit, returns false otherwise.
- */
- bool isOKToQuit();
-};
-
-#endif // CLIENT_CONFIG_DIALOG_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef CLIENT_CONFIG_DIALOG_H
+#define CLIENT_CONFIG_DIALOG_H
+
+#include "ui_client_config_dialog.h"
+
+/**
+ @brief The main dialog of the configuration tool
+ @details Sets up and controls the configuration pages, sets up navigation,
+ sets up the ok, cancel, apply, etc buttons.
+*/
+class CClientConfigDialog : public QDialog, public Ui::client_config_dialog
+{
+ Q_OBJECT
+
+public:
+ CClientConfigDialog( QWidget *parent = NULL );
+ ~CClientConfigDialog();
+
+protected:
+ void closeEvent( QCloseEvent *event );
+ void changeEvent( QEvent *event );
+
+private slots:
+ //////////////////////////// Main dialog buttons /////////////////////
+ void onClickOK();
+ void onClickApply();
+ void onClickDefault();
+ void onClickPlay();
+ //////////////////////////////////////////////////////////////////////
+ void onClickCategory( QTreeWidgetItem *item );
+ void onSomethingChanged();
+
+private:
+ /**
+ @brief Tells the config pages to save their changes into the config file
+ */
+ void saveChanges();
+
+ /**
+ @brief Reloads the pages' contents from the config file.
+ */
+ void reloadPages();
+
+ /**
+ @brief Checks if it's OK to quit the application, may query the user
+ @return Returns true if it's OK to quit, returns false otherwise.
+ */
+ bool isOKToQuit();
+};
+
+#endif // CLIENT_CONFIG_DIALOG_H
diff --git a/code/ryzom/tools/client/client_config_qt/config.cpp b/code/ryzom/tools/client/client_config_qt/config.cpp
index f215a87ff..93a757b27 100644
--- a/code/ryzom/tools/client/client_config_qt/config.cpp
+++ b/code/ryzom/tools/client/client_config_qt/config.cpp
@@ -1,255 +1,255 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "Config.h"
-
-CConfig::CConfig()
-{
-}
-
-CConfig::~CConfig()
-{
-}
-
-bool CConfig::load( const char *fileName )
-{
- try
- {
- cf.load( fileName );
-
- std::string def = getString( "RootConfigFilename" );
- if( def.compare( "" ) != 0 )
- dcf.load( def );
- }
- catch( NLMISC::Exception &e )
- {
- nlwarning( "%s", e.what() );
- return false;
- }
-
- return true;
-}
-
-bool CConfig::reload()
-{
- try
- {
- cf.clear();
- cf.reparse();
- }
- catch( NLMISC::Exception &e )
- {
- nlwarning( "%s", e.what() );
- return false;
- }
- return true;
-}
-
-void CConfig::revertToDefault()
-{
- // If there's no default config, all we can do is revert the current changes
- if( !dcf.loaded() )
- {
- reload();
- return;
- }
-
- // If there is a default config, we can however revert to the default!
- // Code taken from the original config tool
- uint32 count = cf.getNumVar();
- uint32 i = 0;
- for( i = 0; i < count; i++ )
- {
- NLMISC::CConfigFile::CVar *dst = cf.getVar( i );
-
- // Comment from the original
- // Temp: avoid changing this variable (debug: binded to the actual texture set installed)
- if( dst->Name.compare( "HDTextureInstalled" ) == 0 )
- continue;
-
- NLMISC::CConfigFile::CVar *src = dcf.getVarPtr( dst->Name );
- if( ( src != NULL ) && !dst->Root &&
- ( ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) ||
- ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) ||
- ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) ||
- ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) ||
- ( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_STRING ) ) )
- {
-
- if( src->Type == NLMISC::CConfigFile::CVar::T_INT )
- {
- setInt( src->Name.c_str(), src->asInt() );
- }
- else if( src->Type == NLMISC::CConfigFile::CVar::T_REAL )
- {
- setFloat( src->Name.c_str(), src->asFloat() );
- }
- else if( src->Type == NLMISC::CConfigFile::CVar::T_STRING )
- {
- setString( src->Name.c_str(), src->asString() );
- }
- }
- }
-}
-
-bool CConfig::save()
-{
- try
- {
- cf.save();
- }
- catch( NLMISC::Exception &e )
- {
- nlwarning( "%s", e.what() );
- return false;
- }
- return true;
-}
-
-bool CConfig::getBool( const char *key )
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- return var->asBool();
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- return false;
- }
-}
-
-sint32 CConfig::getInt( const char *key )
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- return var->asInt();
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- return 0;
- }
-}
-
-float CConfig::getFloat( const char *key )
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- return var->asFloat();
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- return 0.0f;
- }
-}
-
-std::string CConfig::getString( const char *key )
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- return var->asString();
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- return "";
- }
-}
-
-void CConfig::setBool( const char *key, bool value )
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- if( var->Type == NLMISC::CConfigFile::CVar::T_BOOL )
- {
- if( value )
- var->setAsString( "true" );
- else
- var->setAsString( "false" );
- }
- else
- {
- nlwarning( "Key %s in %s is not a boolean.", key, cf.getFilename().c_str() );
- }
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- }
-}
-
-void CConfig::setInt(const char *key, sint32 value)
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- if( var->Type == NLMISC::CConfigFile::CVar::T_INT )
- var->setAsInt( value );
- else
- nlwarning( "Key %s in %s is not an integer.", key, cf.getFilename().c_str() );
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- }
-}
-
-void CConfig::setFloat( const char *key, float value )
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- if( var->Type == NLMISC::CConfigFile::CVar::T_REAL )
- var->setAsFloat( value );
- else
- nlwarning( "Key %s in %s is not a float.", key, cf.getFilename().c_str() );
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- }
-}
-
-void CConfig::setString( const char *key, std::string &value )
-{
- NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
-
- if( var != NULL )
- {
- if( var->Type == NLMISC::CConfigFile::CVar::T_STRING )
- var->setAsString( value );
- else
- nlwarning( "Key %s in %s is not a string.", key, cf.getFilename().c_str() );
- }
- else
- {
- nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
- }
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "Config.h"
+
+CConfig::CConfig()
+{
+}
+
+CConfig::~CConfig()
+{
+}
+
+bool CConfig::load( const char *fileName )
+{
+ try
+ {
+ cf.load( fileName );
+
+ std::string def = getString( "RootConfigFilename" );
+ if( def.compare( "" ) != 0 )
+ dcf.load( def );
+ }
+ catch( NLMISC::Exception &e )
+ {
+ nlwarning( "%s", e.what() );
+ return false;
+ }
+
+ return true;
+}
+
+bool CConfig::reload()
+{
+ try
+ {
+ cf.clear();
+ cf.reparse();
+ }
+ catch( NLMISC::Exception &e )
+ {
+ nlwarning( "%s", e.what() );
+ return false;
+ }
+ return true;
+}
+
+void CConfig::revertToDefault()
+{
+ // If there's no default config, all we can do is revert the current changes
+ if( !dcf.loaded() )
+ {
+ reload();
+ return;
+ }
+
+ // If there is a default config, we can however revert to the default!
+ // Code taken from the original config tool
+ uint32 count = cf.getNumVar();
+ uint32 i = 0;
+ for( i = 0; i < count; i++ )
+ {
+ NLMISC::CConfigFile::CVar *dst = cf.getVar( i );
+
+ // Comment from the original
+ // Temp: avoid changing this variable (debug: binded to the actual texture set installed)
+ if( dst->Name.compare( "HDTextureInstalled" ) == 0 )
+ continue;
+
+ NLMISC::CConfigFile::CVar *src = dcf.getVarPtr( dst->Name );
+ if( ( src != NULL ) && !dst->Root &&
+ ( ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) ||
+ ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) ||
+ ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) ||
+ ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) ||
+ ( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_STRING ) ) )
+ {
+
+ if( src->Type == NLMISC::CConfigFile::CVar::T_INT )
+ {
+ setInt( src->Name.c_str(), src->asInt() );
+ }
+ else if( src->Type == NLMISC::CConfigFile::CVar::T_REAL )
+ {
+ setFloat( src->Name.c_str(), src->asFloat() );
+ }
+ else if( src->Type == NLMISC::CConfigFile::CVar::T_STRING )
+ {
+ setString( src->Name.c_str(), src->asString() );
+ }
+ }
+ }
+}
+
+bool CConfig::save()
+{
+ try
+ {
+ cf.save();
+ }
+ catch( NLMISC::Exception &e )
+ {
+ nlwarning( "%s", e.what() );
+ return false;
+ }
+ return true;
+}
+
+bool CConfig::getBool( const char *key )
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ return var->asBool();
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ return false;
+ }
+}
+
+sint32 CConfig::getInt( const char *key )
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ return var->asInt();
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ return 0;
+ }
+}
+
+float CConfig::getFloat( const char *key )
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ return var->asFloat();
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ return 0.0f;
+ }
+}
+
+std::string CConfig::getString( const char *key )
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ return var->asString();
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ return "";
+ }
+}
+
+void CConfig::setBool( const char *key, bool value )
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ if( var->Type == NLMISC::CConfigFile::CVar::T_BOOL )
+ {
+ if( value )
+ var->setAsString( "true" );
+ else
+ var->setAsString( "false" );
+ }
+ else
+ {
+ nlwarning( "Key %s in %s is not a boolean.", key, cf.getFilename().c_str() );
+ }
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ }
+}
+
+void CConfig::setInt(const char *key, sint32 value)
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ if( var->Type == NLMISC::CConfigFile::CVar::T_INT )
+ var->setAsInt( value );
+ else
+ nlwarning( "Key %s in %s is not an integer.", key, cf.getFilename().c_str() );
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ }
+}
+
+void CConfig::setFloat( const char *key, float value )
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ if( var->Type == NLMISC::CConfigFile::CVar::T_REAL )
+ var->setAsFloat( value );
+ else
+ nlwarning( "Key %s in %s is not a float.", key, cf.getFilename().c_str() );
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ }
+}
+
+void CConfig::setString( const char *key, std::string &value )
+{
+ NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
+
+ if( var != NULL )
+ {
+ if( var->Type == NLMISC::CConfigFile::CVar::T_STRING )
+ var->setAsString( value );
+ else
+ nlwarning( "Key %s in %s is not a string.", key, cf.getFilename().c_str() );
+ }
+ else
+ {
+ nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
+ }
}
\ No newline at end of file
diff --git a/code/ryzom/tools/client/client_config_qt/config.h b/code/ryzom/tools/client/client_config_qt/config.h
index 7749b41b1..df48e19e0 100644
--- a/code/ryzom/tools/client/client_config_qt/config.h
+++ b/code/ryzom/tools/client/client_config_qt/config.h
@@ -1,120 +1,120 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include
-
-/**
- @brief Wrapper for a Ryzom config file, allows setting and querying values.
-*/
-class CConfig
-{
-public:
- CConfig();
- ~CConfig();
-
- /**
- @brief Loads a config file.
- @param fileName - The file to load
- @return Returns true on success, returns false on failure.
- */
- bool load( const char *fileName );
-
- /**
- @brief Reloads the contents of the config file
- @return Return true on success, returns false on failure.
- */
- bool reload();
-
- /**
- @brief Reverts the config file to the default
- @details Reverts the config file to the default if possible.
- If there is no default config, it reverts the current changes only.
- */
- void revertToDefault();
-
- /**
- @brief Saves the configuration to the config file.
- @return Returns true on success, returns false on failure.
- */
- bool save();
-
- /**
- @brief Queries the value for the specified key.
- @param key - The key we are interested in
- @return Returns the value as a bool, returns false if the key doesn't exist.
- */
- bool getBool( const char *key );
-
- /**
- @brief Queries the value for the specified key.
- @param key - The key we are interested in
- @return Returns the value as an integer, returns 0 if the key doesn't exist.
- */
- sint32 getInt( const char *key );
-
- /**
- @brief Queries the value for the specified key.
- @param key - The key we are interested in
- @return Returns the value as a float, returns 0.0f if the key doesn't exist.
- */
- float getFloat( const char *key );
-
- /**
- @brief Queries the value for the specified key.
- @param key - The key we are interested in
- @return Returns the value as a std::string, returns an empty string if the key doesn't exist.
- */
- std::string getString( const char *key );
-
- /**
- @brief Sets the specified key to the specified value.
- @param key - the key we want to alter
- @param value - the value we want to set
- */
- void setBool( const char *key, bool value );
-
- /**
- @brief Sets the specified key to the specified value.
- @param key - the key we want to alter
- @param value - the value we want to set
- */
- void setInt( const char *key, sint32 value );
-
- /**
- @brief Sets the specified key to the specified value.
- @param key - the key we want to alter
- @param value - the value we want to set
- */
- void setFloat( const char *key, float value );
-
- /**
- @brief Sets the specified key to the specified value.
- @param key - the key we want to alter
- @param value - the value we want to set
- */
- void setString( const char *key, std::string &value );
-
-private:
- // config file
- NLMISC::CConfigFile cf;
- // default config file
- NLMISC::CConfigFile dcf;
-};
-
-#endif
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include
+
+/**
+ @brief Wrapper for a Ryzom config file, allows setting and querying values.
+*/
+class CConfig
+{
+public:
+ CConfig();
+ ~CConfig();
+
+ /**
+ @brief Loads a config file.
+ @param fileName - The file to load
+ @return Returns true on success, returns false on failure.
+ */
+ bool load( const char *fileName );
+
+ /**
+ @brief Reloads the contents of the config file
+ @return Return true on success, returns false on failure.
+ */
+ bool reload();
+
+ /**
+ @brief Reverts the config file to the default
+ @details Reverts the config file to the default if possible.
+ If there is no default config, it reverts the current changes only.
+ */
+ void revertToDefault();
+
+ /**
+ @brief Saves the configuration to the config file.
+ @return Returns true on success, returns false on failure.
+ */
+ bool save();
+
+ /**
+ @brief Queries the value for the specified key.
+ @param key - The key we are interested in
+ @return Returns the value as a bool, returns false if the key doesn't exist.
+ */
+ bool getBool( const char *key );
+
+ /**
+ @brief Queries the value for the specified key.
+ @param key - The key we are interested in
+ @return Returns the value as an integer, returns 0 if the key doesn't exist.
+ */
+ sint32 getInt( const char *key );
+
+ /**
+ @brief Queries the value for the specified key.
+ @param key - The key we are interested in
+ @return Returns the value as a float, returns 0.0f if the key doesn't exist.
+ */
+ float getFloat( const char *key );
+
+ /**
+ @brief Queries the value for the specified key.
+ @param key - The key we are interested in
+ @return Returns the value as a std::string, returns an empty string if the key doesn't exist.
+ */
+ std::string getString( const char *key );
+
+ /**
+ @brief Sets the specified key to the specified value.
+ @param key - the key we want to alter
+ @param value - the value we want to set
+ */
+ void setBool( const char *key, bool value );
+
+ /**
+ @brief Sets the specified key to the specified value.
+ @param key - the key we want to alter
+ @param value - the value we want to set
+ */
+ void setInt( const char *key, sint32 value );
+
+ /**
+ @brief Sets the specified key to the specified value.
+ @param key - the key we want to alter
+ @param value - the value we want to set
+ */
+ void setFloat( const char *key, float value );
+
+ /**
+ @brief Sets the specified key to the specified value.
+ @param key - the key we want to alter
+ @param value - the value we want to set
+ */
+ void setString( const char *key, std::string &value );
+
+private:
+ // config file
+ NLMISC::CConfigFile cf;
+ // default config file
+ NLMISC::CConfigFile dcf;
+};
+
+#endif
diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp
index 7f324f40c..211a4911b 100644
--- a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp
+++ b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp
@@ -1,86 +1,86 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "display_settings_advanced_widget.h"
-#include "system.h"
-
-CDisplaySettingsAdvancedWidget::CDisplaySettingsAdvancedWidget( QWidget *parent ) :
- CWidgetBase( parent )
-{
- setupUi( this );
- load();
-
- connect( texcompressionCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( vertexshaderCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( verticesagpCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( pixelshadersCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
-}
-
-CDisplaySettingsAdvancedWidget::~CDisplaySettingsAdvancedWidget()
-{
-}
-
-void CDisplaySettingsAdvancedWidget::load()
-{
- CSystem &s = CSystem::GetInstance();
-
- if( s.config.getInt( "ForceDXTC" ) == 1 )
- texcompressionCheckBox->setChecked( true );
-
- if( s.config.getInt( "DisableVtxProgram" ) == 1 )
- vertexshaderCheckBox->setChecked( true );
-
- if( s.config.getInt( "DisableVtxAGP" ) == 1 )
- verticesagpCheckBox->setChecked( true );
-
- if( s.config.getInt( "DisableTextureShdr" ) == 1 )
- pixelshadersCheckBox->setChecked( true );
-}
-
-void CDisplaySettingsAdvancedWidget::save()
-{
- CSystem &s = CSystem::GetInstance();
-
- if( texcompressionCheckBox->isChecked() )
- s.config.setInt( "ForceDXTC", 1 );
- else
- s.config.setInt( "ForceDXTC", 0 );
-
- if( vertexshaderCheckBox->isChecked() )
- s.config.setInt( "DisableVtxProgram", 1 );
- else
- s.config.setInt( "DisableVtxProgram", 0 );
-
- if( verticesagpCheckBox->isChecked() )
- s.config.setInt( "DisableVtxAGP", 1 );
- else
- s.config.setInt( "DisableVtxAGP", 0 );
-
- if( pixelshadersCheckBox->isChecked() )
- s.config.setInt( "DisableTextureShdr", 1 );
- else
- s.config.setInt( "DisableTextureShdr", 0 );
-}
-
-void CDisplaySettingsAdvancedWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- retranslateUi( this );
- }
-
- QWidget::changeEvent( event );
-}
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "display_settings_advanced_widget.h"
+#include "system.h"
+
+CDisplaySettingsAdvancedWidget::CDisplaySettingsAdvancedWidget( QWidget *parent ) :
+ CWidgetBase( parent )
+{
+ setupUi( this );
+ load();
+
+ connect( texcompressionCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( vertexshaderCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( verticesagpCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( pixelshadersCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+}
+
+CDisplaySettingsAdvancedWidget::~CDisplaySettingsAdvancedWidget()
+{
+}
+
+void CDisplaySettingsAdvancedWidget::load()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ if( s.config.getInt( "ForceDXTC" ) == 1 )
+ texcompressionCheckBox->setChecked( true );
+
+ if( s.config.getInt( "DisableVtxProgram" ) == 1 )
+ vertexshaderCheckBox->setChecked( true );
+
+ if( s.config.getInt( "DisableVtxAGP" ) == 1 )
+ verticesagpCheckBox->setChecked( true );
+
+ if( s.config.getInt( "DisableTextureShdr" ) == 1 )
+ pixelshadersCheckBox->setChecked( true );
+}
+
+void CDisplaySettingsAdvancedWidget::save()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ if( texcompressionCheckBox->isChecked() )
+ s.config.setInt( "ForceDXTC", 1 );
+ else
+ s.config.setInt( "ForceDXTC", 0 );
+
+ if( vertexshaderCheckBox->isChecked() )
+ s.config.setInt( "DisableVtxProgram", 1 );
+ else
+ s.config.setInt( "DisableVtxProgram", 0 );
+
+ if( verticesagpCheckBox->isChecked() )
+ s.config.setInt( "DisableVtxAGP", 1 );
+ else
+ s.config.setInt( "DisableVtxAGP", 0 );
+
+ if( pixelshadersCheckBox->isChecked() )
+ s.config.setInt( "DisableTextureShdr", 1 );
+ else
+ s.config.setInt( "DisableTextureShdr", 0 );
+}
+
+void CDisplaySettingsAdvancedWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ retranslateUi( this );
+ }
+
+ QWidget::changeEvent( event );
+}
diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h
index 92ca1775a..3f956f626 100644
--- a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h
@@ -1,41 +1,41 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef DISPLAYSETTINGSADVANCEDWIDGET_H
-#define DISPLAYSETTINGSADVANCEDWIDGET_H
-
-#include "ui_display_settings_advanced_widget.h"
-#include "widget_base.h"
-
-/**
- @brief The advanced display settings page of the configuration tool
-*/
-class CDisplaySettingsAdvancedWidget : public CWidgetBase, public Ui::display_settings_advanced_widget
-{
- Q_OBJECT
-public:
- CDisplaySettingsAdvancedWidget( QWidget *parent );
- ~CDisplaySettingsAdvancedWidget();
-
- void load();
- void save();
-
-protected:
- void changeEvent( QEvent *event );
-
-};
-
-#endif // DISPLAYSETTINGSADVANCEDWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef DISPLAYSETTINGSADVANCEDWIDGET_H
+#define DISPLAYSETTINGSADVANCEDWIDGET_H
+
+#include "ui_display_settings_advanced_widget.h"
+#include "widget_base.h"
+
+/**
+ @brief The advanced display settings page of the configuration tool
+*/
+class CDisplaySettingsAdvancedWidget : public CWidgetBase, public Ui::display_settings_advanced_widget
+{
+ Q_OBJECT
+public:
+ CDisplaySettingsAdvancedWidget( QWidget *parent );
+ ~CDisplaySettingsAdvancedWidget();
+
+ void load();
+ void save();
+
+protected:
+ void changeEvent( QEvent *event );
+
+};
+
+#endif // DISPLAYSETTINGSADVANCEDWIDGET_H
diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp
index fdc47d2bd..aeddcf628 100644
--- a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp
+++ b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp
@@ -1,268 +1,268 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "system.h"
-#include "display_settings_details_widget.h"
-
-CDisplaySettingsDetailsWidget::CDisplaySettingsDetailsWidget( QWidget *parent ) :
- CWidgetBase( parent )
-{
- setupUi( this );
- connect( landscapeSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onLandscapeSliderChange( int ) ) );
- connect( charactersSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onCharactersSliderChange( int ) ) );
- connect( fxSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onFXSliderChange( int ) ) );
- connect( texturesSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTexturesSliderChange( int ) ) );
- load();
-}
-
-CDisplaySettingsDetailsWidget::~CDisplaySettingsDetailsWidget()
-{
-}
-
-void CDisplaySettingsDetailsWidget::load()
-{
- CSystem &s = CSystem::GetInstance();
-
- landscapeSlider->setValue( getQuality( qualityToLandscapeThreshold, s.config.getFloat( "LandscapeThreshold" ) ) );
- landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToZFar, s.config.getFloat( "Vision" ) ) ) );
- landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToLandscapeTileNear, s.config.getFloat( "LandscapeTileNear" ) ) ) );
- landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToMicrovegetDensity, s.config.getFloat( "MicroVegetDensity" ) ) ) );
-
- charactersSlider->setValue( getQuality( qualityToSkinNbMaxPoly, s.config.getInt( "SkinNbMaxPoly" ) ) );
- charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToNbMaxSkeletonNotCLod, s.config.getInt( "NbMaxSkeletonNotCLod" ) ) ) );
- charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToCharacterFarClip, s.config.getFloat( "CharacterFarClip" ) ) ) );
-
- fxSlider->setValue( getQuality( qualityToFxNbMaxPoly, s.config.getInt( "FxNbMaxPoly" ) ) );
-
- int hdTextureInstalled = s.config.getInt( "HDTextureInstalled" );
- if( hdTextureInstalled == 1 )
- texturesSlider->setMaximum( QUALITY_NORMAL );
- else
- texturesSlider->setMaximum( QUALITY_MEDIUM );
-
- // Comment taken from the original config tool:
- // NB: if the player changes its client.cfg, mixing HDEntityTexture=1 and DivideTextureSizeBy2=1, it will
- // result to a low quality!
- if( s.config.getInt( "DivideTextureSizeBy2" ) )
- texturesSlider->setValue( QUALITY_LOW );
- else if( s.config.getInt( "HDEntityTexture" ) && ( hdTextureInstalled == 1 ) )
- texturesSlider->setValue( QUALITY_NORMAL );
- else
- texturesSlider->setValue( QUALITY_MEDIUM );
-}
-
-void CDisplaySettingsDetailsWidget::save()
-{
- CSystem &s = CSystem::GetInstance();
-
- s.config.setFloat( "Vision", qualityToZFar[ landscapeSlider->value() ] );
- s.config.setFloat( "LandscapeTileNear", qualityToLandscapeTileNear[ landscapeSlider->value() ] );
- s.config.setFloat( "LandscapeThreshold", qualityToLandscapeThreshold[ landscapeSlider->value() ] );
-
- if( landscapeSlider->value() > QUALITY_LOW )
- s.config.setInt( "MicroVeget", 1 );
- else
- s.config.setInt( "MicroVeget", 0 );
-
- s.config.setFloat( "MicroVegetDensity", qualityToMicrovegetDensity[ landscapeSlider->value() ] );
-
-
- s.config.setInt( "SkinNbMaxPoly", qualityToSkinNbMaxPoly[ charactersSlider->value() ] );
- s.config.setInt( "NbMaxSkeletonNotCLod", qualityToNbMaxSkeletonNotCLod[ charactersSlider->value() ] );
- s.config.setFloat( "CharacterFarClip", qualityToCharacterFarClip[ charactersSlider->value() ] );
-
-
- s.config.setInt( "FxNbMaxPoly", qualityToFxNbMaxPoly[ fxSlider->value() ] );
- if( fxSlider->value() > QUALITY_LOW )
- {
- s.config.setInt( "Shadows", 1 );
- s.config.setInt( "Bloom", 1 );
- s.config.setInt( "SquareBloom", 1 );
- }
- else
- {
- s.config.setInt( "Shadows", 0 );
- s.config.setInt( "Bloom", 0 );
- s.config.setInt( "SquareBloom", 0 );
- }
-
-
- if( texturesSlider->value() == QUALITY_NORMAL )
- s.config.setInt( "HDEntityTexture", 1 );
- else if( texturesSlider->value() == QUALITY_LOW )
- s.config.setInt( "DivideTextureSizeBy2", 1 );
-}
-
-void CDisplaySettingsDetailsWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- retranslateUi( this );
-
- landscapeLabel->setText( getQualityString( landscapeSlider->value() ) );
- characterLabel->setText( getQualityString( charactersSlider->value() ) );
- fxLabel->setText( getQualityString( fxSlider->value() ) );
- textureLabel->setText( getTextureQualityString( texturesSlider->value() ) );
- }
- QWidget::changeEvent( event );
-}
-
-
-void CDisplaySettingsDetailsWidget::onLandscapeSliderChange( int value )
-{
- if( ( value < 0 ) || ( value > 3 ) )
- return;
-
- landscapeLabel->setText( getQualityString( value ) );
- emit changed();
-}
-
-void CDisplaySettingsDetailsWidget::onCharactersSliderChange( int value )
-{
- if( ( value < 0 ) || ( value > 3 ) )
- return;
-
- characterLabel->setText( getQualityString( value ) );
- emit changed();
-}
-
-void CDisplaySettingsDetailsWidget::onFXSliderChange( int value )
-{
- if( ( value < 0 ) || ( value > 3 ) )
- return;
-
- fxLabel->setText( getQualityString( value ) );
- emit changed();
-}
-
-void CDisplaySettingsDetailsWidget::onTexturesSliderChange( int value )
-{
- if( ( value < 0 ) || ( value > 3 ) )
- return;
-
- textureLabel->setText( getTextureQualityString( value ) );
- emit changed();
-}
-
-const float CDisplaySettingsDetailsWidget::qualityToZFar[ QUALITY_STEP ] =
-{
- 200.0f,
- 400.0f,
- 500.0f,
- 800.0f
-};
-
-const float CDisplaySettingsDetailsWidget::qualityToLandscapeTileNear[ QUALITY_STEP ] =
-{
- 20.0f,
- 100.0f,
- 150.0f,
- 200.0f
-};
-
-const float CDisplaySettingsDetailsWidget::qualityToLandscapeThreshold[ QUALITY_STEP ] =
-{
- 100.0f,
- 1000.0f,
- 2000.0f,
- 3000.0f
-};
-
-
-const float CDisplaySettingsDetailsWidget::qualityToMicrovegetDensity[ QUALITY_STEP ] =
-{
- 10.0f,
- 30.0f,
- 80.0f,
- 100.0f
-};
-
-
-const sint32 CDisplaySettingsDetailsWidget::qualityToSkinNbMaxPoly[ QUALITY_STEP ] =
-{
- 10000,
- 70000,
- 100000,
- 200000
-};
-
-const sint32 CDisplaySettingsDetailsWidget::qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ] =
-{
- 10,
- 50,
- 125,
- 255
-};
-
-const float CDisplaySettingsDetailsWidget::qualityToCharacterFarClip[ QUALITY_STEP ] =
-{
- 50.0f,
- 100.0f,
- 200.0f,
- 500.0f
-};
-
-const sint32 CDisplaySettingsDetailsWidget::qualityToFxNbMaxPoly[ QUALITY_STEP ] =
-{
- 2000,
- 10000,
- 20000,
- 50000
-};
-
-QString CDisplaySettingsDetailsWidget::getQualityString( uint32 quality )
-{
- switch( quality )
- {
- case QUALITY_LOW:
- return tr( "Low" );
- break;
- case QUALITY_MEDIUM:
- return tr( "Medium" );
- break;
- case QUALITY_NORMAL:
- return tr( "Normal" );
- break;
- case QUALITY_HIGH:
- return tr( "High" );
- break;
- default:
- return "";
- break;
- }
-}
-
-QString CDisplaySettingsDetailsWidget::getTextureQualityString( uint32 quality )
-{
- switch( quality )
- {
- case TEXQUALITY_LOW:
- return tr( "Low (32 MB)" );
- break;
-
- case TEXQUALITY_NORMAL:
- return tr( "Normal (64 MB)" );
- break;
-
- case TEXQUALITY_HIGH:
- return tr( "High (128 MB)" );
- break;
-
- default:
- return "";
- break;
- }
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "system.h"
+#include "display_settings_details_widget.h"
+
+CDisplaySettingsDetailsWidget::CDisplaySettingsDetailsWidget( QWidget *parent ) :
+ CWidgetBase( parent )
+{
+ setupUi( this );
+ connect( landscapeSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onLandscapeSliderChange( int ) ) );
+ connect( charactersSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onCharactersSliderChange( int ) ) );
+ connect( fxSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onFXSliderChange( int ) ) );
+ connect( texturesSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTexturesSliderChange( int ) ) );
+ load();
+}
+
+CDisplaySettingsDetailsWidget::~CDisplaySettingsDetailsWidget()
+{
+}
+
+void CDisplaySettingsDetailsWidget::load()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ landscapeSlider->setValue( getQuality( qualityToLandscapeThreshold, s.config.getFloat( "LandscapeThreshold" ) ) );
+ landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToZFar, s.config.getFloat( "Vision" ) ) ) );
+ landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToLandscapeTileNear, s.config.getFloat( "LandscapeTileNear" ) ) ) );
+ landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToMicrovegetDensity, s.config.getFloat( "MicroVegetDensity" ) ) ) );
+
+ charactersSlider->setValue( getQuality( qualityToSkinNbMaxPoly, s.config.getInt( "SkinNbMaxPoly" ) ) );
+ charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToNbMaxSkeletonNotCLod, s.config.getInt( "NbMaxSkeletonNotCLod" ) ) ) );
+ charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToCharacterFarClip, s.config.getFloat( "CharacterFarClip" ) ) ) );
+
+ fxSlider->setValue( getQuality( qualityToFxNbMaxPoly, s.config.getInt( "FxNbMaxPoly" ) ) );
+
+ int hdTextureInstalled = s.config.getInt( "HDTextureInstalled" );
+ if( hdTextureInstalled == 1 )
+ texturesSlider->setMaximum( QUALITY_NORMAL );
+ else
+ texturesSlider->setMaximum( QUALITY_MEDIUM );
+
+ // Comment taken from the original config tool:
+ // NB: if the player changes its client.cfg, mixing HDEntityTexture=1 and DivideTextureSizeBy2=1, it will
+ // result to a low quality!
+ if( s.config.getInt( "DivideTextureSizeBy2" ) )
+ texturesSlider->setValue( QUALITY_LOW );
+ else if( s.config.getInt( "HDEntityTexture" ) && ( hdTextureInstalled == 1 ) )
+ texturesSlider->setValue( QUALITY_NORMAL );
+ else
+ texturesSlider->setValue( QUALITY_MEDIUM );
+}
+
+void CDisplaySettingsDetailsWidget::save()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ s.config.setFloat( "Vision", qualityToZFar[ landscapeSlider->value() ] );
+ s.config.setFloat( "LandscapeTileNear", qualityToLandscapeTileNear[ landscapeSlider->value() ] );
+ s.config.setFloat( "LandscapeThreshold", qualityToLandscapeThreshold[ landscapeSlider->value() ] );
+
+ if( landscapeSlider->value() > QUALITY_LOW )
+ s.config.setInt( "MicroVeget", 1 );
+ else
+ s.config.setInt( "MicroVeget", 0 );
+
+ s.config.setFloat( "MicroVegetDensity", qualityToMicrovegetDensity[ landscapeSlider->value() ] );
+
+
+ s.config.setInt( "SkinNbMaxPoly", qualityToSkinNbMaxPoly[ charactersSlider->value() ] );
+ s.config.setInt( "NbMaxSkeletonNotCLod", qualityToNbMaxSkeletonNotCLod[ charactersSlider->value() ] );
+ s.config.setFloat( "CharacterFarClip", qualityToCharacterFarClip[ charactersSlider->value() ] );
+
+
+ s.config.setInt( "FxNbMaxPoly", qualityToFxNbMaxPoly[ fxSlider->value() ] );
+ if( fxSlider->value() > QUALITY_LOW )
+ {
+ s.config.setInt( "Shadows", 1 );
+ s.config.setInt( "Bloom", 1 );
+ s.config.setInt( "SquareBloom", 1 );
+ }
+ else
+ {
+ s.config.setInt( "Shadows", 0 );
+ s.config.setInt( "Bloom", 0 );
+ s.config.setInt( "SquareBloom", 0 );
+ }
+
+
+ if( texturesSlider->value() == QUALITY_NORMAL )
+ s.config.setInt( "HDEntityTexture", 1 );
+ else if( texturesSlider->value() == QUALITY_LOW )
+ s.config.setInt( "DivideTextureSizeBy2", 1 );
+}
+
+void CDisplaySettingsDetailsWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ retranslateUi( this );
+
+ landscapeLabel->setText( getQualityString( landscapeSlider->value() ) );
+ characterLabel->setText( getQualityString( charactersSlider->value() ) );
+ fxLabel->setText( getQualityString( fxSlider->value() ) );
+ textureLabel->setText( getTextureQualityString( texturesSlider->value() ) );
+ }
+ QWidget::changeEvent( event );
+}
+
+
+void CDisplaySettingsDetailsWidget::onLandscapeSliderChange( int value )
+{
+ if( ( value < 0 ) || ( value > 3 ) )
+ return;
+
+ landscapeLabel->setText( getQualityString( value ) );
+ emit changed();
+}
+
+void CDisplaySettingsDetailsWidget::onCharactersSliderChange( int value )
+{
+ if( ( value < 0 ) || ( value > 3 ) )
+ return;
+
+ characterLabel->setText( getQualityString( value ) );
+ emit changed();
+}
+
+void CDisplaySettingsDetailsWidget::onFXSliderChange( int value )
+{
+ if( ( value < 0 ) || ( value > 3 ) )
+ return;
+
+ fxLabel->setText( getQualityString( value ) );
+ emit changed();
+}
+
+void CDisplaySettingsDetailsWidget::onTexturesSliderChange( int value )
+{
+ if( ( value < 0 ) || ( value > 3 ) )
+ return;
+
+ textureLabel->setText( getTextureQualityString( value ) );
+ emit changed();
+}
+
+const float CDisplaySettingsDetailsWidget::qualityToZFar[ QUALITY_STEP ] =
+{
+ 200.0f,
+ 400.0f,
+ 500.0f,
+ 800.0f
+};
+
+const float CDisplaySettingsDetailsWidget::qualityToLandscapeTileNear[ QUALITY_STEP ] =
+{
+ 20.0f,
+ 100.0f,
+ 150.0f,
+ 200.0f
+};
+
+const float CDisplaySettingsDetailsWidget::qualityToLandscapeThreshold[ QUALITY_STEP ] =
+{
+ 100.0f,
+ 1000.0f,
+ 2000.0f,
+ 3000.0f
+};
+
+
+const float CDisplaySettingsDetailsWidget::qualityToMicrovegetDensity[ QUALITY_STEP ] =
+{
+ 10.0f,
+ 30.0f,
+ 80.0f,
+ 100.0f
+};
+
+
+const sint32 CDisplaySettingsDetailsWidget::qualityToSkinNbMaxPoly[ QUALITY_STEP ] =
+{
+ 10000,
+ 70000,
+ 100000,
+ 200000
+};
+
+const sint32 CDisplaySettingsDetailsWidget::qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ] =
+{
+ 10,
+ 50,
+ 125,
+ 255
+};
+
+const float CDisplaySettingsDetailsWidget::qualityToCharacterFarClip[ QUALITY_STEP ] =
+{
+ 50.0f,
+ 100.0f,
+ 200.0f,
+ 500.0f
+};
+
+const sint32 CDisplaySettingsDetailsWidget::qualityToFxNbMaxPoly[ QUALITY_STEP ] =
+{
+ 2000,
+ 10000,
+ 20000,
+ 50000
+};
+
+QString CDisplaySettingsDetailsWidget::getQualityString( uint32 quality )
+{
+ switch( quality )
+ {
+ case QUALITY_LOW:
+ return tr( "Low" );
+ break;
+ case QUALITY_MEDIUM:
+ return tr( "Medium" );
+ break;
+ case QUALITY_NORMAL:
+ return tr( "Normal" );
+ break;
+ case QUALITY_HIGH:
+ return tr( "High" );
+ break;
+ default:
+ return "";
+ break;
+ }
+}
+
+QString CDisplaySettingsDetailsWidget::getTextureQualityString( uint32 quality )
+{
+ switch( quality )
+ {
+ case TEXQUALITY_LOW:
+ return tr( "Low (32 MB)" );
+ break;
+
+ case TEXQUALITY_NORMAL:
+ return tr( "Normal (64 MB)" );
+ break;
+
+ case TEXQUALITY_HIGH:
+ return tr( "High (128 MB)" );
+ break;
+
+ default:
+ return "";
+ break;
+ }
}
\ No newline at end of file
diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h
index 535c3710c..001189432 100644
--- a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h
@@ -1,121 +1,121 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef DISPLAYSETTINGSDETAILSWIDGET_H
-#define DISPLAYSETTINGSDETAILSWIDGET_H
-
-#include "ui_display_settings_details_widget.h"
-#include "widget_base.h"
-#include
-
-enum
-{
- QUALITY_LOW = 0,
- QUALITY_MEDIUM = 1,
- QUALITY_NORMAL = 2,
- QUALITY_HIGH = 3,
- QUALITY_STEP = 4
-};
-
-enum
-{
- TEXQUALITY_LOW = 0,
- TEXQUALITY_NORMAL = 1,
- TEXQUALITY_HIGH = 2
-};
-
-/**
- @brief The display details page of the configuration tool
-*/
-class CDisplaySettingsDetailsWidget : public CWidgetBase, public Ui::display_settings_details_widget
-{
- Q_OBJECT
-public:
- CDisplaySettingsDetailsWidget( QWidget *parent = NULL );
- ~CDisplaySettingsDetailsWidget();
-
- void load();
- void save();
-
-protected:
- void changeEvent( QEvent *event );
-
-private slots:
- void onLandscapeSliderChange( int value );
- void onCharactersSliderChange( int value );
- void onFXSliderChange( int value );
- void onTexturesSliderChange( int value );
-
-private:
- /**
- @brief Looks up and returns the "quality" ( see the enums on the top), that belongs to the specified value.
- @param table - The lookup table you want to use.
- @param value - The value that we want to look up.
- @return Returns the "quality" that best fits the specified value.
- */
- template< typename T >
- int getQuality( const T *table, T value )
- {
- if( table[ 0 ] < table[ QUALITY_STEP - 1 ] )
- {
- uint32 i = 0;
- while( ( i < QUALITY_STEP ) && ( table[ i ] < value ) )
- i++;
- return i;
- }
- else
- {
- uint32 i = 0;
- while( ( i < QUALITY_STEP ) && ( table[ i ] > value ) )
- i++;
- return i;
- }
- }
-
-
- /**
- @brief Retrieves the string that belongs to the specified quality.
- @param quality - The quality value
- @return Returns a string describing the quality value, Returns an empty string if an invalid value is specified.
- */
- static QString getQualityString( uint32 quality );
-
-
- /**
- @brief Retrieves the string that belongs to the specified texture quality.
- @param quality - The texture quality value
- @return Returns a string describing the texture quality, Returns an empty string if an invalid value is specified.
- */
- static QString getTextureQualityString( uint32 quality );
-
-
- ///////////////////////// Landscape values ///////////////////////
- static const float qualityToZFar[ QUALITY_STEP ];
- static const float qualityToLandscapeTileNear[ QUALITY_STEP ];
- static const float qualityToLandscapeThreshold[ QUALITY_STEP ];
- static const float qualityToMicrovegetDensity[ QUALITY_STEP ];
-
- //////////////////////// Character values ////////////////////////
- static const sint32 qualityToSkinNbMaxPoly[ QUALITY_STEP ];
- static const sint32 qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ];
- static const float qualityToCharacterFarClip[ QUALITY_STEP ];
-
- /////////////////////// FX values ////////////////////////////////
- static const sint32 qualityToFxNbMaxPoly[ QUALITY_STEP ];
-
-};
-
-#endif // DISPLAYSETTINGSDETAILSWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef DISPLAYSETTINGSDETAILSWIDGET_H
+#define DISPLAYSETTINGSDETAILSWIDGET_H
+
+#include "ui_display_settings_details_widget.h"
+#include "widget_base.h"
+#include
+
+enum
+{
+ QUALITY_LOW = 0,
+ QUALITY_MEDIUM = 1,
+ QUALITY_NORMAL = 2,
+ QUALITY_HIGH = 3,
+ QUALITY_STEP = 4
+};
+
+enum
+{
+ TEXQUALITY_LOW = 0,
+ TEXQUALITY_NORMAL = 1,
+ TEXQUALITY_HIGH = 2
+};
+
+/**
+ @brief The display details page of the configuration tool
+*/
+class CDisplaySettingsDetailsWidget : public CWidgetBase, public Ui::display_settings_details_widget
+{
+ Q_OBJECT
+public:
+ CDisplaySettingsDetailsWidget( QWidget *parent = NULL );
+ ~CDisplaySettingsDetailsWidget();
+
+ void load();
+ void save();
+
+protected:
+ void changeEvent( QEvent *event );
+
+private slots:
+ void onLandscapeSliderChange( int value );
+ void onCharactersSliderChange( int value );
+ void onFXSliderChange( int value );
+ void onTexturesSliderChange( int value );
+
+private:
+ /**
+ @brief Looks up and returns the "quality" ( see the enums on the top), that belongs to the specified value.
+ @param table - The lookup table you want to use.
+ @param value - The value that we want to look up.
+ @return Returns the "quality" that best fits the specified value.
+ */
+ template< typename T >
+ int getQuality( const T *table, T value )
+ {
+ if( table[ 0 ] < table[ QUALITY_STEP - 1 ] )
+ {
+ uint32 i = 0;
+ while( ( i < QUALITY_STEP ) && ( table[ i ] < value ) )
+ i++;
+ return i;
+ }
+ else
+ {
+ uint32 i = 0;
+ while( ( i < QUALITY_STEP ) && ( table[ i ] > value ) )
+ i++;
+ return i;
+ }
+ }
+
+
+ /**
+ @brief Retrieves the string that belongs to the specified quality.
+ @param quality - The quality value
+ @return Returns a string describing the quality value, Returns an empty string if an invalid value is specified.
+ */
+ static QString getQualityString( uint32 quality );
+
+
+ /**
+ @brief Retrieves the string that belongs to the specified texture quality.
+ @param quality - The texture quality value
+ @return Returns a string describing the texture quality, Returns an empty string if an invalid value is specified.
+ */
+ static QString getTextureQualityString( uint32 quality );
+
+
+ ///////////////////////// Landscape values ///////////////////////
+ static const float qualityToZFar[ QUALITY_STEP ];
+ static const float qualityToLandscapeTileNear[ QUALITY_STEP ];
+ static const float qualityToLandscapeThreshold[ QUALITY_STEP ];
+ static const float qualityToMicrovegetDensity[ QUALITY_STEP ];
+
+ //////////////////////// Character values ////////////////////////
+ static const sint32 qualityToSkinNbMaxPoly[ QUALITY_STEP ];
+ static const sint32 qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ];
+ static const float qualityToCharacterFarClip[ QUALITY_STEP ];
+
+ /////////////////////// FX values ////////////////////////////////
+ static const sint32 qualityToFxNbMaxPoly[ QUALITY_STEP ];
+
+};
+
+#endif // DISPLAYSETTINGSDETAILSWIDGET_H
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 89ed62783..f6775a0b7 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
@@ -1,227 +1,227 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include
-#include
-#include "display_settings_widget.h"
-#include "system.h"
-#include
-
-CDisplaySettingsWidget::CDisplaySettingsWidget( QWidget *parent ) :
- CWidgetBase( parent )
-{
- setupUi( this );
- widthLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), widthLineEdit ) );
- heightLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), heightLineEdit ) );
- xpositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), xpositionLineEdit ) );
- ypositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), ypositionLineEdit ) );
- load();
-
- connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( fullscreenRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( windowedRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( widthLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
- connect( heightLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
- connect( xpositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
- connect( ypositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
- connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
- connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
- connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
- connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
-}
-
-CDisplaySettingsWidget::~CDisplaySettingsWidget()
-{
-}
-
-void CDisplaySettingsWidget::load()
-{
- CSystem &s = CSystem::GetInstance();
-
- std::string driver = s.config.getString( "Driver3D" );
- switch( getDriverFromConfigString( driver ) )
- {
- case DRV_AUTO:
- autoRadioButton->setChecked( true );
- break;
- case DRV_OPENGL:
- openglRadioButton->setChecked( true );
- break;
- case DRV_DIRECT3D:
- direct3dRadioButton->setChecked( true );
- break;
- }
-
- updateVideoModes();
-
-
- CVideoMode mode;
- mode.widht = s.config.getInt( "Width" );
- mode.height = s.config.getInt( "Height" );
- mode.depth = s.config.getInt( "Depth" );
- mode.frequency = s.config.getInt( "Frequency" );
-
- if( s.config.getInt( "FullScreen" ) == 1 )
- {
- fullscreenRadioButton->setChecked( true );
- videomodeComboBox->setCurrentIndex( findVideoModeIndex( &mode ) );
- }
- else
- {
- windowedRadioButton->setChecked( true );
- }
-
- widthLineEdit->setText( QString( "%1" ).arg( mode.widht ) );
- 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" ) ) );
-
-}
-
-void CDisplaySettingsWidget::save()
-{
- CSystem &s = CSystem::GetInstance();
-
- if( openglRadioButton->isChecked() )
- s.config.setString( "Driver3D", std::string( "OpenGL" ) );
- else if( direct3dRadioButton->isChecked() )
- s.config.setString( "Driver3D", std::string( "Direct3D" ) );
- else
- s.config.setString( "Driver3D", std::string( "Auto" ) );
-
- if( fullscreenRadioButton->isChecked() )
- {
- s.config.setInt( "FullScreen", 1 );
-
- sint32 index = videomodeComboBox->currentIndex();
- CVideoMode mode;
-
- // OpenGL should be available everywhere!
- if( direct3dRadioButton->isChecked() )
- mode = s.d3dInfo.modes[ index ];
- else
- mode = s.openglInfo.modes[ index ];
-
- s.config.setInt( "Width", mode.widht );
- s.config.setInt( "Height", mode.height );
- s.config.setInt( "Depth", mode.depth );
- s.config.setInt( "Frequency", mode.frequency );
-
- }
- else
- {
- s.config.setInt( "FullScreen", 0 );
- s.config.setInt( "Width", widthLineEdit->text().toInt() );
- s.config.setInt( "Height", heightLineEdit->text().toInt() );
- }
-
- s.config.setInt( "PositionX", xpositionLineEdit->text().toInt() );
- s.config.setInt( "PositionY", ypositionLineEdit->text().toInt() );
-}
-
-void CDisplaySettingsWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- disconnect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
- retranslateUi( this );
- connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
- }
- QWidget::changeEvent( event );
-}
-
-void CDisplaySettingsWidget::updateVideoModes()
-{
- CSystem &s = CSystem::GetInstance();
-
- videomodeComboBox->clear();
-
- if( direct3dRadioButton->isChecked() )
- {
- for( std::vector< CVideoMode >::iterator itr = s.d3dInfo.modes.begin(); itr != s.d3dInfo.modes.end(); ++itr )
- {
- std::stringstream ss;
- ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency;
- videomodeComboBox->addItem( ss.str().c_str() );
- }
- }
- else
- {
- // OpenGL should be available everywhere!
- for( std::vector< CVideoMode >::iterator itr = s.openglInfo.modes.begin(); itr != s.openglInfo.modes.end(); ++itr )
- {
- std::stringstream ss;
- ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency;
- videomodeComboBox->addItem( ss.str().c_str() );
- }
- }
-}
-
-uint32 CDisplaySettingsWidget::findVideoModeIndex( CVideoMode *mode )
-{
- //////////////////////////////////////////////////////////////////////////////////
- // WARNING:
- // This part relies on that the video mode combo box is filled as the following:
- //
- //| --------------------------------------|
- //| Selected driver | Modes |
- //| --------------------------------------|
- //| Auto | OpenGL modes |
- //| OpenGL | OpenGL modes |
- //| Direct3D | Direct3d modes |
- //| --------------------------------------|
- //
- //
- //////////////////////////////////////////////////////////////////////////////////
-
- CVideoMode &m = *mode;
- CSystem &s = CSystem::GetInstance();
-
- if( direct3dRadioButton->isChecked() )
- {
- for( uint32 i = 0; i < s.d3dInfo.modes.size(); i++ )
- if( s.d3dInfo.modes[ i ] == m )
- return i;
- }
- else
- {
- // Again OpenGL should be available everywhere!
- for( uint32 i = 0; i < s.openglInfo.modes.size(); i++ )
- if( s.openglInfo.modes[ i ] == m )
- return i;
- }
-
- return 0;
-}
-
-E3DDriver CDisplaySettingsWidget::getDriverFromConfigString(std::string &str) const
-{
- if( str.compare( "0" ) == 0 )
- return DRV_AUTO;
- if( str.compare( "1" ) == 0 )
- return DRV_OPENGL;
- if( str.compare( "2" ) == 0 )
- return DRV_DIRECT3D;
- if( str.compare( "OpenGL" ) == 0 )
- return DRV_OPENGL;
- if( str.compare( "Direct3D" ) == 0)
- return DRV_DIRECT3D;
-
-
- return DRV_AUTO;
-}
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include
+#include
+#include "display_settings_widget.h"
+#include "system.h"
+#include
+
+CDisplaySettingsWidget::CDisplaySettingsWidget( QWidget *parent ) :
+ CWidgetBase( parent )
+{
+ setupUi( this );
+ widthLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), widthLineEdit ) );
+ heightLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), heightLineEdit ) );
+ xpositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), xpositionLineEdit ) );
+ ypositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), ypositionLineEdit ) );
+ load();
+
+ connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( fullscreenRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( windowedRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( widthLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
+ connect( heightLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
+ connect( xpositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
+ connect( ypositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
+ connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
+ connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
+ connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
+ connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
+}
+
+CDisplaySettingsWidget::~CDisplaySettingsWidget()
+{
+}
+
+void CDisplaySettingsWidget::load()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ std::string driver = s.config.getString( "Driver3D" );
+ switch( getDriverFromConfigString( driver ) )
+ {
+ case DRV_AUTO:
+ autoRadioButton->setChecked( true );
+ break;
+ case DRV_OPENGL:
+ openglRadioButton->setChecked( true );
+ break;
+ case DRV_DIRECT3D:
+ direct3dRadioButton->setChecked( true );
+ break;
+ }
+
+ updateVideoModes();
+
+
+ CVideoMode mode;
+ mode.widht = s.config.getInt( "Width" );
+ mode.height = s.config.getInt( "Height" );
+ mode.depth = s.config.getInt( "Depth" );
+ mode.frequency = s.config.getInt( "Frequency" );
+
+ if( s.config.getInt( "FullScreen" ) == 1 )
+ {
+ fullscreenRadioButton->setChecked( true );
+ videomodeComboBox->setCurrentIndex( findVideoModeIndex( &mode ) );
+ }
+ else
+ {
+ windowedRadioButton->setChecked( true );
+ }
+
+ widthLineEdit->setText( QString( "%1" ).arg( mode.widht ) );
+ 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" ) ) );
+
+}
+
+void CDisplaySettingsWidget::save()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ if( openglRadioButton->isChecked() )
+ s.config.setString( "Driver3D", std::string( "OpenGL" ) );
+ else if( direct3dRadioButton->isChecked() )
+ s.config.setString( "Driver3D", std::string( "Direct3D" ) );
+ else
+ s.config.setString( "Driver3D", std::string( "Auto" ) );
+
+ if( fullscreenRadioButton->isChecked() )
+ {
+ s.config.setInt( "FullScreen", 1 );
+
+ sint32 index = videomodeComboBox->currentIndex();
+ CVideoMode mode;
+
+ // OpenGL should be available everywhere!
+ if( direct3dRadioButton->isChecked() )
+ mode = s.d3dInfo.modes[ index ];
+ else
+ mode = s.openglInfo.modes[ index ];
+
+ s.config.setInt( "Width", mode.widht );
+ s.config.setInt( "Height", mode.height );
+ s.config.setInt( "Depth", mode.depth );
+ s.config.setInt( "Frequency", mode.frequency );
+
+ }
+ else
+ {
+ s.config.setInt( "FullScreen", 0 );
+ s.config.setInt( "Width", widthLineEdit->text().toInt() );
+ s.config.setInt( "Height", heightLineEdit->text().toInt() );
+ }
+
+ s.config.setInt( "PositionX", xpositionLineEdit->text().toInt() );
+ s.config.setInt( "PositionY", ypositionLineEdit->text().toInt() );
+}
+
+void CDisplaySettingsWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ disconnect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
+ retranslateUi( this );
+ connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
+ }
+ QWidget::changeEvent( event );
+}
+
+void CDisplaySettingsWidget::updateVideoModes()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ videomodeComboBox->clear();
+
+ if( direct3dRadioButton->isChecked() )
+ {
+ for( std::vector< CVideoMode >::iterator itr = s.d3dInfo.modes.begin(); itr != s.d3dInfo.modes.end(); ++itr )
+ {
+ std::stringstream ss;
+ ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency;
+ videomodeComboBox->addItem( ss.str().c_str() );
+ }
+ }
+ else
+ {
+ // OpenGL should be available everywhere!
+ for( std::vector< CVideoMode >::iterator itr = s.openglInfo.modes.begin(); itr != s.openglInfo.modes.end(); ++itr )
+ {
+ std::stringstream ss;
+ ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency;
+ videomodeComboBox->addItem( ss.str().c_str() );
+ }
+ }
+}
+
+uint32 CDisplaySettingsWidget::findVideoModeIndex( CVideoMode *mode )
+{
+ //////////////////////////////////////////////////////////////////////////////////
+ // WARNING:
+ // This part relies on that the video mode combo box is filled as the following:
+ //
+ //| --------------------------------------|
+ //| Selected driver | Modes |
+ //| --------------------------------------|
+ //| Auto | OpenGL modes |
+ //| OpenGL | OpenGL modes |
+ //| Direct3D | Direct3d modes |
+ //| --------------------------------------|
+ //
+ //
+ //////////////////////////////////////////////////////////////////////////////////
+
+ CVideoMode &m = *mode;
+ CSystem &s = CSystem::GetInstance();
+
+ if( direct3dRadioButton->isChecked() )
+ {
+ for( uint32 i = 0; i < s.d3dInfo.modes.size(); i++ )
+ if( s.d3dInfo.modes[ i ] == m )
+ return i;
+ }
+ else
+ {
+ // Again OpenGL should be available everywhere!
+ for( uint32 i = 0; i < s.openglInfo.modes.size(); i++ )
+ if( s.openglInfo.modes[ i ] == m )
+ return i;
+ }
+
+ return 0;
+}
+
+E3DDriver CDisplaySettingsWidget::getDriverFromConfigString(std::string &str) const
+{
+ if( str.compare( "0" ) == 0 )
+ return DRV_AUTO;
+ if( str.compare( "1" ) == 0 )
+ return DRV_OPENGL;
+ if( str.compare( "2" ) == 0 )
+ return DRV_DIRECT3D;
+ if( str.compare( "OpenGL" ) == 0 )
+ return DRV_OPENGL;
+ if( str.compare( "Direct3D" ) == 0)
+ return DRV_DIRECT3D;
+
+
+ return DRV_AUTO;
+}
diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_widget.h b/code/ryzom/tools/client/client_config_qt/display_settings_widget.h
index 5da578bbf..f67ec8b15 100644
--- a/code/ryzom/tools/client/client_config_qt/display_settings_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/display_settings_widget.h
@@ -1,72 +1,72 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef DISPLAYSETTINGSWIDGET_H
-#define DISPLAYSETTINGSWIDGET_H
-
-#include "ui_display_settings_widget.h"
-#include "widget_base.h"
-#include
-
-struct CVideoMode;
-
-enum E3DDriver
-{
- DRV_AUTO,
- DRV_OPENGL,
- DRV_DIRECT3D
-};
-
-/**
- @brief The display settings page of the configuration tool
-*/
-class CDisplaySettingsWidget : public CWidgetBase, public Ui::display_settings_widget
-{
- Q_OBJECT
-public:
- CDisplaySettingsWidget( QWidget *parent = NULL );
- ~CDisplaySettingsWidget();
-
- void load();
- void save();
-
-protected:
- void changeEvent( QEvent *event );
-
-private slots:
- /**
- @brief Updates the video modes combo box, based on the current driver selection.
- */
- void updateVideoModes();
-
-private:
- /**
- @brief Finds the proper index for the video mode combobox
- @param mode - the video mode read from config
- @return Returns the proper video mode index if found, returns 0 otherwise.
- */
- uint32 findVideoModeIndex( CVideoMode *mode );
-
-
- /**
- @brief Retrieves the driver type from the config string.
- @param str - Reference to the driver string.
- @return Returns the driver type on success, rReturns E3DDriver::DRV_AUTO otherwise.
- */
- E3DDriver getDriverFromConfigString( std::string &str ) const;
-};
-
-#endif // DISPLAYSETTINGSWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef DISPLAYSETTINGSWIDGET_H
+#define DISPLAYSETTINGSWIDGET_H
+
+#include "ui_display_settings_widget.h"
+#include "widget_base.h"
+#include
+
+struct CVideoMode;
+
+enum E3DDriver
+{
+ DRV_AUTO,
+ DRV_OPENGL,
+ DRV_DIRECT3D
+};
+
+/**
+ @brief The display settings page of the configuration tool
+*/
+class CDisplaySettingsWidget : public CWidgetBase, public Ui::display_settings_widget
+{
+ Q_OBJECT
+public:
+ CDisplaySettingsWidget( QWidget *parent = NULL );
+ ~CDisplaySettingsWidget();
+
+ void load();
+ void save();
+
+protected:
+ void changeEvent( QEvent *event );
+
+private slots:
+ /**
+ @brief Updates the video modes combo box, based on the current driver selection.
+ */
+ void updateVideoModes();
+
+private:
+ /**
+ @brief Finds the proper index for the video mode combobox
+ @param mode - the video mode read from config
+ @return Returns the proper video mode index if found, returns 0 otherwise.
+ */
+ uint32 findVideoModeIndex( CVideoMode *mode );
+
+
+ /**
+ @brief Retrieves the driver type from the config string.
+ @param str - Reference to the driver string.
+ @return Returns the driver type on success, rReturns E3DDriver::DRV_AUTO otherwise.
+ */
+ E3DDriver getDriverFromConfigString( std::string &str ) const;
+};
+
+#endif // DISPLAYSETTINGSWIDGET_H
diff --git a/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp b/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp
index 357bd45d4..fcb85dec2 100644
--- a/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp
+++ b/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp
@@ -1,121 +1,121 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "general_settings_widget.h"
-#include "system.h"
-#include
-
-const QString CGeneralSettingsWidget::languageCodes[ NUM_LANGUAGE_CODES ] =
-{
- "en",
- "fr",
- "de",
- "hu"
-};
-
-CGeneralSettingsWidget::CGeneralSettingsWidget( QWidget *parent ) :
- CWidgetBase( parent )
-{
- currentTranslator = NULL;
- setupUi( this );
- load();
-
- connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
- connect( saveConfigOnQuitCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
- connect( lowPriorityProcessCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
-}
-
-CGeneralSettingsWidget::~CGeneralSettingsWidget()
-{
-}
-
-void CGeneralSettingsWidget::load()
-{
- CSystem &s = CSystem::GetInstance();
-
- sint32 cbIndex = getIndexForLanguageCode( QString( s.config.getString( "LanguageCode" ).c_str() ) );
- if( cbIndex != -1 ){
- languageComboBox->setCurrentIndex( cbIndex );
- onLanguageChanged();
- }
-
- if( s.config.getInt( "SaveConfig" ) )
- saveConfigOnQuitCheckBox->setChecked( true );
-
- if( s.config.getInt( "ProcessPriority" ) == -1 )
- lowPriorityProcessCheckBox->setChecked( true );
- else
- lowPriorityProcessCheckBox->setChecked( false );
-}
-
-void CGeneralSettingsWidget::save()
-{
- CSystem &s = CSystem::GetInstance();
-
- s.config.setString( "LanguageCode", std::string( languageCodes[ languageComboBox->currentIndex() ].toUtf8() ) );
-
- if( saveConfigOnQuitCheckBox->isChecked() )
- s.config.setInt( "SaveConfig", 1 );
- else
- s.config.setInt( "SaveConfig", 0 );
-
- if( lowPriorityProcessCheckBox->isChecked() )
- s.config.setInt( "ProcessPriority", -1 );
- else
- s.config.setInt( "ProcessPriority", 0 );
-}
-
-void CGeneralSettingsWidget::onLanguageChanged()
-{
- sint32 i = languageComboBox->currentIndex();
-
- if( currentTranslator != NULL )
- {
- qApp->removeTranslator( currentTranslator );
- delete currentTranslator;
- currentTranslator = NULL;
- }
-
- currentTranslator = new QTranslator();
- if( currentTranslator->load( QString( ":/translations/ryzom_configuration_%1" ).arg( languageCodes[ i ] ) ) )
- qApp->installTranslator( currentTranslator );
-
- emit changed();
-}
-
-void CGeneralSettingsWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- sint32 i = languageComboBox->currentIndex();
- // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
- disconnect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
- retranslateUi( this );
- languageComboBox->setCurrentIndex( i );
- connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
- }
-
- QWidget::changeEvent( event );
-}
-
-int CGeneralSettingsWidget::getIndexForLanguageCode( QString &languageCode )
-{
- for( sint32 i = 0; i < NUM_LANGUAGE_CODES; i++ )
- if( languageCode.compare( languageCodes[ i ] ) == 0 )
- return i;
-
- return -1;
-}
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "general_settings_widget.h"
+#include "system.h"
+#include
+
+const QString CGeneralSettingsWidget::languageCodes[ NUM_LANGUAGE_CODES ] =
+{
+ "en",
+ "fr",
+ "de",
+ "hu"
+};
+
+CGeneralSettingsWidget::CGeneralSettingsWidget( QWidget *parent ) :
+ CWidgetBase( parent )
+{
+ currentTranslator = NULL;
+ setupUi( this );
+ load();
+
+ connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
+ connect( saveConfigOnQuitCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
+ connect( lowPriorityProcessCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
+}
+
+CGeneralSettingsWidget::~CGeneralSettingsWidget()
+{
+}
+
+void CGeneralSettingsWidget::load()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ sint32 cbIndex = getIndexForLanguageCode( QString( s.config.getString( "LanguageCode" ).c_str() ) );
+ if( cbIndex != -1 ){
+ languageComboBox->setCurrentIndex( cbIndex );
+ onLanguageChanged();
+ }
+
+ if( s.config.getInt( "SaveConfig" ) )
+ saveConfigOnQuitCheckBox->setChecked( true );
+
+ if( s.config.getInt( "ProcessPriority" ) == -1 )
+ lowPriorityProcessCheckBox->setChecked( true );
+ else
+ lowPriorityProcessCheckBox->setChecked( false );
+}
+
+void CGeneralSettingsWidget::save()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ s.config.setString( "LanguageCode", std::string( languageCodes[ languageComboBox->currentIndex() ].toUtf8() ) );
+
+ if( saveConfigOnQuitCheckBox->isChecked() )
+ s.config.setInt( "SaveConfig", 1 );
+ else
+ s.config.setInt( "SaveConfig", 0 );
+
+ if( lowPriorityProcessCheckBox->isChecked() )
+ s.config.setInt( "ProcessPriority", -1 );
+ else
+ s.config.setInt( "ProcessPriority", 0 );
+}
+
+void CGeneralSettingsWidget::onLanguageChanged()
+{
+ sint32 i = languageComboBox->currentIndex();
+
+ if( currentTranslator != NULL )
+ {
+ qApp->removeTranslator( currentTranslator );
+ delete currentTranslator;
+ currentTranslator = NULL;
+ }
+
+ currentTranslator = new QTranslator();
+ if( currentTranslator->load( QString( ":/translations/ryzom_configuration_%1" ).arg( languageCodes[ i ] ) ) )
+ qApp->installTranslator( currentTranslator );
+
+ emit changed();
+}
+
+void CGeneralSettingsWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ sint32 i = languageComboBox->currentIndex();
+ // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
+ disconnect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
+ retranslateUi( this );
+ languageComboBox->setCurrentIndex( i );
+ connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
+ }
+
+ QWidget::changeEvent( event );
+}
+
+int CGeneralSettingsWidget::getIndexForLanguageCode( QString &languageCode )
+{
+ for( sint32 i = 0; i < NUM_LANGUAGE_CODES; i++ )
+ if( languageCode.compare( languageCodes[ i ] ) == 0 )
+ return i;
+
+ return -1;
+}
diff --git a/code/ryzom/tools/client/client_config_qt/general_settings_widget.h b/code/ryzom/tools/client/client_config_qt/general_settings_widget.h
index dd6e41752..c8d530ea5 100644
--- a/code/ryzom/tools/client/client_config_qt/general_settings_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/general_settings_widget.h
@@ -1,66 +1,66 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef GENERALSETTINGWIDGET_H
-#define GENERALSETTINGWIDGET_H
-
-#include "ui_general_settings_widget.h"
-#include "widget_base.h"
-#include
-
-class QTranslator;
-
-enum
-{
- NUM_LANGUAGE_CODES = 4
-};
-
-/**
- @brief The general settings page of the configuration tool
-*/
-class CGeneralSettingsWidget : public CWidgetBase, public Ui::general_settings_widget
-{
- Q_OBJECT
-
-public:
- CGeneralSettingsWidget( QWidget *parent = NULL );
- ~CGeneralSettingsWidget();
-
- void load();
- void save();
-
-private slots:
- void onLanguageChanged();
-
-protected:
- void changeEvent( QEvent *event );
-
-private:
- /**
- @brief Retrieves the language combobox index for the language code provided.
- @param languageCode - Reference to the language code, we are trying to find.
- @return Returns the index on success, returns -1 if the language code cannot be found.
- */
- sint32 getIndexForLanguageCode( QString &languageCode );
-
- // Contains the language codes used in the config file
- // They are in the same order as the options in languageComboBox
- static const QString languageCodes[ NUM_LANGUAGE_CODES ];
-
- QTranslator *currentTranslator;
-};
-
-#endif // GENERALSETTINGWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef GENERALSETTINGWIDGET_H
+#define GENERALSETTINGWIDGET_H
+
+#include "ui_general_settings_widget.h"
+#include "widget_base.h"
+#include
+
+class QTranslator;
+
+enum
+{
+ NUM_LANGUAGE_CODES = 4
+};
+
+/**
+ @brief The general settings page of the configuration tool
+*/
+class CGeneralSettingsWidget : public CWidgetBase, public Ui::general_settings_widget
+{
+ Q_OBJECT
+
+public:
+ CGeneralSettingsWidget( QWidget *parent = NULL );
+ ~CGeneralSettingsWidget();
+
+ void load();
+ void save();
+
+private slots:
+ void onLanguageChanged();
+
+protected:
+ void changeEvent( QEvent *event );
+
+private:
+ /**
+ @brief Retrieves the language combobox index for the language code provided.
+ @param languageCode - Reference to the language code, we are trying to find.
+ @return Returns the index on success, returns -1 if the language code cannot be found.
+ */
+ sint32 getIndexForLanguageCode( QString &languageCode );
+
+ // Contains the language codes used in the config file
+ // They are in the same order as the options in languageComboBox
+ static const QString languageCodes[ NUM_LANGUAGE_CODES ];
+
+ QTranslator *currentTranslator;
+};
+
+#endif // GENERALSETTINGWIDGET_H
diff --git a/code/ryzom/tools/client/client_config_qt/main.cpp b/code/ryzom/tools/client/client_config_qt/main.cpp
index f643005bc..758598e92 100644
--- a/code/ryzom/tools/client/client_config_qt/main.cpp
+++ b/code/ryzom/tools/client/client_config_qt/main.cpp
@@ -1,36 +1,36 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include
-#include "client_config_dialog.h"
-#include "system.h"
-
-int main( sint32 argc, char **argv )
-{
- QApplication app( argc, argv );
- QPixmap pixmap( ":/resources/splash_screen.bmp" );
- QSplashScreen splash( pixmap );
-
- splash.show();
-
- CSystem::GetInstance().config.load( "client.cfg" );
-
- CClientConfigDialog d;
- d.show();
- splash.finish( &d );
-
- return app.exec();
-}
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include
+#include "client_config_dialog.h"
+#include "system.h"
+
+int main( sint32 argc, char **argv )
+{
+ QApplication app( argc, argv );
+ QPixmap pixmap( ":/resources/splash_screen.bmp" );
+ QSplashScreen splash( pixmap );
+
+ splash.show();
+
+ CSystem::GetInstance().config.load( "client.cfg" );
+
+ CClientConfigDialog d;
+ d.show();
+ splash.finish( &d );
+
+ return app.exec();
+}
diff --git a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp
index 1b7dc5248..5436ac2b4 100644
--- a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp
+++ b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp
@@ -1,99 +1,99 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "sound_settings_widget.h"
-#include "system.h"
-
-CSoundSettingsWidget::CSoundSettingsWidget( QWidget *parent ) :
- CWidgetBase( parent )
-{
- setupUi( this );
- load();
-
- connect( tracksSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTracksSliderChange() ) );
- connect( soundCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( eaxCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( softwareCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
- connect( fmodCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
-}
-
-CSoundSettingsWidget::~CSoundSettingsWidget()
-{
-}
-
-void CSoundSettingsWidget::onTracksSliderChange()
-{
- updateTracksLabel();
- emit changed();
-}
-
-void CSoundSettingsWidget::load()
-{
- CSystem &s = CSystem::GetInstance();
-
- if( s.config.getInt( "SoundOn" ) == 1 )
- soundCheckBox->setChecked( true );
-
- if( s.config.getInt( "UseEax" ) == 1 )
- eaxCheckBox->setChecked( true );
-
- if( s.config.getInt( "SoundForceSoftwareBuffer" ) == 1 )
- softwareCheckBox->setChecked( true );
-
- sint32 tracks = s.config.getInt( "MaxTrack" );
- if( tracks < 4 )
- tracks = 4;
- if( tracks > 32 )
- tracks = 32;
- tracksSlider->setValue( tracks / 4 );
-
- if( s.config.getString( "DriverSound" ).compare( "FMod" ) == 0 )
- fmodCheckBox->setChecked( true );
-}
-
-void CSoundSettingsWidget::save()
-{
- CSystem &s = CSystem::GetInstance();
-
- if( soundCheckBox->isChecked() )
- s.config.setInt( "SoundOn", 1 );
-
- if( eaxCheckBox->isChecked() )
- s.config.setInt( "UseEax", 1 );
-
- if( softwareCheckBox->isChecked() )
- s.config.setInt( "SoundForceSoftwareBuffer", 1 );
-
- s.config.setInt( "MaxTrack", tracksSlider->value() * 4 );
-
- if( fmodCheckBox->isChecked() )
- s.config.setString( "DriverSound", std::string( "FMod" ) );
-}
-
-void CSoundSettingsWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- retranslateUi( this );
- updateTracksLabel();
- }
- QWidget::changeEvent( event );
-}
-
-void CSoundSettingsWidget::updateTracksLabel()
-{
- tracksLabel->setText( tr( "%1 tracks" ).arg( tracksSlider->value() * 4 ) );
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "sound_settings_widget.h"
+#include "system.h"
+
+CSoundSettingsWidget::CSoundSettingsWidget( QWidget *parent ) :
+ CWidgetBase( parent )
+{
+ setupUi( this );
+ load();
+
+ connect( tracksSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTracksSliderChange() ) );
+ connect( soundCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( eaxCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( softwareCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+ connect( fmodCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
+}
+
+CSoundSettingsWidget::~CSoundSettingsWidget()
+{
+}
+
+void CSoundSettingsWidget::onTracksSliderChange()
+{
+ updateTracksLabel();
+ emit changed();
+}
+
+void CSoundSettingsWidget::load()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ if( s.config.getInt( "SoundOn" ) == 1 )
+ soundCheckBox->setChecked( true );
+
+ if( s.config.getInt( "UseEax" ) == 1 )
+ eaxCheckBox->setChecked( true );
+
+ if( s.config.getInt( "SoundForceSoftwareBuffer" ) == 1 )
+ softwareCheckBox->setChecked( true );
+
+ sint32 tracks = s.config.getInt( "MaxTrack" );
+ if( tracks < 4 )
+ tracks = 4;
+ if( tracks > 32 )
+ tracks = 32;
+ tracksSlider->setValue( tracks / 4 );
+
+ if( s.config.getString( "DriverSound" ).compare( "FMod" ) == 0 )
+ fmodCheckBox->setChecked( true );
+}
+
+void CSoundSettingsWidget::save()
+{
+ CSystem &s = CSystem::GetInstance();
+
+ if( soundCheckBox->isChecked() )
+ s.config.setInt( "SoundOn", 1 );
+
+ if( eaxCheckBox->isChecked() )
+ s.config.setInt( "UseEax", 1 );
+
+ if( softwareCheckBox->isChecked() )
+ s.config.setInt( "SoundForceSoftwareBuffer", 1 );
+
+ s.config.setInt( "MaxTrack", tracksSlider->value() * 4 );
+
+ if( fmodCheckBox->isChecked() )
+ s.config.setString( "DriverSound", std::string( "FMod" ) );
+}
+
+void CSoundSettingsWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ retranslateUi( this );
+ updateTracksLabel();
+ }
+ QWidget::changeEvent( event );
+}
+
+void CSoundSettingsWidget::updateTracksLabel()
+{
+ tracksLabel->setText( tr( "%1 tracks" ).arg( tracksSlider->value() * 4 ) );
}
\ No newline at end of file
diff --git a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h
index f1a54114b..d98a89d82 100644
--- a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h
@@ -1,50 +1,50 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef SOUNDSETTINGSWIDGET_H
-#define SOUNDSETTINGSWIDGET_H
-
-#include "ui_sound_settings_widget.h"
-#include "widget_base.h"
-#include
-
-/**
- @brief The sound settings page of the configuration tool
-*/
-class CSoundSettingsWidget : public CWidgetBase, public Ui::sound_settings_widget
-{
- Q_OBJECT
-public:
- CSoundSettingsWidget( QWidget *parent = NULL );
- ~CSoundSettingsWidget();
-
- void load();
- void save();
-
-protected:
- void changeEvent( QEvent *event );
-
-private slots:
- void onTracksSliderChange();
-
-private:
- /**
- @brief Updates the text on the tracks label.
- */
- void updateTracksLabel();
-};
-
-#endif // SOUNDSETTINGSWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef SOUNDSETTINGSWIDGET_H
+#define SOUNDSETTINGSWIDGET_H
+
+#include "ui_sound_settings_widget.h"
+#include "widget_base.h"
+#include
+
+/**
+ @brief The sound settings page of the configuration tool
+*/
+class CSoundSettingsWidget : public CWidgetBase, public Ui::sound_settings_widget
+{
+ Q_OBJECT
+public:
+ CSoundSettingsWidget( QWidget *parent = NULL );
+ ~CSoundSettingsWidget();
+
+ void load();
+ void save();
+
+protected:
+ void changeEvent( QEvent *event );
+
+private slots:
+ void onTracksSliderChange();
+
+private:
+ /**
+ @brief Updates the text on the tracks label.
+ */
+ void updateTracksLabel();
+};
+
+#endif // SOUNDSETTINGSWIDGET_H
diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp
index 2852a98dd..894ea07ac 100644
--- a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp
+++ b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp
@@ -1,41 +1,41 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "sys_info_d3d_widget.h"
-#include "system.h"
-
-CSysInfoD3DWidget::CSysInfoD3DWidget( QWidget *parent ) :
- QWidget( parent )
-{
- setupUi( this );
-
- descriptionLabel->setText( CSystem::GetInstance().d3dInfo.device.c_str() );
- driverLabel->setText( CSystem::GetInstance().d3dInfo.driver.c_str() );
- versionLabel->setText( CSystem::GetInstance().d3dInfo.driverVersion.c_str() );
-}
-
-CSysInfoD3DWidget::~CSysInfoD3DWidget()
-{
-}
-
-void CSysInfoD3DWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- retranslateUi( this );
- }
- QWidget::changeEvent( event );
-}
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "sys_info_d3d_widget.h"
+#include "system.h"
+
+CSysInfoD3DWidget::CSysInfoD3DWidget( QWidget *parent ) :
+ QWidget( parent )
+{
+ setupUi( this );
+
+ descriptionLabel->setText( CSystem::GetInstance().d3dInfo.device.c_str() );
+ driverLabel->setText( CSystem::GetInstance().d3dInfo.driver.c_str() );
+ versionLabel->setText( CSystem::GetInstance().d3dInfo.driverVersion.c_str() );
+}
+
+CSysInfoD3DWidget::~CSysInfoD3DWidget()
+{
+}
+
+void CSysInfoD3DWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ retranslateUi( this );
+ }
+ QWidget::changeEvent( event );
+}
diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h
index 64d13a6a4..6f79782ae 100644
--- a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h
@@ -1,39 +1,39 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef SYSINFOD3DWIDGET_H
-#define SYSINFOD3DWIDGET_H
-
-#include "ui_sys_Info_d3d_widget.h"
-
-
-/**
- @brief The Direct3D information page of the configuration tool
-*/
-class CSysInfoD3DWidget : public QWidget, public Ui::sys_info_d3d_widget
-{
- Q_OBJECT
-public:
- CSysInfoD3DWidget( QWidget *parent = NULL );
- ~CSysInfoD3DWidget();
-
-protected:
- void changeEvent( QEvent *event );
-
-};
-
-
-#endif // SYSINFOD3DWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef SYSINFOD3DWIDGET_H
+#define SYSINFOD3DWIDGET_H
+
+#include "ui_sys_Info_d3d_widget.h"
+
+
+/**
+ @brief The Direct3D information page of the configuration tool
+*/
+class CSysInfoD3DWidget : public QWidget, public Ui::sys_info_d3d_widget
+{
+ Q_OBJECT
+public:
+ CSysInfoD3DWidget( QWidget *parent = NULL );
+ ~CSysInfoD3DWidget();
+
+protected:
+ void changeEvent( QEvent *event );
+
+};
+
+
+#endif // SYSINFOD3DWIDGET_H
diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp
index 9792bbdbc..0665025be 100644
--- a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp
+++ b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp
@@ -1,42 +1,42 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "sys_info_opengl_widget.h"
-#include "system.h"
-
-CSysInfoOpenGLWidget::CSysInfoOpenGLWidget( QWidget *parent ) :
- QWidget( parent )
-{
- setupUi( this );
- vendorLabel->setText( CSystem::GetInstance().openglInfo.vendor.c_str() );
- rendererLabel->setText( CSystem::GetInstance().openglInfo.renderer.c_str() );
- versionLabel->setText( CSystem::GetInstance().openglInfo.driverVersion.c_str() );
- extensionsBox->setPlainText( CSystem::GetInstance().openglInfo.extensions.c_str() );
-
-}
-
-CSysInfoOpenGLWidget::~CSysInfoOpenGLWidget()
-{
-}
-
-void CSysInfoOpenGLWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- retranslateUi( this );
- }
- QWidget::changeEvent( event );
-}
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "sys_info_opengl_widget.h"
+#include "system.h"
+
+CSysInfoOpenGLWidget::CSysInfoOpenGLWidget( QWidget *parent ) :
+ QWidget( parent )
+{
+ setupUi( this );
+ vendorLabel->setText( CSystem::GetInstance().openglInfo.vendor.c_str() );
+ rendererLabel->setText( CSystem::GetInstance().openglInfo.renderer.c_str() );
+ versionLabel->setText( CSystem::GetInstance().openglInfo.driverVersion.c_str() );
+ extensionsBox->setPlainText( CSystem::GetInstance().openglInfo.extensions.c_str() );
+
+}
+
+CSysInfoOpenGLWidget::~CSysInfoOpenGLWidget()
+{
+}
+
+void CSysInfoOpenGLWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ retranslateUi( this );
+ }
+ QWidget::changeEvent( event );
+}
diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h
index 6f40db7d7..f1d396f51 100644
--- a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h
@@ -1,38 +1,38 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef SYSINFOOPENGLWIDGET_H
-#define SYSINFOOPENGLWIDGET_H
-
-#include "ui_sys_info_opengl_widget.h"
-
-
-/**
- @brief The OpenGL information page of the configuration tool
-*/
-class CSysInfoOpenGLWidget : public QWidget, public Ui::sys_info_opengl_widget
-{
- Q_OBJECT
-public:
- CSysInfoOpenGLWidget( QWidget *parent = NULL );
- ~CSysInfoOpenGLWidget();
-
-protected:
- void changeEvent( QEvent *event );
-
-};
-
-#endif // SYSINFOOPENGLWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef SYSINFOOPENGLWIDGET_H
+#define SYSINFOOPENGLWIDGET_H
+
+#include "ui_sys_info_opengl_widget.h"
+
+
+/**
+ @brief The OpenGL information page of the configuration tool
+*/
+class CSysInfoOpenGLWidget : public QWidget, public Ui::sys_info_opengl_widget
+{
+ Q_OBJECT
+public:
+ CSysInfoOpenGLWidget( QWidget *parent = NULL );
+ ~CSysInfoOpenGLWidget();
+
+protected:
+ void changeEvent( QEvent *event );
+
+};
+
+#endif // SYSINFOOPENGLWIDGET_H
diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp b/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp
index 58845fd38..26d52ddb8 100644
--- a/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp
+++ b/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp
@@ -1,46 +1,46 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "sys_info_widget.h"
-#include "system.h"
-
-CSysInfoWidget::CSysInfoWidget( QWidget *parent ) :
- QWidget( parent )
-{
- setupUi( this );
-
- osLabel->setText( CSystem::GetInstance().sysInfo.osName.c_str() );
- cpuLabel->setText( CSystem::GetInstance().sysInfo.cpuName.c_str() );
-
- ramLabel->setText(
- QString().setNum( CSystem::GetInstance().sysInfo.totalRAM ).append( " Mb" ) );
-
- gfxcardLabel->setText( CSystem::GetInstance().sysInfo.videoDevice.c_str() );
- gfxdriverLabel->setText( CSystem::GetInstance().sysInfo.videoDriverVersion.c_str() );
-}
-
-CSysInfoWidget::~CSysInfoWidget()
-{
-}
-
-void CSysInfoWidget::changeEvent( QEvent *event )
-{
- if( event->type() == QEvent::LanguageChange )
- {
- retranslateUi( this );
- }
- QWidget::changeEvent( event );
-}
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "sys_info_widget.h"
+#include "system.h"
+
+CSysInfoWidget::CSysInfoWidget( QWidget *parent ) :
+ QWidget( parent )
+{
+ setupUi( this );
+
+ osLabel->setText( CSystem::GetInstance().sysInfo.osName.c_str() );
+ cpuLabel->setText( CSystem::GetInstance().sysInfo.cpuName.c_str() );
+
+ ramLabel->setText(
+ QString().setNum( CSystem::GetInstance().sysInfo.totalRAM ).append( " Mb" ) );
+
+ gfxcardLabel->setText( CSystem::GetInstance().sysInfo.videoDevice.c_str() );
+ gfxdriverLabel->setText( CSystem::GetInstance().sysInfo.videoDriverVersion.c_str() );
+}
+
+CSysInfoWidget::~CSysInfoWidget()
+{
+}
+
+void CSysInfoWidget::changeEvent( QEvent *event )
+{
+ if( event->type() == QEvent::LanguageChange )
+ {
+ retranslateUi( this );
+ }
+ QWidget::changeEvent( event );
+}
diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_widget.h b/code/ryzom/tools/client/client_config_qt/sys_info_widget.h
index 8bb885aee..d266c119d 100644
--- a/code/ryzom/tools/client/client_config_qt/sys_info_widget.h
+++ b/code/ryzom/tools/client/client_config_qt/sys_info_widget.h
@@ -1,38 +1,38 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef SYSINFOWIDGET_H
-#define SYSINFOWIDGET_H
-
-#include "ui_sys_info_widget.h"
-
-
-/**
- @brief The system information page of the configuration tool
-*/
-class CSysInfoWidget : public QWidget, public Ui::sys_info_widget
-{
- Q_OBJECT
-public:
- CSysInfoWidget( QWidget *parent = NULL );
- ~CSysInfoWidget();
-
-protected:
- void changeEvent( QEvent *event );
-
-};
-
-#endif // SYSINFOWIDGET_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef SYSINFOWIDGET_H
+#define SYSINFOWIDGET_H
+
+#include "ui_sys_info_widget.h"
+
+
+/**
+ @brief The system information page of the configuration tool
+*/
+class CSysInfoWidget : public QWidget, public Ui::sys_info_widget
+{
+ Q_OBJECT
+public:
+ CSysInfoWidget( QWidget *parent = NULL );
+ ~CSysInfoWidget();
+
+protected:
+ void changeEvent( QEvent *event );
+
+};
+
+#endif // SYSINFOWIDGET_H
diff --git a/code/ryzom/tools/client/client_config_qt/system.cpp b/code/ryzom/tools/client/client_config_qt/system.cpp
index 1bb50e845..c4c93f76d 100644
--- a/code/ryzom/tools/client/client_config_qt/system.cpp
+++ b/code/ryzom/tools/client/client_config_qt/system.cpp
@@ -1,181 +1,181 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#include "system.h"
-#include
-#include
-#include
-#include
-
-CSystem *CSystem::instance = NULL;
-
-CSystem::CSystem()
-{
- GatherSysInfo();
-#ifdef WIN32
- GatherD3DInfo();
-#endif
- GatherOpenGLInfo();
-}
-
-CSystem::~CSystem()
-{
- instance = 0;
-}
-
-
-void CSystem::GatherSysInfo()
-{
- std::string device;
- uint64 driver;
-
- if( NLMISC::CSystemInfo::getVideoInfo( device, driver ) )
- {
- sysInfo.videoDevice = device;
-
- //////////////////////////////////////////////////////////////
- // FIXME
- // This is taken from the original configuration tool, and
- // it generates the same *wrong* version number
- //////////////////////////////////////////////////////////////
- uint32 version = static_cast< uint32 >( driver & 0xffff );
- std::stringstream ss;
-
- ss << ( version / 1000 % 10 );
- ss << ".";
- ss << ( version / 100 % 10 );
- ss << ".";
- ss << ( version / 10 % 10 );
- ss << ".";
- ss << ( version % 10 );
-
- sysInfo.videoDriverVersion = ss.str();
- //////////////////////////////////////////////////////////////
- }
- else
- {
- sysInfo.videoDevice = "video card";
- sysInfo.videoDriverVersion = "0.0.0.0";
- }
-
- sysInfo.osName = NLMISC::CSystemInfo::getOS();
- sysInfo.cpuName = NLMISC::CSystemInfo::getProc();
- sysInfo.totalRAM = NLMISC::CSystemInfo::totalPhysicalMemory();
- sysInfo.totalRAM /= ( 1024 * 1024 );
-}
-
-#ifdef WIN32
-void CSystem::GatherD3DInfo()
-{
- NL3D::IDriver *driver = NULL;
- try
- {
- driver = NL3D::CDRU::createD3DDriver();
-
- NL3D::IDriver::CAdapter adapter;
-
- if( driver->getAdapter( 0xffffffff, adapter ) )
- {
- d3dInfo.device = adapter.Description;
- d3dInfo.driver = adapter.Driver;
-
- sint64 ver = adapter.DriverVersion;
- std::stringstream ss;
- ss << static_cast< uint16 >( ver >> 48 );
- ss << ".";
- ss << static_cast< uint16 >( ver >> 32 );
- ss << ".";
- ss << static_cast< uint16 >( ver >> 16 );
- ss << ".";
- ss << static_cast< uint16 >( ver & 0xFFFF );
- d3dInfo.driverVersion = ss.str();
- }
-
- GetVideoModes( d3dInfo.modes, driver );
-
- driver->release();
- }
-
- catch( NLMISC::Exception &e )
- {
- nlwarning( e.what() );
- }
-}
-#endif
-
-void CSystem::GatherOpenGLInfo()
-{
- QGLWidget *gl = new QGLWidget();
-
- gl->makeCurrent();
-
- const char *s = NULL;
- s = reinterpret_cast< const char * >( glGetString( GL_VENDOR ) );
- if( s != NULL )
- openglInfo.vendor.assign( s );
-
- s = reinterpret_cast< const char * >( glGetString( GL_RENDERER ) );
- if( s != NULL )
- openglInfo.renderer.assign( s );
-
- s = reinterpret_cast< const char * >( glGetString( GL_VERSION ) );
- if( s != NULL )
- openglInfo.driverVersion.assign( s );
-
- s = reinterpret_cast< const char * >( glGetString( GL_EXTENSIONS ) );
- if( s != NULL )
- {
- openglInfo.extensions.assign( s );
- for( std::string::iterator itr = openglInfo.extensions.begin(); itr != openglInfo.extensions.end(); ++itr )
- if( *itr == ' ' )
- *itr = '\n';
- }
-
- delete gl;
-
- NL3D::IDriver *driver = NULL;
- try
- {
- driver = NL3D::CDRU::createGlDriver();
- GetVideoModes( openglInfo.modes, driver );
- driver->release();
- }
-
- catch( NLMISC::Exception &e )
- {
- nlwarning( e.what() );
- }
-}
-
-void CSystem::GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const
-{
- std::vector< NL3D::GfxMode > modes;
- driver->getModes( modes );
-
- for( std::vector< NL3D::GfxMode >::iterator itr = modes.begin(); itr != modes.end(); ++itr )
- {
- if( ( itr->Width >= 800 ) && ( itr->Height >= 600 ) && ( itr->Depth == 32 ) && ( itr->Frequency >= 60 ) )
- {
- CVideoMode mode;
- mode.depth = itr->Depth;
- mode.widht = itr->Width;
- mode.height = itr->Height;
- mode.frequency = itr->Frequency;
-
- dst.push_back( mode );
- }
- }
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "system.h"
+#include
+#include
+#include
+#include
+
+CSystem *CSystem::instance = NULL;
+
+CSystem::CSystem()
+{
+ GatherSysInfo();
+#ifdef WIN32
+ GatherD3DInfo();
+#endif
+ GatherOpenGLInfo();
+}
+
+CSystem::~CSystem()
+{
+ instance = 0;
+}
+
+
+void CSystem::GatherSysInfo()
+{
+ std::string device;
+ uint64 driver;
+
+ if( NLMISC::CSystemInfo::getVideoInfo( device, driver ) )
+ {
+ sysInfo.videoDevice = device;
+
+ //////////////////////////////////////////////////////////////
+ // FIXME
+ // This is taken from the original configuration tool, and
+ // it generates the same *wrong* version number
+ //////////////////////////////////////////////////////////////
+ uint32 version = static_cast< uint32 >( driver & 0xffff );
+ std::stringstream ss;
+
+ ss << ( version / 1000 % 10 );
+ ss << ".";
+ ss << ( version / 100 % 10 );
+ ss << ".";
+ ss << ( version / 10 % 10 );
+ ss << ".";
+ ss << ( version % 10 );
+
+ sysInfo.videoDriverVersion = ss.str();
+ //////////////////////////////////////////////////////////////
+ }
+ else
+ {
+ sysInfo.videoDevice = "video card";
+ sysInfo.videoDriverVersion = "0.0.0.0";
+ }
+
+ sysInfo.osName = NLMISC::CSystemInfo::getOS();
+ sysInfo.cpuName = NLMISC::CSystemInfo::getProc();
+ sysInfo.totalRAM = NLMISC::CSystemInfo::totalPhysicalMemory();
+ sysInfo.totalRAM /= ( 1024 * 1024 );
+}
+
+#ifdef WIN32
+void CSystem::GatherD3DInfo()
+{
+ NL3D::IDriver *driver = NULL;
+ try
+ {
+ driver = NL3D::CDRU::createD3DDriver();
+
+ NL3D::IDriver::CAdapter adapter;
+
+ if( driver->getAdapter( 0xffffffff, adapter ) )
+ {
+ d3dInfo.device = adapter.Description;
+ d3dInfo.driver = adapter.Driver;
+
+ sint64 ver = adapter.DriverVersion;
+ std::stringstream ss;
+ ss << static_cast< uint16 >( ver >> 48 );
+ ss << ".";
+ ss << static_cast< uint16 >( ver >> 32 );
+ ss << ".";
+ ss << static_cast< uint16 >( ver >> 16 );
+ ss << ".";
+ ss << static_cast< uint16 >( ver & 0xFFFF );
+ d3dInfo.driverVersion = ss.str();
+ }
+
+ GetVideoModes( d3dInfo.modes, driver );
+
+ driver->release();
+ }
+
+ catch( NLMISC::Exception &e )
+ {
+ nlwarning( e.what() );
+ }
+}
+#endif
+
+void CSystem::GatherOpenGLInfo()
+{
+ QGLWidget *gl = new QGLWidget();
+
+ gl->makeCurrent();
+
+ const char *s = NULL;
+ s = reinterpret_cast< const char * >( glGetString( GL_VENDOR ) );
+ if( s != NULL )
+ openglInfo.vendor.assign( s );
+
+ s = reinterpret_cast< const char * >( glGetString( GL_RENDERER ) );
+ if( s != NULL )
+ openglInfo.renderer.assign( s );
+
+ s = reinterpret_cast< const char * >( glGetString( GL_VERSION ) );
+ if( s != NULL )
+ openglInfo.driverVersion.assign( s );
+
+ s = reinterpret_cast< const char * >( glGetString( GL_EXTENSIONS ) );
+ if( s != NULL )
+ {
+ openglInfo.extensions.assign( s );
+ for( std::string::iterator itr = openglInfo.extensions.begin(); itr != openglInfo.extensions.end(); ++itr )
+ if( *itr == ' ' )
+ *itr = '\n';
+ }
+
+ delete gl;
+
+ NL3D::IDriver *driver = NULL;
+ try
+ {
+ driver = NL3D::CDRU::createGlDriver();
+ GetVideoModes( openglInfo.modes, driver );
+ driver->release();
+ }
+
+ catch( NLMISC::Exception &e )
+ {
+ nlwarning( e.what() );
+ }
+}
+
+void CSystem::GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const
+{
+ std::vector< NL3D::GfxMode > modes;
+ driver->getModes( modes );
+
+ for( std::vector< NL3D::GfxMode >::iterator itr = modes.begin(); itr != modes.end(); ++itr )
+ {
+ if( ( itr->Width >= 800 ) && ( itr->Height >= 600 ) && ( itr->Depth == 32 ) && ( itr->Frequency >= 60 ) )
+ {
+ CVideoMode mode;
+ mode.depth = itr->Depth;
+ mode.widht = itr->Width;
+ mode.height = itr->Height;
+ mode.frequency = itr->Frequency;
+
+ dst.push_back( mode );
+ }
+ }
}
\ No newline at end of file
diff --git a/code/ryzom/tools/client/client_config_qt/system.h b/code/ryzom/tools/client/client_config_qt/system.h
index fceb6cdd3..bcb5f90bf 100644
--- a/code/ryzom/tools/client/client_config_qt/system.h
+++ b/code/ryzom/tools/client/client_config_qt/system.h
@@ -1,112 +1,112 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef SYSTEM_H
-#define SYSTEM_H
-
-#include
-#include "config.h"
-
-namespace NL3D
-{
-class IDriver;
-}
-
-struct CVideoMode
-{
- unsigned int widht;
- unsigned int height;
- unsigned int depth;
- unsigned int frequency;
-
- CVideoMode()
- {
- widht = 0;
- height = 0;
- depth = 0;
- frequency = 0;
- }
-
- bool operator==( CVideoMode &o )
- {
- if( ( o.widht == widht ) && ( o.height == height ) && ( o.depth == depth ) && ( o.frequency == frequency ) )
- return true;
- else
- return false;
- }
-};
-
-/**
- @brief Singleton class that holds the system information, configs, etc
-*/
-class CSystem
-{
-public:
- CSystem();
- ~CSystem();
-
- static CSystem &GetInstance()
- {
- if( instance == 0 )
- {
- instance = new CSystem;
- }
- return *instance;
- }
-
- struct CSysInfo
- {
- std::string videoDevice;
- std::string videoDriverVersion;
- std::string osName;
- std::string cpuName;
- uint64 totalRAM;
- } sysInfo;
-
-#ifdef WIN32
- struct CD3DInfo
- {
- std::string device;
- std::string driver;
- std::string driverVersion;
- std::vector< CVideoMode > modes;
- } d3dInfo;
-#endif
-
- struct COpenGLInfo
- {
- std::string vendor;
- std::string renderer;
- std::string driverVersion;
- std::string extensions;
- std::vector< CVideoMode > modes;
- } openglInfo;
-
- CConfig config;
-
-private:
- void GatherSysInfo();
-#ifdef WIN32
- void GatherD3DInfo();
-#endif
- void GatherOpenGLInfo();
-
- void GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const;
-
- static CSystem *instance;
-};
-
-#endif // SYSTEM_H
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef SYSTEM_H
+#define SYSTEM_H
+
+#include
+#include "config.h"
+
+namespace NL3D
+{
+class IDriver;
+}
+
+struct CVideoMode
+{
+ unsigned int widht;
+ unsigned int height;
+ unsigned int depth;
+ unsigned int frequency;
+
+ CVideoMode()
+ {
+ widht = 0;
+ height = 0;
+ depth = 0;
+ frequency = 0;
+ }
+
+ bool operator==( CVideoMode &o )
+ {
+ if( ( o.widht == widht ) && ( o.height == height ) && ( o.depth == depth ) && ( o.frequency == frequency ) )
+ return true;
+ else
+ return false;
+ }
+};
+
+/**
+ @brief Singleton class that holds the system information, configs, etc
+*/
+class CSystem
+{
+public:
+ CSystem();
+ ~CSystem();
+
+ static CSystem &GetInstance()
+ {
+ if( instance == 0 )
+ {
+ instance = new CSystem;
+ }
+ return *instance;
+ }
+
+ struct CSysInfo
+ {
+ std::string videoDevice;
+ std::string videoDriverVersion;
+ std::string osName;
+ std::string cpuName;
+ uint64 totalRAM;
+ } sysInfo;
+
+#ifdef WIN32
+ struct CD3DInfo
+ {
+ std::string device;
+ std::string driver;
+ std::string driverVersion;
+ std::vector< CVideoMode > modes;
+ } d3dInfo;
+#endif
+
+ struct COpenGLInfo
+ {
+ std::string vendor;
+ std::string renderer;
+ std::string driverVersion;
+ std::string extensions;
+ std::vector< CVideoMode > modes;
+ } openglInfo;
+
+ CConfig config;
+
+private:
+ void GatherSysInfo();
+#ifdef WIN32
+ void GatherD3DInfo();
+#endif
+ void GatherOpenGLInfo();
+
+ void GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const;
+
+ static CSystem *instance;
+};
+
+#endif // SYSTEM_H
diff --git a/code/ryzom/tools/client/client_config_qt/widget_base.h b/code/ryzom/tools/client/client_config_qt/widget_base.h
index 1cc30c0c3..d9948aeac 100644
--- a/code/ryzom/tools/client/client_config_qt/widget_base.h
+++ b/code/ryzom/tools/client/client_config_qt/widget_base.h
@@ -1,61 +1,61 @@
-// Ryzom - MMORPG Framework
-// Copyright (C) 2010 Winch Gate Property Limited
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-#ifndef WIDGETBASE_H
-#define WIDGETBASE_H
-
-#include
-
-/**
- @brief Base class for the config tool's settings page widgets.
-*/
-class CWidgetBase : public QWidget
-{
- Q_OBJECT
-
-public:
- CWidgetBase( QWidget *parent = NULL ) : QWidget( parent ) {}
- ~CWidgetBase() {}
-
- /**
- @brief Tells the widget to load it's values from the config.
- */
- virtual void load() = 0;
-
- /**
- @brief Tells the widget to save it's values into the config.
- */
- virtual void save() = 0;
-
-signals:
- /**
- @brief Emitted when the user changes a setting.
- */
- void changed();
-
-
-private slots:
- /**
- @brief Triggered when something changes in the widget, emits the Changed() signal.
- */
- void onSomethingChanged()
- {
- emit changed();
- }
-};
-
-
-#endif
+// Ryzom - MMORPG Framework
+// Copyright (C) 2010 Winch Gate Property Limited
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#ifndef WIDGETBASE_H
+#define WIDGETBASE_H
+
+#include
+
+/**
+ @brief Base class for the config tool's settings page widgets.
+*/
+class CWidgetBase : public QWidget
+{
+ Q_OBJECT
+
+public:
+ CWidgetBase( QWidget *parent = NULL ) : QWidget( parent ) {}
+ ~CWidgetBase() {}
+
+ /**
+ @brief Tells the widget to load it's values from the config.
+ */
+ virtual void load() = 0;
+
+ /**
+ @brief Tells the widget to save it's values into the config.
+ */
+ virtual void save() = 0;
+
+signals:
+ /**
+ @brief Emitted when the user changes a setting.
+ */
+ void changed();
+
+
+private slots:
+ /**
+ @brief Triggered when something changes in the widget, emits the Changed() signal.
+ */
+ void onSomethingChanged()
+ {
+ emit changed();
+ }
+};
+
+
+#endif