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