mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-26 00:02:08 -05:00
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:
parent
6ded2ab1d3
commit
7d57ea9c2e
@ -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;
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -44,6 +44,7 @@ class QgsAttributeTableDisplay:public QgsAttributeTableBase
|
||||
protected:
|
||||
QgsVectorLayer* mLayer;
|
||||
QPopupMenu* edit;
|
||||
|
||||
protected slots:
|
||||
void deleteAttributes();
|
||||
void addAttribute();
|
||||
|
@ -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;}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user