Fixed wrong automatic selection of te first table row/ ctrl-button can now be used to select features in the map canvas

git-svn-id: http://svn.osgeo.org/qgis/trunk@243 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
mhugent 2003-08-22 06:51:00 +00:00
parent 53f88c2015
commit 46f4945c00
5 changed files with 11 additions and 39 deletions

View File

@ -464,7 +464,6 @@ void QgisApp::attributeTable()
void QgisApp::select()
{
std::cout << "bin in select" << std::endl;
mapCanvas->setMapTool(QGis::Select);
}

View File

@ -64,7 +64,6 @@ void QgsAttributeTable::keyReleaseEvent(QKeyEvent* ev)
void QgsAttributeTable::handleChangedSelections()
{
std::cout << "bin in QgsAttributeTable::handleChangedSelection" << std::endl;
QTableSelection cselection;
if(lockKeyPressed==false)
{
@ -75,7 +74,6 @@ void QgsAttributeTable::handleChangedSelections()
//if there is no current selection, there is nothing to do
if(currentSelection()==-1)
{
std::cout << "No current selection" << std::endl;
emit repaintRequested();
return;
}
@ -84,14 +82,9 @@ void QgsAttributeTable::handleChangedSelections()
for(int index=cselection.topRow();index<=cselection.bottomRow();index++)
{
std::cout << "topRow: " << cselection.topRow() << std::endl;
std::cout << "bottomRow: " << cselection.bottomRow() << std::endl;
std::cout << "index: " << index << std::endl;
emit selected(text(index,0).toInt());
}
std::cout << "emit QgsAttributeTable::repaintRequested" << std::endl;
emit repaintRequested();
}
@ -99,7 +92,7 @@ void QgsAttributeTable::handleChangedSelections()
void QgsAttributeTable::selectRowWithId(int id)
{
//brute force approach
//brute force approach, add a solution with a hash table or a search tree later (and rebuild this structure every time the table is sorted)
for(int i=0;i<numRows();i++)
{
if(text(i,0).toInt()==id)

View File

@ -45,7 +45,6 @@ QgsMapCanvas::QgsMapCanvas(QWidget * parent, const char *name)
setMouseTracking(true);
drawing = false;
dirty = true;
ctrlPressed=false;
pmCanvas = new QPixmap(width(),height());
setFocusPolicy(QWidget::StrongFocus);
}
@ -447,7 +446,14 @@ void QgsMapCanvas::mouseReleaseEvent(QMouseEvent * e)
ur = coordXForm->toMapCoordinates(zoomBox.right(), zoomBox.top());
QgsRect* search= new QgsRect(ll.x(),ll.y(),ur.x(),ur.y());
lyr->select(search,ctrlPressed);
if(e->state()==513)
{
lyr->select(search,true);
}
else
{
lyr->select(search,false);
}
delete search;
}
else
@ -489,7 +495,7 @@ void QgsMapCanvas::resizeEvent(QResizeEvent *e){
}
void QgsMapCanvas::mouseMoveEvent(QMouseEvent * e)
{
if (e->state() == Qt::LeftButton) {
if (e->state() == Qt::LeftButton || e->state()==513) {
int dx, dy;
QPainter paint;
QPen pen(Qt::gray);
@ -629,21 +635,3 @@ void QgsMapCanvas::removeAll(){
zOrder.clear();
}
void QgsMapCanvas::keyPressEvent(QKeyEvent* ev)
{
if(ev->key()==Qt::Key_Control)
{
std::cout << "ctrlPressed = true" << std::endl;
ctrlPressed=true;
}
}
void QgsMapCanvas::keyReleaseEvent(QKeyEvent* ev)
{
if(ev->key()==Qt::Key_Control)
{
std::cout << "ctrlPressed = false" << std::endl;
ctrlPressed=false;
}
}

View File

@ -91,8 +91,6 @@ public slots:
signals:
void xyCoordinates(QgsPoint &p);
private:
void keyPressEvent(QKeyEvent* ev);
void keyReleaseEvent(QKeyEvent* ev);
void mouseMoveEvent(QMouseEvent *e);
void mousePressEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
@ -143,9 +141,6 @@ public slots:
* when no real change has occurred
*/
bool dirty;
/**Flag which tells if the ctrl-button is pressed*/
bool ctrlPressed;
};
#endif

View File

@ -434,6 +434,7 @@ void QgsShapeFileLayer::table()
tabledisplay->setTitle("Tabledisplaytribute table - " + name());
tabledisplay->show();
tabledisplay->table()->clearSelection();//deselect the first row
//select the rows of the already selected features
QObject::disconnect(tabledisplay->table(),SIGNAL(selectionChanged()),tabledisplay->table(),SLOT(handleChangedSelections()));
@ -456,7 +457,6 @@ void QgsShapeFileLayer::table()
void QgsShapeFileLayer::select(int number)
{
std::cout << "bin in QgsShapeFileLayer::select(int) " << number << std::endl;
(*selected)[number]=true;
}
@ -467,9 +467,7 @@ void QgsShapeFileLayer::select(QgsRect* rect, bool lock)
{
QObject::disconnect(tabledisplay->table(),SIGNAL(selectionChanged()),tabledisplay->table(),SLOT(handleChangedSelections()));
QObject::disconnect(tabledisplay->table(),SIGNAL(selected(int)),this,SLOT(select(int)));//disconnecting because of performance reason
tabledisplay->raise();
}
std::cout << "bin in QgsShapeFileLayer::select(QgsRect)" << std::endl;
if(lock==false)
{
@ -496,7 +494,6 @@ void QgsShapeFileLayer::select(QgsRect* rect, bool lock)
if(fet)
{
select(fet->GetFID());
std::cout << "rufe die Methode selectRow auf" << fet->GetFID() << std::endl;
if(tabledisplay)
{
tabledisplay->table()->selectRowWithId(fet->GetFID());