r22910 by jghali - Refactor PathFinderPlugin::run()
scribus-commit
scribus-commit at lists.scribus.net
Sun Mar 24 20:12:26 UTC 2019
Author: jghali
Date: Sun Mar 24 20:12:25 2019
New Revision: 22910
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22910
Log:
Refactor PathFinderPlugin::run()
Modified:
trunk/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp
Modified: trunk/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22910&path=/trunk/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp (original)
+++ trunk/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp Sun Mar 24 20:12:25 2019
@@ -40,6 +40,7 @@
#include <QMessageBox>
#include <QPixmap>
+#include <QScopedPointer>
int pathfinder_getPluginAPIVersion()
{
@@ -131,6 +132,12 @@
currDoc = ScCore->primaryMainWindow()->doc;
if (currDoc->m_Selection->count() <= 1)
return true;
+
+ PageItem *Item1 = currDoc->m_Selection->itemAt(0);
+ PageItem *Item2 = currDoc->m_Selection->itemAt(1);
+ QScopedPointer<PathFinderDialog> dia(new PathFinderDialog(currDoc->scMW(), currDoc, Item1, Item2));
+ if (dia->exec() != QDialog::Accepted)
+ return true;
//<<#9046
UndoTransaction activeTransaction;
@@ -139,269 +146,263 @@
activeTransaction = undoManager->beginTransaction(Um::SelectionGroup, Um::IDocument, Um::PathOperation, "", Um::IPolygon);
//>>#9046
- PageItem *Item1 = currDoc->m_Selection->itemAt(0);
- PageItem *Item2 = currDoc->m_Selection->itemAt(1);
- PathFinderDialog *dia = new PathFinderDialog(currDoc->scMW(), currDoc, Item1, Item2);
- if (dia->exec())
+ int opMode = dia->opMode;
+ if (dia->keepItem1)
{
- int opMode=dia->opMode;
- if (dia->keepItem1)
- {
- PageItem *newItem;
+ PageItem *newItem;
+ if (dia->swapped)
+ {
+ newItem = new PageItem_Polygon(*Item2);
+ newItem->setSelected(false);
+ currDoc->Items->insert(currDoc->Items->indexOf(Item2), newItem);
+ }
+ else
+ {
+ newItem = new PageItem_Polygon(*Item1);
+ newItem->setSelected(false);
+ currDoc->Items->insert(currDoc->Items->indexOf(Item1), newItem);
+ }
+ if (UndoManager::undoEnabled())
+ {
+ ScItemState<PageItem*> *is = new ScItemState<PageItem*>("Create PageItem");
+ is->set("CREATE_ITEM");
+ is->setItem(newItem);
+ UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
+ undoManager->action(target, is);
+ }
+ }
+ if (dia->keepItem2)
+ {
+ PageItem *newItem;
+ if (dia->swapped)
+ {
+ newItem = new PageItem_Polygon(*Item1);
+ newItem->setSelected(false);
+ currDoc->Items->insert(currDoc->Items->indexOf(Item1), newItem);
+ }
+ else
+ {
+ newItem = new PageItem_Polygon(*Item2);
+ newItem->setSelected(false);
+ currDoc->Items->insert(currDoc->Items->indexOf(Item2), newItem);
+ }
+ if (UndoManager::undoEnabled())
+ {
+ ScItemState<PageItem*> *is = new ScItemState<PageItem*>("Create PageItem");
+ is->set("CREATE_ITEM");
+ is->setItem(newItem);
+ UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
+ undoManager->action(target, is);
+ }
+ }
+ if (opMode != 4)
+ {
+ PageItem *currItem;
+ QPainterPath path;
+ FPointArray points;
+ if (dia->targetColor == 0)
+ {
+ currItem = Item1;
if (dia->swapped)
{
- newItem = new PageItem_Polygon(*Item2);
- newItem->setSelected(false);
- currDoc->Items->insert(currDoc->Items->indexOf(Item2), newItem);
- }
+ currItem = Item2;
+ currItem->setXYPos(Item1->xPos(), Item1->yPos());
+ currItem->setRotation(0.0);
+ }
+ }
+ else
+ {
+ if (dia->swapped)
+ currItem = Item1;
else
{
- newItem = new PageItem_Polygon(*Item1);
- newItem->setSelected(false);
- currDoc->Items->insert(currDoc->Items->indexOf(Item1), newItem);
- }
- if (UndoManager::undoEnabled())
- {
- ScItemState<PageItem*> *is = new ScItemState<PageItem*>("Create PageItem");
- is->set("CREATE_ITEM");
- is->setItem(newItem);
- UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
- undoManager->action(target, is);
- }
- }
- if (dia->keepItem2)
- {
- PageItem *newItem;
- if (dia->swapped)
- {
- newItem = new PageItem_Polygon(*Item1);
- newItem->setSelected(false);
- currDoc->Items->insert(currDoc->Items->indexOf(Item1), newItem);
- }
- else
- {
- newItem = new PageItem_Polygon(*Item2);
- newItem->setSelected(false);
- currDoc->Items->insert(currDoc->Items->indexOf(Item2), newItem);
- }
- if (UndoManager::undoEnabled())
- {
- ScItemState<PageItem*> *is = new ScItemState<PageItem*>("Create PageItem");
- is->set("CREATE_ITEM");
- is->setItem(newItem);
- UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
- undoManager->action(target, is);
- }
- }
- if (opMode != 4)
- {
- PageItem *currItem;
- QPainterPath path;
- FPointArray points;
- if (dia->targetColor == 0)
- {
- currItem = Item1;
- if (dia->swapped)
- {
- currItem = Item2;
- currItem->setXYPos(Item1->xPos(), Item1->yPos());
- currItem->setRotation(0.0);
- }
- }
- else
- {
- if (dia->swapped)
- currItem = Item1;
- else
- {
- currItem = Item2;
- currItem->setXYPos(Item1->xPos(), Item1->yPos());
- currItem->setRotation(0.0);
- }
- }
- path = dia->result;
+ currItem = Item2;
+ currItem->setXYPos(Item1->xPos(), Item1->yPos());
+ currItem->setRotation(0.0);
+ }
+ }
+ path = dia->result;
+ points.fromQPainterPath(path);
+
+ //<<#9046
+ FPointArray oldPOLine=currItem->PoLine;
+ FPointArray oldContourLine=currItem->ContourLine;
+ ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = nullptr;
+ if (UndoManager::undoEnabled())
+ {
+ state = new ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
+ state->set("PATH_OPERATION");
+ state->set("PATH_OP_OLD_CLIPEDITED", currItem->ClipEdited);
+ state->set("PATH_OP_OLD_FRAMETYPE", currItem->FrameType);
+ state->set("PATH_OP_OLD_OLDB2", currItem->OldB2);
+ state->set("PATH_OP_OLD_OLDH2", currItem->OldH2);
+ state->set("PATH_OP_NEW_FRAME", false);
+ state->set("PATH_OP_NEW_CLIPEDITED", true);
+ state->set("PATH_OP_NEW_FRAMETYPE", 3);
+ }
+ //>>#9046
+
+ currItem->PoLine = points;
+ currItem->ClipEdited = true;
+ currItem->FrameType = 3;
+ currDoc->adjustItemSize(currItem);
+ currItem->OldB2 = currItem->width();
+ currItem->OldH2 = currItem->height();
+ currItem->updateClip();
+ currItem->ContourLine = currItem->PoLine.copy();
+
+ //<<#9046
+ if (UndoManager::undoEnabled())
+ {
+ state->set("PATH_OP_NEW_OLDB2", currItem->OldB2);
+ state->set("PATH_OP_NEW_OLDH2", currItem->OldH2);
+ state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(points, currItem->ContourLine)));
+ undoManager->action(currItem, state);
+ }
+ //>>#9046
+
+ currDoc->m_Selection->removeItem(currItem);
+ currDoc->itemSelection_DeleteItem();
+ }
+ else
+ {
+ QPainterPath path;
+ FPointArray points;
+ PageItem *newItem;
+ double i1x = Item1->xPos();
+ double i1y = Item1->yPos();
+ path = dia->result;
+ if (!path.isEmpty())
+ {
points.fromQPainterPath(path);
-
//<<#9046
- FPointArray oldPOLine=currItem->PoLine;
- FPointArray oldContourLine=currItem->ContourLine;
+ FPointArray oldPOLine=Item1->PoLine;
+ FPointArray oldContourLine=Item1->ContourLine;
ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = nullptr;
if (UndoManager::undoEnabled())
{
state = new ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
state->set("PATH_OPERATION");
- state->set("PATH_OP_OLD_CLIPEDITED", currItem->ClipEdited);
- state->set("PATH_OP_OLD_FRAMETYPE", currItem->FrameType);
- state->set("PATH_OP_OLD_OLDB2", currItem->OldB2);
- state->set("PATH_OP_OLD_OLDH2", currItem->OldH2);
+ state->set("PATH_OP_OLD_CLIPEDITED", Item1->ClipEdited);
+ state->set("PATH_OP_OLD_FRAMETYPE", Item1->FrameType);
+ state->set("PATH_OP_OLD_OLDB2", Item1->OldB2);
+ state->set("PATH_OP_OLD_OLDH2", Item1->OldH2);
state->set("PATH_OP_NEW_FRAME", false);
state->set("PATH_OP_NEW_CLIPEDITED", true);
state->set("PATH_OP_NEW_FRAMETYPE", 3);
}
//>>#9046
-
- currItem->PoLine = points;
- currItem->ClipEdited = true;
- currItem->FrameType = 3;
- currDoc->adjustItemSize(currItem);
- currItem->OldB2 = currItem->width();
- currItem->OldH2 = currItem->height();
- currItem->updateClip();
- currItem->ContourLine = currItem->PoLine.copy();
-
+ Item1->PoLine = points;
+ Item1->ClipEdited = true;
+ Item1->FrameType = 3;
+ currDoc->adjustItemSize(Item1);
+ Item1->OldB2 = Item1->width();
+ Item1->OldH2 = Item1->height();
+ Item1->updateClip();
+ Item1->ContourLine = Item1->PoLine.copy();
//<<#9046
if (UndoManager::undoEnabled())
{
- state->set("PATH_OP_NEW_OLDB2", currItem->OldB2);
- state->set("PATH_OP_NEW_OLDH2", currItem->OldH2);
- state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(points, currItem->ContourLine)));
- undoManager->action(currItem, state);
+ state->set("PATH_OP_NEW_OLDB2", Item1->OldB2);
+ state->set("PATH_OP_NEW_OLDH2", Item1->OldH2);
+ state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item1->PoLine, Item1->ContourLine)));
+ undoManager->action(Item1, state);
}
//>>#9046
+ }
+
+ path = QPainterPath();
+ path = dia->result1;
+ if (!path.isEmpty())
+ {
+ points.fromQPainterPath(path);
+ //<<#9046
+ FPointArray oldPOLine=Item2->PoLine;
+ FPointArray oldContourLine=Item2->ContourLine;
+ ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = nullptr;
+ if (UndoManager::undoEnabled())
+ {
+ state = new ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
+ state->set("PATH_OPERATION");
+ state->set("PATH_OP_OLD_CLIPEDITED", Item2->ClipEdited);
+ state->set("PATH_OP_OLD_FRAMETYPE", Item2->FrameType);
+ state->set("PATH_OP_OLD_OLDB2", Item2->OldB2);
+ state->set("PATH_OP_OLD_OLDH2", Item2->OldH2);
+ state->set("PATH_OP_NEW_FRAME", false);
+ state->set("PATH_OP_NEW_CLIPEDITED", true);
+ state->set("PATH_OP_NEW_FRAMETYPE", 3);
+ }
+ //>>#9046
+ Item2->setXYPos(i1x, i1y);
+ Item2->setRotation(0.0);
+ Item2->PoLine = points;
+ Item2->ClipEdited = true;
+ Item2->FrameType = 3;
+ currDoc->adjustItemSize(Item2);
+ Item2->OldB2 = Item2->width();
+ Item2->OldH2 = Item2->height();
+ Item2->updateClip();
+ Item2->ContourLine = Item2->PoLine.copy();
+ //<<#9046
+ if (UndoManager::undoEnabled())
+ {
+ state->set("PATH_OP_NEW_OLDB2", Item2->OldB2);
+ state->set("PATH_OP_NEW_OLDH2", Item2->OldH2);
+ state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item2->PoLine, Item2->ContourLine)));
+ undoManager->action(Item2, state);
+ }
+ //>>#9046
+ }
- currDoc->m_Selection->removeItem(currItem);
- currDoc->itemSelection_DeleteItem();
- }
- else
- {
- QPainterPath path;
- FPointArray points;
- PageItem *newItem;
- double i1x = Item1->xPos();
- double i1y = Item1->yPos();
- path = dia->result;
- if (!path.isEmpty())
- {
- points.fromQPainterPath(path);
- //<<#9046
- FPointArray oldPOLine=Item1->PoLine;
- FPointArray oldContourLine=Item1->ContourLine;
- ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = nullptr;
- if (UndoManager::undoEnabled())
- {
- state = new ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
- state->set("PATH_OPERATION");
- state->set("PATH_OP_OLD_CLIPEDITED", Item1->ClipEdited);
- state->set("PATH_OP_OLD_FRAMETYPE", Item1->FrameType);
- state->set("PATH_OP_OLD_OLDB2", Item1->OldB2);
- state->set("PATH_OP_OLD_OLDH2", Item1->OldH2);
- state->set("PATH_OP_NEW_FRAME", false);
- state->set("PATH_OP_NEW_CLIPEDITED", true);
- state->set("PATH_OP_NEW_FRAMETYPE", 3);
- }
- //>>#9046
- Item1->PoLine = points;
- Item1->ClipEdited = true;
- Item1->FrameType = 3;
- currDoc->adjustItemSize(Item1);
- Item1->OldB2 = Item1->width();
- Item1->OldH2 = Item1->height();
- Item1->updateClip();
- Item1->ContourLine = Item1->PoLine.copy();
- //<<#9046
- if (UndoManager::undoEnabled())
- {
- state->set("PATH_OP_NEW_OLDB2", Item1->OldB2);
- state->set("PATH_OP_NEW_OLDH2", Item1->OldH2);
- state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item1->PoLine, Item1->ContourLine)));
- undoManager->action(Item1, state);
- }
- //>>#9046
- }
-
- path = QPainterPath();
- path = dia->result1;
- if (!path.isEmpty())
- {
- points.fromQPainterPath(path);
- //<<#9046
- FPointArray oldPOLine=Item2->PoLine;
- FPointArray oldContourLine=Item2->ContourLine;
- ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = nullptr;
- if (UndoManager::undoEnabled())
- {
- state = new ScItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
- state->set("PATH_OPERATION");
- state->set("PATH_OP_OLD_CLIPEDITED", Item2->ClipEdited);
- state->set("PATH_OP_OLD_FRAMETYPE", Item2->FrameType);
- state->set("PATH_OP_OLD_OLDB2", Item2->OldB2);
- state->set("PATH_OP_OLD_OLDH2", Item2->OldH2);
- state->set("PATH_OP_NEW_FRAME", false);
- state->set("PATH_OP_NEW_CLIPEDITED", true);
- state->set("PATH_OP_NEW_FRAMETYPE", 3);
- }
- //>>#9046
- Item2->setXYPos(i1x, i1y);
- Item2->setRotation(0.0);
- Item2->PoLine = points;
- Item2->ClipEdited = true;
- Item2->FrameType = 3;
- currDoc->adjustItemSize(Item2);
- Item2->OldB2 = Item2->width();
- Item2->OldH2 = Item2->height();
- Item2->updateClip();
- Item2->ContourLine = Item2->PoLine.copy();
- //<<#9046
- if (UndoManager::undoEnabled())
- {
- state->set("PATH_OP_NEW_OLDB2", Item2->OldB2);
- state->set("PATH_OP_NEW_OLDH2", Item2->OldH2);
- state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item2->PoLine, Item2->ContourLine)));
- undoManager->action(Item2, state);
- }
- //>>#9046
- }
-
- path = QPainterPath();
- path = dia->result2;
- if (!path.isEmpty())
- {
- if (dia->targetColor == 0)
- {
- newItem = new PageItem_Polygon(*Item1);
- newItem->setXYPos(i1x, i1y);
- }
- else
- {
- newItem = new PageItem_Polygon(*Item2);
- newItem->setXYPos(i1x, i1y);
- newItem->setRotation(0.0);
- }
- currDoc->Items->append(newItem);
- newItem->setSelected(false);
- points.fromQPainterPath(path);
- newItem->PoLine = points;
- newItem->ClipEdited = true;
- newItem->FrameType = 3;
- currDoc->adjustItemSize(newItem);
- newItem->OldB2 = newItem->width();
- newItem->OldH2 = newItem->height();
- newItem->updateClip();
- newItem->ContourLine = newItem->PoLine.copy();
- if (dia->targetColor == 2)
- {
- QString fill = dia->getOtherFillColor();
- if (fill == CommonStrings::tr_NoneColor)
- fill = CommonStrings::None;
- newItem->setFillColor(fill);
- QString stroke = dia->getOtherLineColor();
- if (stroke == CommonStrings::tr_NoneColor)
- stroke = CommonStrings::None;
- newItem->setLineColor(stroke);
- }
- }
- currDoc->m_Selection->clear();
- currDoc->view()->Deselect(true);
- }
- currDoc->changed();
- currDoc->view()->DrawNew();
+ path = QPainterPath();
+ path = dia->result2;
+ if (!path.isEmpty())
+ {
+ if (dia->targetColor == 0)
+ {
+ newItem = new PageItem_Polygon(*Item1);
+ newItem->setXYPos(i1x, i1y);
+ }
+ else
+ {
+ newItem = new PageItem_Polygon(*Item2);
+ newItem->setXYPos(i1x, i1y);
+ newItem->setRotation(0.0);
+ }
+ currDoc->Items->append(newItem);
+ newItem->setSelected(false);
+ points.fromQPainterPath(path);
+ newItem->PoLine = points;
+ newItem->ClipEdited = true;
+ newItem->FrameType = 3;
+ currDoc->adjustItemSize(newItem);
+ newItem->OldB2 = newItem->width();
+ newItem->OldH2 = newItem->height();
+ newItem->updateClip();
+ newItem->ContourLine = newItem->PoLine.copy();
+ if (dia->targetColor == 2)
+ {
+ QString fill = dia->getOtherFillColor();
+ if (fill == CommonStrings::tr_NoneColor)
+ fill = CommonStrings::None;
+ newItem->setFillColor(fill);
+ QString stroke = dia->getOtherLineColor();
+ if (stroke == CommonStrings::tr_NoneColor)
+ stroke = CommonStrings::None;
+ newItem->setLineColor(stroke);
+ }
+ }
+ currDoc->m_Selection->clear();
+ currDoc->view()->Deselect(true);
}
- delete dia;
+
+ currDoc->changed();
+ currDoc->view()->DrawNew();
//<<#9046
if (activeTransaction)
activeTransaction.commit();
//>>#9046
-
+
return true;
}
More information about the scribus-commit
mailing list