forked from teamnwah/openmw-tes3coop
added run log
This commit is contained in:
parent
5e022195b8
commit
cf05d3c69f
11 changed files with 90 additions and 2 deletions
|
@ -44,7 +44,7 @@ opencs_units_noqt (model/tools
|
||||||
|
|
||||||
opencs_units (view/doc
|
opencs_units (view/doc
|
||||||
viewmanager view operations operation subview startup filedialog newgame
|
viewmanager view operations operation subview startup filedialog newgame
|
||||||
filewidget adjusterwidget loader globaldebugprofilemenu
|
filewidget adjusterwidget loader globaldebugprofilemenu runlogsubview
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2399,6 +2399,11 @@ void CSMDoc::Document::stopRunning()
|
||||||
mRunner.stop();
|
mRunner.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTextDocument *CSMDoc::Document::getRunLog()
|
||||||
|
{
|
||||||
|
return mRunner.getLog();
|
||||||
|
}
|
||||||
|
|
||||||
void CSMDoc::Document::runStateChanged()
|
void CSMDoc::Document::runStateChanged()
|
||||||
{
|
{
|
||||||
emit stateChanged (getState(), this);
|
emit stateChanged (getState(), this);
|
||||||
|
|
|
@ -122,6 +122,8 @@ namespace CSMDoc
|
||||||
|
|
||||||
void stopRunning();
|
void stopRunning();
|
||||||
|
|
||||||
|
QTextDocument *getRunLog();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void stateChanged (int state, CSMDoc::Document *document);
|
void stateChanged (int state, CSMDoc::Document *document);
|
||||||
|
|
|
@ -11,6 +11,11 @@ CSMDoc::Runner::Runner() : mRunning (false), mStartup (0)
|
||||||
connect (&mProcess, SIGNAL (finished (int, QProcess::ExitStatus)),
|
connect (&mProcess, SIGNAL (finished (int, QProcess::ExitStatus)),
|
||||||
this, SLOT (finished (int, QProcess::ExitStatus)));
|
this, SLOT (finished (int, QProcess::ExitStatus)));
|
||||||
|
|
||||||
|
connect (&mProcess, SIGNAL (readyReadStandardOutput()),
|
||||||
|
this, SLOT (readyReadStandardOutput()));
|
||||||
|
|
||||||
|
mProcess.setProcessChannelMode (QProcess::MergedChannels);
|
||||||
|
|
||||||
mProfile.blank();
|
mProfile.blank();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +39,8 @@ void CSMDoc::Runner::start (bool delayed)
|
||||||
|
|
||||||
if (!delayed)
|
if (!delayed)
|
||||||
{
|
{
|
||||||
|
mLog.clear();
|
||||||
|
|
||||||
QString path = "openmw";
|
QString path = "openmw";
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
path.append(QString(".exe"));
|
path.append(QString(".exe"));
|
||||||
|
@ -107,6 +114,17 @@ void CSMDoc::Runner::finished (int exitCode, QProcess::ExitStatus exitStatus)
|
||||||
emit runStateChanged();
|
emit runStateChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTextDocument *CSMDoc::Runner::getLog()
|
||||||
|
{
|
||||||
|
return &mLog;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSMDoc::Runner::readyReadStandardOutput()
|
||||||
|
{
|
||||||
|
mLog.setPlainText (
|
||||||
|
mLog.toPlainText() + QString::fromUtf8 (mProcess.readAllStandardOutput()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CSMDoc::SaveWatcher::SaveWatcher (Runner *runner, Operation *operation)
|
CSMDoc::SaveWatcher::SaveWatcher (Runner *runner, Operation *operation)
|
||||||
: QObject (runner), mRunner (runner)
|
: QObject (runner), mRunner (runner)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
#include <QTextDocument>
|
||||||
|
|
||||||
#include <components/esm/debugprofile.hpp>
|
#include <components/esm/debugprofile.hpp>
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@ namespace CSMDoc
|
||||||
ESM::DebugProfile mProfile;
|
ESM::DebugProfile mProfile;
|
||||||
std::string mStartupInstruction;
|
std::string mStartupInstruction;
|
||||||
QTemporaryFile *mStartup;
|
QTemporaryFile *mStartup;
|
||||||
|
QTextDocument mLog;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -39,6 +41,8 @@ namespace CSMDoc
|
||||||
void configure (const ESM::DebugProfile& profile,
|
void configure (const ESM::DebugProfile& profile,
|
||||||
const std::string& startupInstruction);
|
const std::string& startupInstruction);
|
||||||
|
|
||||||
|
QTextDocument *getLog();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void runStateChanged();
|
void runStateChanged();
|
||||||
|
@ -46,6 +50,8 @@ namespace CSMDoc
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void finished (int exitCode, QProcess::ExitStatus exitStatus);
|
void finished (int exitCode, QProcess::ExitStatus exitStatus);
|
||||||
|
|
||||||
|
void readyReadStandardOutput();
|
||||||
};
|
};
|
||||||
|
|
||||||
class Operation;
|
class Operation;
|
||||||
|
|
|
@ -51,6 +51,7 @@ namespace
|
||||||
{ CSMWorld::UniversalId::Class_ResourceList, CSMWorld::UniversalId::Type_Textures, "Textures", 0 },
|
{ CSMWorld::UniversalId::Class_ResourceList, CSMWorld::UniversalId::Type_Textures, "Textures", 0 },
|
||||||
{ CSMWorld::UniversalId::Class_ResourceList, CSMWorld::UniversalId::Type_Videos, "Videos", 0 },
|
{ CSMWorld::UniversalId::Class_ResourceList, CSMWorld::UniversalId::Type_Videos, "Videos", 0 },
|
||||||
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_DebugProfiles, "Debug Profiles", 0 },
|
{ CSMWorld::UniversalId::Class_RecordList, CSMWorld::UniversalId::Type_DebugProfiles, "Debug Profiles", 0 },
|
||||||
|
{ CSMWorld::UniversalId::Class_Transient, CSMWorld::UniversalId::Type_RunLog, "Run Log", 0 },
|
||||||
|
|
||||||
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0, 0 } // end marker
|
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0, 0 } // end marker
|
||||||
};
|
};
|
||||||
|
|
|
@ -121,7 +121,8 @@ namespace CSMWorld
|
||||||
Type_Videos,
|
Type_Videos,
|
||||||
Type_Video,
|
Type_Video,
|
||||||
Type_DebugProfiles,
|
Type_DebugProfiles,
|
||||||
Type_DebugProfile
|
Type_DebugProfile,
|
||||||
|
Type_RunLog
|
||||||
};
|
};
|
||||||
|
|
||||||
enum { NumberOfTypes = Type_DebugProfile+1 };
|
enum { NumberOfTypes = Type_DebugProfile+1 };
|
||||||
|
|
20
apps/opencs/view/doc/runlogsubview.cpp
Normal file
20
apps/opencs/view/doc/runlogsubview.cpp
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
#include "runlogsubview.hpp"
|
||||||
|
|
||||||
|
#include <QTextEdit>
|
||||||
|
|
||||||
|
CSVDoc::RunLogSubView::RunLogSubView (const CSMWorld::UniversalId& id,
|
||||||
|
CSMDoc::Document& document)
|
||||||
|
: SubView (id)
|
||||||
|
{
|
||||||
|
QTextEdit *edit = new QTextEdit (this);
|
||||||
|
edit->setDocument (document.getRunLog());
|
||||||
|
edit->setReadOnly (true);
|
||||||
|
|
||||||
|
setWidget (edit);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVDoc::RunLogSubView::setEditLock (bool locked)
|
||||||
|
{
|
||||||
|
// ignored since this SubView does not have editing
|
||||||
|
}
|
20
apps/opencs/view/doc/runlogsubview.hpp
Normal file
20
apps/opencs/view/doc/runlogsubview.hpp
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef CSV_DOC_RUNLOGSUBVIEW_H
|
||||||
|
#define CSV_DOC_RUNLOGSUBVIEW_H
|
||||||
|
|
||||||
|
#include "subview.hpp"
|
||||||
|
|
||||||
|
namespace CSVDoc
|
||||||
|
{
|
||||||
|
class RunLogSubView : public SubView
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
RunLogSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document);
|
||||||
|
|
||||||
|
virtual void setEditLock (bool locked);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -22,6 +22,8 @@
|
||||||
#include "operations.hpp"
|
#include "operations.hpp"
|
||||||
#include "subview.hpp"
|
#include "subview.hpp"
|
||||||
#include "globaldebugprofilemenu.hpp"
|
#include "globaldebugprofilemenu.hpp"
|
||||||
|
#include "runlogsubview.hpp"
|
||||||
|
#include "subviewfactoryimp.hpp"
|
||||||
|
|
||||||
void CSVDoc::View::closeEvent (QCloseEvent *event)
|
void CSVDoc::View::closeEvent (QCloseEvent *event)
|
||||||
{
|
{
|
||||||
|
@ -258,6 +260,10 @@ void CSVDoc::View::setupDebugMenu()
|
||||||
mStopDebug = new QAction (tr ("Shutdown OpenMW"), this);
|
mStopDebug = new QAction (tr ("Shutdown OpenMW"), this);
|
||||||
connect (mStopDebug, SIGNAL (triggered()), this, SLOT (stop()));
|
connect (mStopDebug, SIGNAL (triggered()), this, SLOT (stop()));
|
||||||
debug->addAction (mStopDebug);
|
debug->addAction (mStopDebug);
|
||||||
|
|
||||||
|
QAction *runLog = new QAction (tr ("Run Log"), this);
|
||||||
|
connect (runLog, SIGNAL (triggered()), this, SLOT (addRunLogSubView()));
|
||||||
|
debug->addAction (runLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVDoc::View::setupUi()
|
void CSVDoc::View::setupUi()
|
||||||
|
@ -333,6 +339,8 @@ CSVDoc::View::View (ViewManager& viewManager, CSMDoc::Document *document, int to
|
||||||
CSVWorld::addSubViewFactories (mSubViewFactory);
|
CSVWorld::addSubViewFactories (mSubViewFactory);
|
||||||
CSVTools::addSubViewFactories (mSubViewFactory);
|
CSVTools::addSubViewFactories (mSubViewFactory);
|
||||||
|
|
||||||
|
mSubViewFactory.add (CSMWorld::UniversalId::Type_RunLog, new SubViewFactory<RunLogSubView>);
|
||||||
|
|
||||||
connect (mOperations, SIGNAL (abortOperation (int)), this, SLOT (abortOperation (int)));
|
connect (mOperations, SIGNAL (abortOperation (int)), this, SLOT (abortOperation (int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -583,6 +591,11 @@ void CSVDoc::View::addDebugProfilesSubView()
|
||||||
addSubView (CSMWorld::UniversalId::Type_DebugProfiles);
|
addSubView (CSMWorld::UniversalId::Type_DebugProfiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVDoc::View::addRunLogSubView()
|
||||||
|
{
|
||||||
|
addSubView (CSMWorld::UniversalId::Type_RunLog);
|
||||||
|
}
|
||||||
|
|
||||||
void CSVDoc::View::abortOperation (int type)
|
void CSVDoc::View::abortOperation (int type)
|
||||||
{
|
{
|
||||||
mDocument->abortOperation (type);
|
mDocument->abortOperation (type);
|
||||||
|
|
|
@ -201,6 +201,8 @@ namespace CSVDoc
|
||||||
|
|
||||||
void addDebugProfilesSubView();
|
void addDebugProfilesSubView();
|
||||||
|
|
||||||
|
void addRunLogSubView();
|
||||||
|
|
||||||
void toggleShowStatusBar (bool show);
|
void toggleShowStatusBar (bool show);
|
||||||
|
|
||||||
void loadErrorLog();
|
void loadErrorLog();
|
||||||
|
|
Loading…
Reference in a new issue