1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-02 17:46:22 +03:00

0029018: Documentation - Provide user guide for Qt browser

Documentation is added in a new "Inspector" page of "User Guides".
Inspector plugins has some improvements by the documentation needs.
New DRAW scripts are implemented for 'tinspector' command.
This commit is contained in:
nds 2017-08-28 12:29:29 +03:00 committed by bugmaster
parent 434098193a
commit d2c909178e
117 changed files with 3166 additions and 463 deletions

View File

@ -32,6 +32,7 @@ user_guides/xde/xde.md
user_guides/ocaf/ocaf.md
user_guides/tobj/tobj.md
user_guides/draw_test_harness/draw_test_harness.md
user_guides/inspector/inspector.md
user_guides/brep_wp/brep_wp.md
user_guides/vis/vis.md

View File

@ -14,6 +14,7 @@ user_guides/shape_healing/shape_healing.md
user_guides/ocaf/ocaf.md
user_guides/step/step.md
user_guides/draw_test_harness/draw_test_harness.md
user_guides/inspector/inspector.md
user_guides/tobj/tobj.md
user_guides/visualization/visualization.md
user_guides/xde/xde.md

View File

@ -97,6 +97,7 @@ The following table gives the full list of environment variables used at the con
| BUILD_ADDITIONAL_TOOLKITS | String | Semicolon-separated individual toolkits to include into build process. If you want to build some particular libraries (toolkits) only, then you may uncheck all modules in the corresponding *BUILD_MODUE_\<MODULE\>* options and provide the list of necessary libraries here. Of course, all dependencies will be resolved automatically |
| BUILD_YACCLEX | Boolean flag | Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and ExprIntrp functionality are generated automatically with Flex/Bison. Checking this option leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files |
| BUILD_MODULE_MfcSamples | Boolean flag | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
| BUILD_Inspector | Boolean flag | Indicates whether Inspector should be built together with OCCT. |
| BUILD_DOC_Overview | Boolean flag | Indicates whether OCCT overview documentation project should be created together with OCCT. It is not built together with OCCT. Checking this option leads to automatic search of Doxygen binaries. Its building calls Doxygen command to generate the documentation in HTML format |
| BUILD_PATCH | Path | Points to the directory recognized as a "patch" for OCCT. If specified, the files from this directory take precedence over the corresponding native OCCT sources. This way you are able to introduce patches to Open CASCADE Technology not affecting the original source distribution |
| BUILD_WITH_DEBUG | Boolean flag | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing, etc. |

View File

