From 978f4a9b00f9f083d400a461bffa0730afa15d5c Mon Sep 17 00:00:00 2001 From: ChemicalXandco Date: Tue, 24 Sep 2019 17:09:54 +0100 Subject: [PATCH 01/15] [ui] Reconstruction: add 'depthMap' member --- meshroom/ui/reconstruction.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/meshroom/ui/reconstruction.py b/meshroom/ui/reconstruction.py index cc77a44bb7..cc1811f6e3 100755 --- a/meshroom/ui/reconstruction.py +++ b/meshroom/ui/reconstruction.py @@ -387,6 +387,9 @@ def __init__(self, defaultPipeline='', parent=None): # - Prepare Dense Scene (undistorted images) self._prepareDenseScene = None + # - Depth Map + self._depthMap = None + # - Texturing self._texturing = None @@ -441,6 +444,7 @@ def onGraphChanged(self): self.featureExtraction = None self.sfm = None self.prepareDenseScene = None + self.depthMap = None self.texturing = None self.updateCameraInits() if not self._graph: @@ -787,6 +791,8 @@ def setActiveNodeOfType(self, node): self.cameraInit = node elif node.nodeType == "PrepareDenseScene": self.prepareDenseScene = node + elif node.nodeType in ("DepthMap", "DepthMapFilter"): + self.depthMap = node def updateSfMResults(self): """ @@ -947,8 +953,13 @@ def getPoseRT(self, viewpoint): # convenient property for QML binding re-evaluation when sfm report changes sfmReport = Property(bool, lambda self: len(self._poses) > 0, notify=sfmReportChanged) sfmAugmented = Signal(Node, Node) + prepareDenseSceneChanged = Signal() prepareDenseScene = makeProperty(QObject, "_prepareDenseScene", notify=prepareDenseSceneChanged, resetOnDestroy=True) + + depthMapChanged = Signal() + depthMap = makeProperty(QObject, "_depthMap", depthMapChanged, resetOnDestroy=True) + texturingChanged = Signal() texturing = makeProperty(QObject, "_texturing", notify=texturingChanged) From 5652770a42c3eb274c4e08445c3dac7e4bc3da4c Mon Sep 17 00:00:00 2001 From: ChemicalXandco Date: Tue, 24 Sep 2019 19:24:47 +0100 Subject: [PATCH 02/15] add ComboBox to select depth map file --- meshroom/ui/qml/Viewer/Viewer2D.qml | 42 +++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 1a4eb8c4b7..83c1b4b603 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -9,7 +9,9 @@ FocusScope { id: root clip: true + property url source + property url realSource property var metadata function clear() @@ -26,6 +28,18 @@ FocusScope { } } + onSourceChanged: { + realSource = getImageFile(imageType.type) + } + + Binding { + target: _reconstruction.onDepthMapChanged + + value: { + realSource = getImageFile(imageType.type) + } + } + // functions function fit() { if(image.status != Image.Ready) @@ -35,6 +49,18 @@ FocusScope { image.y = Math.max((root.height-image.height*image.scale)*0.5, 0) } + function getImageFile(type) { + var withExtension + if (type == "nmodMap") { + withExtension = type + ".png"; + } else if (type == "image") { + return root.source; + } else { + withExtension = type + ".exr"; + } + return "file:///"+_reconstruction.depthMap.internalFolder+"/"+_reconstruction.selectedViewId+"_"+withExtension; + } + // context menu property Component contextMenu: Menu { MenuItem { @@ -56,7 +82,7 @@ FocusScope { fillMode: Image.PreserveAspectFit autoTransform: true onWidthChanged: if(status==Image.Ready) fit() - source: root.source + source: root.realSource onStatusChanged: { // update cache source when image is loaded if(status === Image.Ready) @@ -160,7 +186,7 @@ FocusScope { font.pointSize: 8 readOnly: true selectByMouse: true - text: Filepath.urlToString(source) + text: Filepath.urlToString(realSource) } } @@ -227,6 +253,18 @@ FocusScope { } } + ComboBox { + id: imageType + + property var types: ["image", "depthMap", "simMap", "nmodMap"] + property string type: types[currentIndex] + + model: types + onCurrentIndexChanged: { + root.realSource = root.getImageFile(type) + } + } + ToolButton { id: metadataCB padding: 3 From b2db142cc288ef5e70c7320222892e14415b0be7 Mon Sep 17 00:00:00 2001 From: ChemicalXandco Date: Wed, 25 Sep 2019 17:34:38 +0100 Subject: [PATCH 03/15] add button on 2D Viewer to view depth maps in the 3D Viewer --- meshroom/ui/qml/Viewer/Viewer2D.qml | 32 ++++++++++++++++++++++------- meshroom/ui/qml/WorkspaceView.qml | 4 +++- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 83c1b4b603..3891f6b03b 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -13,6 +13,7 @@ FocusScope { property url source property url realSource property var metadata + property var viewIn3D function clear() { @@ -51,14 +52,11 @@ FocusScope { function getImageFile(type) { var withExtension - if (type == "nmodMap") { - withExtension = type + ".png"; - } else if (type == "image") { + if (type == "image") { return root.source; } else { - withExtension = type + ".exr"; + return "file:///"+_reconstruction.depthMap.internalFolder+"/"+_reconstruction.selectedViewId+"_"+type+".exr"; } - return "file:///"+_reconstruction.depthMap.internalFolder+"/"+_reconstruction.selectedViewId+"_"+withExtension; } // context menu @@ -176,18 +174,28 @@ FocusScope { FloatingPane { id: topToolbar width: parent.width + height: depthMapNodeName.height+8 radius: 0 padding: 4 // selectable filepath to source image TextField { - width: parent.width + width: parent.width-depthMapNodeName.width-5 padding: 0 + anchors.right: depthMapNodeName.left + anchors.rightMargin: 5 background: Item {} font.pointSize: 8 readOnly: true selectByMouse: true text: Filepath.urlToString(realSource) } + // show which depthmap node is active + Label { + id: depthMapNodeName + text: _reconstruction.depthMap.name + anchors.right: parent.right + visible: imageType.type != "image" + } } // Image Metadata overlay Pane @@ -243,6 +251,16 @@ FocusScope { text: MaterialIcons.scatter_plot } + MaterialToolButton { + font.pointSize: 11 + ToolTip.text: "View Depth Map in 3D (" + _reconstruction.depthMap.name + ")" + text: MaterialIcons.input + + onClicked: { + root.viewIn3D(root.getImageFile("depthMap")) + } + } + Item { Layout.fillWidth: true Label { @@ -256,7 +274,7 @@ FocusScope { ComboBox { id: imageType - property var types: ["image", "depthMap", "simMap", "nmodMap"] + property var types: ["image", "depthMap", "simMap"] property string type: types[currentIndex] model: types diff --git a/meshroom/ui/qml/WorkspaceView.qml b/meshroom/ui/qml/WorkspaceView.qml index 4a8264e159..d428fdd109 100644 --- a/meshroom/ui/qml/WorkspaceView.qml +++ b/meshroom/ui/qml/WorkspaceView.qml @@ -81,11 +81,13 @@ Item { title: "Image Viewer" Layout.fillHeight: true Layout.fillWidth: true - Layout.minimumWidth: 40 + Layout.minimumWidth: 275 Viewer2D { id: viewer2D anchors.fill: parent + viewIn3D: root.load3DMedia + Connections { target: imageGallery onCurrentItemChanged: { From 4ddd25fb738063b9b5b2d1396526fcb72419f071 Mon Sep 17 00:00:00 2001 From: ChemicalXandco Date: Fri, 6 Dec 2019 21:39:24 +0000 Subject: [PATCH 04/15] use getImageFile function to set image source --- meshroom/ui/qml/Viewer/Viewer2D.qml | 24 ++++-------------------- meshroom/ui/qml/WorkspaceView.qml | 2 +- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 3891f6b03b..94f07e25d6 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -11,7 +11,6 @@ FocusScope { clip: true property url source - property url realSource property var metadata property var viewIn3D @@ -29,18 +28,6 @@ FocusScope { } } - onSourceChanged: { - realSource = getImageFile(imageType.type) - } - - Binding { - target: _reconstruction.onDepthMapChanged - - value: { - realSource = getImageFile(imageType.type) - } - } - // functions function fit() { if(image.status != Image.Ready) @@ -51,11 +38,10 @@ FocusScope { } function getImageFile(type) { - var withExtension if (type == "image") { return root.source; } else { - return "file:///"+_reconstruction.depthMap.internalFolder+"/"+_reconstruction.selectedViewId+"_"+type+".exr"; + return "file:///"+_reconstruction.depthMap.internalFolder+_reconstruction.selectedViewId+"_"+type+".exr"; } } @@ -80,7 +66,7 @@ FocusScope { fillMode: Image.PreserveAspectFit autoTransform: true onWidthChanged: if(status==Image.Ready) fit() - source: root.realSource + source: getImageFile(imageType.type) onStatusChanged: { // update cache source when image is loaded if(status === Image.Ready) @@ -187,13 +173,14 @@ FocusScope { font.pointSize: 8 readOnly: true selectByMouse: true - text: Filepath.urlToString(realSource) + text: Filepath.urlToString(image.source) } // show which depthmap node is active Label { id: depthMapNodeName text: _reconstruction.depthMap.name anchors.right: parent.right + font.pointSize: 8 visible: imageType.type != "image" } } @@ -278,9 +265,6 @@ FocusScope { property string type: types[currentIndex] model: types - onCurrentIndexChanged: { - root.realSource = root.getImageFile(type) - } } ToolButton { diff --git a/meshroom/ui/qml/WorkspaceView.qml b/meshroom/ui/qml/WorkspaceView.qml index d428fdd109..40ddc6d187 100644 --- a/meshroom/ui/qml/WorkspaceView.qml +++ b/meshroom/ui/qml/WorkspaceView.qml @@ -81,7 +81,7 @@ Item { title: "Image Viewer" Layout.fillHeight: true Layout.fillWidth: true - Layout.minimumWidth: 275 + Layout.minimumWidth: 325 Viewer2D { id: viewer2D anchors.fill: parent From 5c279f3584da18cbb65d1d367286c6540cbd992a Mon Sep 17 00:00:00 2001 From: ChemicalXandco Date: Sat, 4 Jan 2020 11:47:17 +0000 Subject: [PATCH 05/15] use Filepath.stringToUrl instead of "file:///"+ --- meshroom/ui/qml/Viewer/Viewer2D.qml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 94f07e25d6..48cf4b84b3 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -2,7 +2,6 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import MaterialIcons 2.2 - import Controls 1.0 FocusScope { @@ -41,7 +40,7 @@ FocusScope { if (type == "image") { return root.source; } else { - return "file:///"+_reconstruction.depthMap.internalFolder+_reconstruction.selectedViewId+"_"+type+".exr"; + return Filepath.stringToUrl(_reconstruction.depthMap.internalFolder+_reconstruction.selectedViewId+"_"+type+".exr"); } } From 7bea13599390ba8e394eec6040ec623a6b62d116 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Fri, 24 Jan 2020 12:55:31 +0100 Subject: [PATCH 06/15] [ui] viewer: move depthmap to 3D to the right and remove "Map" from combobox --- meshroom/ui/qml/Viewer/Viewer2D.qml | 33 +++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 48cf4b84b3..307e57c756 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -39,9 +39,10 @@ FocusScope { function getImageFile(type) { if (type == "image") { return root.source; - } else { - return Filepath.stringToUrl(_reconstruction.depthMap.internalFolder+_reconstruction.selectedViewId+"_"+type+".exr"); + } else if (_reconstruction.depthMap != undefined && _reconstruction.selectedViewId >= 0) { + return Filepath.stringToUrl(_reconstruction.depthMap.internalFolder+_reconstruction.selectedViewId+"_"+type+"Map.exr"); } + return ""; } // context menu @@ -237,16 +238,6 @@ FocusScope { text: MaterialIcons.scatter_plot } - MaterialToolButton { - font.pointSize: 11 - ToolTip.text: "View Depth Map in 3D (" + _reconstruction.depthMap.name + ")" - text: MaterialIcons.input - - onClicked: { - root.viewIn3D(root.getImageFile("depthMap")) - } - } - Item { Layout.fillWidth: true Label { @@ -259,13 +250,29 @@ FocusScope { ComboBox { id: imageType + // set min size to 5 characters + one margin for the combobox + Layout.minimumWidth: 6.0 * Qt.application.font.pixelSize + Layout.preferredWidth: Layout.minimumWidth + // Layout.preferredWidth: 6.0 * Qt.application.font.pixelSize + // Layout.minimumWidth: 6.0 * Qt.application.font.pixelSize - property var types: ["image", "depthMap", "simMap"] + property var types: ["image", "depth", "sim"] property string type: types[currentIndex] model: types } + MaterialToolButton { + font.pointSize: 11 + enabled: _reconstruction.depthMap != undefined + ToolTip.text: "View Depth Map in 3D (" + (_reconstruction.depthMap != undefined ? _reconstruction.depthMap.name : "No DepthMap Node Selected") + ")" + text: MaterialIcons.input + + onClicked: { + root.viewIn3D(root.getImageFile("depth")) + } + } + ToolButton { id: metadataCB padding: 3 From a37ecc189cc4be11d718bb5ada03b9358e98bd8a Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Fri, 24 Jan 2020 12:56:27 +0100 Subject: [PATCH 07/15] [ui] reset depthmap node when camerainit change --- meshroom/ui/reconstruction.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshroom/ui/reconstruction.py b/meshroom/ui/reconstruction.py index cc1811f6e3..e5c54d321b 100755 --- a/meshroom/ui/reconstruction.py +++ b/meshroom/ui/reconstruction.py @@ -389,6 +389,7 @@ def __init__(self, defaultPipeline='', parent=None): # - Depth Map self._depthMap = None + self.cameraInitChanged.connect(self.updateDepthMapNode) # - Texturing self._texturing = None @@ -486,6 +487,10 @@ def updateFeatureExtraction(self): """ Set the current FeatureExtraction node based on the current CameraInit node. """ self.featureExtraction = self.lastNodeOfType('FeatureExtraction', self.cameraInit) if self.cameraInit else None + def updateDepthMapNode(self): + """ Set the current FeatureExtraction node based on the current CameraInit node. """ + self.depthMap = self.lastNodeOfType('DepthMapFilter', self.cameraInit) if self.cameraInit else None + def lastSfmNode(self): """ Retrieve the last SfM node from the initial CameraInit node. """ return self.lastNodeOfType("StructureFromMotion", self._cameraInit, Status.SUCCESS) From c38f0c3fa32b2b169e8249a48abc4775159fcbb8 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Fri, 24 Jan 2020 12:56:47 +0100 Subject: [PATCH 08/15] [ui] minor qml warning fix --- meshroom/ui/qml/GraphEditor/CompatibilityManager.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshroom/ui/qml/GraphEditor/CompatibilityManager.qml b/meshroom/ui/qml/GraphEditor/CompatibilityManager.qml index 7f5be284e1..c9cf40a1c5 100644 --- a/meshroom/ui/qml/GraphEditor/CompatibilityManager.qml +++ b/meshroom/ui/qml/GraphEditor/CompatibilityManager.qml @@ -16,7 +16,7 @@ MessageDialog { // alias to underlying compatibilityNodes model readonly property var nodesModel: uigraph.graph.compatibilityNodes // the total number of compatibility issues - readonly property int issueCount: nodesModel.count + readonly property int issueCount: (nodesModel != undefined) ? nodesModel.count : 0 // the number of CompatibilityNodes that can be upgraded readonly property int upgradableCount: { var count = 0 From 8fd707178719e31f48fc8ab9740b991b6a2e1350 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Fri, 24 Jan 2020 13:00:40 +0100 Subject: [PATCH 09/15] [ui] Viewer: use label for DepthMap node instead of name --- meshroom/ui/qml/Viewer/Viewer2D.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 307e57c756..bba94ca4d6 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -178,7 +178,7 @@ FocusScope { // show which depthmap node is active Label { id: depthMapNodeName - text: _reconstruction.depthMap.name + text: _reconstruction.depthMap.label anchors.right: parent.right font.pointSize: 8 visible: imageType.type != "image" @@ -265,7 +265,7 @@ FocusScope { MaterialToolButton { font.pointSize: 11 enabled: _reconstruction.depthMap != undefined - ToolTip.text: "View Depth Map in 3D (" + (_reconstruction.depthMap != undefined ? _reconstruction.depthMap.name : "No DepthMap Node Selected") + ")" + ToolTip.text: "View Depth Map in 3D (" + (_reconstruction.depthMap != undefined ? _reconstruction.depthMap.label : "No DepthMap Node Selected") + ")" text: MaterialIcons.input onClicked: { From 9c70ce56936a74d7ef1140890d404a6b9e6935cc Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Fri, 24 Jan 2020 13:10:36 +0100 Subject: [PATCH 10/15] remove trailing comments --- meshroom/ui/qml/Viewer/Viewer2D.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index bba94ca4d6..9cd4bdffc4 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -253,8 +253,6 @@ FocusScope { // set min size to 5 characters + one margin for the combobox Layout.minimumWidth: 6.0 * Qt.application.font.pixelSize Layout.preferredWidth: Layout.minimumWidth - // Layout.preferredWidth: 6.0 * Qt.application.font.pixelSize - // Layout.minimumWidth: 6.0 * Qt.application.font.pixelSize property var types: ["image", "depth", "sim"] property string type: types[currentIndex] From fcdb3721c348b312d2ab53e41829ec756e149213 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Sat, 25 Jan 2020 16:15:15 +0100 Subject: [PATCH 11/15] [ui] Viewer: use flat combobox for better integration in the Viewer --- meshroom/ui/qml/Viewer/Viewer2D.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 9cd4bdffc4..d83e6b271d 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -253,7 +253,8 @@ FocusScope { // set min size to 5 characters + one margin for the combobox Layout.minimumWidth: 6.0 * Qt.application.font.pixelSize Layout.preferredWidth: Layout.minimumWidth - + flat: true + property var types: ["image", "depth", "sim"] property string type: types[currentIndex] From dabf19dae9c204295b6a0b709607e929f6b28923 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Mon, 27 Jan 2020 12:32:34 +0100 Subject: [PATCH 12/15] [ui] Viewer: use RowLayout instead of manual relative sizes --- meshroom/ui/qml/Viewer/Viewer2D.qml | 44 ++++++++++++++++------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index d83e6b271d..1acad698bc 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -163,25 +163,31 @@ FocusScope { height: depthMapNodeName.height+8 radius: 0 padding: 4 - // selectable filepath to source image - TextField { - width: parent.width-depthMapNodeName.width-5 - padding: 0 - anchors.right: depthMapNodeName.left - anchors.rightMargin: 5 - background: Item {} - font.pointSize: 8 - readOnly: true - selectByMouse: true - text: Filepath.urlToString(image.source) - } - // show which depthmap node is active - Label { - id: depthMapNodeName - text: _reconstruction.depthMap.label - anchors.right: parent.right - font.pointSize: 8 - visible: imageType.type != "image" + + RowLayout { + anchors.fill: parent + // selectable filepath to source image + TextField { + padding: 0 + background: Item {} + horizontalAlignment: TextInput.AlignLeft + Layout.fillWidth: true + font.pointSize: 8 + readOnly: true + selectByMouse: true + text: Filepath.urlToString(image.source) + } + // show which depthmap node is active + Label { + id: depthMapNodeName + visible: imageType.type != "image" + text: _reconstruction.depthMap.label + font.pointSize: 8 + + horizontalAlignment: TextInput.AlignLeft + Layout.fillWidth: false + Layout.preferredWidth: contentWidth + } } } From 18ab1d179322ef80446ea675c6c66b05fd714087 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Mon, 27 Jan 2020 12:37:29 +0100 Subject: [PATCH 13/15] [ui] Viewer: update min values --- meshroom/ui/qml/Viewer/Viewer2D.qml | 1 - meshroom/ui/qml/WorkspaceView.qml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 1acad698bc..9c7030f984 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -160,7 +160,6 @@ FocusScope { FloatingPane { id: topToolbar width: parent.width - height: depthMapNodeName.height+8 radius: 0 padding: 4 diff --git a/meshroom/ui/qml/WorkspaceView.qml b/meshroom/ui/qml/WorkspaceView.qml index 40ddc6d187..f309341c24 100644 --- a/meshroom/ui/qml/WorkspaceView.qml +++ b/meshroom/ui/qml/WorkspaceView.qml @@ -81,7 +81,7 @@ Item { title: "Image Viewer" Layout.fillHeight: true Layout.fillWidth: true - Layout.minimumWidth: 325 + Layout.minimumWidth: 280 Viewer2D { id: viewer2D anchors.fill: parent From 9bcad1ca4a7c2282ce333b5f778ea967d6fe66ac Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Mon, 27 Jan 2020 12:47:10 +0100 Subject: [PATCH 14/15] [ui] Viewer2D: minor warning fixes --- meshroom/ui/qml/Viewer/Viewer2D.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 9c7030f984..a9efa144ef 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -179,8 +179,8 @@ FocusScope { // show which depthmap node is active Label { id: depthMapNodeName - visible: imageType.type != "image" - text: _reconstruction.depthMap.label + visible: (_reconstruction.depthMap != undefined) && (imageType.type != "image") + text: (_reconstruction.depthMap != undefined ? _reconstruction.depthMap.label : "") font.pointSize: 8 horizontalAlignment: TextInput.AlignLeft @@ -264,6 +264,7 @@ FocusScope { property string type: types[currentIndex] model: types + enabled: _reconstruction.depthMap != undefined } MaterialToolButton { From 0dfc80a12a5e615b61f6ebe71311d20e2c212362 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Mon, 27 Jan 2020 13:15:00 +0100 Subject: [PATCH 15/15] [core] more precise warning on plugins load failure --- meshroom/core/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meshroom/core/__init__.py b/meshroom/core/__init__.py index c1856e51fa..cba9556201 100644 --- a/meshroom/core/__init__.py +++ b/meshroom/core/__init__.py @@ -86,9 +86,9 @@ def loadPlugins(folder, packageName, classType): errors.append(' * {}: {}'.format(pluginName, str(e))) if errors: - logging.warning('== The following plugins could not be loaded ==\n' - '{}\n' - .format('\n'.join(errors))) + logging.warning('== The following "{package}" plugins could not be loaded ==\n' + '{errorMsg}\n' + .format(package=packageName, errorMsg='\n'.join(errors))) return pluginTypes