diff -r 6269016c9905 -r c6bb4fdcc55f vymmodel.cpp --- a/vymmodel.cpp Thu Aug 06 10:42:17 2009 +0000 +++ b/vymmodel.cpp Sat Aug 08 21:58:26 2009 +0000 @@ -360,7 +360,7 @@ // (map state is set later at end of load...) } else { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (!bi) return aborted; if (lmode==ImportAdd) saveStateChangingPart( @@ -607,7 +607,7 @@ if (selectionType()==TreeItem::Image) saveFloatImage(); else - saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),getSelectedBranchItem()); + saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),getSelectedBranch()); // TODO take care of multiselections } @@ -725,7 +725,7 @@ void VymModel::loadFloatImage () { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { @@ -776,7 +776,7 @@ void VymModel::saveFloatImage () { - ImageItem *ii=getSelectedImageItem(); + ImageItem *ii=getSelectedImage(); if (ii) { QFileDialog *fd=new QFileDialog( NULL); @@ -1487,7 +1487,7 @@ void VymModel::setHeading(const QString &s) { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { saveState( @@ -1564,7 +1564,7 @@ //cout <<"still searching... "<getHeading())<getLMO()); @@ -1647,7 +1647,7 @@ void VymModel::setFrameType(const QString &s) //FIXME-4 not saved if there is no LMO { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { BranchObj *bo=(BranchObj*)(bi->getLMO()); @@ -1665,7 +1665,7 @@ void VymModel::setFramePenColor(const QColor &c) //FIXME-4 not saved if there is no LMO { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { BranchObj *bo=(BranchObj*)(bi->getLMO()); @@ -1680,7 +1680,7 @@ void VymModel::setFrameBrushColor(const QColor &c) //FIXME-4 not saved if there is no LMO { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { BranchObj *bo=(BranchObj*)(bi->getLMO()); @@ -1695,7 +1695,7 @@ void VymModel::setFramePadding (const int &i) //FIXME-4 not saved if there is no LMO { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { BranchObj *bo=(BranchObj*)(bi->getLMO()); @@ -1712,7 +1712,7 @@ void VymModel::setFrameBorderWidth(const int &i) //FIXME-4 not saved if there is no LMO { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { BranchObj *bo=(BranchObj*)(bi->getLMO()); @@ -1729,7 +1729,7 @@ void VymModel::setIncludeImagesVer(bool b) { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { QString u= b ? "false" : "true"; @@ -1750,7 +1750,7 @@ void VymModel::setIncludeImagesHor(bool b) { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { QString u= b ? "false" : "true"; @@ -1869,7 +1869,7 @@ void VymModel::paste() { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { saveStateChangingPart( @@ -1896,7 +1896,7 @@ void VymModel::moveUp() { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { if (!selbi->canMoveUp()) return; @@ -1909,7 +1909,7 @@ void VymModel::moveDown() { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { if (!selbi->canMoveDown()) return; @@ -1985,8 +1985,6 @@ AttributeItem* VymModel::addAttribute() { - cout << "VM::addAttribute\n"; - TreeItem *selti=getSelectedItem(); if (selti) { @@ -2108,7 +2106,7 @@ // 0 add as child // +1 add below BranchItem *newbi=NULL; - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { @@ -2145,7 +2143,7 @@ BranchItem* VymModel::addNewBranchBefore() { BranchItem *newbi=NULL; - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi && selbi->getType()==TreeItem::Branch) // We accept no MapCenter here, so we _have_ a parent { @@ -2255,7 +2253,7 @@ void VymModel::deleteSelection() // FIXME-2 include fix for deleted mapcenters from 1.12.4 { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi && selbi->isBranchLikeType() ) { @@ -2270,18 +2268,19 @@ } return; } - ImageItem *ii=getSelectedImageItem(); - if (ii) + TreeItem *ti=getSelectedImage(); + if (ti->getType()==TreeItem::Image || ti->getType()==TreeItem::Attribute) { - BranchItem *pi=(BranchItem*)(ii->parent()); + TreeItem *pi=ti->parent(); saveStateChangingPart( pi, - ii, + ti, "delete ()", - QString("Delete %1").arg(getObjectName(ii)) + QString("Delete %1").arg(getObjectName(ti)) ); unselect(); - deleteItem (ii); + deleteItem (ti); + emitDataHasChanged (pi); select (pi); reposition(); emitShowSelection(); @@ -2289,10 +2288,10 @@ } } -void VymModel::deleteKeepChildren() //FIXME-2 does not work yet for mapcenters - -{ - BranchItem *selbi=getSelectedBranchItem(); +void VymModel::deleteKeepChildren() //FIXME-3 does not work yet for mapcenters + +{ + BranchItem *selbi=getSelectedBranch(); BranchItem *pi; if (selbi) { @@ -2341,7 +2340,7 @@ void VymModel::deleteChildren() { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { saveStateChangingPart( @@ -2442,7 +2441,7 @@ void VymModel::toggleScroll() { - BranchItem *bi=(BranchItem*)getSelectedBranchItem(); + BranchItem *bi=(BranchItem*)getSelectedBranch(); if (bi && bi->isBranchLikeType() ) { if (bi->isScrolled()) @@ -2477,7 +2476,7 @@ void VymModel::toggleStandardFlag (const QString &name, FlagRow *master) { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { QString u,r; @@ -2524,7 +2523,7 @@ void VymModel::colorBranch (QColor c) { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { saveState( @@ -2540,7 +2539,7 @@ void VymModel::colorSubtree (QColor c) { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) { saveStateChangingPart( @@ -2562,7 +2561,7 @@ QColor VymModel::getCurrentHeadingColor() { - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); if (selbi) return selbi->getHeadingColor(); QMessageBox::warning(0,"Warning","Can't get color of heading,\nthere's no branch selected"); @@ -2651,7 +2650,7 @@ void VymModel::editVymLink() { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { QStringList filters; @@ -2695,7 +2694,7 @@ void VymModel::deleteVymLink() { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) { saveState( @@ -2713,7 +2712,7 @@ QString VymModel::getVymLink() { - BranchItem *bi=getSelectedBranchItem(); + BranchItem *bi=getSelectedBranch(); if (bi) return bi->getVymLink(); else @@ -2724,7 +2723,7 @@ QStringList VymModel::getVymLinks() { QStringList links; - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); BranchItem *cur=selbi; BranchItem *prev=NULL; while (cur) @@ -2792,7 +2791,7 @@ void VymModel::parseAtom(const QString &atom) { TreeItem* selti=getSelectedItem(); - BranchItem *selbi=getSelectedBranchItem(); + BranchItem *selbi=getSelectedBranch(); QString s,t; double x,y; int n; @@ -3307,7 +3306,7 @@ ///////////////////////////////////////////////////////////////////// } else if (com=="saveImage") { - ImageItem *ii=getSelectedImageItem(); + ImageItem *ii=getSelectedImage(); if (!ii ) { parser.setError (Aborted,"No image selected"); @@ -4612,12 +4611,7 @@ bool VymModel::select (const QString &s) { TreeItem *ti=findBySelectString(s); - if (ti) - { - unselect(); - select (ti); - return true; - } + if (ti) return select (index(ti)); return false; } @@ -4626,7 +4620,7 @@ QItemSelection oldsel=selModel->selection(); if (lmo) - return select (lmo->getTreeItem() ); + return select (index (lmo->getTreeItem()) ); else return false; } @@ -4642,7 +4636,8 @@ if (index.isValid() ) { selModel->select (index,QItemSelectionModel::ClearAndSelect ); - getSelectedItem()->setLastSelectedBranch(); + BranchItem *bi=getSelectedBranch(); + if (bi) bi->setLastSelectedBranch(); return true; } return false; @@ -4654,9 +4649,9 @@ selModel->clearSelection(); } -void VymModel::reselect() -{ - select (lastSelectString); +bool VymModel::reselect() +{ + return select (lastSelectString); } void VymModel::emitShowSelection() @@ -4678,7 +4673,7 @@ } -//void VymModel::selectInt (LinkableMapObj *lmo) // FIXME-3 still needed? +//bool VymModel::selectInt (LinkableMapObj *lmo) // FIXME-3 still needed? /* { if (selection.select(lmo)) @@ -4687,7 +4682,7 @@ } } -void VymModel::selectInt (TreeItem *ti) +bool VymModel::selectInt (TreeItem *ti) { if (selection.select(lmo)) { @@ -4696,264 +4691,58 @@ } */ -void VymModel::selectNextBranchInt() -{ - BranchItem *bi=getSelectedBranchItem(); - if (bi) - { - TreeItem *pi=bi->parent(); - if (bi!=rootItem) - { - int i=bi->num(); - if (ibranchCount() ) - { - // select previous branch with same parent - i++; - select (pi->getBranchNum(i)); - return; - } - } - - } -} - -void VymModel::selectPrevBranchInt() -{ - - BranchItem *bi=getSelectedBranchItem(); - if (bi) - { - BranchItem *pi=(BranchItem*)bi->parent(); - if (bi!=rootItem) - { - int i=bi->num(); - if (i>0) - { - // select previous branch with same parent - bi=pi->getBranchNum(i-1); - select (bi); - return; - } - bi=pi; - while (bi->branchCount() >0) - bi=bi->getLastBranch(); - select (bi); - - // Try to select last branch in parent pi2 previous to own parent pi - /* - TreeItem *pi2=pi->parent(); - if (pi2) - { - int j=pi->num(); - if (pi2->) - } - */ - } - } -} - -void VymModel::selectAboveBranchInt() -{ - BranchItem *bi=getSelectedBranchItem(); - if (bi) - { - BranchItem *newbi=NULL; - BranchItem *pi=(BranchItem*)bi->parent(); - int i=bi->num(); - if (i>0) - { - // goto previous branch with same parent - newbi=pi->getBranchNum(i-1); - while (newbi->branchCount() >0 ) - newbi=newbi->getLastBranch(); - } - else - newbi=pi; - if (newbi==rootItem) - // already at top branch (resp. mapcenter) - return; - select (newbi); - } -} - -void VymModel::selectBelowBranchInt() -{ - BranchItem *bi=getSelectedBranchItem(); - if (bi) - { - BranchItem *newbi=NULL; - - if (bi->branchCount() >0) - newbi=bi->getFirstBranch(); - else - { - BranchItem *pi; - int i; - while (!newbi) - { - pi=(BranchItem*)bi->parent(); - i=bi->num(); - if (pi->branchCount()-1 > i) - { - newbi=(BranchItem*)pi->getBranchNum(i+1); - //done... - break; - } - else - // look for siblings of myself - // or parent, or parent of parent... - bi=pi; - if (bi==rootItem) - // already at end - return; - } - } - select (newbi); - } -} - -void VymModel::selectUpperBranch() -{ - BranchItem *bi=getSelectedBranchItem(); - if (bi && bi->isBranchLikeType()) - selectAboveBranchInt(); -} - -void VymModel::selectLowerBranch() -{ - BranchItem *bi=getSelectedBranchItem(); - if (bi && bi->isBranchLikeType()) - selectBelowBranchInt(); -} - - -void VymModel::selectLeftBranch() -{ - QItemSelection oldsel=selModel->selection(); - - BranchItem* par; - BranchItem *selbi=getSelectedBranchItem(); - TreeItem::Type type=selbi->getType(); - if (selbi) - { - if (type == TreeItem::MapCenter) - { - QModelIndex ix=index(selbi); - selModel->select (index (rowCount(ix)-1,0,ix),QItemSelectionModel::ClearAndSelect ); - } else - { - par=(BranchItem*)selbi->parent(); - if (selbi->getBranchObj()->getOrientation()==LinkableMapObj::RightOfCenter) //FIXME-3 check getBO... - { - // right of center - if (type == TreeItem::Branch || - type == TreeItem::Image) - { - QModelIndex ix=index (selbi->parent()); - selModel->select (ix,QItemSelectionModel::ClearAndSelect ); - } - } else - { - // left of center - if (type == TreeItem::Branch ) - { - selectLastSelectedBranch(); - return; - } - } - } - } -} - -void VymModel::selectRightBranch() -{ - QItemSelection oldsel=selModel->selection(); - - BranchItem* par; - BranchItem *selbi=getSelectedBranchItem(); - TreeItem::Type type=selbi->getType(); - if (selbi) - { - if (type==TreeItem::MapCenter) - { - QModelIndex ix=index(selbi); - selModel->select (index (0,0,ix),QItemSelectionModel::ClearAndSelect ); - } else - { - par=(BranchItem*)selbi->parent(); - if (selbi->getBranchObj()->getOrientation()==LinkableMapObj::RightOfCenter) //FIXME-3 check getBO - { - // right of center - if ( type== TreeItem::Branch ) - { - selectLastSelectedBranch(); - return; - } - } else - { - // left of center - if (type == TreeItem::Branch || - type == TreeItem::Image) - { - QModelIndex ix=index(selbi->parent()); - selModel->select (ix,QItemSelectionModel::ClearAndSelect ); - } - } - } - } -} - -void VymModel::selectFirstBranch() -{ - TreeItem *ti=getSelectedBranchItem(); +bool VymModel::selectFirstBranch() +{ + TreeItem *ti=getSelectedBranch(); if (ti) { TreeItem *par=ti->parent(); - if (!par) return; - TreeItem *ti2=par->getFirstBranch(); - if (ti2) { - select(ti2); - emitSelectionChanged(); + if (par) + { + TreeItem *ti2=par->getFirstBranch(); + if (ti2) return select(ti2); } } + return false; } -void VymModel::selectLastBranch() -{ - TreeItem *ti=getSelectedBranchItem(); +bool VymModel::selectLastBranch() +{ + TreeItem *ti=getSelectedBranch(); if (ti) { TreeItem *par=ti->parent(); - if (!par) return; - TreeItem *ti2=par->getLastBranch(); - if (ti2) { - select(ti2); - emitSelectionChanged(); + if (par) + { + TreeItem *ti2=par->getLastBranch(); + if (ti2) return select(ti2); } } + return false; } -void VymModel::selectLastSelectedBranch() -{ - TreeItem *ti=getSelectedBranchItem(); - if (ti) +bool VymModel::selectLastSelectedBranch() +{ + BranchItem *bi=getSelectedBranch(); + if (bi) { - ti=ti->getLastSelectedBranch(); - if (ti) select (ti); + bi=bi->getLastSelectedBranch(); + if (bi) return select (bi); } + return false; } -void VymModel::selectParent() +bool VymModel::selectParent() { TreeItem *ti=getSelectedItem(); TreeItem *par; if (ti) { par=ti->parent(); - if (!par) return; - select(par); - emitSelectionChanged(); + if (par) + return select(par); } + return false; } TreeItem::Type VymModel::selectionType() @@ -4980,14 +4769,14 @@ BranchObj* VymModel::getSelectedBranchObj() // FIXME-3 this should not be needed in the end!!! { - TreeItem *ti = getSelectedBranchItem(); + TreeItem *ti = getSelectedBranch(); if (ti) return (BranchObj*)( ((MapItem*)ti)->getLMO()); else return NULL; } -BranchItem* VymModel::getSelectedBranchItem() +BranchItem* VymModel::getSelectedBranch() { QModelIndexList list=selModel->selectedIndexes(); if (!list.isEmpty() ) @@ -5000,25 +4789,7 @@ return NULL; } -TreeItem* VymModel::getSelectedItem() -{ - QModelIndexList list=selModel->selectedIndexes(); - if (!list.isEmpty() ) - return getItem (list.first() ); - else - return NULL; -} - -QModelIndex VymModel::getSelectedIndex() -{ - QModelIndexList list=selModel->selectedIndexes(); - if (list.isEmpty() ) - return QModelIndex(); - else - return list.first(); -} - -ImageItem* VymModel::getSelectedImageItem() +ImageItem* VymModel::getSelectedImage() { QModelIndexList list=selModel->selectedIndexes(); if (!list.isEmpty()) @@ -5030,6 +4801,37 @@ return NULL; } +AttributeItem* VymModel::getSelectedAttribute() +{ + QModelIndexList list=selModel->selectedIndexes(); + if (!list.isEmpty() ) + { + TreeItem *ti = getItem (list.first() ); + TreeItem::Type type=ti->getType(); + if (type ==TreeItem::Attribute) + return (AttributeItem*)ti; + } + return NULL; +} + +TreeItem* VymModel::getSelectedItem() +{ + QModelIndexList list=selModel->selectedIndexes(); + if (!list.isEmpty() ) + return getItem (list.first() ); + else + return NULL; +} + +QModelIndex VymModel::getSelectedIndex() +{ + QModelIndexList list=selModel->selectedIndexes(); + if (list.isEmpty() ) + return QModelIndex(); + else + return list.first(); +} + QString VymModel::getSelectString () { return getSelectString (getSelectedItem()); @@ -5050,6 +4852,7 @@ case TreeItem::MapCenter: s="mc:"; break; case TreeItem::Branch: s="bo:";break; case TreeItem::Image: s="fi:";break; + case TreeItem::Attribute: s="ai:";break; default:break; } s= s + QString("%1").arg(ti->num());