118
120
bool PathFinderPlugin::run(ScribusDoc* doc, QString)
120
QString vers = QString(qVersion()).left(5);
123
QMessageBox::information(doc->scMW(), tr("Qt Version too old"), tr("This plugin requires at least version 4.3.3 of the Qt library"));
126
122
ScribusDoc* currDoc = doc;
127
123
if (currDoc == 0)
128
124
currDoc = ScCore->primaryMainWindow()->doc;
129
if (currDoc->m_Selection->count() > 1)
125
if (currDoc->m_Selection->count() <= 1)
129
UndoTransaction* activeTransaction = NULL;
130
UndoManager* undoManager = UndoManager::instance();
131
if (UndoManager::undoEnabled())
132
activeTransaction = new UndoTransaction(undoManager->beginTransaction(Um::SelectionGroup, Um::IDocument, Um::PathOperation, "", Um::IPolygon));
135
PageItem *Item1 = currDoc->m_Selection->itemAt(0);
136
PageItem *Item2 = currDoc->m_Selection->itemAt(1);
137
PathFinderDialog *dia = new PathFinderDialog(currDoc->scMW(), currDoc, Item1, Item2);
131
PageItem *Item1 = currDoc->m_Selection->itemAt(0);
132
PageItem *Item2 = currDoc->m_Selection->itemAt(1);
133
PathFinderDialog *dia = new PathFinderDialog(currDoc->scMW(), currDoc, Item1, Item2);
141
newItem = new PageItem_Polygon(*Item2);
142
newItem->setSelected(false);
143
currDoc->Items->insert(Item2->ItemNr, newItem);
147
newItem = new PageItem_Polygon(*Item1);
148
newItem->setSelected(false);
149
currDoc->Items->insert(Item1->ItemNr, newItem);
157
newItem = new PageItem_Polygon(*Item1);
158
newItem->setSelected(false);
159
currDoc->Items->insert(Item1->ItemNr, newItem);
163
newItem = new PageItem_Polygon(*Item2);
164
newItem->setSelected(false);
165
currDoc->Items->insert(Item2->ItemNr, newItem);
168
if (dia->keepItem1 || dia->keepItem2)
169
currDoc->renumberItemsInListOrder();
170
if (dia->opMode != 4)
140
int opMode=dia->opMode;
146
newItem = new PageItem_Polygon(*Item2);
147
newItem->setSelected(false);
148
currDoc->Items->insert(Item2->ItemNr, newItem);
152
newItem = new PageItem_Polygon(*Item1);
153
newItem->setSelected(false);
154
currDoc->Items->insert(Item1->ItemNr, newItem);
156
if (UndoManager::undoEnabled())
158
ItemState<PageItem*> *is = new ItemState<PageItem*>("Create PageItem");
159
is->set("CREATE_ITEM", "create_item");
160
is->setItem(newItem);
161
UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
162
undoManager->action(target, is);
170
newItem = new PageItem_Polygon(*Item1);
171
newItem->setSelected(false);
172
currDoc->Items->insert(Item1->ItemNr, newItem);
176
newItem = new PageItem_Polygon(*Item2);
177
newItem->setSelected(false);
178
currDoc->Items->insert(Item2->ItemNr, newItem);
180
if (UndoManager::undoEnabled())
182
ItemState<PageItem*> *is = new ItemState<PageItem*>("Create PageItem");
183
is->set("CREATE_ITEM", "create_item");
184
is->setItem(newItem);
185
UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
186
undoManager->action(target, is);
189
if (dia->keepItem1 || dia->keepItem2)
190
currDoc->renumberItemsInListOrder();
196
if (dia->targetColor == 0)
202
currItem->setXYPos(Item1->xPos(), Item1->yPos());
203
currItem->setRotation(0.0);
213
currItem->setXYPos(Item1->xPos(), Item1->yPos());
214
currItem->setRotation(0.0);
218
points.fromQPainterPath(path);
221
FPointArray oldPOLine=currItem->PoLine;
222
FPointArray oldContourLine=currItem->ContourLine;
223
ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = NULL;
224
if (UndoManager::undoEnabled())
226
state = new ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
227
state->set("PATH_OPERATION", "path_operation");
228
state->set("PATH_OP_OLD_FRAME", currItem->Frame);
229
state->set("PATH_OP_OLD_CLIPEDITED", currItem->ClipEdited);
230
state->set("PATH_OP_OLD_FRAMETYPE", currItem->FrameType);
231
state->set("PATH_OP_OLD_OLDB2", currItem->OldB2);
232
state->set("PATH_OP_OLD_OLDH2", currItem->OldH2);
233
state->set("PATH_OP_NEW_FRAME", false);
234
state->set("PATH_OP_NEW_CLIPEDITED", true);
235
state->set("PATH_OP_NEW_FRAMETYPE", 3);
239
currItem->PoLine = points;
240
currItem->Frame = false;
241
currItem->ClipEdited = true;
242
currItem->FrameType = 3;
243
currDoc->AdjustItemSize(currItem);
244
currItem->OldB2 = currItem->width();
245
currItem->OldH2 = currItem->height();
246
currItem->updateClip();
247
currItem->ContourLine = currItem->PoLine.copy();
250
if (UndoManager::undoEnabled())
252
state->set("PATH_OP_NEW_OLDB2", currItem->OldB2);
253
state->set("PATH_OP_NEW_OLDH2", currItem->OldH2);
254
state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(points, currItem->ContourLine)));
255
undoManager->action(currItem, state);
259
currDoc->m_Selection->removeItem(currItem);
260
currDoc->itemSelection_DeleteItem();
268
double i1x = Item1->xPos();
269
double i1y = Item1->yPos();
273
points.fromQPainterPath(path);
275
FPointArray oldPOLine=Item1->PoLine;
276
FPointArray oldContourLine=Item1->ContourLine;
277
ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = NULL;
278
if (UndoManager::undoEnabled())
280
state = new ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
281
state->set("PATH_OPERATION", "path_operation");
282
state->set("PATH_OP_OLD_FRAME", Item1->Frame);
283
state->set("PATH_OP_OLD_CLIPEDITED", Item1->ClipEdited);
284
state->set("PATH_OP_OLD_FRAMETYPE", Item1->FrameType);
285
state->set("PATH_OP_OLD_OLDB2", Item1->OldB2);
286
state->set("PATH_OP_OLD_OLDH2", Item1->OldH2);
287
state->set("PATH_OP_NEW_FRAME", false);
288
state->set("PATH_OP_NEW_CLIPEDITED", true);
289
state->set("PATH_OP_NEW_FRAMETYPE", 3);
292
Item1->PoLine = points;
293
Item1->Frame = false;
294
Item1->ClipEdited = true;
295
Item1->FrameType = 3;
296
currDoc->AdjustItemSize(Item1);
297
Item1->OldB2 = Item1->width();
298
Item1->OldH2 = Item1->height();
300
Item1->ContourLine = Item1->PoLine.copy();
302
if (UndoManager::undoEnabled())
304
state->set("PATH_OP_NEW_OLDB2", Item1->OldB2);
305
state->set("PATH_OP_NEW_OLDH2", Item1->OldH2);
306
state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item1->PoLine, Item1->ContourLine)));
307
undoManager->action(Item1, state);
312
path = QPainterPath();
316
points.fromQPainterPath(path);
318
FPointArray oldPOLine=Item2->PoLine;
319
FPointArray oldContourLine=Item2->ContourLine;
320
ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = NULL;
321
if (UndoManager::undoEnabled())
323
state = new ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
324
state->set("PATH_OPERATION", "path_operation");
325
state->set("PATH_OP_OLD_FRAME", Item2->Frame);
326
state->set("PATH_OP_OLD_CLIPEDITED", Item2->ClipEdited);
327
state->set("PATH_OP_OLD_FRAMETYPE", Item2->FrameType);
328
state->set("PATH_OP_OLD_OLDB2", Item2->OldB2);
329
state->set("PATH_OP_OLD_OLDH2", Item2->OldH2);
330
state->set("PATH_OP_NEW_FRAME", false);
331
state->set("PATH_OP_NEW_CLIPEDITED", true);
332
state->set("PATH_OP_NEW_FRAMETYPE", 3);
335
Item2->setXYPos(i1x, i1y);
336
Item2->setRotation(0.0);
337
Item2->PoLine = points;
338
Item2->Frame = false;
339
Item2->ClipEdited = true;
340
Item2->FrameType = 3;
341
currDoc->AdjustItemSize(Item2);
342
Item2->OldB2 = Item2->width();
343
Item2->OldH2 = Item2->height();
345
Item2->ContourLine = Item2->PoLine.copy();
347
if (UndoManager::undoEnabled())
349
state->set("PATH_OP_NEW_OLDB2", Item2->OldB2);
350
state->set("PATH_OP_NEW_OLDH2", Item2->OldH2);
351
state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item2->PoLine, Item2->ContourLine)));
352
undoManager->action(Item2, state);
357
path = QPainterPath();
175
361
if (dia->targetColor == 0)
181
currItem->setXYPos(Item1->xPos(), Item1->yPos());
182
currItem->setRotation(0.0);
363
newItem = new PageItem_Polygon(*Item1);
364
newItem->setXYPos(i1x, i1y);
192
currItem->setXYPos(Item1->xPos(), Item1->yPos());
193
currItem->setRotation(0.0);
368
newItem = new PageItem_Polygon(*Item2);
369
newItem->setXYPos(i1x, i1y);
370
newItem->setRotation(0.0);
372
currDoc->Items->append(newItem);
373
newItem->ItemNr = currDoc->Items->count()-1;
374
newItem->setSelected(false);
197
375
points.fromQPainterPath(path);
198
currItem->PoLine = points;
199
currItem->Frame = false;
200
currItem->ClipEdited = true;
201
currItem->FrameType = 3;
202
currDoc->AdjustItemSize(currItem);
203
currItem->OldB2 = currItem->width();
204
currItem->OldH2 = currItem->height();
205
currItem->updateClip();
206
currItem->ContourLine = currItem->PoLine.copy();
207
currDoc->m_Selection->removeItem(currItem);
208
currDoc->itemSelection_DeleteItem();
376
newItem->PoLine = points;
377
newItem->Frame = false;
378
newItem->ClipEdited = true;
379
newItem->FrameType = 3;
380
currDoc->AdjustItemSize(newItem);
381
newItem->OldB2 = newItem->width();
382
newItem->OldH2 = newItem->height();
383
newItem->updateClip();
384
newItem->ContourLine = newItem->PoLine.copy();
385
if (dia->targetColor == 2)
387
QString fill = dia->getOtherFillColor();
388
if (fill == CommonStrings::tr_NoneColor)
389
fill = CommonStrings::None;
390
newItem->setFillColor(fill);
391
QString stroke = dia->getOtherLineColor();
392
if (stroke == CommonStrings::tr_NoneColor)
393
stroke = CommonStrings::None;
394
newItem->setLineColor(stroke);
396
if (UndoManager::undoEnabled())
398
ItemState<PageItem*> *is = new ItemState<PageItem*>("Create PageItem");
399
is->set("CREATE_ITEM", "create_item");
400
is->setItem(newItem);
401
UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
402
undoManager->action(target, is);
215
double i1x = Item1->xPos();
216
double i1y = Item1->yPos();
220
points.fromQPainterPath(path);
221
Item1->PoLine = points;
222
Item1->Frame = false;
223
Item1->ClipEdited = true;
224
Item1->FrameType = 3;
225
currDoc->AdjustItemSize(Item1);
226
Item1->OldB2 = Item1->width();
227
Item1->OldH2 = Item1->height();
229
Item1->ContourLine = Item1->PoLine.copy();
405
currDoc->m_Selection->clear();
406
currDoc->view()->Deselect(true);
409
currDoc->view()->DrawNew();
232
path = QPainterPath();
236
points.fromQPainterPath(path);
237
Item2->setXYPos(i1x, i1y);
238
Item2->setRotation(0.0);
239
Item2->PoLine = points;
240
Item2->Frame = false;
241
Item2->ClipEdited = true;
242
Item2->FrameType = 3;
243
currDoc->AdjustItemSize(Item2);
244
Item2->OldB2 = Item2->width();
245
Item2->OldH2 = Item2->height();
247
Item2->ContourLine = Item2->PoLine.copy();
250
path = QPainterPath();
254
if (dia->targetColor == 0)
256
newItem = new PageItem_Polygon(*Item1);
257
newItem->setXYPos(i1x, i1y);
261
newItem = new PageItem_Polygon(*Item2);
262
newItem->setXYPos(i1x, i1y);
263
newItem->setRotation(0.0);
265
currDoc->Items->append(newItem);
266
newItem->ItemNr = currDoc->Items->count()-1;
267
newItem->setSelected(false);
268
points.fromQPainterPath(path);
269
newItem->PoLine = points;
270
newItem->Frame = false;
271
newItem->ClipEdited = true;
272
newItem->FrameType = 3;
273
currDoc->AdjustItemSize(newItem);
274
newItem->OldB2 = newItem->width();
275
newItem->OldH2 = newItem->height();
276
newItem->updateClip();
277
newItem->ContourLine = newItem->PoLine.copy();
278
if (dia->targetColor == 2)
280
QString fill = dia->getOtherFillColor();
281
if (fill == CommonStrings::tr_NoneColor)
282
fill = CommonStrings::None;
283
newItem->setFillColor(fill);
284
QString stroke = dia->getOtherLineColor();
285
if (stroke == CommonStrings::tr_NoneColor)
286
stroke = CommonStrings::None;
287
newItem->setLineColor(stroke);
290
currDoc->m_Selection->clear();
291
currDoc->view()->Deselect(true);
294
currDoc->view()->DrawNew();
414
if (activeTransaction)
416
activeTransaction->commit();
417
delete activeTransaction;
418
activeTransaction = NULL;