insilmaril@611: #include insilmaril@735: #include insilmaril@735: using namespace std; insilmaril@611: insilmaril@0: #include "selection.h" insilmaril@0: insilmaril@440: #include "mainwindow.h" insilmaril@641: #include "vymmodel.h" insilmaril@440: insilmaril@440: insilmaril@440: insilmaril@440: extern Main *mainWindow; insilmaril@0: insilmaril@0: Selection::Selection() insilmaril@0: { insilmaril@721: blocked=false; insilmaril@735: model=NULL; insilmaril@0: } insilmaril@0: insilmaril@0: Selection::~Selection() insilmaril@0: { insilmaril@0: } insilmaril@0: insilmaril@641: void Selection::setModel (VymModel *m) insilmaril@0: { insilmaril@641: model=m; insilmaril@0: } insilmaril@0: insilmaril@746: void Selection::update() // FIXME-2 VM emit signal in VM instead and get rid of this insilmaril@440: { insilmaril@729: /* insilmaril@440: QRectF bbox; insilmaril@728: //int w=0; insilmaril@440: for (int i=0; i< selectList.count(); ++i) insilmaril@440: { insilmaril@440: bbox=selectList.at(i)->getBBox(); insilmaril@440: selboxList.at(i)->setRect ( insilmaril@440: bbox.x()-w,bbox.y()-w, insilmaril@440: bbox.width()+2*w, bbox.height()+2*w); insilmaril@440: selboxList.at(i)->setPen (color); insilmaril@440: selboxList.at(i)->setBrush (color); insilmaril@440: } insilmaril@729: */ insilmaril@440: } insilmaril@757: bool Selection::select(LinkableMapObj *lmo)// FIXME-2 VM emit signal in VM instead and get rid of this insilmaril@757: insilmaril@0: { insilmaril@735: return model->select (lmo); insilmaril@735: /* insilmaril@424: if (!selectList.isEmpty()) unselect(); insilmaril@16: selectList.append (lmo); insilmaril@424: lmo->select(); insilmaril@460: update(); insilmaril@723: mainWindow->updateSatellites (model); insilmaril@735: cout << "Sel::select lmo e\n"; insilmaril@424: return true; insilmaril@735: */ insilmaril@0: } insilmaril@0: insilmaril@757: bool Selection::select (const QString &s)// FIXME-2 VM emit signal in VM instead and get rid of this insilmaril@757: insilmaril@0: { insilmaril@735: return model->select (s); insilmaril@735: /* insilmaril@735: cout << "Sel::select s=\n"; insilmaril@641: LinkableMapObj *lmo=model->findObjBySelect(s); insilmaril@16: insilmaril@16: // Finally select the found object insilmaril@16: if (lmo) insilmaril@16: { insilmaril@424: unselect(); insilmaril@16: select (lmo); insilmaril@16: return true; insilmaril@16: } insilmaril@16: return false; insilmaril@735: */ insilmaril@16: } insilmaril@16: insilmaril@421: bool Selection::reselect () // TODO no multiselections yet insilmaril@421: { insilmaril@421: if (!lastSelectList.isEmpty()) insilmaril@421: { insilmaril@421: select (lastSelectList.first()); insilmaril@421: return true; insilmaril@421: } insilmaril@421: return false; insilmaril@421: insilmaril@421: } insilmaril@421: insilmaril@16: void Selection::unselect() insilmaril@16: { insilmaril@735: model->unselect(); insilmaril@0: } insilmaril@0: insilmaril@721: bool Selection::isBlocked() insilmaril@721: { insilmaril@721: return blocked; insilmaril@721: } insilmaril@721: insilmaril@721: void Selection::block() insilmaril@721: { insilmaril@721: blocked=true; insilmaril@721: } insilmaril@721: insilmaril@721: void Selection::unblock() insilmaril@721: { insilmaril@721: blocked=false; insilmaril@721: } insilmaril@721: insilmaril@0: bool Selection::isEmpty() insilmaril@0: { insilmaril@0: return selectList.isEmpty(); insilmaril@0: } insilmaril@0: insilmaril@735: /* insilmaril@0: uint Selection::count() insilmaril@0: { insilmaril@0: return selectList.count(); insilmaril@0: } insilmaril@735: */ insilmaril@16: insilmaril@735: /* insilmaril@492: Selection::Type Selection::type() // TODO no multiselections yet insilmaril@16: { insilmaril@421: if (!selectList.isEmpty()) insilmaril@421: { insilmaril@421: LinkableMapObj *sel=selectList.first(); insilmaril@421: if (typeid (*sel)==typeid (BranchObj)) return Branch; insilmaril@421: if (typeid (*sel)==typeid (MapCenterObj)) return MapCenter; insilmaril@421: if (typeid (*sel)==typeid (FloatImageObj)) return FloatImage; insilmaril@421: } insilmaril@421: return Undefined; insilmaril@421: } insilmaril@735: */ insilmaril@421: insilmaril@735: /* insilmaril@424: LinkableMapObj* Selection::first() insilmaril@424: { insilmaril@424: if (!selectList.isEmpty()) insilmaril@424: return selectList.first(); insilmaril@424: else insilmaril@424: return NULL; insilmaril@424: } insilmaril@424: insilmaril@424: LinkableMapObj* Selection::single() insilmaril@424: { insilmaril@424: if (selectList.count() == 1) insilmaril@424: return selectList.first(); insilmaril@424: else insilmaril@424: return NULL; insilmaril@424: } insilmaril@424: insilmaril@726: TreeItem* Selection::getBranchItem() insilmaril@726: { insilmaril@726: BranchObj* bo=getBranch(); insilmaril@746: if (bo) return bo->getTreeItem(); // VM get directly from treemodl insilmaril@726: return NULL; insilmaril@726: } insilmaril@726: insilmaril@728: QModelIndex Selection::getBranchIndex() insilmaril@728: { insilmaril@732: return model->getSelectionModel()->selectedIndexes().first(); // TODO no multiselections yet insilmaril@728: insilmaril@728: } insilmaril@735: */ insilmaril@728: insilmaril@424: FloatImageObj* Selection::getFloatImage() insilmaril@424: { insilmaril@424: if (!selectList.isEmpty()) insilmaril@424: { insilmaril@424: LinkableMapObj *sel=selectList.first(); insilmaril@424: if (typeid (*sel)==typeid (FloatImageObj)) insilmaril@424: return (FloatImageObj*)sel; insilmaril@424: } insilmaril@424: return NULL; insilmaril@424: } insilmaril@424: insilmaril@746: QString Selection::getSelectString() // FIXME-2 VM this is also in VM ?! clean up here... insilmaril@729: // TODO no multiselections yet insilmaril@421: { insilmaril@16: if (selectList.count()==1) insilmaril@650: { insilmaril@650: return model->getSelectString (selectList.first() ); insilmaril@650: } insilmaril@16: else insilmaril@16: return""; insilmaril@16: } insilmaril@16: insilmaril@16: