diff -r 4244bcd9e6ea -r 325958acb69b mapeditor.cpp --- a/mapeditor.cpp Thu Sep 22 12:56:05 2005 +0000 +++ b/mapeditor.cpp Mon Oct 10 11:20:25 2005 +0000 @@ -37,35 +37,15 @@ #include "editxlinkdialog.h" #include "settings.h" -#include "icons/flag-note.xpm" -#include "icons/flag-url.xpm" -#include "icons/flag-vymlink.xpm" -#include "icons/flag-scrolled-right.xpm" -#include "icons/flag-tmpUnscrolled-right.xpm" -#include "icons/flag-questionmark.xpm" -#include "icons/flag-exclamationmark.xpm" -#include "icons/flag-hook-green.xpm" -#include "icons/flag-cross-red.xpm" -#include "icons/flag-stopsign.xpm" -#include "icons/flag-smiley-good.xpm" -#include "icons/flag-smiley-sad.xpm" -#include "icons/flag-clock.xpm" -#include "icons/flag-lamp.xpm" -#include "icons/flag-arrow-up.xpm" -#include "icons/flag-arrow-down.xpm" -#include "icons/flag-thumb-up.xpm" -#include "icons/flag-thumb-down.xpm" -#include "icons/flag-heart.xpm" -#include "icons/flag-flash.xpm" -#include "icons/flag-lifebelt.xpm" extern TextEditor *textEditor; extern int statusbarTime; extern Main *mainWindow; extern QString tmpVymDir; +extern QString clipboardDir; +extern bool clipboardEmpty; extern FlagRowObj *systemFlagsDefault; extern FlagRowObj *standardFlagsDefault; -extern MapEditor *clipboardME; extern QPtrList actionListBranches; @@ -155,6 +135,7 @@ mapCanvas = new QCanvas(1000,800); mapCanvas->setAdvancePeriod(30); + mapCanvas->setBackgroundColor (white); setCanvas (mapCanvas); @@ -162,147 +143,11 @@ setVScrollBarMode ( QScrollView::AlwaysOn ); setHScrollBarMode ( QScrollView::AlwaysOn ); - // Now create the _global_ system flags _once_: - // (Later all OrnamentedObj copy from this - // and set their own canvas) - if (!systemFlagsDefault) - { - systemFlagsDefault = new FlagRowObj (mapCanvas); - systemFlagsDefault->setVisibility (false); - systemFlagsDefault->setName ("systemFlagsDef"); - - FlagObj *fo = new FlagObj (mapCanvas); - fo->load(QPixmap(flag_note_xpm)); - fo->setName("note"); - fo->setToolTip(tr("Note","Systemflag")); - systemFlagsDefault->addFlag (fo); // makes deep copy - - fo->load(QPixmap(flag_url_xpm)); - fo->setName("url"); - fo->setToolTip(tr("WWW Document (external)","Systemflag")); - systemFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_vymlink_xpm)); - fo->setName("vymLink"); - fo->setToolTip(tr("Link to another vym map","Systemflag")); - systemFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_scrolled_right_xpm)); - fo->setName("scrolledright"); - fo->setToolTip(tr("subtree is scrolled","Systemflag")); - systemFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_tmpUnscrolled_right_xpm)); - fo->setName("tmpUnscrolledright"); - fo->setToolTip(tr("subtree is temporary scrolled","Systemflag")); - systemFlagsDefault->addFlag (fo); - delete (fo); - } - if (!standardFlagsDefault) - { - standardFlagsDefault = new FlagRowObj (mapCanvas); - standardFlagsDefault->setVisibility (false); - standardFlagsDefault->setName ("standardFlagsDef"); - - FlagObj *fo = new FlagObj (mapCanvas); - fo->load(QPixmap(flag_exclamationmark_xpm)); - fo->setName ("exclamationmark"); - fo->setGroup("standard-mark"); - fo->setToolTip(tr("Take care!","Standardflag")); - standardFlagsDefault->addFlag (fo); // makes deep copy - - fo->load(QPixmap(flag_questionmark_xpm)); - fo->setName("questionmark"); - fo->setGroup("standard-mark"); - fo->setToolTip(tr("Really?","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_hook_green_xpm)); - fo->setName("hook-green"); - fo->setGroup("standard-hook"); - fo->setToolTip(tr("ok!","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_cross_red_xpm)); - fo->setName("cross-red"); - fo->setGroup("standard-hook"); - fo->setToolTip(tr("Not ok!","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_stopsign_xpm)); - fo->setName("stopsign"); - fo->setToolTip(tr("This won't work!","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_smiley_good_xpm)); - fo->setName("smiley-good"); - fo->setGroup("standard-smiley"); - fo->setToolTip(tr("Good","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_smiley_sad_xpm)); - fo->setName("smiley-sad"); - fo->setGroup("standard-smiley"); - fo->setToolTip(tr("Bad","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_clock_xpm)); - fo->setName("clock"); - fo->setToolTip(tr("Time critical","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_lamp_xpm)); - fo->setName("lamp"); - fo->setToolTip(tr("Idea!","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_arrow_up_xpm)); - fo->setName("arrow-up"); - fo->setGroup("standard-arrow"); - fo->setToolTip(tr("Important","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_arrow_down_xpm)); - fo->setName("arrow-down"); - fo->setGroup("standard-arrow"); - fo->setToolTip(tr("Unimportant","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_thumb_up_xpm)); - fo->setName("thumb-up"); - fo->setGroup("standard-thumb"); - fo->setToolTip(tr("I like this","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_thumb_down_xpm)); - fo->setName("thumb-down"); - fo->setGroup("standard-thumb"); - fo->setToolTip(tr("I like this","Standardflag")); - fo->setToolTip(tr("I do not like this","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_heart_xpm)); - fo->setName("heart"); - fo->setToolTip(tr("I just love... ","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_flash_xpm)); - fo->setName("flash"); - fo->setToolTip(tr("Dangerous","Standardflag")); - standardFlagsDefault->addFlag (fo); - - fo->load(QPixmap(flag_lifebelt_xpm)); - fo->setName("lifebelt"); - fo->setToolTip(tr("This will help","Standardflag")); - standardFlagsDefault->addFlag (fo); - delete (fo); - - } - mapCenter = new MapCenterObj(mapCanvas); mapCenter->setVisibility (true); mapCenter->setMapEditor (this); mapCenter->setHeading (tr("New Map","Heading of mapcenter in new map")); + mapCenter->move(mapCanvas->width()/2-mapCenter->width()/2,mapCanvas->height()/2-mapCenter->width()/2); printer=NULL; @@ -315,7 +160,6 @@ defXLinkColor=QColor (180,180,180); linkcolorhint=DefaultColor; linkstyle=StylePolyParabel; - mapCanvas->setBackgroundColor (white); // Create bitmap cursors, patform dependant #if defined(Q_OS_MACX) @@ -468,6 +312,7 @@ mapCanvas->resize (cw,ch); if ( (dx!=0) || (dy!=0) ) { + cout << "ME:: canvas="<moveAllBy(dx,dy); mapCenter->reposition(); @@ -495,16 +340,6 @@ removeDir (QDir(tmpMapDir)); } - -void MapEditor::makeSubDirs(const QString &s) -{ - QDir d(s); - d.mkdir(s); - d.mkdir ("images"); - d.mkdir ("flags"); -} - - QString MapEditor::saveToDir(const QString &tmpdir, const QString &prefix, bool writeflags, const QPoint &offset, LinkableMapObj *saveSelection) { // tmpdir temporary directory to which data will be written @@ -512,8 +347,6 @@ // writeflags Only write flags for "real" save of map, not undo // offset offset of bbox of whole map in canvas. // Needed for XML export - // completeMap if false, only vympart will be written, without - // mapcenter // Save Header QString ls; @@ -555,6 +388,9 @@ // Find the used flags while traversing the tree standardFlagsDefault->resetUsedCounter(); + // Reset the counters before saving + FloatImageObj (mapCanvas).resetSaveCounter(); + // Build xml recursivly if (!saveSelection) s+=mapCenter->saveToDir(tmpdir,prefix,writeflags,offset); @@ -562,8 +398,10 @@ { if ( typeid(*saveSelection) == typeid(BranchObj) ) s+=((BranchObj*)(saveSelection))->saveToDir(tmpdir,prefix,offset); - else - if (selection && typeid(*selection)==typeid(BranchObj)) + else if ( typeid(*saveSelection) == typeid(FloatImageObj) ) + s+=((FloatImageObj*)(saveSelection))->saveToDir(tmpdir,prefix,offset); + + else if (selection && typeid(*selection)==typeid(BranchObj)) // This is used if selected branch is saved from mainwindow s+=((BranchObj*)selection)->saveToDir(tmpdir,prefix,offset); } @@ -921,7 +759,7 @@ return destPath; } -int MapEditor::load (QString &fname, const LoadMode &lmode) +int MapEditor::load (QString fname, LoadMode lmode) { // Finish open lineEdits if (lineedit) finishedLineEditNoSave(); @@ -1394,59 +1232,27 @@ if (selection) { - if (typeid(*selection) == typeid(BranchObj) ) + // write to directory + QString clipfile="part"; + QString saveFile=saveToDir (fileDir,clipfile+"-",true,QPoint(),selection); + QFile file; + + file.setName ( clipboardDir + "/"+clipfile+".xml"); + if ( !file.open( IO_WriteOnly ) ) { - BranchObj* to; - BranchObj* from; - clipboardME->clear(); - clipboardME->getMapCenter()->addBranch(); - to=clipboardME->getMapCenter()->getLastBranch(); - if (to) - { - from=(BranchObj*)selection; - to->copy(from); - - // keep position relative to parent - to->move2RelPos ( from->getRelPos()); - - // select data in clipboard - // clipboardME->select ("bo:0"); - - // repositioning makes testing nicer, - // but is not needed usually: - if (clipboardME->isVisible()) - clipboardME->getMapCenter()->reposition(); - else - clipboardME->hide(); - } - } - /* FIXME rewrite this using import/export - Currently there is a bug which would erase note, if - branchobj in clipboard is selected... - if (typeid(*selection) == typeid(FloatImageObj) ) - { - FloatImageObj* to; - FloatImageObj* from; - clipboardME->clear(); - clipboardME->getMapCenter()->addFloatImage(); - to=clipboardME->getMapCenter()->getLastFloatImage(); - if (to) - { - from=(FloatImageObj*)selection; - to->copy(from); - - // select data in clipboard - clipboardME->select ("fi:0"); - - // repositioning makes testing nicer, - // but is not needed usually: - if (clipboardME->isVisible()) - clipboardME->getMapCenter()->reposition(); - else - clipboardME->hide(); - } - } - */ + // This should neverever happen + QMessageBox::critical (0,tr("Critical Export Error"),tr("MapEditor::exportXML couldn't open %1").arg(file.name())); + return; + } + + // Write it finally, and write in UTF8, no matter what + QTextStream ts( &file ); + ts.setEncoding (QTextStream::UnicodeUTF8); + ts << saveFile; + file.close(); + + clipboardEmpty=false; + updateActions(); } } @@ -1618,74 +1424,30 @@ } } -LinkableMapObj* MapEditor::pasteNoSave() +void MapEditor::pasteNoSave() { // Finish open lineEdits if (lineedit) finishedLineEditNoSave(); - clipboardME->select ("bo:0"); - LinkableMapObj *fromLMO=clipboardME->getSelection(); - LinkableMapObj *returnLMO=NULL; - - if (selection && fromLMO) - { - if (typeid(*fromLMO) == typeid(BranchObj) ) - { - if (typeid(*selection) == typeid(MapCenterObj)) - { - returnLMO=mapCenter->addBranch( (BranchObj*)(fromLMO) ); - ((BranchObj*)(returnLMO))->move2RelPos(normalise(fromLMO->getRelPos() ) ); - } - if (typeid(*selection) == typeid(BranchObj)) - returnLMO=((BranchObj*)selection)->addBranch((BranchObj*)(fromLMO) ); - } - - if (typeid(*fromLMO) == typeid(FloatImageObj) && - (typeid(*selection) == typeid (BranchObj) || - typeid(*selection)==typeid(MapCenterObj)) ) - returnLMO=((BranchObj*) selection)->addFloatImage ((FloatImageObj*)(fromLMO)); - - } - return returnLMO; + load (clipboardDir+"/part.xml",ImportAdd); } void MapEditor::cutNoSave() { - // Finish open lineEdits - if (lineedit) finishedLineEditNoSave(); - - BranchObj* bo; - BranchObj* par; - if (selection != NULL) { - if (typeid(*selection) == typeid(BranchObj) ) - { - bo=(BranchObj*)selection; - par=(BranchObj*)(bo->getParObj()); - bo->unselect(); - selection=NULL; - par->removeBranch(bo); - selection=par; - selection->select(); - } - if (typeid(*selection) == typeid(FloatImageObj) ) - { - FloatImageObj* fio=(FloatImageObj*)selection; - par=(BranchObj*)(fio->getParObj()); - fio->unselect(); - selection=NULL; - par->removeFloatImage(fio); - selection=par; - selection->select(); - } - } + copy(); + deleteSelection(); } void MapEditor::paste() { - saveState(selection); - pasteNoSave(); - mapCenter->reposition(); - adjustCanvasSize(); + if (selection && (typeid(*selection) == typeid(BranchObj) || + typeid(*selection) == typeid(MapCenterObj))) + { + saveState(selection); + pasteNoSave(); + mapCenter->reposition(); + adjustCanvasSize(); + } } void MapEditor::cut() @@ -2807,7 +2569,7 @@ actionEditCopy->setEnabled (true); actionEditCut->setEnabled (true); - if (clipboardME->getMapCenter()->countBranches()>0 || clipboardME->getMapCenter()->countFloatImages()>0) + if (!clipboardEmpty) actionEditPaste->setEnabled (true); else actionEditPaste->setEnabled (false); @@ -3247,8 +3009,7 @@ void MapEditor::testFunction() { cout << "MapEditor::testFunction() called\n"; - QDir d("/fasl"); - removeDir (d); + load (clipboardDir+"/part.xml",ImportAdd); } void MapEditor::ensureSelectionVisible() @@ -3681,7 +3442,7 @@ bs->moveBranchTo ( (BranchObj*)(dst->getParObj()), ((BranchObj*)(dst))->getNum()); } else if (e->state() & QMouseEvent::ControlButton) - { + { bs->moveBranchTo ( (BranchObj*)(dst->getParObj()), ((BranchObj*)(dst))->getNum()+1); } else { @@ -3731,9 +3492,6 @@ void MapEditor::resizeEvent (QResizeEvent* e) { QCanvasView::resizeEvent( e ); - - QString s=""; - if (!fileName.isEmpty()) s=fileName; adjustCanvasSize(); }