diff --git a/code/nel/tools/3d/panoply_preview/main_window.cpp b/code/nel/tools/3d/panoply_preview/main_window.cpp index 4f7b7ddc2..ea415ba3a 100644 --- a/code/nel/tools/3d/panoply_preview/main_window.cpp +++ b/code/nel/tools/3d/panoply_preview/main_window.cpp @@ -74,7 +74,7 @@ CMainWindow::CMainWindow(const QMap &customSizeHints, QWidget *p createStatusBar(); m_PanoplyPreview = new CPanoplyPreview(this); - setCentralWidget(m_PanoplyPreview); + setCentralWidget(m_PanoplyPreview); createDockWindows(); } diff --git a/code/ryzom/CMakeLists.txt b/code/ryzom/CMakeLists.txt index 3b955306f..46c8bcb68 100644 --- a/code/ryzom/CMakeLists.txt +++ b/code/ryzom/CMakeLists.txt @@ -8,17 +8,7 @@ SET(RZ_SERVER_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/server/src) ADD_SUBDIRECTORY(common) ADD_SUBDIRECTORY(tools) - -IF(WITH_RYZOM_CLIENT) - IF(NOT WITH_GUI) - MESSAGE( FATAL_ERROR "The client cannot be built without the NeL GUI Library (WITH_GUI)") - ENDIF() - - ADD_SUBDIRECTORY(client) -ELSEIF(WITH_RYZOM_TOOLS) - # Need clientsheets lib for sheets packer tool - ADD_SUBDIRECTORY(client) -ENDIF() +ADD_SUBDIRECTORY(client) IF(WITH_RYZOM_SERVER OR WITH_RYZOM_TOOLS) # Need servershare for build packed collision tool diff --git a/code/ryzom/client/CMakeLists.txt b/code/ryzom/client/CMakeLists.txt index 106f553bd..919f9fe22 100644 --- a/code/ryzom/client/CMakeLists.txt +++ b/code/ryzom/client/CMakeLists.txt @@ -1,4 +1,5 @@ # Need clientsheets lib for sheets packer tool +# Need seven_zip for patch_gen and ryzom_installer ADD_SUBDIRECTORY(src) IF(WITH_RYZOM_CLIENT) diff --git a/code/ryzom/client/src/CMakeLists.txt b/code/ryzom/client/src/CMakeLists.txt index 2d36badba..095759c1b 100644 --- a/code/ryzom/client/src/CMakeLists.txt +++ b/code/ryzom/client/src/CMakeLists.txt @@ -1,10 +1,18 @@ -# Need clientsheets lib for sheets packer tool -ADD_SUBDIRECTORY(client_sheets) +IF(WITH_RYZOM_TOOLS OR WITH_RYZOM_CLIENT) + # Need clientsheets lib for sheets packer tool + ADD_SUBDIRECTORY(client_sheets) +ENDIF() -# Need seven_zip lib for patch_gen tool -ADD_SUBDIRECTORY(seven_zip) +IF(WITH_RYZOM_TOOLS OR WITH_RYZOM_CLIENT OR WITH_RYZOM_INSTALLER) + # Need seven_zip lib for patch_gen tool + ADD_SUBDIRECTORY(seven_zip) +ENDIF() IF(WITH_RYZOM_CLIENT) + IF(NOT WITH_GUI) + MESSAGE(FATAL_ERROR "The client cannot be built without the NeL GUI Library (WITH_GUI)") + ENDIF() + # Patch should never be enabled on Steam IF(WITH_RYZOM_STEAM) ADD_DEFINITIONS(-DRZ_USE_STEAM) diff --git a/code/ryzom/tools/client/CMakeLists.txt b/code/ryzom/tools/client/CMakeLists.txt index b8b6efce4..66f8c9b48 100644 --- a/code/ryzom/tools/client/CMakeLists.txt +++ b/code/ryzom/tools/client/CMakeLists.txt @@ -6,14 +6,14 @@ IF(WITH_RYZOM_CLIENT) IF(WITH_QT OR WITH_QT5) ADD_SUBDIRECTORY(client_config_qt) - - IF(WITH_RYZOM_INSTALLER) - ADD_SUBDIRECTORY(ryzom_installer) - ENDIF() ENDIF() ENDIF() +IF(WITH_QT5 AND WITH_RYZOM_INSTALLER) + ADD_SUBDIRECTORY(ryzom_installer) +ENDIF() + IF(WITH_RYZOM_TOOLS) ADD_SUBDIRECTORY(r2_islands_textures) ENDIF() diff --git a/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp b/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp index 048074d4c..8815396f7 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/configfile.cpp @@ -258,6 +258,11 @@ const CServer& CConfigFile::getServer(const QString &id) const return getServer(); } +void CConfigFile::backupProfiles() +{ + m_backupProfiles = m_profiles; +} + int CConfigFile::getProfilesCount() const { return m_profiles.size(); @@ -497,6 +502,8 @@ bool CConfigFile::isRyzomInstalledIn(const QString &directory) const bool CConfigFile::areRyzomDataInstalledIn(const QString &directory) const { + if (directory.isEmpty()) return false; + QDir dir(directory); // directory doesn't exist @@ -523,6 +530,8 @@ bool CConfigFile::areRyzomDataInstalledIn(const QString &directory) const bool CConfigFile::isRyzomClientInstalledIn(const QString &directory) const { + if (directory.isEmpty()) return false; + QDir dir(directory); // directory doesn't exist @@ -552,6 +561,8 @@ bool CConfigFile::isRyzomClientInstalledIn(const QString &directory) const bool CConfigFile::foundTemporaryFiles(const QString &directory) const { + if (directory.isEmpty()) return false; + QDir dir(directory); // directory doesn't exist diff --git a/code/ryzom/tools/client/ryzom_installer/src/configfile.h b/code/ryzom/tools/client/ryzom_installer/src/configfile.h index d95894fae..67c1a5547 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/configfile.h +++ b/code/ryzom/tools/client/ryzom_installer/src/configfile.h @@ -118,6 +118,9 @@ public: CProfiles getProfiles() const { return m_profiles; } void setProfiles(const CProfiles &profiles) { m_profiles = profiles; } + CProfiles getBackupProfiles() const { return m_backupProfiles; } + void backupProfiles(); + int getProfilesCount() const; CProfile getProfile(int i = -1) const; void setProfile(int i, const CProfile &profile); @@ -193,6 +196,7 @@ private: CServers m_servers; CProfiles m_profiles; + CProfiles m_backupProfiles; QString m_installationDirectory; QString m_srcDirectory; diff --git a/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp b/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp index f129416ad..3c85a8031 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp @@ -15,6 +15,7 @@ // along with this program. If not, see . #include "stdpch.h" +#include "operation.h" #include "downloader.h" #include "nel/misc/system_info.h" @@ -24,9 +25,9 @@ #define new DEBUG_NEW #endif -CDownloader::CDownloader(QObject *parent):QObject(parent), m_manager(NULL), m_reply(NULL), m_timer(NULL), +CDownloader::CDownloader(QObject *parent, IOperationProgressListener *listener):QObject(parent), m_listener(listener), m_manager(NULL), m_reply(NULL), m_timer(NULL), m_offset(0), m_size(0), m_supportsAcceptRanges(false), m_supportsContentRange(false), - m_downloadAfterHead(false), m_aborted(false), m_file(NULL) + m_downloadAfterHead(false), m_file(NULL) { m_manager = new QNetworkAccessManager(this); m_timer = new QTimer(this); @@ -60,7 +61,7 @@ bool CDownloader::prepareFile(const QString &url, const QString &fullPath) m_downloadAfterHead = false; - emit downloadPrepare(); + if (m_listener) m_listener->operationPrepare(); m_fullPath = fullPath; m_url = url; @@ -86,15 +87,6 @@ bool CDownloader::getFile() return true; } -bool CDownloader::stop() -{ - if (!m_reply) return false; - - m_reply->abort(); - - return true; -} - void CDownloader::startTimer() { stopTimer(); @@ -154,12 +146,12 @@ void CDownloader::getFileHead() if (checkDownloadedFile()) { // file is already downloaded - emit downloadSuccess(m_size); + if (m_listener) m_listener->operationSuccess(m_size); } else { // or has wrong size - emit downloadFail(tr("File (%1B) is larger than expected (%2B)").arg(m_offset).arg(m_size)); + if (m_listener) m_listener->operationFail(tr("File (%1B) is larger than expected (%2B)").arg(m_offset).arg(m_size)); } return; @@ -189,13 +181,13 @@ void CDownloader::downloadFile() if (freeSpace < m_size - m_offset) { // we have not enough free disk space to continue download - emit downloadFail(tr("You only have %1 bytes left on device, but %2 bytes are required.").arg(freeSpace).arg(m_size - m_offset)); + if (m_listener) m_listener->operationFail(tr("You only have %1 bytes left on device, but %2 bytes are required.").arg(freeSpace).arg(m_size - m_offset)); return; } if (!openFile()) { - emit downloadFail(tr("Unable to write file")); + if (m_listener) m_listener->operationFail(tr("Unable to write file")); return; } @@ -214,7 +206,7 @@ void CDownloader::downloadFile() connect(m_reply, SIGNAL(downloadProgress(qint64, qint64)), SLOT(onDownloadProgress(qint64, qint64))); connect(m_reply, SIGNAL(readyRead()), SLOT(onDownloadRead())); - emit downloadStart(); + if (m_listener) m_listener->operationStart(); startTimer(); } @@ -230,7 +222,7 @@ void CDownloader::onTimeout() { qDebug() << "Timeout"; - emit downloadFail(tr("Timeout")); + if (m_listener) m_listener->operationFail(tr("Timeout")); } void CDownloader::onHtmlPageFinished() @@ -267,7 +259,7 @@ void CDownloader::onHeadFinished() { if (redirection.isEmpty()) { - emit downloadFail(tr("Redirection URL is not defined")); + if (m_listener) m_listener->operationFail(tr("Redirection URL is not defined")); return; } @@ -289,7 +281,7 @@ void CDownloader::onHeadFinished() else if (status == 200) { // update size - emit downloadInit(0, m_size); + if (m_listener) m_listener->operationInit(0, m_size); if (!m_supportsAcceptRanges && acceptRanges == "bytes") { @@ -321,7 +313,7 @@ void CDownloader::onHeadFinished() m_size = regexp.cap(3).toLongLong(); // update offset and size - emit downloadInit(m_offset, m_size); + if (m_listener) m_listener->operationInit(m_offset, m_size); } else { @@ -332,7 +324,7 @@ void CDownloader::onHeadFinished() // other status else { - emit downloadFail(tr("Wrong status code: %1").arg(status)); + if (m_listener) m_listener->operationFail(tr("Wrong status code: %1").arg(status)); return; } @@ -356,28 +348,29 @@ void CDownloader::onDownloadFinished() closeFile(); - if (m_aborted) + if (m_listener && m_listener->operationShouldStop()) { - m_aborted = false; - emit downloadStop(); + m_listener->operationStop(); } else { bool ok = NLMISC::CFile::setFileModificationDate(m_fullPath.toUtf8().constData(), m_lastModified.toTime_t()); - emit downloadSuccess(m_size); + if (m_listener) m_listener->operationSuccess(m_size); } } void CDownloader::onError(QNetworkReply::NetworkError error) { + if (!m_listener) return; + if (error == QNetworkReply::OperationCanceledError) { - m_aborted = true; + m_listener->operationStop(); } else { - emit downloadFail(tr("Network error: %1").arg(error)); + m_listener->operationFail(tr("Network error: %1").arg(error)); } } @@ -385,7 +378,12 @@ void CDownloader::onDownloadProgress(qint64 current, qint64 total) { stopTimer(); - emit downloadProgress(m_offset + current); + if (!m_listener) return; + + m_listener->operationProgress(m_offset + current, ""); // TODO: put file + + // abort download + if (m_listener->operationShouldStop() && m_reply) m_reply->abort(); } void CDownloader::onDownloadRead() diff --git a/code/ryzom/tools/client/ryzom_installer/src/downloader.h b/code/ryzom/tools/client/ryzom_installer/src/downloader.h index 7d9090700..4d3163723 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/downloader.h +++ b/code/ryzom/tools/client/ryzom_installer/src/downloader.h @@ -17,6 +17,8 @@ #ifndef DOWNLOADER_H #define DOWNLOADER_H +class IOperationProgressListener; + /** * Files downloader, please note that only one file can be downloaded at once. * @@ -28,41 +30,19 @@ class CDownloader : public QObject Q_OBJECT public: - CDownloader(QObject *parent); + CDownloader(QObject *parent, IOperationProgressListener *listener); virtual ~CDownloader(); bool getHtmlPageContent(const QString &url); bool prepareFile(const QString &url, const QString &fullPath); bool getFile(); - bool stop(); bool supportsResume() const { return m_supportsAcceptRanges && m_supportsContentRange; } bool isDownloading() const { return m_file != NULL; } signals: - // emitted when requesting real URL - void downloadPrepare(); - - // emitted when we got the initial (local) and total (remote) size of file - void downloadInit(qint64 current, qint64 total); - - // emitted when we begin to download - void downloadStart(); - - // emitted when the download stopped - void downloadStop(); - - // emittd when downloading - void downloadProgress(qint64 current); - - // emitted when the whole file is downloaded - void downloadSuccess(qint64 total); - - // emitted when an error occurs - void downloadFail(const QString &error); - void htmlPageContent(const QString &html); private slots: @@ -75,6 +55,8 @@ private slots: void onDownloadRead(); protected: + IOperationProgressListener *m_listener; + void startTimer(); void stopTimer(); @@ -102,7 +84,6 @@ protected: bool m_supportsContentRange; bool m_downloadAfterHead; - bool m_aborted; QFile *m_file; }; diff --git a/code/ryzom/tools/client/ryzom_installer/src/filescleaner.cpp b/code/ryzom/tools/client/ryzom_installer/src/filescleaner.cpp index e1481fcf9..79c42634a 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/filescleaner.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/filescleaner.cpp @@ -52,6 +52,8 @@ void CFilesCleaner::setDirectory(const QString &src) bool CFilesCleaner::exec() { + if (m_directory.isEmpty()) return false; + if (m_listener) m_listener->operationPrepare(); QDir dir(m_directory); diff --git a/code/ryzom/tools/client/ryzom_installer/src/filescopier.cpp b/code/ryzom/tools/client/ryzom_installer/src/filescopier.cpp index 43b54b3f9..069de1283 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/filescopier.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/filescopier.cpp @@ -110,6 +110,7 @@ void CFilesCopier::getFilesList(FilesToCopy &files) file.dst = dstPath; file.size = it.fileInfo().size(); file.date = it.fileInfo().lastModified().toTime_t(); + file.permissions = it.fileInfo().permissions(); files << file; } diff --git a/code/ryzom/tools/client/ryzom_installer/src/installwizarddialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/installdialog.cpp similarity index 91% rename from code/ryzom/tools/client/ryzom_installer/src/installwizarddialog.cpp rename to code/ryzom/tools/client/ryzom_installer/src/installdialog.cpp index aeeff44f8..ff5bfc6c7 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/installwizarddialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/installdialog.cpp @@ -15,7 +15,7 @@ // along with this program. If not, see . #include "stdpch.h" -#include "installwizarddialog.h" +#include "installdialog.h" #include "configfile.h" #include "utils.h" @@ -26,7 +26,7 @@ #define new DEBUG_NEW #endif -CInstallWizardDialog::CInstallWizardDialog():QDialog() +CInstallDialog::CInstallDialog():QDialog() { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); @@ -82,18 +82,18 @@ CInstallWizardDialog::CInstallWizardDialog():QDialog() connect(advancedCheckBox, SIGNAL(stateChanged(int)), SLOT(onShowAdvancedParameters(int))); } -CInstallWizardDialog::~CInstallWizardDialog() +CInstallDialog::~CInstallDialog() { } -void CInstallWizardDialog::onShowAdvancedParameters(int state) +void CInstallDialog::onShowAdvancedParameters(int state) { advancedFrame->setVisible(state != Qt::Unchecked); adjustSize(); } -void CInstallWizardDialog::onAnotherLocationBrowseButtonClicked() +void CInstallDialog::onAnotherLocationBrowseButtonClicked() { QString directory; @@ -116,7 +116,7 @@ void CInstallWizardDialog::onAnotherLocationBrowseButtonClicked() updateAnotherLocationText(); } -void CInstallWizardDialog::onDestinationBrowseButtonClicked() +void CInstallDialog::onDestinationBrowseButtonClicked() { QString directory = QFileDialog::getExistingDirectory(this, tr("Please choose directory where to install Ryzom")); @@ -127,17 +127,17 @@ void CInstallWizardDialog::onDestinationBrowseButtonClicked() updateDestinationText(); } -void CInstallWizardDialog::updateAnotherLocationText() +void CInstallDialog::updateAnotherLocationText() { anotherLocationRadioButton->setText(tr("Another location: %1").arg(m_anotherDirectory.isEmpty() ? tr("Undefined"):m_anotherDirectory)); } -void CInstallWizardDialog::updateDestinationText() +void CInstallDialog::updateDestinationText() { destinationLabel->setText(m_dstDirectory); } -void CInstallWizardDialog::accept() +void CInstallDialog::accept() { // check free disk space qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData()); diff --git a/code/ryzom/tools/client/ryzom_installer/src/installwizarddialog.h b/code/ryzom/tools/client/ryzom_installer/src/installdialog.h similarity index 85% rename from code/ryzom/tools/client/ryzom_installer/src/installwizarddialog.h rename to code/ryzom/tools/client/ryzom_installer/src/installdialog.h index 317a24125..3497364d2 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/installwizarddialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/installdialog.h @@ -14,10 +14,10 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -#ifndef INSTALLWIZARDDIALOG_H -#define INSTALLWIZARDDIALOG_H +#ifndef INSTALLDIALOG_H +#define INSTALLDIALOG_H -#include "ui_installwizard.h" +#include "ui_installdialog.h" /** * Wizard displayed at first launch, that asks user to choose source and destination directories. @@ -25,13 +25,13 @@ * \author Cedric 'Kervala' OCHS * \date 2016 */ -class CInstallWizardDialog : public QDialog, public Ui::InstallWizardDialog +class CInstallDialog : public QDialog, public Ui::InstallDialog { Q_OBJECT public: - CInstallWizardDialog(); - virtual ~CInstallWizardDialog(); + CInstallDialog(); + virtual ~CInstallDialog(); private slots: void onShowAdvancedParameters(int state); diff --git a/code/ryzom/tools/client/ryzom_installer/src/main.cpp b/code/ryzom/tools/client/ryzom_installer/src/main.cpp index 53bdd623d..e66115485 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/main.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/main.cpp @@ -17,9 +17,9 @@ #include "stdpch.h" #include "mainwindow.h" #include "configfile.h" -#include "migratewizarddialog.h" -#include "installwizarddialog.h" -#include "uninstallwizarddialog.h" +#include "migratedialog.h" +#include "installdialog.h" +#include "uninstalldialog.h" #include "operationdialog.h" #ifdef HAVE_CONFIG_H @@ -120,7 +120,7 @@ int main(int argc, char *argv[]) // show uninstall wizard dialog if not in silent mode if (!parser.isSet(silentOption)) { - CUninstallWizardDialog dialog; + CUninstallDialog dialog; dialog.setSelectedComponents(components); @@ -142,7 +142,7 @@ int main(int argc, char *argv[]) if (step == CConfigFile::ShowMigrateWizard) { - CMigrateWizardDialog dialog; + CMigrateDialog dialog; if (!dialog.exec()) return 1; @@ -150,7 +150,7 @@ int main(int argc, char *argv[]) } else if (step == CConfigFile::ShowInstallWizard) { - CInstallWizardDialog dialog; + CInstallDialog dialog; if (!dialog.exec()) return 1; diff --git a/code/ryzom/tools/client/ryzom_installer/src/mainwindow.cpp b/code/ryzom/tools/client/ryzom_installer/src/mainwindow.cpp index c60958479..a69426ffa 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/mainwindow.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/mainwindow.cpp @@ -18,7 +18,8 @@ #include "mainwindow.h" #include "downloader.h" #include "profilesdialog.h" -#include "uninstallwizarddialog.h" +#include "settingsdialog.h" +#include "uninstalldialog.h" #include "operationdialog.h" #include "configfile.h" #include "config.h" @@ -35,11 +36,12 @@ CMainWindow::CMainWindow():QMainWindow() setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint); // downloader - m_downloader = new CDownloader(this); + m_downloader = new CDownloader(this, NULL); connect(m_downloader, SIGNAL(htmlPageContent(QString)), SLOT(onHtmlPageContent(QString))); connect(actionProfiles, SIGNAL(triggered()), SLOT(onProfiles())); + connect(actionSettings, SIGNAL(triggered()), SLOT(onSettings())); connect(actionUninstall, SIGNAL(triggered()), SLOT(onUninstall())); connect(actionQuit, SIGNAL(triggered()), SLOT(onQuit())); @@ -51,6 +53,12 @@ CMainWindow::CMainWindow():QMainWindow() connect(profilesComboBox, SIGNAL(currentIndexChanged(int)), SLOT(onProfileChanged(int))); + // resize layout depending on content and constraints + adjustSize(); + + // fix height because to left bitmap + setFixedHeight(height()); + updateProfiles(); } @@ -85,17 +93,21 @@ void CMainWindow::onPlayClicked() const CProfile &profile = config->getProfile(profileIndex); + // get full path of client executable QString executable = config->getProfileClientFullPath(profileIndex); if (executable.isEmpty() || !QFile::exists(executable)) return; + // create arguments list QStringList arguments; arguments << "-p"; arguments << profile.id; arguments << profile.arguments.split(' '); + // launch the game with all arguments bool started = QProcess::startDetached(executable, arguments); + // define this profile as default one CConfigFile::getInstance()->setDefaultProfileIndex(profileIndex); } @@ -124,11 +136,55 @@ void CMainWindow::onConfigureClicked() void CMainWindow::onProfiles() { - CProfilesDialog dialog(this); + bool updated = false; - if (dialog.exec()) { - updateProfiles(); + CProfilesDialog dialog(this); + + if (dialog.exec()) + { + updateProfiles(); + + updated = true; + } + } + + if (updated) + { + COperationDialog dialog(this); + + dialog.setOperation(COperationDialog::OperationUpdateProfiles); + + if (!dialog.exec()) + { + // aborted + } + } +} + +void CMainWindow::onSettings() +{ + bool updated = false; + + { + CSettingsDialog dialog(this); + + if (dialog.exec()) + { + updated = true; + } + } + + if (updated) + { +// COperationDialog dialog(this); + +// dialog.setOperation(COperationDialog::OperationUpdateProfiles); + +// if (!dialog.exec()) +// { + // aborted +// } } } @@ -145,7 +201,7 @@ void CMainWindow::onUninstall() } { - CUninstallWizardDialog dialog(this); + CUninstallDialog dialog(this); dialog.setSelectedComponents(components); @@ -176,9 +232,9 @@ void CMainWindow::onAbout() QMessageBox::about(this, tr("About %1").arg("Ryzom Installer"), QString("Ryzom Installer %1").arg(QApplication::applicationVersion()) + br + - tr("Program to install, download and manage Ryzom configurations.") + + tr("Program to install, download and manage Ryzom profiles.") + br+br+ - tr("Author: %1").arg("Cedric 'Kervala' OCHS") + br + + tr("Author: %1").arg("Cédric 'Kervala' OCHS") + br + tr("Copyright: %1").arg(COPYRIGHT) + br + tr("Support: %1").arg("Ryzom Core on Bitbucket")); } diff --git a/code/ryzom/tools/client/ryzom_installer/src/mainwindow.h b/code/ryzom/tools/client/ryzom_installer/src/mainwindow.h index e52d47cb1..0f7d88138 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/mainwindow.h +++ b/code/ryzom/tools/client/ryzom_installer/src/mainwindow.h @@ -38,13 +38,17 @@ public: virtual ~CMainWindow(); public slots: + // main window buttons void onPlayClicked(); void onConfigureClicked(); + // settings menu void onProfiles(); + void onSettings(); void onUninstall(); void onQuit(); + // help menu void onAbout(); void onAboutQt(); diff --git a/code/ryzom/tools/client/ryzom_installer/src/migratewizarddialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp similarity index 91% rename from code/ryzom/tools/client/ryzom_installer/src/migratewizarddialog.cpp rename to code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp index e3f521aaa..50fa92412 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/migratewizarddialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp @@ -15,7 +15,7 @@ // along with this program. If not, see . #include "stdpch.h" -#include "migratewizarddialog.h" +#include "migratedialog.h" #include "configfile.h" #include "utils.h" @@ -26,7 +26,7 @@ #define new DEBUG_NEW #endif -CMigrateWizardDialog::CMigrateWizardDialog():QDialog() +CMigrateDialog::CMigrateDialog():QDialog() { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); @@ -79,18 +79,18 @@ CMigrateWizardDialog::CMigrateWizardDialog():QDialog() connect(advancedCheckBox, SIGNAL(stateChanged(int)), SLOT(onShowAdvancedParameters(int))); } -CMigrateWizardDialog::~CMigrateWizardDialog() +CMigrateDialog::~CMigrateDialog() { } -void CMigrateWizardDialog::onShowAdvancedParameters(int state) +void CMigrateDialog::onShowAdvancedParameters(int state) { advancedFrame->setVisible(state != Qt::Unchecked); adjustSize(); } -void CMigrateWizardDialog::onDestinationBrowseButtonClicked() +void CMigrateDialog::onDestinationBrowseButtonClicked() { QString directory = QFileDialog::getExistingDirectory(this, tr("Please choose directory where to install Ryzom")); @@ -101,12 +101,12 @@ void CMigrateWizardDialog::onDestinationBrowseButtonClicked() updateDestinationText(); } -void CMigrateWizardDialog::updateDestinationText() +void CMigrateDialog::updateDestinationText() { destinationLabel->setText(m_dstDirectory); } -void CMigrateWizardDialog::accept() +void CMigrateDialog::accept() { // check free disk space qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData()); diff --git a/code/ryzom/tools/client/ryzom_installer/src/migratewizarddialog.h b/code/ryzom/tools/client/ryzom_installer/src/migratedialog.h similarity index 84% rename from code/ryzom/tools/client/ryzom_installer/src/migratewizarddialog.h rename to code/ryzom/tools/client/ryzom_installer/src/migratedialog.h index cbc7cdd91..4e058ba99 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/migratewizarddialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/migratedialog.h @@ -14,10 +14,10 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -#ifndef MIGRATEWIZARDDIALOG_H -#define MIGRATEWIZARDDIALOG_H +#ifndef MIGRATEDIALOG_H +#define MIGRATEDIALOG_H -#include "ui_migratewizard.h" +#include "ui_migratedialog.h" /** * Wizard displayed at first launch, that asks user to choose source and destination directories. @@ -25,13 +25,13 @@ * \author Cedric 'Kervala' OCHS * \date 2016 */ -class CMigrateWizardDialog : public QDialog, public Ui::MigrateWizardDialog +class CMigrateDialog : public QDialog, public Ui::MigrateDialog { Q_OBJECT public: - CMigrateWizardDialog(); - virtual ~CMigrateWizardDialog(); + CMigrateDialog(); + virtual ~CMigrateDialog(); private slots: void onShowAdvancedParameters(int state); diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp index 61649c587..31c12f872 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp @@ -55,15 +55,7 @@ COperationDialog::COperationDialog(QWidget *parent):QDialog(parent), m_aborting( // connect(stopButton, SIGNAL(clicked()), SLOT(onStopClicked())); // downloader - m_downloader = new CDownloader(this); - - connect(m_downloader, SIGNAL(downloadPrepare()), SLOT(onProgressPrepare())); - connect(m_downloader, SIGNAL(downloadInit(qint64, qint64)), SLOT(onProgressInit(qint64, qint64))); - connect(m_downloader, SIGNAL(downloadStart()), SLOT(onProgressStart())); - connect(m_downloader, SIGNAL(downloadStop()), SLOT(onProgressStop())); - connect(m_downloader, SIGNAL(downloadProgress(qint64, QString)), SLOT(onProgressProgress(qint64, QString))); - connect(m_downloader, SIGNAL(downloadSuccess(qint64)), SLOT(onProgressSuccess(qint64))); - connect(m_downloader, SIGNAL(downloadFail(QString)), SLOT(onProgressFail(QString))); + m_downloader = new CDownloader(this, this); connect(operationButtonBox, SIGNAL(clicked(QAbstractButton*)), SLOT(onAbortClicked())); @@ -102,6 +94,10 @@ void COperationDialog::processNextStep() processMigrateNextStep(); break; + case OperationUpdateProfiles: + processUpdateProfilesNextStep(); + break; + case OperationInstall: processInstallNextStep(); break; @@ -201,8 +197,16 @@ void COperationDialog::processMigrateNextStep() } } +void COperationDialog::processUpdateProfilesNextStep() +{ + // TODO: check all servers are downloaded + // TODO: delete profiles directories that are not used anymore + // TODO: create shortcuts +} + void COperationDialog::processInstallNextStep() { + // TODO: implement } void COperationDialog::processUninstallNextStep() @@ -466,6 +470,21 @@ void COperationDialog::extractBnpClient() env.insert("STARTUPPATH", ""); process.setProcessEnvironment(env); + // permissions to execute script + QFileDevice::Permissions permissions; + permissions |= QFileDevice::ExeOther; + permissions |= QFileDevice::ExeOwner; + permissions |= QFileDevice::ExeUser; + permissions |= QFileDevice::ReadOther; + permissions |= QFileDevice::ReadOwner; + permissions |= QFileDevice::ReadUser; + permissions |= QFileDevice::WriteOwner; + + if (!QFile::setPermissions(upgradeScript, permissions)) + { + qDebug() << "Unable to set executable flag to" << upgradeScript; + } + process.start(upgradeScript); while (process.waitForFinished()) diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h index fe252ab6a..8aef3ec02 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.h @@ -42,6 +42,7 @@ public: { OperationNone, OperationMigrate, + OperationUpdateProfiles, OperationInstall, OperationUninstall }; @@ -92,6 +93,7 @@ protected: void processNextStep(); void processMigrateNextStep(); + void processUpdateProfilesNextStep(); void processInstallNextStep(); void processUninstallNextStep(); diff --git a/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h b/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h index 5a8c6516d..268525fd6 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h @@ -17,7 +17,7 @@ #ifndef PROFILESDIALOG_H #define PROFILESDIALOG_H -#include "ui_profiles.h" +#include "ui_profilesdialog.h" class CProfilesModel; class CServersModel; diff --git a/code/ryzom/tools/client/ryzom_installer/src/profilesmodel.cpp b/code/ryzom/tools/client/ryzom_installer/src/profilesmodel.cpp index 42f07ad4c..3b8441381 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/profilesmodel.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/profilesmodel.cpp @@ -57,6 +57,7 @@ bool CProfilesModel::removeRows(int row, int count, const QModelIndex &parent) bool CProfilesModel::save() const { + CConfigFile::getInstance()->backupProfiles(); CConfigFile::getInstance()->setProfiles(m_profiles); CConfigFile::getInstance()->save(); diff --git a/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.cpp index a919bc2c7..7ffe515f5 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.cpp @@ -16,14 +16,31 @@ #include "stdpch.h" #include "settingsdialog.h" +#include "configfile.h" #ifdef DEBUG_NEW #define new DEBUG_NEW #endif -CSettingsDialog::CSettingsDialog():QDialog() +CSettingsDialog::CSettingsDialog(QWidget *parent):QDialog(parent) { setupUi(this); + + CConfigFile *config = CConfigFile::getInstance(); + + // only 64 bits OS can switch between 32 and 64 bits + use64bitsClientsCheckBox->setEnabled(config->has64bitsOS()); + + // read value from config + use64bitsClientsCheckBox->setChecked(config->use64BitsClient()); + + connect(installationDirectoryButton, SIGNAL(clicked()), SLOT(onInstallationDirectoryButtonClicked())); + + // resize layout depending on content and constraints + adjustSize(); + + // fix height because to left bitmap + setFixedHeight(height()); } CSettingsDialog::~CSettingsDialog() @@ -36,3 +53,14 @@ void CSettingsDialog::accept() QDialog::accept(); } + +void CSettingsDialog::onInstallationDirectoryButtonClicked() +{ + QString directory = QFileDialog::getExistingDirectory(this, tr("Please choose directory where to install Ryzom")); + + if (directory.isEmpty()) return; + +// m_dstDirectory = directory; + +// updateDestinationText(); +} diff --git a/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.h b/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.h index f8e3144f7..285a6417b 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/settingsdialog.h @@ -17,7 +17,7 @@ #ifndef SETTINGSDIALOG_H #define SETTINGSDIALOG_H -#include "ui_settings.h" +#include "ui_settingsdialog.h" /** * Settings dialog @@ -30,9 +30,12 @@ class CSettingsDialog : public QDialog, public Ui::SettingsDialog Q_OBJECT public: - CSettingsDialog(); + CSettingsDialog(QWidget *parent = NULL); virtual ~CSettingsDialog(); +public slots: + void onInstallationDirectoryButtonClicked(); + private slots: void accept(); }; diff --git a/code/ryzom/tools/client/ryzom_installer/src/uninstallwizarddialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.cpp similarity index 84% rename from code/ryzom/tools/client/ryzom_installer/src/uninstallwizarddialog.cpp rename to code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.cpp index 4b3745f1b..aee6290f1 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/uninstallwizarddialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.cpp @@ -15,7 +15,7 @@ // along with this program. If not, see . #include "stdpch.h" -#include "uninstallwizarddialog.h" +#include "uninstalldialog.h" #include "configfile.h" #include "utils.h" @@ -26,7 +26,7 @@ #define new DEBUG_NEW #endif -CUninstallWizardDialog::CUninstallWizardDialog(QWidget *parent):QDialog(parent), m_installerIndex(-1) +CUninstallDialog::CUninstallDialog(QWidget *parent):QDialog(parent), m_installerIndex(-1) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); @@ -76,6 +76,7 @@ CUninstallWizardDialog::CUninstallWizardDialog(QWidget *parent):QDialog(parent), } + // installer m_installerIndex = model->rowCount(); item = new QStandardItem(tr("Ryzom Installer")); @@ -85,11 +86,15 @@ CUninstallWizardDialog::CUninstallWizardDialog(QWidget *parent):QDialog(parent), componentsTreeView->setModel(model); componentsTreeView->resizeColumnToContents(0); + // resize layout depending on content and constraints adjustSize(); + // fix height because to left bitmap + setFixedHeight(height()); + // click signals connect(uninstallButton, SIGNAL(clicked()), SLOT(accept())); - connect(quitButton, SIGNAL(clicked()), SLOT(reject())); + connect(cancelButton, SIGNAL(clicked()), SLOT(reject())); connect(model, SIGNAL(itemChanged(QStandardItem *)), SLOT(onItemChanged(QStandardItem *))); // semi-hack to not update UI on another thread @@ -97,18 +102,19 @@ CUninstallWizardDialog::CUninstallWizardDialog(QWidget *parent):QDialog(parent), connect(this, SIGNAL(updateLayout()), SLOT(onUpdateLayout())); } -CUninstallWizardDialog::~CUninstallWizardDialog() +CUninstallDialog::~CUninstallDialog() { } -void CUninstallWizardDialog::showEvent(QShowEvent *event) +void CUninstallDialog::showEvent(QShowEvent *event) { QDialog::showEvent(event); - QtConcurrent::run(this, &CUninstallWizardDialog::updateSizes); + // update size of all components sizes in a thread to not block interface + QtConcurrent::run(this, &CUninstallDialog::updateSizes); } -void CUninstallWizardDialog::setSelectedComponents(const SUninstallComponents &components) +void CUninstallDialog::setSelectedComponents(const SUninstallComponents &components) { QStandardItemModel *model = qobject_cast(componentsTreeView->model()); if (model == NULL) return; @@ -144,7 +150,7 @@ void CUninstallWizardDialog::setSelectedComponents(const SUninstallComponents &c if (item) item->setCheckState(components.installer ? Qt::Checked : Qt::Unchecked); } -SUninstallComponents CUninstallWizardDialog::getSelectedCompenents() const +SUninstallComponents CUninstallDialog::getSelectedCompenents() const { SUninstallComponents res; @@ -184,35 +190,34 @@ SUninstallComponents CUninstallWizardDialog::getSelectedCompenents() const return res; } -void CUninstallWizardDialog::accept() +void CUninstallDialog::accept() { QDialog::accept(); } -void CUninstallWizardDialog::onItemChanged(QStandardItem * /* item */) +void CUninstallDialog::onItemChanged(QStandardItem * /* item */) { updateButtons(); } -void CUninstallWizardDialog::onUpdateSize(int row, const QString &text) +void CUninstallDialog::onUpdateSize(int row, const QString &text) { QStandardItemModel *model = qobject_cast(componentsTreeView->model()); if (model == NULL) return; + // set size for a component QStandardItem *item = new QStandardItem(text); model->setItem(row, 1, item); } -void CUninstallWizardDialog::onUpdateLayout() +void CUninstallDialog::onUpdateLayout() { componentsTreeView->resizeColumnToContents(1); updateButtons(); - - adjustSize(); } -void CUninstallWizardDialog::updateSizes() +void CUninstallDialog::updateSizes() { CConfigFile *config = CConfigFile::getInstance(); @@ -247,17 +252,18 @@ void CUninstallWizardDialog::updateSizes() emit updateLayout(); } -void CUninstallWizardDialog::updateButtons() +void CUninstallDialog::updateButtons() { QStandardItemModel *model = qobject_cast(componentsTreeView->model()); + if (model == NULL) return; int checkedCount = 0; - // Uninstall button should be enabled only if at least one component is selected for (int i = 0; i < model->rowCount(); ++i) { if (model->item(i)->checkState() == Qt::Checked) ++checkedCount; } + // Uninstall button should be enabled only if at least one component is checked uninstallButton->setEnabled(checkedCount > 0); } diff --git a/code/ryzom/tools/client/ryzom_installer/src/uninstallwizarddialog.h b/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.h similarity index 80% rename from code/ryzom/tools/client/ryzom_installer/src/uninstallwizarddialog.h rename to code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.h index 286ba4085..d9bea4449 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/uninstallwizarddialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/uninstalldialog.h @@ -14,25 +14,26 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -#ifndef UNINSTALLWIZARDDIALOG_H -#define UNINSTALLWIZARDDIALOG_H +#ifndef UNINSTALLDIALOG_H +#define UNINSTALLDIALOG_H -#include "ui_uninstallwizard.h" +#include "ui_uninstalldialog.h" #include "operation.h" /** - * Wizard displayed at first launch, that asks user to choose source and destination directories. + * Wizard displayed when uninstalling components from Add/Remove Program under Windows + * or when user clicks on Uninstall in main menu. * * \author Cedric 'Kervala' OCHS * \date 2016 */ -class CUninstallWizardDialog : public QDialog, public Ui::UninstallWizardDialog +class CUninstallDialog : public QDialog, public Ui::UninstallDialog { Q_OBJECT public: - CUninstallWizardDialog(QWidget *parent = NULL); - virtual ~CUninstallWizardDialog(); + CUninstallDialog(QWidget *parent = NULL); + virtual ~CUninstallDialog(); void setSelectedComponents(const SUninstallComponents &components); SUninstallComponents getSelectedCompenents() const; diff --git a/code/ryzom/tools/client/ryzom_installer/src/utils.cpp b/code/ryzom/tools/client/ryzom_installer/src/utils.cpp index b07db1e43..5ab73f298 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/utils.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/utils.cpp @@ -37,23 +37,27 @@ QString qBytesToHumanReadable(qint64 bytes) qint64 getDirectorySize(const QString &directory) { qint64 size = 0; - QDir dir(directory); - if (dir.exists()) + if (!directory.isEmpty()) { - QFileInfoList list = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot); + QDir dir(directory); - for (int i = 0; i < list.size(); ++i) + if (dir.exists()) { - QFileInfo fileInfo = list.at(i); + QFileInfoList list = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot); - if (fileInfo.isDir()) + for (int i = 0; i < list.size(); ++i) { - size += getDirectorySize(fileInfo.absoluteFilePath()); - } - else - { - size += fileInfo.size(); + QFileInfo fileInfo = list.at(i); + + if (fileInfo.isDir()) + { + size += getDirectorySize(fileInfo.absoluteFilePath()); + } + else + { + size += fileInfo.size(); + } } } } diff --git a/code/ryzom/tools/client/ryzom_installer/ui/installwizard.ui b/code/ryzom/tools/client/ryzom_installer/ui/installdialog.ui similarity index 94% rename from code/ryzom/tools/client/ryzom_installer/ui/installwizard.ui rename to code/ryzom/tools/client/ryzom_installer/ui/installdialog.ui index 07b0c7520..b8f03b356 100644 --- a/code/ryzom/tools/client/ryzom_installer/ui/installwizard.ui +++ b/code/ryzom/tools/client/ryzom_installer/ui/installdialog.ui @@ -1,7 +1,7 @@ - InstallWizardDialog - + InstallDialog + Qt::ApplicationModal @@ -219,7 +219,7 @@ Just follow the different steps and make your choice between the different propo buttonBox accepted() - InstallWizardDialog + InstallDialog accept() @@ -235,7 +235,7 @@ Just follow the different steps and make your choice between the different propo buttonBox rejected() - InstallWizardDialog + InstallDialog reject() diff --git a/code/ryzom/tools/client/ryzom_installer/ui/mainwindow.ui b/code/ryzom/tools/client/ryzom_installer/ui/mainwindow.ui index e687996b3..cfb2b7a79 100644 --- a/code/ryzom/tools/client/ryzom_installer/ui/mainwindow.ui +++ b/code/ryzom/tools/client/ryzom_installer/ui/mainwindow.ui @@ -6,7 +6,7 @@ 0 0 - 547 + 596 386 @@ -22,12 +22,6 @@ 386 - - - 547 - 386 - - Ryzom Installer @@ -115,7 +109,7 @@ p, li { white-space: pre-wrap; } 0 0 - 547 + 596 21 @@ -124,7 +118,7 @@ p, li { white-space: pre-wrap; } &Settings - + @@ -154,9 +148,9 @@ p, li { white-space: pre-wrap; } &Profiles - + - &Directories + &Settings diff --git a/code/ryzom/tools/client/ryzom_installer/ui/migratewizard.ui b/code/ryzom/tools/client/ryzom_installer/ui/migratedialog.ui similarity index 94% rename from code/ryzom/tools/client/ryzom_installer/ui/migratewizard.ui rename to code/ryzom/tools/client/ryzom_installer/ui/migratedialog.ui index 376d90c40..e63c8eeb3 100644 --- a/code/ryzom/tools/client/ryzom_installer/ui/migratewizard.ui +++ b/code/ryzom/tools/client/ryzom_installer/ui/migratedialog.ui @@ -1,7 +1,7 @@ - MigrateWizardDialog - + MigrateDialog + Qt::ApplicationModal diff --git a/code/ryzom/tools/client/ryzom_installer/ui/profiles.ui b/code/ryzom/tools/client/ryzom_installer/ui/profilesdialog.ui similarity index 100% rename from code/ryzom/tools/client/ryzom_installer/ui/profiles.ui rename to code/ryzom/tools/client/ryzom_installer/ui/profilesdialog.ui diff --git a/code/ryzom/tools/client/ryzom_installer/ui/settings.ui b/code/ryzom/tools/client/ryzom_installer/ui/settingsdialog.ui similarity index 89% rename from code/ryzom/tools/client/ryzom_installer/ui/settings.ui rename to code/ryzom/tools/client/ryzom_installer/ui/settingsdialog.ui index 1ab8f32af..4887ced56 100644 --- a/code/ryzom/tools/client/ryzom_installer/ui/settings.ui +++ b/code/ryzom/tools/client/ryzom_installer/ui/settingsdialog.ui @@ -24,7 +24,7 @@ - + @@ -34,7 +34,7 @@ - + Browse... @@ -55,7 +55,7 @@ - + Use 64 bits client diff --git a/code/ryzom/tools/client/ryzom_installer/ui/uninstallwizard.ui b/code/ryzom/tools/client/ryzom_installer/ui/uninstalldialog.ui similarity index 90% rename from code/ryzom/tools/client/ryzom_installer/ui/uninstallwizard.ui rename to code/ryzom/tools/client/ryzom_installer/ui/uninstalldialog.ui index b8c0ee298..3a9570262 100644 --- a/code/ryzom/tools/client/ryzom_installer/ui/uninstallwizard.ui +++ b/code/ryzom/tools/client/ryzom_installer/ui/uninstalldialog.ui @@ -1,7 +1,7 @@ - UninstallWizardDialog - + UninstallDialog + Qt::ApplicationModal @@ -107,12 +107,15 @@ Uninstall + + true + - + - Quit + Cancel