@ -10687,6 +10687,87 @@ Example:
mdist
~~~~~
@section occt_draw_13 Inspector commands
This section describes commands that make possible to use Inspector.
@subsection occt_draw_13_1 tinspector
Syntax:
~~~~~
tinspector [-plugins {name1 ... [nameN] | all}]
[-activate name]
[-shape object [name1] ... [nameN]]
[-open file_name [name1] ... [nameN]]
[-update]
[-select {object | name1 ... [nameN]}]
[-show {0|1} = 1]
~~~~~
Starts tool of inspection.
Options:
* *plugins* enters plugins that should be added in the inspector.
Available names are: dfbrowser, vinspector and shapeview.
Plugins order will be the same as defined in arguments.
'all' adds all available plugins in the order:
DFBrowser, VInspector and ShapeView.
If at the first call this option is not used, 'all' option is applyed;
* *activate* activates the plugin in the tool view.
If at the first call this option is not used, the first plugin is activated;
* *shape* initializes plugin/s by the shape object. If 'name' is empty, initializes all plugins;
* *open* gives the file to the plugin/s. If the plugin is active, after open, update content will be done;
* *update* updates content of the active plugin;
* *select* sets the parameter that should be selected in an active tool view.
Depending on active tool the parameter is:
ShapeView: 'object' is an instance of TopoDS_Shape TShape,
DFBrowser: 'name' is an entry of TDF_Label and name2(optionaly) for TDF_Attribute type name,
VInspector: 'object' is an instance of AIS_InteractiveObject;
* *show* sets Inspector view visible or hidden. The first call of this command will show it.
**Example:**
~~~~~
pload DCAF INSPECTOR
NewDocument Doc BinOcaf
set aSetAttr1 100
set aLabel 0:2
SetInteger Doc ${aLabel} ${aSetAttr1}
tinspector -plugins dfbrowser -select 0:2 TDataStd_Integer
~~~~~
**Example:**
~~~~~
pload ALL INSPECTOR
box b1 200 100 120
box b2 100 200 220 100 120 100
tinspector -plugins shapeview -shape b1 -shape b2 -select b1
~~~~~
**Example:**
~~~~~
pload ALL INSPECTOR
tinspector -plugins vinspector
vinit
box box_1 100 100 100
vdisplay box_1
box box_2 180 120 200 150 150 150
vdisplay box_2
vfit
vselmode box_1 1 1
vselmode box_1 3 1
tinspector -update -select box_1
~~~~~
@section occt_draw_11 Extending Test Harness with custom commands

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -0,0 +1,224 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36458mm"
height="99.483337mm"
viewBox="0 0 165.36458 99.483337"
version="1.1"
id="svg8"
sodipodi:docname="3DView_elements.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="237.05748"
inkscape:cy="217.01184"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1410"
inkscape:window-height="786"
inkscape:window-x="265"
inkscape:window-y="101"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
showborder="true"
inkscape:showpageshadow="false" />
<metadata
id="metadata5">
<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(-208.35938,-140.66904)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147-9"
width="164.83542"
height="98.95417"
x="208.62396"
y="140.93362"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#bfbfbf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157-5"
width="155.95102"
height="20.214758"
x="212.62312"
y="145.17099"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#bfbfbf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-1"
width="155.83388"
height="64.776878"
x="212.62471"
y="170.05089"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620295;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-1"
width="30.417513"
height="11.316654"
x="286.53876"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620295;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-5-9"
width="30.417513"
height="11.316654"
x="321.21384"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="295.72775"
y="156.1628"
id="text5675-5"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-3"
x="295.72775"
y="156.1628"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Single</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="331.03946"
y="156.53418"
id="text5679-5"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5681-0"
x="331.03946"
y="156.53418"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Clean</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.45057005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-33"
width="14.354354"
height="56.42762"
x="216.9996"
y="174.34537"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.83517319;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-7-0"
width="67.939919"
height="26.352776"
x="265.93634"
y="189.26295"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="295.6308"
y="201.46571"
id="text5683-5-2"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-7"
x="295.6308"
y="201.46571"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D view</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620298;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-1-3"
width="30.417513"
height="11.316654"
x="217.1886"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="227.84984"
y="156.48491"
id="text5675-5-2"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-3-2"
x="227.84984"
y="156.48491"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">View</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620298;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-1-9"
width="30.417513"
height="11.316654"
x="251.86369"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="262.35156"
y="156.53418"
id="text5675-5-9"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-3-0"
x="262.35156"
y="156.53418"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Multi</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,284 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36443mm"
height="99.48317mm"
viewBox="0 0 165.36443 99.48317"
version="1.1"
id="svg1643"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="dfbrowser_elements.svg">
<defs
id="defs1637" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="290.24314"
inkscape:cy="320.3071"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="false"
inkscape:window-width="1246"
inkscape:window-height="857"
inkscape:window-x="371"
inkscape:window-y="37"
inkscape:window-maximized="0" />
<metadata
id="metadata1640">
<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(356.33698,30.17611)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147"
width="164.83542"
height="98.95417"
x="-356.07248"
y="-29.91161"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157"
width="155.951"
height="20.214758"
x="-352.0733"
y="-25.674246"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159"
width="75.795822"
height="64.91011"
x="-352.07172"
y="-0.79434544"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4161-4"
width="75.811562"
height="30.252827"
x="-272.04941"
y="33.729694"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4161-4-8"
width="75.811562"
height="30.252827"
x="-272.04941"
y="-0.80220562"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195"
width="73.552574"
height="11.118413"
x="-347.50781"
y="-21.126072"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1"
width="30.417513"
height="11.316654"
x="-267.92496"
y="-21.225193"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-5"
width="30.417513"
height="11.316654"
x="-231.57631"
y="-21.225193"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-259.7175"
y="-14.48304"
id="text5675"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677"
x="-259.7175"
y="-14.48304"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Update</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-223.04579"
y="-14.12208"
id="text5679"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5681"
x="-223.04579"
y="-14.12208"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Search</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-325.95343"
y="-14.547463"
id="text5683"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685"
x="-325.95343"
y="-14.547463"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Tree Navigation</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8"
width="65.570122"
height="19.385952"
x="-347.50781"
y="11.248657"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-333.31332"
y="22.090868"
id="text5683-5"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3"
x="-333.31332"
y="22.090868"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">OCAF tree view</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-0"
width="65.570122"
height="19.385952"
x="-267.68332"
y="3.9789243"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-3-5"
width="38.7719"
height="16.820164"
x="-267.11316"
y="37.191612"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#9bbb59;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-3"
width="38.7719"
height="16.820164"
x="-240.60002"
y="42.180641"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-252.8326"
y="13.779153"
id="text5683-5-9"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-8"
x="-252.8326"
y="13.779153"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Property Panel</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-231.82542"
y="51.393177"
id="text5683-5-0"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-5"
x="-231.82542"
y="51.393177"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D View</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-267.25568"
y="46.086102"
id="text5683-5-1"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-80"
x="-267.25568"
y="46.086102"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Dump View</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,142 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36458mm"
height="99.483337mm"
viewBox="0 0 165.36458 99.483337"
version="1.1"
id="svg2491"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="shapeview_elements.svg">
<defs
id="defs2485" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="319.53221"
inkscape:cy="223.36826"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:showpageshadow="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1205"
inkscape:window-height="766"
inkscape:window-x="422"
inkscape:window-y="28"
inkscape:window-maximized="0" />
<metadata
id="metadata2488">
<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(293.59301,-77.169049)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#ffa040;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147-0-8"
width="164.83542"
height="98.95417"
x="-293.32843"
y="77.433632"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#fcd5b5;fill-opacity:1;fill-rule:evenodd;stroke:#ff9933;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-8"
width="70.094536"
height="85.011993"
x="-285.46909"
y="83.598381"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.62230003;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-2"
width="54.993557"
height="25.389547"
x="-277.91861"
y="113.40961"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#fcd5b5;fill-opacity:1;fill-rule:evenodd;stroke:#ffa040;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-8-9"
width="70.094536"
height="85.011993"
x="-207.25319"
y="83.598389"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-2-4"
width="54.993557"
height="25.389547"
x="-199.70271"
y="113.40961"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-272.88153"
y="125.70056"
id="text5683-5-4-9"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-59-2"
x="-272.88153"
y="125.70056"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">TopoDS_Shape View</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-182.24478"
y="126.02359"
id="text5683-5-0-0"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-5-6"
x="-182.24478"
y="126.02359"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D View</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -0,0 +1,244 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="164.48495mm"
height="98.635941mm"
viewBox="0 0 164.48495 98.635941"
version="1.1"
id="svg8"
sodipodi:docname="tinspector_elements.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<defs
id="defs2">
<pattern
y="0"
x="0"
height="6"
width="6"
patternUnits="userSpaceOnUse"
id="EMFhbasepattern" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="329.8397"
inkscape:cy="227.89271"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1575"
inkscape:window-height="895"
inkscape:window-x="46"
inkscape:window-y="75"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<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(-23.06172,-25.84832)">
<path
id="path933"
d="M 23.326301,26.112901 H 187.28209 V 124.21968 H 23.326301 Z"
style="fill:none;stroke:#953735;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path935"
d="M 28.109932,31.192871 H 62.95001 v 12.97507 H 28.109932 Z"
style="fill:#9bbb59;fill-opacity:1;fill-rule:nonzero;stroke:#71893f;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path937"
d="m 66.54831,31.108201 h 34.84008 v 12.97507 H 66.54831 Z"
style="fill:none;stroke:#33cccc;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path939"
d="m 104.9867,31.023531 h 34.84007 v 12.97508 H 104.9867 Z"
style="fill:none;stroke:#ff9933;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path941"
d="m 37.550195,37.648651 c 0,0.254 -0.04233,0.48683 -0.169332,0.6985 -0.105832,0.21166 -0.253998,0.38099 -0.444497,0.48683 -0.126999,0.0847 -0.275164,0.14816 -0.42333,0.16933 -0.169332,0.0423 -0.35983,0.0635 -0.634995,0.0635 h -0.698495 v -2.83631 h 0.698495 c 0.275165,0 0.48683,0.0212 0.656162,0.0635 0.169332,0.0423 0.296331,0.10583 0.42333,0.16933 0.190498,0.127 0.338664,0.27516 0.444497,0.48683 0.105832,0.1905 0.148165,0.42333 0.148165,0.69849 z m -0.380997,0 c 0,-0.21166 -0.04233,-0.40216 -0.126999,-0.55033 -0.0635,-0.16933 -0.190498,-0.27516 -0.338664,-0.35983 -0.105833,-0.0635 -0.232832,-0.10583 -0.359831,-0.14816 -0.126999,-0.0212 -0.275164,-0.0212 -0.444497,-0.0212 h -0.35983 v 2.18015 h 0.35983 c 0.190499,0 0.338665,-0.0212 0.465664,-0.0423 0.148165,-0.0423 0.275164,-0.0847 0.380997,-0.14817 0.148165,-0.10583 0.253998,-0.21166 0.317498,-0.35983 0.0635,-0.14817 0.105832,-0.33866 0.105832,-0.55033 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path943"
d="m 39.963178,36.569161 h -1.418157 v 0.80433 h 1.227658 v 0.33866 h -1.227658 v 1.35466 h -0.380997 v -2.83631 h 1.799154 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path945"
d="m 42.524325,38.198981 c 0,0.127 -0.02117,0.254 -0.08467,0.35983 -0.04233,0.10583 -0.126999,0.21167 -0.211665,0.27517 -0.105833,0.0847 -0.211665,0.14816 -0.338664,0.16933 -0.126999,0.0423 -0.296331,0.0635 -0.48683,0.0635 h -1.015992 v -2.83631 h 0.84666 c 0.211665,0 0.359831,0.0212 0.465663,0.0423 0.105833,0 0.190499,0.0423 0.296331,0.0847 0.105833,0.0635 0.169332,0.12699 0.211666,0.21166 0.0635,0.0847 0.08467,0.1905 0.08467,0.29633 0,0.14817 -0.04233,0.254 -0.105832,0.35983 -0.0635,0.0847 -0.169332,0.16933 -0.275165,0.21167 v 0.0212 c 0.190499,0.0423 0.338665,0.127 0.444497,0.254 0.105833,0.12699 0.169332,0.27516 0.169332,0.48683 z m -0.634995,-1.26999 c 0,-0.0847 0,-0.127 -0.02117,-0.16933 -0.04233,-0.0635 -0.0635,-0.0847 -0.126999,-0.127 -0.04233,-0.0212 -0.126999,-0.0423 -0.211665,-0.0635 -0.08467,0 -0.190498,0 -0.317497,0 h -0.444497 v 0.80433 h 0.486829 c 0.127,0 0.211665,0 0.275165,-0.0212 0.08467,0 0.148166,-0.0423 0.190499,-0.0635 0.0635,-0.0423 0.105832,-0.0847 0.126999,-0.14817 0.04233,-0.0635 0.04233,-0.127 0.04233,-0.21166 z m 0.253998,1.26999 c 0,-0.10583 -0.02117,-0.1905 -0.0635,-0.254 -0.02117,-0.0847 -0.08467,-0.127 -0.190498,-0.16933 -0.0635,-0.0423 -0.126999,-0.0635 -0.211665,-0.0635 -0.08467,-0.0212 -0.190499,-0.0212 -0.317498,-0.0212 h -0.592662 v 1.05833 h 0.507996 c 0.148166,0 0.296331,-0.0212 0.402164,-0.0423 0.105832,0 0.190498,-0.0423 0.253998,-0.0847 0.0635,-0.0423 0.126999,-0.10584 0.148165,-0.16933 0.04233,-0.0635 0.0635,-0.14817 0.0635,-0.254 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path947"
d="m 44.344645,37.331151 h -0.02117 c -0.04233,-0.0212 -0.105832,-0.0212 -0.148165,-0.0212 -0.04233,0 -0.105833,-0.0212 -0.169332,-0.0212 -0.126999,0 -0.232832,0.0423 -0.317498,0.0847 -0.105832,0.0423 -0.211665,0.10584 -0.296331,0.1905 v 1.50283 h -0.359831 v -2.11663 h 0.359831 v 0.3175 c 0.126999,-0.127 0.253998,-0.21166 0.359831,-0.254 0.105832,-0.0423 0.232831,-0.0635 0.338664,-0.0635 0.0635,0 0.105832,0 0.126999,0 0.04233,0 0.08467,0 0.126999,0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path949"
d="m 46.482462,38.008481 c 0,0.33867 -0.08467,0.61383 -0.253998,0.80433 -0.169332,0.21167 -0.42333,0.3175 -0.719661,0.3175 -0.296331,0 -0.529163,-0.10583 -0.698495,-0.3175 -0.190498,-0.1905 -0.275164,-0.46566 -0.275164,-0.80433 0,-0.35983 0.08467,-0.61383 0.275164,-0.82549 0.169332,-0.1905 0.402164,-0.29633 0.698495,-0.29633 0.296331,0 0.550329,0.10583 0.719661,0.29633 0.169332,0.21166 0.253998,0.46566 0.253998,0.82549 z m -0.35983,0 c 0,-0.27516 -0.04233,-0.48683 -0.169332,-0.61383 -0.105833,-0.127 -0.253998,-0.21166 -0.444497,-0.21166 -0.190499,0 -0.338664,0.0847 -0.444497,0.21166 -0.105832,0.127 -0.169332,0.33867 -0.169332,0.61383 0,0.254 0.0635,0.46567 0.169332,0.59267 0.105833,0.14816 0.253998,0.21166 0.444497,0.21166 0.190499,0 0.338664,-0.0635 0.444497,-0.21166 0.105832,-0.127 0.169332,-0.33867 0.169332,-0.59267 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path951"
d="m 49.699771,36.950161 -0.550328,2.11665 h -0.317498 l -0.550329,-1.62982 -0.529163,1.62982 h -0.338664 l -0.550329,-2.11665 h 0.35983 l 0.402164,1.62982 0.529163,-1.62982 h 0.275164 l 0.55033,1.62982 0.35983,-1.62982 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path953"
d="m 51.731758,38.452981 c 0,0.1905 -0.08467,0.35983 -0.232834,0.46566 -0.16933,0.127 -0.380997,0.1905 -0.656161,0.1905 -0.169331,0 -0.296331,-0.0212 -0.444497,-0.0423 -0.126998,-0.0423 -0.232831,-0.0847 -0.317498,-0.127 v -0.40216 h 0.02117 c 0.105833,0.0847 0.232833,0.14816 0.380997,0.1905 0.127,0.0635 0.253998,0.0847 0.380998,0.0847 0.169333,0 0.275164,-0.0212 0.380997,-0.0847 0.08467,-0.0423 0.127,-0.127 0.127,-0.23283 0,-0.0847 -0.02117,-0.14817 -0.08467,-0.1905 -0.04233,-0.0423 -0.127,-0.0847 -0.275164,-0.10584 -0.04233,-0.0212 -0.105833,-0.0212 -0.1905,-0.0423 -0.08467,-0.0212 -0.148164,-0.0212 -0.211664,-0.0423 -0.1905,-0.0635 -0.338664,-0.12699 -0.402164,-0.23283 -0.08467,-0.0847 -0.127,-0.21166 -0.127,-0.33866 0,-0.0847 0.02117,-0.16933 0.0635,-0.254 0.04233,-0.0635 0.08467,-0.14817 0.169334,-0.21166 0.0635,-0.0423 0.148164,-0.10584 0.253997,-0.127 0.127,-0.0423 0.232831,-0.0635 0.380997,-0.0635 0.127,0 0.253998,0.0212 0.380998,0.0635 0.126997,0.0212 0.23283,0.0635 0.317497,0.10583 v 0.381 h -0.02117 c -0.08467,-0.0635 -0.190497,-0.127 -0.317497,-0.16934 -0.148167,-0.0423 -0.275164,-0.0635 -0.402164,-0.0635 -0.127,0 -0.232831,0.0212 -0.317497,0.0635 -0.08467,0.0423 -0.127,0.127 -0.127,0.23284 0,0.0847 0.02117,0.14816 0.0635,0.19049 0.0635,0.0423 0.148166,0.0847 0.275164,0.10584 0.0635,0.0212 0.127,0.0212 0.211666,0.0423 0.08466,0.0212 0.148164,0.0423 0.211664,0.0423 0.148167,0.0423 0.275164,0.10583 0.380998,0.1905 0.08467,0.10583 0.127,0.23283 0.127,0.38099 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path955"
d="m 54.017739,38.029651 h -1.56632 c 0,0.14816 0.02117,0.254 0.0635,0.35983 0.04233,0.0847 0.08466,0.16933 0.169331,0.23283 0.0635,0.0635 0.127,0.10583 0.23283,0.127 0.08467,0.0423 0.1905,0.0423 0.296334,0.0423 0.148164,0 0.275164,-0.0212 0.423328,-0.0847 0.148166,-0.0423 0.254,-0.10583 0.317497,-0.16933 h 0.02117 v 0.40216 c -0.126998,0.0423 -0.253998,0.0847 -0.359831,0.127 -0.126997,0.0212 -0.275164,0.0423 -0.402161,0.0423 -0.359831,0 -0.634998,-0.0847 -0.825495,-0.27516 -0.1905,-0.1905 -0.296331,-0.46567 -0.296331,-0.8255 0,-0.33866 0.105831,-0.61383 0.275164,-0.82549 0.190498,-0.1905 0.444498,-0.29633 0.761995,-0.29633 0.275164,0 0.507995,0.0847 0.656161,0.254 0.148167,0.16933 0.232831,0.40216 0.232831,0.69849 z m -0.338664,-0.254 c -0.02117,-0.1905 -0.0635,-0.33866 -0.148164,-0.4445 -0.105833,-0.10583 -0.232833,-0.14816 -0.423331,-0.14816 -0.1905,0 -0.338664,0.0423 -0.465664,0.16933 -0.105833,0.10583 -0.16933,0.254 -0.190497,0.42333 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path957"
d="m 55.88039,37.331151 h -0.0212 c -0.0635,-0.0212 -0.10583,-0.0212 -0.14816,-0.0212 -0.0635,0 -0.127,-0.0212 -0.1905,-0.0212 -0.10583,0 -0.21166,0.0423 -0.3175,0.0847 -0.10583,0.0423 -0.1905,0.10584 -0.29633,0.1905 v 1.50283 h -0.3598 v -2.11663 h 0.35983 v 0.3175 c 0.14817,-0.127 0.27517,-0.21166 0.381,-0.254 0.10583,-0.0423 0.21166,-0.0635 0.33866,-0.0635 0.0423,0 0.10584,0 0.127,0 0.0212,0 0.0635,0 0.127,0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path959"
d="m 76.00974,35.786001 -1.03715,2.81515 h -0.508 l -1.01599,-2.81515 h 0.40216 l 0.88899,2.47648 0.889,-2.47648 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path961"
d="m 77.4279,38.601151 h -1.12182 v -0.27517 h 0.38099 v -2.24365 h -0.38099 v -0.29633 h 1.12182 v 0.29633 h -0.381 v 2.24365 h 0.381 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path963"
d="m 79.79855,38.601151 h -0.33866 v -1.18533 c 0,-0.10583 -0.0212,-0.1905 -0.0212,-0.27516 -0.0212,-0.0847 -0.0423,-0.16934 -0.0635,-0.21167 -0.0423,-0.0423 -0.0847,-0.0847 -0.14817,-0.10583 -0.0423,-0.0423 -0.127,-0.0423 -0.21167,-0.0423 -0.10583,0 -0.21166,0.0212 -0.31749,0.0635 -0.10583,0.0423 -0.21167,0.10583 -0.29633,0.1905 v 1.56632 H 78.0417 v -2.11665 h 0.35983 v 0.254 c 0.10583,-0.10584 0.21166,-0.16934 0.33866,-0.23284 0.127,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.23283,0 0.40217,0.0635 0.52917,0.1905 0.12699,0.14817 0.16933,0.33867 0.16933,0.61383 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path965"
d="m 81.99987,38.008481 c 0,0.1905 -0.0635,0.33867 -0.23283,0.46567 -0.16934,0.127 -0.381,0.19049 -0.65617,0.19049 -0.14816,0 -0.29633,-0.0212 -0.42333,-0.0635 -0.14816,-0.0212 -0.254,-0.0635 -0.33866,-0.127 v -0.38099 h 0.0212 c 0.10583,0.0847 0.23283,0.14816 0.38099,0.1905 0.127,0.0423 0.27517,0.0847 0.381,0.0847 0.16933,0 0.29633,-0.0423 0.381,-0.0847 0.0847,-0.0423 0.127,-0.127 0.127,-0.23284 0,-0.0847 -0.0212,-0.14816 -0.0635,-0.19049 -0.0635,-0.0423 -0.14817,-0.0847 -0.27517,-0.10584 -0.0635,-0.0212 -0.127,-0.0423 -0.21166,-0.0423 -0.0847,-0.0212 -0.14817,-0.0423 -0.21167,-0.0635 -0.19049,-0.0423 -0.31749,-0.10583 -0.40216,-0.21166 -0.0847,-0.0847 -0.10583,-0.21167 -0.10583,-0.33867 0,-0.10583 0,-0.16933 0.0423,-0.25399 0.0423,-0.0847 0.0847,-0.14817 0.16933,-0.21167 0.0635,-0.0635 0.14817,-0.10583 0.27517,-0.127 0.10583,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.127,0 0.25399,0.0212 0.38099,0.0423 0.127,0.0423 0.23284,0.0635 0.3175,0.127 v 0.381 H 81.894 c -0.0847,-0.0847 -0.1905,-0.127 -0.3175,-0.16933 -0.12699,-0.0635 -0.25399,-0.0847 -0.38099,-0.0847 -0.127,0 -0.254,0.0212 -0.33867,0.0847 -0.0847,0.0423 -0.12699,0.127 -0.12699,0.21166 0,0.0847 0.0212,0.16933 0.0847,0.21167 0.0423,0.0423 0.127,0.0635 0.254,0.10583 0.0635,0 0.12699,0.0212 0.21166,0.0423 0.0847,0.0212 0.14817,0.0212 0.21166,0.0423 0.16934,0.0423 0.29634,0.10583 0.381,0.1905 0.0847,0.10583 0.127,0.21166 0.127,0.381 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path967"
d="m 84.37051,37.521651 c 0,0.16933 -0.0212,0.33867 -0.0635,0.48683 -0.0423,0.127 -0.127,0.254 -0.21166,0.35983 -0.0847,0.0847 -0.16933,0.14817 -0.29633,0.21167 -0.10584,0.0423 -0.23283,0.0635 -0.35983,0.0635 -0.10584,0 -0.21167,0 -0.29633,-0.0212 -0.0847,-0.0212 -0.16934,-0.0635 -0.27517,-0.127 v 0.88899 h -0.35983 v -2.89981 h 0.35983 v 0.23283 c 0.10583,-0.0847 0.21167,-0.14816 0.3175,-0.1905 0.127,-0.0635 0.254,-0.0847 0.381,-0.0847 0.25399,0 0.46566,0.0847 0.59266,0.27517 0.14816,0.1905 0.21166,0.46566 0.21166,0.80433 z m -0.35983,0.0212 c 0,-0.254 -0.0423,-0.44449 -0.12699,-0.57149 -0.0847,-0.127 -0.23284,-0.1905 -0.40217,-0.1905 -0.10583,0 -0.21166,0.0212 -0.31749,0.0635 -0.10584,0.0423 -0.1905,0.10583 -0.29634,0.16933 v 1.20649 c 0.10584,0.0423 0.1905,0.0635 0.27517,0.0847 0.0635,0.0212 0.14816,0.0212 0.23283,0.0212 0.21167,0 0.35983,-0.0635 0.46566,-0.1905 0.10584,-0.127 0.16933,-0.33866 0.16933,-0.59266 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path969"
d="m 86.69883,37.585151 h -1.54515 c 0,0.127 0.0212,0.254 0.0635,0.33867 0.0212,0.10583 0.0847,0.1905 0.14816,0.25399 0.0635,0.0423 0.14817,0.10584 0.23283,0.127 0.0847,0.0212 0.1905,0.0423 0.29633,0.0423 0.14817,0 0.29633,-0.0212 0.4445,-0.0847 0.14817,-0.0635 0.254,-0.10583 0.3175,-0.16933 v 0 0.381 c -0.10583,0.0635 -0.23283,0.10583 -0.35983,0.127 -0.127,0.0423 -0.254,0.0635 -0.40217,0.0635 -0.33866,0 -0.61382,-0.10583 -0.80432,-0.29633 -0.21167,-0.1905 -0.29633,-0.4445 -0.29633,-0.80433 0,-0.33866 0.0847,-0.61383 0.27516,-0.82549 0.1905,-0.1905 0.4445,-0.29634 0.74083,-0.29634 0.29633,0 0.50799,0.0847 0.65616,0.254 0.16933,0.14817 0.23283,0.40217 0.23283,0.6985 z m -0.33866,-0.27516 c 0,-0.16933 -0.0423,-0.3175 -0.14817,-0.42333 -0.0847,-0.10583 -0.23283,-0.14817 -0.42333,-0.14817 -0.1905,0 -0.33866,0.0423 -0.44449,0.16933 -0.127,0.10584 -0.1905,0.23284 -0.1905,0.40217 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path971"
d="m 88.81548,38.474151 c -0.127,0.0635 -0.23283,0.10583 -0.33866,0.127 -0.10583,0.0423 -0.23283,0.0635 -0.33867,0.0635 -0.14816,0 -0.29633,-0.0212 -0.42333,-0.0635 -0.127,-0.0635 -0.23283,-0.127 -0.33866,-0.21167 -0.0847,-0.0847 -0.14817,-0.21167 -0.21166,-0.33866 -0.0423,-0.14817 -0.0635,-0.3175 -0.0635,-0.48683 0,-0.35983 0.0847,-0.635 0.27516,-0.8255 0.1905,-0.1905 0.4445,-0.29633 0.76199,-0.29633 0.127,0 0.23284,0.0212 0.35984,0.0635 0.10583,0.0212 0.21166,0.0635 0.31749,0.10583 v 0.40217 h -0.0212 c -0.10583,-0.0847 -0.21166,-0.14817 -0.33866,-0.1905 -0.10584,-0.0423 -0.23283,-0.0635 -0.33867,-0.0635 -0.1905,0 -0.35983,0.0635 -0.48683,0.1905 -0.10583,0.14816 -0.16933,0.33866 -0.16933,0.61383 0,0.25399 0.0635,0.44449 0.16933,0.57149 0.127,0.14817 0.27517,0.21167 0.48683,0.21167 0.0635,0 0.14817,0 0.21167,-0.0212 0.0847,-0.0212 0.14816,-0.0423 0.21166,-0.0847 0.0423,-0.0212 0.10584,-0.0423 0.14817,-0.0847 0.0423,-0.0212 0.0847,-0.0423 0.10583,-0.0635 h 0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path973"
d="m 90.36064,38.601151 c -0.0635,0 -0.127,0.0212 -0.21167,0.0423 -0.0847,0 -0.14816,0 -0.21166,0 -0.21167,0 -0.381,-0.0423 -0.48683,-0.16934 -0.10584,-0.10583 -0.16933,-0.29633 -0.16933,-0.55033 v -1.12182 h -0.23284 v -0.3175 h 0.23284 v -0.59266 h 0.35983 v 0.59266 h 0.71966 v 0.3175 h -0.71966 v 0.95249 c 0,0.10584 0,0.21167 0,0.27517 0,0.0423 0.0212,0.10583 0.0635,0.16933 0.0212,0.0423 0.0635,0.0847 0.10583,0.10583 0.0423,0.0212 0.127,0.0423 0.23283,0.0423 0.0423,0 0.10583,-0.0212 0.16933,-0.0212 0.0635,-0.0212 0.10584,-0.0423 0.14817,-0.0635 v 0 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path975"
d="m 92.60429,37.563991 c 0,0.33866 -0.0847,0.61382 -0.254,0.80432 -0.1905,0.21167 -0.42333,0.29633 -0.71966,0.29633 -0.29633,0 -0.52917,-0.0847 -0.71966,-0.29633 -0.16934,-0.1905 -0.254,-0.46566 -0.254,-0.80432 0,-0.35983 0.0847,-0.635 0.254,-0.8255 0.19049,-0.21166 0.42333,-0.29633 0.71966,-0.29633 0.29633,0 0.52916,0.0847 0.71966,0.29633 0.16933,0.1905 0.254,0.46567 0.254,0.8255 z m -0.35983,0 c 0,-0.27517 -0.0635,-0.48683 -0.16933,-0.61383 -0.10584,-0.14817 -0.254,-0.21167 -0.4445,-0.21167 -0.1905,0 -0.33867,0.0635 -0.4445,0.21167 -0.10583,0.127 -0.16933,0.33866 -0.16933,0.61383 0,0.25399 0.0635,0.46566 0.16933,0.59266 0.10583,0.14816 0.254,0.21166 0.4445,0.21166 0.1905,0 0.33866,-0.0635 0.4445,-0.21166 0.10583,-0.127 0.16933,-0.33867 0.16933,-0.59266 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path977"
d="m 94.48811,36.886661 h -0.0212 c -0.0635,-0.0212 -0.10584,-0.0212 -0.16933,-0.0212 -0.0423,-0.0212 -0.10584,-0.0212 -0.16934,-0.0212 -0.10583,0 -0.21166,0.0212 -0.31749,0.0847 -0.10584,0.0423 -0.1905,0.10583 -0.29633,0.16933 v 1.50282 h -0.35984 v -2.11665 h 0.35984 v 0.3175 c 0.14816,-0.10583 0.27516,-0.1905 0.38099,-0.23283 0.10583,-0.0423 0.21167,-0.0847 0.3175,-0.0847 0.0635,0 0.10583,0.0212 0.14816,0.0212 0.0212,0 0.0635,0 0.127,0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path979"
d="m 114.0883,37.775651 c 0,0.10583 -0.0212,0.23283 -0.0635,0.33867 -0.0635,0.10583 -0.127,0.19049 -0.21167,0.27516 -0.10583,0.0635 -0.23283,0.127 -0.35983,0.16933 -0.14817,0.0635 -0.29633,0.0847 -0.48683,0.0847 -0.21166,0 -0.381,-0.0212 -0.55033,-0.0635 -0.16933,-0.0423 -0.3175,-0.0847 -0.48683,-0.16933 v -0.46566 h 0.0212 c 0.14817,0.10583 0.29633,0.21166 0.48683,0.27516 0.1905,0.0635 0.35983,0.0847 0.52916,0.0847 0.23284,0 0.42333,-0.0423 0.55033,-0.127 0.127,-0.0847 0.1905,-0.1905 0.1905,-0.33866 0,-0.127 -0.0423,-0.23283 -0.0847,-0.27517 -0.0635,-0.0635 -0.16933,-0.10583 -0.29633,-0.14816 -0.0847,-0.0212 -0.1905,-0.0423 -0.29633,-0.0635 -0.10583,-0.0212 -0.23283,-0.0423 -0.35983,-0.0635 -0.254,-0.0423 -0.42333,-0.14817 -0.55033,-0.27517 -0.127,-0.127 -0.1905,-0.29633 -0.1905,-0.48683 0,-0.23283 0.10583,-0.44449 0.3175,-0.59266 0.1905,-0.14816 0.4445,-0.21166 0.74083,-0.21166 0.21166,0 0.38099,0 0.55033,0.0423 0.16933,0.0423 0.31749,0.0847 0.44449,0.14816 v 0.4445 h -0.0212 c -0.10583,-0.0847 -0.254,-0.16933 -0.42333,-0.23283 -0.1905,-0.0635 -0.35983,-0.0847 -0.55033,-0.0847 -0.19049,0 -0.35983,0.0423 -0.48683,0.127 -0.10583,0.0847 -0.16933,0.1905 -0.16933,0.3175 0,0.12699 0.0212,0.21166 0.0847,0.27516 0.0635,0.0635 0.16933,0.127 0.3175,0.14817 0.0847,0.0212 0.1905,0.0423 0.35983,0.0635 0.14816,0.0423 0.27516,0.0635 0.35983,0.0847 0.21166,0.0635 0.381,0.14816 0.48683,0.25399 0.10583,0.10584 0.14817,0.27517 0.14817,0.46567 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path981"
d="m 116.43778,38.579981 h -0.35983 v -1.20649 c 0,-0.0847 0,-0.1905 -0.0212,-0.27517 0,-0.0847 -0.0212,-0.14816 -0.0635,-0.1905 -0.0212,-0.0635 -0.0635,-0.0847 -0.127,-0.12699 -0.0635,-0.0212 -0.127,-0.0212 -0.23283,-0.0212 -0.0847,0 -0.1905,0.0212 -0.29633,0.0635 -0.10584,0.0423 -0.21167,0.10583 -0.3175,0.19049 v 1.56633 h -0.35983 v -2.94215 h 0.35983 v 1.05833 c 0.127,-0.0847 0.23283,-0.14817 0.35983,-0.21167 0.10583,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.23284,0 0.40217,0.0635 0.52917,0.1905 0.10583,0.14817 0.16933,0.33867 0.16933,0.59266 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path983"
d="m 118.76609,38.579981 h -0.35983 v -0.21167 c -0.0212,0.0212 -0.0635,0.0423 -0.127,0.0847 -0.0423,0.0423 -0.10583,0.0635 -0.14816,0.0847 -0.0635,0.0423 -0.127,0.0635 -0.21167,0.0847 -0.0635,0.0212 -0.16933,0.0212 -0.25399,0.0212 -0.1905,0 -0.35984,-0.0635 -0.48684,-0.19049 -0.14816,-0.127 -0.21166,-0.27517 -0.21166,-0.48683 0,-0.14817 0.0423,-0.27517 0.10583,-0.381 0.0635,-0.10583 0.16933,-0.16933 0.29633,-0.23283 0.127,-0.0635 0.27517,-0.10584 0.46567,-0.127 0.16933,-0.0212 0.381,-0.0212 0.57149,-0.0423 v -0.0423 c 0,-0.0847 0,-0.14817 -0.0423,-0.21167 -0.0212,-0.0423 -0.0635,-0.0847 -0.10583,-0.127 -0.0635,-0.0212 -0.127,-0.0423 -0.1905,-0.0635 -0.0635,0 -0.14816,0 -0.21166,0 -0.10583,0 -0.21167,0 -0.3175,0.0423 -0.127,0.0212 -0.23283,0.0423 -0.35983,0.10584 h -0.0212 v -0.381 c 0.0635,0 0.16933,-0.0212 0.29633,-0.0635 0.14816,-0.0212 0.27516,-0.0212 0.40216,-0.0212 0.14817,0 0.27517,0 0.381,0.0423 0.10583,0.0212 0.21166,0.0635 0.29633,0.127 0.0635,0.0423 0.127,0.127 0.16933,0.21166 0.0423,0.10584 0.0635,0.21167 0.0635,0.33867 z m -0.35983,-0.508 v -0.59266 c -0.10583,0 -0.23283,0.0212 -0.38099,0.0212 -0.14817,0.0212 -0.254,0.0423 -0.33867,0.0635 -0.10583,0.0212 -0.1905,0.0635 -0.254,0.127 -0.0635,0.0635 -0.0847,0.14816 -0.0847,0.254 0,0.127 0.0212,0.21166 0.10584,0.27516 0.0635,0.0635 0.1905,0.0847 0.33866,0.0847 0.127,0 0.23283,-0.0212 0.33867,-0.0635 0.10583,-0.0423 0.19049,-0.10583 0.27516,-0.16933 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path985"
d="m 121.32724,37.500491 c 0,0.16933 -0.0212,0.33866 -0.0847,0.46566 -0.0423,0.14817 -0.10583,0.27516 -0.21166,0.35983 -0.0847,0.10583 -0.16933,0.16933 -0.29633,0.23283 -0.10584,0.0423 -0.21167,0.0635 -0.33867,0.0635 -0.127,0 -0.21166,0 -0.3175,-0.0212 -0.0847,-0.0423 -0.16933,-0.0635 -0.25399,-0.127 v 0.889 h -0.35983 v -2.89981 h 0.35983 v 0.23283 c 0.0847,-0.0847 0.1905,-0.14817 0.31749,-0.21167 0.10584,-0.0423 0.23284,-0.0635 0.381,-0.0635 0.254,0 0.4445,0.0847 0.59266,0.27517 0.127,0.1905 0.21167,0.46566 0.21167,0.80433 z m -0.381,0.0212 c 0,-0.27517 -0.0423,-0.46567 -0.127,-0.59267 -0.0847,-0.10583 -0.21166,-0.16933 -0.40216,-0.16933 -0.10583,0 -0.1905,0.0212 -0.29633,0.0635 -0.10583,0.0423 -0.21166,0.0847 -0.29633,0.16933 v 1.2065 c 0.0847,0.0423 0.16933,0.0635 0.254,0.0847 0.0635,0.0212 0.14816,0.0212 0.254,0.0212 0.19049,0 0.33866,-0.0635 0.46566,-0.1905 0.10583,-0.14817 0.14816,-0.33867 0.14816,-0.59267 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path987"
d="m 123.65556,37.563991 h -1.56632 c 0,0.12699 0.0212,0.25399 0.0635,0.33866 0.0423,0.10583 0.0847,0.16933 0.14816,0.23283 0.0847,0.0635 0.14817,0.10583 0.23283,0.14817 0.10583,0.0212 0.1905,0.0423 0.3175,0.0423 0.127,0 0.27517,-0.0212 0.42333,-0.0847 0.14817,-0.0635 0.254,-0.127 0.3175,-0.16933 h 0.0212 v 0.38099 c -0.127,0.0635 -0.254,0.10583 -0.381,0.127 -0.127,0.0423 -0.254,0.0635 -0.381,0.0635 -0.35983,0 -0.635,-0.10583 -0.82549,-0.29633 -0.1905,-0.1905 -0.29633,-0.46566 -0.29633,-0.80433 0,-0.33866 0.0847,-0.61383 0.27516,-0.82549 0.1905,-0.21167 0.4445,-0.29633 0.76199,-0.29633 0.27517,0 0.48684,0.0635 0.65617,0.23283 0.14817,0.16933 0.23283,0.40216 0.23283,0.71966 z m -0.35983,-0.27517 c 0,-0.1905 -0.0423,-0.33866 -0.127,-0.42333 -0.10583,-0.10583 -0.23283,-0.16933 -0.42333,-0.16933 -0.1905,0 -0.35983,0.0635 -0.46567,0.16933 -0.10583,0.127 -0.16933,0.254 -0.19049,0.42333 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path989"
d="m 126.44954,35.764831 -1.03716,2.81515 h -0.50799 l -1.016,-2.81515 h 0.40217 l 0.88899,2.47648 0.88899,-2.47648 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path991"
d="m 127.2327,36.124661 h -0.40216 v -0.38099 h 0.40216 z m -0.0212,2.45532 h -0.35983 v -2.11665 h 0.35983 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path993"
d="m 129.68802,37.563991 h -1.56632 c 0,0.12699 0.0212,0.25399 0.0635,0.33866 0.0423,0.10583 0.0847,0.16933 0.14816,0.23283 0.0847,0.0635 0.14817,0.10583 0.23283,0.14817 0.10583,0.0212 0.1905,0.0423 0.3175,0.0423 0.127,0 0.27516,-0.0212 0.42333,-0.0847 0.14816,-0.0635 0.254,-0.127 0.3175,-0.16933 h 0.0212 v 0.38099 c -0.127,0.0635 -0.254,0.10583 -0.38099,0.127 -0.127,0.0423 -0.254,0.0635 -0.381,0.0635 -0.35983,0 -0.635,-0.10583 -0.82549,-0.29633 -0.1905,-0.1905 -0.29634,-0.46566 -0.29634,-0.80433 0,-0.33866 0.0847,-0.61383 0.27517,-0.82549 0.1905,-0.21167 0.4445,-0.29633 0.76199,-0.29633 0.27517,0 0.48683,0.0635 0.65616,0.23283 0.14817,0.16933 0.23284,0.40216 0.23284,0.71966 z m -0.35984,-0.27517 c 0,-0.1905 -0.0423,-0.33866 -0.12699,-0.42333 -0.10584,-0.10583 -0.23284,-0.16933 -0.42333,-0.16933 -0.1905,0 -0.35983,0.0635 -0.46567,0.16933 -0.10583,0.127 -0.16933,0.254 -0.19049,0.42333 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path995"
d="m 132.88416,36.463331 -0.55033,2.11665 h -0.33866 l -0.52917,-1.62982 -0.55033,1.62982 h -0.31749 l -0.5715,-2.11665 h 0.381 l 0.38099,1.65099 0.52917,-1.65099 h 0.29633 l 0.55033,1.65099 0.35983,-1.65099 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path997"
d="M 42.608991,62.752131 H 181.82113 V 118.33539 H 42.608991 Z"
style="fill:none;stroke:#ff9933;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path999"
d="M 35.666376,55.280361 H 174.89968 V 110.86361 H 35.666376 Z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#33cccc;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path1001"
d="M 28.744927,47.808581 H 167.97823 V 103.39183 H 28.744927 Z"
style="fill:#9bbb59;fill-opacity:1;fill-rule:nonzero;stroke:#77933c;stroke-width:0.52916667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1,200 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36458mm"
height="99.483337mm"
viewBox="0 0 165.36458 99.483337"
version="1.1"
id="svg3064"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="vinspector_elements.svg">
<defs
id="defs3058" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="261.33464"
inkscape:cy="225.25011"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="false"
inkscape:window-width="1277"
inkscape:window-height="875"
inkscape:window-x="314"
inkscape:window-y="16"
inkscape:window-maximized="0" />
<metadata
id="metadata3061">
<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(201.36682,-127.81786)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147-0"
width="164.83542"
height="98.95417"
x="-201.10223"
y="128.08244"
inkscape:export-filename="D:\OCCT\master_CR27398_doc\dox\user_guides\qt_browsers\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157-8"
width="155.951"
height="20.214758"
x="-197.10306"
y="132.31981"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-9"
width="155.55411"
height="39.471096"
x="-197.06837"
y="157.2328"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-6"
width="109.47361"
height="11.118413"
x="-155.47618"
y="136.86798"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-6"
width="30.417513"
height="11.316654"
x="-192.77927"
y="136.76886"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-184.57181"
y="143.51102"
id="text5675-9"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-2"
x="-184.57181"
y="143.51102"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Update</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-118.07398"
y="143.87196"
id="text5683-7"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-7"
x="-118.07398"
y="143.87196"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Selection controls</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-4"
width="79.254326"
height="23.947351"
x="-158.91849"
y="164.99469"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-143.42757"
y="176.27301"
id="text5683-5-4"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-59"
x="-143.42757"
y="176.27301"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Presentations tree view</tspan></text>
<rect
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157-8-7"
width="155.951"
height="20.214758"
x="-196.94507"
y="202.23282"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-6-6"
width="147.01831"
height="11.316654"
x="-192.62131"
y="206.68187"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-132.50854"
y="210.87439"
id="text5683-5-4-1"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-59-8"
x="-132.50854"
y="210.87439"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">History view</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -0,0 +1,578 @@
Inspector {#occt_user_guides__inspector}
===============================
@tableofcontents
@section occt_inspector_1 Introduction
This manual explains how to use Inspector.
@subsection occt_inspector_1_1 Overview
Inspector is a Qt-based library that provides functionality to interactively inspect low-level content of the OCAF data model, OCCT viewer and Modelisation Data.
This component is aimed to assist the developers of OCCT-based applications to debug the problematic situations that occur in their applications.
Inspector has a plugin-oriented architecture. The current release contains the following plugins:
| Plugin | OCCT component | Root class of OCCT investigated component |
| :----- | :----- | :----- |
| @ref occt_inspector_2_2 "DFBrowser"| OCAF | TDocStd_Application |
| @ref occt_inspector_2_3 "VInspector"| Visualization | AIS_InteractiveContext |
| @ref occt_inspector_2_4 "ShapeView"| Modelisation Data | TopoDS_Shape |
Each plugin implements logic of a corresponding OCCT component.
Each of the listed plugins is embeded in the common framework.
The user is able to manage which plugins should be loaded by Inspector.
Also he can extend number of plugins by implementing a new plugin.
@subsection occt_inspector_1_3 Getting started
There are two launch modes:
1. Launch **TInspectorEXE** executable sample. For more details see @ref occt_inspector_6 "TInspectorEXE" section;
2. Launch DRAW, load plugin INSPECTOR, and use **tinspector** command.
For more details see @ref occt_inspector_7 "Launch in DRAW Test Harness" section.
Note. If you have no Inspector library in your build directory, please make sure that OCCT is compiled with *BUILD_Inspector*
option ON. For more details see @ref occt_inspector_4 "Build procedure".
@section occt_inspector_2 Inspector
@subsection occt_inspector_2_1 Overview
Inspector consists of the following components:
* <b>buttons</b> to activate the corresponding plugin;
* <b>view area</b> to visualize the plugin content.
@figure{tinspector_elements.svg,"Plugins placement in Inspector",360}
@subsection occt_inspector_2_2 DFBrowser Plugin
@subsubsection occt_inspector_2_2_1 Overview
@figure{dfbrowser.png, "DFBrowser"}
This plugin visualizes content of TDocStd_Application in a tree view. It shows documents of the application,
hierarchy of TDF_Labels, content of TDF_Attributes and interconnection between attributes (e.g. references).
Additionally it has 3D view to visualize TopoDS_Shape elements stored in the document.
@subsubsection occt_inspector_2_2_2 Elements
@figure{dfbrowser_elements.svg, "DFBrowser Elements",360}
<b>OCAF tree view</b>
Each OCAF element has own tree view item:
| Type | Tree item | Text | Description |
| :----- | :----- | :----- | :----- |
| TDocStd_Application | Application | TDocStd_Application | It is the root of tree view. Children are documents.|
| TDocStd_Document | Document | entry : name | It is a child of Application item. Children are Labels and Attributes items.<br> Text view is an entry of the root label and the value of TDataStd_Name attribute for the label if it exists. |
| TDF_Label | Label | entry : name | It is a child of a Document or another Label item. Children and text view are the same as for Document item. |
| TDF_Attribute | Attribute | attribute type [additional information] | It is a child of a Label. It has no children. <br> Text view is the attribute type (DynamicType()->Name() of TDF_Attribute) and additional information (a combination of attribute values) |
Additional information of TDF_Attributes:
| Type | Text |
| :----- | :----- |
| TDocStd_Owner | [storage format] |
| TDataStd_AsciiString,<br> TDataStd_Name,<br> TDataStd_Real,<br> @ref occt_attribute_simple_types "other Simple types" | [value] |
| TDataStd_BooleanList,<br> TDataStd_ExtStringList,<br> @ref occt_attribute_list_types "other List types" | [value_1 ... value_n] |
| TDataStd_BooleanArray,<br> TDataStd_ByteArray,<br> @ref occt_attribute_array_types "other Array types" | [value_1 ... value_n] |
| TDataStd_TreeNode | [tree node ID ==> Father()->Label()] (if it has father) or <br> [tree node ID <== First()->Label()] (if it has NO father)|
| TDataStd_TreeNode(XDE) | [@ref occt_attribute_xde_tree_node_id "XDE tree node ID" ==> Father()->Label()] (if it has father), <br> [@ref occt_attribute_xde_tree_node_id "XDE tree Node ID" <== label_1, ..., label_n] (if it has NO father)|
| TNaming_NamedShape | [shape type : evolution] |
| TNaming_UsedShapes | [map extent] |
Custom color of items:
| OCAF element Type | Color |
| :----- | :----- |
| TDF_Label | <b>dark green</b>, if the label has TDataStd_Name attribute, <br><b>light grey</b> if the label is empty (has no attributes on all levels of hierarchy),<br> <b>black</b> otherwise |
| TNaming_NamedShape | <b>dark gray</b> for TopAbs_FORWARD orientation of TopoDS_Shape, <br> <b>gray</b> for TopAbs_REVERSED orientation of TopoDS_Shape, <br> <b>black</b> for other orientation |
Context popup menu:
| Action | Functionality |
| :----- | :----- |
| Expand | Expands the next two levels under the selected item |
| Expand All | Expands the whole tree of the selected item |
| Collapse All | Collapses the whole tree of the selected item |
<b>Property Panel</b>
Property panel is used to display content of Label or Attribute tree view items.
This control is used for content of Label or Attribute tree view items or Search result view.
Information is usually shown in one or several tables.
TDF_Attribute has the following content in Property Panel:
<table>
<tr><th>Type</th><th>Description</th><th>Content</th></tr>
<tr><td>TDF_Label</td>
<td> a table of [entry or attribute name, value]</td>
<td>@figure{property_panel_label.png, "",140}</td></tr>
<tr><td>TDocStd_Owner,<br> @ref occt_attribute_simple_types "Simple types", <br> @ref occt_attribute_list_types "List types"</td>
<td>a table of [method name, value]</td>
<td>@figure{property_panel_simple_type.png, "",140}</td></tr>
<tr><td>TDataStd_BooleanArray,<br> TDataStd_ByteArray,<br> @ref occt_attribute_array_types "other Array types"</td>
<td>2 controls: <br> * a table of [array bound, value], <br> * table of [method name, value]</td>
<td>@figure{property_panel_array.png, "",140}</td></tr>
<tr><td>TDataStd_TreeNode</td>
<td>2 controls: <br> * a table of [Tree ID, value] (visible only if Tree ID() != ID()), <br> * a tree view of tree nodes starting from Root() of the tree node. The current tree node has <b>dark blue</b> text.</td>
<td>@figure{property_panel_tree_node.png, "",140} </td></tr>
<tr><td>TDataStd_NamedData</td>
<td>tab bar of attribute elements, each tab has a table of [name, value]</td>
<td>@figure{property_panel_named_data.png, "",140}</td></tr>
<tr><td>TNaming_UsedShapes</td>
<td>a table of all the shapes handled by the framework</td>
<td>@figure{property_panel_tnaming_used_shapes.png, "",140}</td></tr>
<tr><td>TNaming_NamedShape</td>
<td>2 controls: <br> * a table of [method name, value] including CurrentShape/OriginalShape methods result of TNaming_Tools, <br> * an evolution table. <br> Tables contain buttons for @ref occt_shape_export "TopoDS_Shape export".</td>
<td>@figure{property_panel_tnaming_named_shape.png, "",140}</td></tr>
<tr><td>TNaming_Naming</td>
<td>2 controls: <br> * a table of TNaming_Name vlaues,<br> * a table of [method name, value]</td>
<td>@figure{property_panel_tnaming_naming.png, "",140}</td></tr>
</table>
<b>Dump view</b>
@figure{dump_attribute.png, "Dump of TDF_Attribute"}
Dump view shows result of <b>TDF_Attribute::Dump()</b> or <b>TDF_Label::Dump()</b> of selected tree view item.
<b>3D view</b>
3D View visualizes TopoDS_Shape elements of OCAF attribute via AIS facilities.
DFBrowser creates two kinds presentations depending on the selection place:
<table>
<tr><th>Kind</th><th>Source object</th><th>Visualization propeties</th><th>View</th></tr>
<tr><td>Main presentation</td>
<td>Tree view item:<br> TPrsStd_AISPresentation,<br> TNaming_NamedShape,<br> TNaming_Naming</td>
<td>Color: a default color for shape type of the current TopoDS_Shape</td>
<td>@figure{display_main_presentation.png, "",100}</td></tr>
<tr><td>Additional presentation</td>
<td>References in Property panel</td>
<td>Color: white</td>
<td>@figure{display_additional_presentation.png, "",100}</td></tr>
</table>
<b>Tree Navigation</b>
Tree Navigation shows a path to the item selected in the tree view.
The path is a sequence of label entries and attribute type name.
Each element in the path is selectable - the user can click on it to select the corresponding tree view item.
Navigation control has buttons to go to the previous and the next selected tree view items.
<b>Update Button</b>
Update button synchronizes content of tree view to the current content of OCAF document that could be modified outside.
<b>Search</b>
The user can search OCAF element by typing:
* TDF_Label entry,
* TDF_Attribute name,
* TDataStd_Name and TDataStd_Comment attributes value.
@figure{search.png,"Search"}
As soon as the user confirms the typed criteria, the Property panel is filled by all satisfied values.
The user can click a value to hightligt the corresponding tree view item. By double click the item will be selected.
@subsubsection occt_inspector_2_2_3 Elements cooperation
<b>Tree item selection</b>
Selection of tree view item updates content of the following controls:
* Navigation line
* Property Panel
* 3D View (if it is possible to create an interactive presentation)
* Dump View
@figure{dfbrowser_selection_in_tree_view.svg,"",360}
<b>Property Panel item selection </b>
If property panel shows content of TDF_Label:
* selection of the table row hightlights the corresponding item in tree view,
* double click on the table row selects this item in tree view.
If property panel shows content of TDF_Attribute that has reference to another attribute, selection of this reference:
* highlights the referenced item in TreeView,
* displays additional presentation in 3D view if it can be created.
@figure{property_panel_item_selection.svg,"",360}
Attributes having references:
| Type | Reference | Additional presentation
| :----- | :----- | :----- |
| TDF_Reference | TDF_Label | |
| TDataStd_ReferenceArray, <br> TDataStd_ReferenceList, <br> TNaming_Naming | one or several TDF_Label in a container | |
| TDataStd_TreeNode | TDF_Label | |
| TNaming_NamedShape | TDF_Label in Evolution table | selected TopoDS_Shapes in property panel tables |
| TNaming_UsedShapes | one or several TNaming_NamedShape | TopoDS_Shapes of selected TNaming_NamedShape |
@subsubsection occt_shape_export TopoDS_Shape export
Property panel of TNaming_NamedShape attribute has controls to export TopoDS_Shape to:
* BREP. The save file dialog is started to enter the result file name,
* @ref occt_inspector_2_4 "ShapeView" plugin. Dialog about exporting element to ShapeView is shown with a possibility to activate this plugin immediatelly.
@subsection occt_inspector_2_3 VInspector Plugin
@subsubsection occt_inspector_2_3_1 Overview
@figure{vinspector.png, "VInspector"}
It visualizes interactive objects displayed in AIS_InteractiveContext in a tree view with columputed selection
components for each presentation. It shows the selected elements in the context and allows to select these elements.
@subsubsection occt_inspector_2_3_2 Elements
@figure{vinspector_elements.svg,"VInspector Elements",360}
<b>Presentations tree view</b>
It shows presentations and selection computed of them. Also, the view has columns with information about state of visualization elements.
VInspector tree items.
| Type | Description |
| :----- | :----- |
| AIS_InteractiveContext | It is the root of tree view. Children are interactive objects obtained by *DisplayedObjects* and *ErasedObjects* methods.|
| AIS_InteractiveObject | It is a child of AIS_InteractiveContext item. Children are SelectMgr_Selection obtained by iteration on *CurrentSelection* |
| SelectMgr_Selection | It is a child of AIS_InteractiveObject. Children are SelectMgr_SensitiveEntity obtaining by iteration on *Sensitive* |
| SelectMgr_SensitiveEntity | It is a child of SelectMgr_Selection. Children are SelectMgr_SensitiveEntity obtaining by iteration on *OwnerId* |
| SelectBasics_EntityOwner | It is a child SelectMgr_SensitiveEntity. It has no children. |
Custom color of tree view items:
| OCAF element Type | Column | What | Color |
| :----- | :----- | :----- | :----- |
| AIS_InteractiveObject | 0 | Text | <b>dark gray</b>, it is in *ErasedObjects* list of AIS_InteractiveContext,<br> <b>black</b> otherwise |
| AIS_InteractiveObject, <br> SelectMgr_SensitiveEntity, <br> SelectBasics_EntityOwner| 1 | Background | <b>dark blue</b>, if there is a selected owner under the item, <br> <b>black</b> otherwise |
| SelectMgr_Selection,<br> SelectMgr_SensitiveEntity,<br> SelectBasics_EntityOwner| all | Text | <b>dark gray</b>, if *SelectionState* of SelectMgr_Selection is not *SelectMgr_SOS_Activated*,<br> <b>black</b> otherwise |
Context popup menu in tree view:
| Action | Item | Functionality |
| :----- | :----- | :----- |
| Export to ShapeView | AIS_InteractiveObject | Exports TopoDS_Shape of AIS_Interactive presentation to ShapeView plugin. <br> It should be AIS_Shape presentation and ShapeView plugin should be registered in Inspector<br> Dialog about exporting element to ShapeView is shown with a possibility to activate this plugin immediatelly. |
| Show | AIS_InteractiveObject | *Display* presentation in AIS_InteractiveContext |
| Hide | AIS_InteractiveObject | *Erase* presentation from AIS_InteractiveContext |
<b>Update</b>
It synchronizes content of the plugin to the current state of AIS_InteractiveContext.
It updates the presence of items and the current selection for the items.
<b>Selection controls</b>
Selection controls switch on/off the posibility to set selection in the context from VInspector plugin.
| Action | Tree view item | Functionality |
| :----- | :----- | :----- |
| Select Presentations | AIS_InteractiveObject | Calls *AddOrRemoveSelected* of interactive object for the selected item |
| Select Owners | SelectMgr_EntityOwner or <br> SelectMgr_SensitiveEntity | Calls *AddOrRemoveSelected* of SelectMgr_EntityOwner for the selected item |
Please note, that the initial selection in context will be cleared.
If the button is toggled, the button selection is active. Only one button may be toggled at the moment.
<b>History view</b>
At present the History view is under implementation and may be used only in a custom application where Inspector is loaded.
To fill this view, VInspectorAPI_CallBack should be redefined in the application and send signals about some actions applyed to context.
After, the call back should be given as parameter in the plugin.
If done, new items will be created in the history view for each action.
@subsubsection occt_inspector_2_3_3 Elements cooperation
Vinspector markes current selected presentations in AIS_InteractiveContext with blue background in tree items. Use "Update" button to synchronize VInspector selected items state to the context.
It is also possible to perform selection in context using "Selection controls" VInspector. However, it should be performed carefully as
it clears the current selection in AIS_InteractiveContext.
Selection change:
| From | To | Action | Result |
| :----- | :----- | :----- | :----- |
| AIS_InteractiveContext | VInspector | perform selection in AIS_InteractiveContext | Click "Update" button in VInspector and check "Selection" column: <br> AIS_InteractiveContext item has anount of selected objects,<br> some of AIS_InteractiveObject have filled value if it selection happens for this presentation or entity owner of it |
| VInspector | AIS_InteractiveContext | activate one of Selection controls and select one or several elements in tree view | The objects become selected in AIS_InteractiveContext |
@subsection occt_inspector_2_4 ShapeView Plugin
@subsubsection occt_inspector_2_4_1 Overview
@figure{shapeview.png, "ShapeView"}
This plugin visualizes content of TopoDS_Shape in a tree view.
@subsubsection occt_inspector_2_4_2 Elements
@figure{shapeview_elements.svg,"ShapeView Elements",360}
<b>TopoDS_Shape View</b>
Elements of the view are TopoDS_Shape objects.
This shape is exploded into sub-shapes using TopoDS_Iterator of the TopoDS_Shape.
Child sub-shapes are presented in the view as children of the initial shape.
Iterating recursively by all shapes we obtain a tree view of items shown in the ShapeView.
Columns of the View show some information about TopoDS_Shape of the item.
The most informative column is the last column of TopoDS_Vertex and TopoDS_Edge shape types.
For TopoDS_Vertex it contains the point coordinates,
for TopoDS_Edge it contains the first and the last point coordinates, the edge length and some other parameters.
Context popup menu in tree view:
| Action | Functionality |
| :----- | :----- |
| Load BREP file | Opens selected file and appends the result TopoDS_Shape into tree view |
| Remove all shape items | Clears tree view |
| BREP view | Shows text view with BREP content of the selected item. It creates BREP file in temporary directory of the plugin. |
| Close All BREP views | Closes all opened text views |
| BREP directory | Displays folder where temporary BREP files have been stored. |
@subsubsection occt_inspector_2_4_3 Elements cooperation
Selection of one or several items in TopoDS_Shape View creates AIS_Shape presentation for it and displays it in the 3D View.
@section occt_inspector_3 Common controls
@subsection occt_inspector_3_1 3D View
@subsubsection occt_inspector_3_1_1 Overview
@figure{3DView.png, "3D View"}
Control for OCCT 3D viewer. It creates visualization view components with possibilities to perform some
user actions for the view.
@subsubsection occt_inspector_3_1_2 Elements
@figure{3DView_elements.svg,"3DView Elements"}
3D View contains:
| Element | Functionality |
| :----- | :----- |
| 3D view | V3d viewer with mouse events processing |
| Context | choice of another context that should be used in the plugin. <br> It is possible to use the next contexts:<br> Own - context of this view, <br> External - context come in parameters which intializes plugin, <br> None - do not perform visualization at all |
| Multi/Single | Buttons defined what to do with the previous displayed objects: <br> Multi displays new presentations in additional to already displayed, <br> Single removes all previuos displayed presentations |
| Clean | Removes all displayed presentations |
| Fit All,<br> Fit Area,<br> Zoom,<br> Pan,<br> Rotation | Scene manipulation actions |
| Display Mode | Sets *AIS_Shading* or *AIS_WireFrame* display mode for all presentations |
@section occt_inspector_6 TInspectorEXE sample
Inspector functionality can be tried using this sample.
Use *inspector.bat* script file placed in binary directory of OCCT to launch it.
This script accepts the names of plugin's DLL that should be loaded. By default it loads all described above plugins.
@figure{TStandaloneEXE.png, "TStandaloneEXE"}
Click on the Open button shows the dialog to select a file. The user is able to select one of the sample files or load own one.
@figure{TStandaloneEXE_open.png, ""}
Depending on the active plugin, the following files should be selected in the dialog:
OCAF document or STEP files for DFBRowser and BREP files for VInspector and ShapeView plugins.
It is possible to click the file name in the proposed directory, enter it manually or using Browser button.
The last Loading icon becomes enabled if file name is correct.
By default TInspectorEXE opens the next files for plugins:
| Plugin DLL library name | Files |
| :----- | :----- |
| TKDFBrowser | step/screw.step |
| TKVInspector | occ/hammer.brep |
| TKShapeView | occ/face1.brep, <br> occ/face2.brep |
These files are found relatively *CSF_OCCTDataPath*.
Source code of TIspectorEXE is a good sample for @ref occt_inspector_8 "Using Inspector in a custom application".
@section occt_inspector_7 Launch in DRAW Test Harness
TKToolsDraw plugin is created to provide DRAW commands for Qt tools. Use INSPECTOR parameter of @ref occt_draw_1_3_3 "pload"
command to download commands of this library. It contains tinspector command to start Inspector under DRAW.
See more detailed description of the @ref occt_draw_13_1 "tinspector" command.
The simple code to start Inspector with all plugins loaded:
~~~~~
pload INSPECTOR
tinspector
~~~~~
@figure{drawexe_tinspector.png,"tinspector"}
Result of this command is the next:
- all available Plugins are presented in the Inspector. These are @ref occt_inspector_2_2 "DFBrowser", @ref occt_inspector_2_3 "VInspector" and @ref occt_inspector_2_4 "ShapeView".
- DFBrowser is an active plugin
- tree of OCAF is empty.
After, we should create objects in DRAW and update tinspector.
@section occt_inspector_8 Using in a custom application
To use Inspector in an application, the next steps should be done:
* Set dependencies to OCCT and Qt in application (Header and Link)
* Create an instance of TInspector_Communicator.
* Register plugins of interest in the communicator by DLL library name
* Initialize communicator with objects that will be investigated
* Set visible true for commumicator
C++ code is similar:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
#include <inspector/TInspector_Communicator.hxx>
static TInspector_Communicator* MyTCommunicator;
void CreateInspector()
{
NCollection_List<Handle(Standard_Transient)> aParameters;
//... append parameters in the list
if (!MyTCommunicator)
{
MyTCommunicator = new TInspector_Communicator();
MyTCommunicator->RegisterPlugin ("TKDFBrowser");
MyTCommunicator->RegisterPlugin ("TKVInspector");
MyTCommunicator->RegisterPlugin ("TKShapeView");
MyTCommunicator->Init (aParameters);
MyTCommunicator->Activate ("TKDFBrowser");
}
MyTCommunicator->SetVisible (true);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Plugin | to be initialized by |
| :----- | :----- |
| TKDFBrowser | TDocStd_Application |
| TKVInspector | AIS_InteractiveContext |
| TKShapeView | TopoDS_TShape |
@section occt_inspector_4 Build procedure
By default the Inspector compilation is off.
To compile it, set the <b>BUILD_Inspector</b> flag to "ON". See @ref build_cmake_conf "Configuration process".
When this option is switched On, MS Visual Studio project has an additional tree of folders:
@figure{VStudio_projects.png,"Inspector packages in MS Visual Studio"}
@section occt_inspector_5 Sources and packaging
OCCT sources are extended by the /tools directory.
Distribution of packages participated in plugins:
| Sources packages| Plugin |
| :----- | :----- |
| DFBrowser, <br> DFBrowserPane, <br> DFBrowserPaneXDE, <br> TKDFBrowser | DFBrowser |
| VInspector, <br> TKVInspector | VInspector |
| ShapeView, <br> TKShapeView | ShapeView |
Other packages:
| Sources packages| Used in |
| :----- | :----- |
| TInspectorAPI, <br> TKInspectorAPI | Iterface for connection to plugin. |
| TreeModel, <br> TKTreeView | Items-oriented model to simplify work with GUI tree control. |
| View, <br> TKView | 3D View component |
| TInspector, <br> TKTInspector | Inspector window where plugins are placed |
| ToolsDraw, <br> TKToolsDraw | Plugin for DRAW to start Inspector |
In MSVC studio the separate folder contains Inspector projects.
@section occt_inspector_9 Glossary
* **Component** -- OCCT part, e.g. OCAF, VISUALIZATION, MODELING and others.
* **Plugin** -- library that is loaded in some executable/library. Here, the plugins are:
* DFBrowser,
* ShapeView,
* VInspector.
@subsection occt_attribute_simple_types TDF_Attribute Simple types
Types where the content is a single value
| Type | Kind of value |
| :----- | :----- |
| TDataStd_AsciiString | TDataStd_AsciiString |
| TDataStd_Comment | TCollection_ExtendedString |
| TDataStd_Integer | Standard_Integer |
| TDataStd_Name | TCollection_ExtendedString |
| TDataStd_Real | Standard_Real |
| TDF_Reference | TDF_Label |
| TDF_TagSource | Standard_Integer |
@subsection occt_attribute_list_types TDF_Attribute List types
| Type | Kind of value (container of) |
| :----- | :----- |
| TDataStd_BooleanList | Standard_Boolean |
| TDataStd_ExtStringList | TCollection_ExtendedString |
| TDataStd_IntegerList | Standard_Integer |
| TDataStd_RealList | Standard_Real |
| TDataStd_ReferenceList | TDF_Label |
@subsection occt_attribute_array_types TDF_Attribute Array types
| Type | Kind of value (container of) |
| :----- | :----- |
| TDataStd_BooleanArray | Standard_Boolean |
| TDataStd_ByteArray | Standard_Byte |
| TDataStd_ExtStringArray | TCollection_ExtendedString |
| TDataStd_IntegerArray | Standard_Integer |
| TDataStd_RealArray | Standard_Real |
| TDataStd_ReferenceArray | TDF_Label |
@subsection occt_attribute_xde_tree_node_id XDE tree node ID description
| GUID | Text |
| :----- | :----- |
| XCAFDoc::ShapeRefGUID() | Shape Instance Link |
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorGen) | Generic Color Link |
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorSurf) | Surface Color Link |
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorCurv) | Curve Color Link |
| XCAFDoc::DimTolRefGUID() | DGT Link |
| XCAFDoc::DatumRefGUID() | Datum Link |
| XCAFDoc::MaterialRefGUID() | Material Link |

