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:
Eberhard Graether
2018-06-29 13:31:05 +02:00
parent c91207cfe9
commit 172f1b7934
53 changed files with 653 additions and 556 deletions
+2 -2
View File
@@ -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);
+9 -7
View File
@@ -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;
+56 -49
View File
@@ -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;
+123 -41
View File
@@ -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();
}
+39 -12
View File
@@ -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 -4
View File
@@ -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
+17
View File
@@ -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;
};
+10 -1
View File
@@ -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;
-5
View File
@@ -3,8 +3,3 @@
StorageAccess::~StorageAccess()
{
}
void StorageAccess::setErrorFilter(const ErrorFilter& filter)
{
m_errorFilter = filter;
}
+3 -8
View File
@@ -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
+5 -28
View File
@@ -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();
}
}
+4 -12
View File
@@ -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 -62
View File
@@ -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());
+4 -5
View File
@@ -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;
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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();
}
);
+2 -2
View File
@@ -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();
}
}
+1 -18
View File
@@ -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(
+3 -6
View File
@@ -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);
+59 -31
View File
@@ -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
+9 -5
View File
@@ -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;
+3 -3
View File
@@ -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();
}
);
+2 -2
View File
@@ -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()