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