1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-04 13:13:25 +03:00

0029674: Improvements in Inspector tool

- preferences for dock windows geometry, tree view columns and current view projection;
- ViewControl package for common functionality between plugins;
- processing Location and Orientation for external TopoDS_Shape object
- 'F5' key to update content of each plugin
- visibility column in tree view (used now only in ShapeView)
- properties child item for context (presents tree of current Filters of context)
This commit is contained in:
nds
2018-03-23 16:08:11 +03:00
committed by bugmaster
parent 6dfdbb7ab8
commit 6822a3bef1
135 changed files with 4187 additions and 1603 deletions

View File

@@ -22,14 +22,6 @@ IMPLEMENT_STANDARD_RTTIEXT (TInspectorAPI_PluginParameters, Standard_Transient)
IMPLEMENT_STANDARD_RTTIEXT (TInspectorAPI_PluginParameters, Standard_Transient)
#endif
// =======================================================================
// function : Constructor
// purpose :
// =======================================================================
TInspectorAPI_PluginParameters::TInspectorAPI_PluginParameters()
{
}
// =======================================================================
// function : SetParameters
// purpose :
@@ -51,8 +43,8 @@ void TInspectorAPI_PluginParameters::SetParameters (const TCollection_AsciiStrin
void TInspectorAPI_PluginParameters::AddFileName (const TCollection_AsciiString& thePluginName,
const TCollection_AsciiString& theFileName)
{
if (myFileNames.IsBound(thePluginName))
myFileNames.ChangeFind(thePluginName).Append (theFileName);
if (myFileNames.IsBound (thePluginName))
myFileNames.ChangeFind (thePluginName).Append (theFileName);
else
{
NCollection_List<TCollection_AsciiString> aNames;
@@ -103,7 +95,7 @@ void TInspectorAPI_PluginParameters::SetSelected (const TCollection_AsciiString&
// =======================================================================
bool TInspectorAPI_PluginParameters::FindParameters (const TCollection_AsciiString& thePluginName)
{
return myParameters.IsBound(thePluginName);
return myParameters.IsBound (thePluginName);
}
// =======================================================================
@@ -122,7 +114,7 @@ const NCollection_List<Handle(Standard_Transient)>& TInspectorAPI_PluginParamete
// =======================================================================
bool TInspectorAPI_PluginParameters::FindFileNames (const TCollection_AsciiString& thePluginName)
{
return myFileNames.IsBound(thePluginName);
return myFileNames.IsBound (thePluginName);
}
// =======================================================================
@@ -141,7 +133,7 @@ const NCollection_List<TCollection_AsciiString>& TInspectorAPI_PluginParameters:
// =======================================================================
bool TInspectorAPI_PluginParameters::FindSelectedNames (const TCollection_AsciiString& thePluginName)
{
return mySelectedItemNames.IsBound(thePluginName);
return mySelectedItemNames.IsBound (thePluginName);
}
// =======================================================================
@@ -163,3 +155,131 @@ Standard_Boolean TInspectorAPI_PluginParameters::GetSelectedObjects (const TColl
{
return mySelectedObjects.Find (thePluginName, theObjects);
}
// =======================================================================
// function : toString
// purpose :
// =======================================================================
TCollection_AsciiString toString (const TopLoc_Location& theLocation)
{
TCollection_AsciiString anInfo;
gp_Trsf aTrsf = theLocation.Transformation();
for (int aRowId = 1; aRowId <= 3; aRowId++)
{
if (!anInfo.IsEmpty())
anInfo += " ";
for (int aColumnId = 1; aColumnId <= 4; aColumnId++)
{
if (aColumnId > 1)
anInfo += ",";
anInfo += TCollection_AsciiString (aTrsf.Value (aRowId, aColumnId));
}
}
return anInfo;
}
// =======================================================================
// function : ParametersToString
// purpose :
// =======================================================================
TCollection_AsciiString TInspectorAPI_PluginParameters::ParametersToString (const TopoDS_Shape& theShape)
{
const TopLoc_Location& aLocation = theShape.Location();
TCollection_AsciiString aLocationStr = toString (aLocation);
TopAbs_Orientation anOrientation = theShape.Orientation();
Standard_SStream aSStream;
TopAbs::Print (anOrientation, aSStream);
return TCollection_AsciiString (aSStream.str().c_str()) + ":" + aLocationStr;
}
// =======================================================================
// function : fromString
// purpose :
// =======================================================================
TopLoc_Location fromString (const TCollection_AsciiString& theValue)
{
NCollection_Mat4<Standard_Real> aValues;
TCollection_AsciiString aCurrentString = theValue;
Standard_Integer aPosition = aCurrentString.Search (" ");
if (aPosition < 0)
return TopLoc_Location();
TCollection_AsciiString aTailString = aCurrentString.Split (aPosition);
Standard_Integer aRow = 0;
while (!aCurrentString.IsEmpty())
{
TCollection_AsciiString aValueString = aCurrentString;
aPosition = aValueString.Search (",");
if (aPosition < 0 )
break;
aCurrentString = aValueString.Split (aPosition);
Standard_Integer aColumn = 0;
while (!aValueString.IsEmpty())
{
aPosition = aCurrentString.Search (" ");
if (aPosition > 0)
aValueString.Split (aValueString.Length() - 1);
aValues.SetValue (aRow, aColumn, aValueString.RealValue());
aColumn++;
if (aCurrentString.IsEmpty())
break;
aValueString = aCurrentString;
aPosition = aValueString.Search (",");
if (aPosition < 0 )
{
aValueString = aCurrentString;
aCurrentString = TCollection_AsciiString();
}
else
aCurrentString = aValueString.Split (aPosition);
}
if (aTailString.IsEmpty())
break;
aCurrentString = aTailString;
aPosition = aCurrentString.Search (" ");
if (aPosition < 0 )
{
aCurrentString = aTailString;
aTailString = TCollection_AsciiString();
}
else
aTailString = aCurrentString.Split (aPosition);
aRow++;
}
//if (aValues.Rows() != 3 || aValues.Cols() != 4)
// return TopLoc_Location();
gp_Trsf aTrsf;
aTrsf.SetValues (aValues.GetValue (0, 0), aValues.GetValue (0, 1), aValues.GetValue (0, 2), aValues.GetValue (0, 3),
aValues.GetValue (1, 0), aValues.GetValue (1, 1), aValues.GetValue (1, 2), aValues.GetValue (1, 3),
aValues.GetValue (2, 0), aValues.GetValue (2, 1), aValues.GetValue (2, 2), aValues.GetValue (2, 3));
return TopLoc_Location (aTrsf);
}
// =======================================================================
// function : ParametersToShape
// purpose :
// =======================================================================
void TInspectorAPI_PluginParameters::ParametersToShape (const TCollection_AsciiString& theValue,
TopoDS_Shape& theShape)
{
int aSeparatorPos = theValue.Search (":");
TCollection_AsciiString anOrientationStr = theValue;
TCollection_AsciiString aLocationStr = anOrientationStr.Split (aSeparatorPos);
// orientation
if (anOrientationStr.Length() < 2)
return;
anOrientationStr.Split (anOrientationStr.Length() - 1);
TopAbs_Orientation anOrientation;
if (!TopAbs::ShapeOrientationFromString (anOrientationStr.ToCString(), anOrientation))
return;
// location
TopLoc_Location aLocation = fromString (aLocationStr);
theShape.Location (aLocation);
theShape.Orientation (anOrientation);
}