change mesh UI to tabs instead of collapsible groups

This commit is contained in:
Peter Petrik 2018-06-28 10:07:54 +02:00
parent c971ab95e7
commit 79d761d6da
13 changed files with 1005 additions and 214 deletions

View File

@ -518,6 +518,9 @@
<file>themes/default/propertyicons/labeltext.svg</file>
<file>themes/default/propertyicons/locale.svg</file>
<file>themes/default/propertyicons/map_tools.svg</file>
<file>themes/default/propertyicons/meshcontours.svg</file>
<file>themes/default/propertyicons/meshframe.svg</file>
<file>themes/default/propertyicons/meshvectors.svg</file>
<file>themes/default/propertyicons/metadata.svg</file>
<file>themes/default/propertyicons/network_and_proxy.svg</file>
<file>themes/default/propertyicons/overlay.svg</file>

View File

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="list_icons.svg">
<defs
id="defs4">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutM"
style="overflow:visible">
<path
id="path3940"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Send"
style="overflow:visible;">
<path
id="path3810"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.2) rotate(180) translate(6,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;">
<path
id="path3804"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path3816"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path3937"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.8)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective3771" />
<linearGradient
id="linearGradient3755">
<stop
id="stop3767"
offset="0"
style="stop-color:#0000ff;stop-opacity:0.50196081;" />
<stop
id="stop3765"
offset="0.34999999"
style="stop-color:#00ffff;stop-opacity:0.50196081;" />
<stop
id="stop3763"
offset="0.5"
style="stop-color:#00ff00;stop-opacity:0.50196081;" />
<stop
style="stop-color:#ffff00;stop-opacity:0.50196081;"
offset="0.64999998"
id="stop3769" />
<stop
style="stop-color:#ff0000;stop-opacity:0.50980395;"
offset="1"
id="stop3759" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3755"
id="linearGradient3761"
x1="-0.044642858"
y1="0.071428955"
x2="15.955357"
y2="16.053572"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.4"
inkscape:cx="10.67143"
inkscape:cy="2.9092772"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="994"
inkscape:window-x="-4"
inkscape:window-y="-3"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1036.3622)">
<rect
style="fill:url(#linearGradient3761);stroke:none;fill-opacity:1.0"
id="rect2985"
width="16"
height="16"
x="-0.044642858"
y="0.017857092"
transform="translate(0,1036.3622)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,207 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg2"
version="1.1"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="meshframe.svg"
inkscape:export-filename="/home/martin/lutra/qgis-crayfish-plugin/plugin/list_icons_d.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutM"
style="overflow:visible">
<path
id="path3940"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Send"
style="overflow:visible;">
<path
id="path3810"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.2) rotate(180) translate(6,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;">
<path
id="path3804"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path3816"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path3937"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.8)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective3771" />
<linearGradient
id="linearGradient3755">
<stop
id="stop3767"
offset="0"
style="stop-color:#0000ff;stop-opacity:0.50196081;" />
<stop
id="stop3765"
offset="0.34999999"
style="stop-color:#00ffff;stop-opacity:0.50196081;" />
<stop
id="stop3763"
offset="0.5"
style="stop-color:#00ff00;stop-opacity:0.50196081;" />
<stop
style="stop-color:#ffff00;stop-opacity:0.50196081;"
offset="0.64999998"
id="stop3769" />
<stop
style="stop-color:#ff0000;stop-opacity:0.50980395;"
offset="1"
id="stop3759" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3755"
id="linearGradient3761"
x1="-0.044642858"
y1="0.071428955"
x2="15.955357"
y2="16.053572"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.678384"
inkscape:cx="6.3745751"
inkscape:cy="6.2123922"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1015"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1036.3622)">
<path
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 2.7463522,1038.4726 -0.063134,12.1219"
id="path111"
inkscape:connector-curvature="0" />
<path
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 6.2818858,1038.4725 -0.063134,12.1219"
id="path111-6"
inkscape:connector-curvature="0" />
<path
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 9.5964489,1038.5042 -0.063134,12.1219"
id="path111-2"
inkscape:connector-curvature="0" />
<path
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 12.942579,1038.5356 -0.06313,12.1219"
id="path111-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.04660463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 2.1764118,1050.0579 11.2098392,0.063 v 0 0 0 0 0"
id="path1015"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.04660463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 2.2012383,1046.121 11.2098387,0.063 v 0 0 0 0 0"
id="path1015-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.04660463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 2.1921954,1039.0093 11.2098396,0.063 v 0 0 0 0 0"
id="path1015-7"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.04660463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 2.2237627,1042.7026 11.2098393,0.063 v 0 0 0 0 0"
id="path1015-0"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="list_icons.svg"
inkscape:export-filename="/home/martin/lutra/qgis-crayfish-plugin/plugin/list_icons_d.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutM"
style="overflow:visible">
<path
id="path3940"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Send"
style="overflow:visible;">
<path
id="path3810"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.2) rotate(180) translate(6,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;">
<path
id="path3804"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path3816"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path3937"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.8)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective3771" />
<linearGradient
id="linearGradient3755">
<stop
id="stop3767"
offset="0"
style="stop-color:#0000ff;stop-opacity:0.50196081;" />
<stop
id="stop3765"
offset="0.34999999"
style="stop-color:#00ffff;stop-opacity:0.50196081;" />
<stop
id="stop3763"
offset="0.5"
style="stop-color:#00ff00;stop-opacity:0.50196081;" />
<stop
style="stop-color:#ffff00;stop-opacity:0.50196081;"
offset="0.64999998"
id="stop3769" />
<stop
style="stop-color:#ff0000;stop-opacity:0.50980395;"
offset="1"
id="stop3759" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3755"
id="linearGradient3761"
x1="-0.044642858"
y1="0.071428955"
x2="15.955357"
y2="16.053572"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.678384"
inkscape:cx="2.8246129"
inkscape:cy="6.2123922"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="994"
inkscape:window-x="-4"
inkscape:window-y="-3"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
orientation="1,0"
position="14.017857,5.8035714"
id="guide4180" />
<sodipodi:guide
orientation="0,1"
position="-3.5714286,1.9642857"
id="guide4182" />
<sodipodi:guide
orientation="1,0"
position="12.053571,10.982143"
id="guide4186" />
<sodipodi:guide
orientation="0,1"
position="-9.1964286,3.9732143"
id="guide4188" />
<sodipodi:guide
orientation="0,1"
position="-5.0446429,5.9821429"
id="guide4190" />
<sodipodi:guide
orientation="1,0"
position="10,8.3482143"
id="guide4192" />
<sodipodi:guide
orientation="1,0"
position="12.991071,10.714286"
id="guide4194" />
<sodipodi:guide
orientation="0,1"
position="8.9651038,2.9673231"
id="guide4196" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1036.3622)">
<path
style="fill:#b3b3b3;stroke:#b3b3b3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:none"
d="m 2.5000001,1038.8622 10.9999999,11"
id="path3789"
inkscape:connector-curvature="0"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<path
style="fill:#b3b3b3;fill-opacity:1;stroke:#b3b3b3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 14.017857,1050.3979 12.991071,1046.3801 10,1049.3949 z"
id="path4184"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -281,6 +281,44 @@ void QgsMeshDatasetGroupTreeView::syncToLayer()
mModel.setupModelData( mGroups.keys() );
if ( mGroups.size() > 0 )
setCurrentIndex( mModel.index( 0, 0 ) );
int index = setActiveGroupFromActiveDataset();
if ( mGroups.size() > index )
setCurrentIndex( mModel.index( index, 0 ) );
}
int QgsMeshDatasetGroupTreeView::setActiveGroupFromActiveDataset()
{
// find active dataset
int activeDataset = -1;
if ( mMeshLayer )
{
activeDataset = mMeshLayer->activeScalarDataset();
if ( activeDataset == -1 )
activeDataset = mMeshLayer->activeVectorDataset();
}
// find group that contains active dataset
int index = 0;
if ( activeDataset > -1 )
{
for ( auto it = mGroups.constBegin(); it != mGroups.constEnd(); ++it )
{
int datasetIndex = it.value().indexOf( activeDataset );
if ( datasetIndex > -1 )
{
mActiveGroup = it.key();
return index;
}
else
{
++index;
}
}
}
// not found return first item in the list
mActiveGroup = QString();
return 0;
}

