Added QgsVectorDataProvider::capabilities(). The current queries in the dialogs will be subsequently replaced

git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@2763 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
mhugent 2005-02-08 22:16:14 +00:00
parent 6ded2ab1d3
commit 7d57ea9c2e
5 changed files with 62 additions and 10 deletions

View File

@ -1150,6 +1150,16 @@ bool QgsPostgresProvider::supportsSaveAsShapefile() const
{
return false;
}
int QgsPostgresProvider::capabilities()
{
return ( QgsVectorDataProvider::AddFeatures |
QgsVectorDataProvider::DeleteFeatures |
QgsVectorDataProvider::ChangeAttributes |
QgsVectorDataProvider::AddAttributes |
QgsVectorDataProvider::DeleteAttributes );
}
void QgsPostgresProvider::setSubsetString(QString theSQL)
{
sqlWhereClause=theSQL;

View File

@ -243,6 +243,9 @@ public:
/** mutator for sql where clause used to limit dataset size */
void setSubsetString(QString theSQL); //{sqlWhereClause = theSQL;};
/**Returns a bitmask containing the supported capabilities*/
int capabilities();
private:

View File

@ -40,12 +40,13 @@ QgsAttributeTableDisplay::QgsAttributeTableDisplay(QgsVectorLayer* layer):QgsAtt
edit = new QPopupMenu(this);
QPopupMenu* selection = new QPopupMenu(this);
edit->insertItem(tr("&Add Attribute..."), this, SLOT(addAttribute()), CTRL+Key_A);
edit->insertItem(tr("&Delete Attributes..."), this, SLOT(deleteAttributes()), CTRL+Key_D);
edit->insertItem(tr("&Add Attribute..."), this, SLOT(addAttribute()), CTRL+Key_A,0);
edit->insertItem(tr("&Delete Attributes..."), this, SLOT(deleteAttributes()), CTRL+Key_D,1);
selection->insertItem(tr("&Bring selected to top"), this, SLOT(selectedToTop()), CTRL+Key_T);
mMenuBar->insertItem(tr("&Edit"), edit);
mMenuBar->insertItem(tr("&Selected"),selection);
edit->setEnabled(false);
edit->setItemEnabled(0,false);
edit->setItemEnabled(1,false);
btnStopEditing->setEnabled(false);
if(!layer->getDataProvider()->supportsAttributeEditing())
@ -97,12 +98,34 @@ void QgsAttributeTableDisplay::addAttribute()
void QgsAttributeTableDisplay::startEditing()
{
btnStartEditing->setEnabled(false);
btnStopEditing->setEnabled(true);
btnClose->setEnabled(false);
edit->setEnabled(true);
table()->setReadOnly(false);
table()->setColumnReadOnly(0,true);//id column is not editable
QgsVectorDataProvider* provider=mLayer->getDataProvider();
bool editing=false;
if(provider)
{
if(provider->capabilities()&QgsVectorDataProvider::AddAttributes)
{
edit->setItemEnabled(0,true);
editing=true;
}
if(provider->capabilities()&QgsVectorDataProvider::DeleteAttributes)
{
edit->setItemEnabled(1,true);
editing=true;
}
if(provider->capabilities()&QgsVectorDataProvider::ChangeAttributes)
{
table()->setReadOnly(false);
table()->setColumnReadOnly(0,true);//id column is not editable
editing=true;
}
if(editing)
{
btnStartEditing->setEnabled(false);
btnStopEditing->setEnabled(true);
btnClose->setEnabled(false);
}
}
}
void QgsAttributeTableDisplay::stopEditing()
@ -123,7 +146,8 @@ void QgsAttributeTableDisplay::stopEditing()
btnStartEditing->setEnabled(true);
btnStopEditing->setEnabled(false);
btnClose->setEnabled(true);
edit->setEnabled(false);
edit->setItemEnabled(0,false);
edit->setItemEnabled(1,false);
table()->setReadOnly(true);
}

View File

@ -44,6 +44,7 @@ class QgsAttributeTableDisplay:public QgsAttributeTableBase
protected:
QgsVectorLayer* mLayer;
QPopupMenu* edit;
protected slots:
void deleteAttributes();
void addAttribute();

View File

@ -32,6 +32,17 @@ class QgsVectorDataProvider : public QgsDataProvider
public:
enum Capability
{
NoCapabilities = 0,
AddFeatures = 1,
DeleteFeatures = 1 << 1,
ChangeAttributes = 1 << 2,
AddAttributes = 1 << 3,
DeleteAttributes = 1 << 4,
SaveAsShapefile = 1 << 5
};
QgsVectorDataProvider();
virtual ~QgsVectorDataProvider() {};
@ -174,6 +185,9 @@ class QgsVectorDataProvider : public QgsDataProvider
// NOP by default
}
/**Returns a bitmask containing the supported capabilities*/
virtual int capabilities(){return QgsVectorDataProvider::NoCapabilities;}
const std::list<QString>& nonNumericalTypes(){return mNonNumericalTypes;}
const std::list<QString>& numericalTypes(){return mNumericalTypes;}