1.1 --- a/mapeditor.cpp Thu Dec 14 17:01:44 2006 +0000
1.2 +++ b/mapeditor.cpp Fri Dec 29 13:52:18 2006 +0000
1.3 @@ -3,7 +3,6 @@
1.4 #include <q3dragobject.h>
1.5 #include <q3urloperator.h>
1.6 #include <q3networkprotocol.h>
1.7 -#include <q3paintdevicemetrics.h>
1.8 #include <q3filedialog.h>
1.9
1.10 #include <iostream>
1.11 @@ -72,13 +71,6 @@
1.12
1.13 setScene (mapScene);
1.14
1.15 - /* FIXME scrollview handles not needed in QT4?
1.16 - // Maybe check QAbstractScrollArea...
1.17 - // Always show scroll bars (automatic would flicker sometimes)
1.18 - setVScrollBarMode ( QScrollView::AlwaysOn );
1.19 - setHScrollBarMode ( QScrollView::AlwaysOn );
1.20 - */
1.21 -
1.22 mapCenter = new MapCenterObj(mapScene);
1.23 mapCenter->setVisibility (true);
1.24 mapCenter->setMapEditor (this);
1.25 @@ -170,73 +162,6 @@
1.26 return mapScene;
1.27 }
1.28
1.29 -void MapEditor::adjustCanvasSize()
1.30 -{
1.31 -
1.32 -/* FIXME QT4 adjustcanvassize probably not needed any longer!
1.33 -
1.34 - // To adjust the scene to map, viewport size and position, we have to
1.35 - // do some coordinate magic...
1.36 - //
1.37 - // Get rectangle of (scroll-)view.
1.38 - // We want to be in scene coords, so
1.39 - // we map. Important if view is zoomed...
1.40 - QRectF view = inverseWorldMatrix().mapRect( QRectF( contentsX(), contentsY(),
1.41 - visibleWidth(), visibleHeight()) );
1.42 -
1.43 - // Now we need the bounding box of view AND map to calc the correct scene size.
1.44 - // Why? Because if the map itself is moved out of view, the view has to be enlarged
1.45 - // to avoid jumping aroung...
1.46 - QRectF map=mapCenter->getTotalBBox();
1.47 -
1.48 - // right edge - left edge
1.49 - int cw= max(map.x() + map.width(), view.x() + view.width()) - min(map.x(), view.x());
1.50 - int ch= max(map.y() + map.height(), view.y() + view.height()) - min(map.y(), view.y());
1.51 -
1.52 -
1.53 - if ( (cw!=mapScene->width()) || (ch!=mapScene->height()) ||
1.54 - !mapScene->onCanvas (map.topLeft()) || !mapScene->onCanvas (map.bottomRight())
1.55 - )
1.56 - {
1.57 - // move the map on scene (in order to not move it on screen) this is neccessary
1.58 - // a) if topleft corner of scene is left or above topleft corner of view and also left of
1.59 - // above topleft corner of map. E.g. if map is completly inside view, but it would be possible
1.60 - // to scroll to an empty area of scene to the left.
1.61 - // b) if topleft corner of map left of or above topleft of scene
1.62 - int dx=0;
1.63 - int dy=0;
1.64 -
1.65 - if (cw > mapScene->width() )
1.66 - {
1.67 - if (map.x()<0) dx=-map.x();
1.68 - }
1.69 - if (cw < mapScene->width() )
1.70 - dx=-min (view.x(),map.x());
1.71 - if (ch > mapScene->height() )
1.72 - {
1.73 - if (map.y()<0) dy=-map.y();
1.74 - }
1.75 - if (ch < mapScene->height() )
1.76 - {
1.77 - dy=-min (view.y(),map.y());
1.78 - }
1.79 - // We really have to resize now. Let's go...
1.80 - // FIXME old code mapScene->resize (cw,ch);
1.81 - mapScene->setSceneRect (QRectFF(0,0,cw,ch));
1.82 - if ( (dx!=0) || (dy!=0) )
1.83 - {
1.84 - mapCenter->moveAllBy(dx,dy);
1.85 - mapCenter->reposition();
1.86 -// mapCenter->positionBBox(); // To move float
1.87 -
1.88 - // scroll the view (in order to not move map on screen)
1.89 - scrollBy (dx,dy);
1.90 - }
1.91 - }
1.92 -
1.93 - */
1.94 -}
1.95 -
1.96 bool MapEditor::isRepositionBlocked()
1.97 {
1.98 return blockReposition;
1.99 @@ -1108,7 +1033,6 @@
1.100 if ( ok )
1.101 {
1.102 mapCenter->reposition();
1.103 - adjustCanvasSize();
1.104 if (lmode==NewMap)
1.105 {
1.106 mapDefault=false;
1.107 @@ -1179,6 +1103,8 @@
1.108 printer = new QPrinter;
1.109 printer->setColorMode (QPrinter::Color);
1.110 printer->setPrinterName (settings.value("/mainwindow/printerName",printer->printerName()).toString());
1.111 + printer->setOutputFormat((QPrinter::OutputFormat)settings.value("/mainwindow/printerFormat",printer->outputFormat()).toInt());
1.112 + printer->setOutputFileName(settings.value("/mainwindow/printerFileName",printer->outputFileName()).toString());
1.113 }
1.114
1.115 QRectF totalBBox=mapCenter->getTotalBBox();
1.116 @@ -1200,6 +1126,9 @@
1.117 {
1.118 QPainter pp(printer);
1.119
1.120 + //pp.setRenderHints(renderHints());
1.121 + pp.setRenderHint(QPainter::Antialiasing,true);
1.122 +
1.123 // Don't print the visualisation of selection
1.124 LinkableMapObj *oldselection=NULL;
1.125 if (selection)
1.126 @@ -1208,22 +1137,9 @@
1.127 selection->unselect();
1.128 }
1.129
1.130 - // Handle sizes of map and paper:
1.131 - //
1.132 - // setWindow defines which part of the scene will be transformed
1.133 - // setViewport defines area on paper in device coordinates (dpi)
1.134 - // e.g. (0,50,700,700) is upper part on A4
1.135 - // see also /usr/lib/qt3/doc/html/coordsys.html
1.136 -
1.137 - Q3PaintDeviceMetrics metrics (printer);
1.138 -
1.139 - double paperAspect = (double)metrics.width() / (double)metrics.height();
1.140 - double mapAspect = (double)totalBBox.width() / (double)totalBBox.height();
1.141 -
1.142 QRectF mapRect=totalBBox;
1.143 QGraphicsRectItem *frame=NULL;
1.144 - QGraphicsTextItem *footerFN=NULL;
1.145 - QGraphicsTextItem *footerDate=NULL;
1.146 +
1.147 if (printFrame || printFooter)
1.148 {
1.149
1.150 @@ -1232,63 +1148,72 @@
1.151 // Print frame around map
1.152 mapRect.setRect (totalBBox.x()-10, totalBBox.y()-10,
1.153 totalBBox.width()+20, totalBBox.height()+20);
1.154 - frame=mapScene->addRect (mapRect, QPen(Qt::black),QBrush(Qt::red));
1.155 + frame=mapScene->addRect (mapRect, QPen(Qt::black),QBrush(Qt::NoBrush));
1.156 frame->setZValue(0);
1.157 frame->show();
1.158 }
1.159 - // TODO remove after testing
1.160 - //QCanvasLine *l=new QCanvasLine (mapScene);
1.161 - //l->setPoints (0,0,mapRect.width(),mapRect.height());
1.162 - //l->setPen (QPen(QColor(black), 1));
1.163 - //l->setZ (200);
1.164 - //l->show();
1.165
1.166 if (printFooter)
1.167 {
1.168 // Print footer below map
1.169 QFont font;
1.170 font.setPointSize(10);
1.171 - footerFN=mapScene->addText ("VYM - " + fileName,font);
1.172 - footerFN->setPos (mapRect.x(), mapRect.y() + mapRect.height() );
1.173 - footerFN->setZValue (Z_TEXT);
1.174 - footerFN->show();
1.175 - footerDate=mapScene->addText (QDate::currentDate().toString(Qt::TextDate),font);
1.176 - footerDate->setPos(mapRect.x()+mapRect.width()-footerDate->boundingRect().width(), mapRect.y() + mapRect.height() );
1.177 - footerDate->setZValue(Z_TEXT);
1.178 - footerDate->show();
1.179 + pp.setFont (font);
1.180 + QRectF footerBox(0,printer->height()-15,printer->width(),15);
1.181 + pp.drawText ( footerBox,Qt::AlignLeft,"VYM - " +fileName);
1.182 + pp.drawText ( footerBox, Qt::AlignRight, QDate::currentDate().toString(Qt::TextDate));
1.183 }
1.184 - //pp.setWindow (mapRect.x(), mapRect.y(), mapRect.width(), mapRect.height()+20);
1.185 - } else
1.186 - {
1.187 - //pp.setWindow (mapRect);
1.188 - //pp.setWindow (mapRect.x(), mapRect.y(), mapRect.width(), mapRect.height()+20);
1.189 - }
1.190 -
1.191 -/*
1.192 + }
1.193 +
1.194 + /*
1.195 + double paperAspect = (double)printer->width() / (double)printer->height();
1.196 + double mapAspect = (double)mapRect.width() / (double)mapRect.height();
1.197 + cout <<"mapAspect="<<mapAspect<<" paperAspect"<<paperAspect<<endl;
1.198 if (mapAspect>=paperAspect)
1.199 {
1.200 // Fit horizontally to paper width
1.201 - pp.setViewport(0,0, metrics.width(),(int)(metrics.width()/mapAspect) );
1.202 + pp.setViewport(0,0, printer->width(),(int)(printer->width()/mapAspect) );
1.203 + qWarning ("Fit hor");
1.204 } else
1.205 {
1.206 // Fit vertically to paper height
1.207 - pp.setViewport(0,0,(int)(metrics.height()*mapAspect),metrics.height());
1.208 + pp.setViewport(0,0,(int)(printer->height()*mapAspect),printer->height());
1.209 + qWarning ("Fit ver");
1.210 }
1.211 -*/
1.212 - QRect viewport=rect();
1.213 - render (&pp, QRect(),QRect());
1.214 -
1.215 + */
1.216 + mapScene->render (
1.217 + &pp,
1.218 + //pp.viewport(),
1.219 + QRectF (0,0,printer->width(),printer->height()-15),
1.220 + QRectF(mapRect.x(),mapRect.y(),mapRect.width(),mapRect.height())
1.221 + );
1.222 +
1.223 + //render (&pp,printer->pageRect(), QRect ((int)mapRect.x(),(int)mapRect.y(),400,400));
1.224 +
1.225 + //pp.setWindow (QRect (mapRect.x(),mapRect.y(),mapRect.width(),mapRect.height()));
1.226 //mapScene->render(&pp); // draw scene to printer
1.227
1.228 -/*
1.229 - // Delete Frame and footer
1.230 - if (footerFN)
1.231 - {
1.232 - delete (footerFN);
1.233 - delete (footerDate);
1.234 - }
1.235 -*/
1.236 -// if (frame) delete (frame);
1.237 + // Viewport has paper dimension
1.238 + pp.drawLine (QLine (0,0,printer->width(),printer->height()));
1.239 + cout << "sceneRect: "
1.240 + <<mapScene->sceneRect().x()<<","
1.241 + <<mapScene->sceneRect().y()<<","
1.242 + <<mapScene->sceneRect().width()<<","
1.243 + <<mapScene->sceneRect().height()<<","<<endl;
1.244 + cout << "mapRect: "
1.245 + <<mapRect.x()<<","
1.246 + <<mapRect.y()<<","
1.247 + <<mapRect.width()<<","
1.248 + <<mapRect.height()<<","<<endl;
1.249 + cout << "pp.viewport: "
1.250 + <<pp.viewport().x()<<","
1.251 + <<pp.viewport().y()<<","
1.252 + <<pp.viewport().width()<<","
1.253 + <<pp.viewport().height()<<","<<endl;
1.254 + cout << "painter: w,h="<<pp.viewport().width()<<","<<pp.viewport().height()<<endl;
1.255 + cout << "printer: w,h="<<printer->width()<<","<<printer->height()<<endl;
1.256 +
1.257 + if (frame) delete (frame);
1.258
1.259 // Restore selection
1.260 if (oldselection)
1.261 @@ -1299,6 +1224,8 @@
1.262
1.263 // Save settings in vymrc
1.264 settings.writeEntry("/mainwindow/printerName",printer->printerName());
1.265 + settings.writeEntry("/mainwindow/printerFormat",printer->outputFormat());
1.266 + settings.writeEntry("/mainwindow/printerFileName",printer->outputFileName());
1.267 }
1.268 }
1.269
1.270 @@ -1349,7 +1276,6 @@
1.271 hidemode=mode;
1.272 mapCenter->setHideTmp (hidemode);
1.273 mapCenter->reposition();
1.274 - adjustCanvasSize();
1.275 scene()->update();
1.276 }
1.277
1.278 @@ -1749,7 +1675,6 @@
1.279 QString("Paste to %1").arg( getName(selection))
1.280 );
1.281 mapCenter->reposition();
1.282 - adjustCanvasSize();
1.283 }
1.284 }
1.285
1.286 @@ -1764,7 +1689,6 @@
1.287 copy();
1.288 cutNoSave();
1.289 mapCenter->reposition();
1.290 - adjustCanvasSize();
1.291 }
1.292
1.293 void MapEditor::move(const int &x, const int &y)
1.294 @@ -1779,7 +1703,6 @@
1.295 QString("Move %1 to %2").arg(getName(selection)).arg(ps));
1.296 selection->move(x,y);
1.297 mapCenter->reposition();
1.298 - adjustCanvasSize();
1.299 }
1.300
1.301 }
1.302 @@ -1798,7 +1721,6 @@
1.303 QString("Move %1 to relativ position %2").arg(getName(selection)).arg(ps));
1.304 ((OrnamentedObj*)selection)->move2RelPos (x,y);
1.305 mapCenter->reposition();
1.306 - adjustCanvasSize();
1.307 }
1.308 }
1.309
1.310 @@ -1869,7 +1791,6 @@
1.311 editingBO->setHeading(s );
1.312 editingBO=NULL;
1.313 mapCenter->reposition();
1.314 - adjustCanvasSize();
1.315 ensureSelectionVisible();
1.316 }
1.317 }
1.318 @@ -1883,7 +1804,6 @@
1.319 {
1.320 ((BranchObj*)selection)->setURL(s);
1.321 mapCenter->reposition();
1.322 - adjustCanvasSize();
1.323 ensureSelectionVisible();
1.324 }
1.325 }
1.326 @@ -1896,7 +1816,6 @@
1.327 {
1.328 ((BranchObj*)selection)->setHeading(s);
1.329 mapCenter->reposition();
1.330 - adjustCanvasSize();
1.331 ensureSelectionVisible();
1.332 }
1.333 }
1.334 @@ -1910,7 +1829,6 @@
1.335 {
1.336 ((BranchObj*)selection)->setVymLink(s);
1.337 mapCenter->reposition();
1.338 - adjustCanvasSize();
1.339 ensureSelectionVisible();
1.340 }
1.341 }
1.342 @@ -1967,14 +1885,13 @@
1.343 if (newbo)
1.344 {
1.345 saveState(
1.346 - selection, // FIXME sholdnt newbo be deleted here???
1.347 + selection, // FIXME addNewBranch (int pos) sholdnt newbo be deleted here???
1.348 "delete ()",
1.349 selection,
1.350 QString ("addBranch (%1)").arg(pos-2),
1.351 QString ("Add new branch to %1").arg(getName(bo)));
1.352
1.353 mapCenter->reposition();
1.354 - adjustCanvasSize();
1.355 }
1.356 }
1.357 return newbo;
1.358 @@ -2007,7 +1924,6 @@
1.359 QString ("Add branch before %1").arg(getName(bo)));
1.360
1.361 mapCenter->reposition();
1.362 - adjustCanvasSize();
1.363 }
1.364 }
1.365 return newbo;
1.366 @@ -2027,7 +1943,6 @@
1.367 selection->select();
1.368 ensureSelectionVisible();
1.369 mapCenter->reposition();
1.370 - adjustCanvasSize();
1.371 }
1.372 if (selection && typeid(*selection) ==typeid(FloatImageObj) )
1.373 {
1.374 @@ -2046,7 +1961,6 @@
1.375 selection->select();
1.376 ensureSelectionVisible();
1.377 mapCenter->reposition();
1.378 - adjustCanvasSize();
1.379 }
1.380 }
1.381
1.382 @@ -2085,7 +1999,6 @@
1.383 if (selection) unselect();
1.384 selection=lmo;
1.385 selection->select();
1.386 - adjustCanvasSize();
1.387 ensureSelectionVisible();
1.388 return true;
1.389 }
1.390 @@ -2106,8 +2019,6 @@
1.391 if (selection) selection->unselect();
1.392 selection=lmo;
1.393 selection->select();
1.394 -
1.395 - adjustCanvasSize();
1.396 }
1.397 }
1.398
1.399 @@ -2328,7 +2239,6 @@
1.400 par->unselect();
1.401 selection=bo;
1.402 selection->select();
1.403 - adjustCanvasSize();
1.404 ensureSelectionVisible();
1.405 }
1.406 }
1.407 @@ -2343,7 +2253,6 @@
1.408 selection->unselect();
1.409 selection=par;
1.410 selection->select();
1.411 - adjustCanvasSize();
1.412 ensureSelectionVisible();
1.413 }
1.414 } else
1.415 @@ -2356,7 +2265,6 @@
1.416 selection->unselect();
1.417 selection=bo;
1.418 selection->select();
1.419 - adjustCanvasSize();
1.420 ensureSelectionVisible();
1.421 }
1.422 }
1.423 @@ -2400,7 +2308,6 @@
1.424 selection->unselect();
1.425 selection=par;
1.426 selection->select();
1.427 - adjustCanvasSize();
1.428 ensureSelectionVisible();
1.429 }
1.430 } else
1.431 @@ -2413,7 +2320,6 @@
1.432 selection->unselect();
1.433 selection=bo;
1.434 selection->select();
1.435 - adjustCanvasSize();
1.436 ensureSelectionVisible();
1.437 }
1.438 }
1.439 @@ -2440,7 +2346,6 @@
1.440 ensureSelectionVisible();
1.441 }
1.442 }
1.443 - adjustCanvasSize();
1.444 }
1.445 }
1.446
1.447 @@ -2462,7 +2367,6 @@
1.448 ensureSelectionVisible();
1.449 }
1.450 }
1.451 - adjustCanvasSize();
1.452 }
1.453 }
1.454
1.455 @@ -2481,7 +2385,7 @@
1.456
1.457 if ( fd->exec() == QDialog::Accepted )
1.458 {
1.459 - // FIXME in QT4 use: lastImageDir=fd->directory();
1.460 + // TODO selectMapBackgroundImg in QT4 use: lastImageDir=fd->directory();
1.461 lastImageDir=QDir (fd->dirPath());
1.462 setMapBackgroundImage (fd->selectedFile());
1.463 }
1.464 @@ -2611,7 +2515,6 @@
1.465 QString("%1 (\"%2\")").arg(r).arg(f),
1.466 QString("Toggling standard flag \"%1\" of %2").arg(f).arg(getName(bo)));
1.467 bo->toggleStandardFlag (f,mainWindow->useFlagGroups());
1.468 - adjustCanvasSize();
1.469 }
1.470 }
1.471 }
1.472 @@ -2651,7 +2554,6 @@
1.473 if (selection) ((BranchObj*)selection)->unselect();
1.474 selection=itFind;
1.475 selection->select();
1.476 - adjustCanvasSize();
1.477 ensureSelectionVisible();
1.478 }
1.479 if (textEditor->findText(s,flags))
1.480 @@ -2666,7 +2568,6 @@
1.481 if (selection) ((BranchObj*)selection)->unselect();
1.482 selection=itFind;
1.483 selection->select();
1.484 - adjustCanvasSize();
1.485 ensureSelectionVisible();
1.486 searching=false;
1.487 }
1.488 @@ -2679,7 +2580,6 @@
1.489 }
1.490 if (!searching)
1.491 {
1.492 - adjustCanvasSize();
1.493 return (BranchObj*)selection;
1.494 } else
1.495 return NULL;
1.496 @@ -2817,7 +2717,6 @@
1.497 bo->setVymLink (fd->selectedFile() );
1.498 updateActions();
1.499 mapCenter->reposition();
1.500 - adjustCanvasSize();
1.501 scene()->update();
1.502 }
1.503 }
1.504 @@ -2839,7 +2738,6 @@
1.505 bo->setVymLink ("" );
1.506 updateActions();
1.507 mapCenter->reposition();
1.508 - adjustCanvasSize();
1.509 scene()->update();
1.510 }
1.511 }
1.512 @@ -2863,7 +2761,6 @@
1.513 );
1.514 updateActions();
1.515 mapCenter->reposition();
1.516 - adjustCanvasSize();
1.517 scene()->update();
1.518 }
1.519 }
1.520 @@ -2925,7 +2822,6 @@
1.521 select (sel);
1.522 ((BranchObj*)selection)->move2RelPos (p);
1.523 mapCenter->reposition();
1.524 - adjustCanvasSize();
1.525 }
1.526 }
1.527
1.528 @@ -2987,7 +2883,7 @@
1.529 void MapEditor::updateActions()
1.530 {
1.531 mainWindow->updateActions();
1.532 - // FIXME maybe don't update if blockReposition is set
1.533 + // TODO maybe don't update if blockReposition is set
1.534 }
1.535
1.536 void MapEditor::updateNoteFlag()
1.537 @@ -3166,7 +3062,6 @@
1.538 QString ("%1 %2").arg(r).arg(getName(bo))
1.539 );
1.540 bo->toggleScroll();
1.541 - adjustCanvasSize();
1.542 scene()->update();
1.543 }
1.544 }
1.545 @@ -3204,7 +3099,7 @@
1.546 QString fn;
1.547 if ( fd->exec() == QDialog::Accepted )
1.548 {
1.549 - // FIXME in QT4 use: lastImageDir=fd->directory();
1.550 + // FIXME loadFIO in QT4 use: lastImageDir=fd->directory();
1.551 lastImageDir=QDir (fd->dirPath());
1.552 QStringList flist = fd->selectedFiles();
1.553 QStringList::Iterator it = flist.begin();
1.554 @@ -3215,7 +3110,7 @@
1.555 bo->addFloatImage();
1.556 fio=bo->getLastFloatImage();
1.557 fio->load(*it);
1.558 - // FIXME check if load of fio was successful
1.559 + // FIXME loadFIO check if load of fio was successful
1.560 saveState(
1.561 (LinkableMapObj*)fio,
1.562 "delete ()",
1.563 @@ -3228,7 +3123,6 @@
1.564 }
1.565
1.566 mapCenter->reposition();
1.567 - adjustCanvasSize();
1.568 scene()->update();
1.569 }
1.570 delete (p);
1.571 @@ -3392,7 +3286,6 @@
1.572 BranchObj *bo=((BranchObj*)selection);
1.573 importDirInt (bo,QDir(fd->selectedFile()) );
1.574 mapCenter->reposition();
1.575 - adjustCanvasSize();
1.576 scene()->update();
1.577 }
1.578 }
1.579 @@ -3436,7 +3329,7 @@
1.580 }
1.581 if (dia.deleteXLink())
1.582 ((BranchObj*)selection)->deleteXLinkAt(i);
1.583 - //saveStateComplete("Edit xLink"); //FIXME undoCommand
1.584 + //saveStateComplete("Edit xLink"); //FIXME editXLink undoCommand
1.585 }
1.586 }
1.587 }
1.588 @@ -3502,7 +3395,7 @@
1.589
1.590 void MapEditor::updateViewCenter()
1.591 {
1.592 -/* FIXME still to port to QT4 inverseworldmatrix
1.593 +/* FIXME updateViewCenter still to port to QT4 inverseworldmatrix
1.594 // Update movingCenter, so that we can zoom comfortably later
1.595 QRectF rc = QRectF( contentsX(), contentsY(),
1.596 visibleWidth(), visibleHeight() );
1.597 @@ -3528,7 +3421,6 @@
1.598 if (selection) selection->unselect();
1.599 selection=lmo;
1.600 selection->select();
1.601 - adjustCanvasSize();
1.602 }
1.603 // Context Menu
1.604 if (selection)
1.605 @@ -3705,8 +3597,6 @@
1.606 {
1.607 movingObj=NULL; // move Content not Obj
1.608 movingObj_start=e->globalPos();
1.609 - // FIXME not ported to QT4 yet (move canvasView)
1.610 - //movingCont_start=QPointF (contentsX(), contentsY() );
1.611 movingCont_start=QPointF (
1.612 horizontalScrollBar()->value(),
1.613 verticalScrollBar()->value());
1.614 @@ -3841,9 +3731,6 @@
1.615 QPointF p=e->globalPos();
1.616 movingVec.setX(-p.x() + movingObj_start.x() );
1.617 movingVec.setY(-p.y() + movingObj_start.y() );
1.618 - // FIXME not ported to QT4 yet (move canvasView)
1.619 - //setContentsPos( movingCont_start.x() + movingVec.x(),
1.620 - //movingCont_start.y() + movingVec.y();
1.621 horizontalScrollBar()->setSliderPosition((int)( movingCont_start.x()+movingVec.x() ));
1.622 verticalScrollBar()->setSliderPosition((int)( movingCont_start.y()+movingVec.y() ) );
1.623 }
1.624 @@ -3913,7 +3800,6 @@
1.625 "moveRel "+pnow,
1.626 QString("Move %1 to relativ position %2").arg(getName(selection)).arg(pnow));
1.627
1.628 - // FIXME Why calling parObj here?
1.629 selection->getParObj()->requestReposition();
1.630 mapCenter->reposition();
1.631 }
1.632 @@ -3927,8 +3813,7 @@
1.633 dst=NULL;
1.634
1.635 if (typeid(*selection) == typeid(MapCenterObj) )
1.636 - { // The MapCenter was moved
1.637 - cout << "FIXME missing savestate...\n";
1.638 + { // FIXME The MapCenter was moved, no savestate yet
1.639 }
1.640
1.641 if (typeid(*selection) == typeid(BranchObj) )
1.642 @@ -4002,7 +3887,6 @@
1.643 mapCenter->reposition();
1.644 }
1.645 // Finally resize scene, if needed
1.646 - adjustCanvasSize();
1.647 scene()->update();
1.648 movingObj=NULL;
1.649
1.650 @@ -4033,68 +3917,25 @@
1.651 void MapEditor::resizeEvent (QResizeEvent* e)
1.652 {
1.653 QGraphicsView::resizeEvent( e );
1.654 - adjustCanvasSize();
1.655 }
1.656
1.657 -void MapEditor::contentsDragEnterEvent(QDragEnterEvent *event)
1.658 +void MapEditor::dragEnterEvent(QDragEnterEvent *event)
1.659 {
1.660 - //FIXME not ported to QT4 yet
1.661 -
1.662 -// for (unsigned int i=0;event->format(i);i++) // Debug mime type
1.663 -// cerr << event->format(i) << endl;
1.664 -
1.665 - if (selection &&
1.666 - (typeid(*selection) == typeid(BranchObj)) ||
1.667 - (typeid(*selection) == typeid(MapCenterObj))) {
1.668 -
1.669 - // If QImageDrag can decode mime type
1.670 - if (Q3ImageDrag::canDecode(event)) {
1.671 - event->accept();
1.672 - return;
1.673 - }
1.674 -
1.675 - // If image are dragged from firefox
1.676 - if (event->provides("application/x-moz-file-promise-url") &&
1.677 - event->provides("application/x-moz-nativeimage")) {
1.678 - event->accept(true);
1.679 - return;
1.680 - }
1.681 -
1.682 - // If QUriDrag can decode mime type
1.683 - if (Q3UriDrag::canDecode(event)) {
1.684 - event->accept();
1.685 - return;
1.686 - }
1.687 -
1.688 - // If Uri are dragged from firefox
1.689 - if (event->provides("_NETSCAPE_URL")){
1.690 - event->accept();
1.691 - return;
1.692 - }
1.693 -
1.694 - // If QTextDrag can decode mime type
1.695 - if (Q3TextDrag::canDecode(event)) {
1.696 - event->accept();
1.697 - return;
1.698 - }
1.699 -
1.700 - }
1.701 - event->ignore();
1.702 + for (unsigned int i=0;event->format(i);i++) // Debug mime type
1.703 + cerr << event->format(i) << endl;
1.704 +
1.705 + if (event->mimeData()->hasFormat("image/png"))
1.706 + event->acceptProposedAction();
1.707 }
1.708
1.709 -bool isUnicode16(const QByteArray &d)
1.710 +void MapEditor::dropEvent(QDropEvent *event)
1.711 {
1.712 - // TODO: make more precise check for unicode 16.
1.713 - // Guess unicode16 if any of second bytes are zero
1.714 - unsigned int length = max(0,d.size()-2)/2;
1.715 - for (unsigned int i = 0; i<length ; i++)
1.716 - if (d.at(i*2+1)==0) return true;
1.717 - return false;
1.718 + if (event->mimeData()->hasFormat("image/png"))
1.719 }
1.720 -
1.721 +
1.722 void MapEditor::contentsDropEvent(QDropEvent *event)
1.723 {
1.724 - //FIXME not ported to QT4 yet
1.725 + //FIXME dropEvent not ported to QT4 yet
1.726 if (selection &&
1.727 (typeid(*selection) == typeid(BranchObj)) ||
1.728 (typeid(*selection) == typeid(MapCenterObj)))
1.729 @@ -4170,7 +4011,7 @@
1.730 }
1.731 */
1.732
1.733 - /* FIXME not ported yet QSTRINGLIST has no next...
1.734 + /* not ported yet QSTRINGLIST has no next...
1.735 if (uris.count()>0)
1.736 {
1.737 QStringList files;
1.738 @@ -4209,15 +4050,71 @@
1.739 */
1.740 if (update)
1.741 {
1.742 - //FIXME saveState has to be called earlier for each of the drops...
1.743 + //FIXME dropEvent: saveState has to be called earlier for each of the drops...
1.744 //saveStateComplete("Drop Event"); //TODO undo Command
1.745 mapCenter->reposition();
1.746 - adjustCanvasSize();
1.747 scene()->update();
1.748 }
1.749 }
1.750 }
1.751
1.752 +
1.753 +void MapEditor::contentsDragEnterEvent(QDragEnterEvent *event)
1.754 +{
1.755 + //FIXME contentsDragEnterEvent not ported to QT4 yet
1.756 +
1.757 +// for (unsigned int i=0;event->format(i);i++) // Debug mime type
1.758 +// cerr << event->format(i) << endl;
1.759 +
1.760 + if (selection &&
1.761 + (typeid(*selection) == typeid(BranchObj)) ||
1.762 + (typeid(*selection) == typeid(MapCenterObj))) {
1.763 +
1.764 + // If QImageDrag can decode mime type
1.765 + if (Q3ImageDrag::canDecode(event)) {
1.766 + event->accept();
1.767 + return;
1.768 + }
1.769 +
1.770 + // If image are dragged from firefox
1.771 + if (event->provides("application/x-moz-file-promise-url") &&
1.772 + event->provides("application/x-moz-nativeimage")) {
1.773 + event->accept(true);
1.774 + return;
1.775 + }
1.776 +
1.777 + // If QUriDrag can decode mime type
1.778 + if (Q3UriDrag::canDecode(event)) {
1.779 + event->accept();
1.780 + return;
1.781 + }
1.782 +
1.783 + // If Uri are dragged from firefox
1.784 + if (event->provides("_NETSCAPE_URL")){
1.785 + event->accept();
1.786 + return;
1.787 + }
1.788 +
1.789 + // If QTextDrag can decode mime type
1.790 + if (Q3TextDrag::canDecode(event)) {
1.791 + event->accept();
1.792 + return;
1.793 + }
1.794 +
1.795 + }
1.796 + event->ignore();
1.797 +}
1.798 +
1.799 +bool isUnicode16(const QByteArray &d)
1.800 +{
1.801 + // TODO: make more precise check for unicode 16.
1.802 + // Guess unicode16 if any of second bytes are zero
1.803 + unsigned int length = max(0,d.size()-2)/2;
1.804 + for (unsigned int i = 0; i<length ; i++)
1.805 + if (d.at(i*2+1)==0) return true;
1.806 + return false;
1.807 +}
1.808 +
1.809 void MapEditor::addFloatImageInt (const QPixmap &img)
1.810 {
1.811 if (selection &&
1.812 @@ -4232,13 +4129,13 @@
1.813 fio->load(img);
1.814 fio->setOriginalFilename("Image added by Drag and Drop");
1.815 mapCenter->reposition();
1.816 - adjustCanvasSize();
1.817 scene()->update();
1.818 }
1.819 }
1.820
1.821 -
1.822 -void MapEditor::imageDataFetched(const QByteArray &a, Q3NetworkOperation */*nop*/)
1.823 +/*
1.824 +
1.825 +void MapEditor::imageDataFetched(const QByteArray &a, Q3NetworkOperation * / *nop* /)
1.826 {
1.827 if (!imageBuffer) imageBuffer = new QBuffer();
1.828 if (!imageBuffer->isOpen()) {
1.829 @@ -4281,3 +4178,5 @@
1.830 this, SLOT(imageDataFetched(const QByteArray &, Q3NetworkOperation *)));
1.831 urlOperator->get();
1.832 }
1.833 +*/
1.834 +