vymmodel.cpp
changeset 767 6d2b32f305f9
parent 766 7a71a914afdb
child 769 a6931cd6309a
     1.1 --- a/vymmodel.cpp	Thu May 07 08:48:53 2009 +0000
     1.2 +++ b/vymmodel.cpp	Wed May 13 08:26:27 2009 +0000
     1.3 @@ -44,8 +44,6 @@
     1.4  extern QDir lastImageDir;
     1.5  extern QDir lastFileDir;
     1.6  
     1.7 -extern FlagRowObj *standardFlagsDefault;
     1.8 -
     1.9  extern Settings settings;
    1.10  
    1.11  
    1.12 @@ -234,7 +232,7 @@
    1.13  	xml.incIndent();
    1.14  
    1.15  	// Find the used flags while traversing the tree	// FIXME-2 this can be done local to vymmodel maybe...
    1.16 -	standardFlagsDefault->resetUsedCounter();
    1.17 +	//FIXME-2 not used any longer: standardFlagsDefault->resetUsedCounter();
    1.18  	
    1.19  	// Reset the counters before saving
    1.20  	// TODO constr. of FIO creates lots of objects, better do this in some other way...
    1.21 @@ -267,8 +265,7 @@
    1.22  	xml.decIndent();
    1.23  	s+=xml.endElement("vymmap");
    1.24  
    1.25 -	if (writeflags)
    1.26 -		standardFlagsDefault->saveToDir (tmpdir+"/flags/","",writeflags);
    1.27 +	// FIXME-2 if (writeflags) standardFlagsDefault->saveToDir (tmpdir+"/flags/","",writeflags);
    1.28  	return s;
    1.29  }
    1.30  
    1.31 @@ -1514,14 +1511,11 @@
    1.32  			"setHeading (\""+s+"\")", 
    1.33  			QString("Set heading of %1 to \"%2\"").arg(getObjectName(selbi)).arg(s) );
    1.34  		selbi->setHeading(s );
    1.35 -		QModelIndex ix2=index (selbi);
    1.36 -		emit (dataChanged ( ix2,ix2));
    1.37 -		/* FIXME-3 testing only
    1.38 -		*/
    1.39 +		emitDataHasChanged ( selbi);	//FIXME-3 maybe emit signal from TreeItem? 
    1.40  
    1.41  		reposition();
    1.42  //		selection.update();	//FIXME-4
    1.43 -		emitShowSelection();
    1.44 +		updateSelection();
    1.45  	}
    1.46  }
    1.47  
    1.48 @@ -1597,38 +1591,33 @@
    1.49  			// which is (still) needed to create MapCenters
    1.50  }
    1.51  
    1.52 -void VymModel::setURL(const QString &url) //FIXME-2
    1.53 -{
    1.54 -/*
    1.55 -	BranchObj *bo=getSelectedBranch();
    1.56 -	if (bo)
    1.57 +void VymModel::setURL(const QString &url) 
    1.58 +{
    1.59 +	TreeItem *selti=getSelectedItem();
    1.60 +	if (selti)
    1.61  	{
    1.62 -		QString oldurl=bo->getURL();
    1.63 -		bo->setURL (url);
    1.64 +		QString oldurl=selti->getURL();
    1.65 +		selti->setURL (url);
    1.66  		saveState (
    1.67 -			bo,
    1.68 +			selti,
    1.69  			QString ("setURL (\"%1\")").arg(oldurl),
    1.70 -			bo,
    1.71 +			selti,
    1.72  			QString ("setURL (\"%1\")").arg(url),
    1.73 -			QString ("set URL of %1 to %2").arg(getObjectName(bo)).arg(url)
    1.74 +			QString ("set URL of %1 to %2").arg(getObjectName(selti)).arg(url)
    1.75  		);
    1.76 -		updateActions();
    1.77  		reposition();
    1.78 -		selection.update();
    1.79 +		emitDataHasChanged (selti);
    1.80  		emitShowSelection();
    1.81  	}
    1.82 -*/
    1.83  }	
    1.84  
    1.85 -QString VymModel::getURL()	//FIXME-2
    1.86 -{
    1.87 -/*
    1.88 -	BranchObj *bo=getSelectedBranch();
    1.89 -	if (bo)
    1.90 -		return bo->getURL();
    1.91 -	else
    1.92 -		return "";
    1.93 -*/
    1.94 +QString VymModel::getURL()	
    1.95 +{
    1.96 +	TreeItem *selti=getSelectedItem();
    1.97 +	if (selti)
    1.98 +		return selti->getURL();
    1.99 +	else	
   1.100 +		return QString();
   1.101  }
   1.102  
   1.103  QStringList VymModel::getURLs()	// FIXME-1	first, next moved to vymmodel
   1.104 @@ -1864,20 +1853,19 @@
   1.105  }
   1.106  
   1.107  
   1.108 -void VymModel::copy()	//FIXME-2
   1.109 -{
   1.110 -/*
   1.111 -	LinkableMapObj *sel=getSelectedLMO();
   1.112 -	if (sel &&
   1.113 -		(selectionType() == TreeItem::Branch || 
   1.114 -		selectionType() == TreeItem::MapCenter  ||
   1.115 -		selectionType() == TreeItem::Image ))
   1.116 +void VymModel::copy()	
   1.117 +{
   1.118 +	TreeItem *selti=getSelectedItem();
   1.119 +	if (selti &&
   1.120 +		(selti->getType() == TreeItem::Branch || 
   1.121 +		selti->getType() == TreeItem::MapCenter  ||
   1.122 +		selti->getType() == TreeItem::Image ))
   1.123  	{
   1.124  		if (redosAvail == 0)
   1.125  		{
   1.126  			// Copy to history
   1.127 -			QString s=getSelectString(sel);
   1.128 -			saveState (PartOfMap, s, "nop ()", s, "copy ()","Copy selection to clipboard",sel  );
   1.129 +			QString s=getSelectString(selti);
   1.130 +			saveState (PartOfMap, s, "nop ()", s, "copy ()","Copy selection to clipboard",selti  );
   1.131  			curClipboard=curStep;
   1.132  		}
   1.133  
   1.134 @@ -1889,13 +1877,11 @@
   1.135  		clipboardEmpty=false;
   1.136  		updateActions();
   1.137  	}	    
   1.138 -*/	
   1.139  }
   1.140  
   1.141  
   1.142 -void VymModel::pasteNoSave(const int &n)	//FIXME-2
   1.143 -{
   1.144 -/*
   1.145 +void VymModel::pasteNoSave(const int &n)
   1.146 +{
   1.147  	bool old=blockSaveState;
   1.148  	blockSaveState=true;
   1.149  	bool zippedOrg=zipped;
   1.150 @@ -1910,87 +1896,59 @@
   1.151  		load (clipboardDir+"/"+clipboardFile,ImportAdd, VymMap);
   1.152  	zipped=zippedOrg;
   1.153  	blockSaveState=old;
   1.154 -*/
   1.155  }
   1.156  
   1.157 -void VymModel::paste()		//FIXME-2
   1.158 +void VymModel::paste()	
   1.159  {   
   1.160 -/*
   1.161 -	BranchObj *sel=getSelectedBranch();
   1.162 -	if (sel)
   1.163 +	BranchItem *selbi=getSelectedBranchItem();
   1.164 +	if (selbi)
   1.165  	{
   1.166  		saveStateChangingPart(
   1.167 -			sel,
   1.168 -			sel,
   1.169 +			selbi,
   1.170 +			selbi,
   1.171  			QString ("paste (%1)").arg(curClipboard),
   1.172 -			QString("Paste to %1").arg( getObjectName(sel))
   1.173 +			QString("Paste to %1").arg( getObjectName(selbi))
   1.174  		);
   1.175  		pasteNoSave(0);
   1.176  		reposition();
   1.177  	}
   1.178 -*/	
   1.179  }
   1.180  
   1.181 -void VymModel::cut()	//FIXME-2
   1.182 -{
   1.183 -/*
   1.184 -	LinkableMapObj *sel=getSelectedLMO();
   1.185 -	if ( sel && (selectionType() == TreeItem::Branch ||
   1.186 -		selectionType()==TreeItem::MapCenter ||
   1.187 -		selectionType()==TreeItem::Image))
   1.188 +void VymModel::cut()	
   1.189 +{
   1.190 +	TreeItem *selti=getSelectedItem();
   1.191 +	if ( selti && (selti->isBranchLikeType() ||selti->getType()==TreeItem::Image))
   1.192  	{
   1.193 -*/
   1.194 -	/* No savestate! savestate is called in cutNoSave
   1.195 -		saveStateChangingPart(
   1.196 -			sel->getParObj(),
   1.197 -			sel,
   1.198 -			"cut ()",
   1.199 -			QString("Cut %1").arg(getObjectName(sel ))
   1.200 -		);
   1.201 -	*/	
   1.202 -/*	
   1.203  		copy();
   1.204  		deleteSelection();
   1.205  		reposition();
   1.206  	}
   1.207 -*/}
   1.208 -
   1.209 -void VymModel::moveBranchUp()	//FIXME-2
   1.210 -{
   1.211 -/*
   1.212 -	BranchObj* bo=getSelectedBranch();
   1.213 -	BranchObj* par;
   1.214 -	if (bo)
   1.215 +}
   1.216 +
   1.217 +void VymModel::moveUp()	
   1.218 +{
   1.219 +	BranchItem *selbi=getSelectedBranchItem();
   1.220 +	if (selbi)
   1.221  	{
   1.222 -		if (!bo->canMoveBranchUp()) return;
   1.223 -		par=(BranchObj*)(bo->getParObj());
   1.224 -		BranchObj *obo=par->moveBranchUp (bo);	// bo will be the one below selection
   1.225 -		saveState (getSelectString(bo),"moveBranchDown ()",getSelectString(obo),"moveBranchUp ()",QString("Move up %1").arg(getObjectName(bo)));
   1.226 -		reposition();
   1.227 -		//FIXME-3 VM needed? scene()->update();
   1.228 -		selection.update();
   1.229 -		emitShowSelection();
   1.230 +		if (!selbi->canMoveUp()) return;
   1.231 +		QString oldsel=getSelectString();
   1.232 +		if (relinkBranch (selbi,(BranchItem*)selbi->parent(),selbi->num()-1) )
   1.233 +
   1.234 +			saveState (getSelectString(),"moveDown ()",oldsel,"moveUp ()",QString("Move up %1").arg(getObjectName(selbi)));
   1.235  	}
   1.236 -	*/
   1.237  }
   1.238  
   1.239 -void VymModel::moveBranchDown()	//FIXME-2
   1.240 -{
   1.241 -/*
   1.242 -	BranchObj* bo=getSelectedBranch();
   1.243 -	BranchObj* par;
   1.244 -	if (bo)
   1.245 +void VymModel::moveDown()	
   1.246 +{
   1.247 +	BranchItem *selbi=getSelectedBranchItem();
   1.248 +	if (selbi)
   1.249  	{
   1.250 -		if (!bo->canMoveBranchDown()) return;
   1.251 -		par=(BranchObj*)(bo->getParObj());
   1.252 -		BranchObj *obo=par->moveBranchDown(bo);	// bo will be the one above selection
   1.253 -		saveState(getSelectString(bo),"moveBranchUp ()",getSelectString(obo),"moveBranchDown ()",QString("Move down %1").arg(getObjectName(bo)));
   1.254 -		reposition();
   1.255 -		//FIXME-3 VM needed? scene()->update();
   1.256 -		selection.update();
   1.257 -		emitShowSelection();
   1.258 -	}	
   1.259 -*/	
   1.260 +		if (!selbi->canMoveDown()) return;
   1.261 +		QString oldsel=getSelectString();
   1.262 +		if ( relinkBranch (selbi,(BranchItem*)selbi->parent(),selbi->num()+1) )
   1.263 +
   1.264 +			saveState (getSelectString(),"moveUp ()",oldsel,"moveDown ()",QString("Move down %1").arg(getObjectName(selbi)));
   1.265 +	}
   1.266  }
   1.267  
   1.268  void VymModel::sortChildren()	// FIXME-2 not implemented yet
   1.269 @@ -2084,7 +2042,6 @@
   1.270  	rootItem->appendChild (mci);
   1.271  
   1.272  	endInsertRows();
   1.273 -	emit (newChildObject (parix));
   1.274  	emit (layoutChanged() );
   1.275  
   1.276  	// Create MapObj
   1.277 @@ -2162,7 +2119,6 @@
   1.278  			parbi->insertBranch(n,newbi);	
   1.279  			endInsertRows ();
   1.280  		}
   1.281 -		emit (newChildObject (parix));
   1.282  		emit (layoutChanged() );
   1.283  
   1.284  		// save scroll state. If scrolled, automatically select
   1.285 @@ -2251,10 +2207,11 @@
   1.286  	return NULL;
   1.287  }
   1.288  
   1.289 -BranchItem* VymModel::relinkBranch (BranchItem *branch, BranchItem *dst, int pos)
   1.290 +bool VymModel::relinkBranch (BranchItem *branch, BranchItem *dst, int pos)
   1.291  {
   1.292  	if (branch && dst)
   1.293  	{
   1.294 +		cout << "VM::relinkBranch "<<branch->getHeadingStd()<<"  to "<<dst->getHeadingStd()<<"  at "<<pos<<endl;
   1.295  		emit (layoutAboutToBeChanged() );
   1.296  		BranchItem *branchpi=(BranchItem*)branch->parent();
   1.297  		// Remove at current position
   1.298 @@ -2276,8 +2233,11 @@
   1.299  
   1.300  		branch->getLMO()->setParObj(dst->getLMO());	//FIXME-5 update parObj in View
   1.301  		emit (layoutChanged() );
   1.302 +		reposition();	// both for moveUp/Down and relinking
   1.303  		select (branch);
   1.304 +		return true;
   1.305  	}
   1.306 +	return false;
   1.307  }
   1.308  
   1.309  void VymModel::deleteSelection()
   1.310 @@ -2393,21 +2353,23 @@
   1.311  		if (bi->isScrolled()) return false;
   1.312  		if (bi->branchCount()==0) return false;
   1.313  		if (bi->depth()==0) return false;
   1.314 -		QString u,r;
   1.315 -		r="scroll";
   1.316 -		u="unscroll";
   1.317 -		/* FIXME-3 no savestate yet
   1.318 -		saveState(
   1.319 -			bo,
   1.320 -			QString ("%1 ()").arg(u),
   1.321 -			bo,
   1.322 -			QString ("%1 ()").arg(r),
   1.323 -			QString ("%1 %2").arg(r).arg(getObjectName(bo))
   1.324 -		);
   1.325 -		*/
   1.326 -		bi->toggleScroll();
   1.327 -		mapScene->update(); //Needed for _quick_ update
   1.328 -		return true;
   1.329 +		if (bi->toggleScroll())
   1.330 +		{
   1.331 +			QString u,r;
   1.332 +			r="scroll";
   1.333 +			u="unscroll";
   1.334 +			saveState(
   1.335 +				bi,
   1.336 +				QString ("%1 ()").arg(u),
   1.337 +				bi,
   1.338 +				QString ("%1 ()").arg(r),
   1.339 +				QString ("%1 %2").arg(r).arg(getObjectName(bi))
   1.340 +			);
   1.341 +			emitDataHasChanged(bi);
   1.342 +			updateSelection();
   1.343 +			mapScene->update(); //Needed for _quick_ update,  even in 1.13.x //FIXME-3 force update via signal...
   1.344 +			return true;
   1.345 +		}
   1.346  	}	
   1.347  	return false;
   1.348  }
   1.349 @@ -2423,32 +2385,34 @@
   1.350  		QString u,r;
   1.351  		u="scroll";
   1.352  		r="unscroll";
   1.353 -		/* FIXME-3 no savestate yet
   1.354  		saveState(
   1.355 -			bo,
   1.356 +			bi,
   1.357  			QString ("%1 ()").arg(u),
   1.358 -			bo,
   1.359 +			bi,
   1.360  			QString ("%1 ()").arg(r),
   1.361 -			QString ("%1 %2").arg(r).arg(getObjectName(bo))
   1.362 +			QString ("%1 %2").arg(r).arg(getObjectName(bi))
   1.363  		);
   1.364 -		*/
   1.365  		bi->toggleScroll();
   1.366 -		mapScene->update();	// Needed for _quick_ update
   1.367 +		emitDataHasChanged(bi);
   1.368 +		updateSelection();
   1.369 +
   1.370 +		mapScene->update(); //Needed for _quick_ update,  even in 1.13.x //FIXME-3 force update via signal...
   1.371  		return true;
   1.372  	}	
   1.373  	return false;
   1.374  }
   1.375  
   1.376 -void VymModel::toggleScroll()
   1.377 +void VymModel::toggleScroll()	
   1.378  {
   1.379  	BranchItem *bi=(BranchItem*)getSelectedBranchItem();
   1.380 -	if (bi && bi->getType()==TreeItem::Branch )
   1.381 +	if (bi && bi->isBranchLikeType() )
   1.382  	{
   1.383  		if (bi->isScrolled())
   1.384  			unscrollBranch (bi);
   1.385  		else
   1.386  			scrollBranch (bi);
   1.387  	}
   1.388 +	// saveState is called in above functions
   1.389  }
   1.390  
   1.391  void VymModel::unscrollChildren() 	// FIXME-2	first, next moved to vymmodel
   1.392 @@ -2473,9 +2437,8 @@
   1.393  	emit (expandAll() );
   1.394  }
   1.395  
   1.396 -void VymModel::toggleStandardFlag (const QString &name)
   1.397 -{
   1.398 -	cout << "VM::toggleStandardFlag "<<name.toStdString()<<endl;
   1.399 +void VymModel::toggleStandardFlag (const QString &name, FlagRow *master)
   1.400 +{
   1.401  	BranchItem *bi=getSelectedBranchItem();
   1.402  	if (bi) 
   1.403  	{
   1.404 @@ -2496,8 +2459,9 @@
   1.405  			bi,
   1.406  			QString("%1 (\"%2\")").arg(r).arg(name),
   1.407  			QString("Toggling standard flag \"%1\" of %2").arg(name).arg(getObjectName(bi)));
   1.408 -		bi->toggleStandardFlag (name); //FIXME-0,mainWindow->useFlagGroups());
   1.409 -		//FIXME-0 model->updateSelection();	// geometry has changed
   1.410 +			bi->toggleStandardFlag (name, master);
   1.411 +		reposition();
   1.412 +		updateSelection();	
   1.413  	}
   1.414  }
   1.415  
   1.416 @@ -2568,28 +2532,25 @@
   1.417  
   1.418  
   1.419  
   1.420 -void VymModel::editURL()	//FIXME-2
   1.421 -{
   1.422 -/*
   1.423 -	BranchObj *bo=getSelectedBranch();
   1.424 -	if (bo)
   1.425 +void VymModel::editURL()	
   1.426 +{
   1.427 +	TreeItem *selti=getSelectedItem();
   1.428 +	if (selti)
   1.429  	{		
   1.430  		bool ok;
   1.431  		QString text = QInputDialog::getText(
   1.432  				"VYM", tr("Enter URL:"), QLineEdit::Normal,
   1.433 -				bo->getURL(), &ok, NULL);
   1.434 +				selti->getURL(), &ok, NULL);
   1.435  		if ( ok) 
   1.436  			// user entered something and pressed OK
   1.437  			setURL(text);
   1.438  	}
   1.439 -*/
   1.440  }
   1.441  
   1.442 -void VymModel::editLocalURL()	//FIXME-2
   1.443 -{
   1.444 -/*
   1.445 -	BranchObj *bo=getSelectedBranch();
   1.446 -	if (bo)
   1.447 +void VymModel::editLocalURL()
   1.448 +{
   1.449 +	TreeItem *selti=getSelectedItem();
   1.450 +	if (selti)
   1.451  	{		
   1.452  		QStringList filters;
   1.453  		filters <<"All files (*)";
   1.454 @@ -2601,8 +2562,8 @@
   1.455  		fd->setFilters (filters);
   1.456  		fd->setCaption(vymName+" - " +tr("Set URL to a local file"));
   1.457  		fd->setDirectory (lastFileDir);
   1.458 -		if (! bo->getVymLink().isEmpty() )
   1.459 -			fd->selectFile( bo->getURL() );
   1.460 +		if (! selti->getVymLink().isEmpty() )
   1.461 +			fd->selectFile( selti->getURL() );
   1.462  		fd->show();
   1.463  
   1.464  		if ( fd->exec() == QDialog::Accepted )
   1.465 @@ -2611,49 +2572,42 @@
   1.466  			setURL (fd->selectedFile() );
   1.467  		}
   1.468  	}
   1.469 -	*/
   1.470  }
   1.471  
   1.472  
   1.473 -void VymModel::editHeading2URL() //FIXME-2
   1.474 -{
   1.475 -/*
   1.476 -	BranchObj *bo=getSelectedBranch();
   1.477 -	if (bo)
   1.478 -		setURL (bo->getHeading());
   1.479 -*/		
   1.480 +void VymModel::editHeading2URL() 
   1.481 +{
   1.482 +	TreeItem *selti=getSelectedItem();
   1.483 +	if (selti)
   1.484 +		setURL (selti->getHeading());
   1.485  }	
   1.486  
   1.487 -void VymModel::editBugzilla2URL()	//FIXME-2
   1.488 -{
   1.489 -/*
   1.490 -	BranchObj *bo=getSelectedBranch();
   1.491 -	if (bo)
   1.492 +void VymModel::editBugzilla2URL()	
   1.493 +{
   1.494 +	TreeItem *selti=getSelectedItem();
   1.495 +	if (selti)
   1.496  	{		
   1.497 -		QString url= "https://bugzilla.novell.com/show_bug.cgi?id="+bo->getHeading();
   1.498 +		QString url= "https://bugzilla.novell.com/show_bug.cgi?id="+selti->getHeading();
   1.499  		setURL (url);
   1.500  	}
   1.501 -*/	
   1.502  }	
   1.503  
   1.504 -void VymModel::editFATE2URL()	//FIXME-2
   1.505 -{
   1.506 -/*
   1.507 -	BranchObj *bo=getSelectedBranch();
   1.508 -	if (bo)
   1.509 +void VymModel::editFATE2URL()
   1.510 +{
   1.511 +	TreeItem *selti=getSelectedItem();
   1.512 +	if (selti)
   1.513  	{		
   1.514 -		QString url= "http://keeper.suse.de:8080/webfate/match/id?value=ID"+bo->getHeading();
   1.515 +		QString url= "http://keeper.suse.de:8080/webfate/match/id?value=ID"+selti->getHeading();
   1.516  		saveState(
   1.517 -			bo,
   1.518 -			"setURL (\""+bo->getURL()+"\")",
   1.519 -			bo,
   1.520 +			selti,
   1.521 +			"setURL (\""+selti->getURL()+"\")",
   1.522 +			selti,
   1.523  			"setURL (\""+url+"\")",
   1.524 -			QString("Use heading of %1 as link to FATE").arg(getObjectName(bo))
   1.525 +			QString("Use heading of %1 as link to FATE").arg(getObjectName(selti))
   1.526  		);	
   1.527 -		bo->setURL (url);
   1.528 -		updateActions();
   1.529 +		selti->setURL (url);
   1.530 +		// FIXME-4 updateActions();
   1.531  	}
   1.532 -*/	
   1.533  }	
   1.534  
   1.535  void VymModel::editVymLink()
   1.536 @@ -2693,7 +2647,7 @@
   1.537  	BranchItem *bi=getSelectedBranchItem();
   1.538  	if (bi)
   1.539  	{
   1.540 -		bi->getBranchObj()->setVymLink(s);	//FIXME-3 check getBO
   1.541 +		bi->setVymLink(s);
   1.542  		reposition();
   1.543  		updateActions();
   1.544  		//selection.update();
   1.545 @@ -2708,16 +2662,14 @@
   1.546  	{		
   1.547  		saveState(
   1.548  			bi,
   1.549 -			"setVymLink (\""+bi->getBranchObj()->getVymLink()+"\")", //FIXME-3 check getBO
   1.550 -
   1.551 +			"setVymLink (\""+bi->getVymLink()+"\")", 
   1.552  			bi,
   1.553  			"setVymLink (\"\")",
   1.554  			QString("Unset vymlink of %1").arg(getObjectName(bi))
   1.555  		);	
   1.556 -		bi->getBranchObj()->setVymLink ("" );	//FIXME-3 check getBO
   1.557 +		bi->setVymLink ("" );
   1.558  		updateActions();
   1.559  		reposition();
   1.560 -		// FIXME-3 VM needed? scene()->update();
   1.561  	}
   1.562  }
   1.563  
   1.564 @@ -2725,7 +2677,7 @@
   1.565  {
   1.566  	BranchItem *bi=getSelectedBranchItem();
   1.567  	if (bi)
   1.568 -		return bi->getBranchObj()->getVymLink();	//FIXME-3 check getBO here...
   1.569 +		return bi->getVymLink();
   1.570  	else	
   1.571  		return "";
   1.572  	
   1.573 @@ -2907,7 +2859,7 @@
   1.574  			}
   1.575  		}
   1.576  	/////////////////////////////////////////////////////////////////////
   1.577 -	} else /*if (com=="clearFlags")	// FIXME-2
   1.578 +	} else if (com=="clearFlags")	
   1.579  	{
   1.580  		if (!selti )
   1.581  		{
   1.582 @@ -2917,11 +2869,10 @@
   1.583  			parser.setError (Aborted,"Type of selection is not a branch");
   1.584  		} else if (parser.checkParCount(0))
   1.585  		{
   1.586 -			selb->clearStandardFlags();	
   1.587 -			selb->updateFlagsToolbar();
   1.588 +			selbi->deactivateAllStandardFlags();	
   1.589  		}
   1.590  	/////////////////////////////////////////////////////////////////////
   1.591 -	} else */ if (com=="colorBranch")
   1.592 +	} else if (com=="colorBranch")
   1.593  	{
   1.594  		if (!selti)
   1.595  		{
   1.596 @@ -3172,7 +3123,7 @@
   1.597  			if (ok) loadFloatImageInt (s);
   1.598  		}	
   1.599  	/////////////////////////////////////////////////////////////////////
   1.600 -	} else if (com=="moveBranchUp")
   1.601 +	} else if (com=="moveUp")
   1.602  	{
   1.603  		if (!selti )
   1.604  		{
   1.605 @@ -3182,10 +3133,10 @@
   1.606  			parser.setError (Aborted,"Type of selection is not a branch");
   1.607  		} else if (parser.checkParCount(0))
   1.608  		{
   1.609 -			moveBranchUp();
   1.610 +			moveUp();
   1.611  		}	
   1.612  	/////////////////////////////////////////////////////////////////////
   1.613 -	} else if (com=="moveBranchDown")
   1.614 +	} else if (com=="moveDown")
   1.615  	{
   1.616  		if (!selti )
   1.617  		{
   1.618 @@ -3195,7 +3146,7 @@
   1.619  			parser.setError (Aborted,"Type of selection is not a branch");
   1.620  		} else if (parser.checkParCount(0))
   1.621  		{
   1.622 -			moveBranchDown();
   1.623 +			moveDown();
   1.624  		}	
   1.625  	/////////////////////////////////////////////////////////////////////
   1.626  	} else if (com=="move")
   1.627 @@ -3624,7 +3575,7 @@
   1.628  		}	
   1.629  	}
   1.630  	/////////////////////////////////////////////////////////////////////
   1.631 -	else /* FIXME-2 if (com=="setFlag")
   1.632 +	else if (com=="setFlag")
   1.633  	{
   1.634  		if (!selti )
   1.635  		{
   1.636 @@ -3636,13 +3587,10 @@
   1.637  		{
   1.638  			s=parser.parString(ok,0);
   1.639  			if (ok) 
   1.640 -			{
   1.641 -				selb->activateStandardFlag(s);
   1.642 -				selb->updateFlagsToolbar();
   1.643 -			}	
   1.644 +				selbi->activateStandardFlag(s);
   1.645  		}
   1.646  	/////////////////////////////////////////////////////////////////////
   1.647 -	} else */ /* FIXME-2 if (com=="setFrameType")
   1.648 +	} else /* FIXME-2 if (com=="setFrameType")
   1.649  	{
   1.650  		if (!selti )
   1.651  		{
   1.652 @@ -3670,7 +3618,7 @@
   1.653  			sortChildren();
   1.654  		}
   1.655  	/////////////////////////////////////////////////////////////////////
   1.656 -	} else /* FIXME-2 if (com=="toggleFlag")
   1.657 +	} else if (com=="toggleFlag")
   1.658  	{
   1.659  		if (!selti )
   1.660  		{
   1.661 @@ -3682,13 +3630,10 @@
   1.662  		{
   1.663  			s=parser.parString(ok,0);
   1.664  			if (ok) 
   1.665 -			{
   1.666  				selbi->toggleStandardFlag(s);	
   1.667 -				selb->updateFlagsToolbar();
   1.668 -			}	
   1.669  		}
   1.670  	/////////////////////////////////////////////////////////////////////
   1.671 -	} else */ if (com=="unscroll")
   1.672 +	} else  if (com=="unscroll")
   1.673  	{
   1.674  		if (!selti)
   1.675  		{
   1.676 @@ -3715,9 +3660,9 @@
   1.677  			unscrollChildren ();
   1.678  		}	
   1.679  	/////////////////////////////////////////////////////////////////////
   1.680 -	} else /* FIXME-2 if (com=="unsetFlag")
   1.681 +	} else if (com=="unsetFlag")
   1.682  	{
   1.683 -		if (selection.isEmpty() )
   1.684 +		if (!selti)
   1.685  		{
   1.686  			parser.setError (Aborted,"Nothing selected");
   1.687  		} else if (! selbi )
   1.688 @@ -3727,12 +3672,9 @@
   1.689  		{
   1.690  			s=parser.parString(ok,0);
   1.691  			if (ok) 
   1.692 -			{
   1.693 -				selb->deactivateStandardFlag(s);
   1.694 -				selb->updateFlagsToolbar();
   1.695 -			}	
   1.696 +				selbi->deactivateStandardFlag(s);
   1.697  		}
   1.698 -	} else */
   1.699 +	} else 
   1.700  		parser.setError (Aborted,"Unknown command");
   1.701  
   1.702  	// Any errors?
   1.703 @@ -3946,18 +3888,20 @@
   1.704  void VymModel::updateNoteFlag()
   1.705  {
   1.706  	setChanged();
   1.707 -	cout << "VM::updateNoteFlag()\n";
   1.708 -	/* FIXME-1 modify note flag
   1.709 -	BranchObj *bo=getSelectedBranch();
   1.710 -	if (bo) 
   1.711 +	TreeItem *selti=getSelectedItem();
   1.712 +	if (selti)
   1.713  	{
   1.714 -		bo->updateNoteFlag();
   1.715 -		mainWindow->updateActions();
   1.716 -	}	
   1.717 -	*/
   1.718 +		if (textEditor->isEmpty()) 
   1.719 +			selti->clearNote();
   1.720 +		else
   1.721 +			selti->setNote (textEditor->getText());
   1.722 +		emitDataHasChanged(selti);		
   1.723 +		updateSelection();
   1.724 +
   1.725 +	}
   1.726  }
   1.727  
   1.728 -void VymModel::updateRelPositions()		//FIXME-2 VM should have no need to updateRelPos
   1.729 +void VymModel::updateRelPositions()		//FIXME-3 VM should have no need to updateRelPos
   1.730  {
   1.731  	//cout << "VM::updateRelPos...\n";
   1.732  	for (int i=0; i<rootItem->branchCount(); i++)
   1.733 @@ -4694,7 +4638,7 @@
   1.734  void VymModel::emitDataHasChanged (TreeItem *ti)
   1.735  {
   1.736  	QModelIndex ix=index(ti);
   1.737 -	emit (dataHasChanged (ix) );
   1.738 +	emit (dataChanged (ix,ix) );
   1.739  }
   1.740  
   1.741