View File

@ -17,4 +17,5 @@ OCCT User Guides are organized by OCCT modules:
* @subpage occt_user_guides__xde "Extended Data Exchange (XDE)"
* @subpage occt_user_guides__ocaf "Open CASCADE Application Framework (OCAF)"
* @subpage occt_user_guides__tobj "TObj package"
* @subpage occt_user_guides__test_harness "DRAW Test Harness"
* @subpage occt_user_guides__test_harness "DRAW Test Harness"
* @subpage occt_user_guides__inspector "Inspector"

View File

@ -101,7 +101,7 @@ set (BUILD_TOOLKITS
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all header files into ${CMAKE_BINARY_DIR}/inc ...")
# collect all the headers to <binary dir>/inc folder
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}" "${CASROOT_SOURCE_FILES}/tools" "${INSTALL_DIR_INCLUDE}")
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}" "${CASROOT_SOURCE_FILES}/tools" "${INSTALL_DIR_INCLUDE}/inspector")
OCCT_INCLUDE_CMAKE_FILE_STANDALONE ("adm/cmake/standalone_macros")
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt_macro")

View File

@ -1,53 +1,23 @@
pload DCAF
pload VISUALIZATION
pload INSPECTOR
pload DCAF VISUALIZATION INSPECTOR
chrono qat start
# Create a new document and set UndoLimit
NewDocument D BinOcaf
tinspector -plugins dfbrowser
#NewDocument D
cpulimit 300
UndoLimit D 100
# Open a transaction
NewCommand D
#1 - create box using more flexible set of commands
NewCommand D
# add object
set B2 [AddObject D]
# add function
set F2 [AddFunction D $B2 Box]
# set argumets of this function
BoxDX D $B2 190
BoxDY D $B2 290
BoxDZ D $B2 390
# initialize (clean) internal maps of labels
InitLogBook D
AddDriver D Box Attach Cyl
# compute the function
ComputeFun D $F2
# check result
set IsDone [catch {GetShape D $F2:2 Box2} aResult]
if { ${IsDone} != 0 } {
puts "Error: Get a value of TNaming_NamedShape attribute from restoring document"
} else {
puts "OK: Value of TNaming_NamedShape attribute from restoring document was got"
}
if { [regexp "SOLID FORWARD" [whatis Box2] ] != 1 } {
puts "Error: Box2 is not a solid forward"
} else {
puts "OK: Box2 is a solid forward"
}
# referes to result NS
GetReference D $B2;
tinspector -update
vinit
vdisplay Box2
vfit
checkview -screenshot -3d -path ${imagedir}/${test_image}.png

