#include <HYDROGUI_ObjListBox.h>
#include <HYDROGUI_ObjComboBox.h>
-#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Tool2.h>
#include <QGridLayout>
#include <QListWidget>
#include <QLabel>
HYDROGUI_ObjListBox::HYDROGUI_ObjListBox( HYDROGUI_Module* theModule, const QString& theTitle, const ObjectKind& theType, QWidget* theParent )
: QWidget( theParent ),
- myType( theType ),
myModule( theModule ),
myFilter( 0 )
+{
+ myTypes.append( theType );
+ Init(theTitle);
+}
+
+HYDROGUI_ObjListBox::HYDROGUI_ObjListBox( HYDROGUI_Module* theModule, const QString& theTitle, const QList<ObjectKind>& theTypes, QWidget* theParent )
+: QWidget( theParent ),
+ myTypes( theTypes ),
+ myModule( theModule ),
+ myFilter( 0 )
+{
+ Init(theTitle);
+}
+
+void HYDROGUI_ObjListBox::Init(const QString& theTitle)
{
QGridLayout* aBase = new QGridLayout( this );
aBase->setMargin( 0 );
return myModule;
}
-ObjectKind HYDROGUI_ObjListBox::objectType() const
+QList<ObjectKind> HYDROGUI_ObjListBox::objectTypes() const
{
- return myType;
+ return myTypes;
}
HYDROGUI_ObjComboBoxFilter* HYDROGUI_ObjListBox::objectFilter() const
{
myList->clear();
mySelection.Clear();
+ emit selectionChanged();
}
void HYDROGUI_ObjListBox::setSelectedObjects( const HYDROData_SequenceOfObjects& theObjects )
void HYDROGUI_ObjListBox::OnInclude()
{
Append( HYDROGUI_Tool::GetSelectedObjects( module() ) );
+ emit selectionChanged();
}
void HYDROGUI_ObjListBox::OnExclude()
{
QList<QListWidgetItem*> aSelection = myList->selectedItems();
foreach( QListWidgetItem* anItem, aSelection )
- {
- int anIndex = myList->row( anItem );
- myList->takeItem( anIndex );
- mySelection.Remove( anIndex, anIndex );
- }
+ delete anItem;
+ emit selectionChanged();
}
void HYDROGUI_ObjListBox::Append( const HYDROData_SequenceOfObjects& theObjects )
for( int i=theObjects.Lower(), n=theObjects.Upper(); i<=n; i++ )
{
Handle( HYDROData_Entity ) anObject = theObjects.Value( i );
- bool isOK = !anObject.IsNull() && anObject->GetKind()==myType;
+ bool isOK = !anObject.IsNull() && myTypes.contains(anObject->GetKind());
if( myFilter && isOK )
isOK = myFilter->isOk( anObject );
if( isOK )
{
QString aName = anObject->GetName();
- myList->addItem( aName );
- mySelection.Append( anObject );
+ if (myList->findItems(aName, Qt::MatchExactly).size() == 0)
+ {
+ myList->addItem( aName );
+ mySelection.Append( anObject );
+ }
}
}
}