mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-12 00:29:17 +05:00
Enable simultaneous usage of several StdMeshersGUI_SubShapeSelectorWdg's
Add SMESH_Gen_i::CountInPyDump(text) which is useful for defining uniquely named variables in dump python scripts
This commit is contained in:
parent
dbbd8a2dbe
commit
f435fe5c82
@ -494,6 +494,8 @@ public:
|
||||
|
||||
void CleanPythonTrace();
|
||||
|
||||
static int CountInPyDump(const TCollection_AsciiString& text);
|
||||
|
||||
// *****************************************
|
||||
// Internal methods
|
||||
// *****************************************
|
||||
|
@ -40,6 +40,8 @@
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#ifdef _DEBUG_
|
||||
static int MYDEBUG = 0;
|
||||
#else
|
||||
@ -77,7 +79,7 @@ namespace SMESH
|
||||
TCollection_AsciiString aCollection(Standard_CString(aString.c_str()));
|
||||
if(!aCollection.IsEmpty())
|
||||
{
|
||||
const std::string & objEntry = SMESH_Gen_i::GetSMESHGen()->GetLastObjEntry();
|
||||
const std::string & objEntry = aSMESHGen->GetLastObjEntry();
|
||||
if ( !objEntry.empty() )
|
||||
aCollection += (TVar::ObjPrefix() + objEntry ).c_str();
|
||||
aSMESHGen->AddToPythonScript(aCollection);
|
||||
@ -1388,3 +1390,55 @@ void SMESH_Gen_i::CleanPythonTrace()
|
||||
myPythonScript->Clear();
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Count inclusions of a string in a raw Python dump script
|
||||
*/
|
||||
//================================================================================
|
||||
|
||||
int SMESH_Gen_i::CountInPyDump(const TCollection_AsciiString& theText)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
SALOMEDS::Study_var aStudy = getStudyServant();
|
||||
if ( CORBA::is_nil( aStudy ))
|
||||
return count;
|
||||
|
||||
SMESH_Gen_i* me = GetSMESHGen();
|
||||
CORBA::String_var compDataType = me->ComponentDataType();
|
||||
SALOMEDS::SObject_wrap aSO = aStudy->FindComponent( compDataType.in() );
|
||||
if ( CORBA::is_nil( aSO ))
|
||||
return count;
|
||||
|
||||
// Trace saved in the study
|
||||
SALOMEDS::GenericAttribute_wrap attr;
|
||||
if ( aSO->FindAttribute( attr.inout(), "AttributePythonObject" ))
|
||||
{
|
||||
SALOMEDS::AttributePythonObject_var pyAttr =
|
||||
SALOMEDS::AttributePythonObject::_narrow( attr );
|
||||
CORBA::String_var script = pyAttr->GetObject();
|
||||
for ( const char * scriptPos = script.in(); true; ++scriptPos )
|
||||
if (( scriptPos = strstr( scriptPos, theText.ToCString() )))
|
||||
++count;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
// New python commands
|
||||
if ( !me->myPythonScript.IsNull() )
|
||||
{
|
||||
const int nbLines = me->myPythonScript->Length();
|
||||
for ( int i = 1; i <= nbLines; ++i )
|
||||
{
|
||||
const TCollection_AsciiString& line = me->myPythonScript->Value( i );
|
||||
for ( int loc = 1; loc <= line.Length(); ++loc )
|
||||
if (( loc = line.Location( theText, loc, line.Length() )))
|
||||
++count;
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -74,7 +74,8 @@ StdMeshersGUI_SubShapeSelectorWdg
|
||||
::StdMeshersGUI_SubShapeSelectorWdg( QWidget * parent,
|
||||
TopAbs_ShapeEnum subShType,
|
||||
const bool toShowList,
|
||||
const bool toShowActivateBtn ):
|
||||
const bool toShowActivateBtn,
|
||||
const int minListWidth ):
|
||||
QWidget( parent ),
|
||||
myMaxSize( -1 ),
|
||||
myPreviewActor( 0 )
|
||||
@ -93,8 +94,8 @@ StdMeshersGUI_SubShapeSelectorWdg
|
||||
myAddButton = new QPushButton( tr( "SMESH_BUT_ADD" ), this );
|
||||
myRemoveButton = new QPushButton( tr( "SMESH_BUT_REMOVE" ), this );
|
||||
myListWidget->setSelectionMode( QListWidget::ExtendedSelection );
|
||||
myListWidget->setMinimumWidth(300);
|
||||
myListWidget->setWrapping(true);
|
||||
myListWidget->setMinimumWidth( minListWidth );
|
||||
myListWidget->setWrapping( true );
|
||||
myActivateButton->setCheckable( true );
|
||||
}
|
||||
else
|
||||
@ -254,6 +255,20 @@ void StdMeshersGUI_SubShapeSelectorWdg::ShowPreview( bool visible)
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Connect selection slots
|
||||
* \param other - another StdMeshersGUI_ObjectReferenceParamWdg
|
||||
*/
|
||||
//================================================================================
|
||||
|
||||
void StdMeshersGUI_SubShapeSelectorWdg::
|
||||
AvoidSimultaneousSelection ( StdMeshersGUI_SubShapeSelectorWdg* other)
|
||||
{
|
||||
connect(other, SIGNAL(selectionActivated()), this, SLOT(deactivateSelection()));
|
||||
connect(this, SIGNAL(selectionActivated()), other, SLOT(deactivateSelection()));
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Connect/disconnect to change of selection
|
||||
@ -275,7 +290,7 @@ void StdMeshersGUI_SubShapeSelectorWdg::ActivateSelection( bool toActivate )
|
||||
|
||||
if ( toActivate )
|
||||
{
|
||||
connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(selectionIntoArgument()));
|
||||
connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(selectionIntoArgument()));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -284,6 +299,9 @@ void StdMeshersGUI_SubShapeSelectorWdg::ActivateSelection( bool toActivate )
|
||||
|
||||
if ( sender() == myActivateButton )
|
||||
ShowPreview( toActivate );
|
||||
|
||||
if ( toActivate )
|
||||
emit selectionActivated();
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
|
@ -53,7 +53,8 @@ public:
|
||||
StdMeshersGUI_SubShapeSelectorWdg( QWidget* parent = 0,
|
||||
TopAbs_ShapeEnum subShType = TopAbs_EDGE,
|
||||
const bool toShowList = true,
|
||||
const bool toShowSelectBtn = false);
|
||||
const bool toShowSelectBtn = false,
|
||||
const int minListWidth=300);
|
||||
~StdMeshersGUI_SubShapeSelectorWdg();
|
||||
|
||||
SMESH::long_array_var GetListOfIDs();
|
||||
@ -82,12 +83,23 @@ public:
|
||||
SMESH_PreviewActorsCollection* GetActorCollection() { return myPreviewActor; }
|
||||
void ClearSelected();
|
||||
|
||||
void AvoidSimultaneousSelection( StdMeshersGUI_SubShapeSelectorWdg* other);
|
||||
|
||||
public slots:
|
||||
|
||||
void ActivateSelection( bool );
|
||||
void deactivateSelection() { ActivateSelection( false ); }
|
||||
|
||||
signals:
|
||||
void selectionChanged(); // in the list
|
||||
void shapeSelected(); // globally
|
||||
/*!
|
||||
* \brief Emitted when selection is activated
|
||||
*
|
||||
* Useful to deactivate one Object Reference param widget when an other
|
||||
* one is activated
|
||||
*/
|
||||
void selectionActivated();
|
||||
|
||||
private:
|
||||
void updateState();
|
||||
|
Loading…
Reference in New Issue
Block a user