DBG+GUI: trace log file improvements
This commit is contained in:
parent
af6bc45b2e
commit
4c8b1e92dd
|
@ -85,6 +85,9 @@ struct TraceState
|
|||
if(hFile == INVALID_HANDLE_VALUE)
|
||||
return false;
|
||||
logWriter = new BufferedWriter(hFile);
|
||||
duint setting;
|
||||
if(BridgeSettingGetUint("Misc", "Utf16LogRedirect", &setting))
|
||||
writeUtf16 = !!setting;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -92,8 +95,17 @@ struct TraceState
|
|||
{
|
||||
if(logWriter)
|
||||
{
|
||||
logWriter->Write(text.c_str(), text.size());
|
||||
logWriter->Write("\n", 1);
|
||||
if(writeUtf16)
|
||||
{
|
||||
auto textUtf16 = StringUtils::Utf8ToUtf16(text);
|
||||
logWriter->Write(textUtf16.c_str(), textUtf16.size() * 2);
|
||||
logWriter->Write(L"\r\n", 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
logWriter->Write(text.c_str(), text.size());
|
||||
logWriter->Write("\n", 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
dprintf_untranslated("%s\n", text.c_str());
|
||||
|
@ -192,6 +204,7 @@ struct TraceState
|
|||
logFile.clear();
|
||||
delete logWriter;
|
||||
logWriter = nullptr;
|
||||
writeUtf16 = false;
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -202,6 +215,7 @@ private:
|
|||
String emptyString;
|
||||
WString logFile;
|
||||
BufferedWriter* logWriter = nullptr;
|
||||
bool writeUtf16 = false;
|
||||
};
|
||||
|
||||
static PROCESS_INFORMATION g_pi = {0, 0, 0, 0};
|
||||
|
|
|
@ -67,11 +67,11 @@ struct BufferedWriter
|
|||
memset(mBuffer, 0, size);
|
||||
}
|
||||
|
||||
bool Write(const char* buffer, size_t size)
|
||||
bool Write(const void* buffer, size_t size)
|
||||
{
|
||||
for(size_t i = 0; i < size; i++)
|
||||
{
|
||||
mBuffer[mIndex++] = buffer[i];
|
||||
mBuffer[mIndex++] = ((const char*)buffer)[i];
|
||||
if(mIndex == mSize)
|
||||
{
|
||||
if(!flush())
|
||||
|
|
|
@ -41,6 +41,16 @@ static QString escapeText(QString str)
|
|||
|
||||
void SimpleTraceDialog::on_btnOk_clicked()
|
||||
{
|
||||
if(!mLogFile.isEmpty() && ui->editLogText->text().isEmpty())
|
||||
{
|
||||
QMessageBox msgyn(QMessageBox::Warning, tr("Trace log file"),
|
||||
tr("It appears you have set the log file, but not the log text. <b>This will result in an empty log</b>. Do you really want to continue?"), QMessageBox::Yes | QMessageBox::No, this);
|
||||
msgyn.setWindowIcon(DIcon("compile-warning.png"));
|
||||
msgyn.setParent(this, Qt::Dialog);
|
||||
msgyn.setWindowFlags(msgyn.windowFlags() & (~Qt::WindowContextHelpButtonHint));
|
||||
if(msgyn.exec() == QMessageBox::No)
|
||||
return;
|
||||
}
|
||||
auto logText = ui->editLogText->addHistoryClear();
|
||||
auto logCondition = ui->editLogCondition->addHistoryClear();
|
||||
if(!DbgCmdExecDirect(QString("TraceSetLog \"%1\", \"%2\"").arg(escapeText(logText), escapeText(logCondition)).toUtf8().constData()))
|
||||
|
|
Loading…
Reference in New Issue