logic: Moved all error handling logic into ErrorController (issue #577)
* Handle all error related messages in ErrorController * Moved error filter state from Storage to ErrorController * Moved all error related messages to type/error subdirectory * Enable all errors shown by default * Always show unfiltered error count in status bar and overview * Fixed all errors shown again when changing error filter on errors for file
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
#include "utility/interprocess/SharedMemoryGarbageCollector.h"
|
||||
#include "utility/logging/logging.h"
|
||||
#include "utility/logging/LogManager.h"
|
||||
#include "utility/messaging/filter_types/MessageFilterErrorCountUpdate.h"
|
||||
#include "utility/messaging/filter_types/MessageFilterFocusInOut.h"
|
||||
#include "utility/messaging/filter_types/MessageFilterNewErrors.h"
|
||||
#include "utility/messaging/filter_types/MessageFilterSearchAutocomplete.h"
|
||||
#include "utility/messaging/MessageQueue.h"
|
||||
#include "utility/messaging/type/MessageForceEnterLicense.h"
|
||||
@@ -359,8 +359,8 @@ void Application::startMessagingAndScheduling()
|
||||
TaskScheduler::getInstance()->startSchedulerLoopThreaded();
|
||||
|
||||
MessageQueue* queue = MessageQueue::getInstance().get();
|
||||
queue->addMessageFilter(std::make_shared<MessageFilterErrorCountUpdate>());
|
||||
queue->addMessageFilter(std::make_shared<MessageFilterFocusInOut>());
|
||||
queue->addMessageFilter(std::make_shared<MessageFilterNewErrors>());
|
||||
queue->addMessageFilter(std::make_shared<MessageFilterSearchAutocomplete>());
|
||||
|
||||
queue->setSendMessagesAsTasks(true);
|
||||
|
||||
@@ -416,10 +416,18 @@ add_files(
|
||||
utility/math/Vector4.h
|
||||
utility/math/VectorBase.h
|
||||
|
||||
utility/messaging/filter_types/MessageFilterErrorCountUpdate.h
|
||||
utility/messaging/filter_types/MessageFilterFocusInOut.h
|
||||
utility/messaging/filter_types/MessageFilterNewErrors.h
|
||||
utility/messaging/filter_types/MessageFilterSearchAutocomplete.h
|
||||
|
||||
utility/messaging/type/error/MessageActivateErrors.h
|
||||
utility/messaging/type/error/MessageErrorCountClear.h
|
||||
utility/messaging/type/error/MessageErrorCountUpdate.h
|
||||
utility/messaging/type/error/MessageErrorsAll.h
|
||||
utility/messaging/type/error/MessageErrorsForFile.h
|
||||
utility/messaging/type/error/MessageErrorsHelpMessage.h
|
||||
utility/messaging/type/error/MessageShowError.h
|
||||
|
||||
utility/messaging/type/MessageActivateAll.h
|
||||
utility/messaging/type/MessageActivateBookmark.h
|
||||
utility/messaging/type/MessageActivateEdge.h
|
||||
@@ -433,7 +441,6 @@ add_files(
|
||||
utility/messaging/type/MessageActivateTrailEdge.h
|
||||
utility/messaging/type/MessageActivateWindow.h
|
||||
utility/messaging/type/MessageChangeFileView.h
|
||||
utility/messaging/type/MessageClearErrorCount.h
|
||||
utility/messaging/type/MessageClearLogView.h
|
||||
utility/messaging/type/MessageClearStatusView.h
|
||||
utility/messaging/type/MessageCodeReference.h
|
||||
@@ -441,7 +448,6 @@ add_files(
|
||||
utility/messaging/type/MessageDisplayBookmarkCreator.h
|
||||
utility/messaging/type/MessageDisplayBookmarks.h
|
||||
utility/messaging/type/MessageEnteredLicense.h
|
||||
utility/messaging/type/MessageErrorFilterChanged.h
|
||||
utility/messaging/type/MessageFind.h
|
||||
utility/messaging/type/MessageFinishedParsing.h
|
||||
utility/messaging/type/MessageFlushUpdates.h
|
||||
@@ -457,7 +463,6 @@ add_files(
|
||||
utility/messaging/type/MessageLoadProject.h
|
||||
utility/messaging/type/MessageLogFilterChanged.h
|
||||
utility/messaging/type/MessageMoveIDECursor.h
|
||||
utility/messaging/type/MessageNewErrors.h
|
||||
utility/messaging/type/MessagePingReceived.h
|
||||
utility/messaging/type/MessagePluginPortChange.h
|
||||
utility/messaging/type/MessageProjectEdit.h
|
||||
@@ -472,9 +477,6 @@ add_files(
|
||||
utility/messaging/type/MessageSearch.h
|
||||
utility/messaging/type/MessageSearchAutocomplete.h
|
||||
utility/messaging/type/MessageSearchFullText.h
|
||||
utility/messaging/type/MessageShowErrorHelpMessage.h
|
||||
utility/messaging/type/MessageShowErrors.h
|
||||
utility/messaging/type/MessageShowErrorsForFile.h
|
||||
utility/messaging/type/MessageShowReference.h
|
||||
utility/messaging/type/MessageShowScope.h
|
||||
utility/messaging/type/MessageShowStatus.h
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
#include "data/access/StorageAccess.h"
|
||||
#include "settings/ApplicationSettings.h"
|
||||
|
||||
#include "utility/messaging/type/error/MessageErrorsAll.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageChangeFileView.h"
|
||||
#include "utility/messaging/type/MessageFlushUpdates.h"
|
||||
#include "utility/messaging/type/MessageRefresh.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageStatus.h"
|
||||
#include "utility/messaging/type/MessageScrollToLine.h"
|
||||
|
||||
@@ -153,8 +153,7 @@ void ActivationController::handleMessage(MessageSearch* message)
|
||||
|
||||
case SearchMatch::COMMAND_ERROR:
|
||||
{
|
||||
MessageShowErrors(m_storageAccess->getErrorCount()).dispatch();
|
||||
MessageFlushUpdates().dispatch();
|
||||
MessageErrorsAll().dispatch();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -168,11 +167,6 @@ void ActivationController::handleMessage(MessageSearch* message)
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
|
||||
void ActivationController::handleMessage(MessageShowErrorsForFile* message)
|
||||
{
|
||||
MessageShowErrors(m_storageAccess->getErrorIdsForFile(message->filePath)).dispatch();
|
||||
}
|
||||
|
||||
void ActivationController::handleMessage(MessageZoom* message)
|
||||
{
|
||||
bool zoomIn = message->zoomIn;
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include "utility/messaging/type/MessageActivateSourceLocations.h"
|
||||
#include "utility/messaging/type/MessageResetZoom.h"
|
||||
#include "utility/messaging/type/MessageSearch.h"
|
||||
#include "utility/messaging/type/MessageShowErrorsForFile.h"
|
||||
#include "utility/messaging/type/MessageZoom.h"
|
||||
|
||||
class StorageAccess;
|
||||
@@ -27,7 +26,6 @@ class ActivationController
|
||||
, public MessageListener<MessageActivateSourceLocations>
|
||||
, public MessageListener<MessageResetZoom>
|
||||
, public MessageListener<MessageSearch>
|
||||
, public MessageListener<MessageShowErrorsForFile>
|
||||
, public MessageListener<MessageZoom>
|
||||
{
|
||||
public:
|
||||
@@ -44,7 +42,6 @@ private:
|
||||
virtual void handleMessage(MessageActivateSourceLocations* message);
|
||||
virtual void handleMessage(MessageResetZoom* message);
|
||||
virtual void handleMessage(MessageSearch* message);
|
||||
virtual void handleMessage(MessageShowErrorsForFile* message);
|
||||
virtual void handleMessage(MessageZoom* message);
|
||||
|
||||
StorageAccess* m_storageAccess;
|
||||
|
||||
@@ -302,6 +302,11 @@ void BookmarkController::handleMessage(MessageActivateBookmark* message)
|
||||
activateBookmark(message->bookmark);
|
||||
}
|
||||
|
||||
void BookmarkController::handleMessage(MessageActivateErrors* message)
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
void BookmarkController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
m_activeEdgeIds.clear();
|
||||
@@ -352,11 +357,6 @@ void BookmarkController::handleMessage(MessageFinishedParsing* message)
|
||||
update();
|
||||
}
|
||||
|
||||
void BookmarkController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
std::vector<std::wstring> BookmarkController::getActiveTokenDisplayNames() const
|
||||
{
|
||||
if (m_activeEdgeIds.size() > 0)
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
#include "data/bookmark/EdgeBookmark.h"
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/error/MessageActivateErrors.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateBookmark.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageDisplayBookmarkCreator.h"
|
||||
#include "utility/messaging/type/MessageDisplayBookmarks.h"
|
||||
#include "utility/messaging/type/MessageFinishedParsing.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
|
||||
#include "component/controller/Controller.h"
|
||||
|
||||
@@ -22,11 +22,11 @@ class BookmarkController
|
||||
: public Controller
|
||||
, public MessageListener<MessageActivateAll>
|
||||
, public MessageListener<MessageActivateBookmark>
|
||||
, public MessageListener<MessageActivateErrors>
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageDisplayBookmarkCreator>
|
||||
, public MessageListener<MessageDisplayBookmarks>
|
||||
, public MessageListener<MessageFinishedParsing>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
{
|
||||
public:
|
||||
BookmarkController(StorageAccess* storageAccess);
|
||||
@@ -70,11 +70,11 @@ private:
|
||||
|
||||
virtual void handleMessage(MessageActivateAll* message);
|
||||
virtual void handleMessage(MessageActivateBookmark* message);
|
||||
virtual void handleMessage(MessageActivateErrors* message);
|
||||
virtual void handleMessage(MessageActivateTokens* message);
|
||||
virtual void handleMessage(MessageDisplayBookmarkCreator* message);
|
||||
virtual void handleMessage(MessageDisplayBookmarks* message);
|
||||
virtual void handleMessage(MessageFinishedParsing* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
|
||||
std::vector<std::wstring> getActiveTokenDisplayNames() const;
|
||||
std::vector<std::wstring> getDisplayNamesForNodeId(Id nodeId) const;
|
||||
|
||||
@@ -81,10 +81,11 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
ss << "\t" + std::to_string(errorCount.total) + " errors (" + std::to_string(errorCount.fatal) + " fatal)\n";
|
||||
ss << "\n";
|
||||
|
||||
if (stats.completedFileCount != stats.fileCount)
|
||||
if (errorCount.fatal)
|
||||
{
|
||||
ss << "\tWarning: Indexing is incomplete as long as it yields fatal errors.\n";
|
||||
ss << "\tTry resolving them and refresh the project.\n";
|
||||
ss << "\tWarning: Your project has fatal errors, which cause\n";
|
||||
ss << "\t a lot of missing information in affected files.\n";
|
||||
ss << "\t Try to resolve them!\n";
|
||||
ss << "\n";
|
||||
}
|
||||
|
||||
@@ -96,6 +97,41 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
showCodeSnippets({ statsSnippet }, params);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageActivateErrors* message)
|
||||
{
|
||||
TRACE("code errors");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
CodeView* view = getView();
|
||||
|
||||
CodeView::ScrollParams scrollParams(CodeView::ScrollParams::SCROLL_TO_DEFINITION);
|
||||
view->scrollTo(scrollParams);
|
||||
|
||||
std::vector<ErrorInfo> errors;
|
||||
if (message->file.empty())
|
||||
{
|
||||
errors = m_storageAccess->getErrorsLimited(message->filter);
|
||||
}
|
||||
else
|
||||
{
|
||||
errors = m_storageAccess->getErrorsForFileLimited(message->filter, message->file);
|
||||
}
|
||||
|
||||
m_collection = m_storageAccess->getErrorSourceLocations(errors);
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForCollection(m_collection);
|
||||
|
||||
std::sort(snippets.begin(), snippets.end(), CodeSnippetParams::sortById);
|
||||
|
||||
CodeView::CodeParams params;
|
||||
params.clearSnippets = true;
|
||||
params.errorInfos = errors;
|
||||
params.showContents = !message->isReplayed();
|
||||
params.useSingleFileCache = false;
|
||||
|
||||
showCodeSnippets(snippets, params, false);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageActivateLocalSymbols* message)
|
||||
{
|
||||
CodeView* view = getView();
|
||||
@@ -230,14 +266,6 @@ void CodeController::handleMessage(MessageChangeFileView* message)
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageClearErrorCount* message)
|
||||
{
|
||||
if (getView()->showsErrors())
|
||||
{
|
||||
clear();
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageDeactivateEdge* message)
|
||||
{
|
||||
if (message->scrollToDefinition)
|
||||
@@ -249,6 +277,14 @@ void CodeController::handleMessage(MessageDeactivateEdge* message)
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageErrorCountClear* message)
|
||||
{
|
||||
if (getView()->showsErrors())
|
||||
{
|
||||
clear();
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageFlushUpdates* message)
|
||||
{
|
||||
getView()->showContents();
|
||||
@@ -289,44 +325,6 @@ void CodeController::handleMessage(MessageScrollCode* message)
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
TRACE("code errors");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
CodeView* view = getView();
|
||||
if (!view->showsErrors() || !message->errorId)
|
||||
{
|
||||
CodeView::ScrollParams scrollParams(CodeView::ScrollParams::SCROLL_TO_DEFINITION);
|
||||
view->scrollTo(scrollParams);
|
||||
|
||||
std::vector<ErrorInfo> errors;
|
||||
if (!message->showsOnlyErrorIds || message->errorIds.size())
|
||||
{
|
||||
errors = m_storageAccess->getErrorsLimited(message->errorIds);
|
||||
}
|
||||
|
||||
m_collection = m_storageAccess->getErrorSourceLocations(errors);
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForCollection(m_collection);
|
||||
|
||||
std::sort(snippets.begin(), snippets.end(), CodeSnippetParams::sortById);
|
||||
|
||||
CodeView::CodeParams params;
|
||||
params.clearSnippets = true;
|
||||
params.errorInfos = errors;
|
||||
params.showContents = !message->isReplayed();
|
||||
params.useSingleFileCache = false;
|
||||
|
||||
showCodeSnippets(snippets, params, false);
|
||||
}
|
||||
|
||||
if (message->errorId)
|
||||
{
|
||||
view->showActiveSnippet(std::vector<Id>(1, message->errorId), m_collection, message->isLast());
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageSearchFullText* message)
|
||||
{
|
||||
TRACE("code fulltext");
|
||||
@@ -346,6 +344,15 @@ void CodeController::handleMessage(MessageSearchFullText* message)
|
||||
showCodeSnippets(getSnippetsForCollection(m_collection), params);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowError* message)
|
||||
{
|
||||
CodeView* view = getView();
|
||||
if (view->showsErrors())
|
||||
{
|
||||
view->showActiveSnippet({ message->errorId }, m_collection, message->isLast());
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowScope* message)
|
||||
{
|
||||
TRACE("code scope");
|
||||
|
||||
@@ -6,12 +6,14 @@
|
||||
|
||||
#include "utility/file/FilePath.h"
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/error/MessageActivateErrors.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountClear.h"
|
||||
#include "utility/messaging/type/error/MessageShowError.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateLocalSymbols.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageActivateTrailEdge.h"
|
||||
#include "utility/messaging/type/MessageChangeFileView.h"
|
||||
#include "utility/messaging/type/MessageClearErrorCount.h"
|
||||
#include "utility/messaging/type/MessageDeactivateEdge.h"
|
||||
#include "utility/messaging/type/MessageFlushUpdates.h"
|
||||
#include "utility/messaging/type/MessageFocusIn.h"
|
||||
@@ -19,7 +21,6 @@
|
||||
#include "utility/messaging/type/MessageScrollCode.h"
|
||||
#include "utility/messaging/type/MessageScrollToLine.h"
|
||||
#include "utility/messaging/type/MessageSearchFullText.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageShowScope.h"
|
||||
#include "utility/types.h"
|
||||
|
||||
@@ -35,19 +36,20 @@ class SourceLocationFile;
|
||||
class CodeController
|
||||
: public Controller
|
||||
, public MessageListener<MessageActivateAll>
|
||||
, public MessageListener<MessageActivateErrors>
|
||||
, public MessageListener<MessageActivateLocalSymbols>
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageActivateTrailEdge>
|
||||
, public MessageListener<MessageChangeFileView>
|
||||
, public MessageListener<MessageClearErrorCount>
|
||||
, public MessageListener<MessageDeactivateEdge>
|
||||
, public MessageListener<MessageErrorCountClear>
|
||||
, public MessageListener<MessageFlushUpdates>
|
||||
, public MessageListener<MessageFocusIn>
|
||||
, public MessageListener<MessageFocusOut>
|
||||
, public MessageListener<MessageScrollCode>
|
||||
, public MessageListener<MessageScrollToLine>
|
||||
, public MessageListener<MessageSearchFullText>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageShowError>
|
||||
, public MessageListener<MessageShowScope>
|
||||
{
|
||||
public:
|
||||
@@ -58,19 +60,20 @@ private:
|
||||
static const uint s_lineRadius;
|
||||
|
||||
virtual void handleMessage(MessageActivateAll* message);
|
||||
virtual void handleMessage(MessageActivateErrors* message);
|
||||
virtual void handleMessage(MessageActivateLocalSymbols* message);
|
||||
virtual void handleMessage(MessageActivateTokens* message);
|
||||
virtual void handleMessage(MessageActivateTrailEdge* message);
|
||||
virtual void handleMessage(MessageChangeFileView* message);
|
||||
virtual void handleMessage(MessageClearErrorCount* message);
|
||||
virtual void handleMessage(MessageDeactivateEdge* message);
|
||||
virtual void handleMessage(MessageErrorCountClear* message);
|
||||
virtual void handleMessage(MessageFlushUpdates* message);
|
||||
virtual void handleMessage(MessageFocusIn* message);
|
||||
virtual void handleMessage(MessageFocusOut* message);
|
||||
virtual void handleMessage(MessageScrollCode* message);
|
||||
virtual void handleMessage(MessageScrollToLine* message);
|
||||
virtual void handleMessage(MessageSearchFullText* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
virtual void handleMessage(MessageShowError* message);
|
||||
virtual void handleMessage(MessageShowScope* message);
|
||||
|
||||
CodeView* getView() const;
|
||||
|
||||
@@ -12,51 +12,109 @@ ErrorController::~ErrorController()
|
||||
{
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageClearErrorCount* message)
|
||||
void ErrorController::errorFilterChanged(const ErrorFilter& filter)
|
||||
{
|
||||
if (m_activeFilePath.empty())
|
||||
{
|
||||
MessageActivateErrors(filter).dispatch();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageActivateErrors(filter, m_activeFilePath).dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
void ErrorController::showError(Id errorId)
|
||||
{
|
||||
if (!m_showsErrors)
|
||||
{
|
||||
errorFilterChanged(getView()->getErrorFilter());
|
||||
}
|
||||
|
||||
MessageShowError(errorId).dispatch();
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageActivateAll* message)
|
||||
{
|
||||
m_showsErrors = false;
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageActivateErrors* message)
|
||||
{
|
||||
clear();
|
||||
|
||||
getView()->resetErrorLimit();
|
||||
m_showsErrors = true;
|
||||
m_activeFilePath = message->file;
|
||||
|
||||
ErrorView* view = getView();
|
||||
view->setErrorFilter(message->filter);
|
||||
|
||||
if (showErrors(message->filter, true))
|
||||
{
|
||||
view->showDockWidget();
|
||||
}
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageFinishedParsing* message)
|
||||
void ErrorController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
m_showsErrors = false;
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageErrorCountClear* message)
|
||||
{
|
||||
clear();
|
||||
|
||||
getView()->setErrorCount(m_storageAccess->getErrorCount());
|
||||
getView()->addErrors(m_storageAccess->getErrorsLimited({ }), false);
|
||||
ErrorView* view = getView();
|
||||
|
||||
ErrorFilter filter = view->getErrorFilter();
|
||||
filter.limit = ErrorFilter().limit;
|
||||
view->setErrorFilter(filter);
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageNewErrors* message)
|
||||
void ErrorController::handleMessage(MessageErrorCountUpdate* message)
|
||||
{
|
||||
ErrorFilter filter;
|
||||
int room = message->errors.size() + filter.limit - message->errorCount.total;
|
||||
ErrorFilter filter = getView()->getErrorFilter();
|
||||
|
||||
int room = filter.limit - m_errorCount;
|
||||
if (room > 0)
|
||||
{
|
||||
std::vector<ErrorInfo> errors = message->errors;
|
||||
if (room < int(errors.size()))
|
||||
{
|
||||
errors.resize(room);
|
||||
}
|
||||
filter.limit = 0;
|
||||
std::vector<ErrorInfo> errors = m_storageAccess->getErrorsLimited(filter);
|
||||
ErrorCountInfo errorCount(errors);
|
||||
|
||||
getView()->addErrors(message->errors, true);
|
||||
auto startIt = errors.begin() + m_errorCount;
|
||||
errors = std::vector<ErrorInfo>(
|
||||
startIt,
|
||||
(errors.size() < m_errorCount + room) ? errors.end() : startIt + room
|
||||
);
|
||||
|
||||
getView()->addErrors(errors, errorCount, true);
|
||||
getView()->showDockWidget();
|
||||
|
||||
m_errorCount += errors.size();
|
||||
}
|
||||
|
||||
getView()->setErrorCount(message->errorCount);
|
||||
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageShowErrorHelpMessage* message)
|
||||
void ErrorController::handleMessage(MessageErrorsAll* message)
|
||||
{
|
||||
MessageActivateErrors(getView()->getErrorFilter()).dispatch();
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageErrorsForFile* message)
|
||||
{
|
||||
MessageActivateErrors(ErrorFilter(), message->file).dispatch();
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageErrorsHelpMessage* message)
|
||||
{
|
||||
ApplicationSettings* appSettings = ApplicationSettings::getInstance().get();
|
||||
if (!message->force && appSettings->getSeenErrorHelpMessage())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!message->force)
|
||||
{
|
||||
if (appSettings->getSeenErrorHelpMessage())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ErrorCountInfo info = m_storageAccess->getErrorCount();
|
||||
if (!info.total)
|
||||
{
|
||||
@@ -70,29 +128,21 @@ void ErrorController::handleMessage(MessageShowErrorHelpMessage* message)
|
||||
getView()->showErrorHelpMessage();
|
||||
}
|
||||
|
||||
void ErrorController::handleMessage(MessageShowErrors* message)
|
||||
void ErrorController::handleMessage(MessageFinishedParsing* message)
|
||||
{
|
||||
if (message->errorId)
|
||||
{
|
||||
getView()->setErrorId(message->errorId);
|
||||
return;
|
||||
}
|
||||
|
||||
clear();
|
||||
|
||||
std::vector<ErrorInfo> errors;
|
||||
if (!message->showsOnlyErrorIds || message->errorIds.size())
|
||||
{
|
||||
errors = m_storageAccess->getErrorsLimited(message->errorIds);
|
||||
}
|
||||
showErrors(getView()->getErrorFilter(), false);
|
||||
}
|
||||
|
||||
if (errors.size())
|
||||
{
|
||||
getView()->showDockWidget();
|
||||
}
|
||||
void ErrorController::handleMessage(MessageShowError* message)
|
||||
{
|
||||
getView()->setErrorId(message->errorId);
|
||||
}
|
||||
|
||||
getView()->setErrorCount(message->errorCount);
|
||||
getView()->addErrors(errors, false);
|
||||
void ErrorController::handleMessage(MessageSearchFullText* message)
|
||||
{
|
||||
m_showsErrors = false;
|
||||
}
|
||||
|
||||
ErrorView* ErrorController::getView() const
|
||||
@@ -102,5 +152,37 @@ ErrorView* ErrorController::getView() const
|
||||
|
||||
void ErrorController::clear()
|
||||
{
|
||||
m_showsErrors = false;
|
||||
m_errorCount = 0;
|
||||
m_activeFilePath = FilePath();
|
||||
|
||||
getView()->clear();
|
||||
}
|
||||
|
||||
bool ErrorController::showErrors(const ErrorFilter& filter, bool scrollTo)
|
||||
{
|
||||
ErrorView* view = getView();
|
||||
|
||||
ErrorFilter filterUnlimited = filter;
|
||||
filterUnlimited.limit = 0;
|
||||
|
||||
std::vector<ErrorInfo> errors;
|
||||
if (m_activeFilePath.empty())
|
||||
{
|
||||
errors = m_storageAccess->getErrorsLimited(filterUnlimited);
|
||||
}
|
||||
else
|
||||
{
|
||||
errors = m_storageAccess->getErrorsForFileLimited(filter, m_activeFilePath);
|
||||
}
|
||||
|
||||
ErrorCountInfo errorCount(errors);
|
||||
if (filter.limit > 0 && errors.size() > filter.limit)
|
||||
{
|
||||
errors.resize(filter.limit);
|
||||
}
|
||||
|
||||
view->addErrors(errors, errorCount, scrollTo);
|
||||
|
||||
return errors.size();
|
||||
}
|
||||
|
||||
@@ -2,11 +2,17 @@
|
||||
#define ERROR_CONTROLLER_H
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/MessageClearErrorCount.h"
|
||||
#include "utility/messaging/type/error/MessageActivateErrors.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountClear.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountUpdate.h"
|
||||
#include "utility/messaging/type/error/MessageErrorsAll.h"
|
||||
#include "utility/messaging/type/error/MessageErrorsForFile.h"
|
||||
#include "utility/messaging/type/error/MessageErrorsHelpMessage.h"
|
||||
#include "utility/messaging/type/error/MessageShowError.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageFinishedParsing.h"
|
||||
#include "utility/messaging/type/MessageNewErrors.h"
|
||||
#include "utility/messaging/type/MessageShowErrorHelpMessage.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageSearchFullText.h"
|
||||
|
||||
#include "component/controller/Controller.h"
|
||||
#include "component/view/ErrorView.h"
|
||||
@@ -15,28 +21,49 @@ class StorageAccess;
|
||||
|
||||
class ErrorController
|
||||
: public Controller
|
||||
, public MessageListener<MessageClearErrorCount>
|
||||
, public MessageListener<MessageActivateAll>
|
||||
, public MessageListener<MessageActivateErrors>
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageErrorCountClear>
|
||||
, public MessageListener<MessageErrorCountUpdate>
|
||||
, public MessageListener<MessageErrorsAll>
|
||||
, public MessageListener<MessageErrorsForFile>
|
||||
, public MessageListener<MessageErrorsHelpMessage>
|
||||
, public MessageListener<MessageFinishedParsing>
|
||||
, public MessageListener<MessageNewErrors>
|
||||
, public MessageListener<MessageShowErrorHelpMessage>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageShowError>
|
||||
, public MessageListener<MessageSearchFullText>
|
||||
{
|
||||
public:
|
||||
ErrorController(StorageAccess* storageAccess);
|
||||
~ErrorController();
|
||||
|
||||
void errorFilterChanged(const ErrorFilter& filter);
|
||||
void showError(Id errorId);
|
||||
|
||||
private:
|
||||
virtual void handleMessage(MessageClearErrorCount* message);
|
||||
virtual void handleMessage(MessageActivateAll* message);
|
||||
virtual void handleMessage(MessageActivateErrors* message);
|
||||
virtual void handleMessage(MessageActivateTokens* message);
|
||||
virtual void handleMessage(MessageErrorCountClear* message);
|
||||
virtual void handleMessage(MessageErrorCountUpdate* message);
|
||||
virtual void handleMessage(MessageErrorsAll* message);
|
||||
virtual void handleMessage(MessageErrorsForFile* message);
|
||||
virtual void handleMessage(MessageErrorsHelpMessage* message);
|
||||
virtual void handleMessage(MessageFinishedParsing* message);
|
||||
virtual void handleMessage(MessageNewErrors* message);
|
||||
virtual void handleMessage(MessageShowErrorHelpMessage* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
virtual void handleMessage(MessageShowError* message);
|
||||
virtual void handleMessage(MessageSearchFullText* message);
|
||||
|
||||
ErrorView* getView() const;
|
||||
|
||||
virtual void clear();
|
||||
|
||||
bool showErrors(const ErrorFilter& filter, bool scrollTo);
|
||||
|
||||
StorageAccess* m_storageAccess;
|
||||
|
||||
bool m_showsErrors = false;
|
||||
size_t m_errorCount = 0;
|
||||
FilePath m_activeFilePath;
|
||||
};
|
||||
|
||||
#endif // ERROR_CONTROLLER_H
|
||||
|
||||
@@ -64,6 +64,11 @@ void GraphController::handleMessage(MessageActivateAll* message)
|
||||
buildGraph(message, false, true, message->acceptedNodeTypes != NodeTypeSet::all());
|
||||
}
|
||||
|
||||
void GraphController::handleMessage(MessageActivateErrors* message)
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
void GraphController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
TRACE("graph activate");
|
||||
@@ -496,11 +501,6 @@ void GraphController::handleMessage(MessageGraphNodeMove* message)
|
||||
}
|
||||
}
|
||||
|
||||
void GraphController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
void GraphController::handleMessage(MessageShowReference* message)
|
||||
{
|
||||
if (!message->tokenId || !message->fromUser)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/error/MessageActivateErrors.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageActivateTrail.h"
|
||||
@@ -18,7 +19,6 @@
|
||||
#include "utility/messaging/type/MessageGraphNodeMove.h"
|
||||
#include "utility/messaging/type/MessageScrollGraph.h"
|
||||
#include "utility/messaging/type/MessageSearchFullText.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageShowReference.h"
|
||||
|
||||
#include "component/controller/Controller.h"
|
||||
@@ -33,6 +33,7 @@ class StorageAccess;
|
||||
class GraphController
|
||||
: public Controller
|
||||
, public MessageListener<MessageActivateAll>
|
||||
, public MessageListener<MessageActivateErrors>
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageActivateTrail>
|
||||
, public MessageListener<MessageActivateTrailEdge>
|
||||
@@ -45,7 +46,6 @@ class GraphController
|
||||
, public MessageListener<MessageGraphNodeMove>
|
||||
, public MessageListener<MessageScrollGraph>
|
||||
, public MessageListener<MessageSearchFullText>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageShowReference>
|
||||
{
|
||||
public:
|
||||
@@ -54,6 +54,7 @@ public:
|
||||
|
||||
private:
|
||||
virtual void handleMessage(MessageActivateAll* message);
|
||||
virtual void handleMessage(MessageActivateErrors* message);
|
||||
virtual void handleMessage(MessageActivateTokens* message);
|
||||
virtual void handleMessage(MessageActivateTrail* message);
|
||||
virtual void handleMessage(MessageActivateTrailEdge* message);
|
||||
@@ -66,7 +67,6 @@ private:
|
||||
virtual void handleMessage(MessageGraphNodeMove* message);
|
||||
virtual void handleMessage(MessageScrollGraph* message);
|
||||
virtual void handleMessage(MessageSearchFullText* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
virtual void handleMessage(MessageShowReference* message);
|
||||
|
||||
GraphView* getView() const;
|
||||
|
||||
@@ -28,6 +28,12 @@ void SearchController::handleMessage(MessageActivateAll* message)
|
||||
getView()->setMatches(std::vector<SearchMatch>(1, SearchMatch::createCommand(SearchMatch::COMMAND_ALL)));
|
||||
}
|
||||
|
||||
void SearchController::handleMessage(MessageActivateErrors* message)
|
||||
{
|
||||
SearchMatch match = SearchMatch::createCommand(SearchMatch::COMMAND_ERROR);
|
||||
getView()->setMatches(std::vector<SearchMatch>(1, match));
|
||||
}
|
||||
|
||||
void SearchController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if ((message->isFromSearch && !message->isReplayed()) || message->keepContent())
|
||||
@@ -100,12 +106,6 @@ void SearchController::handleMessage(MessageSearchFullText* message)
|
||||
getView()->setMatches(std::vector<SearchMatch>(1, match));
|
||||
}
|
||||
|
||||
void SearchController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
SearchMatch match = SearchMatch::createCommand(SearchMatch::COMMAND_ERROR);
|
||||
getView()->setMatches(std::vector<SearchMatch>(1, match));
|
||||
}
|
||||
|
||||
SearchView* SearchController::getView()
|
||||
{
|
||||
return Controller::getView<SearchView>();
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
#include "component/controller/Controller.h"
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/error/MessageActivateErrors.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageFind.h"
|
||||
#include "utility/messaging/type/MessageSearchAutocomplete.h"
|
||||
#include "utility/messaging/type/MessageSearchFullText.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
|
||||
class StorageAccess;
|
||||
class SearchView;
|
||||
@@ -16,11 +16,11 @@ class SearchView;
|
||||
class SearchController
|
||||
: public Controller
|
||||
, public MessageListener<MessageActivateAll>
|
||||
, public MessageListener<MessageActivateErrors>
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageFind>
|
||||
, public MessageListener<MessageSearchAutocomplete>
|
||||
, public MessageListener<MessageSearchFullText>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
{
|
||||
public:
|
||||
SearchController(StorageAccess* storageAccess);
|
||||
@@ -28,11 +28,11 @@ public:
|
||||
|
||||
private:
|
||||
virtual void handleMessage(MessageActivateAll* message);
|
||||
virtual void handleMessage(MessageActivateErrors* message);
|
||||
virtual void handleMessage(MessageActivateTokens* message);
|
||||
virtual void handleMessage(MessageFind* message);
|
||||
virtual void handleMessage(MessageSearchAutocomplete* message);
|
||||
virtual void handleMessage(MessageSearchFullText* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
|
||||
SearchView* getView();
|
||||
|
||||
|
||||
@@ -23,15 +23,19 @@ void StatusBarController::clear()
|
||||
getView()->setErrorCount(ErrorCountInfo());
|
||||
}
|
||||
|
||||
void StatusBarController::handleMessage(MessageClearErrorCount* message)
|
||||
void StatusBarController::handleMessage(MessageErrorCountClear* message)
|
||||
{
|
||||
getView()->setErrorCount(ErrorCountInfo());
|
||||
}
|
||||
|
||||
void StatusBarController::handleMessage(MessageErrorCountUpdate* message)
|
||||
{
|
||||
getView()->setErrorCount(message->errorCount);
|
||||
}
|
||||
|
||||
void StatusBarController::handleMessage(MessageFinishedParsing* message)
|
||||
{
|
||||
ErrorCountInfo errorCount = m_storageAccess->getErrorCount();
|
||||
getView()->setErrorCount(errorCount);
|
||||
getView()->setErrorCount(m_storageAccess->getErrorCount());
|
||||
}
|
||||
|
||||
void StatusBarController::handleMessage(MessagePingReceived* message)
|
||||
@@ -57,16 +61,6 @@ void StatusBarController::handleMessage(MessageRefresh* message)
|
||||
getView()->setErrorCount(m_storageAccess->getErrorCount());
|
||||
}
|
||||
|
||||
void StatusBarController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
if (message->errorId || message->errorIds.size() || message->isReplayed())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
getView()->setErrorCount(message->errorCount);
|
||||
}
|
||||
|
||||
void StatusBarController::handleMessage(MessageStatus* message)
|
||||
{
|
||||
setStatus(message->status(), message->isError, message->showLoader);
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
#include "component/controller/Controller.h"
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/MessageClearErrorCount.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountClear.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountUpdate.h"
|
||||
#include "utility/messaging/type/MessageFinishedParsing.h"
|
||||
#include "utility/messaging/type/MessagePingReceived.h"
|
||||
#include "utility/messaging/type/MessageRefresh.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageStatus.h"
|
||||
|
||||
class StatusBarView;
|
||||
@@ -18,11 +18,11 @@ class StorageAccess;
|
||||
|
||||
class StatusBarController
|
||||
: public Controller
|
||||
, public MessageListener<MessageClearErrorCount>
|
||||
, public MessageListener<MessageErrorCountClear>
|
||||
, public MessageListener<MessageErrorCountUpdate>
|
||||
, public MessageListener<MessageFinishedParsing>
|
||||
, public MessageListener<MessagePingReceived>
|
||||
, public MessageListener<MessageRefresh>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageStatus>
|
||||
{
|
||||
public:
|
||||
@@ -34,11 +34,11 @@ public:
|
||||
virtual void clear();
|
||||
|
||||
private:
|
||||
virtual void handleMessage(MessageClearErrorCount* message);
|
||||
virtual void handleMessage(MessageErrorCountClear* message);
|
||||
virtual void handleMessage(MessageErrorCountUpdate* message);
|
||||
virtual void handleMessage(MessageFinishedParsing* message);
|
||||
virtual void handleMessage(MessagePingReceived* message);
|
||||
virtual void handleMessage(MessageRefresh* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
virtual void handleMessage(MessageStatus* message);
|
||||
|
||||
void setStatus(const std::wstring& status, bool isError, bool showLoader);
|
||||
|
||||
@@ -54,6 +54,19 @@ void UndoRedoController::handleMessage(MessageActivateAll* message)
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageActivateErrors* message)
|
||||
{
|
||||
if (sameMessageTypeAsLast(message) &&
|
||||
static_cast<MessageActivateErrors*>(lastMessage())->filter == message->filter &&
|
||||
static_cast<MessageActivateErrors*>(lastMessage())->file == message->file)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Command command(std::make_shared<MessageActivateErrors>(*message), Command::ORDER_ACTIVATE);
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageActivateLocalSymbols* message)
|
||||
{
|
||||
if (sameMessageTypeAsLast(message))
|
||||
@@ -270,16 +283,15 @@ void UndoRedoController::handleMessage(MessageSearchFullText* message)
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageShowErrors* message)
|
||||
void UndoRedoController::handleMessage(MessageShowError* message)
|
||||
{
|
||||
if (sameMessageTypeAsLast(message) &&
|
||||
static_cast<MessageShowErrors*>(lastMessage())->errorId == message->errorId &&
|
||||
static_cast<MessageShowErrors*>(lastMessage())->errorIds.size() == message->errorIds.size())
|
||||
static_cast<MessageShowError*>(lastMessage())->errorId == message->errorId)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Command command(std::make_shared<MessageShowErrors>(*message), Command::ORDER_ACTIVATE);
|
||||
Command command(std::make_shared<MessageShowError>(*message), Command::ORDER_ADAPT);
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
@@ -637,7 +649,7 @@ SearchMatch UndoRedoController::getSearchMatchForMessage(MessageBase* message) c
|
||||
match.searchType = SearchMatch::SEARCH_FULLTEXT;
|
||||
return match;
|
||||
}
|
||||
else if (message->getType() == MessageShowErrors::getStaticType())
|
||||
else if (message->getType() == MessageActivateErrors::getStaticType())
|
||||
{
|
||||
return SearchMatch::createCommand(SearchMatch::COMMAND_ERROR);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
#include "utility/messaging/MessageBase.h"
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/error/MessageActivateErrors.h"
|
||||
#include "utility/messaging/type/error/MessageShowError.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateLocalSymbols.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
@@ -22,7 +24,6 @@
|
||||
#include "utility/messaging/type/MessageScrollCode.h"
|
||||
#include "utility/messaging/type/MessageScrollGraph.h"
|
||||
#include "utility/messaging/type/MessageSearchFullText.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageShowReference.h"
|
||||
#include "utility/messaging/type/MessageShowScope.h"
|
||||
#include "utility/messaging/type/MessageToUndoRedoPosition.h"
|
||||
@@ -36,6 +37,7 @@ class UndoRedoView;
|
||||
class UndoRedoController
|
||||
: public Controller
|
||||
, public MessageListener<MessageActivateAll>
|
||||
, public MessageListener<MessageActivateErrors>
|
||||
, public MessageListener<MessageActivateLocalSymbols>
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageActivateTrail>
|
||||
@@ -52,7 +54,7 @@ class UndoRedoController
|
||||
, public MessageListener<MessageScrollCode>
|
||||
, public MessageListener<MessageScrollGraph>
|
||||
, public MessageListener<MessageSearchFullText>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageShowError>
|
||||
, public MessageListener<MessageShowReference>
|
||||
, public MessageListener<MessageShowScope>
|
||||
, public MessageListener<MessageToUndoRedoPosition>
|
||||
@@ -84,6 +86,7 @@ private:
|
||||
};
|
||||
|
||||
virtual void handleMessage(MessageActivateAll* message);
|
||||
virtual void handleMessage(MessageActivateErrors* message);
|
||||
virtual void handleMessage(MessageActivateLocalSymbols* message);
|
||||
virtual void handleMessage(MessageActivateTokens* message);
|
||||
virtual void handleMessage(MessageActivateTrail* message);
|
||||
@@ -100,7 +103,7 @@ private:
|
||||
virtual void handleMessage(MessageScrollCode* message);
|
||||
virtual void handleMessage(MessageScrollGraph* message);
|
||||
virtual void handleMessage(MessageSearchFullText* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
virtual void handleMessage(MessageShowError* message);
|
||||
virtual void handleMessage(MessageShowReference* message);
|
||||
virtual void handleMessage(MessageShowScope* message);
|
||||
virtual void handleMessage(MessageToUndoRedoPosition* message);
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "component/view/View.h"
|
||||
#include "data/ErrorCountInfo.h"
|
||||
#include "data/ErrorFilter.h"
|
||||
#include "data/ErrorInfo.h"
|
||||
|
||||
class ErrorView
|
||||
@@ -18,13 +19,13 @@ public:
|
||||
|
||||
virtual void clear() = 0;
|
||||
|
||||
virtual void addErrors(const std::vector<ErrorInfo>& errors, bool scrollTo) = 0;
|
||||
virtual void addErrors(const std::vector<ErrorInfo>& errors, const ErrorCountInfo& errorCount, bool scrollTo) = 0;
|
||||
virtual void setErrorId(Id errorId) = 0;
|
||||
|
||||
virtual void setErrorCount(ErrorCountInfo info) = 0;
|
||||
virtual void resetErrorLimit() = 0;
|
||||
|
||||
virtual void showErrorHelpMessage() = 0;
|
||||
|
||||
virtual ErrorFilter getErrorFilter() const = 0;
|
||||
virtual void setErrorFilter(const ErrorFilter& filter) = 0;
|
||||
};
|
||||
|
||||
#endif // ERROR_VIEW_H
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef ERROR_COUNT_INFO_H
|
||||
#define ERROR_COUNT_INFO_H
|
||||
|
||||
#include "data/ErrorInfo.h"
|
||||
|
||||
struct ErrorCountInfo
|
||||
{
|
||||
ErrorCountInfo()
|
||||
@@ -13,6 +15,21 @@ struct ErrorCountInfo
|
||||
, fatal(fatal)
|
||||
{}
|
||||
|
||||
ErrorCountInfo(const std::vector<ErrorInfo>& errors)
|
||||
: total(0)
|
||||
, fatal(0)
|
||||
{
|
||||
for (const ErrorInfo& error : errors)
|
||||
{
|
||||
total++;
|
||||
|
||||
if (error.fatal)
|
||||
{
|
||||
fatal++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
size_t total;
|
||||
size_t fatal;
|
||||
};
|
||||
|
||||
@@ -8,7 +8,7 @@ struct ErrorFilter
|
||||
ErrorFilter()
|
||||
: error(true)
|
||||
, fatal(true)
|
||||
, unindexedError(false)
|
||||
, unindexedError(true)
|
||||
, unindexedFatal(true)
|
||||
, limit(1000)
|
||||
{
|
||||
@@ -27,6 +27,15 @@ struct ErrorFilter
|
||||
return true;
|
||||
}
|
||||
|
||||
bool operator==(const ErrorFilter& other) const
|
||||
{
|
||||
return error == other.error &&
|
||||
fatal == other.fatal &&
|
||||
unindexedError == other.unindexedError &&
|
||||
unindexedFatal == other.unindexedFatal &&
|
||||
limit == other.limit;
|
||||
}
|
||||
|
||||
bool error;
|
||||
bool fatal;
|
||||
|
||||
|
||||
@@ -3,8 +3,3 @@
|
||||
StorageAccess::~StorageAccess()
|
||||
{
|
||||
}
|
||||
|
||||
void StorageAccess::setErrorFilter(const ErrorFilter& filter)
|
||||
{
|
||||
m_errorFilter = filter;
|
||||
}
|
||||
|
||||
@@ -87,14 +87,12 @@ public:
|
||||
virtual StorageStats getStorageStats() const = 0;
|
||||
|
||||
virtual ErrorCountInfo getErrorCount() const = 0;
|
||||
// returns all errors if errorIds is empty
|
||||
virtual std::vector<ErrorInfo> getErrorsLimited(const std::vector<Id>& errorIds) const = 0;
|
||||
virtual std::vector<Id> getErrorIdsForFile(const FilePath& filePath) const = 0;
|
||||
virtual std::vector<ErrorInfo> getErrorsLimited(const ErrorFilter& filter) const = 0;
|
||||
virtual std::vector<ErrorInfo> getErrorsForFileLimited(
|
||||
const ErrorFilter& filter, const FilePath& filePath) const = 0;
|
||||
virtual std::shared_ptr<SourceLocationCollection> getErrorSourceLocations(
|
||||
const std::vector<ErrorInfo>& errors) const = 0;
|
||||
|
||||
virtual void setErrorFilter(const ErrorFilter& filter);
|
||||
|
||||
// todo: remove bookmark related methods from storage access
|
||||
virtual Id addNodeBookmark(const NodeBookmark& bookmark) = 0;
|
||||
virtual Id addEdgeBookmark(const EdgeBookmark& bookmark) = 0;
|
||||
@@ -112,9 +110,6 @@ public:
|
||||
virtual TooltipInfo getTooltipInfoForTokenIds(const std::vector<Id>& tokenIds, TooltipOrigin origin) const = 0;
|
||||
virtual TooltipInfo getTooltipInfoForSourceLocationIdsAndLocalSymbolIds(
|
||||
const std::vector<Id>& locationIds, const std::vector<Id>& localSymbolIds) const = 0;
|
||||
|
||||
protected:
|
||||
ErrorFilter m_errorFilter;
|
||||
};
|
||||
|
||||
#endif // STORAGE_ACCESS_H
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
#include "utility/file/FileInfo.h"
|
||||
#include "utility/file/FilePath.h"
|
||||
#include "utility/logging/logging.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
|
||||
StorageAccessProxy::StorageAccessProxy()
|
||||
: m_subject(nullptr)
|
||||
@@ -33,8 +32,6 @@ bool StorageAccessProxy::hasSubject() const
|
||||
void StorageAccessProxy::setSubject(StorageAccess* subject)
|
||||
{
|
||||
m_subject = subject;
|
||||
|
||||
setErrorFilter(m_errorFilter);
|
||||
}
|
||||
|
||||
Id StorageAccessProxy::getNodeIdForFileNode(const FilePath& filePath) const
|
||||
@@ -354,24 +351,24 @@ ErrorCountInfo StorageAccessProxy::getErrorCount() const
|
||||
return ErrorCountInfo();
|
||||
}
|
||||
|
||||
std::vector<ErrorInfo> StorageAccessProxy::getErrorsLimited(const std::vector<Id>& errorIds) const
|
||||
std::vector<ErrorInfo> StorageAccessProxy::getErrorsLimited(const ErrorFilter& filter) const
|
||||
{
|
||||
if (hasSubject())
|
||||
{
|
||||
return m_subject->getErrorsLimited(errorIds);
|
||||
return m_subject->getErrorsLimited(filter);
|
||||
}
|
||||
|
||||
return std::vector<ErrorInfo>();
|
||||
}
|
||||
|
||||
std::vector<Id> StorageAccessProxy::getErrorIdsForFile(const FilePath& filePath) const
|
||||
std::vector<ErrorInfo> StorageAccessProxy::getErrorsForFileLimited(const ErrorFilter& filter, const FilePath& filePath) const
|
||||
{
|
||||
if (hasSubject())
|
||||
{
|
||||
return m_subject->getErrorIdsForFile(filePath);
|
||||
return m_subject->getErrorsForFileLimited(filter, filePath);
|
||||
}
|
||||
|
||||
return std::vector<Id>();
|
||||
return std::vector<ErrorInfo>();
|
||||
}
|
||||
|
||||
std::shared_ptr<SourceLocationCollection> StorageAccessProxy::getErrorSourceLocations(
|
||||
@@ -489,23 +486,3 @@ TooltipInfo StorageAccessProxy::getTooltipInfoForSourceLocationIdsAndLocalSymbol
|
||||
|
||||
return TooltipInfo();
|
||||
}
|
||||
|
||||
void StorageAccessProxy::setErrorFilter(const ErrorFilter& filter)
|
||||
{
|
||||
StorageAccess::setErrorFilter(filter);
|
||||
|
||||
if (hasSubject())
|
||||
{
|
||||
m_subject->setErrorFilter(filter);
|
||||
}
|
||||
}
|
||||
|
||||
void StorageAccessProxy::handleMessage(MessageErrorFilterChanged* message)
|
||||
{
|
||||
setErrorFilter(message->errorFilter);
|
||||
|
||||
if (message->showErrors)
|
||||
{
|
||||
MessageShowErrors(getErrorCount()).dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,8 @@
|
||||
|
||||
#include "data/access/StorageAccess.h"
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/MessageErrorFilterChanged.h"
|
||||
|
||||
class StorageAccessProxy
|
||||
: public StorageAccess
|
||||
, public MessageListener<MessageErrorFilterChanged>
|
||||
{
|
||||
public:
|
||||
StorageAccessProxy();
|
||||
@@ -63,7 +59,7 @@ public:
|
||||
virtual std::shared_ptr<SourceLocationFile> getCommentLocationsInFile(const FilePath& filePath) const override;
|
||||
|
||||
virtual std::shared_ptr<TextAccess> getFileContent(const FilePath& filePath) const override;
|
||||
|
||||
|
||||
virtual FileInfo getFileInfoForFileId(Id id) const override;
|
||||
|
||||
virtual FileInfo getFileInfoForFilePath(const FilePath& filePath) const override;
|
||||
@@ -72,8 +68,9 @@ public:
|
||||
virtual StorageStats getStorageStats() const override;
|
||||
|
||||
virtual ErrorCountInfo getErrorCount() const override;
|
||||
virtual std::vector<ErrorInfo> getErrorsLimited(const std::vector<Id>& errorIds) const override;
|
||||
virtual std::vector<Id> getErrorIdsForFile(const FilePath& filePath) const override;
|
||||
virtual std::vector<ErrorInfo> getErrorsLimited(const ErrorFilter& filter) const override;
|
||||
virtual std::vector<ErrorInfo> getErrorsForFileLimited(
|
||||
const ErrorFilter& filter, const FilePath& filePath) const override;
|
||||
virtual std::shared_ptr<SourceLocationCollection> getErrorSourceLocations(
|
||||
const std::vector<ErrorInfo>& errors) const override;
|
||||
|
||||
@@ -96,12 +93,7 @@ public:
|
||||
virtual TooltipInfo getTooltipInfoForSourceLocationIdsAndLocalSymbolIds(
|
||||
const std::vector<Id>& locationIds, const std::vector<Id>& localSymbolIds) const override;
|
||||
|
||||
protected:
|
||||
virtual void setErrorFilter(const ErrorFilter& filter) override;
|
||||
|
||||
private:
|
||||
void handleMessage(MessageErrorFilterChanged* message) override;
|
||||
|
||||
StorageAccess* m_subject;
|
||||
};
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "utility/file/FileInfo.h"
|
||||
#include "utility/file/FilePath.h"
|
||||
#include "utility/logging/logging.h"
|
||||
#include "utility/messaging/type/MessageNewErrors.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountUpdate.h"
|
||||
#include "utility/messaging/type/MessageStatus.h"
|
||||
#include "utility/text/TextAccess.h"
|
||||
#include "utility/TextCodec.h"
|
||||
@@ -224,7 +224,7 @@ void PersistentStorage::forEachError(std::function<void(const StorageErrorData&
|
||||
|
||||
void PersistentStorage::startInjection()
|
||||
{
|
||||
m_preInjectionErrorCount = getErrors().size();
|
||||
m_preInjectionErrorCount = m_sqliteIndexStorage.getErrorCount();
|
||||
|
||||
m_sqliteIndexStorage.beginTransaction();
|
||||
}
|
||||
@@ -233,14 +233,9 @@ void PersistentStorage::finishInjection()
|
||||
{
|
||||
m_sqliteIndexStorage.commitTransaction();
|
||||
|
||||
auto errors = getErrors();
|
||||
|
||||
if (m_preInjectionErrorCount != errors.size())
|
||||
if (m_preInjectionErrorCount != m_sqliteIndexStorage.getErrorCount())
|
||||
{
|
||||
MessageNewErrors(
|
||||
std::vector<ErrorInfo>(errors.begin() + m_preInjectionErrorCount, errors.end()),
|
||||
getErrorCount(errors)
|
||||
).dispatch();
|
||||
MessageErrorCountUpdate(getErrorCount()).dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1546,53 +1541,20 @@ StorageStats PersistentStorage::getStorageStats() const
|
||||
|
||||
ErrorCountInfo PersistentStorage::getErrorCount() const
|
||||
{
|
||||
return getErrorCount(getErrors());
|
||||
return ErrorCountInfo(m_sqliteIndexStorage.getAll<StorageError>());
|
||||
}
|
||||
|
||||
ErrorCountInfo PersistentStorage::getErrorCount(const std::vector<ErrorInfo>& errors) const
|
||||
{
|
||||
ErrorCountInfo info;
|
||||
|
||||
for (const ErrorInfo& error : errors)
|
||||
{
|
||||
info.total++;
|
||||
|
||||
if (error.fatal)
|
||||
{
|
||||
info.fatal++;
|
||||
}
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
std::vector<ErrorInfo> PersistentStorage::getErrors() const
|
||||
std::vector<ErrorInfo> PersistentStorage::getErrorsLimited(const ErrorFilter& filter) const
|
||||
{
|
||||
std::vector<ErrorInfo> errors;
|
||||
|
||||
for (const ErrorInfo& error : m_sqliteIndexStorage.getAll<StorageError>())
|
||||
{
|
||||
if (m_errorFilter.filter(error))
|
||||
{
|
||||
errors.push_back(error);
|
||||
}
|
||||
}
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
std::vector<ErrorInfo> PersistentStorage::getErrorsLimited(const std::vector<Id>& errorIds) const
|
||||
{
|
||||
std::vector<ErrorInfo> errors;
|
||||
std::set<Id> ids(errorIds.begin(), errorIds.end());
|
||||
|
||||
for (const ErrorInfo& error : m_sqliteIndexStorage.getAll<StorageError>())
|
||||
{
|
||||
if (m_errorFilter.filter(error) && (!ids.size() || ids.find(error.id) != ids.end()))
|
||||
if (filter.filter(error))
|
||||
{
|
||||
errors.push_back(error);
|
||||
|
||||
if (m_errorFilter.limit > 0 && errors.size() >= m_errorFilter.limit)
|
||||
if (filter.limit > 0 && errors.size() >= filter.limit)
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -1602,11 +1564,10 @@ std::vector<ErrorInfo> PersistentStorage::getErrorsLimited(const std::vector<Id>
|
||||
return errors;
|
||||
}
|
||||
|
||||
std::vector<Id> PersistentStorage::getErrorIdsForFile(const FilePath& filePath) const
|
||||
std::vector<ErrorInfo> PersistentStorage::getErrorsForFileLimited(const ErrorFilter& filter, const FilePath& filePath) const
|
||||
{
|
||||
Id fileId = getFileNodeId(filePath);
|
||||
std::set<Id> fileIds = { fileId };
|
||||
std::vector<Id> errorIds;
|
||||
|
||||
std::unordered_map<Id, std::set<Id>> includedMap = getFileIdToIncludedFileIdMap();
|
||||
std::set<Id> fileIdsToProcess = includedMap[getFileNodeId(filePath)];
|
||||
@@ -1625,16 +1586,18 @@ std::vector<Id> PersistentStorage::getErrorIdsForFile(const FilePath& filePath)
|
||||
fileIdsToProcess = nextFileIdsToProcess;
|
||||
}
|
||||
|
||||
std::vector<ErrorInfo> res;
|
||||
|
||||
std::vector<StorageError> errors = m_sqliteIndexStorage.getAll<StorageError>();
|
||||
for (const StorageError& error : errors)
|
||||
{
|
||||
if (m_errorFilter.filter(error) && fileIds.find(getFileNodeId(FilePath(error.filePath))) != fileIds.end())
|
||||
if (filter.filter(error) && fileIds.find(getFileNodeId(FilePath(error.filePath))) != fileIds.end())
|
||||
{
|
||||
errorIds.push_back(error.id);
|
||||
res.push_back(error);
|
||||
}
|
||||
}
|
||||
|
||||
if (errorIds.empty())
|
||||
if (res.empty())
|
||||
{
|
||||
std::unordered_map<Id, std::set<Id>> includingMap = getFileIdToIncludingFileIdMap();
|
||||
fileIds.clear();
|
||||
@@ -1655,14 +1618,14 @@ std::vector<Id> PersistentStorage::getErrorIdsForFile(const FilePath& filePath)
|
||||
|
||||
for (const ErrorInfo& error : errors)
|
||||
{
|
||||
if (error.fatal && m_errorFilter.filter(error) && fileIds.find(getFileNodeId(FilePath(error.filePath))) != fileIds.end())
|
||||
if (error.fatal && filter.filter(error) && fileIds.find(getFileNodeId(FilePath(error.filePath))) != fileIds.end())
|
||||
{
|
||||
errorIds.push_back(error.id);
|
||||
res.push_back(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return errorIds;
|
||||
return res;
|
||||
}
|
||||
|
||||
std::shared_ptr<SourceLocationCollection> PersistentStorage::getErrorSourceLocations(
|
||||
@@ -1671,7 +1634,7 @@ std::shared_ptr<SourceLocationCollection> PersistentStorage::getErrorSourceLocat
|
||||
TRACE();
|
||||
|
||||
std::shared_ptr<SourceLocationCollection> collection = std::make_shared<SourceLocationCollection>();
|
||||
size_t count = 0;
|
||||
|
||||
for (const ErrorInfo& error : errors)
|
||||
{
|
||||
// Set first bit to 1 to avoid collisions
|
||||
@@ -1687,13 +1650,6 @@ std::shared_ptr<SourceLocationCollection> PersistentStorage::getErrorSourceLocat
|
||||
error.lineNumber,
|
||||
error.columnNumber
|
||||
);
|
||||
|
||||
count++;
|
||||
|
||||
if (m_errorFilter.limit > 0 && count >= m_errorFilter.limit)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
addCompleteFlagsToSourceLocationCollection(collection.get());
|
||||
|
||||
@@ -128,10 +128,9 @@ public:
|
||||
virtual StorageStats getStorageStats() const override;
|
||||
|
||||
virtual ErrorCountInfo getErrorCount() const override;
|
||||
virtual ErrorCountInfo getErrorCount(const std::vector<ErrorInfo>& errors) const;
|
||||
virtual std::vector<ErrorInfo> getErrors() const;
|
||||
virtual std::vector<ErrorInfo> getErrorsLimited(const std::vector<Id>& errorIds) const override;
|
||||
virtual std::vector<Id> getErrorIdsForFile(const FilePath& filePath) const override;
|
||||
virtual std::vector<ErrorInfo> getErrorsLimited(const ErrorFilter& filter) const override;
|
||||
virtual std::vector<ErrorInfo> getErrorsForFileLimited(
|
||||
const ErrorFilter& filter, const FilePath& filePath) const override;
|
||||
virtual std::shared_ptr<SourceLocationCollection> getErrorSourceLocations(
|
||||
const std::vector<ErrorInfo>& errors) const override;
|
||||
|
||||
@@ -190,7 +189,7 @@ private:
|
||||
void buildMemberEdgeIdOrderMap();
|
||||
void buildHierarchyCache();
|
||||
|
||||
size_t m_preInjectionErrorCount = 0;
|
||||
int m_preInjectionErrorCount = 0;
|
||||
|
||||
SearchIndex m_commandIndex;
|
||||
SearchIndex m_symbolIndex;
|
||||
|
||||
@@ -841,6 +841,11 @@ int SqliteIndexStorage::getSourceLocationCount() const
|
||||
return executeStatementScalar("SELECT COUNT(*) FROM source_location;", 0);
|
||||
}
|
||||
|
||||
int SqliteIndexStorage::getErrorCount() const
|
||||
{
|
||||
return executeStatementScalar("SELECT COUNT(*) FROM error;", 0);
|
||||
}
|
||||
|
||||
std::vector<std::pair<int, SqliteDatabaseIndex>> SqliteIndexStorage::getIndices() const
|
||||
{
|
||||
std::vector<std::pair<int, SqliteDatabaseIndex>> indices;
|
||||
|
||||
@@ -141,6 +141,7 @@ public:
|
||||
int getCompletedFileCount() const;
|
||||
int getFileLineSum() const;
|
||||
int getSourceLocationCount() const;
|
||||
int getErrorCount() const;
|
||||
|
||||
private:
|
||||
static const size_t s_storageVersion;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include "utility/file/FilePath.h"
|
||||
#include "utility/file/FileSystem.h"
|
||||
#include "utility/messaging/type/MessageClearErrorCount.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountClear.h"
|
||||
#include "utility/messaging/type/MessageFinishedParsing.h"
|
||||
#include "utility/messaging/type/MessageRefresh.h"
|
||||
#include "utility/messaging/type/MessageStatus.h"
|
||||
@@ -342,7 +342,7 @@ void Project::buildIndex(const RefreshInfo& info, DialogView* dialogView)
|
||||
}
|
||||
|
||||
MessageStatus(L"Preparing Indexing", false, true).dispatch();
|
||||
MessageClearErrorCount().dispatch();
|
||||
MessageErrorCountClear().dispatch();
|
||||
|
||||
dialogView->showUnknownProgressDialog(L"Preparing Indexing", L"Setting up Indexers");
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef MESSAGE_FILTER_ERROR_COUNT_UPDATE_H
|
||||
#define MESSAGE_FILTER_ERROR_COUNT_UPDATE_H
|
||||
|
||||
#include "utility/messaging/MessageFilter.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountUpdate.h"
|
||||
|
||||
class MessageFilterErrorCountUpdate
|
||||
: public MessageFilter
|
||||
{
|
||||
void filter(MessageQueue::MessageBufferType* messageBuffer) override
|
||||
{
|
||||
if (messageBuffer->size() < 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
MessageBase* message = messageBuffer->front().get();
|
||||
if (message->getType() == MessageErrorCountUpdate::getStaticType())
|
||||
{
|
||||
for (auto it = messageBuffer->begin() + 1; it != messageBuffer->end(); it++)
|
||||
{
|
||||
if ((*it)->getType() == MessageErrorCountUpdate::getStaticType())
|
||||
{
|
||||
messageBuffer->pop_front();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif // MESSAGE_FILTER_ERROR_COUNT_UPDATE_H
|
||||
@@ -1,41 +0,0 @@
|
||||
#ifndef MESSAGE_FILTER_NEW_ERRORS_H
|
||||
#define MESSAGE_FILTER_NEW_ERRORS_H
|
||||
|
||||
#include "utility/messaging/MessageFilter.h"
|
||||
#include "utility/messaging/type/MessageNewErrors.h"
|
||||
|
||||
class MessageFilterNewErrors
|
||||
: public MessageFilter
|
||||
{
|
||||
void filter(MessageQueue::MessageBufferType* messageBuffer) override
|
||||
{
|
||||
if (messageBuffer->size() < 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
MessageBase* message = messageBuffer->front().get();
|
||||
if (message->getType() == MessageNewErrors::getStaticType())
|
||||
{
|
||||
for (auto it = messageBuffer->begin() + 1; it != messageBuffer->end(); it++)
|
||||
{
|
||||
if ((*it)->getType() == MessageNewErrors::getStaticType())
|
||||
{
|
||||
MessageNewErrors* frontErrorsMessage = dynamic_cast<MessageNewErrors*>(message);
|
||||
MessageNewErrors* backErrorsMessage = dynamic_cast<MessageNewErrors*>(it->get());
|
||||
|
||||
backErrorsMessage->errors.insert(
|
||||
backErrorsMessage->errors.begin(),
|
||||
frontErrorsMessage->errors.begin(),
|
||||
frontErrorsMessage->errors.end()
|
||||
);
|
||||
|
||||
messageBuffer->pop_front();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif // MESSAGE_FILTER_NEW_ERRORS_H
|
||||
@@ -1,21 +0,0 @@
|
||||
#ifndef MESSAGE_CLEAR_ERROR_COUNT_H
|
||||
#define MESSAGE_CLEAR_ERROR_COUNT_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageClearErrorCount
|
||||
: public Message<MessageClearErrorCount>
|
||||
{
|
||||
public:
|
||||
MessageClearErrorCount()
|
||||
{
|
||||
setSendAsTask(false);
|
||||
}
|
||||
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageClearErrorCount";
|
||||
}
|
||||
};
|
||||
|
||||
#endif // MESSAGE_CLEAR_ERROR_COUNT_H
|
||||
@@ -1,26 +0,0 @@
|
||||
#ifndef MESSAGE_ERROR_FILTER_CHANGED_H
|
||||
#define MESSAGE_ERROR_FILTER_CHANGED_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
#include "data/ErrorFilter.h"
|
||||
|
||||
class MessageErrorFilterChanged
|
||||
: public Message<MessageErrorFilterChanged>
|
||||
{
|
||||
public:
|
||||
MessageErrorFilterChanged(const ErrorFilter& filter, bool showErrors)
|
||||
: errorFilter(filter)
|
||||
, showErrors(showErrors)
|
||||
{
|
||||
}
|
||||
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageErrorFilterChanged";
|
||||
}
|
||||
|
||||
const ErrorFilter errorFilter;
|
||||
const bool showErrors;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ERROR_FILTER_CHANGED_H
|
||||
@@ -1,23 +0,0 @@
|
||||
#ifndef MESSAGE_SHOW_ERROR_HELP_MESSAGE_H
|
||||
#define MESSAGE_SHOW_ERROR_HELP_MESSAGE_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageShowErrorHelpMessage:
|
||||
public Message<MessageShowErrorHelpMessage>
|
||||
{
|
||||
public:
|
||||
MessageShowErrorHelpMessage(bool force = false)
|
||||
: force(force)
|
||||
{
|
||||
}
|
||||
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageShowErrorHelpMessage";
|
||||
}
|
||||
|
||||
const bool force;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_SHOW_ERROR_HELP_MESSAGE_H
|
||||
@@ -1,42 +0,0 @@
|
||||
#ifndef MESSAGE_SHOW_ERRORS_H
|
||||
#define MESSAGE_SHOW_ERRORS_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
#include "data/ErrorCountInfo.h"
|
||||
|
||||
class MessageShowErrors
|
||||
: public Message<MessageShowErrors>
|
||||
{
|
||||
public:
|
||||
MessageShowErrors(ErrorCountInfo errorCount)
|
||||
: errorCount(errorCount)
|
||||
, errorId(0)
|
||||
{
|
||||
}
|
||||
|
||||
MessageShowErrors(const std::vector<Id>& errorIds)
|
||||
: errorIds(errorIds)
|
||||
, errorId(0)
|
||||
, showsOnlyErrorIds(true)
|
||||
{
|
||||
}
|
||||
|
||||
MessageShowErrors(Id errorId)
|
||||
: errorId(errorId)
|
||||
{
|
||||
}
|
||||
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageShowErrors";
|
||||
}
|
||||
|
||||
const ErrorCountInfo errorCount;
|
||||
const std::vector<Id> errorIds;
|
||||
const Id errorId;
|
||||
|
||||
bool showsOnlyErrorIds = false;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_SHOW_ERRORS_H
|
||||
@@ -1,24 +0,0 @@
|
||||
#ifndef MESSAGE_SHOW_ERRORS_FOR_FILE_H
|
||||
#define MESSAGE_SHOW_ERRORS_FOR_FILE_H
|
||||
|
||||
#include "utility/file/FilePath.h"
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageShowErrorsForFile
|
||||
: public Message<MessageShowErrorsForFile>
|
||||
{
|
||||
public:
|
||||
MessageShowErrorsForFile(const FilePath& filePath)
|
||||
: filePath(filePath)
|
||||
{
|
||||
}
|
||||
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageShowErrorsForFile";
|
||||
}
|
||||
|
||||
const FilePath filePath;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_SHOW_ERRORS_FOR_FILE_H
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef MESSAGE_ACTIVATE_ERRORS_H
|
||||
#define MESSAGE_ACTIVATE_ERRORS_H
|
||||
|
||||
#include "data/ErrorFilter.h"
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageActivateErrors
|
||||
: public Message<MessageActivateErrors>
|
||||
{
|
||||
public:
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageActivateErrors";
|
||||
}
|
||||
|
||||
MessageActivateErrors(const ErrorFilter& filter, const FilePath& file = FilePath())
|
||||
: filter(filter)
|
||||
, file(file)
|
||||
{
|
||||
}
|
||||
|
||||
const ErrorFilter filter;
|
||||
const FilePath file;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ACTIVATE_ERRORS_H
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef MESSAGE_ERROR_COUNT_CLEAR_H
|
||||
#define MESSAGE_ERROR_COUNT_CLEAR_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageErrorCountClear
|
||||
: public Message<MessageErrorCountClear>
|
||||
{
|
||||
public:
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageErrorCountClear";
|
||||
}
|
||||
|
||||
MessageErrorCountClear()
|
||||
{
|
||||
setSendAsTask(false);
|
||||
}
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ERROR_COUNT_CLEAR_H
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef MESSAGE_ERROR_COUNT_UPDATE_H
|
||||
#define MESSAGE_ERROR_COUNT_UPDATE_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
#include "data/ErrorCountInfo.h"
|
||||
|
||||
class MessageErrorCountUpdate
|
||||
: public Message<MessageErrorCountUpdate>
|
||||
{
|
||||
public:
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageErrorCountUpdate";
|
||||
}
|
||||
|
||||
MessageErrorCountUpdate(const ErrorCountInfo& errorCount)
|
||||
: errorCount(errorCount)
|
||||
{
|
||||
setSendAsTask(false);
|
||||
}
|
||||
|
||||
const ErrorCountInfo errorCount;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ERROR_COUNT_UPDATE_H
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef MESSAGE_ERRORS_ALL_H
|
||||
#define MESSAGE_ERRORS_ALL_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageErrorsAll:
|
||||
public Message<MessageErrorsAll>
|
||||
{
|
||||
public:
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageErrorsAll";
|
||||
}
|
||||
|
||||
MessageErrorsAll()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ERRORS_ALL_H
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef MESSAGE_ERRORS_FOR_FILE_H
|
||||
#define MESSAGE_ERRORS_FOR_FILE_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageErrorsForFile:
|
||||
public Message<MessageErrorsForFile>
|
||||
{
|
||||
public:
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageErrorsForFile";
|
||||
}
|
||||
|
||||
MessageErrorsForFile(const FilePath& file)
|
||||
: file(file)
|
||||
{
|
||||
}
|
||||
|
||||
const FilePath& file;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ERRORS_FOR_FILE_H
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef MESSAGE_ERRORS_HELP_MESSAGE_H
|
||||
#define MESSAGE_ERRORS_HELP_MESSAGE_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageErrorsHelpMessage:
|
||||
public Message<MessageErrorsHelpMessage>
|
||||
{
|
||||
public:
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageErrorsHelpMessage";
|
||||
}
|
||||
|
||||
MessageErrorsHelpMessage(bool force = false)
|
||||
: force(force)
|
||||
{
|
||||
}
|
||||
|
||||
const bool force;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ERRORS_HELP_MESSAGE_H
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef MESSAGE_SHOW_ERROR_H
|
||||
#define MESSAGE_SHOW_ERROR_H
|
||||
|
||||
#include "utility/messaging/Message.h"
|
||||
|
||||
class MessageShowError
|
||||
: public Message<MessageShowError>
|
||||
{
|
||||
public:
|
||||
static const std::string getStaticType()
|
||||
{
|
||||
return "MessageShowError";
|
||||
}
|
||||
|
||||
MessageShowError(Id errorId)
|
||||
: errorId(errorId)
|
||||
{
|
||||
}
|
||||
|
||||
const Id errorId;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_SHOW_ERROR_H
|
||||
@@ -17,11 +17,11 @@
|
||||
#include "qt/utility/QtContextMenu.h"
|
||||
#include "settings/ApplicationSettings.h"
|
||||
#include "settings/ColorScheme.h"
|
||||
#include "utility/messaging/type/error/MessageShowError.h"
|
||||
#include "utility/messaging/type/MessageActivateLocalSymbols.h"
|
||||
#include "utility/messaging/type/MessageFocusIn.h"
|
||||
#include "utility/messaging/type/MessageFocusOut.h"
|
||||
#include "utility/messaging/type/MessageMoveIDECursor.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/TextCodec.h"
|
||||
#include "utility/utility.h"
|
||||
#include "utility/utilityApp.h"
|
||||
@@ -715,7 +715,7 @@ void QtCodeArea::activateErrors(const std::vector<const Annotation*>& annotation
|
||||
|
||||
if (errorIds.size() == 1)
|
||||
{
|
||||
MessageShowErrors(errorIds[0]).dispatch();
|
||||
MessageShowError(errorIds[0]).dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <QVariant>
|
||||
|
||||
#include "utility/ResourcePaths.h"
|
||||
#include "utility/messaging/type/MessageShowErrorsForFile.h"
|
||||
#include "utility/messaging/type/error/MessageErrorsForFile.h"
|
||||
|
||||
QtCodeFileTitleBar::QtCodeFileTitleBar(QWidget* parent, bool isHovering, bool isSingle)
|
||||
: QtHoverButton(parent)
|
||||
@@ -44,7 +44,7 @@ QtCodeFileTitleBar::QtCodeFileTitleBar(QWidget* parent, bool isHovering, bool is
|
||||
|
||||
m_showErrorsButton = new QPushButton("show errors");
|
||||
m_showErrorsButton->setObjectName("screen_button");
|
||||
m_showErrorsButton->setToolTip("Show all errors related to this file");
|
||||
m_showErrorsButton->setToolTip("Show all errors causing this file to be incomplete");
|
||||
m_showErrorsButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
m_showErrorsButton->hide();
|
||||
titleLayout->addWidget(m_showErrorsButton);
|
||||
@@ -52,7 +52,7 @@ QtCodeFileTitleBar::QtCodeFileTitleBar(QWidget* parent, bool isHovering, bool is
|
||||
connect(m_showErrorsButton, &QPushButton::clicked,
|
||||
[this]()
|
||||
{
|
||||
MessageShowErrorsForFile(m_titleButton->getFilePath()).dispatch();
|
||||
MessageErrorsForFile(m_titleButton->getFilePath()).dispatch();
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include "utility/logging/logging.h"
|
||||
#include "utility/messaging/type/error/MessageShowError.h"
|
||||
#include "utility/messaging/type/MessageScrollCode.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/ResourcePaths.h"
|
||||
|
||||
#include "data/location/SourceLocation.h"
|
||||
@@ -918,7 +918,7 @@ void QtCodeNavigator::handleMessage(MessageShowReference* message)
|
||||
|
||||
if (ref.locationType == LOCATION_ERROR)
|
||||
{
|
||||
MessageShowErrors(ref.tokenId).dispatch();
|
||||
MessageShowError(ref.tokenId).dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -424,25 +424,8 @@ void QtDialogView::handleMessage(MessageInterruptTasks* message)
|
||||
);
|
||||
}
|
||||
|
||||
void QtDialogView::handleMessage(MessageNewErrors* message)
|
||||
void QtDialogView::handleMessage(MessageErrorCountUpdate* message)
|
||||
{
|
||||
ErrorCountInfo errorInfo = m_storageAccess->getErrorCount();
|
||||
|
||||
m_onQtThread3(
|
||||
[=]()
|
||||
{
|
||||
updateErrorCount(errorInfo.total, errorInfo.fatal);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void QtDialogView::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
if (message->isReplayed())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ErrorCountInfo errorInfo = message->errorCount;
|
||||
|
||||
m_onQtThread3(
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
#include "qt/window/QtWindowStack.h"
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/error/MessageErrorCountUpdate.h"
|
||||
#include "utility/messaging/type/MessageInterruptTasks.h"
|
||||
#include "utility/messaging/type/MessageNewErrors.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageWindowClosed.h"
|
||||
|
||||
class QtMainWindow;
|
||||
@@ -18,9 +17,8 @@ class QtWindow;
|
||||
class QtDialogView
|
||||
: public QObject
|
||||
, public DialogView
|
||||
, public MessageListener<MessageErrorCountUpdate>
|
||||
, public MessageListener<MessageInterruptTasks>
|
||||
, public MessageListener<MessageNewErrors>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageWindowClosed>
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -57,9 +55,8 @@ private slots:
|
||||
void setUIBlocked(bool blocked);
|
||||
|
||||
private:
|
||||
void handleMessage(MessageErrorCountUpdate* message) override;
|
||||
void handleMessage(MessageInterruptTasks* message) override;
|
||||
void handleMessage(MessageNewErrors* message) override;
|
||||
void handleMessage(MessageShowErrors* message) override;
|
||||
void handleMessage(MessageWindowClosed* message) override;
|
||||
|
||||
void updateErrorCount(size_t errorCount, size_t fatalCount);
|
||||
|
||||
@@ -19,9 +19,7 @@
|
||||
#include "qt/utility/utilityQt.h"
|
||||
#include "qt/view/QtViewWidgetWrapper.h"
|
||||
#include "settings/ColorScheme.h"
|
||||
#include "utility/messaging/type/MessageErrorFilterChanged.h"
|
||||
#include "utility/messaging/type/MessageProjectEdit.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/ResourcePaths.h"
|
||||
|
||||
QIcon QtErrorView::s_errorIcon;
|
||||
@@ -56,6 +54,7 @@ QWidget* SelectableDelegate::createEditor(
|
||||
|
||||
QtErrorView::QtErrorView(ViewLayout* viewLayout)
|
||||
: ErrorView(viewLayout)
|
||||
, m_controllerProxy(this)
|
||||
, m_ignoreRowSelection(false)
|
||||
{
|
||||
s_errorIcon = QIcon(QString::fromStdWString(ResourcePaths::getGuiPath().concatenate(L"indexing_dialog/error.png").wstr()));
|
||||
@@ -107,7 +106,9 @@ void QtErrorView::initView()
|
||||
return;
|
||||
}
|
||||
|
||||
MessageShowErrors(m_model->item(index.row(), COLUMN::ID)->text().toUInt()).dispatch();
|
||||
Id errorId = m_model->item(index.row(), COLUMN::ID)->text().toUInt();
|
||||
|
||||
m_controllerProxy.executeAsTaskWithArgs(&ErrorController::showError, errorId);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -153,11 +154,9 @@ void QtErrorView::initView()
|
||||
m_allLabel = new QLabel("");
|
||||
checkboxes->addWidget(m_allLabel);
|
||||
m_allLabel->hide();
|
||||
}
|
||||
|
||||
checkboxes->addSpacing(5);
|
||||
checkboxes->addSpacing(5);
|
||||
|
||||
{
|
||||
m_allButton = new QPushButton("");
|
||||
m_allButton->setObjectName("screen_button");
|
||||
connect(m_allButton, &QPushButton::clicked,
|
||||
@@ -169,6 +168,9 @@ void QtErrorView::initView()
|
||||
);
|
||||
checkboxes->addWidget(m_allButton);
|
||||
m_allButton->hide();
|
||||
|
||||
m_errorLabel = new QLabel("");
|
||||
checkboxes->addWidget(m_errorLabel);
|
||||
}
|
||||
|
||||
checkboxes->addSpacing(10);
|
||||
@@ -215,10 +217,14 @@ void QtErrorView::clear()
|
||||
}
|
||||
|
||||
m_table->updateRows();
|
||||
|
||||
m_allLabel->setVisible(false);
|
||||
m_allButton->setVisible(false);
|
||||
m_errorLabel->setVisible(false);
|
||||
});
|
||||
}
|
||||
|
||||
void QtErrorView::addErrors(const std::vector<ErrorInfo>& errors, bool scrollTo)
|
||||
void QtErrorView::addErrors(const std::vector<ErrorInfo>& errors, const ErrorCountInfo& errorCount, bool scrollTo)
|
||||
{
|
||||
m_onQtThread([=]()
|
||||
{
|
||||
@@ -236,6 +242,20 @@ void QtErrorView::addErrors(const std::vector<ErrorInfo>& errors, bool scrollTo)
|
||||
{
|
||||
m_table->showFirstRow();
|
||||
}
|
||||
|
||||
bool limited = m_errorFilter.limit > 0 && errorCount.total > m_errorFilter.limit;
|
||||
|
||||
m_allLabel->setVisible(limited);
|
||||
m_allLabel->setText("<b>Only displaying first " + QString::number(m_errorFilter.limit) + " errors</b>");
|
||||
|
||||
m_allButton->setVisible(limited);
|
||||
m_allButton->setText("Show all " + QString::number(errorCount.total));
|
||||
|
||||
m_errorLabel->setVisible(!limited);
|
||||
m_errorLabel->setText("<b>displaying " +
|
||||
QString::number(errorCount.total) + " error" + (errorCount.total != 1 ? "s" : "") +
|
||||
(errorCount.fatal > 0 ? " (" + QString::number(errorCount.fatal) + " fatal)" : "") + "</b>"
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -254,26 +274,6 @@ void QtErrorView::setErrorId(Id errorId)
|
||||
});
|
||||
}
|
||||
|
||||
void QtErrorView::setErrorCount(ErrorCountInfo info)
|
||||
{
|
||||
m_onQtThread([=]()
|
||||
{
|
||||
m_allLabel->setVisible(m_errorFilter.limit > 0 && info.total > m_errorFilter.limit);
|
||||
m_allButton->setVisible(m_errorFilter.limit > 0 && info.total > m_errorFilter.limit);
|
||||
|
||||
m_allLabel->setText("<b>Only showing first " + QString::number(m_errorFilter.limit) + " errors</b>");
|
||||
m_allButton->setText("Show all " + QString::number(info.total));
|
||||
});
|
||||
}
|
||||
|
||||
void QtErrorView::resetErrorLimit()
|
||||
{
|
||||
ErrorFilter filter;
|
||||
|
||||
m_errorFilter.limit = filter.limit;
|
||||
errorFilterChanged(0, false);
|
||||
}
|
||||
|
||||
void QtErrorView::showErrorHelpMessage()
|
||||
{
|
||||
m_onQtThread([=]()
|
||||
@@ -282,12 +282,40 @@ void QtErrorView::showErrorHelpMessage()
|
||||
});
|
||||
}
|
||||
|
||||
void QtErrorView::errorFilterChanged(int i)
|
||||
ErrorFilter QtErrorView::getErrorFilter() const
|
||||
{
|
||||
errorFilterChanged(i, true);
|
||||
return m_errorFilter;
|
||||
}
|
||||
|
||||
void QtErrorView::errorFilterChanged(int i, bool showErrors)
|
||||
void QtErrorView::setErrorFilter(const ErrorFilter& filter)
|
||||
{
|
||||
if (m_errorFilter == filter)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_errorFilter = filter;
|
||||
|
||||
m_onQtThread([=]()
|
||||
{
|
||||
m_showErrors->blockSignals(true);
|
||||
m_showFatals->blockSignals(true);
|
||||
m_showNonIndexedErrors->blockSignals(true);
|
||||
m_showNonIndexedFatals->blockSignals(true);
|
||||
|
||||
m_showErrors->setChecked(m_errorFilter.error);
|
||||
m_showFatals->setChecked(m_errorFilter.fatal);
|
||||
m_showNonIndexedErrors->setChecked(m_errorFilter.unindexedError);
|
||||
m_showNonIndexedFatals->setChecked(m_errorFilter.unindexedFatal);
|
||||
|
||||
m_showErrors->blockSignals(false);
|
||||
m_showFatals->blockSignals(false);
|
||||
m_showNonIndexedErrors->blockSignals(false);
|
||||
m_showNonIndexedFatals->blockSignals(false);
|
||||
});
|
||||
}
|
||||
|
||||
void QtErrorView::errorFilterChanged(int i)
|
||||
{
|
||||
m_table->selectionModel()->clearSelection();
|
||||
|
||||
@@ -296,7 +324,7 @@ void QtErrorView::errorFilterChanged(int i, bool showErrors)
|
||||
m_errorFilter.unindexedError = m_showNonIndexedErrors->isChecked();
|
||||
m_errorFilter.unindexedFatal = m_showNonIndexedFatals->isChecked();
|
||||
|
||||
MessageErrorFilterChanged(m_errorFilter, showErrors).dispatch();
|
||||
m_controllerProxy.executeAsTaskWithArgs(&ErrorController::errorFilterChanged, m_errorFilter);
|
||||
}
|
||||
|
||||
void QtErrorView::setStyleSheet() const
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "component/controller/ErrorController.h"
|
||||
#include "component/controller/helper/ControllerProxy.h"
|
||||
#include "component/view/ErrorView.h"
|
||||
#include "data/ErrorFilter.h"
|
||||
#include "qt/utility/QtThreadedFunctor.h"
|
||||
@@ -33,17 +35,17 @@ public:
|
||||
|
||||
// ErrorView implementation
|
||||
virtual void clear();
|
||||
virtual void addErrors(const std::vector<ErrorInfo>& errors, bool scrollTo);
|
||||
virtual void setErrorId(Id errorId);
|
||||
|
||||
virtual void setErrorCount(ErrorCountInfo info);
|
||||
virtual void resetErrorLimit();
|
||||
virtual void addErrors(const std::vector<ErrorInfo>& errors, const ErrorCountInfo& errorCount, bool scrollTo);
|
||||
virtual void setErrorId(Id errorId);
|
||||
|
||||
virtual void showErrorHelpMessage();
|
||||
|
||||
virtual ErrorFilter getErrorFilter() const;
|
||||
virtual void setErrorFilter(const ErrorFilter& filter);
|
||||
|
||||
private slots:
|
||||
void errorFilterChanged(int i = 0);
|
||||
void errorFilterChanged(int i, bool showErrors);
|
||||
|
||||
private:
|
||||
enum COLUMN {
|
||||
@@ -65,10 +67,12 @@ private:
|
||||
|
||||
static QIcon s_errorIcon;
|
||||
|
||||
ControllerProxy<ErrorController> m_controllerProxy;
|
||||
QtThreadedLambdaFunctor m_onQtThread;
|
||||
|
||||
ErrorFilter m_errorFilter;
|
||||
|
||||
QLabel* m_errorLabel;
|
||||
QLabel* m_allLabel;
|
||||
QPushButton* m_allButton;
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
#include "qt/utility/utilityQt.h"
|
||||
#include "qt/element/QtHelpButton.h"
|
||||
#include "qt/element/QtProgressBar.h"
|
||||
#include "utility/messaging/type/error/MessageErrorsHelpMessage.h"
|
||||
#include "utility/messaging/type/MessageInterruptTasks.h"
|
||||
#include "utility/messaging/type/MessageShowErrorHelpMessage.h"
|
||||
#include "utility/ResourcePaths.h"
|
||||
#include "utility/utility.h"
|
||||
|
||||
@@ -359,7 +359,7 @@ void QtIndexingDialog::handleNext()
|
||||
|
||||
if (m_type == DIALOG_REPORT)
|
||||
{
|
||||
MessageShowErrorHelpMessage().dispatch();
|
||||
MessageErrorsHelpMessage().dispatch();
|
||||
}
|
||||
|
||||
QtWindow::handleNext();
|
||||
@@ -486,7 +486,7 @@ void QtIndexingDialog::addErrorWidget(QBoxLayout* layout)
|
||||
connect(helpButton, &QtHelpButton::clicked,
|
||||
[]()
|
||||
{
|
||||
MessageShowErrorHelpMessage(true).dispatch();
|
||||
MessageErrorsHelpMessage(true).dispatch();
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "settings/ApplicationSettings.h"
|
||||
#include "utility/file/FileSystem.h"
|
||||
#include "utility/logging/logging.h"
|
||||
#include "utility/messaging/type/error/MessageErrorsHelpMessage.h"
|
||||
#include "utility/messaging/type/MessageActivateBookmark.h"
|
||||
#include "utility/messaging/type/MessageCodeReference.h"
|
||||
#include "utility/messaging/type/MessageDisplayBookmarkCreator.h"
|
||||
@@ -40,7 +41,6 @@
|
||||
#include "utility/messaging/type/MessageRefresh.h"
|
||||
#include "utility/messaging/type/MessageResetZoom.h"
|
||||
#include "utility/messaging/type/MessageSearch.h"
|
||||
#include "utility/messaging/type/MessageShowErrorHelpMessage.h"
|
||||
#include "utility/messaging/type/MessageUndo.h"
|
||||
#include "utility/messaging/type/MessageWindowClosed.h"
|
||||
#include "utility/messaging/type/MessageZoom.h"
|
||||
@@ -455,7 +455,7 @@ void QtMainWindow::showKeyboardShortcuts()
|
||||
|
||||
void QtMainWindow::showErrorHelpMessage()
|
||||
{
|
||||
MessageShowErrorHelpMessage(true).dispatch();
|
||||
MessageErrorsHelpMessage(true).dispatch();
|
||||
}
|
||||
|
||||
void QtMainWindow::showBugtracker()
|
||||
|
||||
Reference in New Issue
Block a user