r22709 by jghali - cleanups and some refactoring for scribusview.cpp
scribus-commit
scribus-commit at lists.scribus.net
Sun Sep 30 02:37:39 UTC 2018
Author: jghali
Date: Sun Sep 30 02:37:39 2018
New Revision: 22709
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22709
Log:
cleanups and some refactoring for scribusview.cpp
Modified:
trunk/Scribus/scribus/scribusview.cpp
Modified: trunk/Scribus/scribus/scribusview.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22709&path=/trunk/Scribus/scribus/scribusview.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusview.cpp (original)
+++ trunk/Scribus/scribus/scribusview.cpp Sun Sep 30 02:37:39 2018
@@ -2238,36 +2238,7 @@
lowerRight.setY(qMax(0, lowerRight.y()+10));
// qDebug() << "updateCanvas:" << upperLeft << lowerRight;
m_canvas->update(upperLeft.x(), upperLeft.y(), lowerRight.x()-upperLeft.x(), lowerRight.y()-upperLeft.y());
- /* double scale = m_canvas->scale();
- double x = box.x() * scale;
- double y = box.y() * scale;
- double w = box.width() * scale;
- double h = box.height() * scale;
- double sbx = horizontalScrollBar()->value();
- double sby = verticalScrollBar()->value();
- if (x < sbx)
- {
- w -= (sbx - x);
- x = sbx;
- }
- else
- {
- w += (x - static_cast<int>(x)); // since x will be rounded down below
- }
- if (y < sby)
- {
- h -= (sby - y);
- y = sby;
- }
- else
- {
- h += (y - static_cast<int>(y)); // since y will be rounded down below
- }
- // enlarge the rectangle when rounding to int:
- m_canvas->update(static_cast<int>(x), static_cast<int>(y),
- qMin(qRound(h + 0.5), viewport()->width()),
- qMin(qRound(w + 0.5), viewport()->height()));
-*/ }
+ }
else
{
m_canvas->update(horizontalScrollBar()->value(), verticalScrollBar()->value(), viewport()->width(), viewport()->height());
@@ -2336,42 +2307,6 @@
viewport()->height() / scale);
}
-
-/*!
- Legacy.
- Now ignores the parameters and just adjusts the canvas widget according to min/maxCanvasCoordinate
- */
-/*
-void ScribusView::adjustCanvas(double width, double height, double dX, double dY)
-{
- QSize maxViewport = maximumViewportSize();
- double scale = m_canvas->scale();
- horizontalScrollBar()->setRange(qRound(Doc->minCanvasCoordinate.x() * scale),
- qRound(Doc->maxCanvasCoordinate.x() * scale) - maxViewport.width());
- verticalScrollBar()->setRange(qRound(Doc->minCanvasCoordinate.y() * scale),
- qRound(Doc->maxCanvasCoordinate.y() * scale) - maxViewport.height());
-// qDebug() << "adjustCanvas" << width << height << dX << dY
-// << "(" << Doc->minCanvasCoordinate.x() << Doc->minCanvasCoordinate.y() << ") - ("
-// << Doc->maxCanvasCoordinate.x() << Doc->maxCanvasCoordinate.y() << ") @" << scale << maxViewport;
- widget()->resize(qRound((Doc->maxCanvasCoordinate.x()-Doc->minCanvasCoordinate.x())*scale),
- qRound((Doc->maxCanvasCoordinate.y()-Doc->minCanvasCoordinate.y())*scale));
-
- if (false && !m_canvas->m_viewMode.operItemMoving)
- {
- bool updback = updateOn;
- updatesOn(false);
- int oldDX = contentsX();
- int oldDY = contentsY();
- int nw = qMax(qRound(width * scale), contentsWidth() + qRound(dX * scale) * 2);
- int nh = qMax(qRound(height * scale), contentsHeight() + qRound(dY * scale) * 2);
- resizeContents(qMax(nw, visibleWidth() + qRound(dX * scale) * 2), qMax(nh, visibleHeight() + qRound(dY * scale) * 2));
- setContentsPos(oldDX + qRound(dX * scale), oldDY + qRound(dY * scale));
-// setRulerPos(contentsX(), contentsY());
- updatesOn(updback);
- }
-// evSpon = false;
-}*/
-
void ScribusView::setZoom()
{
int x = qRound(qMax(contentsX() / m_canvas->scale(), 0.0));
@@ -2393,105 +2328,66 @@
zoom(oldX, oldY, Prefs->displayPrefs.displayScale, false);
}
-void ScribusView::slotZoomIn(int mx,int my)
+void ScribusView::slotZoomIn(int mx, int my)
{
// FIXME : mx and my should really be ScribusView local coordinates or global coordinates
+ int oldZoomX(mx), oldZoomY(my);
if ((mx == 0) && (my == 0))
{
- int x = qRound(qMax(contentsX() / m_canvas->scale(), Doc->minCanvasCoordinate.x()));
- int y = qRound(qMax(contentsY() / m_canvas->scale(), Doc->minCanvasCoordinate.y()));
- int w = qRound(qMin(visibleWidth() / m_canvas->scale(), Doc->maxCanvasCoordinate.x() - Doc->minCanvasCoordinate.x()));
- int h = qRound(qMin(visibleHeight() / m_canvas->scale(), Doc->maxCanvasCoordinate.y() - Doc->minCanvasCoordinate.y()));
- rememberOldZoomLocation(w/2+x, h/2+y);
- }
- else
- rememberOldZoomLocation(mx,my);
+ double x = qMax(contentsX() / m_canvas->scale(), Doc->minCanvasCoordinate.x());
+ double y = qMax(contentsY() / m_canvas->scale(), Doc->minCanvasCoordinate.y());
+ double w = qMin(visibleWidth() / m_canvas->scale(), Doc->maxCanvasCoordinate.x() - Doc->minCanvasCoordinate.x());
+ double h = qMin(visibleHeight() / m_canvas->scale(), Doc->maxCanvasCoordinate.y() - Doc->minCanvasCoordinate.y());
+ oldZoomX = qRound(w / 2.0 + x);
+ oldZoomY = qRound(h / 2.0 + y);
+ }
+ rememberOldZoomLocation(oldZoomX, oldZoomY);
+
double newScale = m_canvas->scale() * (1 + static_cast<double>(Doc->opToolPrefs().magStep)/100.0);
- if(static_cast<int>(newScale*100)>static_cast<int>(100 * static_cast<double>(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100))
- newScale = m_canvas->scale() + static_cast<double>(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100;
+ if (static_cast<int>(newScale * 100) > static_cast<int>(100 * static_cast<double>(Doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100))
+ newScale = m_canvas->scale() + static_cast<double>(Doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100;
+
+ int zoomPointX(oldX), zoomPointY(oldY);
if (Doc->m_Selection->count() != 0)
{
PageItem *currItem = Doc->m_Selection->itemAt(0);
- double zPointX = currItem->xPos() + currItem->width() / 2.0;
- double zPointY = currItem->yPos() + currItem->height() / 2.0;
- zoom( qRound(zPointX), qRound(zPointY), newScale, false);
- }
- else
- zoom(oldX, oldY, newScale, true);
+ zoomPointX = qRound(currItem->xPos() + currItem->width() / 2.0);
+ zoomPointY = qRound(currItem->yPos() + currItem->height() / 2.0);
+ }
+ zoom(zoomPointX, zoomPointY, newScale, (Doc->m_Selection->count() == 0));
}
/** Verkleinert die Ansicht */
-void ScribusView::slotZoomOut(int mx,int my)
+void ScribusView::slotZoomOut(int mx, int my)
{
// FIXME : mx and my should really be ScribusView local coordinates or global coordinates
+ int oldZoomX(mx), oldZoomY(my);
if ((mx == 0) && (my == 0))
{
- int x = qRound(qMax(contentsX() / m_canvas->scale(), Doc->minCanvasCoordinate.x()));
- int y = qRound(qMax(contentsY() / m_canvas->scale(), Doc->minCanvasCoordinate.y()));
- int w = qRound(qMin(visibleWidth() / m_canvas->scale(), Doc->maxCanvasCoordinate.x() - Doc->minCanvasCoordinate.x()));
- int h = qRound(qMin(visibleHeight() / m_canvas->scale(), Doc->maxCanvasCoordinate.y() - Doc->minCanvasCoordinate.y()));
- rememberOldZoomLocation(w/2+x, h/2+y);
- }
- else
- rememberOldZoomLocation(mx,my);
- double newScale = m_canvas->scale() - static_cast<double>(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100;
- if(newScale<=Prefs->displayPrefs.displayScale/100)
- newScale = m_canvas->scale() / (1 + static_cast<double>(Doc->opToolPrefs().magStep)/100.0);
- if(newScale<=Prefs->displayPrefs.displayScale/100)
+ double x = qMax(contentsX() / m_canvas->scale(), Doc->minCanvasCoordinate.x());
+ double y = qMax(contentsY() / m_canvas->scale(), Doc->minCanvasCoordinate.y());
+ double w = qMin(visibleWidth() / m_canvas->scale(), Doc->maxCanvasCoordinate.x() - Doc->minCanvasCoordinate.x());
+ double h = qMin(visibleHeight() / m_canvas->scale(), Doc->maxCanvasCoordinate.y() - Doc->minCanvasCoordinate.y());
+ oldZoomX = qRound(w / 2.0 + x);
+ oldZoomY = qRound(h / 2.0 + y);
+ }
+ rememberOldZoomLocation(oldZoomX, oldZoomY);
+
+ double newScale = m_canvas->scale() - static_cast<double>(Doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale/100;
+ if (newScale <= Prefs->displayPrefs.displayScale / 100)
+ newScale = m_canvas->scale() / (1 + static_cast<double>(Doc->opToolPrefs().magStep) / 100.0);
+ if (newScale <= Prefs->displayPrefs.displayScale / 100)
newScale = m_canvas->scale();
+
+ int zoomPointX(oldX), zoomPointY(oldY);
if (Doc->m_Selection->count() != 0)
{
PageItem *currItem = Doc->m_Selection->itemAt(0);
- double zPointX = currItem->xPos() + currItem->width() / 2.0;
- double zPointY = currItem->yPos() + currItem->height() / 2.0;
- zoom( qRound(zPointX), qRound(zPointY), newScale, false);
- }
- else
- zoom(oldX, oldY, newScale, true);
-}
-
-#if 0
-FPoint ScribusView::translateToView(double x, double y) // deprecated
-{
- return FPoint((x - 0*Doc->minCanvasCoordinate.x()) * m_canvas->scale(), (y - 0*Doc->minCanvasCoordinate.y())* m_canvas->scale());
-}
-
-FPoint ScribusView::translateToView(FPoint in) // deprecated
-{
- return translateToView(in.x(), in.y());
-}
-
-FPoint ScribusView::translateToDoc(double x, double y) // deprecated
-{
- return FPoint(x / m_canvas->scale() + 0*Doc->minCanvasCoordinate.x(), y / m_canvas->scale() + 0*Doc->minCanvasCoordinate.y());
-}
-
-FPoint ScribusView::translateToDoc(FPoint in) // deprecated
-{
- return translateToDoc(in.x(), in.y());
-}
-
-FPoint ScribusView::translateFromViewport(double x, double y) // deprecated
-{
- return FPoint((x + contentsX()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.x(), (y + contentsY()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.y());
-}
-
-FPoint ScribusView::translateFromViewport(FPoint in) // deprecated
-{
- return translateFromViewport(in.x(), in.y());
-}
-
-FPoint ScribusView::translateToViewport(double x, double y) // deprecated
-{
- return FPoint((x - 0*Doc->minCanvasCoordinate.x()) * m_canvas->scale() - contentsX(), (y - 0*Doc->minCanvasCoordinate.y())* m_canvas->scale() - contentsY());
-}
-
-FPoint ScribusView::translateToViewport(FPoint in) // deprecated
-{
- return translateToViewport(in.x(), in.y());
-}
-#endif
-
+ zoomPointX = qRound(currItem->xPos() + currItem->width() / 2.0);
+ zoomPointY = qRound(currItem->yPos() + currItem->height() / 2.0);
+ }
+ zoom(zoomPointX, zoomPointY, newScale, (Doc->m_Selection->count() == 0));
+}
void ScribusView::DrawNew()
{
@@ -2668,8 +2564,6 @@
QImage ScribusView::MPageToPixmap(const QString& name, int maxGr, bool drawFrame)
{
- QImage pm;
- QImage im;
ScLayer layer;
layer.isViewable = false;
int Nr = Doc->MasterNames[name];
@@ -2677,61 +2571,65 @@
int clipy = static_cast<int>(Doc->scratch()->top());
int clipw = qRound(Doc->MasterPages.at(Nr)->width());
int cliph = qRound(Doc->MasterPages.at(Nr)->height());
- if ((clipw > 0) && (cliph > 0))
- {
- double sca = m_canvas->scale();
- bool frs = Doc->guidesPrefs().framesShown;
- double cx = Doc->minCanvasCoordinate.x();
- double cy = Doc->minCanvasCoordinate.y();
- Doc->minCanvasCoordinate = FPoint(0, 0);
- ScPage* act = Doc->currentPage();
- bool mMode = Doc->masterPageMode();
- Doc->setMasterPageMode(true);
- Doc->setCurrentPage(Doc->MasterPages.at(Nr));
- bool ctrls = Doc->guidesPrefs().showControls;
- Doc->guidesPrefs().showControls = false;
- Doc->guidesPrefs().framesShown = false;
- setScale(1.0);
- m_canvas->setPreviewMode(true);
- m_canvas->setForcedRedraw(true);
- pm = QImage(clipw, cliph, QImage::Format_ARGB32_Premultiplied);
- ScPainter *painter = new ScPainter(&pm, pm.width(), pm.height(), 1.0, 0);
- painter->clear(Doc->paperColor());
- painter->translate(-clipx, -clipy);
- painter->setLineWidth(1);
- if (drawFrame)
- {
- painter->setPen(Qt::black, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
- painter->setBrush(Doc->paperColor());
- painter->drawRect(clipx, clipy, clipw, cliph);
- }
- painter->beginLayer(1.0, 0);
- int layerCount = Doc->layerCount();
- for (int layerLevel = 0; layerLevel < layerCount; ++layerLevel)
- {
- Doc->Layers.levelToLayer(layer, layerLevel);
- m_canvas->DrawPageItems(painter, layer, QRect(clipx, clipy, clipw, cliph), false);
- m_canvas->DrawPageItems(painter, layer, QRect(clipx, clipy, clipw, cliph), true);
- }
- painter->endLayer();
- painter->end();
- double sx = pm.width() / static_cast<double>(maxGr);
- double sy = pm.height() / static_cast<double>(maxGr);
- if (sy < sx)
- im = pm.scaled(static_cast<int>(pm.width() / sx), static_cast<int>(pm.height() / sx), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- else
- im = pm.scaled(static_cast<int>(pm.width() / sy), static_cast<int>(pm.height() / sy), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- delete painter;
- painter=nullptr;
- m_canvas->setPreviewMode(false);
- m_canvas->setForcedRedraw(false);
- Doc->guidesPrefs().framesShown = frs;
- Doc->guidesPrefs().showControls = ctrls;
- setScale(sca);
- Doc->setMasterPageMode(mMode);
- Doc->setCurrentPage(act);
- Doc->minCanvasCoordinate = FPoint(cx, cy);
- }
+ if (clipw <= 0 || cliph <= 0)
+ return QImage();
+
+ QImage im;
+ QImage pm;
+ double sca = m_canvas->scale();
+ bool frs = Doc->guidesPrefs().framesShown;
+ double cx = Doc->minCanvasCoordinate.x();
+ double cy = Doc->minCanvasCoordinate.y();
+
+ Doc->minCanvasCoordinate = FPoint(0, 0);
+ ScPage* act = Doc->currentPage();
+ bool mMode = Doc->masterPageMode();
+ Doc->setMasterPageMode(true);
+ Doc->setCurrentPage(Doc->MasterPages.at(Nr));
+ bool ctrls = Doc->guidesPrefs().showControls;
+ Doc->guidesPrefs().showControls = false;
+ Doc->guidesPrefs().framesShown = false;
+ setScale(1.0);
+ m_canvas->setPreviewMode(true);
+ m_canvas->setForcedRedraw(true);
+ pm = QImage(clipw, cliph, QImage::Format_ARGB32_Premultiplied);
+ ScPainter *painter = new ScPainter(&pm, pm.width(), pm.height(), 1.0, 0);
+ painter->clear(Doc->paperColor());
+ painter->translate(-clipx, -clipy);
+ painter->setLineWidth(1);
+ if (drawFrame)
+ {
+ painter->setPen(Qt::black, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
+ painter->setBrush(Doc->paperColor());
+ painter->drawRect(clipx, clipy, clipw, cliph);
+ }
+ painter->beginLayer(1.0, 0);
+ int layerCount = Doc->layerCount();
+ for (int layerLevel = 0; layerLevel < layerCount; ++layerLevel)
+ {
+ Doc->Layers.levelToLayer(layer, layerLevel);
+ m_canvas->DrawPageItems(painter, layer, QRect(clipx, clipy, clipw, cliph), false);
+ m_canvas->DrawPageItems(painter, layer, QRect(clipx, clipy, clipw, cliph), true);
+ }
+ painter->endLayer();
+ painter->end();
+ double sx = pm.width() / static_cast<double>(maxGr);
+ double sy = pm.height() / static_cast<double>(maxGr);
+ if (sy < sx)
+ im = pm.scaled(static_cast<int>(pm.width() / sx), static_cast<int>(pm.height() / sx), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ else
+ im = pm.scaled(static_cast<int>(pm.width() / sy), static_cast<int>(pm.height() / sy), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ delete painter;
+ painter=nullptr;
+ m_canvas->setPreviewMode(false);
+ m_canvas->setForcedRedraw(false);
+ Doc->guidesPrefs().framesShown = frs;
+ Doc->guidesPrefs().showControls = ctrls;
+ setScale(sca);
+ Doc->setMasterPageMode(mMode);
+ Doc->setCurrentPage(act);
+ Doc->minCanvasCoordinate = FPoint(cx, cy);
+
return im;
}
@@ -2915,20 +2813,6 @@
requestMode(oldAppMode);
return im;
}
-#if 0
-void ScribusView::rulerMove(QMouseEvent *m)
-{
- QPoint py(viewport()->mapFromGlobal(m->globalPos()));
- int newY = py.y();
- int newX = py.x();
- QPoint out = viewportToContents(py);
- emit MousePos((py.x() + contentsX())/m_canvas->scale(), (py.y() + contentsY())/m_canvas->scale());
- horizRuler->Draw(out.x());
- vertRuler->Draw(out.y());
- m_canvas->newRedrawPolygon() << QPoint(newX, newY);
- updateContents();
-}
-#endif
void ScribusView::setNewRulerOrigin(QMouseEvent *m)
{
@@ -3035,43 +2919,43 @@
void ScribusView::ToPathText()
{
- if (Doc->m_Selection->count() > 1)
- {
- PageItem* currItem=Doc->m_Selection->itemAt(0);
- PageItem *polyLineItem;
- if (currItem->asTextFrame())
- polyLineItem=Doc->m_Selection->itemAt(1);
- else
- {
- polyLineItem=Doc->m_Selection->itemAt(0);
- currItem=Doc->m_Selection->itemAt(1);
- }
- ParagraphStyle dstyle(currItem->itemText.defaultStyle());
- if (polyLineItem->asPolyLine() || polyLineItem->asPolygon() || polyLineItem->asSpiral() || polyLineItem->asArc() || polyLineItem->asRegularPolygon())
- {
- Deselect(true);
- PageItem* newItem=Doc->convertItemTo(currItem, PageItem::PathText, polyLineItem);
- newItem->itemText.setDefaultStyle(dstyle);
- newItem->itemText.applyCharStyle(0, newItem->itemText.length(), dstyle.charStyle());
- newItem->invalid = true;
- newItem->update();
- SelectItem(newItem);
- emit DocChanged();
- }
+ if (Doc->m_Selection->count() <= 1)
+ return;
+
+ PageItem* currItem = Doc->m_Selection->itemAt(0);
+ PageItem *polyLineItem;
+ if (currItem->asTextFrame())
+ polyLineItem=Doc->m_Selection->itemAt(1);
+ else
+ {
+ polyLineItem=Doc->m_Selection->itemAt(0);
+ currItem=Doc->m_Selection->itemAt(1);
+ }
+ ParagraphStyle dstyle(currItem->itemText.defaultStyle());
+ if (polyLineItem->asPolyLine() || polyLineItem->asPolygon() || polyLineItem->asSpiral() || polyLineItem->asArc() || polyLineItem->asRegularPolygon())
+ {
+ Deselect(true);
+ PageItem* newItem=Doc->convertItemTo(currItem, PageItem::PathText, polyLineItem);
+ newItem->itemText.setDefaultStyle(dstyle);
+ newItem->itemText.applyCharStyle(0, newItem->itemText.length(), dstyle.charStyle());
+ newItem->invalid = true;
+ newItem->update();
+ SelectItem(newItem);
+ emit DocChanged();
}
}
void ScribusView::FromPathText()
{
PageItem *currItem;
- if (Doc->getItem(&currItem))
- {
- Deselect(true);
- PageItem* newItem=Doc->convertItemTo(currItem, PageItem::TextFrame);
- SelectItem(newItem);
- Doc->bringItemSelectionToFront();
- update();
- }
+ if (!Doc->getItem(&currItem))
+ return;
+
+ Deselect(true);
+ PageItem* newItem=Doc->convertItemTo(currItem, PageItem::TextFrame);
+ SelectItem(newItem);
+ Doc->bringItemSelectionToFront();
+ update();
}
// FIXME: the following code is untested, but it should give an idea for
@@ -3248,121 +3132,121 @@
break;
}
}
- QList<PageItem*> delItems,newGroupedItems;
- newGroupedItems.clear();
+
+ QList<PageItem*> delItems, newGroupedItems;
int selectedItemCount = tmpSelection.count();
- if (selectedItemCount != 0)
- {
- UndoTransaction trans(undoManager->beginTransaction(currItem->getUName(), currItem->getUPixmap(), Um::ToOutlines, "", nullptr));
- int offset=0;
- for(int i=0; i<selectedItemCount; ++i)
- {
- PageItem *currItem = tmpSelection.itemAt(offset);
- bool cont=false;
- if ((!((currItem->asTextFrame()) || (currItem->asPathText()))) || (currItem->locked()) || currItem->itemText.length() == 0)
- cont=true;
- if (currItem==m_ScMW->storyEditor->currentItem() && Doc==m_ScMW->storyEditor->currentDocument())
+ if (selectedItemCount <= 0)
+ return;
+
+ UndoTransaction trans(undoManager->beginTransaction(currItem->getUName(), currItem->getUPixmap(), Um::ToOutlines, "", nullptr));
+ int offset = 0;
+ for(int i = 0; i < selectedItemCount; ++i)
+ {
+ PageItem *currItem = tmpSelection.itemAt(offset);
+ bool cont = false;
+ if ((!((currItem->asTextFrame()) || (currItem->asPathText()))) || (currItem->locked()) || currItem->itemText.length() == 0)
+ cont = true;
+ if (currItem == m_ScMW->storyEditor->currentItem() && Doc == m_ScMW->storyEditor->currentDocument())
+ {
+ ScMessageBox::information(m_ScMW, tr("Cannot Convert In-Use Item"), "<qt>" + tr("The item %1 is currently being edited by Story Editor. The convert to outlines operation for this item will be skipped").arg(currItem->itemName()) + "</qt>");
+ cont = true;
+ }
+ //Deselect();
+ if (cont)
+ {
+ ++offset;
+ continue;
+ }
+
+ TextToPathPainter p(this, currItem, newGroupedItems);
+ currItem->textLayout.render(&p);
+ if ((currItem->asPathText()) && (currItem->PoShow))
+ {
+ int z = Doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, currItem->xPos(), currItem->yPos(), currItem->width(), currItem->height(), currItem->lineWidth(), CommonStrings::None, currItem->lineColor());
+ PageItem *bb = Doc->Items->at(z);
+ undoManager->setUndoEnabled(false);
+ bb->PoLine = currItem->PoLine.copy();
+ bb->ClipEdited = true;
+ bb->FrameType = 3;
+ bb->OldB2 = bb->width();
+ bb->OldH2 = bb->height();
+ bb->setRotation(currItem->rotation());
+ Doc->adjustItemSize(bb);
+ undoManager->setUndoEnabled(true);
+ newGroupedItems.append(Doc->Items->takeAt(z));
+ }
+ if (currItem->asTextFrame())
+ {
+ if ((!currItem->NamedLStyle.isEmpty()) || (currItem->lineColor() != CommonStrings::None) || (!currItem->strokePattern().isEmpty()) || (!currItem->strokeGradient().isEmpty()))
{
- ScMessageBox::information(m_ScMW, tr("Cannot Convert In-Use Item"), "<qt>" + tr("The item %1 is currently being edited by Story Editor. The convert to outlines operation for this item will be skipped").arg(currItem->itemName()) + "</qt>");
- cont=true;
+ PageItem* newItem = new PageItem_Polygon(*currItem);
+ newItem->convertTo(PageItem::Polygon);
+ newItem->ClipEdited = true;
+ newItem->FrameType = 3;
+ newItem->OldB2 = newItem->width();
+ newItem->OldH2 = newItem->height();
+ newItem->Clip = FlattenPath(newItem->PoLine, newItem->Segments);
+ newItem->ContourLine = newItem->PoLine.copy();
+ newGroupedItems.prepend(newItem);
}
- //Deselect();
- if (cont)
- {
- ++offset;
- continue;
- }
-
- TextToPathPainter p(this, currItem, newGroupedItems);
- currItem->textLayout.render(&p);
- if ((currItem->asPathText()) && (currItem->PoShow))
- {
- int z = Doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, currItem->xPos(), currItem->yPos(), currItem->width(), currItem->height(), currItem->lineWidth(), CommonStrings::None, currItem->lineColor());
- PageItem *bb = Doc->Items->at(z);
- undoManager->setUndoEnabled(false);
- bb->PoLine = currItem->PoLine.copy();
- bb->ClipEdited = true;
- bb->FrameType = 3;
- bb->OldB2 = bb->width();
- bb->OldH2 = bb->height();
- bb->setRotation(currItem->rotation());
- Doc->adjustItemSize(bb);
- undoManager->setUndoEnabled(true);
- newGroupedItems.append(Doc->Items->takeAt(z));
- }
- if (currItem->asTextFrame())
- {
- if ((!currItem->NamedLStyle.isEmpty()) || (currItem->lineColor() != CommonStrings::None) || (!currItem->strokePattern().isEmpty()) || (!currItem->strokeGradient().isEmpty()))
- {
- PageItem* newItem = new PageItem_Polygon(*currItem);
- newItem->convertTo(PageItem::Polygon);
- newItem->ClipEdited = true;
- newItem->FrameType = 3;
- newItem->OldB2 = newItem->width();
- newItem->OldH2 = newItem->height();
- newItem->Clip = FlattenPath(newItem->PoLine, newItem->Segments);
- newItem->ContourLine = newItem->PoLine.copy();
- newGroupedItems.prepend(newItem);
- }
- }
- delItems.append(tmpSelection.takeItem(offset));
- }
+ }
+ delItems.append(tmpSelection.takeItem(offset));
+ }
+ tmpSelection.clear();
+ int ind = -1;
+ if (currItem->isGroupChild())
+ ind = currItem->parentGroup()->groupItemList.indexOf(currItem);
+ else
+ ind = Doc->Items->indexOf(currItem);
+ if (newGroupedItems.count() > 1)
+ {
+ double minx = std::numeric_limits<double>::max();
+ double miny = std::numeric_limits<double>::max();
+ double maxx = -std::numeric_limits<double>::max();
+ double maxy = -std::numeric_limits<double>::max();
+ for (int ep = 0; ep < newGroupedItems.count(); ++ep)
+ {
+ double x1, x2, y1, y2;
+ newGroupedItems.at(ep)->getVisualBoundingRect(&x1, &y1, &x2, &y2);
+ minx = qMin(minx, x1);
+ miny = qMin(miny, y1);
+ maxx = qMax(maxx, x2);
+ maxy = qMax(maxy, y2);
+ }
+ double gx = minx;
+ double gy = miny;
+ double gw = maxx - minx;
+ double gh = maxy - miny;
+ int z = Doc->itemAdd(PageItem::Group, PageItem::Rectangle, gx, gy, gw, gh, 0, CommonStrings::None, CommonStrings::None);
+ PageItem *gItem = Doc->Items->takeAt(z);
+ Doc->groupObjectsToItem(gItem, newGroupedItems);
+ gItem->Parent = currItem->Parent;
+ gItem->gXpos = currItem->gXpos;
+ gItem->gYpos = currItem->gYpos;
+ if (currItem->isGroupChild())
+ currItem->parentGroup()->groupItemList.insert(ind+1, gItem);
+ else
+ Doc->Items->insert(ind+1, gItem);
+ }
+ else if (newGroupedItems.count() > 0)
+ {
+ newGroupedItems.at(0)->Parent = currItem->Parent;
+ if (currItem->isGroupChild())
+ currItem->parentGroup()->groupItemList.insert(ind+1, newGroupedItems.at(0));
+ else
+ Doc->Items->insert(ind+1, newGroupedItems.at(0));
+ }
+ int toDeleteItemCount = delItems.count();
+ if (toDeleteItemCount != 0)
+ {
tmpSelection.clear();
- int ind = -1;
- if (currItem->isGroupChild())
- ind = currItem->parentGroup()->groupItemList.indexOf(currItem);
- else
- ind = Doc->Items->indexOf(currItem);
- if (newGroupedItems.count() > 1)
- {
- double minx = std::numeric_limits<double>::max();
- double miny = std::numeric_limits<double>::max();
- double maxx = -std::numeric_limits<double>::max();
- double maxy = -std::numeric_limits<double>::max();
- for (int ep = 0; ep < newGroupedItems.count(); ++ep)
- {
- double x1, x2, y1, y2;
- newGroupedItems.at(ep)->getVisualBoundingRect(&x1, &y1, &x2, &y2);
- minx = qMin(minx, x1);
- miny = qMin(miny, y1);
- maxx = qMax(maxx, x2);
- maxy = qMax(maxy, y2);
- }
- double gx = minx;
- double gy = miny;
- double gw = maxx - minx;
- double gh = maxy - miny;
- int z = Doc->itemAdd(PageItem::Group, PageItem::Rectangle, gx, gy, gw, gh, 0, CommonStrings::None, CommonStrings::None);
- PageItem *gItem = Doc->Items->takeAt(z);
- Doc->groupObjectsToItem(gItem, newGroupedItems);
- gItem->Parent = currItem->Parent;
- gItem->gXpos = currItem->gXpos;
- gItem->gYpos = currItem->gYpos;
- if (currItem->isGroupChild())
- currItem->parentGroup()->groupItemList.insert(ind+1, gItem);
- else
- Doc->Items->insert(ind+1, gItem);
- }
- else if (newGroupedItems.count() > 0)
- {
- newGroupedItems.at(0)->Parent = currItem->Parent;
- if (currItem->isGroupChild())
- currItem->parentGroup()->groupItemList.insert(ind+1, newGroupedItems.at(0));
- else
- Doc->Items->insert(ind+1, newGroupedItems.at(0));
- }
- int toDeleteItemCount=delItems.count();
- if (toDeleteItemCount != 0)
- {
- tmpSelection.clear();
- for(int i=0; i<toDeleteItemCount; ++i)
- tmpSelection.addItem(delItems.takeAt(0)); //yes, 0, remove the first
- Doc->itemSelection_DeleteItem(&tmpSelection);
- }
- m_ScMW->HaveNewSel();
- Deselect(true);
- trans.commit();
- }
+ for(int i = 0; i < toDeleteItemCount; ++i)
+ tmpSelection.addItem(delItems.takeAt(0)); //yes, 0, remove the first
+ Doc->itemSelection_DeleteItem(&tmpSelection);
+ }
+ m_ScMW->HaveNewSel();
+ Deselect(true);
+ trans.commit();
}
void ScribusView::keyPressEvent(QKeyEvent *k)
@@ -3420,10 +3304,30 @@
void ScribusView::setObjectUndoMode()
{
_isGlobalMode = undoManager->isGlobalMode();
- if (m_ScMW->HaveDoc)
- {
- //qDebug(QString("%1 %2").arg((int)m_ScMW).arg(m_ScMW->scrActions.contains("editActionMode")));
- m_ScMW->scrActions["editActionMode"]->setChecked(true);
+ if (!m_ScMW->HaveDoc)
+ return;
+
+ //qDebug(QString("%1 %2").arg((int)m_ScMW).arg(m_ScMW->scrActions.contains("editActionMode")));
+ m_ScMW->scrActions["editActionMode"]->setChecked(true);
+ int docSelectionCount=Doc->m_Selection->count();
+ if (docSelectionCount == 1)
+ undoManager->showObject(Doc->m_Selection->itemAt(0)->getUId());
+ else if (docSelectionCount > 1)
+ undoManager->showObject(Um::NO_UNDO_STACK);
+ else if (docSelectionCount == 0)
+ undoManager->showObject(Doc->currentPage()->getUId());
+}
+
+void ScribusView::setGlobalUndoMode()
+{
+ if (!m_ScMW->HaveDoc)
+ return;
+
+ m_ScMW->scrActions["editActionMode"]->setChecked(!_isGlobalMode);
+ if (_isGlobalMode)
+ undoManager->showObject(Um::GLOBAL_UNDO_MODE);
+ else
+ {
int docSelectionCount=Doc->m_Selection->count();
if (docSelectionCount == 1)
undoManager->showObject(Doc->m_Selection->itemAt(0)->getUId());
@@ -3431,26 +3335,6 @@
undoManager->showObject(Um::NO_UNDO_STACK);
else if (docSelectionCount == 0)
undoManager->showObject(Doc->currentPage()->getUId());
- }
-}
-
-void ScribusView::setGlobalUndoMode()
-{
- if (m_ScMW->HaveDoc)
- {
- m_ScMW->scrActions["editActionMode"]->setChecked(!_isGlobalMode);
- if (_isGlobalMode)
- undoManager->showObject(Um::GLOBAL_UNDO_MODE);
- else
- {
- int docSelectionCount=Doc->m_Selection->count();
- if (docSelectionCount == 1)
- undoManager->showObject(Doc->m_Selection->itemAt(0)->getUId());
- else if (docSelectionCount > 1)
- undoManager->showObject(Um::NO_UNDO_STACK);
- else if (docSelectionCount == 0)
- undoManager->showObject(Doc->currentPage()->getUId());
- }
}
}
@@ -3759,6 +3643,6 @@
void ScribusView::setRedrawMarkerShown(bool shown)
{
- if (shown!=redrawMarker->isVisible())
+ if (shown != redrawMarker->isVisible())
redrawMarker->setVisible(shown);
}
More information about the scribus-commit
mailing list