r21460 by jghali - #14288: Fix order of "Marks" in context and toolbar menu <FirasH>

scribus-commit scribus-commit at lists.scribus.net
Thu Oct 6 22:09:37 UTC 2016


Author: jghali
Date: Thu Oct  6 22:09:37 2016
New Revision: 21460

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21460
Log:
#14288: Fix order of "Marks" in context and toolbar menu <FirasH>

Modified:
    trunk/Scribus/scribus/scribus.cpp
    trunk/Scribus/scribus/ui/contextmenu.cpp

Modified: trunk/Scribus/scribus/scribus.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21460&path=/trunk/Scribus/scribus/scribus.cpp
==============================================================================
--- trunk/Scribus/scribus/scribus.cpp	(original)
+++ trunk/Scribus/scribus/scribus.cpp	Thu Oct  6 22:09:37 2016
@@ -1028,10 +1028,10 @@
 	scrMenuMgr->createMenu("InsertMark", tr("Marks"), "Insert");
 	scrMenuMgr->addMenuItemString("InsertMark", "Insert");
 	scrMenuMgr->addMenuItemString("insertMarkAnchor", "InsertMark");
+	scrMenuMgr->addMenuItemString("insertMarkNote", "InsertMark");
+	scrMenuMgr->addMenuItemString("insertMarkItem", "InsertMark");
 	scrMenuMgr->addMenuItemString("insertMark2Mark", "InsertMark");
-	scrMenuMgr->addMenuItemString("insertMarkItem", "InsertMark");
 	scrMenuMgr->addMenuItemString("insertMarkVariableText", "InsertMark");
-	scrMenuMgr->addMenuItemString("insertMarkNote", "InsertMark");
 
 	//Page menu
 	scrMenuMgr->createMenu("Page", ActionManager::defaultMenuNameEntryTranslated("Page"));

