1
0
Fork 0

GUI: better character recognition in CPUInfoBox

This commit is contained in:
mrexodia 2016-10-04 21:00:58 +02:00
parent f72ed0990c
commit 1ecc5bfb75
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
1 changed files with 28 additions and 5 deletions

View File

@ -67,6 +67,29 @@ void CPUInfoBox::clear()
setInfoLine(2, "");
}
static QString escapeCh(QChar ch)
{
switch(ch.unicode())
{
case '\t':
return "\\t";
case '\f':
return "\\f";
case '\v':
return "\\v";
case '\n':
return "\\n";
case '\r':
return "\\r";
case '\\':
return "\\\\";
case '\"':
return "\\\"";
default:
return QString(1, ch);
}
}
QString CPUInfoBox::getSymbolicName(dsint addr)
{
char labelText[MAX_LABEL_SIZE] = "";
@ -90,15 +113,15 @@ QString CPUInfoBox::getSymbolicName(dsint addr)
finalText = addrText;
if(addr == (addr & 0xFF))
{
QChar c = QChar::fromLatin1((char)addr);
if(c.isPrint())
finalText += QString(" '%1'").arg((char)addr);
QChar c = QChar((char)addr);
if(c.isPrint() || c.isSpace())
finalText += QString(" '%1'").arg(escapeCh(c));
}
else if(addr == (addr & 0xFFF)) //UNICODE?
{
QChar c = QChar((ushort)addr);
if(c.isPrint())
finalText += " L'" + QString(c) + "'";
if(c.isPrint() || c.isSpace())
finalText += QString(" L'%1'").arg(escapeCh(c));
}
}
return finalText;