void SCnEditorScene::selectField(SCnFieldItem *field) { if (field) { unselectItems(); field->setSelected(true); views().first()->centerOn(field); } }
void SCnEditorScene::selectPrevField(SCnFieldItem *field) { SCnFieldItem *prev = prevField(field); if (prev != 0) { unselectItems(); prev->setSelected(true); views().first()->centerOn(prev); } }
void SCnEditorScene::selectNextField(SCnFieldItem *field) { SCnFieldItem *next = nextField(field); if (next != 0) { unselectItems(); next->setSelected(true); views().first()->centerOn(next); } }
void ossimQtVceCanvasWidget::addAllObjects(const ossimKeywordlist& kwl, const QPoint& location, const char* prefix) { unselectItems(); QPoint locationPoint = location; ossimString copyPrefix = prefix; std::vector<QCanvasItem*> newItemList; ossimString regExpression = ossimString("^(") + copyPrefix + "object[0-9]+.)"; vector<ossimString> keys = kwl.getSubstringKeyList( regExpression ); long numberOfObjets = keys.size();//kwl.getNumberOfSubstringKeys(regExpression); int offset = (copyPrefix+"object").size(); int idx = 0; std::vector<int> theNumberList(numberOfObjets); for(idx = 0; idx < (int)theNumberList.size();++idx) { ossimString numberStr(keys[idx].begin() + offset, keys[idx].end()); theNumberList[idx] = numberStr.toInt(); } std::sort(theNumberList.begin(), theNumberList.end()); for(idx=0;idx < (int)theNumberList.size();++idx) { ossimString newPrefix = copyPrefix; newPrefix += ossimString("object"); newPrefix += ossimString::toString(theNumberList[idx]); newPrefix += ossimString("."); ossimString objType = kwl.find(newPrefix, ossimKeywordNames::TYPE_KW); QCanvasItem* item = NULL; if(objType == "ossimQtImageWindow") { item = new ossimQtVceImageDisplayObject(canvas(), this); item->setX(locationPoint.x()); item->setY(locationPoint.y()); item->show(); emit itemAdded(item); } else if(objType == "ossimImageHandler") { QStringList filenames = QFileDialog::getOpenFileNames("Images (*.adf *.ccf *.dem *.DEM *.dt1 *.dt0 *.dt2 *.hdr *.hgt *.jpg *.jpeg *.img *.doqq *.fst *.FST *.nitf *.NTF *.ntf *.ras *.sid *.tif *.tiff *.toc *.TOC);;Vectors(*.shp dht *.tab);;All Files(*)", QString::null, this, "open file dialog", "Choose a file to open"); QStringList::Iterator it; for(it = filenames.begin(); it != filenames.end(); ++it) { std::vector<QCanvasItem*> newItems; openImageFile((*it).ascii(), locationPoint, newItems); if(newItems.size()) { // QRect bounds = newItems[newItems.size()-1]->boundingRect(); // locationPoint.setY(locationPoint.y() + bounds.height() + 10); newItemList.insert(newItemList.end(), newItems.begin(), newItems.end()); } } // we will make sure that we don't adjust the location point any further // item = NULL; } else { ossimObject* object = ossimObjectFactoryRegistry::instance()->createObject(objType); if(object) { item = addObject(object, locationPoint); } } if(item) { newItemList.push_back(item); QRect bounds = item->boundingRect(); locationPoint.setY(locationPoint.y() + bounds.height() + 10); emit itemAdded(item); } } if(newItemList.size() > 0) { for(idx = 0; idx < (int)newItemList.size(); ++idx) { newItemList[idx]->setSelected(true); theSelectedItems.push_back(newItemList[idx]); emit itemSelected(newItemList[idx]); } } }
void ossimQtVceCanvasWidget::dropEvent(QDropEvent* event) { std::vector<ossimObject*> objects; QString text; if ( QTextDrag::decode(event, text) ) { QPoint position(event->pos().x() + contentsX(), event->pos().y() + contentsY()); ossimKeywordlist kwl; stringstream in(text.ascii()); bool kwlParseFlag = kwl.parseStream(in); const char* type = NULL; if(kwlParseFlag) { type = kwl.find(ossimKeywordNames::TYPE_KW); } if(ossimString(type) == "ossimDataManagerObjectList") { addAllDataManagerObjects(kwl, position); } else if(ossimString(type)=="ossimQtVceComponentView") { addAllObjects(kwl, position); } else { unselectItems(); QString filename; const char* s = text.ascii(); const char* sEnd = text.ascii()+text.length(); int idx = 0; while(s < sEnd) { filename = ""; while((*s!='\0')&& (*s != '\n')&& (s < sEnd)&& (*s != '\r')) { filename += *s; ++s; } ++s; filename += '\0'; if(filename != "") { filename = filename.remove("file:"); std::vector<QCanvasItem*> newItems; openImageFile(filename.ascii(), position, newItems); for(idx = 0; idx < (int)newItems.size(); ++idx) { newItems[idx]->setSelected(true); theSelectedItems.push_back(newItems[idx]); emit itemSelected(newItems[idx]); } } } } } }
void ossimQtVceCanvasWidget::selectAll() { unselectItems(); QCanvasItemList canvasItemList = canvas()->allItems(); selectItems(canvasItemList); }
void ossimQtVceCanvasWidget::contentsMousePressEvent(QMouseEvent * e ) { theMouseButtonState = e->button(); switch(e->button()) { case Qt::LeftButton: { theLeftDownFlag = true; deleteSelectionRect(); theMouseStartPt = QPoint(e->x(), e->y()); theSelectionRect = new ossimQtVceShapeRect(QRect(e->x(), e->y(), 1, 1), canvas()); // make sure that the selection rect is in front of everything // theSelectionRect->setZ(2); if(!intersectsSelection()) { unselectItems(); // initialize mode // QCanvasItemList collisionList = theSelectionRect->collisions(true); ossimQtVceConnectableObject* obj = getObjectWhereConnectableSlotIntersectsPoint(collisionList, theMouseStartPt); if(obj) { QRect rect; if(obj->getConnectionSlotBoundingRect(rect, theMouseStartPt)) { delete theSelectionRect; theSelectionRect = NULL; theLineObject = new QCanvasLine(canvas()); QPoint startPt(rect.x() + rect.width()/2, rect.y() + rect.height()/2); theLineObject->setPoints(startPt.x(), startPt.y(), theMouseStartPt.x(), theMouseStartPt.y()); theLineObject->setPen(QPen(QColor(0,0,0), 2, Qt::DotLine)); theLineObject->show(); } } if(theSelectionRect) { // now set the pen style to dashed // theSelectionRect->hide(); theSelectionRect->setPen(QPen(QColor(0,0,0), 2, Qt::DotLine)); theSelectionRect->show(); } } else { deleteSelectionRect(); } break; } case Qt::RightButton: { thePopupMenu->hide(); QPoint pt = mapToGlobal(pos()); thePopupMenu->popup(e->globalPos()); } default: { break; } } emit canvasWidgetMousePressEvent(e); }