# HG changeset patch
# User insilmaril
# Date 1242203187 0
# Node ID 6d2b32f305f94bb2017992b3771a36eaf9152394
# Parent 7a71a914afdbd6d7e8308cf177ab4ea56a829136
Started to use QtKinetic for Animation
diff -r 7a71a914afdb -r 6d2b32f305f9 aboutdialog.cpp
--- a/aboutdialog.cpp Thu May 07 08:48:53 2009 +0000
+++ b/aboutdialog.cpp Wed May 13 08:26:27 2009 +0000
@@ -91,7 +91,7 @@
license->setText (
"
"
"VYM - View Your Mind
"
- "Copyright (C) 2004-2007 Uwe Drechsel
"
+ "Copyright (C) 2004-2009 Uwe Drechsel
"
""
"This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
"
diff -r 7a71a914afdb -r 6d2b32f305f9 animpoint.cpp
--- a/animpoint.cpp Thu May 07 08:48:53 2009 +0000
+++ b/animpoint.cpp Wed May 13 08:26:27 2009 +0000
@@ -115,7 +115,7 @@
return animated;
}
- // Some math slow down the movement
+ // Some math to slow down the movement in the end
qreal f=1-n/animTicks;
qreal ff=1-f*f*f;
setX (startPos.x() + vector.x()*ff );
diff -r 7a71a914afdb -r 6d2b32f305f9 attribute.h
--- a/attribute.h Thu May 07 08:48:53 2009 +0000
+++ b/attribute.h Wed May 13 08:26:27 2009 +0000
@@ -6,8 +6,8 @@
#include "xmlobj.h"
-class AttributeTable;
-class AttributeDef;
+class AttributeTable; //FIXME-3 remove from CVS
+class AttributeDef; //FIXME-3 remove from CVS
enum AttributeType {
Undefined, //!< Undefined type
diff -r 7a71a914afdb -r 6d2b32f305f9 branchitem.cpp
--- a/branchitem.cpp Thu May 07 08:48:53 2009 +0000
+++ b/branchitem.cpp Wed May 13 08:26:27 2009 +0000
@@ -202,38 +202,38 @@
if (scrolled) toggleScroll();
}
-void BranchItem::toggleScroll()
+bool BranchItem::toggleScroll()
{
- BranchItem *bi=getFirstBranch();
+ if (!branchCount()>0) return false;
BranchObj *bo=NULL;
if (scrolled)
{
scrolled=false;
- //FIXME-1 systemFlags->deactivate("scrolledright");
- while (bi)
+ systemFlags.deactivate("system-scrolledright");
+ if (branchCounter>0)
{
- bo=(BranchObj*)(bi->getLMO());
- if (bo) bo->setVisibility(true);
- bi=getNextBranch(bi);
+ for (int i=0;igetLMO());
+ if (bo) bo->setVisibility(true);
+ }
}
+ model->reposition();
} else
{
scrolled=true;
- //FIXME-1 systemFlags->activate("scrolledright");
- while (bi)
+ systemFlags.activate("system-scrolledright");
+ if (branchCounter>0)
{
- bo=(BranchObj*)(bi->getLMO());
- if (bo) bo->setVisibility(false);
- bi=getNextBranch(bi);
+ for (int i=0;igetLMO());
+ if (bo) bo->setVisibility(false);
+ }
}
}
- if (bo)
- {
- bo->calcBBoxSize();
- bo->positionBBox();
- bo->forceReposition();
- }
+ return true;
}
bool BranchItem::isScrolled()
@@ -357,7 +357,7 @@
if (!getHeading().isEmpty() )
{
- newbo->updateHeading();
+ newbo->updateData(); //FIXME-3 maybe better model->emitDataHasChanged()?
newbo->setColor (headingColor);
}
diff -r 7a71a914afdb -r 6d2b32f305f9 branchitem.h
--- a/branchitem.h Thu May 07 08:48:53 2009 +0000
+++ b/branchitem.h Wed May 13 08:26:27 2009 +0000
@@ -34,7 +34,7 @@
bool tmpUnscrolled; // can only be true (temporary) for a scrolled subtree
public:
virtual void unScroll();
- virtual void toggleScroll(); // scroll or unscroll
+ virtual bool toggleScroll(); // scroll or unscroll
virtual bool isScrolled(); // returns scroll state
virtual bool hasScrolledParent(BranchItem*); // true, if any of the parents is scrolled
virtual void tmpUnscroll(); // unscroll scrolled parents temporary e.g. during "find" process
diff -r 7a71a914afdb -r 6d2b32f305f9 branchobj.cpp
--- a/branchobj.cpp Thu May 07 08:48:53 2009 +0000
+++ b/branchobj.cpp Wed May 13 08:26:27 2009 +0000
@@ -6,12 +6,8 @@
#include "mainwindow.h"
#include "misc.h"
-//class TextEditor; //FIXME-3
-
-//extern TextEditor *textEditor;
-//extern Main *mainWindow;
-//extern FlagRowObj *standardFlagsDefault;
-
+extern FlagRow *standardFlagsMaster;
+extern FlagRow *systemFlagsMaster;
/////////////////////////////////////////////////////////////////
// BranchObj
@@ -325,12 +321,12 @@
QSizeF heading_r=heading->getSize();
qreal heading_w=(qreal) heading_r.width() ;
qreal heading_h=(qreal) heading_r.height() ;
- QSizeF sysflags_r; //FIXME-1 =systemFlags->getSize();
- qreal sysflags_h=0;//sysflags_r.height();
- qreal sysflags_w=0;//sysflags_r.width();
- QSizeF stanflags_r; //FIXME-1 =standardFlags->getSize();
- qreal stanflags_h=0; //stanflags_r.height();
- qreal stanflags_w=0; //stanflags_r.width();
+ QSizeF sysflags_r=systemFlags->getSize();
+ qreal sysflags_h=sysflags_r.height();
+ qreal sysflags_w=sysflags_r.width();
+ QSizeF stanflags_r=standardFlags->getSize();
+ qreal stanflags_h=stanflags_r.height();
+ qreal stanflags_w=stanflags_r.width();
qreal w;
qreal h;
@@ -416,105 +412,67 @@
}
}
-void BranchObj::updateHeading()
+void BranchObj::updateData()
{
+ bool changed=false;
if (!treeItem)
{
qWarning ("BranchObj::udpateHeading treeItem==NULL");
return;
}
- heading->setText (treeItem->getHeading() );
- updateContentSize();
+ QString s=treeItem->getHeading();
+ if (s!=heading->text())
+ {
+ heading->setText (s);
+ changed=true;
+ }
+ QStringList TIactiveFlags=treeItem->activeStandardFlagNames();
+
+ // Add missing standard flags active in TreeItem
+ for (int i=0;i<=TIactiveFlags.size()-1;i++)
+ {
+ if (!standardFlags->isActive (TIactiveFlags.at(i) ))
+ {
+ Flag *f=standardFlagsMaster->getFlag(TIactiveFlags.at(i));
+ if (f) standardFlags->activate (f);
+ changed=true;
+ }
+ }
+ // Remove standard flags no longer active in TreeItem
+ QStringList BOactiveFlags=standardFlags->activeFlagNames();
+ for (int i=0;ideactivate (BOactiveFlags.at(i));
+ changed=true;
+ }
+
+ // Add missing system flags active in TreeItem
+ TIactiveFlags=treeItem->activeSystemFlagNames();
+ for (int i=0;iisActive (TIactiveFlags.at(i) ))
+ {
+ Flag *f=systemFlagsMaster->getFlag(TIactiveFlags.at(i));
+ if (f) systemFlags->activate (f);
+ changed=true;
+ }
+ }
+ // Remove system flags no longer active in TreeItem
+ BOactiveFlags=systemFlags->activeFlagNames();
+ for (int i=0;ideactivate (BOactiveFlags.at(i));
+ changed=true;
+ }
+ }
+
+ if (changed)
+ updateContentSize();
}
-QString BranchObj::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
-{
- // Cloudy stuff can be hidden during exports
- // FIXME-1 if (hidden) return "";
-
- // Update of note is usually done while unselecting a branch
- // if (isNoteInEditor) getNoteFromTextEditor(); //FIXME-2 moved to TreeItem
-
- QString s,a;
- /*
- QString scrolledAttr;
- if ( ((BranchItem*)treeItem)->isScrolled() )
- scrolledAttr=attribut ("scrolled","yes");
- else
- scrolledAttr="";
-
- // save area, if not scrolled
- QString areaAttr;
- if (!((BranchItem*) (treeItem->parent()) )->isScrolled() )
- {
- areaAttr=
- attribut("x1",QString().setNum(absPos.x()-offset.x())) +
- attribut("y1",QString().setNum(absPos.y()-offset.y())) +
- attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) +
- attribut("y2",QString().setNum(absPos.y()+height()-offset.y()));
-
- } else
- areaAttr="";
-
- // Providing an ID for a branch makes export to XHTML easier
- QString idAttr;
- if (treeItem->xlinkCount()>0)
- idAttr=attribut ("id",model->getSelectString(this)); //TODO directly access model
- else
- idAttr="";
-
- s=beginElement ("branch"
- +getOrnXMLAttr()
- +scrolledAttr
- +areaAttr
- +idAttr
- +getIncludeImageAttr() );
- incIndent();
-
- // save heading
- s+=valueElement("heading", treeItem->getHeading(),
- attribut ("textColor",QColor(heading->getColor()).name()));
-
- // Save frame
- if (frame->getFrameType()!=FrameObj::NoFrame)
- s+=frame->saveToDir ();
-
- // save names of flags set
- s+=standardFlags->saveToDir(tmpdir,prefix,0);
-
- // Save FloatImages
- for (int i=0; isaveToDir (tmpdir,prefix);
-
- // save note
- if (!treeItem->getNoteObj().isEmpty() )
- s+=treeItem->getNoteObj().saveToDir();
-
- // Save branches
- for (int i=0; ibranchCount(); ++i)
- s+=treeItem->getBranchObjNum(i)->saveToDir(tmpdir,prefix,offset);
-
- // Save XLinks
- QString ol; // old link
- QString cl; // current link
- for (int i=0; isaveToDir();
- if (cl!=ol)
- {
- s+=cl;
- ol=cl;
- } else
- {
- qWarning (QString("Ignoring of duplicate xLink in %1").arg(treeItem->getHeading()));
- }
- }
-
- decIndent();
- s+=endElement ("branch");
- return s;
-*/
-}
void BranchObj::addXLink (XLinkObj *xlo)
{
@@ -732,66 +690,6 @@
*/
}
-bool BranchObj::canMoveBranchUp() // FIXME-1 move to BranchItem
-{
-/*
- if (!parObj || depth==1) return false;
- BranchObj* par=(BranchObj*)parObj;
- if (this==par->getTreeItem()->getFirstBranch())
- return false;
- else
- return true;
- */
-return false;
-}
-
-BranchObj* BranchObj::moveBranchUp(BranchObj* bo1) // FIXME-1
-{
-/*
- savePosInAngle();
- int i=branch.indexOf(bo1);
- if (i>0)
- { // -1 if bo1 not found
- treeItem->getBranchObjNum(i)->angle--;
- treeItem->getBranchObjNum(i-1)->angle++;
- qSort (branch.begin(),branch.end(), isAbove);
- return treeItem->getBranchObjNum(i);
- } else
-*/
- return NULL;
-}
-
-bool BranchObj::canMoveBranchDown() //FIXME-1 move to BranchItem
-{
- /*
- if (!parObj|| depth==1) return false;
- BranchObj* par=(BranchObj*)parObj;
- if (this==par->getTreeItem()->getLastBranch())
- return false;
- else
- return true;
- */
-return false;
-}
-
-BranchObj* BranchObj::moveBranchDown(BranchObj* bo1)// FIXME-1
-{
-/*
- savePosInAngle();
- int i=branch.indexOf(bo1);
- int j;
- if (i branchCount())
- {
- j = i+1;
- treeItem->getBranchObjNum(i)->angle++;
- treeItem->getBranchObjNum(j)->angle--;
- qSort (branch.begin(),branch.end(), isAbove);
- return treeItem->getBranchObjNum(i);
- } else
-*/
- return NULL;
-}
-
void BranchObj::sortChildren() //FIXME-2
{
/*
@@ -1070,65 +968,6 @@
bboxTotal.setHeight(max (r.height(), bbox.height()));
}
-/*
-void BranchObj::select() // FIXME-4 try to get rid of this in BO completely
-{
- cout << "BO::select()\n";
- textEditor->setText(treeItem->getNoteObj().getNote() );
- QString fnh=treeItem->getNoteObj().getFilenameHint();
- if (fnh!="")
- textEditor->setFilenameHint(treeItem->getNoteObj().getFilenameHint() );
- else
- textEditor->setFilenameHint(getHeading() );
- textEditor->setFontHint (treeItem->getNoteObj().getFontHint() );
- //isNoteInEditor=true;
-
- // set selected and visible
- LinkableMapObj::select();
-
- //if (po) po->setLastSelectedBranch(this); needed?
-
- // temporary unscroll, if we have scrolled parents somewhere
- if (parObj) ((BranchObj*)(parObj))->tmpUnscroll();
-
- //moved to vymmodel or vymview...
- // Show URL and link in statusbar
- QString status;
- if (!url.isEmpty()) status+="URL: "+url+" ";
- if (!vymLink.isEmpty()) status+="Link: "+vymLink;
- if (!status.isEmpty()) mainWindow->statusMessage (status);
-
- // Update Toolbar
- updateFlagsToolbar();
-
- // Update actions
- model->updateActions();
-}
- */
-
-/*
-void BranchObj::unselect() //FIXME-4 should not be needed
-{
- cout << "BO::unselect()\n";
- LinkableMapObj::unselect();
- // Delete any messages like vymLink in StatusBar
- mainWindow->statusMessage (""); //this causes segfault, when MainWindow is already gone in global destructor on quitting vym
-
- // Save current note
- if (isNoteInEditor) getNoteFromTextEditor();
- isNoteInEditor=false;
-
- // reset temporary unscroll, if we have scrolled parents somewhere
- if (parObj) ((BranchObj*)(parObj))->resetTmpUnscroll();
-
- // Erase content of editor
- textEditor->setInactive();
-
- // unselect all buttons in toolbar
- standardFlagsDefault->updateToolbar();
-}
-*/
-
QString BranchObj::getSelectString()
{
return model->getSelectString (this);
diff -r 7a71a914afdb -r 6d2b32f305f9 branchobj.h
--- a/branchobj.h Thu May 07 08:48:53 2009 +0000
+++ b/branchobj.h Wed May 13 08:26:27 2009 +0000
@@ -46,9 +46,7 @@
virtual void calcBBoxSize();
virtual void setDockPos();
- virtual void updateHeading ();
-
- virtual QString saveToDir (const QString&,const QString&, const QPointF&);// Save data recursivly to tempdir
+ virtual void updateData(); //! Update represantatio of heading, flags, etc.
virtual void addXLink (XLinkObj*);
virtual void removeXLinkRef (XLinkObj*);// Remove ref in list
@@ -79,11 +77,6 @@
virtual void removeBranch(BranchObj*);
virtual void removeBranchPtr (BranchObj*);
- virtual bool canMoveBranchUp();
- virtual BranchObj* moveBranchUp(BranchObj*);
- virtual bool canMoveBranchDown();
- virtual BranchObj* moveBranchDown(BranchObj*);
-
virtual void sortChildren();
virtual void alignRelativeTo(const QPointF, bool alignSelf=false );
virtual void reposition();
@@ -107,8 +100,6 @@
public:
float angle; // used in mainbranch to reorder mainbranches
protected:
-// bool scrolled; // true if all children are scrolled and thus invisible
-// bool tmpUnscrolled; // can only be true (temporary) for a scrolled subtree
bool includeImagesVer; // include floatimages in bbox vertically
bool includeImagesHor; // include floatimages in bbox horizontally
};
diff -r 7a71a914afdb -r 6d2b32f305f9 branchpropwindow.cpp
--- a/branchpropwindow.cpp Thu May 07 08:48:53 2009 +0000
+++ b/branchpropwindow.cpp Wed May 13 08:26:27 2009 +0000
@@ -27,13 +27,14 @@
ui.framePenColorButton->setPixmap (pix);
ui.frameBrushColorButton->setPixmap (pix);
- // Create Model and View to hold attributes
+ // Create Model and View to hold attributes
+ /*
attributeModel = new QStandardItemModel (1,3,this);
attributeModel->setHeaderData(0, Qt::Horizontal, tr("Name","Branchprop window: Attribute name"));
attributeModel->setHeaderData(1, Qt::Horizontal, tr("Value","Branchprop window: Attribute value"));
attributeModel->setHeaderData(2, Qt::Horizontal, tr("Type","Branchprop window: Attribute type"));
ui.attributeTableView->setModel (attributeModel);
-
+ */
// Load Settings
resize (settings.value ( "/satellite/propertywindow/geometry/size", QSize(450,600)).toSize());
@@ -56,7 +57,7 @@
settings.setValue( "/satellite/propertywindow/showWithMain",isVisible() );
}
-void BranchPropertyWindow::setBranch (BranchObj *bo)
+void BranchPropertyWindow::setBranch (BranchObj *bo) //FIXME-2 maybe do this via signals emitted anyway from model?
{
disconnectSignals();
branch=bo;
@@ -122,10 +123,10 @@
else
ui.incImgHor->setCheckState (Qt::Unchecked);
+/*
// Attributes
attributeModel->removeRows(0, attributeModel->rowCount(), QModelIndex());
-/*
// FIXME-3 some samples for attribute testing
QStringList attrTypes=mapEditor->attributeTable()->getTypes();
for (int i=0; i
-#include "attributedelegate.h"
+//#include "attributedelegate.h"
#include "branchobj.h"
#include "vymmodel.h"
@@ -32,8 +32,8 @@
void linkHideUnselectedChanged (int);
void incImgVerChanged (int);
void incImgHorChanged (int);
- void addAttributeClicked();
- void deleteAttributeClicked();
+// void addAttributeClicked();
+// void deleteAttributeClicked();
signals:
void windowClosed();
@@ -53,9 +53,9 @@
QColor penColor;
QColor brushColor;
- QAbstractItemModel *attributeModel;
+// QAbstractItemModel *attributeModel;
- AttributeDelegate delegate;
+// AttributeDelegate delegate;
};
#endif //
diff -r 7a71a914afdb -r 6d2b32f305f9 flagobj.cpp
--- a/flagobj.cpp Thu May 07 08:48:53 2009 +0000
+++ b/flagobj.cpp Wed May 13 08:26:27 2009 +0000
@@ -20,6 +20,13 @@
copy (io);
}
+FlagObj::FlagObj (Flag* f)
+{
+ init();
+ name=f->getName();
+ icon->load(f->getPixmap());
+}
+
FlagObj::~FlagObj()
{
// cout << "Destr FlagObj this="<setPos (absPos.x(), absPos.y() );
state=false;
- used=false;
avis=true;
- action=NULL;
}
void FlagObj::copy (FlagObj* other)
{
MapObj::copy(other);
name=other->name;
- group=other->group;
- tooltip=other->tooltip;
state=other->state;
avis=other->avis;
- used=other->used;
icon->copy(other->icon);
- action=other->action;
setVisibility (other->isVisibleObj() );
}
@@ -99,51 +99,6 @@
return name;
}
-void FlagObj::setGroup (const QString &n)
-{
- group=n;
-}
-
-const QString FlagObj::getGroup()
-{
- return group;
-}
-
-void FlagObj::unsetGroup()
-{
- group="undefined";
-}
-
-void FlagObj::setToolTip(const QString &n)
-{
- tooltip=n;
-}
-
-const QString FlagObj::getToolTip()
-{
- return tooltip;
-}
-
-QPixmap FlagObj::getPixmap()
-{
- return icon->pixmap();
-}
-
-void FlagObj::setAction (QAction* a)
-{
- action=a;
-}
-
-void FlagObj::updateAction ()
-{
- if (action)
- {
- action->setChecked(state);
- if (!avis)
- action->setVisible(state);
- }
-}
-
void FlagObj::setAlwaysVisible(bool b)
{
avis=b;
@@ -189,16 +144,6 @@
}
}
-void FlagObj::setUsed (bool b)
-{
- used=b;
-}
-
-bool FlagObj::isUsed()
-{
- return used;
-}
-
void FlagObj::saveToDir (const QString &tmpdir, const QString &prefix)
{
QString fn=tmpdir + prefix + name + ".png";
diff -r 7a71a914afdb -r 6d2b32f305f9 flagobj.h
--- a/flagobj.h Thu May 07 08:48:53 2009 +0000
+++ b/flagobj.h Wed May 13 08:26:27 2009 +0000
@@ -5,6 +5,7 @@
#include
#include
+#include "flag.h"
#include "mapobj.h"
#include "imageobj.h"
@@ -20,6 +21,7 @@
FlagObj ();
FlagObj (QGraphicsScene*);
FlagObj (FlagObj*);
+ FlagObj (Flag*);
~FlagObj ();
virtual void init ();
virtual void copy (FlagObj*);
@@ -30,36 +32,24 @@
void load (const QPixmap&);
void setName (const QString&);
const QString getName ();
- void setGroup (const QString&);
- const QString getGroup();
- void unsetGroup ();
- void setToolTip(const QString&);
- const QString getToolTip();
QPixmap getPixmap();
void setAction(QAction*);
- void updateAction ();
void setAlwaysVisible (bool b);
bool isAlwaysVisible ();
bool isActive();
void toggle();
void activate();
void deactivate();
- void setUsed (bool);
- bool isUsed();
void saveToDir (const QString&, const QString&);
protected:
QString name;
- QString group;
- QString tooltip;
bool state;
bool avis;
- bool used;
virtual void positionBBox();
virtual void calcBBoxSize();
private:
ImageObj* icon;
- QAction* action;
};
#endif
diff -r 7a71a914afdb -r 6d2b32f305f9 flagrowobj.cpp
--- a/flagrowobj.cpp Thu May 07 08:48:53 2009 +0000
+++ b/flagrowobj.cpp Wed May 13 08:26:27 2009 +0000
@@ -3,6 +3,7 @@
#include
using namespace std;
+#include "flag.h"
#include "flagrowobj.h"
#include "geometry.h"
@@ -31,30 +32,17 @@
void FlagRowObj::init ()
{
- parentRow=NULL;
showFlags=true;
}
void FlagRowObj::copy (FlagRowObj* other)
{
MapObj::copy(other);
- parentRow=other->parentRow;
flag.clear();
for (int i=0; igetName());
+ return list;
+}
+
void FlagRowObj::positionBBox()
{
bbox.moveTopLeft(absPos );
@@ -124,84 +120,28 @@
bool FlagRowObj::isActive (const QString &foname)
{
+
FlagObj *fo=findFlag (foname);
- if (parentRow && fo)
- return fo->isActive();
+ if (fo)
+ return true;
else
- if (fo) return true;
- return false;
+ return false;
}
-void FlagRowObj::toggle (const QString &foname)
+void FlagRowObj::activate (Flag *flag)
{
- FlagObj *fo=findFlag (foname);
- if (fo)
+ if (flag)
{
- // FlagObj is here, it will be active, too.
- // Deactivate it by removing it from this row.
- flag.remove (fo);
- delete (fo);
- } else
- {
- // FlagObj is not present in this row.
- // Copy it from parentRow
- fo=parentRow->findFlag (foname);
- if (fo)
- {
- fo=addFlag (fo);
- fo->activate();
- /*FIXME-0 move to VM if (exclusive)
- {
- deactivateGroup (fo);
- updateToolbar();
- }
- */
- } else
- qWarning ("FlagRowObj ("+name+")::toggle ("+foname+") failed - could not find it in parentRow");
- }
- calcBBoxSize();
- positionBBox();
-}
-
-void FlagRowObj::activate (const QString &foname)
-{
- cout << "FRO::activate "<findFlag (foname);
- if (fo)
- {
- fo=addFlag (fo);
- fo->activate();
- if (showFlags)
- fo->setVisibility (visible);
- else
- fo->setVisibility (false);
- calcBBoxSize();
- } else
- qWarning ("FlagRowObj ("+name+")::activate ("+foname+") failed - could not find it in parentRow");
- }
- } else
- {
- // I am the parentRow, mark flag as used
- if (fo)
- {
- fo->setUsed(true);
- fo->activate();
- }
+ FlagObj *fo=addFlag (new FlagObj (flag));
+ fo->activate();
+ if (showFlags) // FIXME-3 necessary? only called from FIO::init
+ fo->setVisibility (visible);
else
- qWarning ("FlagRowObj::activate no FlagObj \""+foname+"\" found in parentRow");
+ fo->setVisibility (false);
+ calcBBoxSize();
}
}
-
void FlagRowObj::deactivate (const QString &foname)
{
FlagObj *fo=findFlag (foname);
@@ -214,116 +154,11 @@
positionBBox();
}
-void FlagRowObj::deactivateAll ()
-{
- if (!parentRow)
- {
- for (int i=0; iisActive()) flag.at(i)->deactivate();
- } else
- {
- while (!flag.isEmpty())
- delete flag.takeFirst();
- calcBBoxSize();
- positionBBox();
- }
-}
-
-void FlagRowObj::deactivateGroup (FlagObj *keepfo) //FIXME-0 move to VM
-{
- // deactivate all flags in keepof, but keep keepfo [sic!]
- if (keepfo)
- {
- QString g=keepfo->getGroup();
- if (g!="undefined")
- {
- for (int i=0; igetGroup() && keepfo!=flag.at(i))
- {
- FlagObj *fo=flag.at(i);
- flag.remove (fo);
- delete (fo);
- }
- }
- }
-}
-
-void FlagRowObj::setToolBar(QToolBar *tb)
-{
- toolbar=tb;
-}
-
-void FlagRowObj::setEnabled (bool b)
-{
- if (toolbar)
- {
- toolbar->setEnabled (b);
- }
-}
-
void FlagRowObj::setShowFlags (bool b)
{
showFlags=b;
}
-void FlagRowObj::resetUsedCounter()
-{
- for (int i=0; isetUsed (false);
-}
-
-QString FlagRowObj::saveToDir (const QString &tmpdir,const QString &prefix, bool writeflags)
-{
- // Build xml string
- QString s;
- if (parentRow)
- for (int i=0; igetName() );
-
- // and tell parentRow, that this flag is used
- parentRow->activate(flag.at(i)->getName() );
- }
- else
- // Save icons to dir, if verbose is set (xml export)
- // and I am a parentRow
- // and this flag is really used somewhere
- if (writeflags)
- for (int i=0; iisUsed()) flag.at(i)->saveToDir (tmpdir,prefix);
- return s;
-
-}
-
-void FlagRowObj::setName (const QString &n)
-{
- name=n;
-}
-
-void FlagRowObj::updateToolbar() //FIXME-2 this needs to be changed with VM
-{
- if (parentRow)
- {
- // We are just a branch, not the toolbar default
- // but state has to be copied from ourselves to parentrow!
- parentRow->deactivateAll();
- // In parentRow activate all existing (==active) flags
- for (int i=0; iactivate(flag.at(i)->getName());
- parentRow->updateToolbar();
- } else
- {
- // We are the toolbar default
- if (toolbar)
- {
- // Update state of actions in toolbar
- for (int i=0; iupdateAction();
- }
- }
-}
-
FlagObj* FlagRowObj::findFlag (const QString &name)
{
for (int i=0; i flag;
- QToolBar *toolbar;
- QString name;
bool showFlags; // FloatObjects want to hide their flags
};
#endif
diff -r 7a71a914afdb -r 6d2b32f305f9 main.cpp
--- a/main.cpp Thu May 07 08:48:53 2009 +0000
+++ b/main.cpp Wed May 13 08:26:27 2009 +0000
@@ -3,6 +3,7 @@
#include
using namespace std;
+#include "flagrow.h"
#include "flagrowobj.h"
#include "mainwindow.h"
#include "options.h"
@@ -36,9 +37,8 @@
QString flagsPath; // Pointing to flags
bool clipboardEmpty;
bool debug; // global debugging flag
-FlagRowObj *systemFlagsDefault; // used to copy from in LinkableMapObj
-FlagRowObj *standardFlagsDefault;
-
+FlagRow *systemFlagsMaster;
+FlagRow *standardFlagsMaster;
Settings settings ("InSilmaril","vym"); // Organization, Application name
@@ -158,11 +158,12 @@
translator.load( QString("vym_")+QTextCodec::locale(), vymBaseDir.path() + "/lang");
app.installTranslator( &translator );
- // Initializing the row of system flags
- // is done in first call to MapEditor(),
- // because we need at least one canvas first
- systemFlagsDefault=NULL;
- standardFlagsDefault=NULL;
+ // Initializing the master rows of flags
+ systemFlagsMaster=new FlagRow;
+ systemFlagsMaster->setName ("systemFlagsMaster");
+ standardFlagsMaster=new FlagRow;
+ standardFlagsMaster->setName ("standardFlagsMaster");
+
// Initialize window of TextEditor
textEditor = new TextEditor();
diff -r 7a71a914afdb -r 6d2b32f305f9 mainwindow.cpp
--- a/mainwindow.cpp Thu May 07 08:48:53 2009 +0000
+++ b/mainwindow.cpp Wed May 13 08:26:27 2009 +0000
@@ -12,7 +12,7 @@
#include "exportoofiledialog.h"
#include "exports.h"
#include "file.h"
-#include "flagrowobj.h"
+#include "flagrow.h"
#include "historywindow.h"
#include "imports.h"
#include "mapeditor.h"
@@ -43,8 +43,8 @@
extern QString clipboardFile;
extern bool clipboardEmpty;
extern int statusbarTime;
-extern FlagRowObj* standardFlagsDefault;
-extern FlagRowObj* systemFlagsDefault;
+extern FlagRow *standardFlagsMaster;
+extern FlagRow *systemFlagsMaster;
extern QString vymName;
extern QString vymVersion;
extern QString vymBuildDate;
@@ -1187,229 +1187,217 @@
{
// Create System Flags
QToolBar *tb=NULL;
- bool avis=true;
-
- systemFlagsDefault = new FlagRowObj ();
- systemFlagsDefault->setVisibility (false);
- systemFlagsDefault->setName ("systemFlagsDef");
-
- FlagObj *fo = new FlagObj ();
- fo->load(QPixmap(flagsPath+"flag-note.png"));
- setupFlag (fo,tb,avis,"note",tr("Note","SystemFlag"));
-
- fo->load(QPixmap(flagsPath+"flag-url.png"));
- setupFlag (fo,tb,avis,"url",tr("URL to Document ","SystemFlag"));
+
+ Flag *flag=new Flag;;
+
+ flag->load(QPixmap(flagsPath+"flag-note.png"));
+ setupFlag (flag,tb,"system-note",tr("Note","SystemFlag"));
+
+ flag->load(QPixmap(flagsPath+"flag-url.png"));
+ setupFlag (flag,tb,"system-url",tr("URL to Document ","SystemFlag"));
- fo->load(QPixmap(flagsPath+"flag-vymlink.png"));
- setupFlag (fo,tb,avis,"vymLink",tr("Link to another vym map","SystemFlag"));
-
- fo->load(QPixmap(flagsPath+"flag-scrolled-right.png"));
- setupFlag (fo,tb,avis,"scrolledright",tr("subtree is scrolled","SystemFlag"));
+ flag->load(QPixmap(flagsPath+"flag-vymlink.png"));
+ setupFlag (flag,tb,"system-vymLink",tr("Link to another vym map","SystemFlag"));
+
+ flag->load(QPixmap(flagsPath+"flag-scrolled-right.png"));
+ setupFlag (flag,tb,"system-scrolledright",tr("subtree is scrolled","SystemFlag"));
- fo->load(QPixmap(flagsPath+"flag-tmpUnscrolled-right.png"));
- setupFlag (fo,tb,avis,"tmpUnscrolledright",tr("subtree is temporary scrolled","SystemFlag"));
-
- fo->load(QPixmap(flagsPath+"flag-hideexport.png"));
- setupFlag (fo,tb,avis,"hideInExport",tr("Hide object in exported maps","SystemFlag"));
+ flag->load(QPixmap(flagsPath+"flag-tmpUnscrolled-right.png"));
+ setupFlag (flag,tb,"system-tmpUnscrolledright",tr("subtree is temporary scrolled","SystemFlag"));
+
+ flag->load(QPixmap(flagsPath+"flag-hideexport.png"));
+ setupFlag (flag,tb,"system-hideInExport",tr("Hide object in exported maps","SystemFlag"));
// Create Standard Flags
tb=addToolBar (tr ("Standard Flags","Standard Flag Toolbar"));
tb->setObjectName ("standardFlagTB");
- standardFlagsDefault = new FlagRowObj ();
- standardFlagsDefault->setVisibility (false);
- standardFlagsDefault->setName ("standardFlagsDef");
- standardFlagsDefault->setToolBar (tb);
-
- fo->load(flagsPath+"flag-exclamationmark.png");
- fo->setGroup("standard-mark");
- setupFlag (fo,tb,avis,"exclamationmark",tr("Take care!","Standardflag"));
- fo->load(flagsPath+"flag-questionmark.png");
- fo->setGroup("standard-mark");
- setupFlag (fo,tb,avis,"questionmark",tr("Really?","Standardflag"));
-
- fo->load(flagsPath+"flag-hook-green.png");
- fo->setGroup("standard-hook");
- setupFlag (fo,tb,avis,"hook-green",tr("ok!","Standardflag"));
-
- fo->load(flagsPath+"flag-cross-red.png");
- fo->setGroup("standard-hook");
- setupFlag (fo,tb,avis,"cross-red",tr("Not ok!","Standardflag"));
- fo->unsetGroup();
-
- fo->load(flagsPath+"flag-stopsign.png");
- setupFlag (fo,tb,avis,"stopsign",tr("This won't work!","Standardflag"));
-
- fo->load(flagsPath+"flag-smiley-good.png");
- fo->setGroup("standard-smiley");
- setupFlag (fo,tb,avis,"smiley-good",tr("Good","Standardflag"));
-
- fo->load(flagsPath+"flag-smiley-sad.png");
- fo->setGroup("standard-smiley");
- setupFlag (fo,tb,avis,"smiley-sad",tr("Bad","Standardflag"));
-
- fo->load(flagsPath+"flag-smiley-omg.png");
- fo->setGroup("standard-smiley");
- setupFlag (fo,tb,avis,"smiley-omb",tr("Oh no!","Standardflag"));
+ flag->load(flagsPath+"flag-exclamationmark.png");
+ flag->setGroup("standard-mark");
+ setupFlag (flag,tb,"exclamationmark",tr("Take care!","Standardflag"));
+
+ flag->load(flagsPath+"flag-questionmark.png");
+ flag->setGroup("standard-mark");
+ setupFlag (flag,tb,"questionmark",tr("Really?","Standardflag"));
+
+ flag->load(flagsPath+"flag-hook-green.png");
+ flag->setGroup("standard-hook");
+ setupFlag (flag,tb,"hook-green",tr("ok!","Standardflag"));
+
+ flag->load(flagsPath+"flag-cross-red.png");
+ flag->setGroup("standard-hook");
+ setupFlag (flag,tb,"cross-red",tr("Not ok!","Standardflag"));
+ flag->unsetGroup();
+
+ flag->load(flagsPath+"flag-stopsign.png");
+ setupFlag (flag,tb,"stopsign",tr("This won't work!","Standardflag"));
+
+ flag->load(flagsPath+"flag-smiley-good.png");
+ flag->setGroup("standard-smiley");
+ setupFlag (flag,tb,"smiley-good",tr("Good","Standardflag"));
+
+ flag->load(flagsPath+"flag-smiley-sad.png");
+ flag->setGroup("standard-smiley");
+ setupFlag (flag,tb,"smiley-sad",tr("Bad","Standardflag"));
+
+ flag->load(flagsPath+"flag-smiley-omg.png");
+ flag->setGroup("standard-smiley");
+ setupFlag (flag,tb,"smiley-omb",tr("Oh no!","Standardflag"));
// Original omg.png (in KDE emoticons)
- fo->unsetGroup();
-
- fo->load(flagsPath+"flag-kalarm.png");
- setupFlag (fo,tb,avis,"clock",tr("Time critical","Standardflag"));
-
- fo->load(flagsPath+"flag-phone.png");
- setupFlag (fo,tb,avis,"phone",tr("Call...","Standardflag"));
-
- fo->load(flagsPath+"flag-lamp.png");
- setupFlag (fo,tb,avis,"lamp",tr("Idea!","Standardflag"));
-
- fo->load(flagsPath+"flag-arrow-up.png");
- fo->setGroup("standard-arrow");
- setupFlag (fo,tb,avis,"arrow-up",tr("Important","Standardflag"));
-
- fo->load(flagsPath+"flag-arrow-down.png");
- fo->setGroup("standard-arrow");
- setupFlag (fo,tb,avis,"arrow-down",tr("Unimportant","Standardflag"));
-
- fo->load(flagsPath+"flag-arrow-2up.png");
- fo->setGroup("standard-arrow");
- setupFlag (fo,tb,avis,"2arrow-up",tr("Very important!","Standardflag"));
-
- fo->load(flagsPath+"flag-arrow-2down.png");
- fo->setGroup("standard-arrow");
- setupFlag (fo,tb,avis,"2arrow-down",tr("Very unimportant!","Standardflag"));
- fo->unsetGroup();
-
- fo->load(flagsPath+"flag-thumb-up.png");
- fo->setGroup("standard-thumb");
- setupFlag (fo,tb,avis,"thumb-up",tr("I like this","Standardflag"));
-
- fo->load(flagsPath+"flag-thumb-down.png");
- fo->setGroup("standard-thumb");
- setupFlag (fo,tb,avis,"thumb-down",tr("I do not like this","Standardflag"));
- fo->unsetGroup();
+ flag->unsetGroup();
+
+ flag->load(flagsPath+"flag-kalarm.png");
+ setupFlag (flag,tb,"clock",tr("Time critical","Standardflag"));
+
+ flag->load(flagsPath+"flag-phone.png");
+ setupFlag (flag,tb,"phone",tr("Call...","Standardflag"));
+
+ flag->load(flagsPath+"flag-lamp.png");
+ setupFlag (flag,tb,"lamp",tr("Idea!","Standardflag"));
+
+ flag->load(flagsPath+"flag-arrow-up.png");
+ flag->setGroup("standard-arrow");
+ setupFlag (flag,tb,"arrow-up",tr("Important","Standardflag"));
+
+ flag->load(flagsPath+"flag-arrow-down.png");
+ flag->setGroup("standard-arrow");
+ setupFlag (flag,tb,"arrow-down",tr("Unimportant","Standardflag"));
+
+ flag->load(flagsPath+"flag-arrow-2up.png");
+ flag->setGroup("standard-arrow");
+ setupFlag (flag,tb,"2arrow-up",tr("Very important!","Standardflag"));
+
+ flag->load(flagsPath+"flag-arrow-2down.png");
+ flag->setGroup("standard-arrow");
+ setupFlag (flag,tb,"2arrow-down",tr("Very unimportant!","Standardflag"));
+ flag->unsetGroup();
+
+ flag->load(flagsPath+"flag-thumb-up.png");
+ flag->setGroup("standard-thumb");
+ setupFlag (flag,tb,"thumb-up",tr("I like this","Standardflag"));
+
+ flag->load(flagsPath+"flag-thumb-down.png");
+ flag->setGroup("standard-thumb");
+ setupFlag (flag,tb,"thumb-down",tr("I do not like this","Standardflag"));
+ flag->unsetGroup();
- fo->load(flagsPath+"flag-rose.png");
- setupFlag (fo,tb,avis,"rose",tr("Rose","Standardflag"));
-
- fo->load(flagsPath+"flag-heart.png");
- setupFlag (fo,tb,avis,"heart",tr("I just love...","Standardflag"));
-
- fo->load(flagsPath+"flag-present.png");
- setupFlag (fo,tb,avis,"present",tr("Surprise!","Standardflag"));
-
- fo->load(flagsPath+"flag-flash.png");
- setupFlag (fo,tb,avis,"flash",tr("Dangerous","Standardflag"));
+ flag->load(flagsPath+"flag-rose.png");
+ setupFlag (flag,tb,"rose",tr("Rose","Standardflag"));
+
+ flag->load(flagsPath+"flag-heart.png");
+ setupFlag (flag,tb,"heart",tr("I just love...","Standardflag"));
+
+ flag->load(flagsPath+"flag-present.png");
+ setupFlag (flag,tb,"present",tr("Surprise!","Standardflag"));
+
+ flag->load(flagsPath+"flag-flash.png");
+ setupFlag (flag,tb,"flash",tr("Dangerous","Standardflag"));
// Original: xsldbg_output.png
- fo->load(flagsPath+"flag-info.png");
- setupFlag (fo,tb,avis,"info",tr("Info","Standardflag"));
+ flag->load(flagsPath+"flag-info.png");
+ setupFlag (flag,tb,"inflag",tr("Info","Standardflag"));
// Original khelpcenter.png
- fo->load(flagsPath+"flag-lifebelt.png");
- setupFlag (fo,tb,avis,"lifebelt",tr("This will help","Standardflag"));
+ flag->load(flagsPath+"flag-lifebelt.png");
+ setupFlag (flag,tb,"lifebelt",tr("This will help","Standardflag"));
// Freemind flags
- avis=false;
-
- fo->load(flagsPath+"freemind/warning.png");
- setupFlag (fo,tb, avis, "freemind-warning",tr("Important","Freemind-Flag"));
+ flag->load(flagsPath+"freemind/warning.png");
+ setupFlag (flag,tb, "freemind-warning",tr("Important","Freemind-Flag"));
for (int i=1; i<8; i++)
{
- fo->load(flagsPath+QString("freemind/priority-%1.png").arg(i));
- setupFlag (fo,tb, avis,QString("freemind-priority-%1").arg(i),tr("Priority","Freemind-Flag"));
+ flag->load(flagsPath+QString("freemind/priority-%1.png").arg(i));
+ setupFlag (flag,tb, QString("freemind-priority-%1").arg(i),tr("Priority","Freemind-Flag"));
}
- fo->load(flagsPath+"freemind/back.png");
- setupFlag (fo,tb,avis,"freemind-back",tr("Back","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/forward.png");
- setupFlag (fo,tb,avis,"freemind-forward",tr("Forward","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/attach.png");
- setupFlag (fo,tb,avis,"freemind-attach",tr("Look here","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/clanbomber.png");
- setupFlag (fo,tb,avis,"freemind-clanbomber",tr("Dangerous","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/desktopnew.png");
- setupFlag (fo,tb,avis,"freemind-desktopnew",tr("Don't forget","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/flag.png");
- setupFlag (fo,tb,avis,"freemind-flag",tr("Flag","Freemind-Flag"));
-
-
- fo->load(flagsPath+"freemind/gohome.png");
- setupFlag (fo,tb,avis,"freemind-gohome",tr("Home","Freemind-Flag"));
-
-
- fo->load(flagsPath+"freemind/kaddressbook.png");
- setupFlag (fo,tb,avis,"freemind-kaddressbook",tr("Telephone","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/knotify.png");
- setupFlag (fo,tb,avis,"freemind-knotify",tr("Music","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/korn.png");
- setupFlag (fo,tb,avis,"freemind-korn",tr("Mailbox","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/mail.png");
- setupFlag (fo,tb,avis,"freemind-mail",tr("Maix","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/password.png");
- setupFlag (fo,tb,avis,"freemind-password",tr("Password","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/pencil.png");
- setupFlag (fo,tb,avis,"freemind-pencil",tr("To be improved","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/stop.png");
- setupFlag (fo,tb,avis,"freemind-stop",tr("Stop","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/wizard.png");
- setupFlag (fo,tb,avis,"freemind-wizard",tr("Magic","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/xmag.png");
- setupFlag (fo,tb,avis,"freemind-xmag",tr("To be discussed","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/bell.png");
- setupFlag (fo,tb,avis,"freemind-bell",tr("Reminder","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/bookmark.png");
- setupFlag (fo,tb,avis,"freemind-bookmark",tr("Excellent","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/penguin.png");
- setupFlag (fo,tb,avis,"freemind-penguin",tr("Linux","Freemind-Flag"));
-
- fo->load(flagsPath+"freemind/licq.png");
- setupFlag (fo,tb,avis,"freemind-licq",tr("Sweet","Freemind-Flag"));
-
- delete (fo);
+ flag->load(flagsPath+"freemind/back.png");
+ setupFlag (flag,tb,"freemind-back",tr("Back","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/forward.png");
+ setupFlag (flag,tb,"freemind-forward",tr("forward","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/attach.png");
+ setupFlag (flag,tb,"freemind-attach",tr("Look here","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/clanbomber.png");
+ setupFlag (flag,tb,"freemind-clanbomber",tr("Dangerous","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/desktopnew.png");
+ setupFlag (flag,tb,"freemind-desktopnew",tr("Don't flagrget","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/flag.png");
+ setupFlag (flag,tb,"freemind-flag",tr("Flag","Freemind-Flag"));
+
+
+ flag->load(flagsPath+"freemind/gohome.png");
+ setupFlag (flag,tb,"freemind-gohome",tr("Home","Freemind-Flag"));
+
+
+ flag->load(flagsPath+"freemind/kaddressbook.png");
+ setupFlag (flag,tb,"freemind-kaddressbook",tr("Telephone","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/knotify.png");
+ setupFlag (flag,tb,"freemind-knotify",tr("Music","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/korn.png");
+ setupFlag (flag,tb,"freemind-korn",tr("Mailbox","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/mail.png");
+ setupFlag (flag,tb,"freemind-mail",tr("Maix","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/password.png");
+ setupFlag (flag,tb,"freemind-password",tr("Password","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/pencil.png");
+ setupFlag (flag,tb,"freemind-pencil",tr("To be improved","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/stop.png");
+ setupFlag (flag,tb,"freemind-stop",tr("Stop","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/wizard.png");
+ setupFlag (flag,tb,"freemind-wizard",tr("Magic","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/xmag.png");
+ setupFlag (flag,tb,"freemind-xmag",tr("To be discussed","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/bell.png");
+ setupFlag (flag,tb,"freemind-bell",tr("Reminder","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/bookmark.png");
+ setupFlag (flag,tb,"freemind-bookmark",tr("Excellent","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/penguin.png");
+ setupFlag (flag,tb,"freemind-penguin",tr("Linux","Freemind-Flag"));
+
+ flag->load(flagsPath+"freemind/licq.png");
+ setupFlag (flag,tb,"freemind-licq",tr("Sweet","Freemind-Flag"));
}
-void Main::setupFlag (FlagObj *fo, QToolBar *tb, bool aw, const QString &name, const QString &tooltip)
+void Main::setupFlag (Flag *flag, QToolBar *tb, const QString &name, const QString &tooltip)
{
- fo->setName(name);
- fo->setToolTip (tooltip);
- QAction *a=new QAction (fo->getPixmap(),fo->getName(),this);
+ flag->setName(name);
+ flag->setToolTip (tooltip);
+ QAction *a;
if (tb)
{
+ a=new QAction (flag->getPixmap(),name,this);
// StandardFlag
tb->addAction (a);
- fo->setAction (a);
- fo->setAlwaysVisible(aw);
a->setCheckable(true);
- a->setObjectName(fo->getName());
+ a->setObjectName(name);
a->setToolTip(tooltip);
connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
- standardFlagsDefault->addFlag (fo);
+ standardFlagsMaster->addFlag (flag);
} else
{
// SystemFlag
- systemFlagsDefault->addFlag (fo);
+ systemFlagsMaster->addFlag (flag);
}
}
+
// Network Actions
void Main::setupNetworkActions()
{
@@ -2692,107 +2680,6 @@
}
}
-
-void Main::editAttributeFinished()
-{
- // only called from editHeading(), so there is a currentME
-
- /*
- MapEditor *me=currentMapEditor();
- if (me)
- {
- me->setStateEditHeading (false);
- QPoint p; //Not used here, only to find out pos of branch
- bool ok;
- QString s=me->getHeading(ok,p);
-
-#if defined(Q_OS_MACX)
-#else
- if (ok && s!=lineedit->text())
- me->setHeading(lineedit->text());
-
- lineedit->releaseKeyboard();
- lineedit->hide();
- setFocus();
-#endif
- if (!actionSettingsAutoSelectNewBranch->isOn() &&
- !prevSelection.isEmpty())
- me->select(prevSelection);
- prevSelection="";
- }
- */
-}
-
-#include "attribute.h"
-#include "attributedialog.h"
-void Main::editAttribute()
-{
-/*
- MapEditor *me=currentMapEditor();
- if (me)
- {
- BranchObj *bo=me->getModel()->getSelectedBranch();
- if (bo)
- {
- AttributeDialog dia(this);
- dia.setTable (me->attributeTable() );
- dia.setBranch (bo);
- dia.setMode (Definition);
- dia.updateTable();
- dia.exec();
- }
- }
- */
- /*
- if (currentMapEditor())
- {
- MapEditor *me=currentMapEditor();
- QString oldSel=me->getSelectString();
-
- if (lineedit->isVisible())
- editAttributeFinished();
- else
- {
- bool ok;
- QPoint p;
- QString s=me->getHeading(ok,p);
-
- if (ok)
- {
- me->setStateEditHeading (true);
-#if defined(Q_OS_MACX)
- p=me->mapToGlobal (p);
- QDialog *d =new QDialog(NULL);
- QLineEdit *le=new QLineEdit (d);
- d->setWindowFlags (Qt::FramelessWindowHint);
- d->setGeometry(p.x(),p.y(),230,25);
- le->resize (d->width()-10,d->height());
- le->setText (s);
- le->selectAll();
- connect (le, SIGNAL (returnPressed()), d, SLOT (accept()));
- d->activateWindow();
- d->exec();
- me->setHeading (le->text());
- delete (le);
- delete (d);
- editHeadingFinished();
-#else
- p=me->mapTo (this,p);
- lineedit->setGeometry(p.x(),p.y(),230,25);
- lineedit->setText(s);
- lineedit->setCursorPosition(1);
- lineedit->selectAll();
- lineedit->show();
- lineedit->grabKeyboard();
- lineedit->setFocus();
-#endif
- }
- }
- } // currentMapEditor()
-
- */
-}
-
void Main::openVymLinks(const QStringList &vl)
{
for (int j=0; jmoveBranchUp();
+ if (m) m->moveUp();
}
void Main::editMoveDown()
{
VymModel *m=currentModel();
- if (m) m->moveBranchDown();
+ if (m) m->moveDown();
}
void Main::editSortChildren()
@@ -3266,32 +3153,20 @@
void Main::viewZoomReset()
{
- if (currentMapEditor())
- {
- QMatrix m;
- m.reset();
- currentMapEditor()->setMatrix( m );
- }
+ MapEditor *me=currentMapEditor();
+ if (me) me->setZoomFactorTarget (1);
}
void Main::viewZoomIn()
{
- if (currentMapEditor())
- {
- QMatrix m = currentMapEditor()->matrix();
- m.scale( 1.25, 1.25 );
- currentMapEditor()->setMatrix( m );
- }
+ MapEditor *me=currentMapEditor();
+ if (me) me->setZoomFactorTarget (me->getZoomFactorTarget()*1.25);
}
void Main::viewZoomOut()
{
- if (currentMapEditor())
- {
- QMatrix m = currentMapEditor()->matrix();
- m.scale( 0.8, 0.8 );
- currentMapEditor()->setMatrix( m );
- }
+ MapEditor *me=currentMapEditor();
+ if (me) me->setZoomFactorTarget (me->getZoomFactorTarget()*0.75);
}
void Main::viewCenter()
@@ -3523,7 +3398,7 @@
if (!status.isEmpty() ) statusMessage (status);
*/
- // Update Toolbar // FIXME-1, was so far in BranchObj
+ // Update Toolbar // FIXME-0, was so far in BranchObj
//updateFlagsToolbar();
updateActions();
@@ -3640,15 +3515,13 @@
}
*/
- standardFlagsDefault->setEnabled (true);
-
actionToggleScroll->setEnabled (true);
if ( selbi->isScrolled() )
actionToggleScroll->setOn(true);
else
actionToggleScroll->setOn(false);
-/* FIXME-1 if ( selti->getURL().isEmpty() )
+ if ( selti->getURL().isEmpty() )
{
actionOpenURL->setEnabled (false);
actionOpenURLTab->setEnabled (false);
@@ -3667,16 +3540,16 @@
actionOpenVymLink->setEnabled (true);
actionDeleteVymLink->setEnabled (true);
}
-*/
-/* FIXME-1 if (selbi->canMoveBranchUp())
+
+ if (selbi->canMoveUp())
actionMoveUp->setEnabled (true);
else
actionMoveUp->setEnabled (false);
- if (selbi->canMoveBranchDown())
+ if (selbi->canMoveDown())
actionMoveDown->setEnabled (true);
else
actionMoveDown->setEnabled (false);
-*/
+
actionSortChildren->setEnabled (true);
actionToggleHideExport->setEnabled (true);
@@ -3709,7 +3582,7 @@
actionCopy->setEnabled (true);
actionCut->setEnabled (true);
- actionPaste->setEnabled (false);
+ actionPaste->setEnabled (false); //FIXME-4 why not allowing copy of images?
for (int i=0; isetEnabled(false);
actionDelete->setEnabled (true);
@@ -3722,7 +3595,6 @@
} else
{
- standardFlagsDefault->setEnabled (false);
actionFileSave->setEnabled (false);
actionCopy->setEnabled (false);
actionCut->setEnabled (false);
@@ -3761,11 +3633,6 @@
return actionSettingsAutoSelectNewBranch->isOn();
}
-bool Main::useFlagGroups()
-{
- return actionSettingsUseFlagGroups->isOn();
-}
-
void Main::windowShowNoteEditor()
{
textEditor->setShowWithMain(true);
@@ -3816,13 +3683,18 @@
void Main::standardFlagChanged()
{
if (currentModel())
- currentModel()->toggleStandardFlag(sender()->name());
+ {
+ if ( actionSettingsUseFlagGroups->isOn() )
+ currentModel()->toggleStandardFlag(sender()->name(),standardFlagsMaster);
+ else
+ currentModel()->toggleStandardFlag(sender()->name());
+ }
}
void Main::testFunction1()
{
- //if (!currentMapEditor()) return;
- //currentMapEditor()->testFunction1();
+ if (!currentMapEditor()) return;
+ currentMapEditor()->testFunction1();
//editAttribute();
}
diff -r 7a71a914afdb -r 6d2b32f305f9 mainwindow.h
--- a/mainwindow.h Thu May 07 08:48:53 2009 +0000
+++ b/mainwindow.h Wed May 13 08:26:27 2009 +0000
@@ -5,6 +5,7 @@
#include "branchpropwindow.h"
#include "extrainfodialog.h"
+#include "flag.h"
#include "file.h"
#include "findwindow.h"
#include "historywindow.h"
@@ -58,7 +59,7 @@
void setupViewActions();
void setupModeActions();
void setupWindowActions();
- void setupFlag(FlagObj *fo, QToolBar *tb, bool aw, const QString &name, const QString &tooltip);
+ void setupFlag(Flag *flag, QToolBar *tb, const QString &name, const QString &tooltip);
void setupFlagActions();
void setupNetworkActions();
void setupSettingsActions();
@@ -133,11 +134,9 @@
void openVymLinks(const QStringList &);
void editVymLink();
void editOpenMultipleVymLinks();
- void editAttributeFinished();
public slots:
void editHeadingFinished(VymModel *m);
// void editHeading();
- void editAttribute();
void editOpenVymLink();
private slots:
void editDeleteVymLink();
@@ -223,7 +222,6 @@
ModMode getModMode();
bool autoEditNewBranch();
bool autoSelectNewBranch();
- bool useFlagGroups();
void setScript(const QString &);
void runScript(const QString &);
void runScriptEverywhere (const QString &);
diff -r 7a71a914afdb -r 6d2b32f305f9 mapcenteritem.cpp
--- a/mapcenteritem.cpp Thu May 07 08:48:53 2009 +0000
+++ b/mapcenteritem.cpp Wed May 13 08:26:27 2009 +0000
@@ -135,7 +135,7 @@
if (!getHeading().isEmpty() )
{
- mco->updateHeading();
+ mco->updateData(); //FIXME-3 better call model->emitDataHasChanged(treeItem);
mco->setColor (headingColor);
}
diff -r 7a71a914afdb -r 6d2b32f305f9 mapcenterobj.cpp
--- a/mapcenterobj.cpp Thu May 07 08:48:53 2009 +0000
+++ b/mapcenterobj.cpp Wed May 13 08:26:27 2009 +0000
@@ -108,103 +108,3 @@
if (repositionRequest) reposition();
}
-QString MapCenterObj::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPointF &offset)
-{
- QString s,a;
-
-/*
- // save area, if not scrolled
- QString areaAttr=
- attribut("x1",QString().setNum(absPos.x()-offset.x())) +
- attribut("y1",QString().setNum(absPos.y()-offset.y())) +
- attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) +
- attribut("y2",QString().setNum(absPos.y()+height()-offset.y()));
-
- // Providing an ID for a branch makes export to XHTML easier
- // FIXME-3
- QString idAttr;
- if (treeItem->xlinkCount()>0)
- idAttr=attribut ("id",mapEditor->getModel()->getSelectString(this)); //TODO directly access model
-
- else
- idAttr="";
-
-
- QString linkAttr=getLinkAttr();
-
- s=beginElement ("mapcenter"
- +getOrnXMLAttr()
- +areaAttr
-// +idAttr
- +getIncludeImageAttr() );
- incIndent();
- if (heading->getColor()!=QColor("black"))
- a=attribut ("textColor",QColor(heading->getColor()).name() );
- else
- a="";
-
- // Save flags. If verbose is set (export to xml dir), also write
- // the flags as picture
- s+=standardFlags->saveToDir(tmpdir+"/flags", "/standardFlag-", verbose);
-
- // Save heading
- s+=valueElement("heading", treeItem->getHeading(),a);
-
- // Save frame
- s+=frame->saveToDir ();
-
- // Update of note is usually done while unselecting a branch
- //if (isNoteInEditor) getNoteFromTextEditor(); FIXME-3
-
- // save note
- if (!treeItem->getNoteObj().isEmpty() )
- s+=treeItem->getNoteObj().saveToDir();
-
- // Save branches
- for (int i=0; ibranchCount(); ++i)
- s+=treeItem->getBranchObjNum(i)->saveToDir(tmpdir,prefix, offset);
-
- // Save FloatImages
- for (int i=0; isaveToDir (tmpdir,prefix);
-
- // Save XLinks
- for (int i=0;isaveToDir();
-
- decIndent();
- s+=endElement ("mapcenter");
- */
- return s;
-}
-
-void MapCenterObj::setVersion (const QString &s)
-{
- version=s;
-}
-
-void MapCenterObj::setAuthor (const QString &s)
-{
- author=s;
-}
-
-QString MapCenterObj::getAuthor()
-{
- return author;
-}
-
-void MapCenterObj::setComment (const QString &s)
-{
- comment=s;
-}
-
-QString MapCenterObj::getComment ()
-{
- return comment;
-}
-
-QString MapCenterObj::getDate ()
-{
- return QDate::currentDate().toString ("yyyy-MM-dd");
-}
-
diff -r 7a71a914afdb -r 6d2b32f305f9 mapcenterobj.h
--- a/mapcenterobj.h Thu May 07 08:48:53 2009 +0000
+++ b/mapcenterobj.h Wed May 13 08:26:27 2009 +0000
@@ -27,17 +27,5 @@
virtual void moveAllBy (double,double);
virtual void updateLink();
virtual void updateRelPositions();
- virtual QString saveToDir (const QString&,const QString&,int, const QPointF&);// Save data recursivly to tempdir
- void setVersion(const QString &);
- void setAuthor (const QString &);
- QString getAuthor ();
- void setComment (const QString &);
- QString getComment ();
- QString getDate();
-private:
- QString version; //!< version string saved in vym file
- QString author;
- QString comment;
- QDate date;
};
#endif
diff -r 7a71a914afdb -r 6d2b32f305f9 mapeditor.cpp
--- a/mapeditor.cpp Thu May 07 08:48:53 2009 +0000
+++ b/mapeditor.cpp Wed May 13 08:26:27 2009 +0000
@@ -19,7 +19,6 @@
extern QString clipboardFile;
extern bool clipboardEmpty;
extern bool debug;
-extern FlagRowObj *standardFlagsDefault;
extern QMenu* branchContextMenu;
extern QMenu* branchAddContextMenu;
@@ -41,6 +40,8 @@
mapScene= new QGraphicsScene(NULL);
mapScene->setBackgroundBrush (QBrush(Qt::white, Qt::SolidPattern));
+ zoomFactor=zoomFactorTarget=1;
+
model=vm;
model->setScene (mapScene);
model->registerEditor(this);
@@ -147,6 +148,105 @@
return mapScene;
}
+void MapEditor::setScrollBarPosTarget (const QRectF &rect)
+{
+ // Code copied from Qt sources
+ int xmargin=50;
+ int ymargin=50;
+
+ qreal width = viewport()->width();
+ qreal height = viewport()->height();
+ QRectF viewRect = matrix().mapRect(rect);
+
+ qreal left = horizontalScrollBar()->value();
+ qreal right = left + width;
+ qreal top = verticalScrollBar()->value();
+ qreal bottom = top + height;
+
+ if (viewRect.left() <= left + xmargin) {
+ // need to scroll from the left
+ // if (!d->leftIndent)
+ scrollBarPosTarget.setX(int(viewRect.left() - xmargin - 0.5));
+ }
+ if (viewRect.right() >= right - xmargin) {
+ // need to scroll from the right
+// if (!d->leftIndent)
+ scrollBarPosTarget.setX(int(viewRect.right() - width + xmargin + 0.5));
+ }
+ if (viewRect.top() <= top + ymargin) {
+ // need to scroll from the top
+ // if (!d->topIndent)
+ scrollBarPosTarget.setY(int(viewRect.top() - ymargin - 0.5));
+ }
+ if (viewRect.bottom() >= bottom - ymargin) {
+ // need to scroll from the bottom
+// if (!d->topIndent)
+ scrollBarPosTarget.setY(int(viewRect.bottom() - height + ymargin + 0.5));
+ }
+
+ if (scrollBarPosAnimation.state()==QtAbstractAnimation::Running)
+ scrollBarPosAnimation.stop();
+ scrollBarPosAnimation.setTargetObject (this);
+ scrollBarPosAnimation.setPropertyName ("scrollBarPos");
+ scrollBarPosAnimation.setDuration(1000);
+ scrollBarPosAnimation.setEasingCurve ( QtEasingCurve::OutQuint);
+ scrollBarPosAnimation.setStartValue(
+ QPointF (horizontalScrollBar()->value() ,
+ verticalScrollBar()->value() ) );
+ scrollBarPosAnimation.setEndValue(scrollBarPosTarget);
+ scrollBarPosAnimation.start();
+}
+
+QPointF MapEditor::getScrollBarPosTarget()
+{
+ return scrollBarPosTarget;
+}
+
+
+void MapEditor::setScrollBarPos(const QPointF &p)
+{
+ scrollBarPos=p;
+ horizontalScrollBar()->setValue(int(p.x()));
+ verticalScrollBar()->setValue(int(p.y()));
+}
+
+QPointF MapEditor::getScrollBarPos()
+{
+ return scrollBarPos;
+}
+
+void MapEditor::setZoomFactorTarget (const qreal &zft)
+{
+ zoomFactorTarget=zft;
+ if (zoomAnimation.state()==QtAbstractAnimation::Running)
+ zoomAnimation.stop();
+ //zoomAnimation=QtPropertyAnimation(this, "zoomFactor");
+ zoomAnimation.setTargetObject (this);
+ zoomAnimation.setPropertyName ("zoomFactor");
+ zoomAnimation.setDuration(1000);
+ zoomAnimation.setEasingCurve ( QtEasingCurve::OutQuint);
+ zoomAnimation.setStartValue(zoomFactor);
+ zoomAnimation.setEndValue(zft);
+ zoomAnimation.start();
+}
+
+qreal MapEditor::getZoomFactorTarget()
+{
+ return zoomFactorTarget;
+}
+
+
+void MapEditor::setZoomFactor(const qreal &zf)
+{
+ zoomFactor=zf;
+ setMatrix (QMatrix(zf, 0, 0, zf, 0, 0),false );
+}
+
+qreal MapEditor::getZoomFactor()
+{
+ return zoomFactor;
+}
+
void MapEditor::print()
{
if ( !printer )
@@ -273,42 +373,70 @@
void MapEditor::testFunction1()
{
- BranchItem *cur=NULL;
- BranchItem *prev=NULL;
- int d;
- cout << "ME::testFunction1 starting to walk the map...\n";
- while (model->next (cur,prev,d) )
- cout << "*** " <getHeading().toStdString()<getSelectedBranchObj()->getBBox();
+ int xmargin=50;
+ int ymargin=50;
+ qreal width = viewport()->width();
+ qreal height = viewport()->height();
+ QRectF viewRect = matrix().mapRect(rect);
- //BranchObj *bo=model->getSelectedBranchObj();
- //if (bo) model->moveAway (bo);
- //if (bo) bo->setLinkStyle (LinkableMapObj::Line);
-
+ qreal left = horizontalScrollBar()->value();
+ qreal right = left + width;
+ qreal top = verticalScrollBar()->value();
+ qreal bottom = top + height;
+ if (viewRect.left() <= left + xmargin) {
+ // need to scroll from the left
+ // if (!d->leftIndent)
+ horizontalScrollBar()->setValue(int(viewRect.left() - xmargin - 0.5));
+ }
+ if (viewRect.right() >= right - xmargin) {
+ // need to scroll from the right
+// if (!d->leftIndent)
+ horizontalScrollBar()->setValue(int(viewRect.right() - width + xmargin + 0.5));
+ }
+ if (viewRect.top() <= top + ymargin) {
+ // need to scroll from the top
+ // if (!d->topIndent)
+ verticalScrollBar()->setValue(int(viewRect.top() - ymargin - 0.5));
+ }
+ if (viewRect.bottom() >= bottom - ymargin) {
+ // need to scroll from the bottom
+// if (!d->topIndent)
+ verticalScrollBar()->setValue(int(viewRect.bottom() - height + ymargin + 0.5));
+ }
+ cout << "test1: hor="<value()<setDuration(5000);
+ //animation->setEasingCurve ( QtEasingCurve::OutElastic);
+ animation->setEasingCurve ( QtEasingCurve::OutQuint);
+ animation->setStartValue(sceneRect() );
+ animation->setEndValue(QRectF(50, 50, 1000, 1000));
- if (cur->depth() >0 && !bo->hasScrolledParent(bo) )
- {
- p=QPointF (qrand() %600-300, qrand () %600-300);
- bo->setRelPos();
- q=bo->getRelPos();
- model->startAnimation (bo,p, q);
- }
- model->next(cur,prev,d);
- }
-*/
+ animation->start();
+*/
+/*
+ QDialog *dia= new QDialog (this);
+ dia->setGeometry (50,50,10,10);
+ dia->show();
+ dia ->raise();
+
+ QtPropertyAnimation *animation=new QtPropertyAnimation(dia, "geometry");
+ animation->setDuration(1000);
+ //animation->setEasingCurve ( QtEasingCurve::OutElastic);
+ animation->setEasingCurve ( QtEasingCurve::OutQuint);
+ animation->setStartValue(QRect(50, 50, 10, 10));
+ animation->setEndValue(QRect(250, 250, 100, 100));
+
+ animation->start();
+ */
/* TODO Hide hidden stuff temporary, maybe add this as regular function somewhere
if (hidemode==HideNone)
@@ -335,7 +463,6 @@
}
cout <<" hidemode="<getSelectString (bsel->getParObj());
QString preNum=QString::number (seli->num(),10);
QString preDstParStr;
+ bool relinked;
if (e->state() & Qt::ShiftModifier && dst->getParObj())
{ // Link above dst
preDstParStr=model->getSelectString (dst->getParObj());
- model->relinkBranch ((BranchItem*)seli,(BranchItem*)dsti->parent(),((BranchItem*)dsti)->num());
+ relinked=model->relinkBranch ((BranchItem*)seli,(BranchItem*)dsti->parent(),((BranchItem*)dsti)->num());
} else
if (e->state() & Qt::ControlModifier && dst->getParObj())
{
// Link below dst
preDstParStr=model->getSelectString (dst->getParObj());
- model->relinkBranch ((BranchItem*)seli,(BranchItem*)dsti->parent(),((BranchItem*)seli)->num()+1);
+ relinked=model->relinkBranch ((BranchItem*)seli,(BranchItem*)dsti->parent(),((BranchItem*)dsti)->num()+1);
} else
{ // Append to dst
preDstParStr=model->getSelectString(dst);
- model->relinkBranch ((BranchItem*)seli,(BranchItem*)dsti);
+ relinked=model->relinkBranch ((BranchItem*)seli,(BranchItem*)dsti);
if (dsti->depth()==0) bsel->move (savePos);
}
- QString postSelStr=model->getSelectString(lmosel);
- QString postNum=QString::number (seli->num(),10);
+ if (relinked)
+ {
+ QString postSelStr=model->getSelectString(lmosel);
+ QString postNum=QString::number (seli->num(),10);
- QString undoCom="linkTo (\""+
- preParStr+ "\"," + preNum +"," +
- QString ("%1,%2").arg(movingObj_orgPos.x()).arg(movingObj_orgPos.y())+ ")";
+ QString undoCom="linkTo (\""+
+ preParStr+ "\"," + preNum +"," +
+ QString ("%1,%2").arg(movingObj_orgPos.x()).arg(movingObj_orgPos.y())+ ")";
- QString redoCom="linkTo (\""+
- preDstParStr + "\"," + postNum + "," +
- QString ("%1,%2").arg(savePos.x()).arg(savePos.y())+ ")";
+ QString redoCom="linkTo (\""+
+ preDstParStr + "\"," + postNum + "," +
+ QString ("%1,%2").arg(savePos.x()).arg(savePos.y())+ ")";
- model->saveState (
- postSelStr,undoCom,
- preSelStr, redoCom,
- QString("Relink %1 to %2").arg(model->getObjectName(bsel)).arg(model->getObjectName(dst)) );
+ model->saveState (
+ postSelStr,undoCom,
+ preSelStr, redoCom,
+ QString("Relink %1 to %2").arg(model->getObjectName(bsel)).arg(model->getObjectName(dst)) );
- model->reposition(); // not necessary if we undo temporary move below
+ }
} else
{
// No destination, undo temporary move
@@ -1135,7 +1265,7 @@
if (ti->isBranchLikeType())
{
BranchObj *bo=(BranchObj*)ti->getLMO();
- bo->updateHeading();
+ bo->updateData();
}
}
diff -r 7a71a914afdb -r 6d2b32f305f9 mapeditor.h
--- a/mapeditor.h Thu May 07 08:48:53 2009 +0000
+++ b/mapeditor.h Wed May 13 08:26:27 2009 +0000
@@ -4,6 +4,8 @@
#include
#include
+#include //! Not yet officially in Qt!
+
#include "attribute.h"
#include "ornamentedobj.h"
#include "settings.h"
@@ -12,8 +14,11 @@
/*! \brief Main widget in vym to display and edit a map */
-class MapEditor : public QGraphicsView {
+
+class MapEditor : public QGraphicsView {
Q_OBJECT
+ Q_PROPERTY(qreal zoomFactor READ getZoomFactor WRITE setZoomFactor)
+ Q_PROPERTY(QPointF scrollBarPos READ getScrollBarPos WRITE setScrollBarPos)
public:
MapEditor(VymModel *vm);
@@ -21,6 +26,26 @@
VymModel* getModel();
QGraphicsScene * getScene();
+protected:
+ QPointF scrollBarPos;
+ QPointF scrollBarPosTarget;
+ QtPropertyAnimation scrollBarPosAnimation;
+public:
+ void setScrollBarPosTarget (const QRectF &rect); //! ensureVisible of rect
+ QPointF getScrollBarPosTarget ();
+ void setScrollBarPos (const QPointF &p);
+ QPointF getScrollBarPos();
+
+protected:
+ qreal zoomFactor;
+ qreal zoomFactorTarget;
+ QtPropertyAnimation zoomAnimation;
+public:
+ void setZoomFactorTarget (const qreal &zf);
+ qreal getZoomFactorTarget();
+ void setZoomFactor (const qreal &zf);
+ qreal getZoomFactor();
+
public:
void print(); //!< Print the map
void setAntiAlias (bool); //!< Set or unset antialiasing
diff -r 7a71a914afdb -r 6d2b32f305f9 ornamentedobj.cpp
--- a/ornamentedobj.cpp Thu May 07 08:48:53 2009 +0000
+++ b/ornamentedobj.cpp Wed May 13 08:26:27 2009 +0000
@@ -6,9 +6,6 @@
#include "linkablemapobj.h"
extern TextEditor *textEditor;
-extern FlagRowObj *systemFlagsDefault;
-extern FlagRowObj *standardFlagsDefault;
-
/////////////////////////////////////////////////////////////////
// OrnamentedObj
@@ -46,20 +43,9 @@
heading->move (absPos.x(), absPos.y());
systemFlags=new FlagRowObj(scene);
- systemFlags->clone(systemFlagsDefault);
- systemFlags->setName ("systemFlags");
-
standardFlags=new FlagRowObj(scene);
- standardFlags->clone(standardFlagsDefault);
- standardFlags->setName ("standardFlags");
-
- attributes.clear();
frame = new FrameObj (scene);
-
- url="";
- vymLink="";
-
}
void OrnamentedObj::copy (OrnamentedObj* other)
@@ -72,9 +58,6 @@
standardFlags->copy (other->standardFlags);
ornamentsBBox=other->ornamentsBBox;
-
- url=other->url;
- vymLink=other->vymLink;
}
void OrnamentedObj::setLinkColor()
@@ -246,90 +229,9 @@
move2RelPos (p.x(),p.y());
}
-void OrnamentedObj::setURL(QString s)
+void OrnamentedObj::activateStandardFlag(Flag *flag)
{
- url=s;
- if (!url.isEmpty())
- systemFlags->activate("url");
- else
- systemFlags->deactivate("url");
- calcBBoxSize(); // recalculate bbox
- positionBBox(); // rearrange contents
- forceReposition();
-}
-
-QString OrnamentedObj::getURL()
-{
- return url;
-}
-
-void OrnamentedObj::setVymLink(QString s)
-{
- if (!s.isEmpty())
- {
- // We need the relative (from loading)
- // or absolute path (from User event)
- // and build the absolute path.
- // Note: If we have relative, use path of
- // current map to build absolute path
- QDir d(s);
- if (!d.path().startsWith ("/"))
- {
- QString p=model->getDestPath();
- int i=p.findRev("/",-1);
- d.setPath(p.left(i)+"/"+s);
- d.convertToAbs();
- }
- vymLink=d.path();
- systemFlags->activate("vymLink");
- }
- else
- {
- systemFlags->deactivate("vymLink");
- vymLink="";
- }
- calcBBoxSize(); // recalculate bbox
- positionBBox(); // rearrange contents
- forceReposition();
-}
-
-QString OrnamentedObj::getVymLink()
-{
- return vymLink;
-}
-
-
-void OrnamentedObj::setAttributes (const QList &al)
-{
- attributes=al;
-}
-
-QList OrnamentedObj::getAttributes()
-{
- return attributes;
-}
-
-void OrnamentedObj::clearStandardFlags()
-{
- standardFlags->deactivateAll();
- calcBBoxSize();
- positionBBox();
- move (absPos.x(), absPos.y() );
- forceReposition();
-}
-
-void OrnamentedObj::toggleStandardFlag(const QString &name)
-{
- standardFlags->toggle(name);
- calcBBoxSize();
- positionBBox();
- move (absPos.x(), absPos.y() );
- forceReposition();
-}
-
-void OrnamentedObj::activateStandardFlag(const QString &name)
-{
- standardFlags->activate(name);
+ standardFlags->activate(flag);
calcBBoxSize();
positionBBox();
move (absPos.x(), absPos.y() );
@@ -345,22 +247,12 @@
forceReposition();
}
-bool OrnamentedObj::isSetStandardFlag (const QString &name)
-{
- return standardFlags->isActive(name);
-}
QString OrnamentedObj::getSystemFlagName(const QPointF &p)
{
return systemFlags->getFlagName(p);
}
-bool OrnamentedObj::isActiveFlag (const QString &name)
-{
- if (standardFlags->isActive (name) ) return true;
- return false;
-}
-
/* FIXME-3 should move to VymView ?! void OrnamentedObj::getNoteFromTextEditor ()
{
note.setFilenameHint (textEditor->getFilename());
@@ -369,41 +261,7 @@
}
*/
-void OrnamentedObj::updateSystemFlags()
-{
- // FIXME-3 check if note here and text in editor are still in sync!!
- // Best would be to always have current text here...
- bool noteEmpty=treeItem->getNoteObj().isEmpty();
- /*
- if (isNoteInEditor)
- noteEmpty=textEditor->isEmpty();
- else
- noteEmpty=note.isEmpty();
- */
-
- if (!noteEmpty)
- {
- if (systemFlags->isActive ("note")) return;
- systemFlags->activate("note");
- }
- else
- {
- if (!systemFlags->isActive ("note")) return;
- systemFlags->deactivate("note");
- }
- //model->setChanged();
- calcBBoxSize();
- positionBBox();
- move (absPos.x(), absPos.y() );
- forceReposition();
-}
-
-void OrnamentedObj::updateFlagsToolbar()
-{
- standardFlags->updateToolbar();
-}
-
-QString OrnamentedObj::getOrnXMLAttr()
+QString OrnamentedObj::getOrnXMLAttr() //FIXME-2
{
QString posAttr;
@@ -424,20 +282,12 @@
posAttr="";
}
- QString urlAttr;
- if (!url.isEmpty())
- urlAttr=attribut ("url",url);
-
- QString vymLinkAttr;
- if (!vymLink.isEmpty())
- vymLinkAttr=attribut ("vymLink",convertToRel(model->getDestPath(),vymLink) );
-
/* FIXME-2 QString hideExpAttr;
if (hideExport)
hideExpAttr= attribut("hideInExport","true");
else
hideExpAttr="";
*/
- return posAttr +urlAttr +vymLinkAttr +getLinkAttr() ;//+hideExpAttr;
+ return posAttr +getLinkAttr() ;//+hideExpAttr;
}
diff -r 7a71a914afdb -r 6d2b32f305f9 ornamentedobj.h
--- a/ornamentedobj.h Thu May 07 08:48:53 2009 +0000
+++ b/ornamentedobj.h Wed May 13 08:26:27 2009 +0000
@@ -11,8 +11,6 @@
- frame
- note
- references
- - URL
- -vymLink
- flags
- standard flags
- system flags
@@ -53,24 +51,9 @@
virtual void move2RelPos (QPointF); // move relativly to parent^
virtual void move2RelPos (double,double);
- virtual void setURL (QString);
- virtual QString getURL ();
-
- virtual void setVymLink (QString);
- virtual QString getVymLink ();
-
- virtual void setAttributes (const QList &al);
- virtual QList getAttributes ();
-
- virtual void clearStandardFlags();
- virtual void toggleStandardFlag(const QString &name);
- virtual void activateStandardFlag(const QString &name);
+ virtual void activateStandardFlag(Flag *flag);
virtual void deactivateStandardFlag(const QString &name);
- virtual bool isSetStandardFlag(const QString &name);
virtual QString getSystemFlagName (const QPointF &p);
- virtual bool isActiveFlag(const QString&); // check if flag is set
- virtual void updateSystemFlags();
- virtual void updateFlagsToolbar();
//virtual void getNoteFromTextEditor ();// FIXME-3 should move to vymview?!
virtual QString getOrnXMLAttr(); // get attributes for saveToDir
@@ -81,9 +64,6 @@
FlagRowObj *standardFlags; // Standard Flags
FrameObj *frame; // frame around object
QRectF ornamentsBBox; // bbox of flags and heading
- QString url; // url to external doc
- QString vymLink; // path to another map // FIXME-3 remove this
- QList attributes; // List with attributes
};
#endif
diff -r 7a71a914afdb -r 6d2b32f305f9 treeitem.cpp
--- a/treeitem.cpp Thu May 07 08:48:53 2009 +0000
+++ b/treeitem.cpp Wed May 13 08:26:27 2009 +0000
@@ -278,20 +278,72 @@
return headingColor;
}
-void TreeItem::setNote(const QString s)
+void TreeItem::setURL (const QString &u)
{
- note.setNote(s);
- // updateNoteFlag(); FIXME-2 needed?
- if (model)
- model->emitNoteHasChanged (this);
+ url=u;
+ if (!url.isEmpty())
+ systemFlags.activate ("system-url");
+ else
+ systemFlags.deactivate ("system-url");
+}
+
+QString TreeItem::getURL ()
+{
+ return url;
+}
+
+void TreeItem::setVymLink (const QString &vl)
+{
+ if (!vl.isEmpty())
+ {
+ // We need the relative (from loading)
+ // or absolute path (from User event)
+ // and build the absolute path.
+ // Note: If we have relative, use path of
+ // current map to build absolute path
+ QDir d(vl);
+ if (!d.path().startsWith ("/"))
+ {
+ QString p=model->getDestPath();
+ int i=p.findRev("/",-1);
+ d.setPath(p.left(i)+"/"+vl);
+ d.convertToAbs();
+ }
+ vymLink=d.path();
+ systemFlags.activate("system-vymLink");
+ }
+ else
+ {
+ systemFlags.deactivate("system-vymLink");
+ vymLink.clear();
+ }
+}
+
+QString TreeItem::getVymLink ()
+{
+ return vymLink;
+}
+
+void TreeItem::setNote(const QString &s)
+{
+ NoteObj n;
+ n.setNote(s);
+ setNoteObj (n,false);
+}
+
+void TreeItem::clearNote()
+{
+ note.clear();
+ systemFlags.deactivate ("system-note");
}
void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
{
note=n;
- // updateNoteFlag(); FIXME-2 needed?
- if (model && updateNoteEditor)
- model->emitNoteHasChanged (this);
+ if (!note.isEmpty() && !systemFlags.isActive ("system-note"))
+ systemFlags.activate ("system-note");
+ if (note.isEmpty() && systemFlags.isActive ("system-note"))
+ systemFlags.deactivate ("system-note");
}
QString TreeItem::getNote()
@@ -321,28 +373,26 @@
void TreeItem::activateStandardFlag (const QString &name)
{
- cout << "TI::activateStandardFlag "<activateStandardFlag (name);
+ model->emitDataHasChanged(this);
}
void TreeItem::deactivateStandardFlag (const QString &name)
{
- cout << "TI::deactivateStandardFlag "<deactivateStandardFlag (name);
+ model->emitDataHasChanged(this);
}
-void TreeItem::toggleStandardFlag(const QString &name)
+void TreeItem::deactivateAllStandardFlags ()
{
- cout << "TI::toggleStandardFlag "<emitDataHasChanged(this);
+}
+
+void TreeItem::toggleStandardFlag(const QString &name, FlagRow *master)
+{
+ standardFlags.toggle (name,master);
+ model->emitDataHasChanged(this);
}
bool TreeItem::isActiveStandardFlag (const QString &name)
@@ -350,6 +400,52 @@
return standardFlags.isActive (name);
}
+QStringList TreeItem::activeStandardFlagNames ()
+{
+ return standardFlags.activeFlagNames();
+}
+
+QStringList TreeItem::activeSystemFlagNames () //FIXME-1 missing: scrolled-tmp,hideInExport
+{
+ return systemFlags.activeFlagNames();
+}
+
+bool TreeItem::canMoveDown()
+{
+ switch (type)
+ {
+ case Undefined: return false;
+ case MapCenter:
+ case Branch:
+ if (!parentItem) return false;
+ if (parentItem->num (this) < parentItem->branchCount()-1)
+ return true;
+ else
+ return false;
+ break;
+ case Image: return false;
+ default: return false;
+ }
+}
+
+bool TreeItem::canMoveUp()
+{
+ switch (type)
+ {
+ case Undefined: return false;
+ case MapCenter:
+ case Branch:
+ if (!parentItem) return false;
+ if (parentItem->num (this) > 0)
+ return true;
+ else
+ return false;
+ break;
+ case Image: return false;
+ default: return false;
+ }
+}
+
void TreeItem::setID (const QString &s)
{
objID=s;
diff -r 7a71a914afdb -r 6d2b32f305f9 treeitem.h
--- a/treeitem.h Thu May 07 08:48:53 2009 +0000
+++ b/treeitem.h Wed May 13 08:26:27 2009 +0000
@@ -25,7 +25,8 @@
~TreeItem();
void init();
- virtual QString saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset);
+ virtual QString saveToDir (const QString &tmpdir=QString(),const
+ QString &prefix=QString(), const QPointF& offset=QPointF());
// General housekeeping
@@ -65,6 +66,7 @@
// Accessing data
virtual QVariant data(int column) const;
+
protected:
QColor headingColor;
public:
@@ -74,10 +76,26 @@
virtual void setHeadingColor(QColor color); //! Set color of heading. In BranchItem overloaded to update QGraphicsView
virtual QColor getHeadingColor(); //! Returns color of heading
+
+protected:
+ QString url;
+public:
+ void setURL (const QString &url); //! Set URL
+ QString getURL (); //! Get URL
+
+
+protected:
+ QString vymLink;
+public:
+ void setVymLink (const QString &url); //! Set URL
+ QString getVymLink (); //! Get URL
+
+
protected:
NoteObj note;
public:
- virtual void setNote(const QString s);
+ virtual void setNote(const QString &s);
+ virtual void clearNote();
virtual QString getNote();
virtual void setNoteObj(const NoteObj &, bool updateNoteEditor=true);
virtual NoteObj getNoteObj();
@@ -85,15 +103,27 @@
virtual QString getNoteASCII(); // returns note (ASCII)
virtual QString getNoteOpenDoc(); // returns note (OpenDoc)
+
protected:
FlagRow standardFlags;
+ FlagRow systemFlags;
public:
virtual void activateStandardFlag(const QString &flag);
virtual void deactivateStandardFlag(const QString &flag);
- virtual void toggleStandardFlag(const QString &flag);
+ virtual void deactivateAllStandardFlags();
+
+ /*! \brief Toggle a Flag
+ If master is not NULL,, only one Flag from FlagRow master may
+ be active simultanously, the others get deactivated.
+ */
+ virtual void toggleStandardFlag(const QString &flag, FlagRow *master=NULL);
virtual bool isActiveStandardFlag (const QString &flag);
+ virtual QStringList activeStandardFlagNames();
+ virtual QStringList activeSystemFlagNames();
+ virtual bool canMoveDown();
+ virtual bool canMoveUp();
protected:
QString objID; //! id set during load/save currently used for xLinks
diff -r 7a71a914afdb -r 6d2b32f305f9 version.h
--- a/version.h Thu May 07 08:48:53 2009 +0000
+++ b/version.h Wed May 13 08:26:27 2009 +0000
@@ -7,7 +7,7 @@
#define __VYM_VERSION "1.13.0"
//#define __VYM_CODENAME "Codename: RC-1"
#define __VYM_CODENAME "Codename: development version, not for production!"
-#define __VYM_BUILD_DATE "2009-05-01"
+#define __VYM_BUILD_DATE "2009-05-13"
bool checkVersion(const QString &);
diff -r 7a71a914afdb -r 6d2b32f305f9 vym.pro
--- a/vym.pro Thu May 07 08:48:53 2009 +0000
+++ b/vym.pro Wed May 13 08:26:27 2009 +0000
@@ -4,6 +4,12 @@
CONFIG += qt warn_on release debug
CONFIG += x86 ppc
+
+include (/data/qtanimationframework-2.3-opensource/src/gui-animation.pri)
+include (/data/qtanimationframework-2.3-opensource/src/corelib-animation.pri)
+include (/data/qtanimationframework-2.3-opensource/src/qtanimationframework.pri)
+
+
TRANSLATIONS += lang/vym_de.ts
TRANSLATIONS += lang/vym_en.ts
TRANSLATIONS += lang/vym_es.ts
@@ -29,9 +35,9 @@
aboutdialog.h \
animpoint.h \
attribute.h \
- attributedelegate.h\
- attributedialog.h \
- attributewidget.h \
+# attributedelegate.h\
+# attributedialog.h \
+# attributewidget.h \
branchitem.h \
branchobj.h \
branchpropwindow.h\
@@ -42,6 +48,7 @@
extrainfodialog.h \
file.h \
findwindow.h \
+ flag.h \
flagobj.h \
flagrowobj.h \
flagrow.h \
@@ -89,9 +96,9 @@
aboutdialog.cpp \
animpoint.cpp \
attribute.cpp \
- attributedelegate.cpp \
- attributedialog.cpp \
- attributewidget.cpp \
+# attributedelegate.cpp \
+# attributedialog.cpp \
+# attributewidget.cpp \
branchitem.cpp \
branchobj.cpp \
branchpropwindow.cpp \
@@ -102,6 +109,7 @@
extrainfodialog.cpp \
file.cpp \
findwindow.cpp \
+ flag.cpp \
flagobj.cpp \
flagrow.cpp \
flagrowobj.cpp \
diff -r 7a71a914afdb -r 6d2b32f305f9 vymmodel.cpp
--- a/vymmodel.cpp Thu May 07 08:48:53 2009 +0000
+++ b/vymmodel.cpp Wed May 13 08:26:27 2009 +0000
@@ -44,8 +44,6 @@
extern QDir lastImageDir;
extern QDir lastFileDir;
-extern FlagRowObj *standardFlagsDefault;
-
extern Settings settings;
@@ -234,7 +232,7 @@
xml.incIndent();
// Find the used flags while traversing the tree // FIXME-2 this can be done local to vymmodel maybe...
- standardFlagsDefault->resetUsedCounter();
+ //FIXME-2 not used any longer: standardFlagsDefault->resetUsedCounter();
// Reset the counters before saving
// TODO constr. of FIO creates lots of objects, better do this in some other way...
@@ -267,8 +265,7 @@
xml.decIndent();
s+=xml.endElement("vymmap");
- if (writeflags)
- standardFlagsDefault->saveToDir (tmpdir+"/flags/","",writeflags);
+ // FIXME-2 if (writeflags) standardFlagsDefault->saveToDir (tmpdir+"/flags/","",writeflags);
return s;
}
@@ -1514,14 +1511,11 @@
"setHeading (\""+s+"\")",
QString("Set heading of %1 to \"%2\"").arg(getObjectName(selbi)).arg(s) );
selbi->setHeading(s );
- QModelIndex ix2=index (selbi);
- emit (dataChanged ( ix2,ix2));
- /* FIXME-3 testing only
- */
+ emitDataHasChanged ( selbi); //FIXME-3 maybe emit signal from TreeItem?
reposition();
// selection.update(); //FIXME-4
- emitShowSelection();
+ updateSelection();
}
}
@@ -1597,38 +1591,33 @@
// which is (still) needed to create MapCenters
}
-void VymModel::setURL(const QString &url) //FIXME-2
-{
-/*
- BranchObj *bo=getSelectedBranch();
- if (bo)
+void VymModel::setURL(const QString &url)
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti)
{
- QString oldurl=bo->getURL();
- bo->setURL (url);
+ QString oldurl=selti->getURL();
+ selti->setURL (url);
saveState (
- bo,
+ selti,
QString ("setURL (\"%1\")").arg(oldurl),
- bo,
+ selti,
QString ("setURL (\"%1\")").arg(url),
- QString ("set URL of %1 to %2").arg(getObjectName(bo)).arg(url)
+ QString ("set URL of %1 to %2").arg(getObjectName(selti)).arg(url)
);
- updateActions();
reposition();
- selection.update();
+ emitDataHasChanged (selti);
emitShowSelection();
}
-*/
}
-QString VymModel::getURL() //FIXME-2
-{
-/*
- BranchObj *bo=getSelectedBranch();
- if (bo)
- return bo->getURL();
- else
- return "";
-*/
+QString VymModel::getURL()
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti)
+ return selti->getURL();
+ else
+ return QString();
}
QStringList VymModel::getURLs() // FIXME-1 first, next moved to vymmodel
@@ -1864,20 +1853,19 @@
}
-void VymModel::copy() //FIXME-2
-{
-/*
- LinkableMapObj *sel=getSelectedLMO();
- if (sel &&
- (selectionType() == TreeItem::Branch ||
- selectionType() == TreeItem::MapCenter ||
- selectionType() == TreeItem::Image ))
+void VymModel::copy()
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti &&
+ (selti->getType() == TreeItem::Branch ||
+ selti->getType() == TreeItem::MapCenter ||
+ selti->getType() == TreeItem::Image ))
{
if (redosAvail == 0)
{
// Copy to history
- QString s=getSelectString(sel);
- saveState (PartOfMap, s, "nop ()", s, "copy ()","Copy selection to clipboard",sel );
+ QString s=getSelectString(selti);
+ saveState (PartOfMap, s, "nop ()", s, "copy ()","Copy selection to clipboard",selti );
curClipboard=curStep;
}
@@ -1889,13 +1877,11 @@
clipboardEmpty=false;
updateActions();
}
-*/
}
-void VymModel::pasteNoSave(const int &n) //FIXME-2
-{
-/*
+void VymModel::pasteNoSave(const int &n)
+{
bool old=blockSaveState;
blockSaveState=true;
bool zippedOrg=zipped;
@@ -1910,87 +1896,59 @@
load (clipboardDir+"/"+clipboardFile,ImportAdd, VymMap);
zipped=zippedOrg;
blockSaveState=old;
-*/
}
-void VymModel::paste() //FIXME-2
+void VymModel::paste()
{
-/*
- BranchObj *sel=getSelectedBranch();
- if (sel)
+ BranchItem *selbi=getSelectedBranchItem();
+ if (selbi)
{
saveStateChangingPart(
- sel,
- sel,
+ selbi,
+ selbi,
QString ("paste (%1)").arg(curClipboard),
- QString("Paste to %1").arg( getObjectName(sel))
+ QString("Paste to %1").arg( getObjectName(selbi))
);
pasteNoSave(0);
reposition();
}
-*/
}
-void VymModel::cut() //FIXME-2
-{
-/*
- LinkableMapObj *sel=getSelectedLMO();
- if ( sel && (selectionType() == TreeItem::Branch ||
- selectionType()==TreeItem::MapCenter ||
- selectionType()==TreeItem::Image))
+void VymModel::cut()
+{
+ TreeItem *selti=getSelectedItem();
+ if ( selti && (selti->isBranchLikeType() ||selti->getType()==TreeItem::Image))
{
-*/
- /* No savestate! savestate is called in cutNoSave
- saveStateChangingPart(
- sel->getParObj(),
- sel,
- "cut ()",
- QString("Cut %1").arg(getObjectName(sel ))
- );
- */
-/*
copy();
deleteSelection();
reposition();
}
-*/}
-
-void VymModel::moveBranchUp() //FIXME-2
-{
-/*
- BranchObj* bo=getSelectedBranch();
- BranchObj* par;
- if (bo)
+}
+
+void VymModel::moveUp()
+{
+ BranchItem *selbi=getSelectedBranchItem();
+ if (selbi)
{
- if (!bo->canMoveBranchUp()) return;
- par=(BranchObj*)(bo->getParObj());
- BranchObj *obo=par->moveBranchUp (bo); // bo will be the one below selection
- saveState (getSelectString(bo),"moveBranchDown ()",getSelectString(obo),"moveBranchUp ()",QString("Move up %1").arg(getObjectName(bo)));
- reposition();
- //FIXME-3 VM needed? scene()->update();
- selection.update();
- emitShowSelection();
+ if (!selbi->canMoveUp()) return;
+ QString oldsel=getSelectString();
+ if (relinkBranch (selbi,(BranchItem*)selbi->parent(),selbi->num()-1) )
+
+ saveState (getSelectString(),"moveDown ()",oldsel,"moveUp ()",QString("Move up %1").arg(getObjectName(selbi)));
}
- */
}
-void VymModel::moveBranchDown() //FIXME-2
-{
-/*
- BranchObj* bo=getSelectedBranch();
- BranchObj* par;
- if (bo)
+void VymModel::moveDown()
+{
+ BranchItem *selbi=getSelectedBranchItem();
+ if (selbi)
{
- if (!bo->canMoveBranchDown()) return;
- par=(BranchObj*)(bo->getParObj());
- BranchObj *obo=par->moveBranchDown(bo); // bo will be the one above selection
- saveState(getSelectString(bo),"moveBranchUp ()",getSelectString(obo),"moveBranchDown ()",QString("Move down %1").arg(getObjectName(bo)));
- reposition();
- //FIXME-3 VM needed? scene()->update();
- selection.update();
- emitShowSelection();
- }
-*/
+ if (!selbi->canMoveDown()) return;
+ QString oldsel=getSelectString();
+ if ( relinkBranch (selbi,(BranchItem*)selbi->parent(),selbi->num()+1) )
+
+ saveState (getSelectString(),"moveUp ()",oldsel,"moveDown ()",QString("Move down %1").arg(getObjectName(selbi)));
+ }
}
void VymModel::sortChildren() // FIXME-2 not implemented yet
@@ -2084,7 +2042,6 @@
rootItem->appendChild (mci);
endInsertRows();
- emit (newChildObject (parix));
emit (layoutChanged() );
// Create MapObj
@@ -2162,7 +2119,6 @@
parbi->insertBranch(n,newbi);
endInsertRows ();
}
- emit (newChildObject (parix));
emit (layoutChanged() );
// save scroll state. If scrolled, automatically select
@@ -2251,10 +2207,11 @@
return NULL;
}
-BranchItem* VymModel::relinkBranch (BranchItem *branch, BranchItem *dst, int pos)
+bool VymModel::relinkBranch (BranchItem *branch, BranchItem *dst, int pos)
{
if (branch && dst)
{
+ cout << "VM::relinkBranch "<getHeadingStd()<<" to "<getHeadingStd()<<" at "<parent();
// Remove at current position
@@ -2276,8 +2233,11 @@
branch->getLMO()->setParObj(dst->getLMO()); //FIXME-5 update parObj in View
emit (layoutChanged() );
+ reposition(); // both for moveUp/Down and relinking
select (branch);
+ return true;
}
+ return false;
}
void VymModel::deleteSelection()
@@ -2393,21 +2353,23 @@
if (bi->isScrolled()) return false;
if (bi->branchCount()==0) return false;
if (bi->depth()==0) return false;
- QString u,r;
- r="scroll";
- u="unscroll";
- /* FIXME-3 no savestate yet
- saveState(
- bo,
- QString ("%1 ()").arg(u),
- bo,
- QString ("%1 ()").arg(r),
- QString ("%1 %2").arg(r).arg(getObjectName(bo))
- );
- */
- bi->toggleScroll();
- mapScene->update(); //Needed for _quick_ update
- return true;
+ if (bi->toggleScroll())
+ {
+ QString u,r;
+ r="scroll";
+ u="unscroll";
+ saveState(
+ bi,
+ QString ("%1 ()").arg(u),
+ bi,
+ QString ("%1 ()").arg(r),
+ QString ("%1 %2").arg(r).arg(getObjectName(bi))
+ );
+ emitDataHasChanged(bi);
+ updateSelection();
+ mapScene->update(); //Needed for _quick_ update, even in 1.13.x //FIXME-3 force update via signal...
+ return true;
+ }
}
return false;
}
@@ -2423,32 +2385,34 @@
QString u,r;
u="scroll";
r="unscroll";
- /* FIXME-3 no savestate yet
saveState(
- bo,
+ bi,
QString ("%1 ()").arg(u),
- bo,
+ bi,
QString ("%1 ()").arg(r),
- QString ("%1 %2").arg(r).arg(getObjectName(bo))
+ QString ("%1 %2").arg(r).arg(getObjectName(bi))
);
- */
bi->toggleScroll();
- mapScene->update(); // Needed for _quick_ update
+ emitDataHasChanged(bi);
+ updateSelection();
+
+ mapScene->update(); //Needed for _quick_ update, even in 1.13.x //FIXME-3 force update via signal...
return true;
}
return false;
}
-void VymModel::toggleScroll()
+void VymModel::toggleScroll()
{
BranchItem *bi=(BranchItem*)getSelectedBranchItem();
- if (bi && bi->getType()==TreeItem::Branch )
+ if (bi && bi->isBranchLikeType() )
{
if (bi->isScrolled())
unscrollBranch (bi);
else
scrollBranch (bi);
}
+ // saveState is called in above functions
}
void VymModel::unscrollChildren() // FIXME-2 first, next moved to vymmodel
@@ -2473,9 +2437,8 @@
emit (expandAll() );
}
-void VymModel::toggleStandardFlag (const QString &name)
-{
- cout << "VM::toggleStandardFlag "<toggleStandardFlag (name); //FIXME-0,mainWindow->useFlagGroups());
- //FIXME-0 model->updateSelection(); // geometry has changed
+ bi->toggleStandardFlag (name, master);
+ reposition();
+ updateSelection();
}
}
@@ -2568,28 +2532,25 @@
-void VymModel::editURL() //FIXME-2
-{
-/*
- BranchObj *bo=getSelectedBranch();
- if (bo)
+void VymModel::editURL()
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti)
{
bool ok;
QString text = QInputDialog::getText(
"VYM", tr("Enter URL:"), QLineEdit::Normal,
- bo->getURL(), &ok, NULL);
+ selti->getURL(), &ok, NULL);
if ( ok)
// user entered something and pressed OK
setURL(text);
}
-*/
}
-void VymModel::editLocalURL() //FIXME-2
-{
-/*
- BranchObj *bo=getSelectedBranch();
- if (bo)
+void VymModel::editLocalURL()
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti)
{
QStringList filters;
filters <<"All files (*)";
@@ -2601,8 +2562,8 @@
fd->setFilters (filters);
fd->setCaption(vymName+" - " +tr("Set URL to a local file"));
fd->setDirectory (lastFileDir);
- if (! bo->getVymLink().isEmpty() )
- fd->selectFile( bo->getURL() );
+ if (! selti->getVymLink().isEmpty() )
+ fd->selectFile( selti->getURL() );
fd->show();
if ( fd->exec() == QDialog::Accepted )
@@ -2611,49 +2572,42 @@
setURL (fd->selectedFile() );
}
}
- */
}
-void VymModel::editHeading2URL() //FIXME-2
-{
-/*
- BranchObj *bo=getSelectedBranch();
- if (bo)
- setURL (bo->getHeading());
-*/
+void VymModel::editHeading2URL()
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti)
+ setURL (selti->getHeading());
}
-void VymModel::editBugzilla2URL() //FIXME-2
-{
-/*
- BranchObj *bo=getSelectedBranch();
- if (bo)
+void VymModel::editBugzilla2URL()
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti)
{
- QString url= "https://bugzilla.novell.com/show_bug.cgi?id="+bo->getHeading();
+ QString url= "https://bugzilla.novell.com/show_bug.cgi?id="+selti->getHeading();
setURL (url);
}
-*/
}
-void VymModel::editFATE2URL() //FIXME-2
-{
-/*
- BranchObj *bo=getSelectedBranch();
- if (bo)
+void VymModel::editFATE2URL()
+{
+ TreeItem *selti=getSelectedItem();
+ if (selti)
{
- QString url= "http://keeper.suse.de:8080/webfate/match/id?value=ID"+bo->getHeading();
+ QString url= "http://keeper.suse.de:8080/webfate/match/id?value=ID"+selti->getHeading();
saveState(
- bo,
- "setURL (\""+bo->getURL()+"\")",
- bo,
+ selti,
+ "setURL (\""+selti->getURL()+"\")",
+ selti,
"setURL (\""+url+"\")",
- QString("Use heading of %1 as link to FATE").arg(getObjectName(bo))
+ QString("Use heading of %1 as link to FATE").arg(getObjectName(selti))
);
- bo->setURL (url);
- updateActions();
+ selti->setURL (url);
+ // FIXME-4 updateActions();
}
-*/
}
void VymModel::editVymLink()
@@ -2693,7 +2647,7 @@
BranchItem *bi=getSelectedBranchItem();
if (bi)
{
- bi->getBranchObj()->setVymLink(s); //FIXME-3 check getBO
+ bi->setVymLink(s);
reposition();
updateActions();
//selection.update();
@@ -2708,16 +2662,14 @@
{
saveState(
bi,
- "setVymLink (\""+bi->getBranchObj()->getVymLink()+"\")", //FIXME-3 check getBO
-
+ "setVymLink (\""+bi->getVymLink()+"\")",
bi,
"setVymLink (\"\")",
QString("Unset vymlink of %1").arg(getObjectName(bi))
);
- bi->getBranchObj()->setVymLink ("" ); //FIXME-3 check getBO
+ bi->setVymLink ("" );
updateActions();
reposition();
- // FIXME-3 VM needed? scene()->update();
}
}
@@ -2725,7 +2677,7 @@
{
BranchItem *bi=getSelectedBranchItem();
if (bi)
- return bi->getBranchObj()->getVymLink(); //FIXME-3 check getBO here...
+ return bi->getVymLink();
else
return "";
@@ -2907,7 +2859,7 @@
}
}
/////////////////////////////////////////////////////////////////////
- } else /*if (com=="clearFlags") // FIXME-2
+ } else if (com=="clearFlags")
{
if (!selti )
{
@@ -2917,11 +2869,10 @@
parser.setError (Aborted,"Type of selection is not a branch");
} else if (parser.checkParCount(0))
{
- selb->clearStandardFlags();
- selb->updateFlagsToolbar();
+ selbi->deactivateAllStandardFlags();
}
/////////////////////////////////////////////////////////////////////
- } else */ if (com=="colorBranch")
+ } else if (com=="colorBranch")
{
if (!selti)
{
@@ -3172,7 +3123,7 @@
if (ok) loadFloatImageInt (s);
}
/////////////////////////////////////////////////////////////////////
- } else if (com=="moveBranchUp")
+ } else if (com=="moveUp")
{
if (!selti )
{
@@ -3182,10 +3133,10 @@
parser.setError (Aborted,"Type of selection is not a branch");
} else if (parser.checkParCount(0))
{
- moveBranchUp();
+ moveUp();
}
/////////////////////////////////////////////////////////////////////
- } else if (com=="moveBranchDown")
+ } else if (com=="moveDown")
{
if (!selti )
{
@@ -3195,7 +3146,7 @@
parser.setError (Aborted,"Type of selection is not a branch");
} else if (parser.checkParCount(0))
{
- moveBranchDown();
+ moveDown();
}
/////////////////////////////////////////////////////////////////////
} else if (com=="move")
@@ -3624,7 +3575,7 @@
}
}
/////////////////////////////////////////////////////////////////////
- else /* FIXME-2 if (com=="setFlag")
+ else if (com=="setFlag")
{
if (!selti )
{
@@ -3636,13 +3587,10 @@
{
s=parser.parString(ok,0);
if (ok)
- {
- selb->activateStandardFlag(s);
- selb->updateFlagsToolbar();
- }
+ selbi->activateStandardFlag(s);
}
/////////////////////////////////////////////////////////////////////
- } else */ /* FIXME-2 if (com=="setFrameType")
+ } else /* FIXME-2 if (com=="setFrameType")
{
if (!selti )
{
@@ -3670,7 +3618,7 @@
sortChildren();
}
/////////////////////////////////////////////////////////////////////
- } else /* FIXME-2 if (com=="toggleFlag")
+ } else if (com=="toggleFlag")
{
if (!selti )
{
@@ -3682,13 +3630,10 @@
{
s=parser.parString(ok,0);
if (ok)
- {
selbi->toggleStandardFlag(s);
- selb->updateFlagsToolbar();
- }
}
/////////////////////////////////////////////////////////////////////
- } else */ if (com=="unscroll")
+ } else if (com=="unscroll")
{
if (!selti)
{
@@ -3715,9 +3660,9 @@
unscrollChildren ();
}
/////////////////////////////////////////////////////////////////////
- } else /* FIXME-2 if (com=="unsetFlag")
+ } else if (com=="unsetFlag")
{
- if (selection.isEmpty() )
+ if (!selti)
{
parser.setError (Aborted,"Nothing selected");
} else if (! selbi )
@@ -3727,12 +3672,9 @@
{
s=parser.parString(ok,0);
if (ok)
- {
- selb->deactivateStandardFlag(s);
- selb->updateFlagsToolbar();
- }
+ selbi->deactivateStandardFlag(s);
}
- } else */
+ } else
parser.setError (Aborted,"Unknown command");
// Any errors?
@@ -3946,18 +3888,20 @@
void VymModel::updateNoteFlag()
{
setChanged();
- cout << "VM::updateNoteFlag()\n";
- /* FIXME-1 modify note flag
- BranchObj *bo=getSelectedBranch();
- if (bo)
+ TreeItem *selti=getSelectedItem();
+ if (selti)
{
- bo->updateNoteFlag();
- mainWindow->updateActions();
- }
- */
+ if (textEditor->isEmpty())
+ selti->clearNote();
+ else
+ selti->setNote (textEditor->getText());
+ emitDataHasChanged(selti);
+ updateSelection();
+
+ }
}
-void VymModel::updateRelPositions() //FIXME-2 VM should have no need to updateRelPos
+void VymModel::updateRelPositions() //FIXME-3 VM should have no need to updateRelPos
{
//cout << "VM::updateRelPos...\n";
for (int i=0; ibranchCount(); i++)
@@ -4694,7 +4638,7 @@
void VymModel::emitDataHasChanged (TreeItem *ti)
{
QModelIndex ix=index(ti);
- emit (dataHasChanged (ix) );
+ emit (dataChanged (ix,ix) );
}
diff -r 7a71a914afdb -r 6d2b32f305f9 vymmodel.h
--- a/vymmodel.h Thu May 07 08:48:53 2009 +0000
+++ b/vymmodel.h Wed May 13 08:26:27 2009 +0000
@@ -277,8 +277,8 @@
void paste(); //!< Paste clipboard to branch and backup
void cut(); //!< Cut to clipboard (and copy)
- void moveBranchUp(); //!< Move branch up
- void moveBranchDown(); //!< Move branch down
+ void moveUp(); //!< Move branch up
+ void moveDown(); //!< Move branch down
void sortChildren(); //!< Sort children lexically
// The create methods are used to quickly parse a XML file
@@ -317,7 +317,14 @@
*/
BranchItem* addNewBranch(int pos);
BranchItem* addNewBranchBefore(); //!< Insert branch between selection and its parent
- BranchItem* relinkBranch (BranchItem* branch, BranchItem* dst, int pos =-1); //! Relink branch to dst at position pos
+ /*! \brief Relink a branch to a new destination dst
+ Relinks branch to dst at branch position pos. There is no saveState
+ here, as for example moveUp or moving in MapEditor have
+ different needs to call saveState
+ Returns true if relinking was successful.
+ */
+ bool relinkBranch (BranchItem* branch, BranchItem* dst, int pos =-1);
+
void deleteSelection(); //!< Delete selection
void deleteKeepChildren(); //!< remove branch, but keep children
void deleteChildren(); //!< keep branch, but remove children
@@ -333,7 +340,7 @@
void expandAll();
public:
- void toggleStandardFlag (const QString &name);
+ void toggleStandardFlag (const QString &name, FlagRow *master=NULL);
void addFloatImage(const QPixmap &img);
void colorBranch(QColor);
@@ -426,7 +433,6 @@
signals:
void noteHasChanged (QModelIndex ix);
- void dataHasChanged (QModelIndex ix); //FIXME-3 necessary? There is dataChanged in AbstractModel
void newChildObject(QModelIndex ix);
private:
@@ -477,7 +483,7 @@
uint animationTicks;
uint animationInterval;
int timerId; // animation timer
- QList animObjList;// list with animated objects
+ QList animObjList;// list with animated objects //FIXME-2 should go to MapEditor
private slots:
void animate(); //!< Called by timer to animate stuff
diff -r 7a71a914afdb -r 6d2b32f305f9 vymview.cpp
--- a/vymview.cpp Thu May 07 08:48:53 2009 +0000
+++ b/vymview.cpp Wed May 13 08:26:27 2009 +0000
@@ -49,12 +49,6 @@
model, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
mapEditor,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
- /*
- connect (
- model, SIGNAL (newChildObject(QModelIndex) ),
- this,SLOT (updateChilds (QModelIndex) ) );
-*/
-
connect (
model, SIGNAL (noteHasChanged(QModelIndex) ),
mainWindow, SLOT (updateNoteEditor (QModelIndex) ) );
@@ -91,13 +85,6 @@
return NULL;
}
-
-void VymView::updateChilds (QModelIndex ix) //FIXME-4 not needed?
-{
- cout << "VV::updateChilds \n";
- //treeview->setExpanded (ix,true); // This is expensive...
-}
-
void VymView::changeSelection (const QItemSelection &newsel, const QItemSelection &oldsel)
{
/*
@@ -112,6 +99,7 @@
// Notify mainwindow to update satellites like NoteEditor, if needed (model==currenModel...)
mainWindow->changeSelection (model,newsel,oldsel); // FIXME-3 maybe connect VymModel <-> MainWindow directly?
+ showSelection();
}
void VymView::expandAll()
@@ -128,7 +116,7 @@
);
LinkableMapObj* lmo=model->getSelectedLMO();
- if (lmo)
- mapEditor->ensureVisible(lmo->getBBox() );
+ if (lmo)
+ mapEditor->setScrollBarPosTarget (lmo->getBBox() );
}
diff -r 7a71a914afdb -r 6d2b32f305f9 vymview.h
--- a/vymview.h Thu May 07 08:48:53 2009 +0000
+++ b/vymview.h Wed May 13 08:26:27 2009 +0000
@@ -17,7 +17,6 @@
QItemSelectionModel* selectionModel();
public slots:
- void updateChilds (QModelIndex ix);
void changeSelection (const QItemSelection &newSel, const QItemSelection &delSel);
void expandAll ();
void showSelection ();