QVariant LogModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) // bad index { return QVariant(); } if (index.row() >= mEntries.size()) // row that we don't have in our model { return QVariant(); } // valid index, so go fetch the entry object LogEntry entry = mEntries.at(index.row()); switch (role) { case Qt::DecorationRole: // called to show icons // we only want to decorate 1 column, so the icon doesn't show up for every piece of data if (index.column() == 0) { // re-use the same QIcons that the Log owner created return mLog->getIcon(entry.getLevel()); } else { return QVariant(); } case Qt::DisplayRole: if(index.column() == 0) { return QVariant(entry.getTimestamp()); } else if(index.column() == 3) { return QVariant(entry.getMessage()); } case Qt::ForegroundRole: return mLog->getForegroundColour(entry.getLevel()); case Qt::UserRole: return entry.getLevel(); case Qt::ToolTipRole: return QVariant(entry.getMessage()); default: //some other role we don't really care about return QVariant(); } }
void GUIStatusBar::logModified() { LogEntry entry; if(!gDebug().getLog().getLastEntry(entry)) { GUIContent messageContent(HString(L"")); mMessage->setContent(messageContent); return; } HSpriteTexture iconTexture; Color textColor = COLOR_INFO; UINT32 logChannel = entry.getChannel(); switch (logChannel) { case (UINT32)DebugChannel::Debug: iconTexture = BuiltinEditorResources::instance().getLogMessageIcon(LogMessageIcon::Info, 16, false); break; case (UINT32)DebugChannel::Warning: case (UINT32)DebugChannel::CompilerWarning: iconTexture = BuiltinEditorResources::instance().getLogMessageIcon(LogMessageIcon::Warning, 16, false); textColor = COLOR_WARNING; break; case (UINT32)DebugChannel::Error: case (UINT32)DebugChannel::CompilerError: iconTexture = BuiltinEditorResources::instance().getLogMessageIcon(LogMessageIcon::Error, 16, false); textColor = COLOR_ERROR; break; } WString message = toWString(entry.getMessage()); size_t lfPos = message.find_first_of('\n'); size_t crPos = message.find_first_of('\r'); size_t newlinePos; if (lfPos != WString::npos) { if (crPos != WString::npos) newlinePos = std::min(lfPos, crPos); else newlinePos = lfPos; } else if (crPos != WString::npos) newlinePos = crPos; else newlinePos = -1; if (newlinePos == -1) { GUIContent messageContent(HString(message), iconTexture); mMessage->setContent(messageContent); mMessage->setTint(textColor); } else { WString firstLine = message.substr(0, newlinePos); GUIContent messageContent(HString(firstLine), iconTexture); mMessage->setContent(messageContent); mMessage->setTint(textColor); } }
void process(LogEntry entry) { std::cout << entry.getMessage() << std::endl; }
void ScriptDebug::onLogEntryAdded(const LogEntry& entry) { MonoString* message = MonoUtil::stringToMono(entry.getMessage()); MonoUtil::invokeThunk(onAddedThunk, entry.getChannel(), message); }