diff -r 59614eaf5fbb -r 0301e6109702 vymmodel.cpp --- a/vymmodel.cpp Wed Apr 29 18:46:31 2009 +0000 +++ b/vymmodel.cpp Wed Apr 29 21:40:37 2009 +0000 @@ -992,6 +992,7 @@ mapChanged=true; mapDefault=false; mapUnsaved=true; + latestAddedItem=NULL; findReset(); } @@ -1401,28 +1402,33 @@ return mapScene; } -TreeItem* VymModel::findBySelectString(const QString &s) //FIXME-0 -{ - return NULL; - if (!s.isEmpty() ) +TreeItem* VymModel::findBySelectString(QString s) +{ + if (s.isEmpty() ) return NULL; + + // Old maps don't have multiple mapcenters and don't save full path + if (s.left(2) !="mc") + s="mc:0,"+s; + + QStringList parts=s.split (","); + QString typ; + int n; + TreeItem *ti=rootItem; + + while (!parts.isEmpty() ) { - QString part; - QString typ; - QString num; - part=s.section(",",0,0); - typ=part.left (2); - num=part.right(part.length() - 3); - if (typ=="mc" && num.toInt()>=0 && num.toInt() branchCount() ) - return rootItem->getBranchNum (num.toInt() ); - } - - TreeItem *ti; - for (int i=0; ibranchCount(); i++) - { - // ti=rootItem->getBranchNum(i)->findBySelectString(s); - if (ti) return ti; - } - return NULL; + typ=parts.first().left(2); + n=parts.first().right(parts.first().length() - 3).toInt(); + parts.removeFirst(); + if (typ=="mc" || typ=="bo") + ti=ti->getBranchNum (n); + /* FIXME-2 + else + if (typ="fi") + ti=ti->getImageNum (n); + */ + } + return ti; } TreeItem* VymModel::findID (const QString &s) @@ -2044,7 +2050,7 @@ MapCenterItem* VymModel::addMapCenter () { - MapCenterItem *mci=addMapCenter (contextPos); //FIXME-2 get rid of MCO here + MapCenterItem *mci=addMapCenter (contextPos); //FIXME-3 selection.select (mco); updateActions(); ensureSelectionVisible(); @@ -2186,7 +2192,7 @@ reposition(); // selection.update(); FIXME-3 - latestSelectionString=getSelectString(newbi); + latestAddedItem=newbi; // In Network mode, the client needs to know where the new branch is, // so we have to pass on this information via saveState. // TODO: Get rid of this positioning workaround @@ -2268,7 +2274,6 @@ void VymModel::deleteSelection() { - BranchObj *bo = getSelectedBranchObj(); // FIXME-2 VM should not be necessary BranchItem *selbi=getSelectedBranchItem(); if (!selbi) return; @@ -3351,13 +3356,13 @@ ///////////////////////////////////////////////////////////////////// } else */ if (com=="selectLatestAdded") { - if (latestSelectionString.isEmpty() ) + if (!latestAddedItem) { parser.setError (Aborted,"No latest added object"); } else { - if (!select (latestSelectionString)) - parser.setError (Aborted,"Could not select latest added object "+latestSelectionString); + if (!select (latestAddedItem)) + parser.setError (Aborted,"Could not select latest added object "); } ///////////////////////////////////////////////////////////////////// } else if (com=="setFrameType") @@ -3882,10 +3887,6 @@ void VymModel::registerEditor(QWidget *me) { mapEditor=(MapEditor*)me; - /* FIXME-3 - for (int i=0; ibranchCount(); i++) - rootItem->getBranchNum(i)->setMapEditor(mapEditor); - */ } void VymModel::unregisterEditor(QWidget *) @@ -3924,9 +3925,11 @@ ((MapCenterObj*)rootItem->getBranchObjNum(i))->updateRelPositions(); } -void VymModel::reposition() //FIXME-2 VM should have no need to reposition, this is done in views??? -{ - //cout << "VM::reposition ...\n"; +void VymModel::reposition() //FIXME-3 VM should have no need to reposition, this is done in views??? +{ + //cout << "VM::reposition blocked="<branchCount(); i++) rootItem->getBranchObjNum(i)->reposition(); // for positioning heading } @@ -4998,19 +5001,6 @@ return NULL; } -MapCenterItem* VymModel::getSelectedMapCenterItem() -{ - QModelIndexList list=selModel->selectedIndexes(); - if (!list.isEmpty() ) - { - TreeItem *ti = getItem (list.first() ); - TreeItem::Type type=ti->getType(); - if (ti->getType()==TreeItem::MapCenter) - return (MapCenterItem*)ti; - } - return NULL; -} - TreeItem* VymModel::getSelectedItem() { QModelIndexList list=selModel->selectedIndexes();