diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2019-05-31 16:49:04 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2019-06-06 12:56:34 +0000 |
commit | cf1be672647f9696dbccf7decb4ca9db06c2792a (patch) | |
tree | 47d52ad2d932ecf48d3253488752f42b92f424de /src/plugins/qmldesigner/components/componentcore | |
parent | e5dde74b9fcdb3c57a03bc24ac135dfa32e10892 (diff) |
QmlDesigner: Use lambdas for transactions
Using lambdas we do not have to repeat the try catch block all
over again.
This also avoids sublte mistakes when catching the exception.
Change-Id: I514fa9b64f43ef08fdc27bf702ec2b173ab1dfd6
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/components/componentcore')
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp | 11 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp | 128 |
2 files changed, 47 insertions, 92 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp b/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp index 5ec3ea557b3..ba520a1ca33 100644 --- a/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp +++ b/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp @@ -185,17 +185,16 @@ void LayoutInGridLayout::doIt() if (qmlItemNode.hasInstanceParentItem()) { ModelNode layoutNode; - { - RewriterTransaction transaction(m_selectionContext.view(), QByteArrayLiteral("LayoutInGridLayout1")); + + m_selectionContext.view()->executeInTransaction("LayoutInGridLayout1",[this, &layoutNode, layoutType](){ QTC_ASSERT(m_selectionContext.view()->model()->hasNodeMetaInfo(layoutType), return); NodeMetaInfo metaInfo = m_selectionContext.view()->model()->metaInfo(layoutType); layoutNode = m_selectionContext.view()->createModelNode(layoutType, metaInfo.majorVersion(), metaInfo.minorVersion()); reparentTo(layoutNode, m_parentNode); - } + }); - { - RewriterTransaction transaction(m_selectionContext.view(), QByteArrayLiteral("LayoutInGridLayout2")); + m_selectionContext.view()->executeInTransaction("LayoutInGridLayout2", [this, layoutNode](){ fillEmptyCells(); @@ -208,7 +207,7 @@ void LayoutInGridLayout::doIt() reparentToNodeAndRemovePositionForModelNodes(layoutNode, sortedSelectedNodes); setSizeAsPreferredSize(sortedSelectedNodes); setSpanning(layoutNode); - } + }); } } } diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index 691c1b6ca51..3c31998576b 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -240,9 +240,7 @@ void changeOrder(const SelectionContext &selectionState, OderAction orderAction) if (!modelNode.parentProperty().isNodeListProperty()) return; - try { - RewriterTransaction transaction(selectionState.view(), QByteArrayLiteral("DesignerActionManager|raise")); - + selectionState.view()->executeInTransaction("DesignerActionManager|raise",[orderAction, selectionState, modelNode](){ ModelNode modelNode = selectionState.currentSingleSelectedNode(); NodeListProperty parentProperty = modelNode.parentProperty().toNodeListProperty(); const int index = parentProperty.indexOf(modelNode); @@ -255,11 +253,7 @@ void changeOrder(const SelectionContext &selectionState, OderAction orderAction) if (index > 0) parentProperty.slide(index, index - 1); } - - transaction.commit(); - } catch (const RewritingException &e) { //better save then sorry - e.showException(); - } + }); } void raise(const SelectionContext &selectionState) @@ -328,16 +322,13 @@ void resetSize(const SelectionContext &selectionState) if (!selectionState.view()) return; - try { - RewriterTransaction transaction(selectionState.view(), QByteArrayLiteral("DesignerActionManager|resetSize")); + selectionState.view()->executeInTransaction("DesignerActionManager|resetSize",[selectionState](){ foreach (ModelNode node, selectionState.selectedModelNodes()) { QmlItemNode itemNode(node); itemNode.removeProperty("width"); itemNode.removeProperty("height"); } - } catch (const RewritingException &e) { //better save then sorry - e.showException(); - } + }); } void resetPosition(const SelectionContext &selectionState) @@ -345,17 +336,13 @@ void resetPosition(const SelectionContext &selectionState) if (!selectionState.view()) return; - try { - RewriterTransaction transaction(selectionState.view(), QByteArrayLiteral("DesignerActionManager|resetPosition")); + selectionState.view()->executeInTransaction("DesignerActionManager|resetPosition",[selectionState](){ foreach (ModelNode node, selectionState.selectedModelNodes()) { QmlItemNode itemNode(node); itemNode.removeProperty("x"); itemNode.removeProperty("y"); } - transaction.commit(); - } catch (const RewritingException &e) { //better save then sorry - e.showException(); - } + }); } void goIntoComponentOperation(const SelectionContext &selectionState) @@ -372,11 +359,12 @@ void resetZ(const SelectionContext &selectionState) if (!selectionState.view()) return; - RewriterTransaction transaction(selectionState.view(), QByteArrayLiteral("DesignerActionManager|resetZ")); - foreach (ModelNode node, selectionState.selectedModelNodes()) { - QmlItemNode itemNode(node); - itemNode.removeProperty("z"); - } + selectionState.view()->executeInTransaction("DesignerActionManager|resetZ",[selectionState](){ + foreach (ModelNode node, selectionState.selectedModelNodes()) { + QmlItemNode itemNode(node); + itemNode.removeProperty("z"); + } + }); } static inline void backupPropertyAndRemove(const ModelNode &node, const PropertyName &propertyName) @@ -404,9 +392,7 @@ void anchorsFill(const SelectionContext &selectionState) if (!selectionState.view()) return; - try { - RewriterTransaction transaction(selectionState.view(), QByteArrayLiteral("DesignerActionManager|anchorsFill")); - + selectionState.view()->executeInTransaction("DesignerActionManager|anchorsFill",[selectionState](){ ModelNode modelNode = selectionState.currentSingleSelectedNode(); QmlItemNode node = modelNode; @@ -417,11 +403,7 @@ void anchorsFill(const SelectionContext &selectionState) backupPropertyAndRemove(modelNode, "width"); backupPropertyAndRemove(modelNode, "height"); } - - transaction.commit(); - } catch (const RewritingException &e) { //better save then sorry - e.showException(); - } + }); } void anchorsReset(const SelectionContext &selectionState) @@ -429,19 +411,19 @@ void anchorsReset(const SelectionContext &selectionState) if (!selectionState.view()) return; - RewriterTransaction transaction(selectionState.view(), QByteArrayLiteral("DesignerActionManager|anchorsReset")); - - ModelNode modelNode = selectionState.currentSingleSelectedNode(); + selectionState.view()->executeInTransaction("DesignerActionManager|anchorsReset",[selectionState](){ + ModelNode modelNode = selectionState.currentSingleSelectedNode(); - QmlItemNode node = modelNode; - if (node.isValid()) { - node.anchors().removeAnchors(); - node.anchors().removeMargins(); - restoreProperty(node, "x"); - restoreProperty(node, "y"); - restoreProperty(node, "width"); - restoreProperty(node, "height"); - } + QmlItemNode node = modelNode; + if (node.isValid()) { + node.anchors().removeAnchors(); + node.anchors().removeMargins(); + restoreProperty(node, "x"); + restoreProperty(node, "y"); + restoreProperty(node, "width"); + restoreProperty(node, "height"); + } + }); } using LessThan = std::function<bool (const ModelNode &, const ModelNode&)>; @@ -481,7 +463,7 @@ bool compareByGrid(const ModelNode &node1, const ModelNode &node2) static void layoutHelperFunction(const SelectionContext &selectionContext, const TypeName &layoutType, - LessThan lessThan) + const LessThan &lessThan) { if (!selectionContext.view() || !selectionContext.hasSingleSelectedModelNode() @@ -492,10 +474,8 @@ static void layoutHelperFunction(const SelectionContext &selectionContext, const QmlItemNode qmlItemNode = QmlItemNode(selectionContext.firstSelectedModelNode()); if (qmlItemNode.hasInstanceParentItem()) { - ModelNode layoutNode; - { - RewriterTransaction transaction(selectionContext.view(), QByteArrayLiteral("DesignerActionManager|layoutHelperFunction1")); + selectionContext.view()->executeInTransaction("DesignerActionManager|layoutHelperFunction1",[=, &layoutNode](){ QmlItemNode parentNode = qmlItemNode.instanceParentItem(); @@ -504,10 +484,9 @@ static void layoutHelperFunction(const SelectionContext &selectionContext, layoutNode = selectionContext.view()->createModelNode(layoutType, metaInfo.majorVersion(), metaInfo.minorVersion()); reparentTo(layoutNode, parentNode); - } + }); - { - RewriterTransaction transaction(selectionContext.view(), QByteArrayLiteral("DesignerActionManager|layoutHelperFunction2")); + selectionContext.view()->executeInTransaction("DesignerActionManager|layoutHelperFunction2",[=](){ QList<ModelNode> sortedSelectedNodes = selectionContext.selectedModelNodes(); Utils::sort(sortedSelectedNodes, lessThan); @@ -516,7 +495,7 @@ static void layoutHelperFunction(const SelectionContext &selectionContext, LayoutInGridLayout::reparentToNodeAndRemovePositionForModelNodes(layoutNode, sortedSelectedNodes); if (layoutType.contains("Layout")) LayoutInGridLayout::setSizeAsPreferredSize(sortedSelectedNodes); - } + }); } } } @@ -662,16 +641,9 @@ void addSignalHandlerOrGotoImplementation(const SelectionContext &selectionState if (!qmlObjectNode.isRootModelNode()) { isModelNodeRoot = false; - try { - RewriterTransaction transaction = - qmlObjectNode.view()->beginRewriterTransaction(QByteArrayLiteral("NavigatorTreeModel:exportItem")); - - QmlObjectNode qmlObjectNode(modelNode); + qmlObjectNode.view()->executeInTransaction("NavigatorTreeModel:exportItem", [&qmlObjectNode](){ qmlObjectNode.ensureAliasExport(); - transaction.commit(); - } catch (RewritingException &exception) { //better safe than sorry! There always might be cases where we fail - exception.showException(); - } + }); } QString itemId = modelNode.id(); @@ -708,14 +680,10 @@ void addSignalHandlerOrGotoImplementation(const SelectionContext &selectionState if (dialog->signal().isEmpty()) return; - try { - RewriterTransaction transaction = - qmlObjectNode.view()->beginRewriterTransaction(QByteArrayLiteral("NavigatorTreeModel:exportItem")); + qmlObjectNode.view()->executeInTransaction("NavigatorTreeModel:exportItem", [=](){ addSignal(typeName, itemId, dialog->signal(), isModelNodeRoot); - } catch (RewritingException &exception) { //better safe than sorry! There always might be cases where we fail - exception.showException(); - } + }); addSignal(typeName, itemId, dialog->signal(), isModelNodeRoot); @@ -751,9 +719,7 @@ void removeLayout(const SelectionContext &selectionContext) if (!parent.isValid()) return; - { - RewriterTransaction transaction(selectionContext.view(), QByteArrayLiteral("DesignerActionManager|removeLayout")); - + selectionContext.view()->executeInTransaction("DesignerActionManager|removeLayout", [selectionContext, &layoutItem, parent](){ foreach (const ModelNode &modelNode, selectionContext.currentSingleSelectedNode().directSubModelNodes()) { if (QmlItemNode::isValidQmlItemNode(modelNode)) { @@ -772,7 +738,7 @@ void removeLayout(const SelectionContext &selectionContext) parent.modelNode().defaultNodeListProperty().reparentHere(modelNode); } layoutItem.destroy(); - } + }); } void removePositioner(const SelectionContext &selectionContext) @@ -826,9 +792,7 @@ void addItemToStackedContainer(const SelectionContext &selectionContext) } } - try { - RewriterTransaction transaction = - view->beginRewriterTransaction(QByteArrayLiteral("DesignerActionManager:addItemToStackedContainer")); + view->executeInTransaction("DesignerActionManager:addItemToStackedContainer", [=](){ NodeMetaInfo itemMetaInfo = view->model()->metaInfo("QtQuick.Item", -1, -1); QTC_ASSERT(itemMetaInfo.isValid(), return); @@ -853,11 +817,7 @@ void addItemToStackedContainer(const SelectionContext &selectionContext) } } - - transaction.commit(); - } catch (RewritingException &exception) { //better safe than sorry! There always might be cases where we fail - exception.showException(); - } + }); } PropertyName getIndexPropertyName(const ModelNode &modelNode) @@ -969,9 +929,8 @@ void addTabBarToStackedContainer(const SelectionContext &selectionContext) const PropertyName indexPropertyName = getIndexPropertyName(container); QTC_ASSERT(container.metaInfo().hasProperty(indexPropertyName), return); - try { - RewriterTransaction transaction = - view->beginRewriterTransaction(QByteArrayLiteral("DesignerActionManager:addItemToStackedContainer")); + view->executeInTransaction("DesignerActionManager:addItemToStackedContainer", + [view, container, containerItemNode, tabBarMetaInfo, tabButtonMetaInfo, indexPropertyName](){ ModelNode tabBarNode = view->createModelNode("QtQuick.Controls.TabBar", @@ -1003,11 +962,8 @@ void addTabBarToStackedContainer(const SelectionContext &selectionContext) container.removeProperty(indexPropertyName); const QString expression = id + "." + QString::fromLatin1(indexPropertyName); container.bindingProperty(indexPropertyName).setExpression(expression); + }); - transaction.commit(); - } catch (RewritingException &exception) { //better safe than sorry! There always might be cases where we fail - exception.showException(); - } } bool addImageToProject(const QStringList &fileNames, const QString &defaultDirectory) |