View File

@ -126,6 +126,7 @@ class APP_EXPORT QgsMeshDatasetGroupTreeView : public QTreeView
private:
void extractGroups();
int setActiveGroupFromActiveDataset();
QgsMeshDatasetGroupTreeModel mModel;
QgsMeshLayer *mMeshLayer = nullptr; // not owned

View File

@ -26,10 +26,6 @@ QgsMeshRendererActiveDatasetWidget::QgsMeshRendererActiveDatasetWidget( QWidget
setupUi( this );
connect( mDatasetGroupTreeView, &QgsMeshDatasetGroupTreeView::activeGroupChanged, this, &QgsMeshRendererActiveDatasetWidget::onActiveGroupChanged );
connect( mDatasetSlider, &QSlider::valueChanged, this, &QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged );
connect( mDisplayScalarsCheckBox, &QCheckBox::stateChanged, this, &QgsMeshRendererActiveDatasetWidget::onScalarChecked );
connect( mDisplayVectorsCheckBox, &QCheckBox::stateChanged, this, &QgsMeshRendererActiveDatasetWidget::onVectorChecked );
connect( mDisplayNativeMeshCheckBox, &QCheckBox::stateChanged, this, &QgsMeshRendererActiveDatasetWidget::onNativeMeshChecked );
connect( mDisplayTriangularMeshCheckBox, &QCheckBox::stateChanged, this, &QgsMeshRendererActiveDatasetWidget::onTringularMeshChecked );
}
void QgsMeshRendererActiveDatasetWidget::setLayer( QgsMeshLayer *layer )
@ -39,40 +35,19 @@ void QgsMeshRendererActiveDatasetWidget::setLayer( QgsMeshLayer *layer )
mMeshLayer = layer;
}
mDatasetGroupTreeView->setLayer( layer );
setEnabled( mMeshLayer );
syncToLayer();
mDatasetGroupTreeView->setLayer( layer );
}
int QgsMeshRendererActiveDatasetWidget::activeScalarDataset() const
{
if ( isEnabled() &&
mDisplayScalarsCheckBox->isEnabled() &&
mDisplayScalarsCheckBox->isChecked() )
return datasetIndex();
else
return -1;
return mActiveScalarDataset;
}
int QgsMeshRendererActiveDatasetWidget::activeVectorDataset() const
{
if ( isEnabled() &&
mDisplayVectorsCheckBox->isEnabled() &&
mDisplayVectorsCheckBox->isChecked() )
return datasetIndex();
else
return -1;
}
bool QgsMeshRendererActiveDatasetWidget::isNativeMeshEnabled() const
{
return isEnabled() && mDisplayNativeMeshCheckBox->isChecked();
}
bool QgsMeshRendererActiveDatasetWidget::isTriangularMeshEnabled() const
{
return isEnabled() && mDisplayTriangularMeshCheckBox->isChecked();
return mActiveVectorDataset;
}
void QgsMeshRendererActiveDatasetWidget::onActiveGroupChanged()
@ -88,17 +63,16 @@ void QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged( int value )
{
int datasetIndex = -1;
const QVector<int> datasets = mDatasetGroupTreeView->datasetsInActiveGroup();
if ( datasets.size() < value || !mMeshLayer || !mMeshLayer->dataProvider() )
{
mDisplayScalarsCheckBox->setEnabled( false );
mDisplayVectorsCheckBox->setEnabled( false );
}
else
mActiveScalarDataset = -1;
mActiveVectorDataset = -1;
if ( datasets.size() > value && mMeshLayer && mMeshLayer->dataProvider() )
{
datasetIndex = datasets[value];
const QgsMeshDatasetMetadata meta = mMeshLayer->dataProvider()->datasetMetadata( datasetIndex );
mDisplayScalarsCheckBox->setEnabled( true );
mDisplayVectorsCheckBox->setEnabled( meta.isVector() );
mActiveScalarDataset = datasetIndex;
if ( meta.isVector() )
mActiveVectorDataset = datasetIndex;
}
updateMetadata( datasetIndex );
@ -109,39 +83,11 @@ void QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged( int value )
emit widgetChanged();
}
void QgsMeshRendererActiveDatasetWidget::onScalarChecked( int toggle )
{
Q_UNUSED( toggle );
emit activeScalarDatasetChanged( activeScalarDataset() );
emit widgetChanged();
}
void QgsMeshRendererActiveDatasetWidget::onVectorChecked( int toggle )
{
Q_UNUSED( toggle );
emit activeVectorDatasetChanged( activeVectorDataset() );
emit widgetChanged();
}
void QgsMeshRendererActiveDatasetWidget::onNativeMeshChecked( int toggle )
{
Q_UNUSED( toggle );
emit nativeMeshEnabledChanged( isNativeMeshEnabled() );
emit widgetChanged();
}
void QgsMeshRendererActiveDatasetWidget::onTringularMeshChecked( int toggle )
{
Q_UNUSED( toggle );
emit triangularMeshEnabledChanged( isTriangularMeshEnabled() );
emit widgetChanged();
}
void QgsMeshRendererActiveDatasetWidget::updateMetadata( int datasetIndex )
{
if ( datasetIndex == -1 )
{
mActiveDatasetMetadata->setText( tr( "N/A" ) );
mActiveDatasetMetadata->setText( tr( "No dataset selected" ) );
}
else
{
@ -186,9 +132,15 @@ void QgsMeshRendererActiveDatasetWidget::syncToLayer()
if ( mMeshLayer )
{
whileBlocking( mDisplayNativeMeshCheckBox )->setChecked( mMeshLayer->rendererNativeMeshSettings().isEnabled() );
whileBlocking( mDisplayTriangularMeshCheckBox )->setChecked( mMeshLayer->rendererTriangularMeshSettings().isEnabled() );
whileBlocking( mDisplayScalarsCheckBox )->setChecked( mMeshLayer->activeScalarDataset() != -1 );
whileBlocking( mDisplayVectorsCheckBox )->setChecked( mMeshLayer->activeVectorDataset() != -1 );
mActiveScalarDataset = mMeshLayer->activeScalarDataset();
mActiveVectorDataset = mMeshLayer->activeVectorDataset();
}
else
{
mActiveScalarDataset = -1;
mActiveVectorDataset = -1;
}
if ( mActiveScalarDataset != -1 )
whileBlocking( mDatasetSlider )->setValue( mActiveScalarDataset );
}

View File

@ -26,7 +26,9 @@ class QgsMeshLayer;
/**
* Widget for selection of active dataset group from tree view.
* Also selects the active scalar and vector dataset by slider
* and whether mesh rendering is enabled by checkboxes.
*
* At the moment, it is not possible to select different vector and
* scalar dataset
*/
class APP_EXPORT QgsMeshRendererActiveDatasetWidget : public QWidget, private Ui::QgsMeshRendererActiveDatasetWidgetBase
{
@ -50,12 +52,6 @@ class APP_EXPORT QgsMeshRendererActiveDatasetWidget : public QWidget, private Ui
//! Gets index of the selected/active vector dataset
int activeVectorDataset() const;
//! Returns whether rendering of the native mesh is enabled
bool isNativeMeshEnabled() const;
//! Returns whether rendering of the triangular mesh is enabled
bool isTriangularMeshEnabled() const;
//! Synchronizes widgets state with associated mesh layer
void syncToLayer();
@ -67,28 +63,20 @@ class APP_EXPORT QgsMeshRendererActiveDatasetWidget : public QWidget, private Ui
//! Emitted when active vector dataset changed
void activeVectorDatasetChanged( int index );
//! Emitted when rendering of the native mesh changed
void nativeMeshEnabledChanged( bool on );
//! Emitted when rendering of the triangular mesh changed
void triangularMeshEnabledChanged( bool on );
//! Emitted when any settings related to rendering changed
void widgetChanged();
private slots:
void onActiveGroupChanged();
void onActiveDatasetChanged( int value );
void onScalarChecked( int toggle );
void onVectorChecked( int toggle );
void onNativeMeshChecked( int toggle );
void onTringularMeshChecked( int toggle );
void updateMetadata( int datasetIndex );
private:
int datasetIndex() const;
QgsMeshLayer *mMeshLayer = nullptr; // not owned
int mActiveScalarDataset = -1;
int mActiveVectorDataset = -1;
};
#endif // QGSMESHRENDERERSCALARSETTINGSWIDGET_H

View File

@ -47,6 +47,13 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *
mMeshRendererScalarSettingsWidget, &QgsMeshRendererScalarSettingsWidget::setActiveDataset );
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeVectorDatasetChanged,
mMeshRendererVectorSettingsWidget, &QgsMeshRendererVectorSettingsWidget::setActiveDataset );
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeVectorDatasetChanged,
this, &QgsRendererMeshPropertiesWidget::enableVectorRenderingTab );
connect( mNativeMeshGroup, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged );
connect( mTriangularMeshGroup, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged );
connect( mContoursGroupBox, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged );
connect( mVectorsGroupBox, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged );
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged );
connect( mMeshRendererScalarSettingsWidget, &QgsMeshRendererScalarSettingsWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged );
@ -63,19 +70,19 @@ void QgsRendererMeshPropertiesWidget::apply()
return;
// MESH
bool meshRenderingIsEnabled = mMeshRendererActiveDatasetWidget->isNativeMeshEnabled();
bool meshRenderingIsEnabled = mNativeMeshGroup->isChecked();
QgsMeshRendererMeshSettings meshSettings = mNativeMeshSettingsWidget->settings();
meshSettings.setEnabled( meshRenderingIsEnabled );
whileBlocking( mMeshLayer )->setRendererNativeMeshSettings( meshSettings );
// TRIANGULAR MESH
bool triangularMeshRenderingIsEnabled = mMeshRendererActiveDatasetWidget->isTriangularMeshEnabled();
bool triangularMeshRenderingIsEnabled = mTriangularMeshGroup->isChecked();
QgsMeshRendererMeshSettings triangularMeshSettings = mTriangularMeshSettingsWidget->settings();
triangularMeshSettings.setEnabled( triangularMeshRenderingIsEnabled );
whileBlocking( mMeshLayer )->setRendererTriangularMeshSettings( triangularMeshSettings );
// SCALAR
int activeScalarDatasetIndex = mMeshRendererActiveDatasetWidget->activeScalarDataset();
int activeScalarDatasetIndex = activeScalarDataset();
whileBlocking( mMeshLayer )->setActiveScalarDataset( activeScalarDatasetIndex );
if ( activeScalarDatasetIndex != -1 )
{
@ -84,7 +91,7 @@ void QgsRendererMeshPropertiesWidget::apply()
}
// VECTOR
int activeVectorDatasetIndex = mMeshRendererActiveDatasetWidget->activeVectorDataset();
int activeVectorDatasetIndex = activeVectorDataset();
whileBlocking( mMeshLayer )->setActiveVectorDataset( activeVectorDatasetIndex );
if ( activeVectorDatasetIndex != -1 )
{
@ -102,4 +109,29 @@ void QgsRendererMeshPropertiesWidget::syncToLayer()
mNativeMeshSettingsWidget->syncToLayer();
mTriangularMeshSettingsWidget->syncToLayer();
mMeshRendererVectorSettingsWidget->syncToLayer();
enableVectorRenderingTab( activeVectorDataset() );
}
void QgsRendererMeshPropertiesWidget::enableVectorRenderingTab( int vectorDatasetIndex )
{
mVectorsGroupBox->setEnabled( vectorDatasetIndex != -1 );
}
int QgsRendererMeshPropertiesWidget::activeScalarDataset() const
{
int activeScalarDatasetIndex = mMeshRendererActiveDatasetWidget->activeScalarDataset();
if ( activeScalarDatasetIndex != -1 && mContoursGroupBox->isChecked() )
return activeScalarDatasetIndex;
else
return -1;
}
int QgsRendererMeshPropertiesWidget::activeVectorDataset() const
{
int activeScalarDatasetIndex = mMeshRendererActiveDatasetWidget->activeVectorDataset();
if ( activeScalarDatasetIndex != -1 && mVectorsGroupBox->isChecked() )
return activeScalarDatasetIndex;
else
return -1;
}

