1 /***************************************************************************
2 * *
3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. *
7 * *
8 ***************************************************************************/
9
10 /*
11 For general Scribus (>=1.3.2) copyright and licensing information please refer
12 to the COPYING file provided with the program. Following this notice may exist
13 a copyright and/or license notice that predates the release of Scribus 1.3.2
14 for which a new license (GPL+exception) is in place.
15 */
16
17 #include <algorithm>
18
19 #include "appmodehelper.h"
20 #include "appmodes.h"
21 #include "canvasmode.h"
22 #include "pageitem.h"
23 #include "pageitem_table.h"
24 #include "pluginmanager.h"
25 #include "prefsmanager.h"
26 #include "scmimedata.h"
27 #include "scplugin.h"
28 #include "scribus.h"
29 #include "scribuscore.h"
30 #include "scribusdoc.h"
31 #include "scribusview.h"
32 #include "selection.h"
33 #include "ui/charselect.h"
34 #include "ui/hruler.h"
35 #include "ui/modetoolbar.h"
36 #include "ui/outlinepalette.h"
37 #include "ui/pageselector.h"
38 #include "ui/propertiespalette.h"
39 #include "ui/scmwmenumanager.h"
40 #include "ui/scrspinbox.h"
41 #include "ui/vruler.h"
42 #include "undomanager.h"
43
44
AppModeHelper(QObject * parent)45 AppModeHelper::AppModeHelper(QObject *parent) :
46 QObject(parent)
47 {
48 }
49
setup(ActionManager * am,QMap<QString,QPointer<ScrAction>> * scrA,QMap<QString,QPointer<ScrAction>> * scrRFA,QMap<QString,QPointer<ScrAction>> * sWA,QMap<QString,QPointer<ScrAction>> * scSA,QMap<QString,QPointer<ScrAction>> * scLA,QMap<QString,QPointer<ScrAction>> * scRPA)50 void AppModeHelper::setup(ActionManager* am,
51 QMap<QString, QPointer<ScrAction> > *scrA,
52 QMap<QString, QPointer<ScrAction> > *scrRFA,
53 QMap<QString, QPointer<ScrAction> > *sWA,
54 QMap<QString, QPointer<ScrAction> > *scSA,
55 QMap<QString, QPointer<ScrAction> > *scLA,
56 QMap<QString, QPointer<ScrAction> > *scRPA)
57 {
58 a_actMgr=am;
59 a_scrActions=scrA;
60 a_scrRecentFileActions=scrRFA;
61 a_scrWindowsActions=sWA;
62 a_scrScrapActions=scSA;
63 a_scrLayersActions=scLA;
64 a_scrRecentPasteActions=scRPA;
65 }
66
resetApplicationMode(int newMode)67 void AppModeHelper::resetApplicationMode(int newMode)
68 {
69 a_actMgr->disconnectModeActions();
70 setModeActionsPerMode(newMode);
71 a_actMgr->connectModeActions();
72 }
73
setApplicationMode(ScribusMainWindow * scmw,ScribusDoc * doc,int newMode)74 void AppModeHelper::setApplicationMode(ScribusMainWindow* scmw, ScribusDoc* doc, int newMode)
75 {
76 //Application modes start at 1 (appmodes.h), canvasmodes start at 1000 (canvasmode.h)
77 assert(newMode < submodeFirstSubmode);
78
79 //If no doc and we end here, just reset the tool actions
80 if (doc==nullptr)
81 {
82 resetApplicationMode(newMode);
83 return;
84 }
85
86 //disconnect the tools actions so we don't fire them off
87 a_actMgr->disconnectModeActions();
88 setModeActionsPerMode(newMode);
89
90 int oldMode = doc->appMode;
91 PageItem *currItem=nullptr;
92 if (!doc->m_Selection->isEmpty())
93 currItem = doc->m_Selection->itemAt(0);
94
95 //Ugly hack but I have absolutely no idea about how to do this in another way
96 if (UndoManager::undoEnabled() && currItem && oldMode != newMode && (newMode == modeEditMeshPatch || oldMode == modeEditMeshPatch ||
97 newMode == modeEditMeshGradient || oldMode == modeEditMeshGradient ||
98 newMode == modeEditGradientVectors || oldMode == modeEditGradientVectors ||
99 newMode == modeEditPolygon || oldMode == modeEditPolygon ||
100 newMode == modeEditArc || oldMode == modeEditArc ||
101 newMode == modeEditSpiral || oldMode == modeEditSpiral))
102 {
103 SimpleState *ss = new SimpleState(Um::Mode);
104 ss->set("CHANGE_MODE");
105 ss->set("OLD", oldMode);
106 ss->set("NEW", newMode);
107 UndoManager::instance()->action(currItem,ss);
108 }
109 doc->appMode = newMode ;
110 //disable text action which work only text frame in edit mode
111 if ((newMode != modeEdit) || (!currItem) || !currItem->isTextFrame())
112 enableTextActions(false);
113 if (newMode != modeDrawShapes)
114 doc->SubMode = -1;
115 if (newMode != modeNormal && newMode != modeStoryEditor)
116 scmw->activateWindow();
117
118 bool layerUnlocked = !doc->layerLocked(doc->activeLayer());
119
120 switch (oldMode)
121 {
122 case modeDrawBezierLine:
123 {
124 //if No nodes were created
125 if (currItem == nullptr)
126 {
127 setSpecialEditMode(false);
128 break;
129 }
130 scmw->slotDocCh();
131 setSpecialEditMode(false);
132 break;
133 }
134 case modeEdit:
135 {
136 if (newMode != modeEdit)
137 a_actMgr->restoreActionShortcutsPostEditMode();
138 scmw->zoomSpinBox->setFocusPolicy(Qt::ClickFocus);
139 scmw->pageSelector->setFocusPolicy(Qt::ClickFocus);
140 (*a_scrActions)["editClearContents"]->setEnabled(false);
141 (*a_scrActions)["editTruncateContents"]->setEnabled(false);
142 scmw->charPalette->setEnabled(false, nullptr);
143 if (currItem != nullptr)
144 {
145 currItem->layout();
146 doc->regionsChanged()->update(currItem->getVisualBoundingRect());
147 if (currItem->isTextFrame())
148 enableTextActions(false);
149 // scrMenuMgr->setMenuEnabled("Item", true);
150 setTextEditMode(false);
151 }
152 doc->view()->horizRuler->textMode(false);
153 doc->view()->horizRuler->update();
154 }
155 break;
156 case modeEditArc:
157 setSpecialEditMode(false);
158 break;
159 case modeEditClip:
160 {
161 if (newMode != modeEditClip)
162 {
163 scmw->NoFrameEdit();
164 // #12898: disable select actions in Edit menu editing nodes
165 (*a_scrActions)["editSelectAll"]->setEnabled(true);
166 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(true);
167 (*a_scrActions)["editDeselectAll"]->setEnabled(true);
168 }
169 }
170 break;
171 case modeEditGradientVectors:
172 setSpecialEditMode(false);
173 break;
174 case modeEditMeshGradient:
175 setSpecialEditMode(false);
176 break;
177 case modeEditMeshPatch:
178 setSpecialEditMode(false);
179 break;
180 case modeEditPolygon:
181 setSpecialEditMode(false);
182 break;
183 case modeEditSpiral:
184 setSpecialEditMode(false);
185 break;
186 case modeEditTable:
187 if (newMode != modeEditTable)
188 {
189 scmw->charPalette->setEnabled(false, nullptr);
190 enableTextActions(false);
191 (*a_scrActions)["insertSampleText"]->setEnabled(false);
192 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(false);
193 a_actMgr->restoreActionShortcutsPostEditMode();
194 }
195 break;
196 case modeEditWeldPoint:
197 setSpecialEditMode(false);
198 break;
199 case modeLinkFrames:
200 doc->regionsChanged()->update(QRect());
201 break;
202 case modeUnlinkFrames:
203 doc->regionsChanged()->update(QRect());
204 break;
205 }
206
207 switch (newMode)
208 {
209 case modeNormal:
210 {
211 bool editSearchReplace = false;
212 if (currItem != nullptr)
213 {
214 editSearchReplace |= currItem->isTextFrame();
215 editSearchReplace |= (currItem->itemText.length() > 0);
216 editSearchReplace |= (doc->m_Selection->count() == 1);
217 }
218 (*a_scrActions)["editSearchReplace"]->setEnabled(editSearchReplace);
219
220 (*a_scrActions)["editCut"]->setEnabled(currItem != nullptr);
221 (*a_scrActions)["editCopy"]->setEnabled(currItem != nullptr);
222 (*a_scrActions)["editClearContents"]->setEnabled(currItem != nullptr);
223 (*a_scrActions)["editPaste"]->setEnabled(layerUnlocked && ScMimeData::clipboardHasScribusData());
224 (*a_scrActions)["editTruncateContents"]->setEnabled((currItem != nullptr) && currItem->isTextFrame());
225
226 scmw->propertiesPalette->setGradientEditMode(false);
227 scmw->outlinePalette->setEnabled(true);
228 }
229 break;
230 case modeCopyProperties:
231 {
232 if (!doc->m_Selection->isEmpty())
233 {
234 doc->ElemToLink = doc->m_Selection->itemAt(0);
235 doc->view()->deselectItems(true);
236 (*a_scrActions)["toolsCopyProperties"]->setEnabled(true);
237 }
238 }
239 break;
240 case modeDrawArc:
241 break;
242 case modeDrawBezierLine:
243 {
244 setSpecialEditMode(true);
245 if ((doc->m_Selection->count() != 0) && (!PrefsManager::instance().appPrefs.uiPrefs.stickyTools))
246 doc->view()->deselectItems(true);
247 }
248 break;
249 case modeDrawCalligraphicLine:
250 break;
251 case modeDrawFreehandLine:
252 break;
253 case modeDrawImage:
254 break;
255 case modeDrawLatex:
256 break;
257 case modeDrawLine:
258 break;
259 case modeDrawRegularPolygon:
260 break;
261 case modeDrawShapes:
262 {
263 doc->SubMode = scmw->modeToolBar->SubMode;
264 doc->ShapeValues = scmw->modeToolBar->ShapeVals;
265 doc->ValCount = scmw->modeToolBar->ValCount;
266 scmw->emitUpdateRequest(reqCustomShapeUpdate);
267 }
268 break;
269 case modeDrawSpiral:
270 break;
271 case modeDrawTable:
272 break;
273 case modeDrawTable2:
274 break;
275 case modeDrawText:
276 break;
277 case modeEdit:
278 {
279 if (oldMode != modeEdit)
280 a_actMgr->saveActionShortcutsPreEditMode();
281 if (currItem != nullptr)
282 {
283 currItem->itemText.setCursorPosition(0);
284 scmw->setTBvals(currItem);
285 }
286 (*a_scrActions)["editPaste"]->setEnabled(false);
287 if (currItem != nullptr && currItem->isTextFrame())
288 {
289 scmw->charPalette->setEnabled(true, currItem);
290 enableTextActions(true, currItem->currentCharStyle().font().scName());
291 currItem->asTextFrame()->toggleEditModeActions();
292 }
293 if (ScMimeData::clipboardHasScribusData())
294 {
295 bool textFrameEditMode = ((currItem != nullptr) && (currItem->isTextFrame()));
296 (*a_scrActions)["editPaste"]->setEnabled( textFrameEditMode || (currItem == nullptr) );
297 }
298 setTextEditMode(true);
299
300 if (currItem != nullptr)
301 {
302 (*a_scrActions)["editCut"]->setEnabled(currItem->HasSel);
303 (*a_scrActions)["editCopy"]->setEnabled(currItem->HasSel);
304 (*a_scrActions)["editClearContents"]->setEnabled(currItem->HasSel);
305 (*a_scrActions)["editTruncateContents"]->setEnabled(currItem->HasSel && currItem->isTextFrame());
306 (*a_scrActions)["editSearchReplace"]->setEnabled(true);
307 }
308 }
309 break;
310 case modeEditArc:
311 setSpecialEditMode(true);
312 break;
313 case modeEditClip:
314 {
315 if (oldMode != modeEditClip)
316 {
317 scmw->ToggleFrameEdit();
318 // #12898: disable select actions in Edit menu editing nodes
319 (*a_scrActions)["editSelectAll"]->setEnabled(false);
320 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(false);
321 (*a_scrActions)["editDeselectAll"]->setEnabled(false);
322 }
323 }
324 break;
325 case modeEditGradientVectors:
326 {
327 setSpecialEditMode(true);
328 scmw->propertiesPalette->setGradientEditMode(true);
329 }
330 break;
331 case modeEditMeshGradient:
332 setSpecialEditMode(true);
333 break;
334 case modeEditMeshPatch:
335 setSpecialEditMode(true);
336 break;
337 case modeEditPolygon:
338 setSpecialEditMode(true);
339 break;
340 case modeEditSpiral:
341 setSpecialEditMode(true);
342 break;
343 case modeEditTable:
344 {
345 if (currItem && oldMode != modeEditTable)
346 {
347 scmw->charPalette->setEnabled(true, currItem);
348 (*a_scrActions)["insertSampleText"]->setEnabled(true);
349 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(true);
350 PageItem *i2 = currItem->asTable()->activeCell().textFrame();
351 enableTextActions(true, i2->currentCharStyle().font().scName());
352 setTextEditMode(true);
353 a_actMgr->saveActionShortcutsPreEditMode();
354 // #11938: Paste is not correctly enabled in modeEditTable
355 if (ScMimeData::clipboardHasScribusData())
356 (*a_scrActions)["editPaste"]->setEnabled(currItem->isTable());
357 }
358 }
359 break;
360 case modeEditWeldPoint:
361 setSpecialEditMode(true);
362 break;
363 case modeEyeDropper:
364 break;
365 case modeImportImage:
366 break;
367 case modeImportObject:
368 break;
369 case modeInsertPDF3DAnnotation:
370 break;
371 case modeInsertPDFButton:
372 break;
373 case modeInsertPDFCheckbox:
374 break;
375 case modeInsertPDFCombobox:
376 break;
377 case modeInsertPDFLinkAnnotation:
378 break;
379 case modeInsertPDFListbox:
380 break;
381 case modeInsertPDFRadioButton:
382 break;
383 case modeInsertPDFTextAnnotation:
384 break;
385 case modeInsertPDFTextfield:
386 break;
387 case modeLinkFrames:
388 {
389 doc->regionsChanged()->update(QRect());
390 doc->ElemToLink = doc->m_Selection->itemAt(0);
391 }
392 break;
393 case modeMagnifier:
394 doc->view()->Magnify = true;
395 break;
396 case modeMeasurementTool:
397 break;
398 case modePanning:
399 break;
400 case modeRotation:
401 break;
402 case modeStoryEditor:
403 {
404 scmw->slotStoryEditor(oldMode == modeEditTable);
405 scmw->slotSelect();
406 }
407 break;
408 case modeUnlinkFrames:
409 doc->regionsChanged()->update(QRect());
410 break;
411 default:
412 //No doc open?
413 break;
414 }
415 bool inAnEditMode = doc->inAnEditMode();
416 if (inAnEditMode)
417 {
418 (*a_scrActions)["itemSendToPattern"]->setEnabled(false);
419 (*a_scrActions)["itemSendToInline"]->setEnabled(false);
420 }
421 scmw->enablePalettes(!inAnEditMode);
422 scmw->pageSelector->setEnabled(!inAnEditMode);
423 scmw->layerMenu->setEnabled(!inAnEditMode);
424 emit AppModeChanged(oldMode, newMode);
425 a_actMgr->connectModeActions();
426 PluginManager::instance().enablePluginActionsForSelection(scmw);
427 }
428
enableActionsForSelection(ScribusMainWindow * scmw,ScribusDoc * doc)429 void AppModeHelper::enableActionsForSelection(ScribusMainWindow* scmw, ScribusDoc* doc)
430 {
431 int SelectedType = -1;
432 PageItem *currItem = nullptr;
433 const int docSelectionCount = doc->m_Selection->count();
434 if (docSelectionCount > 0)
435 {
436 currItem = doc->m_Selection->itemAt(0);
437 SelectedType = currItem->itemType();
438 }
439 assert (docSelectionCount == 0 || currItem != nullptr); // help coverity analysis
440
441 bool inAnEditMode = doc->inAnEditMode();
442
443 // #12897: Using Undo/Redo those actions are re-enabled causing crash
444 if (!doc->inASpecialEditMode())
445 {
446 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(true);
447 (*a_scrActions)["editDeselectAll"]->setEnabled(SelectedType != -1);
448 }
449 (*a_scrActions)["itemDetachTextFromPath"]->setEnabled(false);
450 bool isImageFrame = SelectedType==PageItem::ImageFrame;
451 (*a_scrActions)["itemUpdateImage"]->setEnabled(isImageFrame && (currItem->imageIsAvailable || currItem->isLatexFrame()));
452 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(isImageFrame && currItem->imageIsAvailable);
453 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(isImageFrame && currItem->imageIsAvailable);
454 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(isImageFrame && currItem->imageIsAvailable && currItem->pixm.imgInfo.valid);
455 (*a_scrActions)["itemToggleInlineImage"]->setEnabled(isImageFrame && currItem->imageIsAvailable);
456 (*a_scrActions)["itemImageIsVisible"]->setEnabled(isImageFrame);
457 (*a_scrActions)["itemPreviewFull"]->setEnabled(isImageFrame);
458 (*a_scrActions)["itemPreviewNormal"]->setEnabled(isImageFrame);
459 (*a_scrActions)["itemPreviewLow"]->setEnabled(isImageFrame);
460 (*a_scrActions)["styleImageEffects"]->setEnabled(isImageFrame && currItem->isRaster);
461 (*a_scrActions)["editCopyContents"]->setEnabled(isImageFrame && currItem->imageIsAvailable);
462 (*a_scrActions)["editPasteContents"]->setEnabled(isImageFrame);
463 (*a_scrActions)["editPasteContentsAbs"]->setEnabled(isImageFrame);
464 (*a_scrActions)["editEditWithImageEditor"]->setEnabled(isImageFrame && currItem->imageIsAvailable && currItem->isRaster);
465 (*a_scrActions)["editEditRenderSource"]->setEnabled(isImageFrame && currItem && (currItem->isLatexFrame() || currItem->isOSGFrame()));
466 (*a_scrActions)["itemAdjustFrameHeightToText"]->setEnabled(SelectedType==PageItem::TextFrame && currItem->itemText.length() >0);
467 if (!isImageFrame)
468 {
469 (*a_scrActions)["itemImageIsVisible"]->setChecked(false);
470 (*a_scrActions)["itemPreviewFull"]->setChecked(false);
471 (*a_scrActions)["itemPreviewNormal"]->setChecked(false);
472 (*a_scrActions)["itemPreviewLow"]->setChecked(false);
473 }
474
475 if ((SelectedType==-1) || (SelectedType!=-1 && !currItem->isTextFrame()))
476 enableTextActions(false);
477 (*a_scrActions)["insertSampleText"]->setEnabled(false);
478
479 switch (SelectedType)
480 {
481 case -1: // None
482 (*a_scrActions)["fileImportText"]->setEnabled(false);
483 (*a_scrActions)["fileImportText2"]->setEnabled(false);
484 (*a_scrActions)["fileImportImage"]->setEnabled(false);
485 (*a_scrActions)["fileImportAppendText"]->setEnabled(false);
486 (*a_scrActions)["fileExportText"]->setEnabled(false);
487 (*a_scrActions)["itemDuplicate"]->setEnabled(false);
488 (*a_scrActions)["itemMulDuplicate"]->setEnabled(false);
489 (*a_scrActions)["itemTransform"]->setEnabled(false);
490 (*a_scrActions)["itemDelete"]->setEnabled(false);
491 (*a_scrActions)["itemRaise"]->setEnabled(false);
492 (*a_scrActions)["itemLower"]->setEnabled(false);
493 (*a_scrActions)["itemRaiseToTop"]->setEnabled(false);
494 (*a_scrActions)["itemLowerToBottom"]->setEnabled(false);
495 (*a_scrActions)["itemSendToPattern"]->setEnabled(false);
496 (*a_scrActions)["itemSendToInline"]->setEnabled(false);
497 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(false);
498 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(false);
499 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(false);
500 (*a_scrActions)["itemUpdateImage"]->setEnabled(false);
501 (*a_scrActions)["itemPreviewFull"]->setEnabled(false);
502 (*a_scrActions)["itemPreviewNormal"]->setEnabled(false);
503 (*a_scrActions)["itemPreviewLow"]->setEnabled(false);
504 (*a_scrActions)["itemAttributes"]->setEnabled(false);
505 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
506 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
507 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
508 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
509 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
510 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(false);
511 (*a_scrActions)["itemLock"]->setEnabled(false);
512 (*a_scrActions)["itemLockSize"]->setEnabled(false);
513 (*a_scrActions)["itemPrintingEnabled"]->setEnabled(false);
514 (*a_scrActions)["editCut"]->setEnabled(false);
515 (*a_scrActions)["editCopy"]->setEnabled(false);
516 (*a_scrActions)["editCopyContents"]->setEnabled(false);
517 (*a_scrActions)["editClearContents"]->setEnabled(false);
518 (*a_scrActions)["editTruncateContents"]->setEnabled(false);
519 (*a_scrActions)["editSearchReplace"]->setEnabled(false);
520 (*a_scrActions)["extrasHyphenateText"]->setEnabled(false);
521 (*a_scrActions)["extrasDeHyphenateText"]->setEnabled(false);
522
523 (*a_scrActions)["itemWeld"]->setEnabled(false);
524 (*a_scrActions)["itemsUnWeld"]->setEnabled(false);
525 (*a_scrActions)["itemEditWeld"]->setEnabled(false);
526
527 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(false);
528 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(false);
529 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(false);
530 (*a_scrActions)["toolsEditContents"]->setEnabled(false);
531 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(false);
532 (*a_scrActions)["toolsRotate"]->setEnabled(false);
533 (*a_scrActions)["toolsCopyProperties"]->setEnabled(false);
534 break;
535 case PageItem::ImageFrame: //Image Frame
536 (*a_scrActions)["fileImportAppendText"]->setEnabled(false);
537 (*a_scrActions)["fileImportText"]->setEnabled(false);
538 (*a_scrActions)["fileImportText2"]->setEnabled(false);
539 (*a_scrActions)["fileImportImage"]->setEnabled(true);
540 (*a_scrActions)["editCut"]->setEnabled(!inAnEditMode);
541 (*a_scrActions)["editCopy"]->setEnabled(!inAnEditMode);
542 (*a_scrActions)["editClearContents"]->setEnabled(true);
543 (*a_scrActions)["editTruncateContents"]->setEnabled(false);
544 (*a_scrActions)["editSearchReplace"]->setEnabled(false);
545 (*a_scrActions)["extrasHyphenateText"]->setEnabled(false);
546 (*a_scrActions)["extrasDeHyphenateText"]->setEnabled(false);
547 (*a_scrActions)["itemDuplicate"]->setEnabled(true);
548 (*a_scrActions)["itemMulDuplicate"]->setEnabled(true);
549 (*a_scrActions)["itemTransform"]->setEnabled(true);
550 (*a_scrActions)["itemDelete"]->setEnabled(!inAnEditMode);
551 (*a_scrActions)["itemSendToPattern"]->setEnabled(!inAnEditMode);
552 (*a_scrActions)["itemSendToInline"]->setEnabled(!inAnEditMode);
553 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(true);
554 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(true);
555 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(currItem->pixm.imgInfo.valid);
556 (*a_scrActions)["itemUpdateImage"]->setEnabled(true);
557 (*a_scrActions)["itemPreviewFull"]->setEnabled(true);
558 (*a_scrActions)["itemPreviewNormal"]->setEnabled(true);
559 (*a_scrActions)["itemPreviewLow"]->setEnabled(true);
560 (*a_scrActions)["itemAttributes"]->setEnabled(true);
561 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
562 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
563 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
564 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(!inAnEditMode);
565 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(!inAnEditMode);
566 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(!inAnEditMode);
567 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(false);
568 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(false);
569 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(false);
570 (*a_scrActions)["toolsEditContents"]->setEnabled(true);
571 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(false);
572 (*a_scrActions)["toolsRotate"]->setEnabled(!inAnEditMode);
573 (*a_scrActions)["toolsCopyProperties"]->setEnabled(!inAnEditMode);
574 (*a_scrActions)["itemImageIsVisible"]->setChecked(currItem->imageVisible());
575 (*a_scrActions)["itemToggleInlineImage"]->setChecked(currItem->isImageInline());
576 (*a_scrActions)["itemPreviewFull"]->setChecked(currItem->pixm.imgInfo.lowResType==(*a_scrActions)["itemPreviewFull"]->actionInt());
577 (*a_scrActions)["itemPreviewNormal"]->setChecked(currItem->pixm.imgInfo.lowResType==(*a_scrActions)["itemPreviewNormal"]->actionInt());
578 (*a_scrActions)["itemPreviewLow"]->setChecked(currItem->pixm.imgInfo.lowResType==(*a_scrActions)["itemPreviewLow"]->actionInt());
579
580 break;
581 case PageItem::TextFrame: //Text Frame
582 (*a_scrActions)["fileImportText"]->setEnabled(true);
583 (*a_scrActions)["fileImportText2"]->setEnabled(true);
584 (*a_scrActions)["fileImportImage"]->setEnabled(false);
585 (*a_scrActions)["fileImportAppendText"]->setEnabled(true);
586 (*a_scrActions)["fileExportText"]->setEnabled(true);
587 (*a_scrActions)["editCut"]->setEnabled(true);
588 (*a_scrActions)["editCopy"]->setEnabled(true);
589 //scrMenuMgr->setMenuEnabled("EditContents", true);
590 (*a_scrActions)["editClearContents"]->setEnabled(true);
591 (*a_scrActions)["editTruncateContents"]->setEnabled(true);
592 (*a_scrActions)["editSearchReplace"]->setEnabled(currItem->itemText.length() != 0);
593 (*a_scrActions)["extrasHyphenateText"]->setEnabled(true);
594 (*a_scrActions)["extrasDeHyphenateText"]->setEnabled(true);
595 // scrMenuMgr->setMenuEnabled("Item", true);
596 (*a_scrActions)["itemDuplicate"]->setEnabled(true);
597 (*a_scrActions)["itemMulDuplicate"]->setEnabled(true);
598 (*a_scrActions)["itemTransform"]->setEnabled(true);
599 (*a_scrActions)["itemDelete"]->setEnabled(!inAnEditMode);
600 //scrMenuMgr->setMenuEnabled("itemSendToScrapbook", true);
601 (*a_scrActions)["itemSendToPattern"]->setEnabled(!inAnEditMode);
602 (*a_scrActions)["itemSendToInline"]->setEnabled(!inAnEditMode);
603 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(false);
604 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(false);
605 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(false);
606 (*a_scrActions)["itemUpdateImage"]->setEnabled(false);
607 (*a_scrActions)["itemPreviewFull"]->setEnabled(false);
608 (*a_scrActions)["itemPreviewNormal"]->setEnabled(false);
609 (*a_scrActions)["itemPreviewLow"]->setEnabled(false);
610 (*a_scrActions)["itemAttributes"]->setEnabled(true);
611 //scrMenuMgr->setMenuEnabled("ItemConvertTo", !((doc->appMode == modeEdit) || (currItem->isAnnotation())));
612 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
613 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(!inAnEditMode);
614 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(!inAnEditMode);
615 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(!inAnEditMode);
616 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
617 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(!inAnEditMode);
618
619 (*a_scrActions)["toolsRotate"]->setEnabled(!inAnEditMode);
620 (*a_scrActions)["toolsCopyProperties"]->setEnabled(!inAnEditMode);
621 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(true);
622 (*a_scrActions)["insertSampleText"]->setEnabled(true);
623 //scrMenuMgr->setMenuEnabled("InsertMark",true);
624
625 if ((currItem->nextInChain() != nullptr) || (currItem->prevInChain() != nullptr))
626 {
627 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
628 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
629 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
630 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
631 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(false);
632 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(true);
633 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(true);
634 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(true);
635 // FIXME: once there's one itemtext per story, always enable editcontents
636 if ((currItem->prevInChain() != nullptr) && (currItem->itemText.length() == 0))
637 (*a_scrActions)["toolsEditContents"]->setEnabled(false);
638 else
639 (*a_scrActions)["toolsEditContents"]->setEnabled(true);
640 }
641 else
642 {
643 (*a_scrActions)["toolsEditContents"]->setEnabled(true);
644 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(false);
645 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(false);
646 }
647 // (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(!currItem->nextInChain());
648 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(true);
649
650 // if (doc->masterPageMode())
651 // (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(false);
652 if (doc->appMode == modeEdit)
653 {
654 (*a_scrActions)["editSelectAll"]->setEnabled(true);
655 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(false);
656 if (currItem->isTextFrame())
657 {
658 enableTextActions(true, currItem->currentStyle().charStyle().font().scName());
659 }
660 }
661 else
662 {
663 const ParagraphStyle& curStyle = currItem->itemText.defaultStyle();
664 doc->currentStyle.setContext(curStyle.context());
665 doc->currentStyle = currItem->itemText.defaultStyle();
666 }
667
668 break;
669 case PageItem::Table:
670 (*a_scrActions)["editCut"]->setEnabled(true);
671 (*a_scrActions)["editCopy"]->setEnabled(true);
672 (*a_scrActions)["itemDelete"]->setEnabled(!inAnEditMode);
673 (*a_scrActions)["itemSendToPattern"]->setEnabled(!inAnEditMode);
674 (*a_scrActions)["itemSendToInline"]->setEnabled(!inAnEditMode);
675 (*a_scrActions)["toolsRotate"]->setEnabled(!inAnEditMode);
676 if (doc->appMode == modeEditTable)
677 {
678 PageItem *i2 = currItem->asTable()->activeCell().textFrame();
679 enableTextActions(true, i2->currentCharStyle().font().scName());
680 (*a_scrActions)["insertSampleText"]->setEnabled(true);
681 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(true);
682 }
683 updateTableMenuActions(doc);
684 break;
685 case PageItem::PathText: //Path Text
686 (*a_scrActions)["fileImportText"]->setEnabled(true);
687 (*a_scrActions)["fileImportText2"]->setEnabled(true);
688 (*a_scrActions)["fileImportImage"]->setEnabled(false);
689 (*a_scrActions)["fileImportAppendText"]->setEnabled(true);
690 (*a_scrActions)["fileExportText"]->setEnabled(true);
691 (*a_scrActions)["editCut"]->setEnabled(!inAnEditMode);
692 (*a_scrActions)["editCopy"]->setEnabled(!inAnEditMode);
693 (*a_scrActions)["editClearContents"]->setEnabled(false);
694 (*a_scrActions)["editTruncateContents"]->setEnabled(false);
695 (*a_scrActions)["editSearchReplace"]->setEnabled(false);
696 (*a_scrActions)["extrasHyphenateText"]->setEnabled(false);
697 (*a_scrActions)["extrasDeHyphenateText"]->setEnabled(false);
698 // scrMenuMgr->setMenuEnabled("Item", true);
699 (*a_scrActions)["itemDuplicate"]->setEnabled(true);
700 (*a_scrActions)["itemMulDuplicate"]->setEnabled(true);
701 (*a_scrActions)["itemTransform"]->setEnabled(true);
702 (*a_scrActions)["itemDelete"]->setEnabled(!inAnEditMode);
703 // (*a_scrActions)["itemSendToScrapbook"]->setEnabled(true);
704 (*a_scrActions)["itemSendToPattern"]->setEnabled(!inAnEditMode);
705 (*a_scrActions)["itemSendToInline"]->setEnabled(!inAnEditMode);
706 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(false);
707 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(false);
708 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(false);
709 (*a_scrActions)["itemUpdateImage"]->setEnabled(false);
710 (*a_scrActions)["itemPreviewFull"]->setEnabled(false);
711 (*a_scrActions)["itemPreviewNormal"]->setEnabled(false);
712 (*a_scrActions)["itemPreviewLow"]->setEnabled(false);
713 (*a_scrActions)["itemAttributes"]->setEnabled(true);
714 //scrMenuMgr->setMenuEnabled("ItemShapes", false);
715 (*a_scrActions)["itemDetachTextFromPath"]->setEnabled(true);
716 // scrMenuMgr->setMenuEnabled("ItemConvertTo", true);
717 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
718 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
719 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(true);
720 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
721 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
722 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(true);
723
724 (*a_scrActions)["toolsRotate"]->setEnabled(!inAnEditMode);
725 (*a_scrActions)["toolsCopyProperties"]->setEnabled(!inAnEditMode);
726 (*a_scrActions)["toolsEditContents"]->setEnabled(false);
727 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(true);
728 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(false);
729 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(false);
730 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(false);
731 break;
732 default:
733 (*a_scrActions)["fileImportText"]->setEnabled(false);
734 (*a_scrActions)["fileImportText2"]->setEnabled(false);
735 (*a_scrActions)["fileImportImage"]->setEnabled(false);
736 (*a_scrActions)["fileImportAppendText"]->setEnabled(false);
737 (*a_scrActions)["fileExportText"]->setEnabled(false);
738 (*a_scrActions)["editCut"]->setEnabled(!inAnEditMode);
739 (*a_scrActions)["editCopy"]->setEnabled(!inAnEditMode);
740 (*a_scrActions)["editClearContents"]->setEnabled(false);
741 (*a_scrActions)["editTruncateContents"]->setEnabled(false);
742 (*a_scrActions)["editSearchReplace"]->setEnabled(false);
743
744 (*a_scrActions)["extrasHyphenateText"]->setEnabled(false);
745 (*a_scrActions)["extrasDeHyphenateText"]->setEnabled(false);
746 (*a_scrActions)["itemDuplicate"]->setEnabled(true);
747 (*a_scrActions)["itemMulDuplicate"]->setEnabled(true);
748 (*a_scrActions)["itemTransform"]->setEnabled(true);
749 (*a_scrActions)["itemDelete"]->setEnabled(!inAnEditMode);
750 (*a_scrActions)["itemSendToPattern"]->setEnabled(!inAnEditMode);
751 (*a_scrActions)["itemSendToInline"]->setEnabled(!inAnEditMode);
752 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(false);
753 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(false);
754 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(false);
755 (*a_scrActions)["itemUpdateImage"]->setEnabled(false);
756 (*a_scrActions)["itemPreviewFull"]->setEnabled(false);
757 (*a_scrActions)["itemPreviewNormal"]->setEnabled(false);
758 (*a_scrActions)["itemPreviewLow"]->setEnabled(false);
759 (*a_scrActions)["itemAttributes"]->setEnabled(true);
760
761 if (SelectedType == PageItem::Polygon) //Polygon
762 {
763 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(!inAnEditMode);
764 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(!inAnEditMode);
765 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
766 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
767 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(!inAnEditMode);
768 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(!inAnEditMode);
769 }
770 else if ((SelectedType == PageItem::RegularPolygon) || (SelectedType == PageItem::Arc)) // Regular Polygon + Arc
771 {
772 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(!inAnEditMode);
773 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(!inAnEditMode);
774 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
775 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(!inAnEditMode);
776 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(!inAnEditMode);
777 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(!inAnEditMode);
778 }
779 else if (SelectedType == PageItem::PolyLine) //Polyline
780 {
781 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
782 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
783 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
784 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(!inAnEditMode);
785 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
786 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(!inAnEditMode);
787 }
788 else if ((SelectedType == PageItem::Line) || (SelectedType == PageItem::Spiral)) // Line
789 {
790 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(true);
791 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
792 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
793 if (SelectedType == PageItem::Spiral)
794 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(!inAnEditMode);
795 else
796 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
797 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
798 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(!inAnEditMode);
799 }
800 else if (SelectedType == PageItem::Symbol)
801 {
802 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
803 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
804 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
805 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
806 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
807 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(false);
808 }
809 (*a_scrActions)["toolsEditContents"]->setEnabled(false);
810 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(false);
811 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(false);
812 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(false);
813 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(false);
814 (*a_scrActions)["toolsRotate"]->setEnabled(!inAnEditMode);
815 (*a_scrActions)["toolsCopyProperties"]->setEnabled(!inAnEditMode);
816 break;
817 }
818
819 if (docSelectionCount == 1)
820 {
821 (*a_scrActions)["itemsUnWeld"]->setEnabled(currItem->isWelded());
822 (*a_scrActions)["itemEditWeld"]->setEnabled(currItem->isWelded());
823 }
824 if (docSelectionCount > 1)
825 {
826 if (!doc->m_Selection->itemsAreSameType())
827 {
828 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
829 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
830 //(*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
831 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
832 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
833 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(false);
834 }
835 (*a_scrActions)["editSearchReplace"]->setEnabled(false);
836
837 bool hPoly = true;
838 for (int i = 0; i < docSelectionCount; ++i)
839 {
840 PageItem* it = doc->m_Selection->itemAt(i);
841 if ((!it->isPolygon()) && (!it->isPolyLine()))
842 {
843 hPoly = false;
844 break;
845 }
846 }
847 (*a_scrActions)["itemCombinePolygons"]->setEnabled(hPoly);
848
849 // It is possible to select objects on different layer using
850 // document outline palette. We need to check selected objects
851 // are on a common layer before allowing user to group them
852 bool objectsOnSameLayer = (doc->m_Selection->objectsLayer() != -1);
853 (*a_scrActions)["itemGroup"]->setEnabled(objectsOnSameLayer);
854
855 if (docSelectionCount == 2)
856 {
857 (*a_scrActions)["itemWeld"]->setEnabled(true);
858 //CB swap it around if currItem is not at 0 index from the lastItem loop at start of havenewsel
859 bool canAttachTextToPath = false;
860 PageItem* item1 = doc->m_Selection->itemAt(0);
861 PageItem* item2 = doc->m_Selection->itemAt(1);
862 if (!item1->isTextFrame() || !(item2->isPolygon() || item2->isPolyLine() || item2->isSpiral() || item2->isArc() || item2->isRegularPolygon()))
863 std::swap(item1, item2);
864 if (item1->isTextFrame() && (item2->isPolygon() || item2->isPolyLine() || item2->isSpiral() || item2->isArc() || item2->isRegularPolygon()))
865 {
866 canAttachTextToPath = true;
867 canAttachTextToPath &= (item1->nextInChain() == nullptr);
868 canAttachTextToPath &= (item1->prevInChain() == nullptr);
869 canAttachTextToPath &= (item2->nextInChain() == nullptr);
870 canAttachTextToPath &= (item2->prevInChain() == nullptr);
871 canAttachTextToPath &= (!item1->isGroup() && !item2->isGroup());
872 }
873 (*a_scrActions)["itemAttachTextToPath"]->setEnabled(canAttachTextToPath);
874 }
875 else
876 (*a_scrActions)["itemWeld"]->setEnabled(false);
877 }
878 else
879 {
880 (*a_scrActions)["itemWeld"]->setEnabled(false);
881 (*a_scrActions)["itemGroup"]->setEnabled(false);
882 (*a_scrActions)["itemAttachTextToPath"]->setEnabled(false);
883 (*a_scrActions)["itemCombinePolygons"]->setEnabled(false);
884 }
885
886
887 if (docSelectionCount != 0)
888 {
889 (*a_scrActions)["itemLock"]->setEnabled(doc->appMode != modeEditClip);
890 (*a_scrActions)["itemLockSize"]->setEnabled(true);
891 (*a_scrActions)["itemPrintingEnabled"]->setEnabled(true);
892 if (currItem->isGroup())
893 {
894 (*a_scrActions)["itemUngroup"]->setEnabled(doc->appMode != modeEdit);
895 (*a_scrActions)["itemGroupAdjust"]->setEnabled(doc->appMode != modeEdit);
896 }
897 else
898 {
899 (*a_scrActions)["itemUngroup"]->setEnabled(false);
900 (*a_scrActions)["itemGroupAdjust"]->setEnabled(false);
901 (*a_scrActions)["itemSplitPolygons"]->setEnabled( (currItem->isPolygon()) && (currItem->Segments.count() != 0) );
902 }
903 bool levelEnabled = true;
904 if (currItem->locked())
905 {
906 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
907 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
908 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
909 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
910 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
911 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(false);
912 (*a_scrActions)["itemSplitPolygons"]->setEnabled(false);
913 (*a_scrActions)["itemAttachTextToPath"]->setEnabled(false);
914 (*a_scrActions)["itemDetachTextFromPath"]->setEnabled(false);
915 (*a_scrActions)["itemCombinePolygons"]->setEnabled(false);
916 (*a_scrActions)["itemDelete"]->setEnabled(false);
917 (*a_scrActions)["itemSendToPattern"]->setEnabled(!inAnEditMode);
918 (*a_scrActions)["itemSendToInline"]->setEnabled(!inAnEditMode);
919 (*a_scrActions)["editCut"]->setEnabled(false);
920 (*a_scrActions)["editClearContents"]->setEnabled(false);
921 (*a_scrActions)["editTruncateContents"]->setEnabled(false);
922 (*a_scrActions)["toolsRotate"]->setEnabled(false);
923 levelEnabled = false;
924 }
925 else
926 {
927 (*a_scrActions)["itemDuplicate"]->setEnabled(true);
928 (*a_scrActions)["itemMulDuplicate"]->setEnabled(true);
929 (*a_scrActions)["itemTransform"]->setEnabled(true);
930 (*a_scrActions)["itemDelete"]->setEnabled(!inAnEditMode);
931 (*a_scrActions)["itemSendToPattern"]->setEnabled(!inAnEditMode);
932 (*a_scrActions)["itemSendToInline"]->setEnabled(!inAnEditMode);
933 if (docSelectionCount > 1)
934 {
935 bool haveSameParent = true;
936 PageItem *firstItem = doc->m_Selection->itemAt(0);
937 for (int i = 1; i < docSelectionCount; ++i)
938 {
939 if (doc->m_Selection->itemAt(i)->Parent != firstItem->Parent)
940 {
941 haveSameParent = false;
942 break;
943 }
944 }
945 levelEnabled = haveSameParent;
946 }
947 }
948 (*a_scrActions)["itemRaise"]->setEnabled(levelEnabled);
949 (*a_scrActions)["itemLower"]->setEnabled(levelEnabled);
950 (*a_scrActions)["itemRaiseToTop"]->setEnabled(levelEnabled);
951 (*a_scrActions)["itemLowerToBottom"]->setEnabled(levelEnabled);
952 if (inAnEditMode)
953 {
954 (*a_scrActions)["itemSendToPattern"]->setEnabled(false);
955 (*a_scrActions)["itemSendToInline"]->setEnabled(false);
956 }
957 (*a_scrActions)["itemLock"]->setChecked(currItem->locked());
958 (*a_scrActions)["itemLockSize"]->setChecked(currItem->sizeLocked());
959 (*a_scrActions)["itemPrintingEnabled"]->setChecked(currItem->printEnabled());
960 scmw->enablePalettes(!inAnEditMode);
961 scmw->pageSelector->setEnabled(!inAnEditMode);
962 scmw->layerMenu->setEnabled(!inAnEditMode);
963 }
964
965 }
966
setModeActionsPerMode(int newMode)967 void AppModeHelper::setModeActionsPerMode(int newMode)
968 {
969 //set the actions state based on incoming mode
970 (*a_scrActions)["toolsSelect"]->setChecked(newMode==modeNormal);
971 (*a_scrActions)["toolsInsertTextFrame"]->setChecked(newMode==modeDrawText);
972 (*a_scrActions)["toolsInsertImageFrame"]->setChecked(newMode==modeDrawImage);
973 (*a_scrActions)["toolsInsertTable"]->setChecked(newMode==modeDrawTable2);
974 (*a_scrActions)["toolsInsertShape"]->setChecked(newMode==modeDrawShapes);
975 (*a_scrActions)["toolsInsertPolygon"]->setChecked(newMode==modeDrawRegularPolygon);
976 (*a_scrActions)["toolsInsertArc"]->setChecked(newMode==modeDrawArc);
977 (*a_scrActions)["toolsInsertSpiral"]->setChecked(newMode==modeDrawSpiral);
978 (*a_scrActions)["toolsInsertLine"]->setChecked(newMode==modeDrawLine);
979 (*a_scrActions)["toolsInsertBezier"]->setChecked(newMode==modeDrawBezierLine);
980 (*a_scrActions)["toolsInsertFreehandLine"]->setChecked(newMode==modeDrawFreehandLine);
981 (*a_scrActions)["toolsInsertCalligraphicLine"]->setChecked(newMode == modeDrawCalligraphicLine);
982 (*a_scrActions)["toolsInsertRenderFrame"]->setChecked(newMode==modeDrawLatex);
983 (*a_scrActions)["toolsRotate"]->setChecked(newMode==modeRotation);
984 (*a_scrActions)["toolsZoom"]->setChecked(newMode==modeMagnifier);
985 (*a_scrActions)["toolsEditContents"]->setChecked(newMode==modeEdit);
986 (*a_scrActions)["toolsEditWithStoryEditor"]->setChecked(newMode==modeStoryEditor);
987 (*a_scrActions)["toolsLinkTextFrame"]->setChecked(newMode==modeLinkFrames);
988 (*a_scrActions)["toolsUnlinkTextFrame"]->setChecked(newMode==modeUnlinkFrames);
989 // (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setChecked(newMode==modeUnlinkFrames);
990 (*a_scrActions)["toolsEyeDropper"]->setChecked(newMode==modeEyeDropper);
991 (*a_scrActions)["toolsMeasurements"]->setChecked(newMode==modeMeasurementTool);
992 (*a_scrActions)["toolsCopyProperties"]->setChecked(newMode==modeCopyProperties);
993 (*a_scrActions)["toolsPDFPushButton"]->setChecked(newMode==modeInsertPDFButton);
994 (*a_scrActions)["toolsPDFRadioButton"]->setChecked(newMode==modeInsertPDFRadioButton);
995 (*a_scrActions)["toolsPDFTextField"]->setChecked(newMode==modeInsertPDFTextfield);
996 (*a_scrActions)["toolsPDFCheckBox"]->setChecked(newMode==modeInsertPDFCheckbox);
997 (*a_scrActions)["toolsPDFComboBox"]->setChecked(newMode==modeInsertPDFCombobox);
998 (*a_scrActions)["toolsPDFListBox"]->setChecked(newMode==modeInsertPDFListbox);
999 (*a_scrActions)["toolsPDFAnnotText"]->setChecked(newMode==modeInsertPDFTextAnnotation);
1000 (*a_scrActions)["toolsPDFAnnotLink"]->setChecked(newMode==modeInsertPDFLinkAnnotation);
1001 #ifdef HAVE_OSG
1002 (*a_scrActions)["toolsPDFAnnot3D"]->setChecked(newMode==modeInsertPDF3DAnnotation);
1003 #endif
1004 }
1005
setActionGroupEnabled(QMap<QString,QPointer<ScrAction>> * ag,bool enabled)1006 void AppModeHelper::setActionGroupEnabled(QMap<QString, QPointer<ScrAction> >*ag, bool enabled)
1007 {
1008 if (ag==nullptr)
1009 return;
1010 for( QMap<QString, QPointer<ScrAction> >::Iterator it = ag->begin(); it!=ag->end(); ++it )
1011 (*it)->setEnabled(enabled);
1012 }
1013
setTextEditMode(bool b)1014 void AppModeHelper::setTextEditMode(bool b)
1015 {
1016 bool b2=!b;
1017
1018 (*a_scrActions)["itemDuplicate"]->setEnabled(b2);
1019 (*a_scrActions)["itemMulDuplicate"]->setEnabled(b2);
1020 (*a_scrActions)["itemTransform"]->setEnabled(b2);
1021 (*a_scrActions)["itemDelete"]->setEnabled(b2);
1022 (*a_scrActions)["itemRaise"]->setEnabled(b2);
1023 (*a_scrActions)["itemLower"]->setEnabled(b2);
1024 (*a_scrActions)["itemRaiseToTop"]->setEnabled(b2);
1025 (*a_scrActions)["itemLowerToBottom"]->setEnabled(b2);
1026 //scmw->scrMenuMgr->setMenuEnabled("itemSendToScrapbook", b2);
1027 (*a_scrActions)["itemSendToPattern"]->setEnabled(b2);
1028 (*a_scrActions)["itemSendToInline"]->setEnabled(b2);
1029 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(b2);
1030 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(b2);
1031 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(b2);
1032 (*a_scrActions)["itemUpdateImage"]->setEnabled(b2);
1033 (*a_scrActions)["itemPreviewFull"]->setEnabled(b2);
1034 (*a_scrActions)["itemPreviewNormal"]->setEnabled(b2);
1035 (*a_scrActions)["itemPreviewLow"]->setEnabled(b2);
1036 (*a_scrActions)["itemAttributes"]->setEnabled(b2);
1037 }
1038
setSpecialEditMode(bool b)1039 void AppModeHelper::setSpecialEditMode(bool b)
1040 {
1041 bool b2=!b;
1042
1043 (*a_scrActions)["editCut"]->setEnabled(b2);
1044 (*a_scrActions)["editCopy"]->setEnabled(b2);
1045 (*a_scrActions)["editPaste"]->setEnabled(b2);
1046 (*a_scrActions)["editCopyContents"]->setEnabled(b2);
1047 (*a_scrActions)["editPasteContents"]->setEnabled(b2);
1048 (*a_scrActions)["editPasteContentsAbs"]->setEnabled(b2);
1049 (*a_scrActions)["editSelectAll"]->setEnabled(b2);
1050 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(b2);
1051 (*a_scrActions)["editDeselectAll"]->setEnabled(b2);
1052 (*a_scrActions)["itemDelete"]->setEnabled(b2);
1053 (*a_scrActions)["itemSendToPattern"]->setEnabled(b2);
1054 (*a_scrActions)["itemSendToInline"]->setEnabled(b2);
1055 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(b2);
1056 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(b2);
1057 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(b2);
1058 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(b2);
1059 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(b2);
1060 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(b2);
1061 (*a_scrActions)["pageInsert"]->setEnabled(b2);
1062 (*a_scrActions)["pageImport"]->setEnabled(b2);
1063 (*a_scrActions)["pageDelete"]->setEnabled(b2);
1064 (*a_scrActions)["pageCopy"]->setEnabled(b2);
1065 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(b2);
1066
1067 setActionGroupEnabled(a_scrLayersActions, b2);
1068 setActionGroupEnabled(a_scrRecentFileActions, b2);
1069 setActionGroupEnabled(a_scrRecentPasteActions, b2);
1070 setActionGroupEnabled(a_scrScrapActions, b2);
1071 setActionGroupEnabled(a_scrWindowsActions, b2);
1072 }
1073
setFrameEditMode(bool b)1074 void AppModeHelper::setFrameEditMode(bool b)
1075 {
1076 bool b2=!b;
1077
1078 (*a_scrActions)["itemShapeEdit"]->setChecked(b);
1079
1080 //CB Enable/Disable undo in frame edit mode
1081 if (b2)
1082 {
1083 (*a_scrActions)["editUndoAction"]->setEnabled(UndoManager::instance()->hasUndoActions());
1084 (*a_scrActions)["editRedoAction"]->setEnabled(UndoManager::instance()->hasRedoActions());
1085 }
1086 else
1087 {
1088 (*a_scrActions)["editUndoAction"]->setEnabled(false);
1089 (*a_scrActions)["editRedoAction"]->setEnabled(false);
1090 }
1091
1092 (*a_scrActions)["insertFrame"]->setEnabled(b2);
1093 (*a_scrActions)["toolsSelect"]->setEnabled(b2);
1094 (*a_scrActions)["toolsRotate"]->setEnabled(b2);
1095 (*a_scrActions)["toolsEditContents"]->setEnabled(b2);
1096 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(b2);
1097 (*a_scrActions)["toolsZoom"]->setEnabled(b2);
1098 (*a_scrActions)["toolsInsertTextFrame"]->setEnabled(b2);
1099 (*a_scrActions)["toolsInsertImageFrame"]->setEnabled(b2);
1100 (*a_scrActions)["toolsInsertTable"]->setEnabled(b2);
1101 (*a_scrActions)["toolsInsertShape"]->setEnabled(b2);
1102 (*a_scrActions)["toolsInsertLine"]->setEnabled(b2);
1103 (*a_scrActions)["toolsInsertBezier"]->setEnabled(b2);
1104 (*a_scrActions)["toolsInsertFreehandLine"]->setEnabled(b2);
1105 (*a_scrActions)["toolsInsertCalligraphicLine"]->setEnabled(b2);
1106 (*a_scrActions)["toolsInsertPolygon"]->setEnabled(b2);
1107 (*a_scrActions)["toolsInsertArc"]->setEnabled(b2);
1108 (*a_scrActions)["toolsInsertSpiral"]->setEnabled(b2);
1109 (*a_scrActions)["toolsInsertRenderFrame"]->setEnabled(b2);
1110 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(b2);
1111 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(b2);
1112 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(b2);
1113 (*a_scrActions)["toolsMeasurements"]->setEnabled(b2);
1114 (*a_scrActions)["toolsCopyProperties"]->setEnabled(b2);
1115 (*a_scrActions)["toolsEyeDropper"]->setEnabled(b2);
1116 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(b2);
1117 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(b2);
1118 (*a_scrActions)["toolsPDFTextField"]->setEnabled(b2);
1119 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(b2);
1120 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(b2);
1121 (*a_scrActions)["toolsPDFListBox"]->setEnabled(b2);
1122 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(b2);
1123 (*a_scrActions)["toolsPDFAnnotLink"]->setEnabled(b2);
1124 #ifdef HAVE_OSG
1125 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(b2);
1126 #endif
1127 (*a_scrActions)["editCopy"]->setEnabled(b2);
1128 (*a_scrActions)["editCut"]->setEnabled(b2);
1129 (*a_scrActions)["editPaste"]->setEnabled(b2);
1130 (*a_scrActions)["itemDelete"]->setEnabled(b2);
1131 (*a_scrActions)["itemLock"]->setEnabled(b2);
1132 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(b2);
1133 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(b2);
1134 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(b2);
1135 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(b2);
1136 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(b2);
1137 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(b2);
1138 (*a_scrActions)["pageImport"]->setEnabled(b2);
1139 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(b2);
1140 (*a_scrActions)["itemLowerToBottom"]->setEnabled(b2);
1141 (*a_scrActions)["itemRaiseToTop"]->setEnabled(b2);
1142 (*a_scrActions)["itemLower"]->setEnabled(b2);
1143 (*a_scrActions)["itemRaise"]->setEnabled(b2);
1144
1145 setActionGroupEnabled(a_scrLayersActions, b2);
1146 }
1147
setSymbolEditMode(bool b,ScribusDoc * doc)1148 void AppModeHelper::setSymbolEditMode(bool b, ScribusDoc* doc)
1149 {
1150 bool b2=!b;
1151 (*a_scrActions)["pageInsert"]->setEnabled(b2);
1152 (*a_scrActions)["pageImport"]->setEnabled(b2);
1153 (*a_scrActions)["pageCopy"]->setEnabled(b2);
1154 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(b2);
1155 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(b2);
1156 (*a_scrActions)["editMasterPages"]->setEnabled(b2);
1157 (*a_scrActions)["fileNew"]->setEnabled(b2);
1158 (*a_scrActions)["fileNewFromTemplate"]->setEnabled(b2);
1159 (*a_scrActions)["fileOpen"]->setEnabled(b2);
1160 (*a_scrActions)["fileClose"]->setEnabled(b2);
1161 (*a_scrActions)["fileSave"]->setEnabled(b2);
1162 (*a_scrActions)["pageDelete"]->setEnabled(b2);
1163 (*a_scrActions)["pageMove"]->setEnabled(b2);
1164 if (b2)
1165 {
1166 (*a_scrActions)["fileSave"]->setEnabled(!doc->isConverted);
1167 bool setter = doc->DocPages.count() > 1;
1168 (*a_scrActions)["pageDelete"]->setEnabled(setter);
1169 (*a_scrActions)["pageMove"]->setEnabled(setter);
1170 }
1171 (*a_scrActions)["fileRevert"]->setEnabled(b2);
1172 (*a_scrActions)["fileDocSetup150"]->setEnabled(b2);
1173 (*a_scrActions)["filePrint"]->setEnabled(b2);
1174 (*a_scrActions)["fileCollect"]->setEnabled(b2);
1175 (*a_scrActions)["fileSaveAs"]->setEnabled(b2);
1176 (*a_scrActions)["fileExportAsEPS"]->setEnabled(b2);
1177 (*a_scrActions)["fileExportAsPDF"]->setEnabled(b2);
1178 if (ScCore->haveGS() || ScCore->isWinGUI())
1179 (*a_scrActions)["PrintPreview"]->setEnabled(b2);
1180 if (ScCore->haveGS())
1181 {
1182 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(b2);
1183 (*a_scrActions)["OutputPreviewPS"]->setEnabled(b2);
1184 }
1185 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(b2);
1186 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(b2);
1187 (*a_scrActions)["toolsPDFTextField"]->setEnabled(b2);
1188 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(b2);
1189 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(b2);
1190 (*a_scrActions)["toolsPDFListBox"]->setEnabled(b2);
1191 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(b2);
1192 #ifdef HAVE_OSG
1193 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(b2);
1194 #endif
1195 }
1196
setInlineEditMode(bool b,ScribusDoc * doc)1197 void AppModeHelper::setInlineEditMode(bool b, ScribusDoc *doc)
1198 {
1199 bool b2 = !b;
1200 (*a_scrActions)["pageInsert"]->setEnabled(b2);
1201 (*a_scrActions)["pageImport"]->setEnabled(b2);
1202 (*a_scrActions)["pageDelete"]->setEnabled(b2);
1203 (*a_scrActions)["pageCopy"]->setEnabled(b2);
1204 (*a_scrActions)["pageMove"]->setEnabled(b2);
1205 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(b2);
1206 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(b2);
1207 (*a_scrActions)["editMasterPages"]->setEnabled(b2);
1208 (*a_scrActions)["fileNew"]->setEnabled(b2);
1209 (*a_scrActions)["fileNewFromTemplate"]->setEnabled(b2);
1210 (*a_scrActions)["fileOpen"]->setEnabled(b2);
1211 (*a_scrActions)["fileSave"]->setEnabled(b2);
1212 if (b2)
1213 {
1214 (*a_scrActions)["fileSave"]->setEnabled(!doc->isConverted);
1215 if (ScCore->haveGS() || ScCore->isWinGUI())
1216 (*a_scrActions)["PrintPreview"]->setEnabled(true);
1217 if (ScCore->haveGS())
1218 {
1219 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(true);
1220 (*a_scrActions)["OutputPreviewPS"]->setEnabled(true);
1221 }
1222 bool setter = doc->DocPages.count() > 1;
1223 (*a_scrActions)["pageDelete"]->setEnabled(setter);
1224 (*a_scrActions)["pageMove"]->setEnabled(setter);
1225 }
1226 (*a_scrActions)["fileRevert"]->setEnabled(b2);
1227 (*a_scrActions)["fileDocSetup150"]->setEnabled(b2);
1228 (*a_scrActions)["filePrint"]->setEnabled(b2);
1229 (*a_scrActions)["fileCollect"]->setEnabled(b2);
1230 (*a_scrActions)["fileSaveAs"]->setEnabled(b2);
1231 (*a_scrActions)["fileExportAsEPS"]->setEnabled(b2);
1232 (*a_scrActions)["fileExportAsPDF"]->setEnabled(b2);
1233 if (ScCore->haveGS() || ScCore->isWinGUI())
1234 (*a_scrActions)["PrintPreview"]->setEnabled(b2);
1235 if (ScCore->haveGS())
1236 {
1237 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(b2);
1238 (*a_scrActions)["OutputPreviewPS"]->setEnabled(b2);
1239 }
1240 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(b2);
1241 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(b2);
1242 (*a_scrActions)["toolsPDFTextField"]->setEnabled(b2);
1243 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(b2);
1244 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(b2);
1245 (*a_scrActions)["toolsPDFListBox"]->setEnabled(b2);
1246 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(b2);
1247 #ifdef HAVE_OSG
1248 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(b2);
1249 #endif
1250 }
1251
setMasterPageEditMode(bool b,ScribusDoc * doc)1252 void AppModeHelper::setMasterPageEditMode(bool b, ScribusDoc* doc)
1253 {
1254 bool b2=!b;
1255 (*a_scrActions)["pageInsert"]->setEnabled(b2);
1256 (*a_scrActions)["pageImport"]->setEnabled(b2);
1257 (*a_scrActions)["pageDelete"]->setEnabled(b2);
1258 (*a_scrActions)["pageCopy"]->setEnabled(b2);
1259 (*a_scrActions)["pageMove"]->setEnabled(b2);
1260 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(b2);
1261 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(b2);
1262 (*a_scrActions)["editMasterPages"]->setEnabled(b2);
1263 (*a_scrActions)["fileNew"]->setEnabled(b2);
1264 (*a_scrActions)["fileNewFromTemplate"]->setEnabled(b2);
1265 (*a_scrActions)["fileOpen"]->setEnabled(b2);
1266 (*a_scrActions)["fileClose"]->setEnabled(!b2);
1267 //#13401: (*a_scrActions)["fileSave"]->setEnabled(b2);
1268 (*a_scrActions)["fileExportAsEPS"]->setEnabled(b2);
1269 (*a_scrActions)["fileExportAsPDF"]->setEnabled(b2);
1270 if (b2)
1271 {
1272 (*a_scrActions)["fileSave"]->setEnabled(!doc->isConverted);
1273 if (ScCore->haveGS() || ScCore->isWinGUI())
1274 (*a_scrActions)["PrintPreview"]->setEnabled(true);
1275 if (ScCore->haveGS())
1276 {
1277 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(true);
1278 (*a_scrActions)["OutputPreviewPS"]->setEnabled(true);
1279 }
1280 bool setter = doc->DocPages.count() > 1;
1281 (*a_scrActions)["pageDelete"]->setEnabled(setter);
1282 (*a_scrActions)["pageMove"]->setEnabled(setter);
1283 }
1284
1285 (*a_scrActions)["fileRevert"]->setEnabled(b2);
1286 (*a_scrActions)["fileDocSetup150"]->setEnabled(b2);
1287 (*a_scrActions)["filePrint"]->setEnabled(b2);
1288 if (ScCore->haveGS() || ScCore->isWinGUI())
1289 (*a_scrActions)["PrintPreview"]->setEnabled(b2);
1290 if (ScCore->haveGS())
1291 {
1292 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(b2);
1293 (*a_scrActions)["OutputPreviewPS"]->setEnabled(b2);
1294 }
1295 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(b2);
1296 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(b2);
1297 (*a_scrActions)["toolsPDFTextField"]->setEnabled(b2);
1298 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(b2);
1299 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(b2);
1300 (*a_scrActions)["toolsPDFListBox"]->setEnabled(b2);
1301 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(b2);
1302 #ifdef HAVE_OSG
1303 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(b2);
1304 #endif
1305 //(*a_scrActions)["viewPreviewMode"]->setEnabled(b2);
1306 //TODO: Move to masterpage edit mode enable option for plugin actions
1307 if (a_scrActions->contains("ExportAsImage"))
1308 (*a_scrActions)["ExportAsImage"]->setEnabled(b2);
1309 }
1310
updateActionPluginsActions(ScribusDoc * doc)1311 void AppModeHelper::updateActionPluginsActions(ScribusDoc* doc)
1312 {
1313 int selectedType = -1;
1314 if (doc->m_Selection->count() > 0)
1315 {
1316 PageItem *currItem = doc->m_Selection->itemAt(0);
1317 selectedType = currItem->itemType();
1318 }
1319 bool isLayerLocked = doc->layerLocked(doc->activeLayer());
1320
1321 PluginManager& pluginManager(PluginManager::instance());
1322 QStringList pluginNames(pluginManager.pluginNames(false));
1323 ScPlugin* plugin;
1324 ScActionPlugin* actionPlug;
1325 ScrAction* pluginAction = nullptr;
1326 QString pName;
1327 for (int i = 0; i < pluginNames.count(); ++i)
1328 {
1329 pName = pluginNames.at(i);
1330 plugin = pluginManager.getPlugin(pName, true);
1331 Q_ASSERT(plugin); // all the returned names should represent loaded plugins
1332 if (!plugin->inherits("ScActionPlugin"))
1333 continue;
1334 actionPlug = dynamic_cast<ScActionPlugin*>(plugin);
1335 Q_ASSERT(actionPlug);
1336 ScActionPlugin::ActionInfo actionInfo(actionPlug->actionInfo());
1337 pluginAction = ScCore->primaryMainWindow()->scrActions[actionInfo.name];
1338 if (!pluginAction)
1339 continue;
1340 if (isLayerLocked && !actionInfo.enabledOnStartup)
1341 pluginAction->setEnabled(false);
1342 else
1343 pluginAction->setEnabled(actionPlug->handleSelection(doc, selectedType));
1344 }
1345 }
1346
updateTableMenuActions(ScribusDoc * doc)1347 void AppModeHelper::updateTableMenuActions(ScribusDoc* doc)
1348 {
1349 // Determine state.
1350 PageItem* item = doc ? doc->m_Selection->itemAt(0) : nullptr;
1351 PageItem_Table* table = (item && item->isTable()) ? item->asTable() : nullptr;
1352
1353 if (!doc || !table)
1354 {
1355 (*a_scrActions)["tableInsertRows"]->setEnabled(false);
1356 (*a_scrActions)["tableInsertColumns"]->setEnabled(false);
1357 (*a_scrActions)["tableDeleteRows"]->setEnabled(false);
1358 (*a_scrActions)["tableDeleteColumns"]->setEnabled(false);
1359 (*a_scrActions)["tableMergeCells"]->setEnabled(false);
1360 (*a_scrActions)["tableSplitCells"]->setEnabled(false); // Not implemented.
1361 (*a_scrActions)["tableSetRowHeights"]->setEnabled(false);
1362 (*a_scrActions)["tableSetColumnWidths"]->setEnabled(false);
1363 (*a_scrActions)["tableDistributeRowsEvenly"]->setEnabled(false);
1364 (*a_scrActions)["tableDistributeColumnsEvenly"]->setEnabled(false);
1365 (*a_scrActions)["tableAdjustFrameToTable"]->setEnabled(false);
1366 (*a_scrActions)["tableAdjustTableToFrame"]->setEnabled(false);
1367 return;
1368 }
1369
1370 const bool tableEdit = doc->appMode == modeEditTable;
1371 const int tableRows = table->rows();
1372 const int tableColumns = table->columns();
1373 const int selectedRows = tableEdit ? table->selectedRows().size() : 0;
1374 const int selectedColumns = tableEdit ? table->selectedColumns().size() : 0;
1375 const int selectedCells = tableEdit ? table->selectedCells().size() : 0;
1376
1377 // Enable/disable menu actions.
1378 (*a_scrActions)["tableDeleteRows"]->setEnabled(tableEdit &&
1379 ((selectedRows < 1 && tableRows > 1) || (selectedRows > 0 && selectedRows < tableRows)));
1380 (*a_scrActions)["tableDeleteColumns"]->setEnabled(tableEdit &&
1381 ((selectedColumns < 1 && tableColumns > 1) || (selectedColumns > 0 && selectedColumns < tableColumns)));
1382 (*a_scrActions)["tableMergeCells"]->setEnabled(selectedCells > 1);
1383 (*a_scrActions)["tableSplitCells"]->setEnabled(false); // Not implemented.
1384 (*a_scrActions)["tableSetRowHeights"]->setEnabled(tableEdit);
1385 (*a_scrActions)["tableSetColumnWidths"]->setEnabled(tableEdit);
1386 if (tableEdit)
1387 {
1388 (*a_scrActions)["tableInsertRows"]->setEnabled(selectedCells < 1);
1389 (*a_scrActions)["tableInsertColumns"]->setEnabled(selectedCells < 1);
1390 (*a_scrActions)["tableDistributeRowsEvenly"]->setEnabled(selectedRows > 1);
1391 (*a_scrActions)["tableDistributeColumnsEvenly"]->setEnabled(selectedColumns > 1);
1392 }
1393 else
1394 {
1395 (*a_scrActions)["tableInsertRows"]->setEnabled(true);
1396 (*a_scrActions)["tableInsertColumns"]->setEnabled(true);
1397 (*a_scrActions)["tableDistributeRowsEvenly"]->setEnabled(true);
1398 (*a_scrActions)["tableDistributeColumnsEvenly"]->setEnabled(true);
1399 }
1400 (*a_scrActions)["tableAdjustFrameToTable"]->setEnabled(true);
1401 (*a_scrActions)["tableAdjustTableToFrame"]->setEnabled(true);
1402 }
1403
changeLayer(ScribusDoc * doc,bool clipScrapHaveData)1404 void AppModeHelper::changeLayer(ScribusDoc *doc, bool clipScrapHaveData)
1405 {
1406 bool setter = !doc->layerLocked( doc->activeLayer() );
1407 (*a_scrActions)["editPaste"]->setEnabled(clipScrapHaveData && setter);
1408 (*a_scrActions)["editSelectAll"]->setEnabled(setter);
1409 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(setter);
1410 (*a_scrActions)["editDeselectAll"]->setEnabled(false);
1411 (*a_scrActions)["insertFrame"]->setEnabled(setter);
1412 (*a_scrActions)["toolsSelect"]->setEnabled(setter);
1413 (*a_scrActions)["toolsInsertTextFrame"]->setEnabled(setter);
1414 (*a_scrActions)["toolsInsertImageFrame"]->setEnabled(setter);
1415 (*a_scrActions)["toolsInsertTable"]->setEnabled(setter);
1416 (*a_scrActions)["toolsInsertShape"]->setEnabled(setter);
1417 (*a_scrActions)["toolsInsertLine"]->setEnabled(setter);
1418 (*a_scrActions)["toolsInsertBezier"]->setEnabled(setter);
1419 (*a_scrActions)["toolsInsertFreehandLine"]->setEnabled(setter);
1420 (*a_scrActions)["toolsInsertCalligraphicLine"]->setEnabled(setter);
1421 (*a_scrActions)["toolsInsertPolygon"]->setEnabled(setter);
1422 (*a_scrActions)["toolsInsertArc"]->setEnabled(setter);
1423 (*a_scrActions)["toolsInsertSpiral"]->setEnabled(setter);
1424 (*a_scrActions)["toolsInsertRenderFrame"]->setEnabled(setter);
1425 bool setter2=doc->masterPageMode() ? false : setter;
1426 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(setter2);
1427 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(setter2);
1428 (*a_scrActions)["toolsPDFTextField"]->setEnabled(setter2);
1429 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(setter2);
1430 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(setter2);
1431 (*a_scrActions)["toolsPDFListBox"]->setEnabled(setter2);
1432 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(setter2);
1433 (*a_scrActions)["toolsPDFAnnotLink"]->setEnabled(setter);
1434
1435 updateActionPluginsActions(doc);
1436 }
1437
mainWindowHasNewDoc(ScribusDoc * doc,bool clipScrapHaveData)1438 void AppModeHelper::mainWindowHasNewDoc(ScribusDoc *doc, bool clipScrapHaveData)
1439 {
1440 bool layerUnlocked = !doc->layerLocked(doc->activeLayer());
1441
1442 (*a_scrActions)["filePrint"]->setEnabled(true);
1443 (*a_scrActions)["fileSave"]->setEnabled(!doc->isConverted);
1444 (*a_scrActions)["fileClose"]->setEnabled(true);
1445 (*a_scrActions)["fileDocSetup150"]->setEnabled(true);
1446 (*a_scrActions)["fileRevert"]->setEnabled(false);
1447 (*a_scrActions)["fileCollect"]->setEnabled(true);
1448 (*a_scrActions)["fileSaveAs"]->setEnabled(true);
1449 (*a_scrActions)["fileExportAsEPS"]->setEnabled(true);
1450 (*a_scrActions)["fileExportAsPDF"]->setEnabled(true);
1451 (*a_scrActions)["fileImportVector"]->setEnabled(true);
1452 (*a_scrActions)["pageImport"]->setEnabled(true);
1453
1454 if (ScCore->haveGS() || ScCore->isWinGUI())
1455 (*a_scrActions)["PrintPreview"]->setEnabled(true);
1456 if (ScCore->haveGS())
1457 {
1458 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(true);
1459 (*a_scrActions)["OutputPreviewPS"]->setEnabled(true);
1460 }
1461
1462 if ((*a_scrActions)["SaveAsDocumentTemplate"])
1463 (*a_scrActions)["SaveAsDocumentTemplate"]->setEnabled(true);
1464
1465 (*a_scrActions)["editCut"]->setEnabled(false);
1466 (*a_scrActions)["editCopy"]->setEnabled(false);
1467 (*a_scrActions)["editPaste"]->setEnabled(layerUnlocked && clipScrapHaveData);
1468 (*a_scrActions)["editCopyContents"]->setEnabled(false);
1469 (*a_scrActions)["editPasteContents"]->setEnabled(false);
1470 (*a_scrActions)["editPasteContentsAbs"]->setEnabled(false);
1471 (*a_scrActions)["editSelectAll"]->setEnabled(true);
1472 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(true);
1473 (*a_scrActions)["editDeselectAll"]->setEnabled(false);
1474 (*a_scrActions)["editReplaceColors"]->setEnabled(true);
1475 (*a_scrActions)["editStyles"]->setEnabled(true);
1476 (*a_scrActions)["editMarks"]->setEnabled(true);
1477 (*a_scrActions)["editNotesStyles"]->setEnabled(true);
1478 (*a_scrActions)["editMasterPages"]->setEnabled(true);
1479 (*a_scrActions)["editJavascripts"]->setEnabled(true);
1480
1481 (*a_scrActions)["viewFitInWindow"]->setEnabled(true);
1482 (*a_scrActions)["viewFitWidth"]->setEnabled(true);
1483 (*a_scrActions)["viewFit50"]->setEnabled(true);
1484 (*a_scrActions)["viewFit75"]->setEnabled(true);
1485 (*a_scrActions)["viewFit100"]->setEnabled(true);
1486 (*a_scrActions)["viewFit200"]->setEnabled(true);
1487 (*a_scrActions)["viewFit400"]->setEnabled(true);
1488
1489 (*a_scrActions)["viewSnapToGrid"]->setChecked(doc->SnapGrid);
1490 (*a_scrActions)["viewSnapToGuides"]->setChecked(doc->SnapGuides);
1491 (*a_scrActions)["viewSnapToElements"]->setChecked(doc->SnapElement);
1492 (*a_scrActions)["viewShowRulers"]->setEnabled(true);
1493
1494 (*a_scrActions)["insertFrame"]->setEnabled(true);
1495
1496 (*a_scrActions)["toolsSelect"]->setEnabled(true);
1497 (*a_scrActions)["toolsZoom"]->setEnabled(true);
1498 (*a_scrActions)["toolsInsertTextFrame"]->setEnabled(true);
1499 (*a_scrActions)["toolsInsertImageFrame"]->setEnabled(true);
1500 (*a_scrActions)["toolsInsertTable"]->setEnabled(true);
1501 (*a_scrActions)["toolsInsertShape"]->setEnabled(true);
1502 (*a_scrActions)["toolsInsertLine"]->setEnabled(true);
1503 (*a_scrActions)["toolsInsertBezier"]->setEnabled(true);
1504 (*a_scrActions)["toolsInsertFreehandLine"]->setEnabled(true);
1505 (*a_scrActions)["toolsInsertCalligraphicLine"]->setEnabled(true);
1506 (*a_scrActions)["toolsInsertPolygon"]->setEnabled(true);
1507 (*a_scrActions)["toolsInsertArc"]->setEnabled(true);
1508 (*a_scrActions)["toolsInsertSpiral"]->setEnabled(true);
1509 (*a_scrActions)["toolsInsertRenderFrame"]->setEnabled(true);
1510 (*a_scrActions)["toolsMeasurements"]->setEnabled(true);
1511 (*a_scrActions)["toolsEyeDropper"]->setEnabled(true);
1512 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(true);
1513 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(true);
1514 (*a_scrActions)["toolsPDFTextField"]->setEnabled(true);
1515 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(true);
1516 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(true);
1517 (*a_scrActions)["toolsPDFListBox"]->setEnabled(true);
1518 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(true);
1519 (*a_scrActions)["toolsPDFAnnotLink"]->setEnabled(true);
1520 #ifdef HAVE_OSG
1521 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(true);
1522 #endif
1523 (*a_scrActions)["toolsPreflightVerifier"]->setEnabled(true);
1524 bool setter = doc->DocPages.count() > 1;
1525 (*a_scrActions)["pageDelete"]->setEnabled(setter);
1526 (*a_scrActions)["pageMove"]->setEnabled(setter);
1527 (*a_scrActions)["pageInsert"]->setEnabled(true);
1528 (*a_scrActions)["pageImport"]->setEnabled(true);
1529 (*a_scrActions)["pageCopy"]->setEnabled(true);
1530 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(true);
1531 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(true);
1532 (*a_scrActions)["pageManageGuides"]->setEnabled(true);
1533 (*a_scrActions)["pageManageProperties"]->setEnabled(true);
1534 }
1535
mainWindowSwitchWin(ScribusDoc * doc)1536 void AppModeHelper::mainWindowSwitchWin(ScribusDoc *doc)
1537 {
1538 (*a_scrActions)["fileClose"]->setEnabled(true);
1539 if (doc->masterPageMode() || doc->symbolEditMode() || doc->inlineEditMode())
1540 {
1541 (*a_scrActions)["pageInsert"]->setEnabled(false);
1542 (*a_scrActions)["pageDelete"]->setEnabled(false);
1543 (*a_scrActions)["pageCopy"]->setEnabled(false);
1544 (*a_scrActions)["pageMove"]->setEnabled(false);
1545 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(false);
1546 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(false);
1547 (*a_scrActions)["editMasterPages"]->setEnabled(false);
1548 (*a_scrActions)["fileNew"]->setEnabled(false);
1549 (*a_scrActions)["fileNewFromTemplate"]->setEnabled(false);
1550 if (doc->symbolEditMode() || doc->inlineEditMode())
1551 {
1552 (*a_scrActions)["fileCollect"]->setEnabled(false);
1553 (*a_scrActions)["fileSaveAs"]->setEnabled(false);
1554 (*a_scrActions)["fileExportAsEPS"]->setEnabled(false);
1555 (*a_scrActions)["fileExportAsPDF"]->setEnabled(false);
1556 (*a_scrActions)["fileSave"]->setEnabled(false);
1557 }
1558 else
1559 (*a_scrActions)["fileSave"]->setEnabled(!doc->isConverted);
1560 (*a_scrActions)["fileOpen"]->setEnabled(false);
1561 (*a_scrActions)["fileRevert"]->setEnabled(false);
1562 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(false);
1563 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(false);
1564 (*a_scrActions)["toolsPDFTextField"]->setEnabled(false);
1565 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(false);
1566 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(false);
1567 (*a_scrActions)["toolsPDFListBox"]->setEnabled(false);
1568 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(false);
1569 #ifdef HAVE_OSG
1570 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(false);
1571 #endif
1572 }
1573 else
1574 {
1575 (*a_scrActions)["editMasterPages"]->setEnabled(true);
1576 (*a_scrActions)["fileNew"]->setEnabled(true);
1577 (*a_scrActions)["fileNewFromTemplate"]->setEnabled(true);
1578 (*a_scrActions)["fileOpen"]->setEnabled(true);
1579 (*a_scrActions)["fileClose"]->setEnabled(true);
1580 (*a_scrActions)["fileSave"]->setEnabled(!doc->isConverted);
1581 (*a_scrActions)["fileRevert"]->setEnabled(false);
1582
1583 if (!doc->isModified())
1584 {
1585 bool setter = doc->DocPages.count() > 1;
1586 (*a_scrActions)["pageDelete"]->setEnabled(setter);
1587 (*a_scrActions)["pageMove"]->setEnabled(setter);
1588 }
1589 (*a_scrActions)["pageInsert"]->setEnabled(true);
1590 (*a_scrActions)["pageImport"]->setEnabled(true);
1591 (*a_scrActions)["pageCopy"]->setEnabled(true);
1592 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(true);
1593 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(true);
1594 (*a_scrActions)["pageManageGuides"]->setEnabled(true);
1595 (*a_scrActions)["pageManageProperties"]->setEnabled(true);
1596
1597 (*a_scrActions)["fileSaveAs"]->setEnabled(true);
1598 (*a_scrActions)["fileCollect"]->setEnabled(true);
1599 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(true);
1600 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(true);
1601 (*a_scrActions)["toolsPDFTextField"]->setEnabled(true);
1602 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(true);
1603 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(true);
1604 (*a_scrActions)["toolsPDFListBox"]->setEnabled(true);
1605 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(true);
1606 #ifdef HAVE_OSG
1607 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(true);
1608 #endif
1609 }
1610
1611 (*a_scrActions)["viewSnapToGrid"]->setChecked(doc->SnapGrid);
1612 (*a_scrActions)["viewSnapToGuides"]->setChecked(doc->SnapGuides);
1613 (*a_scrActions)["viewSnapToElements"]->setChecked(doc->SnapElement);
1614 }
1615
mainWindowCloseLastDoc()1616 void AppModeHelper::mainWindowCloseLastDoc()
1617 {
1618 if ( ScCore->haveGS() || ScCore->isWinGUI() )
1619 (*a_scrActions)["PrintPreview"]->setEnabled(false);
1620 if (ScCore->haveGS())
1621 {
1622 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(false);
1623 (*a_scrActions)["OutputPreviewPS"]->setEnabled(false);
1624 }
1625 if ((*a_scrActions)["SaveAsDocumentTemplate"])
1626 (*a_scrActions)["SaveAsDocumentTemplate"]->setEnabled(false);
1627 (*a_scrActions)["editClearContents"]->setEnabled(false);
1628 (*a_scrActions)["editCopy"]->setEnabled(false);
1629 (*a_scrActions)["editCut"]->setEnabled(false);
1630 (*a_scrActions)["editDeselectAll"]->setEnabled(false);
1631 (*a_scrActions)["editEditRenderSource"]->setEnabled(false);
1632 (*a_scrActions)["editEditWithImageEditor"]->setEnabled(false);
1633 (*a_scrActions)["editJavascripts"]->setEnabled(false);
1634 (*a_scrActions)["editMarks"]->setEnabled(false);
1635 (*a_scrActions)["editMasterPages"]->setEnabled(false);
1636 (*a_scrActions)["editNotesStyles"]->setEnabled(false);
1637 (*a_scrActions)["editPaste"]->setEnabled(false);
1638 (*a_scrActions)["editRedoAction"]->setEnabled(false);
1639 (*a_scrActions)["editReplaceColors"]->setEnabled(false);
1640 (*a_scrActions)["editSearchReplace"]->setEnabled(false);
1641 (*a_scrActions)["editSelectAll"]->setEnabled(false);
1642 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(false);
1643 (*a_scrActions)["editStyles"]->setEnabled(false);
1644 (*a_scrActions)["editUndoAction"]->setEnabled(false);
1645 (*a_scrActions)["extrasDeHyphenateText"]->setEnabled(false);
1646 (*a_scrActions)["extrasHyphenateText"]->setEnabled(false);
1647 (*a_scrActions)["fileClose"]->setEnabled(false);
1648 (*a_scrActions)["fileCollect"]->setEnabled(false);
1649 (*a_scrActions)["fileDocSetup150"]->setEnabled(false);
1650 (*a_scrActions)["fileExportAsEPS"]->setEnabled(false);
1651 (*a_scrActions)["fileExportAsPDF"]->setEnabled(false);
1652 (*a_scrActions)["fileExportText"]->setEnabled(false);
1653 (*a_scrActions)["fileImportAppendText"]->setEnabled(false);
1654 (*a_scrActions)["fileImportImage"]->setEnabled(false);
1655 (*a_scrActions)["fileImportText"]->setEnabled(false);
1656 (*a_scrActions)["fileImportText2"]->setEnabled(false);
1657 (*a_scrActions)["fileImportVector"]->setEnabled(false);
1658 (*a_scrActions)["filePrint"]->setEnabled(false);
1659 (*a_scrActions)["fileRevert"]->setEnabled(false);
1660 (*a_scrActions)["fileSave"]->setEnabled(false);
1661 (*a_scrActions)["fileSaveAs"]->setEnabled(false);
1662 (*a_scrActions)["insertFrame"]->setEnabled(false);
1663 (*a_scrActions)["insertSampleText"]->setEnabled(false);
1664 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(false);
1665 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(false);
1666 (*a_scrActions)["itemAttributes"]->setEnabled(false);
1667 (*a_scrActions)["itemDelete"]->setEnabled(false);
1668 (*a_scrActions)["itemDuplicate"]->setEnabled(false);
1669 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(false);
1670 (*a_scrActions)["itemLower"]->setEnabled(false);
1671 (*a_scrActions)["itemLowerToBottom"]->setEnabled(false);
1672 (*a_scrActions)["itemMulDuplicate"]->setEnabled(false);
1673 (*a_scrActions)["itemPDFAnnotationProps"]->setEnabled(false);
1674 (*a_scrActions)["itemPDFFieldProps"]->setEnabled(false);
1675 (*a_scrActions)["itemPreviewFull"]->setEnabled(false);
1676 (*a_scrActions)["itemPreviewLow"]->setEnabled(false);
1677 (*a_scrActions)["itemPreviewNormal"]->setEnabled(false);
1678 (*a_scrActions)["itemRaise"]->setEnabled(false);
1679 (*a_scrActions)["itemRaiseToTop"]->setEnabled(false);
1680 (*a_scrActions)["itemSendToInline"]->setEnabled(false);
1681 (*a_scrActions)["itemSendToPattern"]->setEnabled(false);
1682 (*a_scrActions)["itemToggleInlineImage"]->setEnabled(false);
1683 (*a_scrActions)["itemTransform"]->setEnabled(false);
1684 (*a_scrActions)["itemUpdateImage"]->setEnabled(false);
1685 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(false);
1686 (*a_scrActions)["pageCopy"]->setEnabled(false);
1687 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(false);
1688 (*a_scrActions)["pageDelete"]->setEnabled(false);
1689 (*a_scrActions)["pageImport"]->setEnabled(false);
1690 (*a_scrActions)["pageImport"]->setEnabled(false);
1691 (*a_scrActions)["pageInsert"]->setEnabled(false);
1692 (*a_scrActions)["pageManageGuides"]->setEnabled(false);
1693 (*a_scrActions)["pageManageProperties"]->setEnabled(false);
1694 (*a_scrActions)["pageMove"]->setEnabled(false);
1695 (*a_scrActions)["toolsCopyProperties"]->setEnabled(false);
1696 (*a_scrActions)["toolsEditContents"]->setEnabled(false);
1697 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(false);
1698 (*a_scrActions)["toolsEyeDropper"]->setEnabled(false);
1699 (*a_scrActions)["toolsInsertArc"]->setEnabled(false);
1700 (*a_scrActions)["toolsInsertBezier"]->setEnabled(false);
1701 (*a_scrActions)["toolsInsertCalligraphicLine"]->setEnabled(false);
1702 (*a_scrActions)["toolsInsertFreehandLine"]->setEnabled(false);
1703 (*a_scrActions)["toolsInsertImageFrame"]->setEnabled(false);
1704 (*a_scrActions)["toolsInsertLine"]->setEnabled(false);
1705 (*a_scrActions)["toolsInsertPolygon"]->setEnabled(false);
1706 (*a_scrActions)["toolsInsertRenderFrame"]->setEnabled(false);
1707 (*a_scrActions)["toolsInsertShape"]->setEnabled(false);
1708 (*a_scrActions)["toolsInsertSpiral"]->setEnabled(false);
1709 (*a_scrActions)["toolsInsertTable"]->setEnabled(false);
1710 (*a_scrActions)["toolsInsertTextFrame"]->setEnabled(false);
1711 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(false);
1712 (*a_scrActions)["toolsMeasurements"]->setEnabled(false);
1713 (*a_scrActions)["toolsPDFAnnotLink"]->setEnabled(false);
1714 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(false);
1715 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(false);
1716 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(false);
1717 (*a_scrActions)["toolsPDFListBox"]->setEnabled(false);
1718 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(false);
1719 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(false);
1720 (*a_scrActions)["toolsPDFTextField"]->setEnabled(false);
1721 (*a_scrActions)["toolsPreflightVerifier"]->setEnabled(false);
1722 (*a_scrActions)["toolsRotate"]->setEnabled(false);
1723 (*a_scrActions)["toolsSelect"]->setEnabled(false);
1724 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(false);
1725 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(false);
1726 (*a_scrActions)["toolsZoom"]->setEnabled(false);
1727 (*a_scrActions)["viewFit100"]->setEnabled(false);
1728 (*a_scrActions)["viewFit200"]->setEnabled(false);
1729 (*a_scrActions)["viewFit400"]->setEnabled(false);
1730 (*a_scrActions)["viewFit50"]->setEnabled(false);
1731 (*a_scrActions)["viewFit75"]->setEnabled(false);
1732 (*a_scrActions)["viewFitInWindow"]->setEnabled(false);
1733 (*a_scrActions)["viewFitWidth"]->setEnabled(false);
1734 (*a_scrActions)["viewShowRulers"]->setEnabled(false);
1735 (*a_scrActions)["viewSnapToElements"]->setChecked(false);
1736 (*a_scrActions)["viewSnapToGrid"]->setChecked(false);
1737 (*a_scrActions)["viewSnapToGuides"]->setChecked(false);
1738
1739 #ifdef HAVE_OSG
1740 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(false);
1741 #endif
1742 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
1743 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
1744 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
1745 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
1746 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
1747 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(false);
1748 (*a_scrActions)["itemLock"]->setEnabled(false);
1749 (*a_scrActions)["itemLockSize"]->setEnabled(false);
1750
1751 (*a_scrActions)["tableInsertRows"]->setEnabled(false);
1752 (*a_scrActions)["tableInsertColumns"]->setEnabled(false);
1753 (*a_scrActions)["tableDeleteRows"]->setEnabled(false);
1754 (*a_scrActions)["tableDeleteColumns"]->setEnabled(false);
1755 (*a_scrActions)["tableMergeCells"]->setEnabled(false);
1756 (*a_scrActions)["tableSplitCells"]->setEnabled(false); // Not implemented.
1757 (*a_scrActions)["tableSetRowHeights"]->setEnabled(false);
1758 (*a_scrActions)["tableSetColumnWidths"]->setEnabled(false);
1759 (*a_scrActions)["tableDistributeRowsEvenly"]->setEnabled(false);
1760 (*a_scrActions)["tableDistributeColumnsEvenly"]->setEnabled(false);
1761 (*a_scrActions)["tableDistributeRowsEvenly"]->setEnabled(false);
1762 (*a_scrActions)["tableDistributeColumnsEvenly"]->setEnabled(false);
1763 (*a_scrActions)["tableAdjustFrameToTable"]->setEnabled(false);
1764 (*a_scrActions)["tableAdjustTableToFrame"]->setEnabled(false);
1765
1766 ScribusMainWindow* scMW = ScCore->primaryMainWindow();
1767 scMW->unitSwitcher->setEnabled(false);
1768 scMW->zoomSpinBox->setEnabled(false);
1769 scMW->zoomDefaultToolbarButton->setEnabled(false);
1770 scMW->zoomOutToolbarButton->setEnabled(false);
1771 scMW->zoomInToolbarButton->setEnabled(false);
1772 scMW->pageSelector->setEnabled(false);
1773 scMW->layerMenu->setEnabled(false);
1774 }
1775
setPreviewMode(bool b)1776 void AppModeHelper::setPreviewMode(bool b)
1777 {
1778 bool b2=!b;
1779 (*a_scrActions)["viewShowMargins"]->setEnabled(b2);
1780 (*a_scrActions)["viewShowFrames"]->setEnabled(b2);
1781 (*a_scrActions)["viewShowLayerMarkers"]->setEnabled(b2);
1782 (*a_scrActions)["viewShowGrid"]->setEnabled(b2);
1783 (*a_scrActions)["viewShowGuides"]->setEnabled(b2);
1784 (*a_scrActions)["viewShowColumnBorders"]->setEnabled(b2);
1785 (*a_scrActions)["viewShowBaseline"]->setEnabled(b2);
1786 (*a_scrActions)["viewShowTextChain"]->setEnabled(b2);
1787 (*a_scrActions)["viewShowTextControls"]->setEnabled(b2);
1788 }
1789
enableTextActions(bool enabled,const QString & fontName)1790 void AppModeHelper::enableTextActions(bool enabled, const QString& fontName)
1791 {
1792 (*a_scrActions)["insertGlyph"]->setEnabled(enabled);
1793 a_actMgr->enableUnicodeActions(a_scrActions, enabled, fontName);
1794 if (!enabled)
1795 {
1796 (*a_scrActions)["insertMarkVariableText"]->setEnabled(false);
1797 (*a_scrActions)["insertMarkAnchor"]->setEnabled(false);
1798 (*a_scrActions)["insertMarkItem"]->setEnabled(false);
1799 (*a_scrActions)["insertMark2Mark"]->setEnabled(false);
1800 (*a_scrActions)["insertMarkNote"]->setEnabled(false);
1801 (*a_scrActions)["editMark"]->setEnabled(false);
1802 }
1803 }
1804
setStartupActionsEnabled(bool enabled)1805 void AppModeHelper::setStartupActionsEnabled(bool enabled)
1806 {
1807 Q_UNUSED(enabled);
1808 (*a_scrActions)["fileDocSetup150"]->setEnabled(false);
1809 (*a_scrActions)["filePrint"]->setEnabled(false);
1810 (*a_scrActions)["fileSave"]->setEnabled(false);
1811 (*a_scrActions)["fileSaveAs"]->setEnabled(false);
1812 (*a_scrActions)["fileRevert"]->setEnabled(false);
1813 (*a_scrActions)["fileCollect"]->setEnabled(false);
1814 (*a_scrActions)["fileClose"]->setEnabled(false);
1815 (*a_scrActions)["PrintPreview"]->setEnabled(false);
1816 (*a_scrActions)["OutputPreviewPDF"]->setEnabled(false);
1817 (*a_scrActions)["OutputPreviewPS"]->setEnabled(false);
1818 if ((*a_scrActions)["SaveAsDocumentTemplate"])
1819 (*a_scrActions)["SaveAsDocumentTemplate"]->setEnabled(false);
1820 (*a_scrActions)["fileExportAsPDF"]->setEnabled(false);
1821 (*a_scrActions)["fileExportText"]->setEnabled(false);
1822 (*a_scrActions)["fileExportAsEPS"]->setEnabled(false);
1823 (*a_scrActions)["fileImportText"]->setEnabled(false);
1824 (*a_scrActions)["fileImportText2"]->setEnabled(false);
1825 (*a_scrActions)["fileImportImage"]->setEnabled(false);
1826 (*a_scrActions)["fileImportAppendText"]->setEnabled(false);
1827 (*a_scrActions)["fileImportVector"]->setEnabled(false);
1828 (*a_scrActions)["pageInsert"]->setEnabled(false);
1829 (*a_scrActions)["pageImport"]->setEnabled(false);
1830 (*a_scrActions)["pageDelete"]->setEnabled(false);
1831 (*a_scrActions)["pageImport"]->setEnabled(false);
1832 (*a_scrActions)["pageMove"]->setEnabled(false);
1833 (*a_scrActions)["pageCopy"]->setEnabled(false);
1834 (*a_scrActions)["pageApplyMasterPage"]->setEnabled(false);
1835 (*a_scrActions)["pageCopyToMasterPage"]->setEnabled(false);
1836 (*a_scrActions)["pageManageGuides"]->setEnabled(false);
1837 (*a_scrActions)["pageManageProperties"]->setEnabled(false);
1838 (*a_scrActions)["editUndoAction"]->setEnabled(false);
1839 (*a_scrActions)["editRedoAction"]->setEnabled(false);
1840 (*a_scrActions)["editCut"]->setEnabled(false);
1841 (*a_scrActions)["editCopy"]->setEnabled(false);
1842 (*a_scrActions)["editPaste"]->setEnabled(false);
1843 // scrMenuMgr->setMenuEnabled("EditPasteRecent", false);
1844 (*a_scrActions)["editClearContents"]->setEnabled(false);
1845 (*a_scrActions)["editTruncateContents"]->setEnabled(false);
1846 (*a_scrActions)["editSelectAll"]->setEnabled(false);
1847 (*a_scrActions)["editSelectAllOnLayer"]->setEnabled(false);
1848 (*a_scrActions)["editDeselectAll"]->setEnabled(false);
1849 (*a_scrActions)["editReplaceColors"]->setEnabled(false);
1850 (*a_scrActions)["editStyles"]->setEnabled(false);
1851 (*a_scrActions)["editMarks"]->setEnabled(false);
1852 (*a_scrActions)["editNotesStyles"]->setEnabled(false);
1853 (*a_scrActions)["editSearchReplace"]->setEnabled(false);
1854 (*a_scrActions)["editMasterPages"]->setEnabled(false);
1855 (*a_scrActions)["editJavascripts"]->setEnabled(false);
1856 (*a_scrActions)["editEditWithImageEditor"]->setEnabled(false);
1857 (*a_scrActions)["editEditRenderSource"]->setEnabled(false);
1858 (*a_scrActions)["editMark"]->setEnabled(false);
1859 (*a_scrActions)["insertMarkVariableText"]->setEnabled(false);
1860 (*a_scrActions)["insertMarkAnchor"]->setEnabled(false);
1861 (*a_scrActions)["insertMarkItem"]->setEnabled(false);
1862 (*a_scrActions)["insertMark2Mark"]->setEnabled(false);
1863 (*a_scrActions)["insertMarkNote"]->setEnabled(false);
1864 (*a_scrActions)["toolsPreflightVerifier"]->setEnabled(false);
1865 (*a_scrActions)["extrasHyphenateText"]->setEnabled(false);
1866 (*a_scrActions)["extrasDeHyphenateText"]->setEnabled(false);
1867 (*a_scrActions)["viewFitInWindow"]->setEnabled(false);
1868 (*a_scrActions)["viewFitWidth"]->setEnabled(false);
1869 (*a_scrActions)["viewFit50"]->setEnabled(false);
1870 (*a_scrActions)["viewFit75"]->setEnabled(false);
1871 (*a_scrActions)["viewFit100"]->setEnabled(false);
1872 (*a_scrActions)["viewFit200"]->setEnabled(false);
1873 (*a_scrActions)["viewFit400"]->setEnabled(false);
1874 (*a_scrActions)["viewSnapToGuides"]->setChecked(false);
1875 (*a_scrActions)["viewSnapToElements"]->setChecked(false);
1876 (*a_scrActions)["viewSnapToGrid"]->setChecked(false);
1877 (*a_scrActions)["viewShowRulers"]->setEnabled(false);
1878 // scrMenuMgr->setMenuEnabled("Insert", false);
1879 (*a_scrActions)["insertFrame"]->setEnabled(false);
1880 (*a_scrActions)["insertSampleText"]->setEnabled(false);
1881 (*a_scrActions)["itemDuplicate"]->setEnabled(false);
1882 (*a_scrActions)["itemMulDuplicate"]->setEnabled(false);
1883 (*a_scrActions)["itemTransform"]->setEnabled(false);
1884 (*a_scrActions)["itemDelete"]->setEnabled(false);
1885 (*a_scrActions)["itemRaise"]->setEnabled(false);
1886 (*a_scrActions)["itemLower"]->setEnabled(false);
1887 (*a_scrActions)["itemRaiseToTop"]->setEnabled(false);
1888 (*a_scrActions)["itemLowerToBottom"]->setEnabled(false);
1889 // scrMenuMgr->setMenuEnabled("itemSendToScrapbook", false);
1890 (*a_scrActions)["itemSendToPattern"]->setEnabled(false);
1891 (*a_scrActions)["itemSendToInline"]->setEnabled(false);
1892 (*a_scrActions)["itemAdjustFrameHeightToText"]->setEnabled(false);
1893 (*a_scrActions)["itemAdjustFrameToImage"]->setEnabled(false);
1894 (*a_scrActions)["itemAdjustImageToFrame"]->setEnabled(false);
1895 (*a_scrActions)["styleImageEffects"]->setEnabled(false);
1896 (*a_scrActions)["itemExtendedImageProperties"]->setEnabled(false);
1897 (*a_scrActions)["itemGroup"]->setEnabled(false);
1898 (*a_scrActions)["itemUngroup"]->setEnabled(false);
1899 (*a_scrActions)["itemGroupAdjust"]->setEnabled(false);
1900 (*a_scrActions)["itemUpdateImage"]->setEnabled(false);
1901 (*a_scrActions)["itemPreviewFull"]->setEnabled(false);
1902 (*a_scrActions)["itemPreviewNormal"]->setEnabled(false);
1903 (*a_scrActions)["itemPreviewLow"]->setEnabled(false);
1904 (*a_scrActions)["itemAttributes"]->setEnabled(false);
1905 (*a_scrActions)["itemPDFAnnotationProps"]->setEnabled(false);
1906 (*a_scrActions)["itemPDFFieldProps"]->setEnabled(false);
1907 (*a_scrActions)["itemConvertToBezierCurve"]->setEnabled(false);
1908 (*a_scrActions)["itemConvertToImageFrame"]->setEnabled(false);
1909 (*a_scrActions)["itemConvertToOutlines"]->setEnabled(false);
1910 (*a_scrActions)["itemConvertToPolygon"]->setEnabled(false);
1911 (*a_scrActions)["itemConvertToTextFrame"]->setEnabled(false);
1912 (*a_scrActions)["itemConvertToSymbolFrame"]->setEnabled(false);
1913 (*a_scrActions)["itemAttachTextToPath"]->setEnabled(false);
1914 (*a_scrActions)["itemDetachTextFromPath"]->setEnabled(false);
1915 (*a_scrActions)["itemCombinePolygons"]->setEnabled(false);
1916 (*a_scrActions)["itemSplitPolygons"]->setEnabled(false);
1917 (*a_scrActions)["itemsUnWeld"]->setEnabled(false);
1918 (*a_scrActions)["itemWeld"]->setEnabled(false);
1919 (*a_scrActions)["itemEditWeld"]->setEnabled(false);
1920 (*a_scrActions)["toolsSelect"]->setEnabled(false);
1921 (*a_scrActions)["toolsRotate"]->setEnabled(false);
1922 (*a_scrActions)["toolsEditContents"]->setEnabled(false);
1923 (*a_scrActions)["toolsEditWithStoryEditor"]->setEnabled(false);
1924 (*a_scrActions)["toolsZoom"]->setEnabled(false);
1925 (*a_scrActions)["toolsInsertTextFrame"]->setEnabled(false);
1926 (*a_scrActions)["toolsInsertImageFrame"]->setEnabled(false);
1927 (*a_scrActions)["toolsInsertShape"]->setEnabled(false);
1928 (*a_scrActions)["toolsInsertLine"]->setEnabled(false);
1929 (*a_scrActions)["toolsInsertBezier"]->setEnabled(false);
1930 (*a_scrActions)["toolsInsertFreehandLine"]->setEnabled(false);
1931 (*a_scrActions)["toolsInsertCalligraphicLine"]->setEnabled(false);
1932 (*a_scrActions)["toolsInsertPolygon"]->setEnabled(false);
1933 (*a_scrActions)["toolsInsertArc"]->setEnabled(false);
1934 (*a_scrActions)["toolsInsertSpiral"]->setEnabled(false);
1935 (*a_scrActions)["toolsInsertRenderFrame"]->setEnabled(false);
1936 (*a_scrActions)["toolsInsertTable"]->setEnabled(false);
1937 (*a_scrActions)["toolsLinkTextFrame"]->setEnabled(false);
1938 (*a_scrActions)["toolsUnlinkTextFrame"]->setEnabled(false);
1939 (*a_scrActions)["toolsUnlinkTextFrameAndCutText"]->setEnabled(false);
1940 (*a_scrActions)["toolsMeasurements"]->setEnabled(false);
1941 (*a_scrActions)["toolsCopyProperties"]->setEnabled(false);
1942 (*a_scrActions)["toolsEyeDropper"]->setEnabled(false);
1943 (*a_scrActions)["toolsPDFPushButton"]->setEnabled(false);
1944 (*a_scrActions)["toolsPDFRadioButton"]->setEnabled(false);
1945 (*a_scrActions)["toolsPDFTextField"]->setEnabled(false);
1946 (*a_scrActions)["toolsPDFCheckBox"]->setEnabled(false);
1947 (*a_scrActions)["toolsPDFComboBox"]->setEnabled(false);
1948 (*a_scrActions)["toolsPDFListBox"]->setEnabled(false);
1949 (*a_scrActions)["toolsPDFAnnotText"]->setEnabled(false);
1950 (*a_scrActions)["toolsPDFAnnotLink"]->setEnabled(false);
1951 #ifdef HAVE_OSG
1952 (*a_scrActions)["toolsPDFAnnot3D"]->setEnabled(false);
1953 #endif
1954
1955 (*a_scrActions)["tableInsertRows"]->setEnabled(false);
1956 (*a_scrActions)["tableInsertColumns"]->setEnabled(false);
1957 (*a_scrActions)["tableDeleteRows"]->setEnabled(false);
1958 (*a_scrActions)["tableDeleteColumns"]->setEnabled(false);
1959 (*a_scrActions)["tableMergeCells"]->setEnabled(false);
1960 (*a_scrActions)["tableSplitCells"]->setEnabled(false); // Not implemented.
1961 (*a_scrActions)["tableSetRowHeights"]->setEnabled(false);
1962 (*a_scrActions)["tableSetColumnWidths"]->setEnabled(false);
1963 (*a_scrActions)["tableDistributeRowsEvenly"]->setEnabled(false);
1964 (*a_scrActions)["tableDistributeColumnsEvenly"]->setEnabled(false);
1965 (*a_scrActions)["tableDistributeRowsEvenly"]->setEnabled(false);
1966 (*a_scrActions)["tableDistributeColumnsEvenly"]->setEnabled(false);
1967 (*a_scrActions)["tableAdjustFrameToTable"]->setEnabled(false);
1968 (*a_scrActions)["tableAdjustTableToFrame"]->setEnabled(false);
1969
1970 ScribusMainWindow* scMW = ScCore->primaryMainWindow();
1971 scMW->unitSwitcher->setEnabled(false);
1972 scMW->zoomSpinBox->setEnabled(false);
1973 scMW->zoomDefaultToolbarButton->setEnabled(false);
1974 scMW->zoomOutToolbarButton->setEnabled(false);
1975 scMW->zoomInToolbarButton->setEnabled(false);
1976 scMW->pageSelector->setEnabled(false);
1977 scMW->layerMenu->setEnabled(false);
1978 }
1979
1980