void CleanPythonTrace();
+ static int CountInPyDump(const TCollection_AsciiString& text);
+
// *****************************************
// Internal methods
// *****************************************
#include <TColStd_HSequenceOfInteger.hxx>
#include <TCollection_AsciiString.hxx>
+#include <cstring>
+
#ifdef _DEBUG_
static int MYDEBUG = 0;
#else
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);
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;
+}
::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 )
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
}
}
+//================================================================================
+/*!
+ * \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
if ( toActivate )
{
- connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(selectionIntoArgument()));
+ connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(selectionIntoArgument()));
}
else
{
if ( sender() == myActivateButton )
ShowPreview( toActivate );
+
+ if ( toActivate )
+ emit selectionActivated();
}
//================================================================================
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();
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();