From 66c5bfc97173d2083fb09e7e8513adac8f7f3649 Mon Sep 17 00:00:00 2001 From: cneben Date: Thu, 15 Aug 2024 12:08:48 +0200 Subject: [PATCH] #228 Polish layouts sample. WIP. Signed-off-by: cneben --- samples/layouts/layouts.qml | 58 ++++++++++++++++++++++++++++++------- src/qanTreeLayouts.h | 4 +-- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/samples/layouts/layouts.qml b/samples/layouts/layouts.qml index 5bca271a..78329a67 100644 --- a/samples/layouts/layouts.qml +++ b/samples/layouts/layouts.qml @@ -43,11 +43,14 @@ ApplicationWindow { navigable : true resizeHandlerColor: "#03a9f4" gridThickColor: Material.theme === Material.Dark ? "#4e4e4e" : "#c1c1c1" + property var treeRoot: undefined graph: Qan.Graph { parent: graphView id: graph Component.onCompleted: { let n1 = graph.insertNode() + id: graphView + graphView.treeRoot = n1 n1.label = "n1"; n1.item.x=15; n1.item.y= 25 n1.item.ratio = 0.4 @@ -69,16 +72,13 @@ ApplicationWindow { let n131 = graph.insertNode() n131.label = "n131"; n131.item.x=225; n131.item.y= 125 - graph.insertEdge(n1, n11); - graph.insertEdge(n1, n12); - graph.insertEdge(n1, n13); - graph.insertEdge(n12, n121); - graph.insertEdge(n12, n122); - //graph.insertEdge(n121, n1211); - graph.insertEdge(n13, n131); - - orgTreeLayout.layoutOrientation = Qan.OrgTreeLayout.Mixed - orgTreeLayout.layout(n1); + graph.insertEdge(n1, n11) + graph.insertEdge(n1, n12) + graph.insertEdge(n1, n13) + graph.insertEdge(n12, n121) + graph.insertEdge(n12, n122) + //graph.insertEdge(n121, n1211) + graph.insertEdge(n13, n131) } Qan.OrgTreeLayout { id: orgTreeLayout @@ -101,6 +101,44 @@ ApplicationWindow { contextMenu.y = pos.y contextMenu.open() } + Pane { + anchors.top: parent.top + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter + width: 420 + height: 50 + padding: 2 + RowLayout { + anchors.fill: parent + Label { + text: "Apply OrgTree:" + } + Button { + text: 'Mixed' + Material.roundedScale: Material.SmallScale + onClicked: { + orgTreeLayout.layoutOrientation = Qan.OrgTreeLayout.Mixed + orgTreeLayout.layout(graphView.treeRoot); + } + } + Button { + text: 'Vertical' + Material.roundedScale: Material.SmallScale + onClicked: { + orgTreeLayout.layoutOrientation = Qan.OrgTreeLayout.Vertical + orgTreeLayout.layout(graphView.treeRoot); + } + } + Button { + text: 'Horizontal' + Material.roundedScale: Material.SmallScale + onClicked: { + orgTreeLayout.layoutOrientation = Qan.OrgTreeLayout.Horizontal + orgTreeLayout.layout(graphView.treeRoot); + } + } + } + } } // Qan.GraphView } diff --git a/src/qanTreeLayouts.h b/src/qanTreeLayouts.h index f6c717e0..72b634cf 100644 --- a/src/qanTreeLayouts.h +++ b/src/qanTreeLayouts.h @@ -131,10 +131,10 @@ class OrgTreeLayout : public QObject * running this algorithm on a non tree subgraph might lead to inifinite recursions or * invalid layouts. */ - void layout(qan::Node& root, qreal xSpacing = 35., qreal ySpacing = 25.) noexcept; + void layout(qan::Node& root, qreal xSpacing = 25., qreal ySpacing = 25.) noexcept; //! QML invokable version of layout(). - Q_INVOKABLE void layout(qan::Node* root, qreal xSpacing = 35., qreal ySpacing = 25.) noexcept; + Q_INVOKABLE void layout(qan::Node* root, qreal xSpacing = 25., qreal ySpacing = 25.) noexcept; //@} //------------------------------------------------------------------------- };