View File

@ -53,7 +53,16 @@ class APP_EXPORT QgsRendererMeshPropertiesWidget : public QgsMapLayerConfigWidge
//! Synchronize widgets state with associated mesh layer
void syncToLayer();
private slots:
void enableVectorRenderingTab( int vectorDatasetIndex );
private:
//! Gets index of the selected/active scalar dataset
int activeScalarDataset() const;
//! Gets index of the selected/active vector dataset
int activeVectorDataset() const;
QgsMeshLayer *mMeshLayer = nullptr; //not owned
};

View File

@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>254</width>
<height>304</height>
<width>319</width>
<height>317</height>
</rect>
</property>
<property name="windowTitle">
@ -47,45 +47,6 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Display</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QCheckBox" name="mDisplayScalarsCheckBox">
<property name="text">
<string>Contours</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="mDisplayVectorsCheckBox">
<property name="text">
<string> Vectors</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="mDisplayNativeMeshCheckBox">
<property name="text">
<string> Mesh</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="mDisplayTriangularMeshCheckBox">
<property name="text">
<string> Triangular Mesh</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QgsCollapsibleGroupBox" name="mActiveDatasetMetadataGroup">
<property name="title">

View File

@ -10,21 +10,47 @@
<height>84</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Line Width and Color</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QgsDoubleSpinBox" name="mLineWidthSpinBox"/>
<widget class="QgsDoubleSpinBox" name="mLineWidthSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QgsColorButton" name="mColorWidget"/>
<widget class="QgsColorButton" name="mColorWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>

