#include <SalomeApp_Dialog.h>
#include <SUIT_Session.h>
-#include <qpushbutton.h>
+#include <qtoolbutton.h>
#include <qlineedit.h>
#include <qlabel.h>
+/*
+ Class : SalomeApp_Dialog
+ Description : Base class for all SALOME dialogs
+*/
+
+//=======================================================================
+// name : SalomeApp_Dialog
+// Purpose : Constructor
+//=======================================================================
SalomeApp_Dialog::SalomeApp_Dialog( QWidget* parent, const char* name, bool modal,
bool allowResize, const int f, WFlags wf )
: QtxDialog( parent, name, modal, allowResize, f, wf ),
setObjectPixmap( "SalomeApp", tr( "ICON_SELECT" ) );
}
+//=======================================================================
+// name : ~SalomeApp_Dialog
+// Purpose : Destructor
+//=======================================================================
SalomeApp_Dialog::~SalomeApp_Dialog()
{
}
+//=======================================================================
+// name : show
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::show()
{
QtxDialog::show();
}
+//=======================================================================
+// name : isExclusive
+// Purpose :
+//=======================================================================
bool SalomeApp_Dialog::isExclusive() const
{
return myIsExclusive;
}
+//=======================================================================
+// name : updateButtons
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::updateButtons( const int _id )
{
if( !myIsExclusive )
aLast = myObjects.end();
for( ; anIt!=aLast; anIt++ )
{
- QPushButton* but = anIt.data().myBtn;
+ QToolButton* but = (QToolButton*)anIt.data().myBtn;
if( but && but->isOn() )
{
if( id==-1 )
}
}
+//=======================================================================
+// name : setExclusive
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::setExclusive( const bool ex )
{
myIsExclusive = ex;
updateButtons();
}
+//=======================================================================
+// name : showObject
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::showObject( const int id )
{
setObjectShown( id, true );
}
+//=======================================================================
+// name : hideObject
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::hideObject( const int id )
{
setObjectShown( id, false );
}
+//=======================================================================
+// name : setObjectShown
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::setObjectShown( const int id, const bool shown )
{
if( myObjects.contains( id ) && isObjectShown( id )!=shown )
obj.myBtn->setShown( shown );
obj.myLabel->setShown( shown );
if( !shown )
- obj.myBtn->setOn( false );
+ ( ( QToolButton* )obj.myBtn )->setOn( false );
}
}
+//=======================================================================
+// name : isObjectShown
+// Purpose :
+//=======================================================================
bool SalomeApp_Dialog::isObjectShown( const int id ) const
{
return myObjects.contains( id ) && myObjects[ id ].myEdit->isShown();
}
+//=======================================================================
+// name : selectObject
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::selectObject( const QString& name, const int type, const QString& id )
{
QStringList names; names.append( name );
selectObject( names, types, ids );
}
+//=======================================================================
+// name : selectObject
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::selectObject( const QStringList& _names,
const TypesList& _types,
const QStringList& _ids )
}
}
+//=======================================================================
+// name : hasSelection
+// Purpose :
+//=======================================================================
bool SalomeApp_Dialog::hasSelection( const int id ) const
{
return myObjects.contains( id ) && !myObjects[ id ].myIds.isEmpty();
}
+//=======================================================================
+// name : clearSelection
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::clearSelection( const int id )
{
if( id==-1 )
}
}
+//=======================================================================
+// name : selectedObject
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::selectedObject( const int id, QStringList& list ) const
{
if( myObjects.contains( id ) )
// list.clear();
}
+//=======================================================================
+// name : objectSelection
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::objectSelection( SelectedObjects& objs ) const
{
//objs.clear();
}
}
+//=======================================================================
+// name : createObject
+// Purpose :
+//=======================================================================
int SalomeApp_Dialog::createObject( const QString& label, QWidget* parent, const int id )
-{
- static int _id = -1;
-
- int nid = id>=0 ? id : --_id;
+{
+ int nid = id;
+ if( nid<0 )
+ for( nid=0; myObjects.contains( nid ); nid++ );
+
if( !myObjects.contains( nid ) )
{
QLabel* lab = new QLabel( label, parent );
myObjects[ nid ].myLabel = lab;
- QPushButton* but = new QPushButton( parent );
+ QToolButton* but = new QToolButton( parent );
but->setIconSet( QIconSet( myPixmap ) );
but->setToggleButton( true );
+ but->setMaximumWidth( but->height() );
+ but->setMinimumWidth( but->height() );
connect( but, SIGNAL( toggled( bool ) ), this, SLOT( onToggled( bool ) ) );
myObjects[ nid ].myBtn = but;
QLineEdit* ne = new QLineEdit( parent );
ne->setReadOnly( true );
+ ne->setMinimumWidth( 150 );
myObjects[ nid ].myEdit = ne;
myObjects[ nid ].myNI = OneNameOrCount;
return nid;
}
+//=======================================================================
+// name : renameObject
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::renameObject( const int id, const QString& label )
{
if( myObjects.contains( id ) )
myObjects[ id ].myLabel->setText( label );
}
+//=======================================================================
+// name : setObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::setObjectType( const int id, const int type1, ... )
{
TypesList types;
setObjectType( id, types );
}
+//=======================================================================
+// name : setObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::setObjectType( const int id, const TypesList& list )
{
if( !myObjects.contains( id ) )
updateObject( id );
}
+//=======================================================================
+// name : addObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::addObjectType( const int id, const int type1, const int, ... )
{
TypesList types; objectTypes( id, types );
setObjectType( id, types );
}
+//=======================================================================
+// name : addObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::addObjectType( const int id, const TypesList& list )
{
TypesList types = list; objectTypes( id, types );
setObjectType( id, types );
}
+//=======================================================================
+// name : addObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::addObjectType( const int id, const int type )
{
TypesList types; objectTypes( id, types );
setObjectType( id, types );
}
+//=======================================================================
+// name : removeObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::removeObjectType( const int id )
{
TypesList types;
setObjectType( id, types );
}
+//=======================================================================
+// name : removeObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::removeObjectType( const int id, const TypesList& list )
{
if( !myObjects.contains( id ) )
updateObject( id );
}
+//=======================================================================
+// name : removeObjectType
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::removeObjectType( const int id, const int type )
{
TypesList list; list.append( type );
removeObjectType( id, list );
}
+//=======================================================================
+// name : hasObjectType
+// Purpose :
+//=======================================================================
bool SalomeApp_Dialog::hasObjectType( const int id, const int type ) const
{
if( myObjects.contains( id ) )
return false;
}
+//=======================================================================
+// name : objectTypes
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::objectTypes( const int id, TypesList& list ) const
{
if( myObjects.contains( id ) )
}
}
+//=======================================================================
+// name : onToggled
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::onToggled( bool on )
{
- QPushButton* but = ( QPushButton* )sender();
+ QButton* but = ( QButton* )sender();
int id = -1;
if( !but )
emit objectDeactivated( id );
}
+//=======================================================================
+// name : updateObject
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::updateObject( const int id, bool emit_signal )
{
if( hasSelection( id ) )
}
}
+//=======================================================================
+// name : filterTypes
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::filterTypes( const int id, QStringList& names, TypesList& types, QStringList& ids ) const
{
if( !myObjects.contains( id ) )
ids = new_ids;
}
+//=======================================================================
+// name : resMgr
+// Purpose :
+//=======================================================================
SUIT_ResourceMgr* SalomeApp_Dialog::resMgr() const
{
return SUIT_Session::session()->resourceMgr();
}
+//=======================================================================
+// name : setObjectPixmap
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::setObjectPixmap( const QPixmap& p )
{
myPixmap = p;
ObjectMap::const_iterator anIt = myObjects.begin(),
aLast = myObjects.end();
for( ; anIt!=aLast; anIt++ )
- anIt.data().myBtn->setIconSet( p );
+ ( ( QToolButton* )anIt.data().myBtn )->setIconSet( p );
}
+//=======================================================================
+// name : setObjectPixmap
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::setObjectPixmap( const QString& section, const QString& file )
{
SUIT_ResourceMgr* mgr = resMgr();
setObjectPixmap( mgr->loadPixmap( section, file ) );
}
+//=======================================================================
+// name : multipleSelection
+// Purpose :
+//=======================================================================
bool SalomeApp_Dialog::multipleSelection( const int id ) const
{
return nameIndication( id )!=OneName;
}
+//=======================================================================
+// name : nameIndication
+// Purpose :
+//=======================================================================
SalomeApp_Dialog::NameIndication SalomeApp_Dialog::nameIndication( const int id ) const
{
if( myObjects.contains( id ) )
return OneNameOrCount;
}
+//=======================================================================
+// name : setNameIndication
+// Purpose :
+//=======================================================================
void SalomeApp_Dialog::setNameIndication( const int id, const NameIndication ni )
{
if( id==-1 )
}
}
+//=======================================================================
+// name : selectionDescription
+// Purpose :
+//=======================================================================
QString SalomeApp_Dialog::selectionDescription( const QStringList& names, const TypesList& types, const NameIndication ni ) const
{
if( names.count()!=types.count() )
- return "SalomeApp_Dialog::selectionDescription: Error!!!";
+ return "SalomeApp_Dialog::selectionDescription(): Error!!!";
switch( ni )
{
return QString::null;
}
+//=======================================================================
+// name : countOfTypes
+// Purpose :
+//=======================================================================
QString SalomeApp_Dialog::countOfTypes( const TypesList& types ) const
{
QMap<int, int> typesCount;
return typeCount.join( ", " );
}
+//=======================================================================
+// name : typeName
+// Purpose :
+//=======================================================================
QString& SalomeApp_Dialog::typeName( const int type )
{
return myTypeNames[ type ];
}
+//=======================================================================
+// name : typeName
+// Purpose :
+//=======================================================================
const QString& SalomeApp_Dialog::typeName( const int type ) const
{
return myTypeNames[ type ];
}
+
+//=======================================================================
+// name : deactivateAll
+// Purpose :
+//=======================================================================
+void SalomeApp_Dialog::deactivateAll()
+{
+ ObjectMap::iterator anIt = myObjects.begin(),
+ aLast = myObjects.end();
+ for( ; anIt!=aLast; anIt++ )
+ {
+ QToolButton* btn = ( QToolButton* )anIt.data().myBtn;
+ btn->setOn( false );
+ }
+}
#include <qmap.h>
#include <qpixmap.h>
-
class QLineEdit;
-class QPushButton;
+class QButton;
class QLabel;
-class SUIT_ResourceMgr;
+class SUIT_ResourceMgr;
+/*
+ Class : SalomeApp_Dialog
+ Description : Base class for all SALOME dialogs
+*/
class SalomeApp_Dialog : public QtxDialog
{
Q_OBJECT
Count //! In every case "<count> <type>" is shown
} NameIndication;
+ //! The enumeration describing how names of selected objects will be shown in line edit
+ //! For more details see above
public:
SalomeApp_Dialog( QWidget* = 0, const char* = 0, bool = false,
void selectObject( const QString&, const int, const QString& );
/*!
- Pass to all active widgets list of names, types and ids of selected object
+ Pass to all active widgets list of names, types and ids of selected objects
Every active widget filters list and accept only objects with possible types
*/
void selectObject( const QStringList&, const TypesList&, const QStringList& );
- //! Check if widgets has selection
+ //! Check if certain widget has selection
bool hasSelection( const int ) const;
- //! Clear selection in widgets
+ //! Clear selection in widgets. If parameter is -1, then selection in all widgets will be cleared
void clearSelection( const int = -1 );
- //! Get ids list of object selected in widgets
+ //! Get ids list of object selected in certain widget
void selectedObject( const int, QStringList& ) const;
//! Get map "widget id -> ids list"
void objectSelection( SelectedObjects& ) const;
+ //! Set all object selection buttons to inactive state
+ void deactivateAll();
+
signals:
//! selection in certain widget is changed
void selectionChanged ( int );
void objectDeactivated( int );
protected:
+ //! Finds and returns resource manager
SUIT_ResourceMgr* resMgr() const;
- //! Create label, button and line edit for object selection
+ /*! Create label, button and line edit for object selection
+ * If passed id is negative, then id will be calculated automatically (first free id)
+ * Returns the same id (if id>=0) or calculated
+ */
int createObject ( const QString&, QWidget*, const int = -1 );
//! Set pixmap as icon for all selection buttons
//! Create string contains selection list by list of names, list of types and current name indication state
virtual QString selectionDescription( const QStringList&, const TypesList&, const NameIndication ) const;
- //! Create string with pattern "<count> <type>" for current list of types
+ //! Create string by pattern "<count> <type>" for current list of types
virtual QString countOfTypes( const TypesList& ) const;
- //! Get and set name indication
+ //! Get and set name indication for certain widget
NameIndication nameIndication( const int ) const;
void setNameIndication( const int, const NameIndication );
typedef struct
{
QLineEdit* myEdit;
- QPushButton* myBtn;
+ QButton* myBtn;
QLabel* myLabel;
QStringList myNames, myIds;
TypesList myTypes, myPossibleTypes;