Add status message about log warnings/errors

This commit is contained in:
baldurk
2016-11-21 17:38:02 +01:00
parent bce0b31060
commit 23d8c12457
3 changed files with 101 additions and 6 deletions
+2 -2
View File
@@ -112,10 +112,10 @@ public:
const rdctype::array<FetchBuffer> &GetBuffers() { return m_BufferList; }
QVector<DebugMessage> DebugMessages;
int UnreadMessageCount;
void AddMessages(rdctype::array<DebugMessage> &msgs)
void AddMessages(const rdctype::array<DebugMessage> &msgs)
{
UnreadMessageCount += msgs.count;
for(DebugMessage &msg : msgs)
for(const DebugMessage &msg : msgs)
DebugMessages.push_back(msg);
}
+91 -4
View File
@@ -109,6 +109,13 @@ MainWindow::MainWindow(CaptureContext *ctx) : QMainWindow(NULL), ui(new Ui::Main
statusIcon->setPixmap(QPixmap());
statusText->setText("");
QObject::connect(&m_MessageTick, &QTimer::timeout, this, &MainWindow::messageCheck);
m_MessageTick.setSingleShot(false);
m_MessageTick.setInterval(500);
m_MessageTick.start();
ui->statusBar->setStyleSheet("QStatusBar::item { border: 0px }");
SetTitle();
PopulateRecentFiles();
@@ -141,6 +148,8 @@ MainWindow::MainWindow(CaptureContext *ctx) : QMainWindow(NULL), ui(new Ui::Main
capDialog, ToolWindowManager::AreaReference(ToolWindowManager::AddTo,
ui->toolWindowManager->areaOf(textureViewer)));
}
m_Ctx->AddLogViewer(this);
}
MainWindow::~MainWindow()
@@ -746,7 +755,6 @@ void MainWindow::setProgress(float val)
if(val < 0.0f || val >= 1.0f)
{
statusProgress->setVisible(false);
statusText->setText("");
}
else
{
@@ -755,16 +763,95 @@ void MainWindow::setProgress(float val)
}
}
void MainWindow::setLogHasErrors(bool errors)
{
QString filename = QFileInfo(m_Ctx->LogFilename()).fileName();
if(errors)
{
QPixmap icon(QString::fromUtf8(":/Resources/delete.png"));
statusIcon->setPixmap(m_messageAlternate ? QPixmap(icon.width(), icon.height()) : icon);
QString text;
text = tr("%1 loaded. Log has %2 errors, warnings or performance notes. "
"See the 'Log Errors and Warnings' window.")
.arg(filename)
.arg(m_Ctx->DebugMessages.size());
if(m_Ctx->UnreadMessageCount > 0)
text += tr(" %1 Unread.").arg(m_Ctx->UnreadMessageCount);
statusText->setText(text);
}
else
{
statusIcon->setPixmap(QPixmap(QString::fromUtf8(":/Resources/tick.png")));
statusText->setText(tr("%1 loaded. No problems detected.").arg(filename));
}
}
void MainWindow::messageCheck()
{
if(m_Ctx->LogLoaded())
{
m_Ctx->Renderer()->AsyncInvoke([this](IReplayRenderer *r) {
rdctype::array<DebugMessage> msgs;
r->GetDebugMessages(&msgs);
bool disconnected = false;
// TODO Remote
/*
if(me.m_Core.Renderer.Remote != null)
{
bool prev = me.m_Core.Renderer.Remote.ServerRunning;
me.m_Core.Renderer.PingRemote();
if(prev != me.m_Core.Renderer.Remote.ServerRunning)
disconnected = true;
}*/
GUIInvoke::call([this, disconnected, msgs] {
// if we just got disconnected while replaying a log, alert the user.
if(disconnected)
{
RDDialog::critical(this, tr("Remote server disconnected"),
tr("Remote server disconnected during replaying of this capture.\n"
"The replay will now be non-functional. To restore you will have "
"to close the capture, allow "
"RenderDoc to reconnect and load the capture again"));
}
// TODO Remote
// if(me.m_Core.Renderer.Remote != null && !me.m_Core.Renderer.Remote.ServerRunning)
// me.contextChooser.Image = global::renderdocui.Properties.Resources.cross;
if(!msgs.empty())
{
m_Ctx->AddMessages(msgs);
// TODO Debug messages
// m_Ctx->debugmessages().RefreshMessageList();
}
if(m_Ctx->UnreadMessageCount > 0)
m_messageAlternate = !m_messageAlternate;
else
m_messageAlternate = false;
setLogHasErrors(!m_Ctx->DebugMessages.empty());
});
});
}
}
void MainWindow::OnLogfileLoaded()
{
// TODO Remote
// don't allow changing context while log is open
// contextChooser.Enabled = false;
// LogHasErrors = (m_Core.DebugMessages.Count > 0);
statusProgress->setVisible(false);
setLogHasErrors(!m_Ctx->DebugMessages.empty());
m_Ctx->Renderer()->AsyncInvoke([this](IReplayRenderer *r) {
bool hasResolver = r->HasCallstacks();
@@ -781,7 +868,7 @@ void MainWindow::OnLogfileLoaded()
PopulateRecentFiles();
// m_Core.GetEventBrowser().Focus();
m_Ctx->eventBrowser()->activateWindow();
}
void MainWindow::OnLogfileClosed()
+8
View File
@@ -26,6 +26,7 @@
#include <stdint.h>
#include <QMainWindow>
#include <QTimer>
#include "Code/CaptureContext.h"
#include "ToolWindowManager.h"
@@ -85,6 +86,7 @@ private slots:
// manual slots
void saveLayout_triggered();
void loadLayout_triggered();
void messageCheck();
private:
void closeEvent(QCloseEvent *event) override;
@@ -106,11 +108,17 @@ private:
QLabel *statusText;
QProgressBar *statusProgress;
QTimer m_MessageTick;
bool m_messageAlternate = false;
bool m_OwnTempLog = false;
bool m_SavedTempLog = false;
QString m_LastSaveCapturePath = "";
void setLogHasErrors(bool errors);
void SetTitle(const QString &filename);
void SetTitle();