Modified: trunk/Scribus/scribus/ui/contextmenu.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21460&path=/trunk/Scribus/scribus/ui/contextmenu.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/contextmenu.cpp	(original)
+++ trunk/Scribus/scribus/ui/contextmenu.cpp	Thu Oct  6 22:09:37 2016
@@ -1,615 +1,617 @@
-/*
- For general Scribus (>=1.3.2) copyright and licensing information please refer
- to the COPYING file provided with the program. Following this notice may exist
- a copyright and/or license notice that predates the release of Scribus 1.3.2
- for which a new license (GPL+exception) is in place.
- */
-/***************************************************************************
-*                                                                         *
-*   This program is free software; you can redistribute it and/or modify  *
-*   it under the terms of the GNU General Public License as published by  *
-*   the Free Software Foundation; either version 2 of the License, or     *
-*   (at your option) any later version.                                   *
-*                                                                         *
-***************************************************************************/
-
-#include "contextmenu.h"
-
-#include <QApplication>
-#include <QFrame>
-#include <QGridLayout>
-#include <QLabel>
-#include <QTextEdit>
-#include <QWidget>
-#include <QWidgetAction>
-
-#include "appmodes.h"
-#include "canvasmode.h"
-#include "pageitem_textframe.h"
-#include "scmimedata.h"
-#include "scraction.h"
-#include "scribus.h"
-#include "scribusdoc.h"
-#include "scribusview.h"
-#include "undomanager.h"
-
-
-ContextMenu::ContextMenu(Selection & sel, ScribusMainWindow *actionsParent, ScribusDoc* doc, QWidget * parent) :
-	QMenu(parent),
-	m_Sel(sel),
-	m_ScMW(actionsParent),
-	m_doc(doc),
-	onAPage(false)
-{
-	if (m_Sel.count()>0)
-	{
-		processSelection();
-		createMenuItems_Selection();
-	}
-}
-
-ContextMenu::ContextMenu(ScribusMainWindow *actionsParent, ScribusDoc* doc, double mx, double my, QWidget * parent) :
-	QMenu(parent),
-	m_Sel(Selection(this)),
-	m_ScMW(actionsParent),
-	m_doc(doc)
-{
-	createMenuItems_NoSelection(mx, my);
-}
-
-void ContextMenu::processSelection()
-{
-	int selectedItemCount=m_Sel.count();
-	if (selectedItemCount == 0)
-		return;
-	
-	PageItem* currItem=NULL;
-	for (int i = 0; i < selectedItemCount; ++i)
-	{
-		currItem = m_Sel.itemAt(i);
-		if (currItem)
-		{
-			currItem->applicableActions(m_actionList);
-		}
-	}
-}
-
-void ContextMenu::createMenuItems_Selection()
-{
-	//CB TODO clean
-	int selectedItemCount=m_Sel.count();
-	if (selectedItemCount==0)
-		return;
-	bool itemsAreSameType=m_Sel.itemsAreSameType();
-	//Find our doc from first item in selection if we have an item
-	PageItem *currItem = m_Sel.itemAt(0);
-	assert(m_doc!=0 && currItem!=0);
-	
-	QMenu *menuConvertTo = new QMenu(this);
-	QMenu *menuEditContent = new QMenu(this);
-	QMenu *menuInfo = new QMenu(this);
-	QMenu *menuLayer = new QMenu(this);
-	QMenu *menuLevel = new QMenu(this);
-	QMenu *menuPDF = new QMenu(this);
-	QMenu *menuMark = new QMenu(this);
-	QMenu *menuResolution = new QMenu(this);
-	QMenu *menuLocking = new QMenu(this);
-	QMenu *menuSendTo = new QMenu(this);
-	QMenu *menuScrapbook = new QMenu(this);
-	QMenu *menuEdit = new QMenu(this);
-	QMenu *menuImage = new QMenu(this);
-//	QMenu *menuWeld = new QMenu(this);
-
-	//<-- Add Info
-	//Test new method with image frames first
-	if (selectedItemCount==1 && currItem->asImageFrame())
-	{
-		QAction *act = addMenu(menuInfo);
-		act->setText( tr("In&fo"));
-		if (currItem->asImageFrame())
-		{
-			QLabel* menuLabel = new QLabel("<html>" + currItem->infoDescription() + "</html>", this);
-			menuLabel->setFrameShape(QFrame::NoFrame);
-			QWidgetAction* menuTextWidget = new QWidgetAction(this);
-			menuTextWidget->setDefaultWidget(menuLabel);
-			menuInfo->addAction(menuTextWidget);
-		}
-	}
-	else
-	{
-		QFrame *infoGroup = new QFrame( m_doc->view() );
-		infoGroup->setFrameShape( QFrame::NoFrame );
-		QGridLayout *infoGroupLayout = new QGridLayout( infoGroup );
-		infoGroupLayout->setAlignment( Qt::AlignTop );
-		infoGroupLayout->setSpacing( 2 );
-		infoGroupLayout->setMargin( 0 );
-		if (currItem->createInfoGroup(infoGroup, infoGroupLayout)) 
-		{
-			int row = infoGroupLayout->rowCount(); // <a.l.e>
-	
-			QLabel *printCT = new QLabel(infoGroup);
-			QLabel *printT = new QLabel(infoGroup);
-			printCT->setText( tr("Print: "));
-			infoGroupLayout->addWidget( printCT, row, 0, Qt::AlignRight );
-			if (currItem->printEnabled())
-				printT->setText( tr("Enabled"));
-			else
-				printT->setText( tr("Disabled"));
-			infoGroupLayout->addWidget( printT, row, 1 ); // </a.l.e>
-					
-			QWidgetAction* MenAct = new QWidgetAction(this);
-			MenAct->setDefaultWidget(infoGroup);
-			menuInfo->addAction(MenAct);
-	
-	// Qt4				menuInfo->insertItem(infoGroup);
-//			currItem->createContextMenu(menuInfo, 5);
-			QAction *act = addMenu(menuInfo);
-			act->setText( tr("In&fo"));
-		}
-		else
-		{
-			delete infoGroupLayout;
-			delete infoGroup;
-		}
-	}
-	//-->
-
-	//<-- Add Contents Actions
-	if (m_actionList.contains("fileImportText"))
-	{
-		addSeparator();
-		menuEditContent->addAction(m_ScMW->scrActions["fileImportText"]);
-		menuEditContent->addAction(m_ScMW->scrActions["fileImportAppendText"]);
-		menuEditContent->addAction(m_ScMW->scrActions["toolsEditWithStoryEditor"]);
-		menuEditContent->addAction(m_ScMW->scrActions["insertSampleText"]);
-		menuEditContent->addSeparator();
-	}
-	else //enable this for, eg, text on a path
-		if (m_actionList.contains("toolsEditWithStoryEditor"))
-		{
-			addSeparator();
-			menuEditContent->addAction(m_ScMW->scrActions["toolsEditWithStoryEditor"]);
-		}
-	if (m_actionList.contains("fileImportImage"))
-		menuEditContent->addAction(m_ScMW->scrActions["fileImportImage"]);
-	if (selectedItemCount==1 && currItem->asImageFrame())
-	{
-		if (QApplication::clipboard()->mimeData()->hasImage())
-			menuEditContent->addAction(m_ScMW->scrActions["editPasteImageFromClipboard"]);
-	}
-	if (itemsAreSameType)
-	{
-		if (m_actionList.contains("editCopyContents"))
-			menuEditContent->addAction(m_ScMW->scrActions["editCopyContents"]);
-		if (m_actionList.contains("editPasteContents"))
-			menuEditContent->addAction(m_ScMW->scrActions["editPasteContents"]);
-		if (currItem->asImageFrame() && m_actionList.contains("editPasteContentsAbs"))
-			menuEditContent->addAction(m_ScMW->scrActions["editPasteContentsAbs"]);
-	}
-	if (m_actionList.contains("editClearContents"))
-		menuEditContent->addAction(m_ScMW->scrActions["editClearContents"]);
-	if (m_actionList.contains("editTruncateContents"))
-		menuEditContent->addAction(m_ScMW->scrActions["editTruncateContents"]);
-	if (menuEditContent->actions().count()>0)
-	{
-		QAction *act = addMenu(menuEditContent);
-		act->setText( tr("Content"));
-	}
-	//-->
-
-	//<-- Item specific actions
-	if (itemsAreSameType)
-	{
-		if (m_actionList.contains("editEditRenderSource"))
-		{
-			addSeparator();
-#ifdef HAVE_OSG
-			if (currItem->isOSGFrame())
-			{
-				QAction *act = addAction( tr("Edit 3D Annotation..."));
-				connect(act, SIGNAL(triggered()), m_ScMW, SLOT(callImageEditor()));
-			}
-			else
-				addAction(m_ScMW->scrActions["editEditRenderSource"]);
-#else
-			addAction(m_ScMW->scrActions["editEditRenderSource"]);
-#endif
-		}
-		if (m_doc->appMode == modeEdit)
-		{
-			//add actions for marks in edit mode
-			addSeparator();
-			QAction *act2 = addMenu(menuMark);
-			act2->setText( tr("Insert Mark"));
-			menuMark->addAction(m_ScMW->scrActions["insertMarkVariableText"]);
-			if (m_actionList.contains("insertMarkAnchor"))
-			{
-				menuMark->addAction(m_ScMW->scrActions["insertMarkAnchor"]);
-				menuMark->addAction(m_ScMW->scrActions["insertMarkItem"]);
-				menuMark->addAction(m_ScMW->scrActions["insertMark2Mark"]);
-				if (!currItem->isNoteFrame())
-					menuMark->addAction(m_ScMW->scrActions["insertMarkNote"]);
-				//	menuMark->addAction(m_AP->scrActions["insertMarkIndex"]);
-			}
-			if (currItem->itemText.cursorPosition() < currItem->itemText.length())
-			{
-				if (currItem->itemText.hasMark(currItem->itemText.cursorPosition()))
-					addAction(m_ScMW->scrActions["editMark"]);
-			}
-		}
-		if (!m_doc->marksList().isEmpty())
-		{
-			addSeparator();
-			addAction(m_ScMW->scrActions["itemUpdateMarks"]);
-		}
-
-
-
-
-
-		addSeparator();
-
-
-
-		if (m_actionList.contains("tableInsertRows"))
-			addAction(m_ScMW->scrActions["tableInsertRows"]);
-		if (m_actionList.contains("tableInsertColumns"))
-			addAction(m_ScMW->scrActions["tableInsertColumns"]);
-		if (m_actionList.contains("tableDeleteRows"))
-			addAction(m_ScMW->scrActions["tableDeleteRows"]);
-		if (m_actionList.contains("tableDeleteColumns"))
-			addAction(m_ScMW->scrActions["tableDeleteColumns"]);
-		if (m_actionList.contains("tableMergeCells"))
-			addAction(m_ScMW->scrActions["tableMergeCells"]);
-		if (m_actionList.contains("tableSplitCells"))
-			addAction(m_ScMW->scrActions["tableSplitCells"]);
-		if (m_actionList.contains("tableSetRowHeights"))
-			addAction(m_ScMW->scrActions["tableSetRowHeights"]);
-		if (m_actionList.contains("tableSetColumnWidths"))
-			addAction(m_ScMW->scrActions["tableSetColumnWidths"]);
-		if (m_actionList.contains("tableDistributeRowsEvenly"))
-			addAction(m_ScMW->scrActions["tableDistributeRowsEvenly"]);
-		if (m_actionList.contains("tableDistributeColumnsEvenly"))
-			addAction(m_ScMW->scrActions["tableDistributeColumnsEvenly"]);
-		if (m_actionList.contains("tableAdjustFrameToTable"))
-			addAction(m_ScMW->scrActions["tableAdjustFrameToTable"]);
-		if (m_actionList.contains("tableAdjustTableToFrame"))
-			addAction(m_ScMW->scrActions["tableAdjustTableToFrame"]);
-		if (m_actionList.contains("itemAdjustFrameHeightToText"))
-			addAction(m_ScMW->scrActions["itemAdjustFrameHeightToText"]);
-
-		
-		if (m_actionList.contains("itemPreviewLow"))
-		{
-			if (m_actionList.contains("itemImageIsVisible"))
-				menuResolution->addAction(m_ScMW->scrActions["itemImageIsVisible"]);
-			menuResolution->addSeparator();
-			if (m_actionList.contains("itemPreviewFull"))
-				menuResolution->addAction(m_ScMW->scrActions["itemPreviewFull"]);
-			if (m_actionList.contains("itemPreviewNormal"))
-				menuResolution->addAction(m_ScMW->scrActions["itemPreviewNormal"]);
-			if (m_actionList.contains("itemPreviewLow"))
-				menuResolution->addAction(m_ScMW->scrActions["itemPreviewLow"]);
-			if (menuResolution->actions().count()>0)
-			{
-				QAction *act = addMenu(menuResolution);
-				act->setText( tr("Preview Settings"));
-			}
-		}
-		
-		if (m_actionList.contains("styleImageEffects"))
-			menuImage->addAction(m_ScMW->scrActions["styleImageEffects"]);
-		if (m_actionList.contains("editEditWithImageEditor"))
-			menuImage->addAction(m_ScMW->scrActions["editEditWithImageEditor"]);
-		if (selectedItemCount==1 && currItem->asImageFrame())
-		{
-			if (currItem->imageIsAvailable)
-			{
-				if (m_actionList.contains("itemExtendedImageProperties"))
-					menuImage->addAction(m_ScMW->scrActions["itemExtendedImageProperties"]);
-				if (m_actionList.contains("itemAdjustFrameToImage"))
-				{
-					if (currItem->imageIsAvailable)
-						menuImage->addAction(m_ScMW->scrActions["itemToggleInlineImage"]);
-				}
-				if (m_actionList.contains("itemImageInfo"))
-					menuImage->addAction(m_ScMW->scrActions["itemImageInfo"]);
-				if (m_actionList.contains("itemUpdateImage"))
-					menuImage->addAction(m_ScMW->scrActions["itemUpdateImage"]);
-				if (m_actionList.contains("itemAdjustFrameToImage"))
-					menuImage->addAction(m_ScMW->scrActions["itemAdjustFrameToImage"]);
-				if (m_actionList.contains("itemAdjustImageToFrame"))
-					menuImage->addAction(m_ScMW->scrActions["itemAdjustImageToFrame"]);
-				m_ScMW->scrActions["itemAdjustFrameToImage"]->setEnabled(true);
-				m_ScMW->scrActions["itemAdjustImageToFrame"]->setEnabled(true);
-				if (currItem->pixm.imgInfo.valid)
-					m_ScMW->scrActions["itemExtendedImageProperties"]->setEnabled(true);
-				if (currItem->pixm.imgInfo.exifDataValid)
-					m_ScMW->scrActions["itemImageInfo"]->setEnabled(true);
-				m_ScMW->scrActions["itemUpdateImage"]->setEnabled(true);
-				if (currItem->isRaster)
-				{
-					m_ScMW->scrActions["styleImageEffects"]->setEnabled(true);
-					m_ScMW->scrActions["editEditWithImageEditor"]->setEnabled(true);
-				}
-
-
-				if (menuImage->actions().count()>0)
-				{
-					QAction *act = addMenu(menuImage);
-					act->setText( tr("Image"));
-				}
-			}
-		}
-		
-		if ((selectedItemCount==1) && currItem->asTextFrame())
-		{
-			if (currItem->itemText.length() > 0)
-				m_ScMW->scrActions["itemAdjustFrameHeightToText"]->setEnabled(true);
-		}
-	}
-	//-->
-
-
-
-
-	addSeparator();
-
-	
-	if (selectedItemCount>0)
-	{
-		//<-- Item Locking
-		menuLocking->addAction(m_ScMW->scrActions["itemLock"]);
-		menuLocking->addAction(m_ScMW->scrActions["itemLockSize"]);
-		QAction *actL = addMenu(menuLocking);
-		actL->setText( tr("Locking"));
-		//-->
-
-		//<-- Send To
-		QAction *actST = addMenu(menuSendTo);
-		actST->setText( tr("Send to"));
-		QAction *actScr = menuSendTo->addMenu(menuScrapbook);
-		actScr->setText( tr("Scrapbook"));
-		menuSendTo->addAction(m_ScMW->scrActions["itemSendToPattern"]);
-		menuSendTo->addAction(m_ScMW->scrActions["itemSendToInline"]);
-
-		QStringList scrapNames = m_ScMW->scrapbookNames();
-		scrapNames.removeAt(1);
-		for (int i = 0; i < scrapNames.count(); i++)
-		{
-			ScrAction *act = new ScrAction( ScrAction::DataInt, QPixmap(), QPixmap(), scrapNames[i], QKeySequence(), this, i);
-			menuScrapbook->addAction(act);
-			connect(act, SIGNAL(triggeredData(int)), m_ScMW, SLOT(PutScrap(int)));
-		}
-
-		if (m_doc->layerCount() > 1)
-		{
-			QMap<int,int> layerMap;
-			for (ScLayers::iterator it = m_doc->Layers.begin(); it != m_doc->Layers.end(); ++it)
-				layerMap.insert((*it).Level, (*it).ID);
-			int i=layerMap.count()-1;
-			while (i>=0)
-			{
-				if (m_doc->layerLocked(layerMap[i]))
-					m_ScMW->scrLayersActions[QString::number(layerMap[i])]->setEnabled(false);
-				else
-					m_ScMW->scrLayersActions[QString::number(layerMap[i])]->setEnabled(true);
-				QPixmap pm(20,15);
-				pm.fill(m_doc->layerMarker(layerMap[i]));
-				m_ScMW->scrLayersActions[QString::number(layerMap[i])]->setIcon(pm);
-				menuLayer->addAction(m_ScMW->scrLayersActions[QString::number(layerMap[i--])]);
-			}
-			QAction *act = addMenu(menuLayer);
-			act->setText( tr("Send to La&yer"));
-		}
-		//-->
-	}
-
-
-	//<-- Add Groups Items
-	if (selectedItemCount > 1)
-	{
-		if (m_Sel.objectsLayer() != -1)
-			addAction(m_ScMW->scrActions["itemGroup"]);
-	}
-	else
-	{
-		if (currItem->isGroup())
-		{
-			addAction(m_ScMW->scrActions["itemUngroup"]);
-			addAction(m_ScMW->scrActions["itemGroupAdjust"]);
-		}
-	}
-	//-->
-
-	//<-- Add Level Items
-	if (!currItem->locked())
-	{
-		menuLevel->addAction(m_ScMW->scrActions["itemRaise"]);
-		menuLevel->addAction(m_ScMW->scrActions["itemLower"]);
-		menuLevel->addAction(m_ScMW->scrActions["itemRaiseToTop"]);
-		menuLevel->addAction(m_ScMW->scrActions["itemLowerToBottom"]);
-		if (menuLevel->actions().count()>0)
-		{
-			QAction *act = addMenu(menuLevel);
-			act->setText( tr("Le&vel"));
-		}
-	}
-	//-->
-	
-	//<-- Add Convert To Items
-	if (m_doc->appMode != modeEdit && (itemsAreSameType || currItem->isSingleSel)) //Create convertTo Menu
-	{
-		if (m_ScMW->scrActions["itemConvertToBezierCurve"]->isEnabled() && m_actionList.contains("itemConvertToBezierCurve"))
-			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToBezierCurve"]);
-		if (m_ScMW->scrActions["itemConvertToImageFrame"]->isEnabled() && m_actionList.contains("itemConvertToImageFrame"))
-			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToImageFrame"]);
-		if (m_ScMW->scrActions["itemConvertToOutlines"]->isEnabled() && m_actionList.contains("itemConvertToOutlines"))
-			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToOutlines"]);
-		if (m_ScMW->scrActions["itemConvertToPolygon"]->isEnabled() && m_actionList.contains("itemConvertToPolygon"))
-			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToPolygon"]);
-		if (m_ScMW->scrActions["itemConvertToTextFrame"]->isEnabled() && m_actionList.contains("itemConvertToTextFrame"))
-			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToTextFrame"]);
-		if (m_ScMW->scrActions["itemConvertToSymbolFrame"]->isEnabled() && !currItem->isSymbol())
-			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToSymbolFrame"]);
-		if (menuConvertTo->actions().count()>0)
-		{
-			QAction *act = addMenu(menuConvertTo);
-			act->setText( tr("Conve&rt to"));
-		}
-	}
-	//-->
-	//<-- Item Attributes
-	if (selectedItemCount == 1)
-	{
-		addSeparator();
-		addAction(m_ScMW->scrActions["itemAttributes"]);
-	}
-	//-->
-
-	//<-- Item PDF Options
-	if (currItem->itemType() == PageItem::TextFrame)
-	{
-		QAction *act = addMenu(menuPDF);
-		act->setText( tr("&PDF Options"));
-		menuPDF->addAction(m_ScMW->scrActions["itemPDFIsAnnotation"]);
-		if (!m_doc->masterPageMode())
-			menuPDF->addAction(m_ScMW->scrActions["itemPDFIsBookmark"]);
-		if (selectedItemCount == 1)
-		{
-			menuPDF->addSeparator();
-			if (m_actionList.contains("itemPDFAnnotationProps"))
-				menuPDF->addAction(m_ScMW->scrActions["itemPDFAnnotationProps"]);
-			if (m_actionList.contains("itemPDFFieldProps"))
-				menuPDF->addAction(m_ScMW->scrActions["itemPDFFieldProps"]);
-		}
-	}
-	//-->
-	//<<-- Edit Menu
-	addSeparator();
-	//<-- Add Copy/Paste Actions
-	if (!currItem->locked() && !(currItem->isSingleSel))
-		menuEdit->addAction(m_ScMW->scrActions["editCut"]);
-	if (!(currItem->isSingleSel))
-		menuEdit->addAction(m_ScMW->scrActions["editCopy"]);
-	if (((m_doc->appMode == modeEdit && currItem->itemType() == PageItem::TextFrame) || (m_doc->appMode == modeEditTable && currItem->itemType() == PageItem::Table)) && (ScMimeData::clipboardHasScribusText()||ScMimeData::clipboardHasPlainText()) )
-		menuEdit->addAction(m_ScMW->scrActions["editPaste"]);
-	if (!currItem->locked() && (m_doc->appMode != modeEdit)  && (m_doc->appMode != modeEditTable) && (!(currItem->isSingleSel)))
-		menuEdit->addAction(m_ScMW->scrActions["itemDelete"]);
-	//-->
-	//<-- Add undo
-	UndoManager * const undoManager(UndoManager::instance());
-	if (undoManager->hasUndoActions())
-		menuEdit->addAction(m_ScMW->scrActions["editUndoAction"]);
-	if (undoManager->hasRedoActions())
-		menuEdit->addAction(m_ScMW->scrActions["editRedoAction"]);
-	QAction *actEdit = addMenu(menuEdit);
-	actEdit->setText( tr("Edit"));
-	//-->
-	//-->
-	
-	//<-- Add Welding Menu
-	addSeparator();
-	if (selectedItemCount > 0 && m_doc->appMode != modeEdit)
-	{
-		PageItem *currItem;
-		for (int a = 0; a < m_Sel.count(); ++a)
-		{
-			currItem = m_Sel.itemAt(a);
-			if (currItem->isWelded())
-			{
-				addAction(m_ScMW->scrActions["itemsUnWeld"]);
-				break;
-			}
-		}
-	}
-	if (selectedItemCount == 2 && m_doc->appMode != modeEdit)
-		addAction(m_ScMW->scrActions["itemWeld"]);
-//	{
-//		menuWeld->addAction(m_AP->scrActions["itemWeld17"]);
-//		menuWeld->addAction(m_AP->scrActions["itemWeld71"]);
-//		menuWeld->addAction(m_AP->scrActions["itemWeld13"]);
-//		menuWeld->addAction(m_AP->scrActions["itemWeld31"]);
-//		QAction *act = addMenu(menuWeld);
-//		act->setText( tr("Weld to last..."));
-//	}
-	//-->
-	
-	//<-- Add Properties
-	addSeparator();
-	addAction(m_ScMW->scrActions["toolsProperties"]);
-	//-->
-
-}
-
-void ContextMenu::createMenuItems_NoSelection(double mx, double my)
-{
-	int selectedItemCount=m_Sel.count();
-	if (selectedItemCount!=0)
-		return;
-	
-	if (ScMimeData::clipboardHasScribusElem() || ScMimeData::clipboardHasScribusFragment() )
-	{
-		m_doc->view()->dragX = mx;
-		m_doc->view()->dragY = my;
-		addAction( tr("&Paste Here") , m_doc->view(), SLOT(PasteToPage()));
-	}
-	if (m_ScMW->scrRecentPasteActions.count()>0)
-	{
-		m_doc->view()->dragX = mx;
-		m_doc->view()->dragY = my;
-		QMenu* menuPasteRecent = new QMenu(this);
-		QAction *act = addMenu(menuPasteRecent);
-		act->setText( tr("Paste Recent"));
-		
-		QMap<QString, QPointer<ScrAction> > scrRecentPasteActions;
-		ScrAction *recentPasteAction;
-		foreach (recentPasteAction, m_ScMW->scrRecentPasteActions)
-			menuPasteRecent->addAction(recentPasteAction);
-		addSeparator();
-	}
-	QAction *act = addAction( tr("Paste File..."));
-	connect(act, SIGNAL(triggered()), dynamic_cast<QObject*>(m_doc->view()->m_canvasMode), SLOT(importToPage()));
-	addSeparator();
-
-	addAction(m_ScMW->scrActions["editUndoAction"]);
-	addAction(m_ScMW->scrActions["editRedoAction"]);
-	addSeparator();
-	addAction(m_ScMW->scrActions["viewShowMargins"]);
-	addAction(m_ScMW->scrActions["viewShowFrames"]);
-	addAction(m_ScMW->scrActions["viewShowLayerMarkers"]);
-	addAction(m_ScMW->scrActions["viewShowImages"]);
-	addAction(m_ScMW->scrActions["viewShowGrid"]);
-	addAction(m_ScMW->scrActions["viewShowGuides"]);
-	addAction(m_ScMW->scrActions["viewShowColumnBorders"]);
-	addAction(m_ScMW->scrActions["viewShowBaseline"]);
-	addAction(m_ScMW->scrActions["viewShowTextChain"]);
-	addAction(m_ScMW->scrActions["viewShowRulers"]);
-	addAction(m_ScMW->scrActions["viewRulerMode"]);
-	addSeparator();
-	addAction(m_ScMW->scrActions["viewSnapToGrid"]);
-	addAction(m_ScMW->scrActions["viewSnapToGuides"]);
-	addAction(m_ScMW->scrActions["viewSnapToElements"]);
-	
-	onAPage = (m_doc->OnPage(mx, my) != -1);
-	if (onAPage)
-	{
-		addSeparator();
-		addAction(m_ScMW->scrActions["pageApplyMasterPage"]);
-		addAction(m_ScMW->scrActions["pageManageGuides"]);
-		addAction(m_ScMW->scrActions["pageManageProperties"]);
-		if (m_ScMW->scrActions["pageDelete"]->isEnabled())
-		{
-			addSeparator();
-			pageDeletePrimaryString=m_ScMW->scrActions["pageDelete"]->text();
-			m_ScMW->scrActions["pageDelete"]->setText(tr("Delete Page"));
-			addAction(m_ScMW->scrActions["pageDelete"]);
-		}
-	}
-}
-
-ContextMenu::~ContextMenu()
-{
-	if (onAPage && m_ScMW->scrActions["pageDelete"]->isEnabled())
-		m_ScMW->scrActions["pageDelete"]->setText(pageDeletePrimaryString);
-}
+/*
+ For general Scribus (>=1.3.2) copyright and licensing information please refer
+ to the COPYING file provided with the program. Following this notice may exist
+ a copyright and/or license notice that predates the release of Scribus 1.3.2
+ for which a new license (GPL+exception) is in place.
+ */
+/***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************/
+
+#include "contextmenu.h"
+
+#include <QApplication>
+#include <QFrame>
+#include <QGridLayout>
+#include <QLabel>
+#include <QTextEdit>
+#include <QWidget>
+#include <QWidgetAction>
+
+#include "appmodes.h"
+#include "canvasmode.h"
+#include "pageitem_textframe.h"
+#include "scmimedata.h"
+#include "scraction.h"
+#include "scribus.h"
+#include "scribusdoc.h"
+#include "scribusview.h"
+#include "undomanager.h"
+
+
+ContextMenu::ContextMenu(Selection & sel, ScribusMainWindow *actionsParent, ScribusDoc* doc, QWidget * parent) :
+	QMenu(parent),
+	m_Sel(sel),
+	m_ScMW(actionsParent),
+	m_doc(doc),
+	onAPage(false)
+{
+	if (m_Sel.count()>0)
+	{
+		processSelection();
+		createMenuItems_Selection();
+	}
+}
+
+ContextMenu::ContextMenu(ScribusMainWindow *actionsParent, ScribusDoc* doc, double mx, double my, QWidget * parent) :
+	QMenu(parent),
+	m_Sel(Selection(this)),
+	m_ScMW(actionsParent),
+	m_doc(doc)
+{
+	createMenuItems_NoSelection(mx, my);
+}
+
+void ContextMenu::processSelection()
+{
+	int selectedItemCount=m_Sel.count();
+	if (selectedItemCount == 0)
+		return;
+	
+	PageItem* currItem=NULL;
+	for (int i = 0; i < selectedItemCount; ++i)
+	{
+		currItem = m_Sel.itemAt(i);
+		if (currItem)
+		{
+			currItem->applicableActions(m_actionList);
+		}
+	}
+}
+
+void ContextMenu::createMenuItems_Selection()
+{
+	//CB TODO clean
+	int selectedItemCount=m_Sel.count();
+	if (selectedItemCount==0)
+		return;
+	bool itemsAreSameType=m_Sel.itemsAreSameType();
+	//Find our doc from first item in selection if we have an item
+	PageItem *currItem = m_Sel.itemAt(0);
+	assert(m_doc!=0 && currItem!=0);
+	
+	QMenu *menuConvertTo = new QMenu(this);
+	QMenu *menuEditContent = new QMenu(this);
+	QMenu *menuInfo = new QMenu(this);
+	QMenu *menuLayer = new QMenu(this);
+	QMenu *menuLevel = new QMenu(this);
+	QMenu *menuPDF = new QMenu(this);
+	QMenu *menuMark = new QMenu(this);
+	QMenu *menuResolution = new QMenu(this);
+	QMenu *menuLocking = new QMenu(this);
+	QMenu *menuSendTo = new QMenu(this);
+	QMenu *menuScrapbook = new QMenu(this);
+	QMenu *menuEdit = new QMenu(this);
+	QMenu *menuImage = new QMenu(this);
+//	QMenu *menuWeld = new QMenu(this);
+
+	//<-- Add Info
+	//Test new method with image frames first
+	if (selectedItemCount==1 && currItem->asImageFrame())
+	{
+		QAction *act = addMenu(menuInfo);
+		act->setText( tr("In&fo"));
+		if (currItem->asImageFrame())
+		{
+			QLabel* menuLabel = new QLabel("<html>" + currItem->infoDescription() + "</html>", this);
+			menuLabel->setFrameShape(QFrame::NoFrame);
+			QWidgetAction* menuTextWidget = new QWidgetAction(this);
+			menuTextWidget->setDefaultWidget(menuLabel);
+			menuInfo->addAction(menuTextWidget);
+		}
+	}
+	else
+	{
+		QFrame *infoGroup = new QFrame( m_doc->view() );
+		infoGroup->setFrameShape( QFrame::NoFrame );
+		QGridLayout *infoGroupLayout = new QGridLayout( infoGroup );
+		infoGroupLayout->setAlignment( Qt::AlignTop );
+		infoGroupLayout->setSpacing( 2 );
+		infoGroupLayout->setMargin( 0 );
+		if (currItem->createInfoGroup(infoGroup, infoGroupLayout)) 
+		{
+			int row = infoGroupLayout->rowCount(); // <a.l.e>
+	
+			QLabel *printCT = new QLabel(infoGroup);
+			QLabel *printT = new QLabel(infoGroup);
+			printCT->setText( tr("Print: "));
+			infoGroupLayout->addWidget( printCT, row, 0, Qt::AlignRight );
+			if (currItem->printEnabled())
+				printT->setText( tr("Enabled"));
+			else
+				printT->setText( tr("Disabled"));
+			infoGroupLayout->addWidget( printT, row, 1 ); // </a.l.e>
+					
+			QWidgetAction* MenAct = new QWidgetAction(this);
+			MenAct->setDefaultWidget(infoGroup);
+			menuInfo->addAction(MenAct);
+	
+	// Qt4				menuInfo->insertItem(infoGroup);
+//			currItem->createContextMenu(menuInfo, 5);
+			QAction *act = addMenu(menuInfo);
+			act->setText( tr("In&fo"));
+		}
+		else
+		{
+			delete infoGroupLayout;
+			delete infoGroup;
+		}
+	}
+	//-->
+
+	//<-- Add Contents Actions
+	if (m_actionList.contains("fileImportText"))
+	{
+		addSeparator();
+		menuEditContent->addAction(m_ScMW->scrActions["fileImportText"]);
+		menuEditContent->addAction(m_ScMW->scrActions["fileImportAppendText"]);
+		menuEditContent->addAction(m_ScMW->scrActions["toolsEditWithStoryEditor"]);
+		menuEditContent->addAction(m_ScMW->scrActions["insertSampleText"]);
+		menuEditContent->addSeparator();
+	}
+	else //enable this for, eg, text on a path
+		if (m_actionList.contains("toolsEditWithStoryEditor"))
+		{
+			addSeparator();
+			menuEditContent->addAction(m_ScMW->scrActions["toolsEditWithStoryEditor"]);
+		}
+	if (m_actionList.contains("fileImportImage"))
+		menuEditContent->addAction(m_ScMW->scrActions["fileImportImage"]);
+	if (selectedItemCount==1 && currItem->asImageFrame())
+	{
+		if (QApplication::clipboard()->mimeData()->hasImage())
+			menuEditContent->addAction(m_ScMW->scrActions["editPasteImageFromClipboard"]);
+	}
+	if (itemsAreSameType)
+	{
+		if (m_actionList.contains("editCopyContents"))
+			menuEditContent->addAction(m_ScMW->scrActions["editCopyContents"]);
+		if (m_actionList.contains("editPasteContents"))
+			menuEditContent->addAction(m_ScMW->scrActions["editPasteContents"]);
+		if (currItem->asImageFrame() && m_actionList.contains("editPasteContentsAbs"))
+			menuEditContent->addAction(m_ScMW->scrActions["editPasteContentsAbs"]);
+	}
+	if (m_actionList.contains("editClearContents"))
+		menuEditContent->addAction(m_ScMW->scrActions["editClearContents"]);
+	if (m_actionList.contains("editTruncateContents"))
+		menuEditContent->addAction(m_ScMW->scrActions["editTruncateContents"]);
+	if (menuEditContent->actions().count()>0)
+	{
+		QAction *act = addMenu(menuEditContent);
+		act->setText( tr("Content"));
+	}
+	//-->
+
+	//<-- Item specific actions
+	if (itemsAreSameType)
+	{
+		if (m_actionList.contains("editEditRenderSource"))
+		{
+			addSeparator();
+#ifdef HAVE_OSG
+			if (currItem->isOSGFrame())
+			{
+				QAction *act = addAction( tr("Edit 3D Annotation..."));
+				connect(act, SIGNAL(triggered()), m_ScMW, SLOT(callImageEditor()));
+			}
+			else
+				addAction(m_ScMW->scrActions["editEditRenderSource"]);
+#else
+			addAction(m_ScMW->scrActions["editEditRenderSource"]);
+#endif
+		}
+		if (m_doc->appMode == modeEdit)
+		{
+			//add actions for marks in edit mode
+			addSeparator();
+			QAction *act2 = addMenu(menuMark);
+			act2->setText( tr("Insert Mark"));
+			if (m_actionList.contains("insertMarkAnchor"))
+			{
+				menuMark->addAction(m_ScMW->scrActions["insertMarkAnchor"]);
+				if (!currItem->isNoteFrame())
+				{
+					menuMark->addAction(m_ScMW->scrActions["insertMarkNote"]);
+				//	menuMark->addAction(m_AP->scrActions["insertMarkIndex"]);
+				}
+				menuMark->addAction(m_ScMW->scrActions["insertMarkItem"]);
+				menuMark->addAction(m_ScMW->scrActions["insertMark2Mark"]);
+			}
+			menuMark->addAction(m_ScMW->scrActions["insertMarkVariableText"]);
+			if (currItem->itemText.cursorPosition() < currItem->itemText.length())
+			{
+				if (currItem->itemText.hasMark(currItem->itemText.cursorPosition()))
+					addAction(m_ScMW->scrActions["editMark"]);
+			}
+		}
+		if (!m_doc->marksList().isEmpty())
+		{
+			addSeparator();
+			addAction(m_ScMW->scrActions["itemUpdateMarks"]);
+		}
+
+
+
+
+
+		addSeparator();
+
+
+
+		if (m_actionList.contains("tableInsertRows"))
+			addAction(m_ScMW->scrActions["tableInsertRows"]);
+		if (m_actionList.contains("tableInsertColumns"))
+			addAction(m_ScMW->scrActions["tableInsertColumns"]);
+		if (m_actionList.contains("tableDeleteRows"))
+			addAction(m_ScMW->scrActions["tableDeleteRows"]);
+		if (m_actionList.contains("tableDeleteColumns"))
+			addAction(m_ScMW->scrActions["tableDeleteColumns"]);
+		if (m_actionList.contains("tableMergeCells"))
+			addAction(m_ScMW->scrActions["tableMergeCells"]);
+		if (m_actionList.contains("tableSplitCells"))
+			addAction(m_ScMW->scrActions["tableSplitCells"]);
+		if (m_actionList.contains("tableSetRowHeights"))
+			addAction(m_ScMW->scrActions["tableSetRowHeights"]);
+		if (m_actionList.contains("tableSetColumnWidths"))
+			addAction(m_ScMW->scrActions["tableSetColumnWidths"]);
+		if (m_actionList.contains("tableDistributeRowsEvenly"))
+			addAction(m_ScMW->scrActions["tableDistributeRowsEvenly"]);
+		if (m_actionList.contains("tableDistributeColumnsEvenly"))
+			addAction(m_ScMW->scrActions["tableDistributeColumnsEvenly"]);
+		if (m_actionList.contains("tableAdjustFrameToTable"))
+			addAction(m_ScMW->scrActions["tableAdjustFrameToTable"]);
+		if (m_actionList.contains("tableAdjustTableToFrame"))
+			addAction(m_ScMW->scrActions["tableAdjustTableToFrame"]);
+		if (m_actionList.contains("itemAdjustFrameHeightToText"))
+			addAction(m_ScMW->scrActions["itemAdjustFrameHeightToText"]);
+
+		
+		if (m_actionList.contains("itemPreviewLow"))
+		{
+			if (m_actionList.contains("itemImageIsVisible"))
+				menuResolution->addAction(m_ScMW->scrActions["itemImageIsVisible"]);
+			menuResolution->addSeparator();
+			if (m_actionList.contains("itemPreviewFull"))
+				menuResolution->addAction(m_ScMW->scrActions["itemPreviewFull"]);
+			if (m_actionList.contains("itemPreviewNormal"))
+				menuResolution->addAction(m_ScMW->scrActions["itemPreviewNormal"]);
+			if (m_actionList.contains("itemPreviewLow"))
+				menuResolution->addAction(m_ScMW->scrActions["itemPreviewLow"]);
+			if (menuResolution->actions().count()>0)
+			{
+				QAction *act = addMenu(menuResolution);
+				act->setText( tr("Preview Settings"));
+			}
+		}
+		
+		if (m_actionList.contains("styleImageEffects"))
+			menuImage->addAction(m_ScMW->scrActions["styleImageEffects"]);
+		if (m_actionList.contains("editEditWithImageEditor"))
+			menuImage->addAction(m_ScMW->scrActions["editEditWithImageEditor"]);
+		if (selectedItemCount==1 && currItem->asImageFrame())
+		{
+			if (currItem->imageIsAvailable)
+			{
+				if (m_actionList.contains("itemExtendedImageProperties"))
+					menuImage->addAction(m_ScMW->scrActions["itemExtendedImageProperties"]);
+				if (m_actionList.contains("itemAdjustFrameToImage"))
+				{
+					if (currItem->imageIsAvailable)
+						menuImage->addAction(m_ScMW->scrActions["itemToggleInlineImage"]);
+				}
+				if (m_actionList.contains("itemImageInfo"))
+					menuImage->addAction(m_ScMW->scrActions["itemImageInfo"]);
+				if (m_actionList.contains("itemUpdateImage"))
+					menuImage->addAction(m_ScMW->scrActions["itemUpdateImage"]);
+				if (m_actionList.contains("itemAdjustFrameToImage"))
+					menuImage->addAction(m_ScMW->scrActions["itemAdjustFrameToImage"]);
+				if (m_actionList.contains("itemAdjustImageToFrame"))
+					menuImage->addAction(m_ScMW->scrActions["itemAdjustImageToFrame"]);
+				m_ScMW->scrActions["itemAdjustFrameToImage"]->setEnabled(true);
+				m_ScMW->scrActions["itemAdjustImageToFrame"]->setEnabled(true);
+				if (currItem->pixm.imgInfo.valid)
+					m_ScMW->scrActions["itemExtendedImageProperties"]->setEnabled(true);
+				if (currItem->pixm.imgInfo.exifDataValid)
+					m_ScMW->scrActions["itemImageInfo"]->setEnabled(true);
+				m_ScMW->scrActions["itemUpdateImage"]->setEnabled(true);
+				if (currItem->isRaster)
+				{
+					m_ScMW->scrActions["styleImageEffects"]->setEnabled(true);
+					m_ScMW->scrActions["editEditWithImageEditor"]->setEnabled(true);
+				}
+
+
+				if (menuImage->actions().count()>0)
+				{
+					QAction *act = addMenu(menuImage);
+					act->setText( tr("Image"));
+				}
+			}
+		}
+		
+		if ((selectedItemCount==1) && currItem->asTextFrame())
+		{
+			if (currItem->itemText.length() > 0)
+				m_ScMW->scrActions["itemAdjustFrameHeightToText"]->setEnabled(true);
+		}
+	}
+	//-->
+
+
+
+
+	addSeparator();
+
+	
+	if (selectedItemCount>0)
+	{
+		//<-- Item Locking
+		menuLocking->addAction(m_ScMW->scrActions["itemLock"]);
+		menuLocking->addAction(m_ScMW->scrActions["itemLockSize"]);
+		QAction *actL = addMenu(menuLocking);
+		actL->setText( tr("Locking"));
+		//-->
+
+		//<-- Send To
+		QAction *actST = addMenu(menuSendTo);
+		actST->setText( tr("Send to"));
+		QAction *actScr = menuSendTo->addMenu(menuScrapbook);
+		actScr->setText( tr("Scrapbook"));
+		menuSendTo->addAction(m_ScMW->scrActions["itemSendToPattern"]);
+		menuSendTo->addAction(m_ScMW->scrActions["itemSendToInline"]);
+
+		QStringList scrapNames = m_ScMW->scrapbookNames();
+		scrapNames.removeAt(1);
+		for (int i = 0; i < scrapNames.count(); i++)
+		{
+			ScrAction *act = new ScrAction( ScrAction::DataInt, QPixmap(), QPixmap(), scrapNames[i], QKeySequence(), this, i);
+			menuScrapbook->addAction(act);
+			connect(act, SIGNAL(triggeredData(int)), m_ScMW, SLOT(PutScrap(int)));
+		}
+
+		if (m_doc->layerCount() > 1)
+		{
+			QMap<int,int> layerMap;
+			for (ScLayers::iterator it = m_doc->Layers.begin(); it != m_doc->Layers.end(); ++it)
+				layerMap.insert((*it).Level, (*it).ID);
+			int i=layerMap.count()-1;
+			while (i>=0)
+			{
+				if (m_doc->layerLocked(layerMap[i]))
+					m_ScMW->scrLayersActions[QString::number(layerMap[i])]->setEnabled(false);
+				else
+					m_ScMW->scrLayersActions[QString::number(layerMap[i])]->setEnabled(true);
+				QPixmap pm(20,15);
+				pm.fill(m_doc->layerMarker(layerMap[i]));
+				m_ScMW->scrLayersActions[QString::number(layerMap[i])]->setIcon(pm);
+				menuLayer->addAction(m_ScMW->scrLayersActions[QString::number(layerMap[i--])]);
+			}
+			QAction *act = addMenu(menuLayer);
+			act->setText( tr("Send to La&yer"));
+		}
+		//-->
+	}
+
+
+	//<-- Add Groups Items
+	if (selectedItemCount > 1)
+	{
+		if (m_Sel.objectsLayer() != -1)
+			addAction(m_ScMW->scrActions["itemGroup"]);
+	}
+	else
+	{
+		if (currItem->isGroup())
+		{
+			addAction(m_ScMW->scrActions["itemUngroup"]);
+			addAction(m_ScMW->scrActions["itemGroupAdjust"]);
+		}
+	}
+	//-->
+
+	//<-- Add Level Items
+	if (!currItem->locked())
+	{
+		menuLevel->addAction(m_ScMW->scrActions["itemRaise"]);
+		menuLevel->addAction(m_ScMW->scrActions["itemLower"]);
+		menuLevel->addAction(m_ScMW->scrActions["itemRaiseToTop"]);
+		menuLevel->addAction(m_ScMW->scrActions["itemLowerToBottom"]);
+		if (menuLevel->actions().count()>0)
+		{
+			QAction *act = addMenu(menuLevel);
+			act->setText( tr("Le&vel"));
+		}
+	}
+	//-->
+	
+	//<-- Add Convert To Items
+	if (m_doc->appMode != modeEdit && (itemsAreSameType || currItem->isSingleSel)) //Create convertTo Menu
+	{
+		if (m_ScMW->scrActions["itemConvertToBezierCurve"]->isEnabled() && m_actionList.contains("itemConvertToBezierCurve"))
+			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToBezierCurve"]);
+		if (m_ScMW->scrActions["itemConvertToImageFrame"]->isEnabled() && m_actionList.contains("itemConvertToImageFrame"))
+			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToImageFrame"]);
+		if (m_ScMW->scrActions["itemConvertToOutlines"]->isEnabled() && m_actionList.contains("itemConvertToOutlines"))
+			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToOutlines"]);
+		if (m_ScMW->scrActions["itemConvertToPolygon"]->isEnabled() && m_actionList.contains("itemConvertToPolygon"))
+			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToPolygon"]);
+		if (m_ScMW->scrActions["itemConvertToTextFrame"]->isEnabled() && m_actionList.contains("itemConvertToTextFrame"))
+			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToTextFrame"]);
+		if (m_ScMW->scrActions["itemConvertToSymbolFrame"]->isEnabled() && !currItem->isSymbol())
+			menuConvertTo->addAction(m_ScMW->scrActions["itemConvertToSymbolFrame"]);
+		if (menuConvertTo->actions().count()>0)
+		{
+			QAction *act = addMenu(menuConvertTo);
+			act->setText( tr("Conve&rt to"));
+		}
+	}
+	//-->
+	//<-- Item Attributes
+	if (selectedItemCount == 1)
+	{
+		addSeparator();
+		addAction(m_ScMW->scrActions["itemAttributes"]);
+	}
+	//-->
+
+	//<-- Item PDF Options
+	if (currItem->itemType() == PageItem::TextFrame)
+	{
+		QAction *act = addMenu(menuPDF);
+		act->setText( tr("&PDF Options"));
+		menuPDF->addAction(m_ScMW->scrActions["itemPDFIsAnnotation"]);
+		if (!m_doc->masterPageMode())
+			menuPDF->addAction(m_ScMW->scrActions["itemPDFIsBookmark"]);
+		if (selectedItemCount == 1)
+		{
+			menuPDF->addSeparator();
+			if (m_actionList.contains("itemPDFAnnotationProps"))
+				menuPDF->addAction(m_ScMW->scrActions["itemPDFAnnotationProps"]);
+			if (m_actionList.contains("itemPDFFieldProps"))
+				menuPDF->addAction(m_ScMW->scrActions["itemPDFFieldProps"]);
+		}
+	}
+	//-->
+	//<<-- Edit Menu
+	addSeparator();
+	//<-- Add Copy/Paste Actions
+	if (!currItem->locked() && !(currItem->isSingleSel))
+		menuEdit->addAction(m_ScMW->scrActions["editCut"]);
+	if (!(currItem->isSingleSel))
+		menuEdit->addAction(m_ScMW->scrActions["editCopy"]);
+	if (((m_doc->appMode == modeEdit && currItem->itemType() == PageItem::TextFrame) || (m_doc->appMode == modeEditTable && currItem->itemType() == PageItem::Table)) && (ScMimeData::clipboardHasScribusText()||ScMimeData::clipboardHasPlainText()) )
+		menuEdit->addAction(m_ScMW->scrActions["editPaste"]);
+	if (!currItem->locked() && (m_doc->appMode != modeEdit)  && (m_doc->appMode != modeEditTable) && (!(currItem->isSingleSel)))
+		menuEdit->addAction(m_ScMW->scrActions["itemDelete"]);
+	//-->
+	//<-- Add undo
+	UndoManager * const undoManager(UndoManager::instance());
+	if (undoManager->hasUndoActions())
+		menuEdit->addAction(m_ScMW->scrActions["editUndoAction"]);
+	if (undoManager->hasRedoActions())
+		menuEdit->addAction(m_ScMW->scrActions["editRedoAction"]);
+	QAction *actEdit = addMenu(menuEdit);
+	actEdit->setText( tr("Edit"));
+	//-->
+	//-->
+	
+	//<-- Add Welding Menu
+	addSeparator();
+	if (selectedItemCount > 0 && m_doc->appMode != modeEdit)
+	{
+		PageItem *currItem;
+		for (int a = 0; a < m_Sel.count(); ++a)
+		{
+			currItem = m_Sel.itemAt(a);
+			if (currItem->isWelded())
+			{
+				addAction(m_ScMW->scrActions["itemsUnWeld"]);
+				break;
+			}
+		}
+	}
+	if (selectedItemCount == 2 && m_doc->appMode != modeEdit)
+		addAction(m_ScMW->scrActions["itemWeld"]);
+//	{
+//		menuWeld->addAction(m_AP->scrActions["itemWeld17"]);
+//		menuWeld->addAction(m_AP->scrActions["itemWeld71"]);
+//		menuWeld->addAction(m_AP->scrActions["itemWeld13"]);
+//		menuWeld->addAction(m_AP->scrActions["itemWeld31"]);
+//		QAction *act = addMenu(menuWeld);
+//		act->setText( tr("Weld to last..."));
+//	}
+	//-->
+	
+	//<-- Add Properties
+	addSeparator();
+	addAction(m_ScMW->scrActions["toolsProperties"]);
+	//-->
+
+}
+
+void ContextMenu::createMenuItems_NoSelection(double mx, double my)
+{
+	int selectedItemCount=m_Sel.count();
+	if (selectedItemCount!=0)
+		return;
+	
+	if (ScMimeData::clipboardHasScribusElem() || ScMimeData::clipboardHasScribusFragment() )
+	{
+		m_doc->view()->dragX = mx;
+		m_doc->view()->dragY = my;
+		addAction( tr("&Paste Here") , m_doc->view(), SLOT(PasteToPage()));
+	}
+	if (m_ScMW->scrRecentPasteActions.count()>0)
+	{
+		m_doc->view()->dragX = mx;
+		m_doc->view()->dragY = my;
+		QMenu* menuPasteRecent = new QMenu(this);
+		QAction *act = addMenu(menuPasteRecent);
+		act->setText( tr("Paste Recent"));
+		
+		QMap<QString, QPointer<ScrAction> > scrRecentPasteActions;
+		ScrAction *recentPasteAction;
+		foreach (recentPasteAction, m_ScMW->scrRecentPasteActions)
+			menuPasteRecent->addAction(recentPasteAction);
+		addSeparator();
+	}
+	QAction *act = addAction( tr("Paste File..."));
+	connect(act, SIGNAL(triggered()), dynamic_cast<QObject*>(m_doc->view()->m_canvasMode), SLOT(importToPage()));
+	addSeparator();
+
+	addAction(m_ScMW->scrActions["editUndoAction"]);
+	addAction(m_ScMW->scrActions["editRedoAction"]);
+	addSeparator();
+	addAction(m_ScMW->scrActions["viewShowMargins"]);
+	addAction(m_ScMW->scrActions["viewShowFrames"]);
+	addAction(m_ScMW->scrActions["viewShowLayerMarkers"]);
+	addAction(m_ScMW->scrActions["viewShowImages"]);
+	addAction(m_ScMW->scrActions["viewShowGrid"]);
+	addAction(m_ScMW->scrActions["viewShowGuides"]);
+	addAction(m_ScMW->scrActions["viewShowColumnBorders"]);
+	addAction(m_ScMW->scrActions["viewShowBaseline"]);
+	addAction(m_ScMW->scrActions["viewShowTextChain"]);
+	addAction(m_ScMW->scrActions["viewShowRulers"]);
+	addAction(m_ScMW->scrActions["viewRulerMode"]);
+	addSeparator();
+	addAction(m_ScMW->scrActions["viewSnapToGrid"]);
+	addAction(m_ScMW->scrActions["viewSnapToGuides"]);
+	addAction(m_ScMW->scrActions["viewSnapToElements"]);
+	
+	onAPage = (m_doc->OnPage(mx, my) != -1);
+	if (onAPage)
+	{
+		addSeparator();
+		addAction(m_ScMW->scrActions["pageApplyMasterPage"]);
+		addAction(m_ScMW->scrActions["pageManageGuides"]);
+		addAction(m_ScMW->scrActions["pageManageProperties"]);
+		if (m_ScMW->scrActions["pageDelete"]->isEnabled())
+		{
+			addSeparator();
+			pageDeletePrimaryString=m_ScMW->scrActions["pageDelete"]->text();
+			m_ScMW->scrActions["pageDelete"]->setText(tr("Delete Page"));
+			addAction(m_ScMW->scrActions["pageDelete"]);
+		}
+	}
+}
+
+ContextMenu::~ContextMenu()
+{
+	if (onAPage && m_ScMW->scrActions["pageDelete"]->isEnabled())
+		m_ScMW->scrActions["pageDelete"]->setText(pageDeletePrimaryString);
+}




More information about the scribus-commit mailing list