2
tests/tools/dfbrowser/A3 Normal file
View File

@ -0,0 +1,2 @@
pload INSPECTOR
tinspector -plugins dfbrowser -open $env(CSF_OCCTDataPath)/step/screw.step -select 0:1:1:1

150
tests/tools/dfbrowser/A4 Normal file
View File

@ -0,0 +1,150 @@
pload DCAF INSPECTOR TOPTEST
# Create the first document and set UndoLimit
NewDocument Doc1 BinOcaf
UndoLimit Doc1 100
# Add an attribute to a data framework
set aSetAttr1 100
set aLabel 0:2
SetInteger Doc1 ${aLabel} ${aSetAttr1}
# Create the second document
set test_name "OCC26961"
set test_int 123
set test_real 123.456e-7
set test_int_arr {10 20}
set test_real_arr {1.1 3.14 5.4e18}
set test_extstr_arr {"sample string 1" "string 2"}
set test_bool_arr {0 1}
set test_ref_arr {"0:1:2:3:2" "0:1:2:3:1"}
set test_byte_arr {15 25}
set test_map {1 5 2 10}
set test_map_sorted {1 2 5 10}
set test_named_ints {i1 1 i2 2}
set test_named_reals {r1 1.1 r2 2.2}
set test_named_strings {s1 string1 s2 string2 s3 string3_string_extended s4 string4_double_extended s5 string5}
set test_named_bytes {b1 65 b2 66}
set test_ref "0:1:1"
set test_guid "00000000-0000-0000-2222-000000000000"
set test_comment "Sample document containing various attributes"
set test_string "Sample string"
set test_expr "2*pi*r"
set test_var1 "0:1:2:3:2"
set test_var2 "0:1:2:3:1"
set test_point "111 222 333"
set test_axisPos "10 10 30"
set test_axisDir "11 22 33"
set test_plane "15 25 35"
set test_boxXYZ "10 20 30"
set test_boxDX 100
set test_boxDY 200
set test_boxDZ 300
set test_geom_t "cir"
set test_failure 1
set test_driver "G"
set test_driver_id "2a96b604-ec8b-11d0-bee7-080009dc3333"
set test_transp 0.5
set test_color 11
set test_material 22
set test_positionX 100
set test_positionY 200
set test_positionZ 300
puts "Creating document"
NewDocument D BinOcaf
# Simple values
SetInteger D 0:1:1 $test_int
SetReal D 0:1:1 $test_real
SetName D 0:1:1 $test_name
SetComment D 0:1:1 $test_comment
SetAsciiString D 0:1:1 $test_string
# TagSource
SetTagger D 0:1:2
# Reference
SetReference D 0:1:3 $test_ref
# Directory
#NewDirectory D 0:1:2:1
# UAttribute
#SetUAttribute D 0:1:2:2 $test_guid
# Variable
SetVariable D $test_var2 0 mm
SetVariable D $test_var1 1 ""
# Relation
SetRelation D 0:1:2:3 "2*pi*r" $test_var1 $test_var2
# TreeNode
SetNode D 0:1:2:4
# Arrays
eval SetIntArray D 0:1:1 1 1 2 $test_int_arr
eval SetRealArray D 0:1:1 1 1 3 $test_real_arr
eval SetExtStringArray D 0:1:1 1 1 2 $test_extstr_arr
eval SetRefArray D 0:1:1 1 2 $test_ref_arr
eval SetByteArray D 0:1:1 1 1 2 $test_byte_arr
# Lists
eval SetIntegerList D 0:1:1 $test_int_arr
eval SetRealList D 0:1:1 $test_real_arr
eval SetExtStringList D 0:1:1 $test_extstr_arr
eval SetBooleanList D 0:1:1 $test_bool_arr
eval SetReferenceList D 0:1:1 $test_ref_arr
# IntPackedMap
eval SetIntPackedMap D 0:1:1 1 $test_map
# NamedData
eval SetNDataIntegers D 0:1:4 2 $test_named_ints
eval SetNDataReals D 0:1:4 2 $test_named_reals
eval SetNDataStrings D 0:1:4 5 $test_named_strings
eval SetNDataBytes D 0:1:4 2 $test_named_bytes
eval SetNDataIntArrays D 0:1:4 ia 2 $test_int_arr
eval SetNDataRealArrays D 0:1:4 ra 3 $test_real_arr
# NamedShape
eval box Box $test_boxXYZ $test_boxDX $test_boxDY $test_boxDZ
SetShape D 0:1:6 Box
# Point
eval point Point $test_point
SetPoint D 0:1:5:1 Point
# Axis
eval line Axis $test_axisPos $test_axisDir
SetAxis D 0:1:5:2 Axis
# Plane
eval plane Plane $test_plane
SetPlane D 0:1:5:3 Plane
# Geometry
SetGeometry D 0:1:6 $test_geom_t
# Constraint
SetConstraint D 0:1:1 equal 0:1:6
# PatternStd
SetPattern D 0:1:1 5 0:1:6
# Function
SetFunction D 0:1:1 $test_guid $test_failure
# AISPresentation
AISInitViewer D
AISSet D 0:1:1 $test_driver
AISTransparency D 0:1:1 $test_transp
AISColor D 0:1:1 $test_color
AISMaterial D 0:1:1 $test_material
# Position
SetPosition D 0:1:1 $test_positionX $test_positionY $test_positionZ
tinspector -plugins dfbrowser

78
tests/tools/dfbrowser/A5 Normal file
View File

