QmlDesigner: keep warnings for later showing

Change-Id: I5f9c51480a1d0276a356737ab1f91a8f76443c5a
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
This commit is contained in:
Tim Jenssen
2016-04-26 15:50:34 +02:00
parent bc08c10764
commit 61bafe3407
6 changed files with 36 additions and 13 deletions

View File

@@ -163,15 +163,22 @@ Model* DesignDocument::createInFileComponentModel()
return model; return model;
} }
/*! QList<RewriterError> DesignDocument::qmlParseWarnings() const
Returns any errors that happened when parsing the latest qml file. {
*/ return m_rewriterView->warnings();
QList<RewriterError> DesignDocument::qmlSyntaxErrors() const }
bool DesignDocument::hasQmlParseWarnings() const
{
return currentModel()->rewriterView() && !currentModel()->rewriterView()->warnings().isEmpty();
}
QList<RewriterError> DesignDocument::qmlParseErrors() const
{ {
return m_rewriterView->errors(); return m_rewriterView->errors();
} }
bool DesignDocument::hasQmlSyntaxErrors() const bool DesignDocument::hasQmlParseErrors() const
{ {
return currentModel()->rewriterView() && !currentModel()->rewriterView()->errors().isEmpty(); return currentModel()->rewriterView() && !currentModel()->rewriterView()->errors().isEmpty();
} }

View File

@@ -77,8 +77,10 @@ public:
Model *documentModel() const; Model *documentModel() const;
QString contextHelpId() const; QString contextHelpId() const;
QList<RewriterError> qmlSyntaxErrors() const; QList<RewriterError> qmlParseWarnings() const;
bool hasQmlSyntaxErrors() const; bool hasQmlParseWarnings() const;
QList<RewriterError> qmlParseErrors() const;
bool hasQmlParseErrors() const;
RewriterView *rewriterView() const; RewriterView *rewriterView() const;

View File

@@ -143,9 +143,11 @@ public:
Internal::ModelNodePositionStorage *positionStorage() const Internal::ModelNodePositionStorage *positionStorage() const
{ return m_positionStorage; } { return m_positionStorage; }
QList<RewriterError> warnings() const;
QList<RewriterError> errors() const; QList<RewriterError> errors() const;
void clearErrors(); void clearErrorAndWarnings();
void setErrors(const QList<RewriterError> &errors); void setErrors(const QList<RewriterError> &errors);
void setWarnings(const QList<RewriterError> &warnings);
void addError(const RewriterError &error); void addError(const RewriterError &error);
void enterErrorState(const QString &errorMessage); void enterErrorState(const QString &errorMessage);
@@ -206,6 +208,7 @@ private: //variables
QScopedPointer<Internal::TextToModelMerger> m_textToModelMerger; QScopedPointer<Internal::TextToModelMerger> m_textToModelMerger;
TextModifier *m_textModifier; TextModifier *m_textModifier;
QList<RewriterError> m_errors; QList<RewriterError> m_errors;
QList<RewriterError> m_warnings;
int transactionLevel; int transactionLevel;
RewriterTransaction m_removeDefaultPropertyTransaction; RewriterTransaction m_removeDefaultPropertyTransaction;
QString m_rewritingErrorMessage; QString m_rewritingErrorMessage;

View File

@@ -440,7 +440,7 @@ void RewriterView::applyChanges()
if (modelToTextMerger()->hasNoPendingChanges()) if (modelToTextMerger()->hasNoPendingChanges())
return; // quick exit: nothing to be done. return; // quick exit: nothing to be done.
clearErrors(); clearErrorAndWarnings();
if (inErrorState()) { if (inErrorState()) {
const QString content = textModifierContent(); const QString content = textModifierContent();
@@ -474,17 +474,28 @@ void RewriterView::applyChanges()
} }
} }
QList<RewriterError> RewriterView::warnings() const
{
return m_warnings;
}
QList<RewriterError> RewriterView::errors() const QList<RewriterError> RewriterView::errors() const
{ {
return m_errors; return m_errors;
} }
void RewriterView::clearErrors() void RewriterView::clearErrorAndWarnings()
{ {
m_errors.clear(); m_errors.clear();
m_warnings.clear();
emit errorsChanged(m_errors); emit errorsChanged(m_errors);
} }
void RewriterView::setWarnings(const QList<RewriterError> &warnings)
{
m_warnings = warnings;
}
void RewriterView::setErrors(const QList<RewriterError> &errors) void RewriterView::setErrors(const QList<RewriterError> &errors)
{ {
m_errors = errors; m_errors = errors;

View File

@@ -943,7 +943,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH
ModelNode modelRootNode = m_rewriterView->rootModelNode(); ModelNode modelRootNode = m_rewriterView->rootModelNode();
syncNode(modelRootNode, astRootNode, &ctxt, differenceHandler); syncNode(modelRootNode, astRootNode, &ctxt, differenceHandler);
m_rewriterView->positionStorage()->cleanupInvalidOffsets(); m_rewriterView->positionStorage()->cleanupInvalidOffsets();
m_rewriterView->clearErrors(); m_rewriterView->clearErrorAndWarnings();
setActive(false); setActive(false);
return true; return true;

View File

@@ -233,7 +233,7 @@ void QmlDesignerPlugin::hideDesigner()
{ {
if (currentDesignDocument() if (currentDesignDocument()
&& currentModel() && currentModel()
&& !currentDesignDocument()->hasQmlSyntaxErrors()) && !currentDesignDocument()->hasQmlParseErrors())
jumpTextCursorToSelectedModelNode(); jumpTextCursorToSelectedModelNode();
@@ -316,7 +316,7 @@ void QmlDesignerPlugin::activateAutoSynchronization()
viewManager().attachComponentView(); viewManager().attachComponentView();
viewManager().attachViewsExceptRewriterAndComponetView(); viewManager().attachViewsExceptRewriterAndComponetView();
QList<RewriterError> errors = currentDesignDocument()->qmlSyntaxErrors(); QList<RewriterError> errors = currentDesignDocument()->qmlParseErrors();
if (errors.isEmpty()) { if (errors.isEmpty()) {
selectModelNodeUnderTextCursor(); selectModelNodeUnderTextCursor();
data->mainWidget->enableWidgets(); data->mainWidget->enableWidgets();