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;
 }


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to