@ -0,0 +1,78 @@
pload TOPTEST
pload VISUALIZATION
pload XDE
pload QAcommands
pload DCAF
set Test "TNaming_Builder test"
set IsDone 1
set TestError ""
puts "Creating document"
NewDocument D MDTV-Standard
set TestLab 0:1
#################### PRIMITIVE EVOLUTION ####################
box b 100 200 300
explode b E
if {[catch {BuildNamedShape D $TestLab:1 PRIMITIVE b}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build solid as primitive"
}
if {[catch {BuildNamedShape D [set TestLab]:1:1 PRIMITIVE b_1}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build edge as alone primitive"
}
if {[catch {BuildNamedShape D [set TestLab]:1:1 PRIMITIVE b_1 b_2 b_3}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build several edges as primitive over the old one"
}
if {[catch {BuildNamedShape D [set TestLab]:1:2 PRIMITIVE b_4 b_5 b_6}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build several edges as primitive"
}
#################### GENERATED EVOLUTION ####################
box b2 200 300 400
explode b2 F
if {[catch {BuildNamedShape D $TestLab:2 GENERATED b b2}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build solid as generation"
}
if {[catch {BuildNamedShape D [set TestLab]:2:1 GENERATED b_1 b2_1}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build face as alone generation"
}
if {[catch {BuildNamedShape D [set TestLab]:2:2 GENERATED b_2 b2_2 b_2 b2_3 b_3 b2_4}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build face as generation n:m"
}
if {[catch {BuildNamedShape D [set TestLab]:2:1 GENERATED b_3 b2_1 b_3 b2_3 b_4 b2_4}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build face as generation n:m to the exists named shape"
}
#################### MODIFY EVOLUTION ####################
box b3 300 400 500
explode b3 F
if {[catch {BuildNamedShape D $TestLab:3 MODIFY b2 b3}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build solid as modification"
}
if {[catch {BuildNamedShape D [set TestLab]:3:1 MODIFY b2_1 b3_1}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build face as alone modification"
}
if {[catch {BuildNamedShape D [set TestLab]:3:2 MODIFY b2_5 b3_2 b2_2 b3_3 b2_3 b3_4}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build face as modification n:m"
}
if {[catch {BuildNamedShape D [set TestLab]:3:1 MODIFY b2_3 b3_1 b_3 b3_3 b2_4 b3_4}] == 1} {
set IsDone 0
set TestError "$TestError # Can't build face as modification n:m to the exists named shape"
}
pload INSPECTOR
tinspector -select 0:1:3:2 TNaming_NamedShape

76
tests/tools/dfbrowser/A6 Normal file
View File

@ -0,0 +1,76 @@
pload DCAF
chrono qat start
# Create a new document and set UndoLimit
NewDocument D BinOcaf
#NewDocument D
cpulimit 300
UndoLimit D 100
# Open a transaction
NewCommand D
puts "caf005-I3"
set QA_DUP 0
# Add an attribute to a data framework
set aLabel_Root 0:2
set aName_Root Label_1
Label D ${aLabel_Root}
SetName D ${aLabel_Root} ${aName_Root}
set aName1 Label_1_1
###set aChild1 [NewChild D ${aLabel_Root}]
set aChild1 0:2:1
Label D ${aChild1}
SetName D ${aChild1} ${aName1}
set aName2 Label_1_2
###set aChild2 [NewChild D ${aLabel_Root}]
set aChild2 0:2:2
Label D ${aChild2}
SetName D ${aChild2} ${aName2}
set aName3 Label_1_1_1
###set aChild3 [NewChild D ${aLabel_Root}]
set aChild3 0:2:3
Label D ${aChild3}
SetName D ${aChild3} ${aName3}
set aName4 Label_1_1_2
###set aChild4 [NewChild D ${aLabel_Root}]
set aChild4 0:2:4
Label D ${aChild4}
SetName D ${aChild4} ${aName4}
set aName5 Label_1_1_3
###set aChild5 [NewChild D ${aLabel_Root}]
set aChild5 0:2:5
Label D ${aChild5}
SetName D ${aChild5} ${aName5}
set aName6 Label_1_2_1
###set aChild6 [NewChild D ${aLabel_Root}]
set aChild6 0:2:6
Label D ${aChild6}
SetName D ${aChild6} ${aName6}
set aName7 Label_1_2_2
###set aChild7 [NewChild D ${aLabel_Root}]
set aChild7 0:2:7
Label D ${aChild7}
SetName D ${aChild7} ${aName7}
SetNode D ${aLabel_Root}
AppendNode D ${aLabel_Root} ${aChild1}
AppendNode D ${aLabel_Root} ${aChild2}
AppendNode D ${aChild1} ${aChild3}
AppendNode D ${aChild1} ${aChild4}
AppendNode D ${aChild1} ${aChild5}
AppendNode D ${aChild2} ${aChild6}
AppendNode D ${aChild2} ${aChild7}
pload INSPECTOR
tinspector -plugins dfbrowser -select 0:2:6 TDataStd_TreeNode

View File

@ -1 +1,3 @@
001 dfbrowser
001 shapeview
001 vinspector

11
tests/tools/shapeview/A1 Normal file
View File

@ -0,0 +1,11 @@
pload ALL INSPECTOR
tinspector -plugins shapeview
box b1 200 100 120
tinspector -shape b1
box b2 100 200 220 100 120 100
tinspector -shape b2
tinspector -activate shapeview -select b1

5
tests/tools/shapeview/A2 Normal file
View File

@ -0,0 +1,5 @@
pload ALL INSPECTOR
tinspector -plugins shapeview
tinspector -open $env(CSF_OCCTDataPath)/occ/solid.brep shapeview

18
tests/tools/vinspector/A1 Normal file
View File

@ -0,0 +1,18 @@
pload ALL INSPECTOR
tinspector -plugins vinspector
vinit
box box_1 0 0 200 100 100 100
vdisplay box_1
vselmode box_1 1 1
vselmode box_1 3 1
box box_2 180 120 200 150 150 150
vdisplay box_2
vfit
tinspector -update -select box_1

View File

@ -0,0 +1,9 @@
pload ALL INSPECTOR
tinspector -plugins vinspector
vinit
tinspector -open $env(CSF_OCCTDataPath)/occ/solid.brep
vfit

View File

@ -15,7 +15,7 @@
#include <inspector/DFBrowser_HighlightDelegate.hxx>
#include <inspector/DFBrowser_Window.hxx>
#include <inspector/DFBrowserPane_Tools.hxx>
#include <QPainter>
// =======================================================================
@ -28,7 +28,7 @@ void DFBrowser_HighlightDelegate::paint (QPainter* thePainter, const QStyleOptio
// highlight cell
if (theOption.state & QStyle::State_MouseOver)
{
QColor aHighlightColor = DFBrowser_Window::LightHighlightColor();
QColor aHighlightColor = DFBrowserPane_Tools::LightHighlightColor();
thePainter->fillRect (theOption.rect, aHighlightColor);
}
// default paint

View File

@ -16,12 +16,14 @@
#ifndef DFBrowser_ItemRole_H
#define DFBrowser_ItemRole_H
#include <inspector/DFBrowserPane_ItemRole.hxx>
#include <Qt>
//! Additional data item role for DFBrowser tree item
enum DFBrowser_ItemRole
{
DFBrowser_ItemRole_AdditionalInfo = Qt::UserRole + 1 //!< an attribute additional information
DFBrowser_ItemRole_AdditionalInfo = DFBrowserPane_ItemRole_LastTreeRole + 1 //!< an attribute additional information
};
#endif

View File

@ -65,8 +65,7 @@ public:
QRect aLineRect = rect();
Qt::Alignment anAlignment = QStyle::visualAlignment (layoutDirection(), Qt::AlignLeft);
QColor aColor = palette().text().color();
aColor.setAlpha (128);
QColor aColor = Qt::gray;
QPen anOldpen = aPainter.pen();
aPainter.setPen (aColor);
aLineRect.adjust (4, 4, 0, 0);

View File

@ -82,10 +82,11 @@ void DFBrowser_SearchView::InitModels()
// function : onTableSelectionChanged
// purpose :
// =======================================================================
void DFBrowser_SearchView::onTableSelectionChanged (const QItemSelection& theSelected,
void DFBrowser_SearchView::onTableSelectionChanged (const QItemSelection&,
const QItemSelection&)
{
QModelIndexList aSelectedIndices = theSelected.indexes();
QItemSelectionModel* aSelectionModel = myTableView->selectionModel();
QModelIndexList aSelectedIndices = aSelectionModel->selectedIndexes();
QModelIndex aSelectedIndex = DFBrowser_Window::SingleSelected (aSelectedIndices, 2);
if (!aSelectedIndex.isValid())
return;

View File

@ -34,6 +34,7 @@
#include <QWidget>
const int HISTORY_SIZE = 10;
const int MARGIN_SIZE = 2;
// =======================================================================
// function : Constructor
@ -44,7 +45,7 @@ DFBrowser_TreeLevelLine::DFBrowser_TreeLevelLine (QWidget* theParent)
{
myMainWindow = new QWidget (theParent);
QGridLayout* aLayout = new QGridLayout (myMainWindow);
aLayout->setContentsMargins (0, 0, 0, 0);
aLayout->setContentsMargins (MARGIN_SIZE, MARGIN_SIZE, MARGIN_SIZE, MARGIN_SIZE);
myBackwardButton = new QToolButton (myMainWindow);
myBackwardButton->setIcon (QIcon (":/icons/treeline_backward.png"));
@ -64,13 +65,12 @@ DFBrowser_TreeLevelLine::DFBrowser_TreeLevelLine (QWidget* theParent)
aVHeader->setVisible (false);
int aDefCellSize = aVHeader->minimumSectionSize() + DFBrowserPane_Tools::HeaderSectionMargin();
aVHeader->setDefaultSectionSize (aDefCellSize);
aLayout->addWidget (myTableView, 0, 2, 2, 1);
aLayout->addWidget (myTableView, 0, 2);
int aScrollHeight = myTableView->horizontalScrollBar()->sizeHint().height();
myTableView->setFixedHeight (aDefCellSize + aScrollHeight);
myTableView->setFixedHeight (aDefCellSize);
myTableView->horizontalHeader()->setMinimumSectionSize (5); // it will be resized by context
myTableView->setHorizontalScrollMode (QAbstractItemView::ScrollPerItem);
myTableView->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOn); //! TEMPORARY
myTableView->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff); //! TEMPORARY
myTableView->setShowGrid (false);
DFBrowser_TreeLevelLineModel* aHModel = new DFBrowser_TreeLevelLineModel (myTableView);

View File

@ -14,7 +14,7 @@
// commercial license or contractual agreement.
#include <inspector/DFBrowser_TreeLevelLineDelegate.hxx>
#include <inspector/DFBrowser_Window.hxx>
#include <inspector/DFBrowserPane_Tools.hxx>
#include <QPainter>
@ -36,7 +36,7 @@ void DFBrowser_TreeLevelLineDelegate::paint (QPainter* thePainter, const QStyleO
{
// highlight cell
if (theOption.state & QStyle::State_MouseOver)
thePainter->fillRect (theOption.rect, DFBrowser_Window::LightHighlightColor());
thePainter->fillRect (theOption.rect, DFBrowserPane_Tools::LightHighlightColor());
// action icon for all indices before the last one
if (theIndex.column() < theIndex.model()->columnCount()-1)

View File

@ -28,7 +28,7 @@
#include <QTableView>
#include <QWidget>
const int DEFAULT_COLUMN_WIDTH = 300;
const int LABEL_OR_ATTRIBUTECOLUMN_WIDTH = 160;
// =======================================================================
// function : Constructor
@ -43,11 +43,12 @@ DFBrowser_TreeLevelView::DFBrowser_TreeLevelView (QWidget* theParent)
myTableView = new QTableView (myMainWindow);
myTableView->setModel (new DFBrowser_TreeLevelViewModel (myTableView));
myTableView->setColumnWidth (0, DEFAULT_COLUMN_WIDTH);
myTableView->setColumnWidth (0, LABEL_OR_ATTRIBUTECOLUMN_WIDTH);
myTableView->setEditTriggers (QAbstractItemView::DoubleClicked);
myTableView->horizontalHeader()->setVisible (false);
QHeaderView* aVHeader = myTableView->verticalHeader();
aVHeader->setVisible (false);
aVHeader->setDefaultSectionSize (aVHeader->minimumSectionSize() + DFBrowserPane_Tools::HeaderSectionMargin());
aVHeader->setDefaultSectionSize (aVHeader->minimumSectionSize());
myTableView->horizontalHeader()->setStretchLastSection (true);
aLayout->addWidget (myTableView);

View File

@ -26,6 +26,9 @@
#include <TDF_Label.hxx>
#include <inspector/TreeModel_ModelBase.hxx>
#include <QApplication>
#include <QColor>
#include <QFont>
#include <QIcon>
// =======================================================================
@ -84,7 +87,7 @@ QVariant DFBrowser_TreeLevelViewModel::data (const QModelIndex& theIndex, int th
QVariant aValue;
TreeModel_ItemBasePtr anItemBase = TreeModel_ModelBase::GetItemByIndex (anIndex);
if (anIndex.column() == 0)
if (theIndex.column() == 0)
{
DFBrowser_ItemBasePtr aDBrowserItem = itemDynamicCast<DFBrowser_ItemBase> (anItemBase);
bool aPrevValue = aDBrowserItem->SetUseAdditionalInfo (false);
@ -99,6 +102,15 @@ QVariant DFBrowser_TreeLevelViewModel::data (const QModelIndex& theIndex, int th
aValue = anItem->GetAttributeInfo (DFBrowser_ItemRole_AdditionalInfo);
}
}
if (theIndex.column() == 0 && theRole == Qt::FontRole) // method name is in italic
{
QFont aFont = qApp->font();
aFont.setItalic (true);
return aFont;
}
if (theIndex.column() == 0 && theRole == Qt::ForegroundRole) // method name is light gray
return QColor (Qt::darkGray).darker(150);
return aValue;
}

View File

@ -252,6 +252,6 @@ void DFBrowser_TreeModel::ConvertToIndices (const NCollection_List<Handle(TDF_At
QVariant DFBrowser_TreeModel::data (const QModelIndex& theIndex, int theRole) const
{
if (theRole == Qt::BackgroundRole && myHighlightedIndices.contains (theIndex))
return DFBrowser_Window::LightHighlightColor();
return DFBrowserPane_Tools::LightHighlightColor();
return TreeModel_ModelBase::data (theIndex, theRole);
}

View File

@ -68,9 +68,6 @@
#include <QGridLayout>
#include <QList>
#include <QMainWindow>
#if QT_VERSION < 0x050000
#include <QMotifStyle>
#endif
#include <QItemSelectionModel>
#include <QTabWidget>
#include <QToolBar>
@ -85,9 +82,9 @@
#include <QStyleFactory>
#endif
const int DFBROWSER_DEFAULT_WIDTH = 1200;
const int DFBROWSER_DEFAULT_HEIGHT = 850;
const int DFBROWSER_DEFAULT_TREE_VIEW_WIDTH = 300;
const int DFBROWSER_DEFAULT_WIDTH = 650;
const int DFBROWSER_DEFAULT_HEIGHT = 350;
const int DFBROWSER_DEFAULT_TREE_VIEW_WIDTH = 325;
const int DFBROWSER_DEFAULT_TREE_VIEW_HEIGHT = 500;
const int DFBROWSER_DEFAULT_VIEW_WIDTH = 400;
const int DFBROWSER_DEFAULT_VIEW_HEIGHT = 300;
@ -96,7 +93,7 @@ const int DFBROWSER_DEFAULT_POSITION_X = 200;
const int DFBROWSER_DEFAULT_POSITION_Y = 60;
const int OCAF_BROWSER_COLUMN_WIDTH_0 = 300;
const int DEFAULT_PROPERTY_PANEL_HEIGHT = 100;
const int DEFAULT_PROPERTY_PANEL_HEIGHT = 200;
const int DEFAULT_BROWSER_HEIGHT = 800;
// =======================================================================
@ -119,6 +116,7 @@ DFBrowser_Window::DFBrowser_Window()
myTreeView->setSortingEnabled (Standard_False);
QDockWidget* aTreeViewWidget = new QDockWidget (tr ("TreeView"), myMainWindow);
aTreeViewWidget->setTitleBarWidget (new QWidget(myMainWindow));
aTreeViewWidget->setFeatures (QDockWidget::NoDockWidgetFeatures);
aTreeViewWidget->setWidget (myTreeView);
myMainWindow->addDockWidget (Qt::LeftDockWidgetArea, aTreeViewWidget);
@ -137,6 +135,7 @@ DFBrowser_Window::DFBrowser_Window()
connect (myTreeLevelLine, SIGNAL (updateClicked()), this, SLOT (onUpdateClicked()));
QDockWidget* aTreeLineDockWidget = new QDockWidget (tr ("Tree Level Line"), myMainWindow);
aTreeLineDockWidget->setTitleBarWidget (new QWidget(myMainWindow));
aTreeLineDockWidget->setFeatures (QDockWidget::NoDockWidgetFeatures);
aTreeLineDockWidget->setWidget (myTreeLevelLine->GetControl());
myMainWindow->addDockWidget (Qt::TopDockWidgetArea, aTreeLineDockWidget);
@ -148,6 +147,7 @@ DFBrowser_Window::DFBrowser_Window()
myDumpView = new DFBrowser_DumpView (aDumpWidget);
aDumpLay->addWidget (myDumpView->GetControl());
QDockWidget* aDumpDockWidget = new QDockWidget (tr ("Dump"), myMainWindow);
aDumpDockWidget->setWidget (aDumpWidget);
myMainWindow->addDockWidget (Qt::BottomDockWidgetArea, aDumpDockWidget);
@ -178,18 +178,16 @@ DFBrowser_Window::DFBrowser_Window()
myViewWindow->GetView()->SetPredefinedSize (DFBROWSER_DEFAULT_VIEW_WIDTH, DFBROWSER_DEFAULT_VIEW_HEIGHT);
QDockWidget* aViewDockWidget = new QDockWidget (tr ("View"), myMainWindow);
aViewDockWidget->setTitleBarWidget (myViewWindow->GetViewToolBar()->GetControl());
aViewDockWidget->setWidget (myViewWindow);
myMainWindow->addDockWidget (Qt::BottomDockWidgetArea, aViewDockWidget);
QColor aHColor = DFBrowser_Window::LightHighlightColor();
QColor aHColor (229, 243, 255);
myViewWindow->GetDisplayer()->SetAttributeColor (Quantity_Color(aHColor.red() / 255., aHColor.green() / 255.,
aHColor.blue() / 255., Quantity_TOC_RGB), View_PresentationType_Additional);
myMainWindow->tabifyDockWidget (aDumpDockWidget, aViewDockWidget);
myMainWindow->resize (DFBROWSER_DEFAULT_WIDTH, DFBROWSER_DEFAULT_HEIGHT);
myMainWindow->move (DFBROWSER_DEFAULT_POSITION_X, DFBROWSER_DEFAULT_POSITION_Y);
aTreeViewWidget->resize (DFBROWSER_DEFAULT_TREE_VIEW_WIDTH, DFBROWSER_DEFAULT_HEIGHT);
aTreeViewWidget->resize (DFBROWSER_DEFAULT_TREE_VIEW_WIDTH, DFBROWSER_DEFAULT_TREE_VIEW_HEIGHT);
myThread = new DFBrowser_Thread (this);
@ -792,6 +790,7 @@ void DFBrowser_Window::onPaneSelectionChanged (const QItemSelection&,
if (!aPresentation.IsNull())
aDisplayer->DisplayPresentation (aPresentation, View_PresentationType_Additional);
else {
aDisplayer->ErasePresentations (View_PresentationType_Additional, false);
AIS_ListOfInteractive aDisplayed;
findPresentations (anIndices, aDisplayed);
for (AIS_ListIteratorOfListOfInteractive aDisplayedIt (aDisplayed); aDisplayedIt.More(); aDisplayedIt.Next())
@ -904,7 +903,7 @@ void DFBrowser_Window::highlightIndices (const QModelIndexList& theIndices)
aTreeModel->SetHighlighted (theIndices);
QModelIndex anIndexToScroll;
if (theIndices.size() > 0)
if (!theIndices.isEmpty())
anIndexToScroll = theIndices.last(); // scroll to last selected index
else
{
@ -917,6 +916,9 @@ void DFBrowser_Window::highlightIndices (const QModelIndexList& theIndices)
if (anIndexToScroll.isValid())
myTreeView->scrollTo (anIndexToScroll);
if (theIndices.isEmpty())
myTreeView->setFocus(); // to see the selected item in active palette color
aTreeModel->EmitLayoutChanged();
}

View File

@ -110,10 +110,6 @@ public:
//! \return string value
Standard_EXPORT static TCollection_AsciiString TmpDirectory();
//! Returns light highlight color
//! \returns Qt color
static QColor LightHighlightColor() { return QColor (229, 243, 255); }
//! Returns single selected item in the cell of given orientation. If the orientation is Horizontal,
//! in the cell id colum, one row should be selected.
//! \param theIndices a container of selected indices

View File

@ -32,13 +32,12 @@
// purpose :
// =======================================================================
DFBrowserPane_AttributePane::DFBrowserPane_AttributePane()
: DFBrowserPane_AttributePaneAPI(), myMainWidget (0), myTableView (0), myPaneModel (0)
: DFBrowserPane_AttributePaneAPI(), myMainWidget (0), myTableView (0)
{
myPaneModel = new DFBrowserPane_AttributePaneModel();
QList<QVariant> aHeaderValues;
aHeaderValues << "Values";
getPaneModel()->SetHeaderValues (aHeaderValues, Qt::Horizontal);
getPaneModel()->SetColumnCount (getColumnCount());
getPaneModel()->SetHeaderValues (getHeaderValues(Qt::Horizontal), Qt::Horizontal);
mySelectionModels.push_back (new QItemSelectionModel (myPaneModel));
}
@ -66,6 +65,14 @@ QWidget* DFBrowserPane_AttributePane::CreateWidget (QWidget* theParent)
myTableView = new DFBrowserPane_TableView (aMainWidget, getTableColumnWidths());
myTableView->SetModel (myPaneModel);
QTableView* aTableView = myTableView->GetTableView();
DFBrowserPane_AttributePaneModel* aPaneModel = dynamic_cast<DFBrowserPane_AttributePaneModel*>(myPaneModel);
if (aPaneModel)
{
if (aPaneModel->GetOrientation() == Qt::Vertical)
aTableView->horizontalHeader()->setVisible (!aPaneModel->HeaderValues (Qt::Horizontal).isEmpty());
else
aTableView->verticalHeader()->setVisible (!aPaneModel->HeaderValues (Qt::Vertical).isEmpty());
}
aTableView->setSelectionModel (mySelectionModels.front());
aTableView->setSelectionBehavior (QAbstractItemView::SelectRows);
@ -85,6 +92,9 @@ void DFBrowserPane_AttributePane::Init (const Handle(TDF_Attribute)& theAttribut
QList<QVariant> aValues;
GetValues (theAttribute, aValues);
getPaneModel()->Init (aValues);
if (myTableView)
myTableView->GetTableView()->resizeColumnToContents (0);
}
// =======================================================================
@ -111,6 +121,19 @@ QVariant DFBrowserPane_AttributePane::GetAttributeInfo (const Handle(TDF_Attribu
}
}
// =======================================================================
// function : GetShortAttributeInfo
// purpose :
// =======================================================================
void DFBrowserPane_AttributePane::GetShortAttributeInfo (const Handle(TDF_Attribute)& theAttribute, QList<QVariant>& theValues)
{
QList<QVariant> aValues;
GetValues(theAttribute, aValues);
for (int aValuesEvenId = 1; aValuesEvenId < aValues.size(); aValuesEvenId = aValuesEvenId + 2)
theValues.append (aValues[aValuesEvenId]);
}
// =======================================================================
// function : GetAttributeInfoByType
// purpose :

View File

@ -84,11 +84,10 @@ public:
//! \return value, interpreted by tree model depending on the role
Standard_EXPORT virtual QVariant GetAttributeInfo(const Handle(TDF_Attribute)& theAttribute, int theRole, int theColumnId);
//! Returns brief attribute information. In general case, it returns GetValues() result.
//! Returns brief attribute information. In general case, it returns even values of GetValues() result.
//! \param theAttribute a current attribute
//! \param theValues a result list of values
virtual void GetShortAttributeInfo (const Handle(TDF_Attribute)& theAttribute, QList<QVariant>& theValues)
{ GetValues(theAttribute, theValues); }
Standard_EXPORT virtual void GetShortAttributeInfo (const Handle(TDF_Attribute)& theAttribute, QList<QVariant>& theValues);
//! Returns list of selection models. In default implementation it contains a selection model for the table view
//! \returns container of models
@ -102,6 +101,16 @@ protected:
//! Returns converted table view
DFBrowserPane_TableView* getTableView() const { return myTableView; }
//! Returns header text values for 0...n table cells in parameter orientation
//! \param theOrientation defines horizontal or vertical values
//! \param theValues output container of values
virtual QList<QVariant> getHeaderValues (const Qt::Orientation theOrientation)
{ (void)theOrientation; return QList<QVariant>(); }
//! Retuns number of columns in internal table. By default it returns 2 : method name for method value.
//! \return integer value
virtual int getColumnCount() const { return 2; }
//! Defines widths of table columns
//! \return container of widths
Standard_EXPORT virtual QMap<int, int> getTableColumnWidths() const;

View File

@ -15,6 +15,10 @@
#include <inspector/DFBrowserPane_AttributePaneModel.hxx>
#include <QApplication>
#include <QFont>
#include <QColor>
// =======================================================================
// function : Constructor
// purpose :
@ -22,6 +26,7 @@
DFBrowserPane_AttributePaneModel::DFBrowserPane_AttributePaneModel (QObject* theParent)
: QAbstractTableModel (theParent), myOrientation (Qt::Vertical), myColumnCount (1)
{
myItalicColumns.append (0);
}
// =======================================================================
@ -120,6 +125,15 @@ QVariant DFBrowserPane_AttributePaneModel::data (const QModelIndex& theIndex, in
aValue = aColValues.at (theIndex.row());
}
}
if (myItalicColumns.contains (theIndex.column()) && theRole == Qt::FontRole)
{
QFont aFont = qApp->font();
aFont.setItalic (true);
return aFont;
}
if (myItalicColumns.contains (theIndex.column()) && theRole == Qt::ForegroundRole)
return QColor (Qt::darkGray).darker(150);
return aValue;
}

View File

@ -46,35 +46,53 @@ public:
//! \param theOrientation if horizontal, the values are applyed by rows, otherwise by columns
void SetOrientation (const Qt::Orientation& theOrientation) { myOrientation = theOrientation; }
//! Returns table orientation for setting data values
//! \return thye current orientation
Qt::Orientation GetOrientation() const { return myOrientation; }
//! Sets number of columns
//! \param theColumnCount a column count
void SetColumnCount (const int theColumnCount) { myColumnCount = theColumnCount; }
//! Fills the model with the values. Store the values in a cache.
//! \param theValues a container of values
Standard_EXPORT void Init(const QList<QVariant>& theValues);
Standard_EXPORT void Init (const QList<QVariant>& theValues);
//! Fills the model header values for orientation.
//! \param theValues a container of header text values
//! \param theOrientation an orientation of header
Standard_EXPORT void SetHeaderValues(const QList<QVariant>& theValues, Qt::Orientation theOrientation);
Standard_EXPORT void SetHeaderValues (const QList<QVariant>& theValues, Qt::Orientation theOrientation);
//! Returns header values for orientation.
//! \param theValues a container of header text values
//! \param theOrientation an orientation of header
const QList<QVariant>& HeaderValues (Qt::Orientation theOrientation)
{ return theOrientation == Qt::Horizontal ? myHorizontalHeaderValues : myVerticalHeaderValues; }
//! Returns indices of italic columns
//! \return indices of columns
const QList<int>& GetItalicColumns() const { return myItalicColumns; }
//! Sets indices of italic columns
//! \param theValues indices of columns
void SetItalicColumns (const QList<int>& theValues) { myItalicColumns = theValues; }
//! Returns number of columns, depending on orientation: myColumnCount or size of values container
//! \param theParent an index of the parent item
//! \return an integer value
Standard_EXPORT virtual int columnCount(const QModelIndex& theParent = QModelIndex()) const Standard_OVERRIDE;
Standard_EXPORT virtual int columnCount (const QModelIndex& theParent = QModelIndex()) const Standard_OVERRIDE;
//! Returns number of rows, depending on orientation: myColumnCount or size of values container
//! \param theParent an index of the parent item
//! \return an integer value
Standard_EXPORT virtual int rowCount(const QModelIndex& theParent = QModelIndex()) const Standard_OVERRIDE;
Standard_EXPORT virtual int rowCount (const QModelIndex& theParent = QModelIndex()) const Standard_OVERRIDE;
//! Returns content of the model index for the given role, it is obtained from internal container of values
//! It returns value only for DisplayRole.
//! \param theIndex a model index
//! \param theRole a view role
//! \return value intepreted depending on the given role
Standard_EXPORT virtual QVariant data(const QModelIndex& theIndex, int theRole = Qt::DisplayRole) const Standard_OVERRIDE;
Standard_EXPORT virtual QVariant data (const QModelIndex& theIndex, int theRole = Qt::DisplayRole) const Standard_OVERRIDE;
//! Returns content of the model index for the given role, it is obtainer from internal container of header values
//! It returns value only for DisplayRole.
@ -82,7 +100,7 @@ public:
//! \param theIndex a model index
//! \param theRole a view role
//! \return value intepreted depending on the given role
Standard_EXPORT virtual QVariant headerData(int theSection, Qt::Orientation theOrientation, int theRole = Qt::DisplayRole) const Standard_OVERRIDE;
Standard_EXPORT virtual QVariant headerData (int theSection, Qt::Orientation theOrientation, int theRole = Qt::DisplayRole) const Standard_OVERRIDE;
//! Returns flags for the item: ItemIsEnabled | Qt::ItemIsSelectable
//! \param theIndex a model index
@ -97,6 +115,8 @@ private:
QMap< int, QList<QVariant> > myValuesMap; //!< container of values, filled in Init(), used in data()
QList<QVariant> myHorizontalHeaderValues; //!< table horizontal header values
QList<QVariant> myVerticalHeaderValues; //!< table vertical header values
QList<int> myItalicColumns; //!< indices of columns that should be visualized in gray and italic
};
#endif

View File

@ -18,9 +18,11 @@
#include <inspector/DFBrowserPane_AttributePaneModel.hxx>
#include <QList>
#include <QVariant>
#include <qheaderview.h>
#include <QGridLayout>
#include <QList>
#include <QTableView>
#include <QVariant>
#include <QWidget>
// =======================================================================
@ -28,26 +30,25 @@
// purpose :
// =======================================================================
DFBrowserPane_HelperArray::DFBrowserPane_HelperArray (DFBrowserPane_AttributePaneModel* theValuesModel)
: myValuesModel (theValuesModel)
: myValuesModel (theValuesModel), myArrayBounds (0), myValuesView (0)
{
myBoundsModel = new DFBrowserPane_AttributePaneModel();
QList<QVariant> aHeaderValues;
aHeaderValues << "Bounds";
myBoundsModel->SetHeaderValues (aHeaderValues, Qt::Horizontal);
myBoundsModel->SetColumnCount (2);
}
// =======================================================================
// function : CreateWidget
// purpose :
// =======================================================================
void DFBrowserPane_HelperArray::CreateWidget (QWidget* theParent, QWidget* theValuesView)
void DFBrowserPane_HelperArray::CreateWidget (QWidget* theParent, DFBrowserPane_TableView* theValuesView)
{
myValuesView = theValuesView;
myArrayBounds = new DFBrowserPane_TableView (theParent);
myArrayBounds->SetModel (myBoundsModel);
DFBrowserPane_TableView::SetFixedRowCount (2, myArrayBounds->GetTableView());
QGridLayout* aLay = new QGridLayout (theParent);
aLay->setContentsMargins (0, 0, 0, 0);
aLay->addWidget (myArrayBounds);
aLay->addWidget (theValuesView);
aLay->setRowStretch (1, 1);
@ -60,19 +61,19 @@ void DFBrowserPane_HelperArray::CreateWidget (QWidget* theParent, QWidget* theVa
void DFBrowserPane_HelperArray::Init (const QList<QVariant>& theValues)
{
QList<QVariant> aTmpValues;
aTmpValues << theValues[0] << theValues[1];
aTmpValues << "Lower" << theValues[0] << "Upper" << theValues[1];
myBoundsModel->Init (aTmpValues);
aTmpValues.clear();
QList<QVariant> aHeaderValues;
int aLower = theValues[0].toInt();
for (int aValuesIt = 2, aSize = theValues.size(); aValuesIt < aSize; aValuesIt++)
{
aTmpValues << theValues[aValuesIt];
aHeaderValues << aLower + (aValuesIt - 2);
}
myValuesModel->SetHeaderValues (aHeaderValues, Qt::Vertical);
for (int aValueIt = 2, aSize = theValues.size(); aValueIt < aSize; aValueIt++)
aTmpValues << QString ("Value (%1)").arg(aValueIt-2 + aLower) << theValues[aValueIt];
myValuesModel->Init (aTmpValues);
if (myArrayBounds)
myArrayBounds->GetTableView()->resizeColumnToContents (0);
if (myValuesView)
myValuesView->GetTableView()->resizeColumnToContents (0);
}
// =======================================================================
@ -83,5 +84,5 @@ void DFBrowserPane_HelperArray::GetShortAttributeInfo (const Handle(TDF_Attribut
QList<QVariant>& theValues)
{
for (int aRowId = 0, aRows = myValuesModel->rowCount(); aRowId < aRows; aRowId++)
theValues.append (myValuesModel->data (myValuesModel->index (aRowId, 0)));
theValues.append (myValuesModel->data (myValuesModel->index (aRowId, 1)));
}

View File

@ -47,7 +47,7 @@ public:
//! Creates bounds table view and grid layout, where the bounds view and the values view are shown
//! \param theParent a parent widget
//! \param theValuesView a view of values(table view filled by myValuesModel)
Standard_EXPORT void CreateWidget(QWidget* theParent, QWidget* theValuesView);
Standard_EXPORT void CreateWidget(QWidget* theParent, DFBrowserPane_TableView* theValuesView);
//! Fills bounds model by firsth and second values, fills values model by left values
//! \param theValues values to fill views
@ -63,5 +63,6 @@ private:
DFBrowserPane_AttributePaneModel* myValuesModel; //!< model of table view
DFBrowserPane_AttributePaneModel* myBoundsModel; //!< model of bounds view
DFBrowserPane_TableView* myArrayBounds; //!< bounds view
DFBrowserPane_TableView* myValuesView; //!< values view
};
#endif

View File

@ -47,7 +47,11 @@ void DFBrowserPane_HelperExport::OnButtonPressed (const QModelIndex& theIndex)
QString aFileExtension = ".brep";
#if QT_VERSION < 0x050000
QString aFilter (tr ("BREP file (*%1*)").arg (aFileExtension));
#else
QString aFilter;
#endif
QString aSelectedFilter;
QString aFileName = QFileDialog::getSaveFileName (0, tr ("Export shape to BREP file"), QString(),
aFilter, &aSelectedFilter);

View File

@ -1,49 +0,0 @@
// Created on: 2017-06-16
// Created by: Natalia ERMOLAEVA
// Copyright (c) 2017 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <inspector/DFBrowserPane_HelperGroupContent.hxx>
#include <QHBoxLayout>
#include <QWidget>
// =======================================================================
// function : Constructor
// purpose :
// =======================================================================
DFBrowserPane_HelperGroupContent::DFBrowserPane_HelperGroupContent (const QString& theTitle, QWidget* theParent,
QWidget* theControl)
: QGroupBox (theTitle, theParent), myControl (0)
{
setCheckable (true);
myControl = theControl;
QHBoxLayout* aLayout = new QHBoxLayout (this);
aLayout->addWidget (myControl);
connect (this, SIGNAL (clicked (bool)), this, SLOT (onChecked(bool)));
setChecked (false);
onChecked (isChecked());
}
// =======================================================================
// function : onChecked
// purpose :
// =======================================================================
void DFBrowserPane_HelperGroupContent::onChecked (bool theState)
{
if (myControl)
myControl->setVisible (theState);
}

View File

@ -1,53 +0,0 @@
// Created on: 2017-06-16
// Created by: Natalia ERMOLAEVA
// Copyright (c) 2017 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef DFBrowserPane_HelperGroupContent_H
#define DFBrowserPane_HelperGroupContent_H
#include <Standard.hxx>
#include <Standard_Macro.hxx>
#ifdef _MSC_VER
#pragma warning(disable : 4127) // conditional expression is constant
#endif
#include <QGroupBox>
class QWidget;
//! \class DFBrowserPane_HelperGroupContent
//! \brief Creates a check group box for the given control. If checked, the control is enabled,
//! otherwise it sets it as disabled
class DFBrowserPane_HelperGroupContent : public QGroupBox
{
Q_OBJECT
public:
//! Constructor
Standard_EXPORT DFBrowserPane_HelperGroupContent (const QString& theTitle, QWidget* theParent, QWidget* theControl);
//! Destructor
virtual ~DFBrowserPane_HelperGroupContent() Standard_OVERRIDE {}
protected slots:
//! Set enable/disable current control depending on check box state
//! \param theState state of the check box
void onChecked (bool theState);
private:
QWidget* myControl; //!< the source control, that will be enabled/disabled
};
#endif

View File

@ -16,13 +16,16 @@
#ifndef DFBrowserPane_ItemRole_H
#define DFBrowserPane_ItemRole_H
#include <inspector/TreeModel_ItemRole.hxx>
//! Custom item role for attribute pane
enum DFBrowserPane_ItemRole
{
DFBrowserPane_ItemRole_ShortInfo = Qt::UserRole + 1, //!< not full information of an attribute
DFBrowserPane_ItemRole_ShortInfo = TreeModel_ItemRole_LastTreeRole + 1, //!< not full information of an attribute
DFBrowserPane_ItemRole_Decoration_40x40, //!< icon with greater size
DFBrowserPane_ItemRole_DisplayExtended, // extended item information (with additional information) for Qt::DisplayRole
DFBrowserPane_ItemRole_ToolTipExtended // exteneded tool tip information for Qt::ToolTipRole
DFBrowserPane_ItemRole_ToolTipExtended, // exteneded tool tip information for Qt::ToolTipRole
DFBrowserPane_ItemRole_LastTreeRole //! last enumeration value to use outside incremented
};
#endif

View File

@ -27,7 +27,8 @@ enum DFBrowserPane_OcctEnumType
DB_DIMENSION_TYPE = 5, //!< TDataStd_RealEnum values
DB_MATERIAL_TYPE = 6, //!< Graphic3d_NameOfMaterial values
DB_DISPLAY_MODE = 7, //!< AIS_DisplayMode values
DB_ORIENTATION_TYPE = 8 //!< TopAbs_Orientation values
DB_ORIENTATION_TYPE = 8, //!< TopAbs_Orientation values
DB_CDM_CAN_CLOSE_STATUS //!< CDM_CanCloseStatus values
};
#endif

View File

@ -29,11 +29,12 @@
void DFBrowserPane_TDFReference::GetValues (const Handle(TDF_Attribute)& theAttribute, QList<QVariant>& theValues)
{
Handle(TDF_Reference) anAttribute = Handle(TDF_Reference)::DownCast (theAttribute);
if (!anAttribute.IsNull())
{
TDF_Label aLabel = anAttribute->Get();
theValues.append (DFBrowserPane_Tools::GetEntry (aLabel).ToCString());
}
if (anAttribute.IsNull())
return;
TDF_Label aLabel = anAttribute->Get();
theValues.append ("Get");
theValues.append (DFBrowserPane_Tools::GetEntry (aLabel).ToCString());
}
// =======================================================================

View File

@ -29,6 +29,7 @@ void DFBrowserPane_TDFTagSource::GetValues (const Handle(TDF_Attribute)& theAttr
Handle(TDF_TagSource) anAttribute = Handle(TDF_TagSource)::DownCast (theAttribute);
if (anAttribute.IsNull())
return;
theValues.append ("Get");
theValues.append (anAttribute->Get());
}

View File

@ -28,6 +28,9 @@ void DFBrowserPane_TDataStdAsciiString::GetValues (const Handle(TDF_Attribute)&
QList<QVariant>& theValues)
{
Handle(TDataStd_AsciiString) anAttribute = Handle(TDataStd_AsciiString)::DownCast (theAttribute);
if (!anAttribute.IsNull())
theValues.append (anAttribute->Get().ToCString());
if (anAttribute.IsNull())
return;
theValues.append ("Get");
theValues.append (anAttribute->Get().ToCString());
}

View File

@ -24,9 +24,9 @@
#pragma warning(disable : 4127) // conditional expression is constant
#endif
#include <QGridLayout>
#include <QVariant>
#include <QWidget>
#include <QGridLayout>
// =======================================================================
// function : CreateWidget
@ -62,13 +62,13 @@ void DFBrowserPane_TDataStdBooleanArray::GetValues (const Handle(TDF_Attribute)&
QList<QVariant>& theValues)
{
Handle(TDataStd_BooleanArray) anAttribute = Handle(TDataStd_BooleanArray)::DownCast (theAttribute);
if (!anAttribute.IsNull())
{
theValues.append (anAttribute->Lower());
theValues.append (anAttribute->Upper());
for (int aValuesId = anAttribute->Lower(); aValuesId <= anAttribute->Upper(); aValuesId++)
theValues.append (anAttribute->Value (aValuesId));
}
if (anAttribute.IsNull())
return;
theValues.append (anAttribute->Lower());
theValues.append (anAttribute->Upper());
for (int aValueId = anAttribute->Lower(); aValueId <= anAttribute->Upper(); aValueId++)
theValues.append (anAttribute->Value (aValueId));
}
// =======================================================================

View File

@ -35,5 +35,8 @@ void DFBrowserPane_TDataStdBooleanList::GetValues (const Handle(TDF_Attribute)&
return;
for (TDataStd_ListIteratorOfListOfByte aBoolListIt (anAttribute->List()); aBoolListIt.More(); aBoolListIt.Next())
{
theValues.append ("Value");
theValues.append (aBoolListIt.Value());
}
}

View File

@ -30,5 +30,6 @@ void DFBrowserPane_TDataStdComment::GetValues (const Handle(TDF_Attribute)& theA
Handle(TDataStd_Comment) anAttribute = Handle(TDataStd_Comment)::DownCast (theAttribute);
if (anAttribute.IsNull())
return;
theValues.append ("Get");
theValues.append (DFBrowserPane_Tools::ToString (anAttribute->Get()));
}

View File

@ -30,5 +30,6 @@ void DFBrowserPane_TDataStdCurrent::GetValues (const Handle(TDF_Attribute)& theA
Handle(TDataStd_Current) anAttribute = Handle(TDataStd_Current)::DownCast (theAttribute);
if (anAttribute.IsNull())
return;
theValues.append ("GetLabel");
theValues.append (DFBrowserPane_Tools::GetEntry (anAttribute->GetLabel()).ToCString());
}

View File

@ -29,6 +29,7 @@ void DFBrowserPane_TDataStdExpression::GetValues (const Handle(TDF_Attribute)& t
if (anAttribute.IsNull())
return;
theValues.append ("GetExpression");
theValues.append (DFBrowserPane_Tools::ToString (anAttribute->GetExpression()));
}

View File

@ -33,5 +33,8 @@ void DFBrowserPane_TDataStdExtStringList::GetValues (const Handle(TDF_Attribute)
return;
for (TDataStd_ListIteratorOfListOfExtendedString aValuesIt(anAttribute->List()); aValuesIt.More(); aValuesIt.Next())
{
theValues.append ("Value");
theValues.append (DFBrowserPane_Tools::ToString (aValuesIt.Value()));
}
}

View File

@ -31,6 +31,10 @@ void DFBrowserPane_TDataStdIntPackedMap::GetValues (const Handle(TDF_Attribute)&
if (anAttribute.IsNull())
return;
for (TColStd_MapIteratorOfPackedMapOfInteger aValueIt(anAttribute->GetMap()); aValueIt.More(); aValueIt.Next())
int anIndexInMap = 0;
for (TColStd_MapIteratorOfPackedMapOfInteger aValueIt(anAttribute->GetMap()); aValueIt.More(); aValueIt.Next(), anIndexInMap++)
{
theValues.append (QString ("GetMap [%1]").arg(anIndexInMap));
theValues.append (aValueIt.Key());
}
}

View File

@ -29,5 +29,6 @@ void DFBrowserPane_TDataStdInteger::GetValues (const Handle(TDF_Attribute)& theA
if (anAttribute.IsNull())
return;
theValues.append ("Get");
theValues.append (anAttribute->Get());
}

View File

@ -32,5 +32,8 @@ void DFBrowserPane_TDataStdIntegerList::GetValues (const Handle(TDF_Attribute)&
return;
for (TColStd_ListIteratorOfListOfInteger aValuesIt (anAttribute->List()); aValuesIt.More(); aValuesIt.Next())
{
theValues.append ("Value");
theValues.append (aValuesIt.Value());
}
}

View File

@ -30,6 +30,7 @@ void DFBrowserPane_TDataStdName::GetValues (const Handle(TDF_Attribute)& theAttr
if (anAttribute.IsNull())
return;
theValues.append ("Get");
theValues.append (DFBrowserPane_Tools::ToString (anAttribute->Get()));
}

View File

@ -16,7 +16,6 @@
#include <inspector/DFBrowserPane_TDataStdNamedData.hxx>
#include <inspector/DFBrowserPane_AttributePaneModel.hxx>
#include <inspector/DFBrowserPane_HelperGroupContent.hxx>
#include <inspector/DFBrowserPane_TableView.hxx>
#include <inspector/DFBrowserPane_Tools.hxx>
@ -37,6 +36,8 @@
#include <TDataStd_HDataMapOfStringHArray1OfInteger.hxx>
#include <TDataStd_NamedData.hxx>
#include <QTableView>
#include <QTabWidget>
#include <QVariant>
#include <QVBoxLayout>
#include <QWidget>
@ -53,7 +54,8 @@ static const QString VALUES_REAL_ARRAY = "values_real_array";
// purpose :
// =======================================================================
DFBrowserPane_TDataStdNamedData::DFBrowserPane_TDataStdNamedData()
: DFBrowserPane_AttributePane()
: DFBrowserPane_AttributePane(), myRealValues (0), myStringValues(0), myByteValues(0), myIntArrayValues(0),
myRealArrayValues(0)
{
myPaneModel = createPaneModel();
myRealValuesModel = createPaneModel();
@ -70,14 +72,8 @@ DFBrowserPane_TDataStdNamedData::DFBrowserPane_TDataStdNamedData()
DFBrowserPane_AttributePaneModel* DFBrowserPane_TDataStdNamedData::createPaneModel()
{
DFBrowserPane_AttributePaneModel* aTableModel = new DFBrowserPane_AttributePaneModel();
aTableModel->SetOrientation (Qt::Horizontal);
QList<QVariant> aHeaderValues;
aHeaderValues << "Name" << "Value";
aTableModel->SetHeaderValues (aHeaderValues, Qt::Vertical);
aTableModel->SetColumnCount (2); // indeed these are rows as table orientation is Horizontal
aTableModel->SetColumnCount (2);
aTableModel->SetItalicColumns (QList<int>());
return aTableModel;
}
@ -87,40 +83,35 @@ DFBrowserPane_AttributePaneModel* DFBrowserPane_TDataStdNamedData::createPaneMod
// =======================================================================
QWidget* DFBrowserPane_TDataStdNamedData::CreateWidget (QWidget* theParent)
{
QWidget* aMainWidget = new QWidget (theParent);
QVBoxLayout* aLay = new QVBoxLayout (aMainWidget);
QTabWidget* aMainWidget = new QTabWidget (theParent);
// gray text is visualized by default, better the black one (Qt4)
QPalette aPalette = aMainWidget->palette();
aPalette.setColor(QPalette::Foreground, Qt::black);
aMainWidget->setPalette (aPalette);
myTableView = new DFBrowserPane_TableView (aMainWidget);
myTableView->SetModel (getPaneModel());
myIntValuesContent = new DFBrowserPane_HelperGroupContent ("Named integers", aMainWidget, myTableView);
aLay->addWidget (myIntValuesContent);
aMainWidget->addTab (myTableView, "Integers");
myRealValues = new DFBrowserPane_TableView (aMainWidget);
myRealValues->SetModel (myRealValuesModel);
myRealValuesContent = new DFBrowserPane_HelperGroupContent ("Named reals", aMainWidget, myRealValues);
aLay->addWidget (myRealValuesContent);
aMainWidget->addTab (myRealValues, "Reals");
myStringValues = new DFBrowserPane_TableView (aMainWidget);
myStringValues->SetModel (myStringValuesModel);
myStringValuesContent = new DFBrowserPane_HelperGroupContent ("Named strings", aMainWidget, myStringValues);
aLay->addWidget (myStringValuesContent);
aMainWidget->addTab (myStringValues, "Strings");
myByteValues = new DFBrowserPane_TableView (aMainWidget);
myByteValues->SetModel (myByteValuesModel);
myByteValuesContent = new DFBrowserPane_HelperGroupContent ("Named bytes", aMainWidget, myByteValues);
aLay->addWidget (myByteValuesContent);
aMainWidget->addTab (myByteValues, "Bytes");
myIntArrayValues = new DFBrowserPane_TableView (aMainWidget);
myIntArrayValues->SetModel (myIntArrayValuesModel);
myIntArrayValuesContent = new DFBrowserPane_HelperGroupContent ("Named integer arrays", aMainWidget, myIntArrayValues);
aLay->addWidget (myIntArrayValuesContent);
aMainWidget->addTab (myIntArrayValues, "ArraysOfIntegers");
myRealArrayValues = new DFBrowserPane_TableView (aMainWidget);
myRealArrayValues->SetModel (myRealArrayModel);
myRealArrayValuesContent = new DFBrowserPane_HelperGroupContent ("Named real arrays", aMainWidget, myRealArrayValues);
aLay->addWidget (myRealArrayValuesContent);
aLay->addStretch (1);
aMainWidget->addTab (myRealArrayValues, "ArraysOfReals");
return aMainWidget;
}
@ -135,11 +126,23 @@ void DFBrowserPane_TDataStdNamedData::Init (const Handle(TDF_Attribute)& theAttr
GetValues (theAttribute, aValues);
getPaneModel()->Init (getPartOfValues (VALUES_INTEGER, VALUES_REAL, aValues));
if (myTableView)
myTableView->GetTableView()->resizeColumnToContents (0);
myRealValuesModel->Init (getPartOfValues (VALUES_REAL, VALUES_STRING, aValues));
if (myRealValues)
myRealValues->GetTableView()->resizeColumnToContents (0);
myStringValuesModel->Init (getPartOfValues (VALUES_STRING, VALUES_BYTE, aValues));
if (myStringValues)
myStringValues->GetTableView()->resizeColumnToContents (0);
myByteValuesModel->Init (getPartOfValues (VALUES_BYTE, VALUES_INT_ARRAY, aValues));
if (myByteValues)
myByteValues->GetTableView()->resizeColumnToContents (0);
myIntArrayValuesModel->Init (getPartOfValues (VALUES_INT_ARRAY, VALUES_REAL_ARRAY, aValues));
if (myIntArrayValues)
myIntArrayValues->GetTableView()->resizeColumnToContents (0);
myRealArrayModel->Init (getPartOfValues (VALUES_REAL_ARRAY, "", aValues));
if (myRealArrayValues)
myRealArrayValues->GetTableView()->resizeColumnToContents (0);
}
// =======================================================================

View File

@ -21,7 +21,6 @@
#include <Standard.hxx>
class DFBrowserPane_AttributePaneModel;
class DFBrowserPane_HelperGroupContent;
class DFBrowserPane_TableView;
//! \class DFBrowserPane_TDataStdNamedData
@ -68,29 +67,22 @@ private:
DFBrowserPane_AttributePaneModel* createPaneModel();
private:
//! myPaneMode and myTableView are used for int values
DFBrowserPane_HelperGroupContent* myIntValuesContent; //!< check box of values using
DFBrowserPane_AttributePaneModel* myRealValuesModel; //!< real values model
DFBrowserPane_TableView* myRealValues; //!< values table view
DFBrowserPane_HelperGroupContent* myRealValuesContent; //!< check box of values using
DFBrowserPane_AttributePaneModel* myStringValuesModel; //!< string values model
DFBrowserPane_TableView* myStringValues; //!< values table view
DFBrowserPane_HelperGroupContent* myStringValuesContent; //!< check box of values using
DFBrowserPane_AttributePaneModel* myByteValuesModel; //!< byte values model
DFBrowserPane_TableView* myByteValues; //!< values table view
DFBrowserPane_HelperGroupContent* myByteValuesContent; //!< check box of values using
DFBrowserPane_AttributePaneModel* myIntArrayValuesModel; //!< int array values model
DFBrowserPane_TableView* myIntArrayValues; //!< values table view
DFBrowserPane_HelperGroupContent* myIntArrayValuesContent; //!< check box of values using
DFBrowserPane_AttributePaneModel* myRealArrayModel; //!< real array values model
DFBrowserPane_TableView* myRealArrayValues; //!< values table view
DFBrowserPane_HelperGroupContent* myRealArrayValuesContent; //!< check box of values using
};
#endif

View File

@ -29,6 +29,7 @@ void DFBrowserPane_TDataStdReal::GetValues (const Handle(TDF_Attribute)& theAttr
if (anAttribute.IsNull())
return;
theValues.append ("Get");
theValues.append (anAttribute->Get());
}

View File

@ -32,5 +32,8 @@ void DFBrowserPane_TDataStdRealList::GetValues (const Handle(TDF_Attribute)& the
return;
for (TColStd_ListIteratorOfListOfReal aRealListIt(anAttribute->List()); aRealListIt.More(); aRealListIt.Next())
{
theValues.append ("Value");
theValues.append (aRealListIt.Value());
}
}

View File

@ -94,7 +94,7 @@ void DFBrowserPane_TDataStdReferenceArray::GetReferences (const Handle(TDF_Attri
{
if (!getTableView())
return;
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 0);
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 1);
Handle(TDataStd_ReferenceArray) anAttribute = Handle(TDataStd_ReferenceArray)::DownCast (theAttribute);
if (anAttribute.IsNull())

View File

@ -35,7 +35,10 @@ void DFBrowserPane_TDataStdReferenceList::GetValues (const Handle(TDF_Attribute)
return;
for (TDF_ListIteratorOfLabelList aLabelIt(anAttribute->List()); aLabelIt.More(); aLabelIt.Next())
{
theValues.append ("Value");
theValues.append (DFBrowserPane_Tools::GetEntry (aLabelIt.Value()).ToCString());
}
}
// =======================================================================
@ -46,7 +49,7 @@ void DFBrowserPane_TDataStdReferenceList::GetReferences (const Handle(TDF_Attrib
NCollection_List<TDF_Label>& theRefLabels,
Handle(Standard_Transient)& /*theRefPresentation*/)
{
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 0);
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 1);
Handle(TDataStd_ReferenceList) anAttribute = Handle(TDataStd_ReferenceList)::DownCast (theAttribute);
if (anAttribute.IsNull())
return;

View File

@ -23,6 +23,7 @@
#include <TDataStd_TreeNode.hxx>
#include <QHeaderView>
#include <QVariant>
#include <QTableView>
#include <QTreeView>
@ -35,7 +36,7 @@
// purpose :
// =======================================================================
DFBrowserPane_TDataStdTreeNode::DFBrowserPane_TDataStdTreeNode()
: DFBrowserPane_AttributePane()
: DFBrowserPane_AttributePane(), myTreeNodeView (0)
{
myModel = new DFBrowserPane_TDataStdTreeNodeModel (0);
mySelectionModels.clear(); // do not use selection model of parent pane
@ -52,6 +53,7 @@ QWidget* DFBrowserPane_TDataStdTreeNode::CreateWidget (QWidget* theParent)
aMainWidget->setVisible (false);
myTableView = new DFBrowserPane_TableView (aMainWidget, getTableColumnWidths());
myTableView->SetVisibleHorizontalHeader (false);
DFBrowserPane_TableView::SetFixedRowCount (1, myTableView->GetTableView());
myTableView->SetModel (myPaneModel);
@ -60,11 +62,13 @@ QWidget* DFBrowserPane_TDataStdTreeNode::CreateWidget (QWidget* theParent)
aLay->addWidget (myTableView);
myTreeNodeView = new QTreeView (theParent);
myTreeNodeView->header()->setVisible (false);
myTreeNodeView->setModel (myModel);
myTreeNodeView->setSelectionModel (mySelectionModels.front());
myTreeNodeView->setSelectionBehavior (QAbstractItemView::SelectRows);
aLay->addWidget (myTreeNodeView);
aLay->setStretch (1, 1);
return aMainWidget;
}
@ -77,14 +81,19 @@ void DFBrowserPane_TDataStdTreeNode::Init (const Handle(TDF_Attribute)& theAttri
Handle(TDataStd_TreeNode) aTreeNode = Handle(TDataStd_TreeNode)::DownCast (theAttribute);
bool aDefaultGUID = aTreeNode->ID() != aTreeNode->GetDefaultTreeID();
myTableView->setVisible (!aDefaultGUID);
if (!aDefaultGUID) {
if (myTableView)
myTableView->setVisible (!aDefaultGUID);
if (!aDefaultGUID)
{
QList<QVariant> aValues;
char aStr[256];
aTreeNode->ID().ToCString (aStr);
TCollection_AsciiString aString(aStr);
aValues.append (DFBrowserPane_Tools::ToString(aString));
aValues << "GetDefaultTreeID" << DFBrowserPane_Tools::ToString (aString);
getPaneModel()->Init (aValues);
if (myTableView)
myTableView->GetTableView()->resizeColumnToContents (0);
}
@ -96,8 +105,8 @@ void DFBrowserPane_TDataStdTreeNode::Init (const Handle(TDF_Attribute)& theAttri
Handle(TDataStd_TreeNode) aRootItem = aTreeNode->Root();
aModel->SetAttribute (aRootItem);
QModelIndex anIndex = aModel->FindIndex (theAttribute);
if (anIndex.isValid())
QModelIndex anIndex = aModel->FindIndex (theAttribute, QModelIndex());
if (myTreeNodeView && anIndex.isValid())
{
myTreeNodeView->setExpanded (anIndex.parent(), true);
myTreeNodeView->scrollTo (anIndex);
@ -160,5 +169,19 @@ void DFBrowserPane_TDataStdTreeNode::GetReferences (const Handle(TDF_Attribute)&
if (anAttribute.IsNull())
return;
theRefLabels.Append (anAttribute->Label());
QModelIndexList aSelectedIndices = myTreeNodeView->selectionModel()->selectedIndexes();
for (int aSelectedId = 0, aSize = aSelectedIndices.size(); aSelectedId < aSize; aSelectedId++)
{
QModelIndex anIndex = aSelectedIndices[aSelectedId];
TreeModel_ItemBasePtr anAttributeItem = TreeModel_ModelBase::GetItemByIndex (anIndex);
DFBrowserPane_TDataStdTreeNodeItemPtr anAttributeNodeItem =
itemDynamicCast<DFBrowserPane_TDataStdTreeNodeItem>(anAttributeItem);
Handle(TDF_Attribute) aNodeAttribute = anAttributeNodeItem->GetAttribute();
if (aNodeAttribute.IsNull())
continue;
theRefLabels.Append (aNodeAttribute->Label());
}
}

View File

@ -14,6 +14,7 @@
// commercial license or contractual agreement.
#include <inspector/DFBrowserPane_TDataStdTreeNodeItem.hxx>
#include <inspector/DFBrowserPane_Tools.hxx>
#include <inspector/DFBrowser_Module.hxx>
#include <inspector/DFBrowser_Tools.hxx>
@ -82,6 +83,7 @@ QVariant DFBrowserPane_TDataStdTreeNodeItem::initValue (const int theRole) const
case Qt::DisplayRole:
case Qt::ToolTipRole: return getName();
case Qt::ForegroundRole: return myIsCurrentItem ? QColor (Qt::darkBlue) : QColor (Qt::black);
case Qt::BackgroundRole: return myIsCurrentItem ? DFBrowserPane_Tools::LightHighlightColor() : QVariant();
default: break;
}
return QVariant();

View File

@ -51,9 +51,13 @@ public:
//! \param theAttribute an attribute
void SetAttribute (const Handle(TDF_Attribute)& theAttribute) { myAttribute = theAttribute; }
//! Returns the current attribute
//! \return an attribute
Handle(TDF_Attribute) GetAttribute () const { initItem(); return myAttribute; }
//! Set state if the attribute is current(corresponds to the selected attribute in tree)
//! \param theCurrent boolean state
void setCurrentAttribute (const bool theCurrent) { myIsCurrentItem = theCurrent; }
void setCurrentAttribute (const bool theCurrent) { Reset(); myIsCurrentItem = theCurrent; }
//! Returns child attribute of the current attribute
//! \param theChildRow an index of a child attribute

View File

@ -41,3 +41,37 @@ void DFBrowserPane_TDataStdTreeNodeModel::SetAttribute (const Handle(TDF_Attribu
aRootItem->SetAttribute (theAttribute);
EmitLayoutChanged();
}
// =======================================================================
// function : FindIndex
// purpose :
// =======================================================================
QModelIndex DFBrowserPane_TDataStdTreeNodeModel::FindIndex (const Handle(TDF_Attribute)& theAttribute,
const QModelIndex theParentIndex)
{
QModelIndex aParentIndex = theParentIndex;
if (!aParentIndex.isValid())
aParentIndex = index (0, 0);
DFBrowserPane_TDataStdTreeNodeItemPtr aParentItem = itemDynamicCast<DFBrowserPane_TDataStdTreeNodeItem>
(TreeModel_ModelBase::GetItemByIndex (aParentIndex));
if (aParentItem->GetAttribute() == theAttribute)
return aParentIndex;
for (int aChildId = 0, aCount = aParentItem->rowCount(); aChildId < aCount; aChildId++)
{
QModelIndex anIndex = index (aChildId, 0, aParentIndex);
TreeModel_ItemBasePtr anItemBase = TreeModel_ModelBase::GetItemByIndex (anIndex);
DFBrowserPane_TDataStdTreeNodeItemPtr anItem = itemDynamicCast<DFBrowserPane_TDataStdTreeNodeItem>(anItemBase);
if (anItem->GetAttribute() == theAttribute)
return anIndex;
QModelIndex aSubIndex = FindIndex (theAttribute, anIndex);
if (aSubIndex.isValid())
return aSubIndex;
}
return QModelIndex();
}

View File

@ -42,8 +42,11 @@ public:
//! \param theAttribute a current attribute
Standard_EXPORT void SetAttribute (const Handle(TDF_Attribute)& theAttribute);
//! Returns model index by the attribute.
QModelIndex FindIndex (const Handle(TDF_Attribute)& theAttribute) { (void)theAttribute; return QModelIndex(); }
//! Returns model index by the attribute. The method is recursive.
//! \param theAttribute an attribute that is searched
//! \param theParentIndex an index of the parent item
//! \return the model index
QModelIndex FindIndex (const Handle(TDF_Attribute)& theAttribute, const QModelIndex theParentIndex);
//! Returns count of columns in the model.
//! \param theParent an index of the parent item

View File

@ -33,6 +33,7 @@ void DFBrowserPane_TDataStdUAttribute::GetValues (const Handle(TDF_Attribute)& t
theAttribute->ID().ToCString(aStr);
TCollection_AsciiString aString(aStr);
theValues.append ("ID");
theValues.append (DFBrowserPane_Tools::ToString (aString));
}

View File

@ -23,6 +23,7 @@
#include <TDocStd_Owner.hxx>
#include <TDF_Delta.hxx>
#include <TDF_ListIteratorOfDeltaList.hxx>
#include <Standard_Version.hxx>
#include <QVariant>
#include <QWidget>
@ -38,11 +39,6 @@
DFBrowserPane_TDocStdOwner::DFBrowserPane_TDocStdOwner()
: DFBrowserPane_AttributePane()
{
getPaneModel()->SetColumnCount (2);
QList<QVariant> theValues;
theValues << "Method" << "Value";
getPaneModel()->SetHeaderValues (theValues, Qt::Horizontal);
}
// =======================================================================
@ -59,42 +55,29 @@ void DFBrowserPane_TDocStdOwner::GetValues (const Handle(TDF_Attribute)& theAttr
if (aDocument.IsNull())
return;
theValues << STANDARD_TYPE (TDocStd_Document)->Name() << ""
<< "IsSaved" << DFBrowserPane_Tools::BoolToStr (aDocument->IsSaved())
<< "IsChanged" << DFBrowserPane_Tools::BoolToStr (aDocument->IsChanged())
<< "GetSavedTime" << DFBrowserPane_Tools::BoolToStr (aDocument->GetSavedTime())
<< "GetName" << (aDocument->IsSaved() ? DFBrowserPane_Tools::ToString (aDocument->GetName()) : "")
<< "GetPath" << (aDocument->IsSaved() ? DFBrowserPane_Tools::ToString (aDocument->GetPath()) : "")
<< "Main" << DFBrowserPane_Tools::GetEntry (aDocument->Main()).ToCString()
<< "IsEmpty" << DFBrowserPane_Tools::BoolToStr (aDocument->IsEmpty())
<< "IsValid" << DFBrowserPane_Tools::BoolToStr (aDocument->IsValid())
<< "HasOpenCommand" << DFBrowserPane_Tools::BoolToStr (aDocument->HasOpenCommand())
<< "GetUndoLimit" << QString::number (aDocument->GetUndoLimit())
<< "GetAvailableUndos" << QString::number (aDocument->GetAvailableUndos())
<< "GetUndos" << convertToString (aDocument->GetUndos())
<< "GetAvailableRedos" << QString::number (aDocument->GetAvailableRedos())
<< "GetRedos" << convertToString (aDocument->GetRedos())
<< "StorageFormat" << DFBrowserPane_Tools::ToString (aDocument->StorageFormat())
<< "IsNestedTransactionMode" << DFBrowserPane_Tools::BoolToStr (aDocument->IsNestedTransactionMode())
<< "ModificationMode" << DFBrowserPane_Tools::BoolToStr (aDocument->ModificationMode())
<< STANDARD_TYPE (CDM_Document)->Name() << "";
TCollection_AsciiString aDocumentInfo = DFBrowserPane_Tools::GetPointerInfo (aDocument).ToCString();
TColStd_SequenceOfExtendedString anExtensions;
aDocument->Extensions(anExtensions);
theValues << "Extensions" << convertToString (anExtensions)
TCollection_AsciiString aSeparationStr = "---------------------------";
theValues << aSeparationStr.ToCString() << aSeparationStr.ToCString()
<< STANDARD_TYPE (CDM_Document)->Name() << aDocumentInfo.ToCString()
<< aSeparationStr.ToCString() << aSeparationStr.ToCString()
<< "StorageFormat" << DFBrowserPane_Tools::ToString (aDocument->StorageFormat())
<< "Extensions" << convertToString (anExtensions)
<< "FromReferencesNumber" << QString::number (aDocument->FromReferencesNumber())
<< "ToReferencesNumber" << QString::number (aDocument->ToReferencesNumber())
<< "IsReadOnly" << DFBrowserPane_Tools::BoolToStr (aDocument->IsReadOnly())
<< "Modifications" << QString::number (aDocument->Modifications());
TColStd_SequenceOfExtendedString aComments;
aDocument->Extensions(aComments);
// if the document application is empty, Application() sents an exception, it is called in LoadResources() of:
// FindFileExtension, FindDescription and others, so we need the check for it
bool isDocumentOpened = aDocument->IsOpened();
if (!aDocument->IsOpened())
return; // application is empty, an exception is sent in Application(),
// an exception is sent in FindDescription if the application is not defined
// CDM_Document methods
theValues << "Comments" << convertToString (aComments)
<< "Presentation" << ""
<< "Presentation" << DFBrowserPane_Tools::ToString (aDocument->Presentation())
<< "IsStored" << DFBrowserPane_Tools::BoolToStr (aDocument->IsStored())
<< "StorageVersion" << QString::number (aDocument->StorageVersion())
<< "Folder" << (aDocument->IsStored() ? DFBrowserPane_Tools::ToString (aDocument->Folder()) : "")
@ -105,25 +88,41 @@ void DFBrowserPane_TDocStdOwner::GetValues (const Handle(TDF_Attribute)& theAttr
<< "RequestedPreviousVersion" << (aDocument->HasRequestedPreviousVersion() ?
DFBrowserPane_Tools::ToString (aDocument->RequestedPreviousVersion()) : "")
<< "RequestedComment" << DFBrowserPane_Tools::ToString (aDocument->RequestedComment())
<< "FindFileExtension" << DFBrowserPane_Tools::BoolToStr (aDocument->FindFileExtension())
<< "FileExtension" << DFBrowserPane_Tools::ToString (aDocument->FileExtension())
<< "FindDataType" << "" // DFBrowserPane_Tools::BoolToStr (aDocument->FindDataType())
<< "DataType" << ""// DFBrowserPane_Tools::ToString (aDocument->DataType())
<< "FindVersionDataType" << ""// DFBrowserPane_Tools::BoolToStr (aDocument->FindVersionDataType())
<< "VersionDataType" << ""// DFBrowserPane_Tools::ToString (aDocument->VersionDataType())
<< "FindDescription" << DFBrowserPane_Tools::BoolToStr (aDocument->FindDescription())
<< "Description" << DFBrowserPane_Tools::ToString (aDocument->Description())
<< "FindDomain" << ""// DFBrowserPane_Tools::BoolToStr (aDocument->FindDomain())
<< "Domain" << ""// DFBrowserPane_Tools::ToString (aDocument->Domain())
<< "FindStoragePlugin" << ""// DFBrowserPane_Tools::BoolToStr (aDocument->FindStoragePlugin())
<< "StoragePlugin" << ""// DFBrowserPane_Tools::ToString (aDocument->StoragePlugin())
<< "FindFileExtension" << (isDocumentOpened ? DFBrowserPane_Tools::BoolToStr (aDocument->FindFileExtension()) : "")
<< "FileExtension" << (isDocumentOpened ? DFBrowserPane_Tools::ToString (aDocument->FileExtension()) : "")
<< "FindDescription" << (isDocumentOpened ? DFBrowserPane_Tools::BoolToStr (aDocument->FindDescription()) : "")
<< "Description" << (isDocumentOpened ? DFBrowserPane_Tools::ToString (aDocument->Description()) : "")
<< "IsModified" << DFBrowserPane_Tools::BoolToStr (aDocument->IsModified())
<< "IsOpened" << DFBrowserPane_Tools::BoolToStr (aDocument->IsOpened())
<< "CanClose" << DFBrowserPane_Tools::BoolToStr (aDocument->CanClose())
<< "CanClose" << DFBrowserPane_Tools::ToName(DB_CDM_CAN_CLOSE_STATUS, aDocument->CanClose()).ToCString()
<< "ReferenceCounter" << QString::number (aDocument->ReferenceCounter());
// TODO IsInSession, IsStored, Name, IsReadOnly, IsUpToDate, CanCloseReference, IsOpened
// TDocStd_Document methods
TCollection_AsciiString aDocumentDataInfo = !aDocument->GetData().IsNull()
? DFBrowserPane_Tools::GetPointerInfo (aDocument->GetData()).ToCString() : "";
theValues << aSeparationStr.ToCString() << aSeparationStr.ToCString()
<< STANDARD_TYPE (TDocStd_Document)->Name() << ""
<< aSeparationStr.ToCString() << aSeparationStr.ToCString()
<< "IsSaved" << DFBrowserPane_Tools::BoolToStr (aDocument->IsSaved())
<< "IsChanged" << DFBrowserPane_Tools::BoolToStr (aDocument->IsChanged())
<< "GetSavedTime" << DFBrowserPane_Tools::BoolToStr (aDocument->GetSavedTime())
<< "GetName" << (aDocument->IsSaved() ? DFBrowserPane_Tools::ToString (aDocument->GetName()) : "")
<< "GetPath" << (aDocument->IsSaved() ? DFBrowserPane_Tools::ToString (aDocument->GetPath()) : "")
<< "GetData" << aDocumentDataInfo.ToCString()
<< "Main" << DFBrowserPane_Tools::GetEntry (aDocument->Main()).ToCString()
<< "IsEmpty" << DFBrowserPane_Tools::BoolToStr (aDocument->IsEmpty())
<< "IsValid" << DFBrowserPane_Tools::BoolToStr (aDocument->IsValid())
<< "HasOpenCommand" << DFBrowserPane_Tools::BoolToStr (aDocument->HasOpenCommand())
<< "GetUndoLimit" << QString::number (aDocument->GetUndoLimit())
<< "GetAvailableUndos" << QString::number (aDocument->GetAvailableUndos())
<< "GetUndos" << convertToString (aDocument->GetUndos())
<< "GetAvailableRedos" << QString::number (aDocument->GetAvailableRedos())
<< "GetRedos" << convertToString (aDocument->GetRedos())
#if OCC_VERSION_HEX > 0x070100
<< "EmptyLabelsSavingMode" << DFBrowserPane_Tools::BoolToStr (aDocument->EmptyLabelsSavingMode())
#endif
<< "IsNestedTransactionMode" << DFBrowserPane_Tools::BoolToStr (aDocument->IsNestedTransactionMode())
<< "ModificationMode" << DFBrowserPane_Tools::BoolToStr (aDocument->ModificationMode());
}
// =======================================================================

View File

@ -27,7 +27,9 @@ void DFBrowserPane_TDocStdXLink::GetValues (const Handle(TDF_Attribute)& theAttr
Handle(TDocStd_XLink) anAttribute = Handle(TDocStd_XLink)::DownCast (theAttribute);
if (anAttribute.IsNull())
return;
theValues.append ("LabelEntry");
theValues.append (anAttribute->LabelEntry().ToCString());
theValues.append ("DocumentEntry");
theValues.append (anAttribute->DocumentEntry().ToCString());
}

View File

@ -32,6 +32,7 @@ void DFBrowserPane_TFunctionFunction::GetValues (const Handle(TDF_Attribute)& th
anAttribute->GetDriverGUID().ToCString (aStr);
TCollection_AsciiString aString(aStr);
theValues.append ("GetDriverGUID");
theValues.append (DFBrowserPane_Tools::ToString(aString));
}

View File

@ -59,20 +59,13 @@ const int COLUMN_EVOLUTION_WIDTH = 90;
DFBrowserPane_TNamingNamedShape::DFBrowserPane_TNamingNamedShape()
: DFBrowserPane_AttributePane(), myEvolutionTableView (0), myHelperExport (0)
{
QList<QVariant> aHeaderValues;
aHeaderValues << "Value" << "Type" << "BREP" << "SV";
getPaneModel()->SetHeaderValues (aHeaderValues, Qt::Horizontal);
getPaneModel()->SetColumnCount (aHeaderValues.count());
getPaneModel()->SetColumnCount (5);
aHeaderValues.clear();
aHeaderValues << "Version" << "Evolution" << "Shape" << "Current Shape" << "Original Shape";
getPaneModel()->SetHeaderValues (aHeaderValues, Qt::Vertical);
aHeaderValues.clear();
aHeaderValues << "New Shape" << "Type" << "" << "Old Shape" << "Type" << "Label" << "" << "Evolution" << "isModified";
myEvolutionPaneModel = new DFBrowserPane_AttributePaneModel();
myEvolutionPaneModel->SetHeaderValues (aHeaderValues, Qt::Horizontal);
myEvolutionPaneModel->SetColumnCount (aHeaderValues.count());
myEvolutionPaneModel->SetColumnCount (11);
QList<int> anItalicColumns;
anItalicColumns << 2 << 6;
myEvolutionPaneModel->SetItalicColumns (anItalicColumns);
QItemSelectionModel* aSelectionModel = new QItemSelectionModel (myEvolutionPaneModel);
mySelectionModels.push_back (aSelectionModel);
}
@ -87,6 +80,7 @@ QWidget* DFBrowserPane_TNamingNamedShape::CreateWidget (QWidget* theParent)
aMainWidget->setVisible (false);
myTableView = new DFBrowserPane_TableView (aMainWidget);
myTableView->GetTableView()->verticalHeader()->setVisible (false);
myTableView->SetModel (myPaneModel);
QTableView* aTableView = myTableView->GetTableView();
aTableView->setSelectionBehavior (QAbstractItemView::SelectItems);
@ -95,11 +89,8 @@ QWidget* DFBrowserPane_TNamingNamedShape::CreateWidget (QWidget* theParent)
aSelectionModelsIt++;
aTableView->horizontalHeader()->setStretchLastSection (false);
aTableView->setColumnWidth (0, COLUMN_POINTER_WIDTH);
aTableView->setColumnWidth (1, COLUMN_TYPE_WIDTH);
aTableView->setColumnWidth (2, COLUMN_EXPORT_WIDTH);
aTableView->setColumnWidth (3, COLUMN_EXPORT_WIDTH);
aTableView->verticalHeader()->setVisible (true);
aTableView->setColumnWidth (4, COLUMN_EXPORT_WIDTH);
DFBrowserPane_ItemDelegateButton* anItemDelegate = new DFBrowserPane_ItemDelegateButton (aTableView,
":/icons/export_shape.png");
QList<int> aRows;
@ -107,12 +98,12 @@ QWidget* DFBrowserPane_TNamingNamedShape::CreateWidget (QWidget* theParent)
anItemDelegate->SetFreeRows (aRows);
QObject::connect (anItemDelegate, SIGNAL (buttonPressed (const QModelIndex&)),
&myHelperExport, SLOT (OnButtonPressed (const QModelIndex&)));
aTableView->setItemDelegateForColumn (2, anItemDelegate);
aTableView->setItemDelegateForColumn (3, anItemDelegate);
DFBrowserPane_ItemDelegateButton* anItemDelegate2 = new DFBrowserPane_ItemDelegateButton (aTableView,
":/icons/folder_export.png");
anItemDelegate2->SetFreeRows (aRows);
aTableView->setItemDelegateForColumn (3, anItemDelegate2);
aTableView->setItemDelegateForColumn (4, anItemDelegate2);
myEvolutionTableView = new DFBrowserPane_TableView (aMainWidget);
myEvolutionTableView->SetModel (myEvolutionPaneModel);
@ -120,21 +111,19 @@ QWidget* DFBrowserPane_TNamingNamedShape::CreateWidget (QWidget* theParent)
aTableView->setSelectionModel (*aSelectionModelsIt);
QList<int> aColumnWidths;
aColumnWidths << COLUMN_POINTER_WIDTH << COLUMN_TYPE_WIDTH << COLUMN_EXPORT_WIDTH << COLUMN_POINTER_WIDTH
<< COLUMN_TYPE_WIDTH << COLUMN_REFERENCE_WIDTH << COLUMN_EXPORT_WIDTH << COLUMN_EVOLUTION_WIDTH;
for (int aColumnId = 0, aCount = aColumnWidths.size(); aColumnId < aCount; aColumnId++)
aTableView->setColumnWidth (aColumnId, aColumnWidths[aColumnId]);
aTableView->horizontalHeader()->setStretchLastSection (false);
aTableView->setColumnWidth (5, COLUMN_EXPORT_WIDTH);
aTableView->setColumnWidth (10, COLUMN_EXPORT_WIDTH);
anItemDelegate = new DFBrowserPane_ItemDelegateButton (myEvolutionTableView->GetTableView(), ":/icons/export_shape.png");
QObject::connect (anItemDelegate, SIGNAL (buttonPressed (const QModelIndex&)),
&myHelperExport, SLOT (OnButtonPressed (const QModelIndex&)));
myEvolutionTableView->GetTableView()->setItemDelegateForColumn (2, anItemDelegate);
myEvolutionTableView->GetTableView()->setItemDelegateForColumn (5, anItemDelegate);
anItemDelegate = new DFBrowserPane_ItemDelegateButton (myEvolutionTableView->GetTableView(), ":/icons/export_shape.png");
QObject::connect (anItemDelegate, SIGNAL (buttonPressed (const QModelIndex&)),
&myHelperExport, SLOT (OnButtonPressed (const QModelIndex&)));
myEvolutionTableView->GetTableView()->setItemDelegateForColumn (6, anItemDelegate);
myEvolutionTableView->GetTableView()->setItemDelegateForColumn (10, anItemDelegate);
QGridLayout* aLay = new QGridLayout (aMainWidget);
aLay->setContentsMargins (0, 0, 0, 0);
@ -153,56 +142,81 @@ void DFBrowserPane_TNamingNamedShape::Init (const Handle(TDF_Attribute)& theAttr
Handle(TNaming_NamedShape) aShapeAttr = Handle(TNaming_NamedShape)::DownCast (theAttribute);
myHelperExport.Clear();
// table view filling
QList<QVariant> aValues;
aValues << QString::number (aShapeAttr->Version()) << "" << "" << "";
aValues << DFBrowserPane_Tools::ToName (DB_NS_TYPE, aShapeAttr->Evolution()).ToCString() << "" << "" << "";
aValues << "Version" << QString::number (aShapeAttr->Version()) << "" << "" << "";
aValues << "Evolution" << DFBrowserPane_Tools::ToName (DB_NS_TYPE, aShapeAttr->Evolution()).ToCString() << "" << "" << "";
NCollection_List<TopoDS_Shape> aShapes;
{
TopoDS_Shape aShape = aShapeAttr->Get();
TCollection_AsciiString aShapeInfo = !aShape.IsNull() ? DFBrowserPane_Tools::GetPointerInfo (aShape.TShape()) : "";
aValues << aShapeInfo.ToCString() << DFBrowserPane_Tools::ShapeTypeInfo (aShape) << "" << "";
aShapes.Append (aShape);
QList<int> aFreeRows;
aFreeRows << 0 << 1;
TopoDS_Shape aCurrentShape = TNaming_Tool::CurrentShape (aShapeAttr);
TCollection_AsciiString aCurrentShapeInfo = !aCurrentShape.IsNull() ?
DFBrowserPane_Tools::GetPointerInfo (aCurrentShape.TShape()) : "";
aValues << aCurrentShapeInfo.ToCString() << DFBrowserPane_Tools::ShapeTypeInfo (aCurrentShape) << "" << "";
aShapes.Append (aCurrentShape);
TopoDS_Shape aShape = aShapeAttr->Get();
TCollection_AsciiString aShapeInfo = !aShape.IsNull() ? DFBrowserPane_Tools::GetPointerInfo (aShape.TShape()) : "";
aValues << "Shape" << aShapeInfo.ToCString() << DFBrowserPane_Tools::ShapeTypeInfo (aShape) << "" << "";
aShapes.Append (aShape);
if (aShape.IsNull())
aFreeRows << 2;
TopoDS_Shape aCurrentShape = TNaming_Tool::CurrentShape (aShapeAttr);
TCollection_AsciiString aCurrentShapeInfo = !aCurrentShape.IsNull() ?
DFBrowserPane_Tools::GetPointerInfo (aCurrentShape.TShape()) : "";
aValues << "CurrentShape" << aCurrentShapeInfo.ToCString()
<< DFBrowserPane_Tools::ShapeTypeInfo (aCurrentShape) << "" << "";
aShapes.Append (aCurrentShape);
if (aCurrentShape.IsNull())
aFreeRows << 3;
TopoDS_Shape anOriginalShape = TNaming_Tool::OriginalShape (aShapeAttr);
TCollection_AsciiString anOriginalShapeInfo = !anOriginalShape.IsNull() ?
DFBrowserPane_Tools::GetPointerInfo (anOriginalShape.TShape()) : "";
aValues << "OriginalShape" << anOriginalShapeInfo.ToCString()
<< DFBrowserPane_Tools::ShapeTypeInfo (anOriginalShape) << "" << "";
aShapes.Append (anOriginalShape);
if (anOriginalShape.IsNull())
aFreeRows << 4;
TopoDS_Shape anOriginalShape = TNaming_Tool::OriginalShape (aShapeAttr);
TCollection_AsciiString anOriginalShapeInfo = !anOriginalShape.IsNull() ?
DFBrowserPane_Tools::GetPointerInfo (aShape.TShape()) : "";
aValues << anOriginalShapeInfo.ToCString() << DFBrowserPane_Tools::ShapeTypeInfo (anOriginalShape) << "" << "";
aShapes.Append (anOriginalShape);
}
DFBrowserPane_AttributePaneModel* aModel = getPaneModel();
aModel->Init (aValues);
if (myTableView)
{
QTableView* aTableView = myTableView->GetTableView();
for (int i = 0; i < aModel->columnCount(); i++)
{
if (i == 3 || i == 4)
dynamic_cast<DFBrowserPane_ItemDelegateButton*>(aTableView->itemDelegateForColumn(3))->SetFreeRows (aFreeRows);
else
aTableView->resizeColumnToContents (i);
}
}
QModelIndexList anIndices;
int aRowId = 2;
for (NCollection_List<TopoDS_Shape>::Iterator aShapeIt (aShapes); aShapeIt.More(); aShapeIt.Next(), aRowId++)
{
const TopoDS_Shape& aShape = aShapeIt.Value();
if (aShape.IsNull())
if (aShapeIt.Value().IsNull())
continue;
anIndices.clear();
anIndices << aModel->index (aRowId, 2) << aModel->index (aRowId, 3);
myHelperExport.AddShape (aShape, anIndices);
anIndices << aModel->index (aRowId, 1) << aModel->index (aRowId, 2) <<
aModel->index (aRowId, 3) << aModel->index (aRowId, 4);
myHelperExport.AddShape (aShapeIt.Value(), anIndices);
}
// evolution table view filling
aValues.clear();
aRowId = 0;
bool aHasModified = false;
for (TNaming_Iterator aShapeAttrIt (aShapeAttr); aShapeAttrIt.More(); aShapeAttrIt.Next(), aRowId++)
{
const TopoDS_Shape& anOldShape = aShapeAttrIt.OldShape();
const TopoDS_Shape& aNewShape = aShapeAttrIt.NewShape();
Handle(TNaming_NamedShape) anOldAttr = TNaming_Tool::NamedShape (anOldShape, aShapeAttr->Label());
aValues << DFBrowserPane_Tools::ToName (DB_NS_TYPE, aShapeAttrIt.Evolution()).ToCString()
<< (aShapeAttrIt.IsModification() ? "modified" : "-");
aHasModified = aHasModified | aShapeAttrIt.IsModification();
aValues << "New:";
QString aLabelInfo;
if (!anOldAttr.IsNull())
{
@ -215,21 +229,21 @@ void DFBrowserPane_TNamingNamedShape::Init (const Handle(TDF_Attribute)& theAttr
<< DFBrowserPane_Tools::ShapeTypeInfo (aNewShape)
<< "";
else
aValues << "" << "" << "";
aValues << "-" << "-" << "";
aValues << "Old:";
if (!anOldShape.IsNull())
aValues << DFBrowserPane_Tools::GetPointerInfo (anOldShape.TShape()->This()).ToCString()
<< DFBrowserPane_Tools::ShapeTypeInfo (anOldShape)
<< aLabelInfo
<< "";
else
aValues << "" << "" << "" << "";
aValues << DFBrowserPane_Tools::ToName (DB_NS_TYPE, aShapeAttrIt.Evolution()).ToCString()
<< (aShapeAttrIt.IsModification() ? "true" : "false");
aValues << "-" << "-" << "-" << "";
}
if (myEvolutionTableView)
{
myEvolutionTableView->setVisible (aValues.size() > 0);
myEvolutionTableView->GetTableView()->setColumnHidden (1, !aHasModified);
myEvolutionPaneModel->Init (aValues);
aRowId = 0;
@ -241,18 +255,23 @@ void DFBrowserPane_TNamingNamedShape::Init (const Handle(TDF_Attribute)& theAttr
if (!aNewShape.IsNull())
{
anIndices.clear();
anIndices << myEvolutionPaneModel->index (aRowId, 0) << myEvolutionPaneModel->index (aRowId, 1)
<< myEvolutionPaneModel->index (aRowId, 2);
anIndices << myEvolutionPaneModel->index (aRowId, 3) << myEvolutionPaneModel->index (aRowId, 4)
<< myEvolutionPaneModel->index (aRowId, 5);
myHelperExport.AddShape (aNewShape, anIndices);
}
if (!anOldShape.IsNull())
{
anIndices.clear();
anIndices << myEvolutionPaneModel->index (aRowId, 3) << myEvolutionPaneModel->index (aRowId, 4)
<< myEvolutionPaneModel->index (aRowId, 5) << myEvolutionPaneModel->index (aRowId, 6);
anIndices << myEvolutionPaneModel->index (aRowId, 7) << myEvolutionPaneModel->index (aRowId, 8)
<< myEvolutionPaneModel->index (aRowId, 10);
myHelperExport.AddShape (anOldShape, anIndices);
}
}
for (int i = 0; i < myEvolutionPaneModel->columnCount(); i++)
{
if (i == 5 || i == 10) continue;
myEvolutionTableView->GetTableView()->resizeColumnToContents (i);
}
}
}
@ -335,7 +354,7 @@ int DFBrowserPane_TNamingNamedShape::GetSelectionKind (QItemSelectionModel* theM
if (aRow == 0 || aRow == 1)
return aKind;
if (aSelectedIndex.column() == 3)
if (aSelectedIndex.column() == 4)
aKind = DFBrowserPane_SelectionKind_ExportToShapeViewer;
return aKind;
@ -357,7 +376,7 @@ void DFBrowserPane_TNamingNamedShape::GetSelectionParameters (QItemSelectionMode
return;
QModelIndex aSelectedIndex = aSelectedIndices.first();
if (aSelectedIndex.column() != 3)
if (aSelectedIndex.column() != 4)
return;
const TopoDS_Shape& aShape = myHelperExport.GetShape (aSelectedIndex);
@ -377,7 +396,7 @@ void DFBrowserPane_TNamingNamedShape::GetReferences (const Handle(TDF_Attribute)
if (!myEvolutionTableView)
return;
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (
myEvolutionTableView->GetTableView(), 5);
myEvolutionTableView->GetTableView(), 9);
Handle(TNaming_NamedShape) aShapeAttr = Handle(TNaming_NamedShape)::DownCast (theAttribute);
for (TNaming_Iterator aShapeAttrIt (aShapeAttr); aShapeAttrIt.More(); aShapeAttrIt.Next())

View File

@ -44,15 +44,7 @@ DFBrowserPane_TNamingNaming::DFBrowserPane_TNamingNaming()
: DFBrowserPane_AttributePane(), myNamingView (0)
{
myNamingModel = new DFBrowserPane_AttributePaneModel();
QList<QVariant> aHeaderValues;
aHeaderValues << "Type" << "Shape Type" << "Stop Named Shape" << "Index";
aHeaderValues << "Key_TShape" << "Context Label" << "Orientation";
myNamingModel->SetHeaderValues (aHeaderValues, Qt::Vertical);
aHeaderValues.clear();
aHeaderValues << "Arguments";
getPaneModel()->SetHeaderValues (aHeaderValues, Qt::Horizontal);
myNamingModel->SetColumnCount (2);
}
// =======================================================================
@ -64,7 +56,7 @@ QWidget* DFBrowserPane_TNamingNaming::CreateWidget (QWidget* theParent)
QWidget* aMainWidget = new QWidget (theParent);
myNamingView = new DFBrowserPane_TableView (aMainWidget);
myNamingView->GetTableView()->verticalHeader()->setVisible (true);
myNamingView->GetTableView()->verticalHeader()->setVisible (false);
myNamingView->GetTableView()->horizontalHeader()->setVisible (false);
myNamingView->SetModel (myNamingModel);
@ -73,6 +65,7 @@ QWidget* DFBrowserPane_TNamingNaming::CreateWidget (QWidget* theParent)
myTableView->GetTableView()->setSelectionModel (mySelectionModels.front());
QGridLayout* aLay = new QGridLayout (aMainWidget);
aLay->setContentsMargins (0, 0, 0, 0);
aLay->addWidget (myNamingView);
aLay->addWidget (myTableView);
aLay->setRowStretch (1, 1);
@ -90,15 +83,19 @@ void DFBrowserPane_TNamingNaming::Init (const Handle(TDF_Attribute)& theAttribut
GetValues (theAttribute, aValues);
QList<QVariant> aNamingValues;
for (int anValueId = 0; anValueId < 7; anValueId++)
for (int anValueId = 0; anValueId < 14; anValueId++)
aNamingValues.append (aValues[anValueId]);
myNamingModel->Init (aNamingValues);
if (myNamingView)
myNamingView->GetTableView()->resizeColumnToContents (0);
QList<QVariant> aNamedShapesValues;
for (int anValueId = 7, aCount = aValues.size(); anValueId < aCount; anValueId++)
for (int anValueId = 14, aCount = aValues.size(); anValueId < aCount; anValueId++)
aNamedShapesValues.append (aValues[anValueId]);
getPaneModel()->Init (aNamedShapesValues);
if (myTableView)
myTableView->GetTableView()->resizeColumnToContents (0);
}
// =======================================================================
@ -113,21 +110,32 @@ void DFBrowserPane_TNamingNaming::GetValues (const Handle(TDF_Attribute)& theAtt
TNaming_Name aNamingName = anAttribute->GetName();
// values from 0-6
// values from 0-13
theValues.append ("Type");
theValues.append (DFBrowserPane_Tools::ToName (DB_NAMING_TYPE, aNamingName.Type()).ToCString());
theValues.append ("ShapeType");
theValues.append (DFBrowserPane_Tools::ToName (DB_SHAPE_TYPE, aNamingName.ShapeType()).ToCString());
Handle(TNaming_NamedShape) aStopShape = aNamingName.StopNamedShape();
theValues.append ("StopNamedShape");
theValues.append (!aStopShape.IsNull() ? DFBrowserPane_Tools::GetEntry (aStopShape->Label()).ToCString() : "");
theValues.append ("Index");
theValues.append (QString::number (aNamingName.Index()));
TopoDS_Shape aShape = aNamingName.Shape();
theValues.append ("Shape(TShape)");
theValues.append (!aShape.IsNull() ? DFBrowserPane_Tools::GetPointerInfo (aShape.TShape()->This()).ToCString() : "");
TDF_Label aContextLabel = aNamingName.ContextLabel();
theValues.append ("ContextLabel");
theValues.append (!aContextLabel.IsNull() ? DFBrowserPane_Tools::GetEntry (aContextLabel).ToCString() : "");
theValues.append ("Orientation");
theValues.append (DFBrowserPane_Tools::ToName (DB_ORIENTATION_TYPE, aNamingName.Orientation()).ToCString());
// values from 7 till count of arguments
for (TNaming_ListIteratorOfListOfNamedShape anArgIt(aNamingName.Arguments()); anArgIt.More(); anArgIt.Next())
// values from 14 till count of arguments
int anArgIndex = 1;
for (TNaming_ListIteratorOfListOfNamedShape anArgIt(aNamingName.Arguments()); anArgIt.More(); anArgIt.Next(), anArgIndex++)
{
theValues << "Argument";
theValues.append (DFBrowserPane_Tools::GetEntry (anArgIt.Value()->Label()).ToCString());
}
}
// =======================================================================
@ -145,7 +153,7 @@ Handle(Standard_Transient) DFBrowserPane_TNamingNaming::GetPresentation (const H
if (!aTableView) // the pane is not visualized yet
return aPresentation;
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (aTableView->GetTableView(), 0);
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (aTableView->GetTableView(), 1);
TNaming_Name aNamingName = anAttribute->GetName();
BRep_Builder aBuilder;
@ -182,7 +190,7 @@ void DFBrowserPane_TNamingNaming::GetReferences (const Handle(TDF_Attribute)& th
if (anAttribute.IsNull())
return;
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 0);
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 1);
for (TNaming_ListIteratorOfListOfNamedShape aNamingIt(anAttribute->GetName().Arguments()); aNamingIt.More(); aNamingIt.Next())
{
Handle(TNaming_NamedShape) aShapeAttr = aNamingIt.Value();

View File

@ -39,6 +39,10 @@
#include <QVariant>
#include <QWidget>
const int COLUMN_TYPE_WIDTH = 70;
const int COLUMN_POINTER_WIDTH = 90;
const int COLUMN_REFERENCE_WIDTH = 90;
// =======================================================================
// function : Constructor
// purpose :
@ -47,10 +51,11 @@ DFBrowserPane_TNamingUsedShapes::DFBrowserPane_TNamingUsedShapes()
: DFBrowserPane_AttributePane()
{
getPaneModel()->SetColumnCount (4);
getPaneModel()->SetItalicColumns (QList<int>());
QList<QVariant> theValues;
theValues << "ShapeType" << "Label Entry" << "Key_TShape" << "Value_TShape";
getPaneModel()->SetHeaderValues (theValues, Qt::Horizontal);
QList<QVariant> aValues;
aValues << "ShapeType" << "TShape" << "Label" << "RefShape";
getPaneModel()->SetHeaderValues (aValues, Qt::Horizontal);
}
// =======================================================================
@ -86,7 +91,7 @@ void DFBrowserPane_TNamingUsedShapes::GetValues (const Handle(TDF_Attribute)& th
for (std::list<TCollection_AsciiString>::const_iterator aRefIt = aReferences.begin(); aRefIt != aReferences.end(); aRefIt++)
{
aValues = anEntryValues[*aRefIt];
theValues << aValues[0] << QString ((*aRefIt).ToCString()) << aValues[1] << aValues[2];
theValues << aValues[0] << aValues[1] << QString ((*aRefIt).ToCString()) << aValues[2];
}
}
else
@ -97,8 +102,8 @@ void DFBrowserPane_TNamingUsedShapes::GetValues (const Handle(TDF_Attribute)& th
TopoDS_Shape aShape = aRefIt.Key();
theValues.append (!aShape.IsNull() ? DFBrowserPane_Tools::ToName (DB_SHAPE_TYPE, aShape.ShapeType()).ToCString()
: "EMPTY SHAPE");
theValues.append (DFBrowserPane_Tools::GetEntry (aRefIt.Value()->Label()).ToCString());
theValues.append (!aShape.IsNull() ? DFBrowserPane_Tools::GetPointerInfo (aShape.TShape()->This()).ToCString() : "");
theValues.append (DFBrowserPane_Tools::GetEntry (aRefIt.Value()->Label()).ToCString());
const TopoDS_Shape aValueShape = aRefIt.Value()->Shape();
theValues.append (!aValueShape.IsNull() ? DFBrowserPane_Tools::GetPointerInfo (aValueShape.TShape()->This()).ToCString() : "");
}
@ -152,10 +157,26 @@ void DFBrowserPane_TNamingUsedShapes::GetAttributeReferences (const Handle(TDF_A
if (anAttribute.IsNull())
return;
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 1);
QStringList aSelectedEntries = DFBrowserPane_TableView::GetSelectedColumnValues (getTableView()->GetTableView(), 2);
if (aSelectedEntries.isEmpty())
return;
for (TNaming_DataMapIteratorOfDataMapOfShapePtrRefShape aRefIt (anAttribute->Map()); aRefIt.More(); aRefIt.Next())
{
if (aSelectedEntries.contains (DFBrowserPane_Tools::GetEntry (aRefIt.Value()->Label()).ToCString()))
theRefAttributes.Append (aRefIt.Value()->NamedShape());
}
}
// =======================================================================
// function : getTableColumnWidths
// purpose :
// =======================================================================
QMap<int, int> DFBrowserPane_TNamingUsedShapes::getTableColumnWidths() const
{
QMap<int, int> aValues;
aValues[0] = COLUMN_TYPE_WIDTH; // "ShapeType"
aValues[1] = COLUMN_POINTER_WIDTH; // "Key_TShape"
aValues[2] = COLUMN_REFERENCE_WIDTH; // "Label Entry"
return aValues;
}

View File

@ -72,6 +72,11 @@ public:
NCollection_List<Handle(TDF_Attribute)>& theRefAttributes,
Handle(Standard_Transient)& theRefPresentation) Standard_OVERRIDE;
protected:
//! Defines widths of table columns
//! \return container of widths
Standard_EXPORT virtual QMap<int, int> getTableColumnWidths() const;
private:
NCollection_DataMap<Handle(TDF_Attribute), std::list<TCollection_AsciiString> > myAttributeRefs;

View File

@ -30,11 +30,6 @@
DFBrowserPane_TPrsStdAISPresentation::DFBrowserPane_TPrsStdAISPresentation()
: DFBrowserPane_AttributePane()
{
getPaneModel()->SetColumnCount (2);
QList<QVariant> theValues;
theValues << "Method" << "Value";
getPaneModel()->SetHeaderValues (theValues, Qt::Horizontal);
}
// =======================================================================
@ -57,10 +52,15 @@ void DFBrowserPane_TPrsStdAISPresentation::GetValues (const Handle(TDF_Attribute
if (anAttribute.IsNull())
return;
Handle(AIS_InteractiveObject) anIO = anAttribute->GetAIS();
theValues << "GetDriverGUID" << ""//DFBrowserPane_Tools::ToString (anAttribute->GetDriverGUID())
char aStr[256];
anAttribute->GetDriverGUID().ToCString(aStr);
TCollection_AsciiString aString(aStr);
theValues << "GetDriverGUID" << DFBrowserPane_Tools::ToString (aString)
<< "GetAIS" << (anIO.IsNull() ? "Null" : anAttribute->DynamicType()->Name())
<< "IsDisplayed" << DFBrowserPane_Tools::BoolToStr (anAttribute->IsDisplayed())
<< "GetContext()" << (!anIO->GetContext().IsNull() ?
<< "GetContext()" << ((!anIO.IsNull() && !anIO->GetContext().IsNull()) ?
DFBrowserPane_Tools::GetPointerInfo (anIO->GetContext()).ToCString() : "")
<< "HasOwnMaterial" << DFBrowserPane_Tools::BoolToStr (anAttribute->HasOwnMaterial())
<< "Material" << (anAttribute->HasOwnMaterial() ?

View File

@ -14,7 +14,9 @@
// commercial license or contractual agreement.
#include <inspector/DFBrowserPane_TPrsStdAISViewer.hxx>
#include <inspector/DFBrowserPane_Tools.hxx>
#include <AIS_InteractiveContext.hxx>
#include <TPrsStd_AISViewer.hxx>
#include <QVariant>
@ -23,6 +25,16 @@
// function :
// purpose :
// =======================================================================
void DFBrowserPane_TPrsStdAISViewer::GetValues (const Handle(TDF_Attribute)&, QList<QVariant>&)
void DFBrowserPane_TPrsStdAISViewer::GetValues (const Handle(TDF_Attribute)& theAttribute, QList<QVariant>& theValues)
{
Handle(TPrsStd_AISViewer) aViewerAttribute = Handle(TPrsStd_AISViewer)::DownCast (theAttribute);
if (!aViewerAttribute)
return;
Handle(AIS_InteractiveContext) aContext = aViewerAttribute->GetInteractiveContext();
TCollection_AsciiString aPointerInfo = !aContext.IsNull()
? DFBrowserPane_Tools::GetPointerInfo (aContext).ToCString() : "";
theValues << "GetInteractiveContext" << aPointerInfo.ToCString();
}

Some files were not shown because too many files have changed in this diff Show More