GUI: better character recognition in CPUInfoBox
This commit is contained in:
parent
f72ed0990c
commit
1ecc5bfb75
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue