From 09e8cc9004ecf6493bef87486160fb2f2677e8f9 Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 17 Sep 2012 23:44:33 +0200 Subject: [PATCH] log file handling as standalone dialog finished --- src/gui/qt/logfiledialog.ui | 184 +++++++++++++++--- src/gui/qt/logfiledialog/logfiledialog.cpp | 141 +++++++++++++- src/gui/qt/logfiledialog/logfiledialog.h | 21 +- src/gui/qt/settingsdialog.ui | 116 ++--------- .../qt/settingsdialog/settingsdialogimpl.cpp | 138 ------------- .../qt/settingsdialog/settingsdialogimpl.h | 9 +- src/gui/qt/startwindow.ui | 12 +- src/gui/qt/startwindow/startwindowimpl.cpp | 11 +- src/gui/qt/startwindow/startwindowimpl.h | 5 +- 9 files changed, 357 insertions(+), 280 deletions(-) diff --git a/src/gui/qt/logfiledialog.ui b/src/gui/qt/logfiledialog.ui index bb79a5b3..84176c2c 100644 --- a/src/gui/qt/logfiledialog.ui +++ b/src/gui/qt/logfiledialog.ui @@ -1,39 +1,177 @@ + - - - LogFileDialog 0 0 - 400 - 300 + 618 + 392 Dialog - - - - 30 - 240 - 341 - 32 - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - + + + + + + + + + + 0 + 0 + + + + Game: + + + + + + + + 0 + 0 + + + + + + + + + + + 0 + 0 + + + + + 200 + 16777215 + + + + true + + + QAbstractItemView::ExtendedSelection + + + 5 + + + false + + + true + + + + Log File + + + + + + + + + + + + Preview: + + + + + + + + 0 + 0 + + + + + + + + + + + + Export as HTML + + + + :/gfx/text-html.png:/gfx/text-html.png + + + + + + + Export as txt + + + + :/gfx/text-plain.png:/gfx/text-plain.png + + + + + + + Save as ... + + + + :/gfx/filesave.png:/gfx/filesave.png + + + + + + + Delete + + + + :/gfx/editdelete.png:/gfx/editdelete.png + + + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + - - + + + buttonBox diff --git a/src/gui/qt/logfiledialog/logfiledialog.cpp b/src/gui/qt/logfiledialog/logfiledialog.cpp index 7f3956f7..5aac2f43 100644 --- a/src/gui/qt/logfiledialog/logfiledialog.cpp +++ b/src/gui/qt/logfiledialog/logfiledialog.cpp @@ -18,15 +18,152 @@ #include "logfiledialog.h" #include "ui_logfiledialog.h" +#include +#include "guilog.h" +#include "configfile.h" +#include "mymessagebox.h" -LogFileDialog::LogFileDialog(QWidget *parent) : -QDialog(parent), +LogFileDialog::LogFileDialog(QWidget *parent, ConfigFile *c) : +QDialog(parent), myConfig(c), ui(new Ui::LogFileDialog) { ui->setupUi(this); + + connect( ui->pushButton_deleteLog, SIGNAL(clicked()), this, SLOT (deleteLogFile())); + connect( ui->pushButton_exportLogHtml, SIGNAL(clicked()), this, SLOT (exportLogToHtml())); + connect( ui->pushButton_exportLogTxt, SIGNAL(clicked()), this, SLOT (exportLogToTxt())); + connect( ui->pushButton_saveLogAs, SIGNAL(clicked()), this, SLOT (saveLogFileAs())); + connect( ui->treeWidget_logFiles, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), this, SLOT(showLogFilePreview())); } LogFileDialog::~LogFileDialog() { delete ui; } + +void LogFileDialog::exec() +{ + refreshLogFileList(); + QDialog::exec(); +} + +void LogFileDialog::refreshLogFileList() +{ + QDir logFileDir; + logFileDir.setPath(QString::fromUtf8(myConfig->readConfigString("LogDir").c_str())); + QStringList filters; + filters << "*.pdb"; + QFileInfoList dbFilesList = logFileDir.entryInfoList(filters, QDir::Files, QDir::Time); + + QFileInfo currentSqliteLogFile(QString::fromStdString(myGuiLog->getMySqliteLogFileName())); + + ui->treeWidget_logFiles->clear(); + int i; + for (i=0; i < dbFilesList.size(); i++) { + + QTreeWidgetItem *item = new QTreeWidgetItem; + item->setText(0, dbFilesList.at(i).fileName()); + item->setData(0, Qt::UserRole, dbFilesList.at(i).absoluteFilePath()); + if(currentSqliteLogFile.fileName() == dbFilesList.at(i).fileName()) { + item->setData(0, Qt::BackgroundColorRole, QColor(Qt::red)); + item->setData(0, Qt::TextColorRole, QColor(Qt::white)); + item->setData(0, Qt::UserRole+1, "current"); + } + ui->treeWidget_logFiles->addTopLevelItem(item); + } + ui->treeWidget_logFiles->sortItems(0, Qt::DescendingOrder); +} + +void LogFileDialog::deleteLogFile() +{ + QList selectedItemsList = ui->treeWidget_logFiles->selectedItems(); + + if(!selectedItemsList.isEmpty() && !( selectedItemsList.size() == 1 && selectedItemsList.front()->data(0, Qt::UserRole+1).toString() == "current" )) { + + int ret = MyMessageBox::warning(this, tr("PokerTH - Delete log files"), + tr("Do you really want to delete the selected log files?"), + QMessageBox::Yes | QMessageBox::No); + + if(ret == QMessageBox::Yes) { + for (int i = 0; i < selectedItemsList.size(); ++i) { + if(selectedItemsList.at(i)->data(0, Qt::UserRole+1).toString() != "current") { + + if(!QFile::remove(selectedItemsList.at(i)->data(0, Qt::UserRole).toString())) { + MyMessageBox::warning(this, "Remove log file", "PokerTH cannot remove this log file, please verify that you have write access to this file!", QMessageBox::Close ); + } + } + } + refreshLogFileList(); + } + } +} + +void LogFileDialog::exportLogToHtml() +{ + QTreeWidgetItem* selectedItem = ui->treeWidget_logFiles->currentItem(); + + if(selectedItem) { + QFileInfo fi(selectedItem->text(0)); + QString fileName = QFileDialog::getSaveFileName(this, tr("Export PokerTH log file to HTML"), + QDir::homePath()+"/"+fi.baseName()+".html", + tr("PokerTH HTML log (*.html)")); + + if(!fileName.isEmpty()) { + myGuiLog->exportLogPdbToHtml(selectedItem->data(0, Qt::UserRole).toString(),fileName); + } + } +} + +void LogFileDialog::exportLogToTxt() +{ + QTreeWidgetItem* selectedItem = ui->treeWidget_logFiles->currentItem(); + + if(selectedItem) { + QFileInfo fi(selectedItem->text(0)); + QString fileName = QFileDialog::getSaveFileName(this, tr("Export PokerTH log file to plain text"), + QDir::homePath()+"/"+fi.baseName()+".txt", + tr("PokerTH plain text log (*.txt)")); + + if(!fileName.isEmpty()) { + myGuiLog->exportLogPdbToTxt(selectedItem->data(0, Qt::UserRole).toString(),fileName); + } + } +} + +void LogFileDialog::saveLogFileAs() +{ + QTreeWidgetItem* selectedItem = ui->treeWidget_logFiles->currentItem(); + + if(selectedItem) { + QFileInfo fi(selectedItem->text(0)); + QString fileName = QFileDialog::getSaveFileName(this, tr("Save PokerTH log file"), + QDir::homePath()+"/"+fi.baseName()+".pdb", + tr("PokerTH SQL log (*.pdb)")); + + if(!fileName.isEmpty()) { + QFile::copy(selectedItem->data(0, Qt::UserRole).toString(), fileName); + } + } +} + +void LogFileDialog::showLogFilePreview() +{ + QTreeWidgetItem* selectedItem = ui->treeWidget_logFiles->currentItem(); + + if(selectedItem) { + myGuiLog->showLog(selectedItem->data(0, Qt::UserRole).toString(), ui->textBrowser_logPreview); + } + + QTextCursor cursor(ui->textBrowser_logPreview->textCursor()); + cursor.movePosition(QTextCursor::Start); + ui->textBrowser_logPreview->setTextCursor(cursor); +} + +void LogFileDialog::keyPressEvent ( QKeyEvent * event ) +{ + if (event->key() == Qt::Key_Delete ) { /*Delete*/ + if(ui->treeWidget_logFiles->hasFocus()) { + ui->pushButton_deleteLog->click(); + } + } +} diff --git a/src/gui/qt/logfiledialog/logfiledialog.h b/src/gui/qt/logfiledialog/logfiledialog.h index 8153d293..7ba586a4 100644 --- a/src/gui/qt/logfiledialog/logfiledialog.h +++ b/src/gui/qt/logfiledialog/logfiledialog.h @@ -21,19 +21,38 @@ #include + namespace Ui { class LogFileDialog; } + +class guiLog; +class ConfigFile; + class LogFileDialog : public QDialog { Q_OBJECT public: - explicit LogFileDialog(QWidget *parent = 0); + explicit LogFileDialog(QWidget *parent = 0, ConfigFile *c = 0); ~LogFileDialog(); + + void setGuiLog(guiLog *g) { myGuiLog = g; } + void exec(); + +public slots: + void refreshLogFileList(); + void deleteLogFile(); + void exportLogToHtml(); + void exportLogToTxt(); + void saveLogFileAs(); + void showLogFilePreview(); + void keyPressEvent ( QKeyEvent * event ); private: + ConfigFile *myConfig; + guiLog *myGuiLog; Ui::LogFileDialog *ui; }; diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index 9f0f73a9..3a7270e4 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -3534,107 +3534,17 @@ p, li { white-space: pre-wrap; } - - - - - - 0 - 0 - - - - true - - - QAbstractItemView::ExtendedSelection - - - 5 - - - false - - - true - - - - Log File - - - - - - - - - - Preview: - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Export as HTML - - - - :/gfx/text-html.png:/gfx/text-html.png - - - - - - - Export as txt - - - - :/gfx/text-plain.png:/gfx/text-plain.png - - - - - - - Save as ... - - - - :/gfx/filesave.png:/gfx/filesave.png - - - - - - - Delete - - - - :/gfx/editdelete.png:/gfx/editdelete.png - - - - + + + Qt::Vertical + + + + 20 + 40 + + + @@ -3887,10 +3797,6 @@ p, li { white-space: pre-wrap; } comboBox_logInterval lineEdit_logDir pushButton_openLogDir - pushButton_exportLogHtml - pushButton_exportLogTxt - pushButton_saveLogAs - pushButton_deleteLog buttonBox diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index f6ac1adf..880bfcb3 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -22,7 +22,6 @@ #include "carddeckstylereader.h" #include "configfile.h" -#include "guilog.h" #include #include @@ -46,14 +45,6 @@ settingsDialogImpl::settingsDialogImpl(QWidget *parent, ConfigFile *c, selectAva listWidget->takeItem(1); #endif - if(!SQLITE_LOG) {//temporarely remove sql log features - pushButton_deleteLog->hide(); - pushButton_saveLogAs->hide(); - pushButton_exportLogTxt->hide(); - pushButton_exportLogHtml->hide(); - treeWidget_logFiles->hide(); - } - myManualBlindsOrderDialog = new manualBlindsOrderDialogImpl; myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); @@ -141,12 +132,6 @@ settingsDialogImpl::settingsDialogImpl(QWidget *parent, ConfigFile *c, selectAva connect( pushButton_removeCardDeckStyle, SIGNAL( clicked() ), this, SLOT( removeCardDeckStyle()) ); connect( pushButton_internetGameRemoveIgnoredPlayer, SIGNAL( clicked()), this, SLOT( removePlayerFromIgnoredPlayersList())); - connect( pushButton_deleteLog, SIGNAL(clicked()), this, SLOT (deleteLogFile())); - connect( pushButton_exportLogHtml, SIGNAL(clicked()), this, SLOT (exportLogToHtml())); - connect( pushButton_exportLogTxt, SIGNAL(clicked()), this, SLOT (exportLogToTxt())); - connect( pushButton_saveLogAs, SIGNAL(clicked()), this, SLOT (saveLogFileAs())); - connect( treeWidget_logFiles, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), this, SLOT(showLogFilePreview())); - #ifdef GUI_800x480 //make the scrollbar touchable for mobile guis comboBox_switchLanguage->setStyleSheet("QObject {font: 30px} QScrollBar:vertical { border: 1px solid grey; background: white; width: 60px; margin: 0px -1px 0px 0px; } QScrollBar::handle:vertical { border-radius: 3px; border: 2px solid grey; background: LightGrey ; min-height: 60px; } QScrollBar::add-line:vertical { background: none; } QScrollBar::sub-line:vertical { background: none; } QScrollBar:up-arrow:vertical, QScrollBar::down-arrow:vertical { background: none; } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: none; }"); @@ -517,8 +502,6 @@ void settingsDialogImpl::prepareDialog() spinBox_logStoreDuration->setValue(myConfig->readConfigInt("LogStoreDuration")); comboBox_logInterval->setCurrentIndex(myConfig->readConfigInt("LogInterval")); - refreshLogFileList(); - bool tmpHasIpv6 = socket_has_ipv6(); bool tmpHasSctp = socket_has_sctp(); checkBox_useIpv6->setEnabled(tmpHasIpv6); @@ -955,7 +938,6 @@ void settingsDialogImpl::setLogDir() QDir logDir(dir); if(logDir.exists()) { lineEdit_logDir->setText(dir); - refreshLogFileList(); MyMessageBox::information(this, tr("Settings Information"), tr("You have changed the log file directory.\n" "Please restart PokerTH to use the new directory for the log files!"), @@ -1371,118 +1353,6 @@ void settingsDialogImpl::removePlayerFromIgnoredPlayersList() } } -void settingsDialogImpl::refreshLogFileList() -{ - QDir logFileDir; - logFileDir.setPath(lineEdit_logDir->text()); - QStringList filters; - filters << "*.pdb"; - QFileInfoList dbFilesList = logFileDir.entryInfoList(filters, QDir::Files, QDir::Time); - - QFileInfo currentSqliteLogFile(QString::fromStdString(myGuiLog->getMySqliteLogFileName())); - - treeWidget_logFiles->clear(); - int i; - for (i=0; i < dbFilesList.size(); i++) { - - QTreeWidgetItem *item = new QTreeWidgetItem; - item->setText(0, dbFilesList.at(i).fileName()); - item->setData(0, Qt::UserRole, dbFilesList.at(i).absoluteFilePath()); - if(currentSqliteLogFile.fileName() == dbFilesList.at(i).fileName()) { - item->setData(0, Qt::BackgroundColorRole, QColor(Qt::red)); - item->setData(0, Qt::TextColorRole, QColor(Qt::white)); - item->setData(0, Qt::UserRole+1, "current"); - } - treeWidget_logFiles->addTopLevelItem(item); - } - treeWidget_logFiles->sortItems(0, Qt::DescendingOrder); -} - -void settingsDialogImpl::deleteLogFile() -{ - QList selectedItemsList = treeWidget_logFiles->selectedItems(); - - if(!selectedItemsList.isEmpty() && !( selectedItemsList.size() == 1 && selectedItemsList.front()->data(0, Qt::UserRole+1).toString() == "current" )) { - - int ret = MyMessageBox::warning(this, tr("PokerTH - Delete log files"), - tr("Do you really want to delete the selected log files?"), - QMessageBox::Yes | QMessageBox::No); - - if(ret == QMessageBox::Yes) { - for (int i = 0; i < selectedItemsList.size(); ++i) { - if(selectedItemsList.at(i)->data(0, Qt::UserRole+1).toString() != "current") { - - if(!QFile::remove(selectedItemsList.at(i)->data(0, Qt::UserRole).toString())) { - MyMessageBox::warning(this, "Remove log file", "PokerTH cannot remove this log file, please verify that you have write access to this file!", QMessageBox::Close ); - } - } - } - refreshLogFileList(); - } - } -} - -void settingsDialogImpl::exportLogToHtml() -{ - QTreeWidgetItem* selectedItem = treeWidget_logFiles->currentItem(); - - if(selectedItem) { - QFileInfo fi(selectedItem->text(0)); - QString fileName = QFileDialog::getSaveFileName(this, tr("Export PokerTH log file to HTML"), - QDir::homePath()+"/"+fi.baseName()+".html", - tr("PokerTH HTML log (*.html)")); - - if(!fileName.isEmpty()) { - myGuiLog->exportLogPdbToHtml(selectedItem->data(0, Qt::UserRole).toString(),fileName); - } - } -} - -void settingsDialogImpl::exportLogToTxt() -{ - QTreeWidgetItem* selectedItem = treeWidget_logFiles->currentItem(); - - if(selectedItem) { - QFileInfo fi(selectedItem->text(0)); - QString fileName = QFileDialog::getSaveFileName(this, tr("Export PokerTH log file to plain text"), - QDir::homePath()+"/"+fi.baseName()+".txt", - tr("PokerTH plain text log (*.txt)")); - - if(!fileName.isEmpty()) { - myGuiLog->exportLogPdbToTxt(selectedItem->data(0, Qt::UserRole).toString(),fileName); - } - } -} - -void settingsDialogImpl::saveLogFileAs() -{ - QTreeWidgetItem* selectedItem = treeWidget_logFiles->currentItem(); - - if(selectedItem) { - QFileInfo fi(selectedItem->text(0)); - QString fileName = QFileDialog::getSaveFileName(this, tr("Save PokerTH log file"), - QDir::homePath()+"/"+fi.baseName()+".pdb", - tr("PokerTH SQL log (*.pdb)")); - - if(!fileName.isEmpty()) { - QFile::copy(selectedItem->data(0, Qt::UserRole).toString(), fileName); - } - } -} - -void settingsDialogImpl::showLogFilePreview() -{ - QTreeWidgetItem* selectedItem = treeWidget_logFiles->currentItem(); - - if(selectedItem) { - myGuiLog->showLog(selectedItem->data(0, Qt::UserRole).toString(), textBrowser_logPreview); - } - - QTextCursor cursor(textBrowser_logPreview->textCursor()); - cursor.movePosition(QTextCursor::Start); - textBrowser_logPreview->setTextCursor(cursor); -} - void settingsDialogImpl::resetSettings() { int ret = MyMessageBox::warning(this, tr("PokerTH - Settings"), @@ -1496,11 +1366,3 @@ void settingsDialogImpl::resetSettings() } -void settingsDialogImpl::keyPressEvent ( QKeyEvent * event ) -{ - if (event->key() == Qt::Key_Delete ) { /*Delete*/ - if(treeWidget_logFiles->hasFocus()) { - pushButton_deleteLog->click(); - } - } -} diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.h b/src/gui/qt/settingsdialog/settingsdialogimpl.h index 14394ab0..6d08af52 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.h +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.h @@ -112,14 +112,7 @@ public slots: void addCardDeckStyle(); void removeCardDeckStyle(); void removePlayerFromIgnoredPlayersList(); - void refreshLogFileList(); - void deleteLogFile(); - void exportLogToHtml(); - void exportLogToTxt(); - void saveLogFileAs(); - void showLogFilePreview(); void resetSettings(); - void keyPressEvent ( QKeyEvent * event ); private: @@ -140,7 +133,6 @@ private: std::list myCardDeckStylesList; ConfigFile* myConfig; - guiLog* myGuiLog; selectAvatarDialogImpl *mySelectAvatarDialogImpl; manualBlindsOrderDialogImpl *myManualBlindsOrderDialog; @@ -149,6 +141,7 @@ private: bool languageIsChanged; bool calledIngame; int changedLanguageIndex; + guiLog *myGuiLog; }; #endif diff --git a/src/gui/qt/startwindow.ui b/src/gui/qt/startwindow.ui index 417d0d93..64bc6f78 100644 --- a/src/gui/qt/startwindow.ui +++ b/src/gui/qt/startwindow.ui @@ -198,7 +198,7 @@ 0 0 450 - 26 + 24 @@ -215,6 +215,7 @@ + @@ -296,6 +297,15 @@ Join Network Game ... + + + + :/gfx/registered.png:/gfx/registered.png + + + Logs ... + + diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index e063770d..d46e6841 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -43,6 +43,7 @@ #include "chattools.h" #include "serverlistdialogimpl.h" #include "internetgamelogindialogimpl.h" +#include "logfiledialog.h" #include "guilog.h" using namespace std; @@ -119,10 +120,12 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) myCreateNetworkGameDialog = new createNetworkGameDialogImpl(this, myConfig); myAboutPokerthDialog = new aboutPokerthImpl(this, myConfig); myGameLobbyDialog = new gameLobbyDialogImpl(this, myConfig); + myLogFileDialog = new LogFileDialog(this, myConfig); myStartNetworkGameDialog->setMyW(myGuiInterface->getMyW()); myGameLobbyDialog->setMyW(myGuiInterface->getMyW()); mySettingsDialog->setGuiLog(myGuiLog); + myLogFileDialog->setGuiLog(myGuiLog); myTimeoutDialog = new timeoutMsgBoxImpl(this); myServerListDialog = new serverListDialogImpl(this, this, myConfig); @@ -135,7 +138,8 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) connect( actionCreate_Network_Game, SIGNAL( triggered() ), this, SLOT( callCreateNetworkGameDialog() ) ); connect( pushButton_Create_Network_Game, SIGNAL( clicked() ), this, SLOT( callCreateNetworkGameDialog() ) ); connect( actionJoin_Network_Game, SIGNAL( triggered() ), this, SLOT( callJoinNetworkGameDialog() ) ); - connect( pushButton_Join_Network_Game, SIGNAL( clicked() ), this, SLOT( callJoinNetworkGameDialog() ) ); + connect( pushButton_Join_Network_Game, SIGNAL( clicked() ), this, SLOT( callJoinNetworkGameDialog() ) ); + connect( actionLogs, SIGNAL( triggered() ), this, SLOT( callLogFileDialog() ) ); connect(this, SIGNAL(signalShowClientDialog()), this, SLOT(showClientDialog())); @@ -625,6 +629,11 @@ void startWindowImpl::callSettingsDialog(bool ingame) } } +void startWindowImpl::callLogFileDialog() +{ + myLogFileDialog->exec(); +} + void startWindowImpl::showTimeoutDialog(int msgID, unsigned duration) { if(myTimeoutDialog->isHidden()) { diff --git a/src/gui/qt/startwindow/startwindowimpl.h b/src/gui/qt/startwindow/startwindowimpl.h index 0e51a02f..1ad61f98 100644 --- a/src/gui/qt/startwindow/startwindowimpl.h +++ b/src/gui/qt/startwindow/startwindowimpl.h @@ -53,6 +53,7 @@ class serverListDialogImpl; class internetGameLoginDialogImpl; class guiLog; class Log; +class LogFileDialog; class startWindowImpl: public QMainWindow, public Ui::startWindow { @@ -139,6 +140,7 @@ public slots: void joinGameLobby(); void showClientDialog(); void showNetworkStartDialog(); + void callLogFileDialog(); void startNewLocalGame(newGameDialogImpl* =0); @@ -178,8 +180,9 @@ private: startWindowImpl *myStartWindow; serverListDialogImpl *myServerListDialog; internetGameLoginDialogImpl *myInternetGameLoginDialog; + LogFileDialog *myLogFileDialog; - MyMessageBox msgBoxOutdatedVersion; + MyMessageBox msgBoxOutdatedVersion; bool msgBoxOutdatedVersionActive; friend class GuiWrapper;