View File

@ -6,94 +6,261 @@
<rect>
<x>0</x>
<y>0</y>
<width>386</width>
<width>774</width>
<height>593</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QgsCollapsibleGroupBox" name="mActiveDatasetGroup">
<property name="title">
<string>Active Dataset</string>
<widget class="QTabWidget" name="mStyleOptionsTab">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QgsMeshRendererActiveDatasetWidget" name="mMeshRendererActiveDatasetWidget" native="true">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBox" name="mScalarRenderingGroup">
<property name="title">
<string>Scalar rendering</string>
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QgsMeshRendererScalarSettingsWidget" name="mMeshRendererScalarSettingsWidget" native="true"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBox" name="mVectorRenderingGroup">
<property name="title">
<string>Vector rendering</string>
<property name="tabShape">
<enum>QTabWidget::Rounded</enum>
</property>
<layout class="QGridLayout" name="gridLayout2">
<item row="0" column="0">
<widget class="QgsMeshRendererVectorSettingsWidget" name="mMeshRendererVectorSettingsWidget" native="true"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBox" name="mMeshRenderingGroup">
<property name="title">
<string>Mesh rendering</string>
<property name="currentIndex">
<number>0</number>
</property>
<property name="checkable">
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="elideMode">
<enum>Qt::ElideNone</enum>
</property>
<property name="documentMode">
<bool>true</bool>
</property>
<property name="tabsClosable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Native mesh</string>
</property>
</widget>
</item>
<item>
<widget class="QgsMeshRendererMeshSettingsWidget" name="mNativeMeshSettingsWidget" native="true"/>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Triangular mesh</string>
</property>
</widget>
</item>
<item>
<widget class="QgsMeshRendererMeshSettingsWidget" name="mTriangularMeshSettingsWidget" native="true"/>
</item>
</layout>
<widget class="QWidget" name="mActiveDatasetTab">
<attribute name="icon">
<iconset resource="../../../images/images.qrc">
<normaloff>:/images/themes/default/propertyicons/general.svg</normaloff>:/images/themes/default/propertyicons/general.svg</iconset>
</attribute>
<attribute name="title">
<string/>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QgsMeshRendererActiveDatasetWidget" name="mMeshRendererActiveDatasetWidget" native="true">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="mContoursTab">
<attribute name="icon">
<iconset resource="../../../images/images.qrc">
<normaloff>:/images/themes/default/propertyicons/meshcontours.svg</normaloff>:/images/themes/default/propertyicons/meshcontours.svg</iconset>
</attribute>
<attribute name="title">
<string/>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_10">
<item>
<widget class="QGroupBox" name="mContoursGroupBox">
<property name="title">
<string>Show contours</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QgsMeshRendererScalarSettingsWidget" name="mMeshRendererScalarSettingsWidget" native="true"/>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="mVectorsTab">
<attribute name="icon">
<iconset resource="../../../images/images.qrc">
<normaloff>:/images/themes/default/propertyicons/meshvectors.svg</normaloff>:/images/themes/default/propertyicons/meshvectors.svg</iconset>
</attribute>
<attribute name="title">
<string/>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="mVectorsGroupBox">
<property name="title">
<string>Show Vectors</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QgsMeshRendererVectorSettingsWidget" name="mMeshRendererVectorSettingsWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="mMeshTab">
<attribute name="icon">
<iconset resource="../../../images/images.qrc">
<normaloff>:/images/themes/default/propertyicons/meshframe.svg</normaloff>:/images/themes/default/propertyicons/meshframe.svg</iconset>
</attribute>
<attribute name="title">
<string/>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
<widget class="QGroupBox" name="mNativeMeshGroup">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Native Mesh rendering</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QgsMeshRendererMeshSettingsWidget" name="mNativeMeshSettingsWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="mTriangularMeshGroup">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Triangular Mesh Rendering</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QgsMeshRendererMeshSettingsWidget" name="mTriangularMeshSettingsWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
@ -108,12 +275,6 @@
</layout>
</widget>
<customwidgets>
<customwidget>
<class>QgsCollapsibleGroupBox</class>
<extends>QGroupBox</extends>
<header>qgscollapsiblegroupbox.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsMeshRendererScalarSettingsWidget</class>
<extends>QWidget</extends>
@ -139,6 +300,36 @@
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<resources>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
</resources>
<connections/>
</ui>