r13808 by pierre - Added initial files related to a possible modularized properties palette. Note that the classes defined in these files, while mostly functionals, are not yet used, they are committed to ease their maintenance and expose them more.

scribus-commit scribus-commit at lists.scribus.net
Mon Aug 3 11:55:15 CEST 2009


Revision: 13808
Author: pierre
Date: 2009-08-03T09:53:10.905038Z
Commit message: Added initial files related to a possible modularized properties palette.
Note that the classes defined in these files, while mostly functionals,
are not yet used, they are committed to ease their maintenance 
and expose them more.

Changeset: 
A  /trunk/Scribus/scribus/ui/pageitempositionsetter.h
A  /trunk/Scribus/scribus/ui/pageitemsetterbase.cpp
M  /trunk/Scribus/scribus/CMakeLists.txt
A  /trunk/Scribus/scribus/ui/openpalette.cpp
A  /trunk/Scribus/scribus/ui/rotationsetter.ui
A  /trunk/Scribus/scribus/ui/pageitemrotationsetter.cpp
A  /trunk/Scribus/scribus/ui/pageitemsetterbase.h
A  /trunk/Scribus/scribus/pageitemsettersmanager.cpp
A  /trunk/Scribus/scribus/ui/openpalette.h
A  /trunk/Scribus/scribus/ui/positionsetter.ui
A  /trunk/Scribus/scribus/ui/pageitempositionsetter.cpp
A  /trunk/Scribus/scribus/ui/pageitemrotationsetter.h
A  /trunk/Scribus/scribus/pageitemsettersmanager.h

Diffs:
Index: scribus/pageitemsettersmanager.cpp
===================================================================
--- scribus/pageitemsettersmanager.cpp	(revision 0)
+++ scribus/pageitemsettersmanager.cpp	(revision 13808)
@@ -0,0 +1,112 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "pageitemsettersmanager.h"
+#include "ui/pageitemsetterbase.h"
+#include "pageitem.h"
+#include "selection.h"
+#include "scribusdoc.h"
+
+#include <QCoreApplication>
+
+
+
+PageItemSettersManager * PageItemSettersManager::instance = 0;
+
+PageItemSettersManager::PageItemSettersManager(QObject * parent)
+		:QObject(parent), selection(0), doc(0)
+{
+}
+
+PageItemSettersManager * PageItemSettersManager::that()
+{
+	if(!instance)
+	{
+		instance = new PageItemSettersManager(QCoreApplication::instance());
+		Q_ASSERT(instance);
+	}
+	return instance;
+}
+
+void PageItemSettersManager::registerSetter(PageItemSetterBase * base)
+{
+	if(base && !that()->setters.contains(base))
+	{
+		that()->setters.append(base);
+		if(that()->selection)
+			base->changeItem(that()->selection);
+		connect(base, SIGNAL(destroyed()), that(), SLOT(UnRegisterSetter()));
+	}
+}
+
+void PageItemSettersManager::UnRegisterSetter()
+{
+	PageItemSetterBase * base = reinterpret_cast<PageItemSetterBase*>(sender());
+	that()->setters.removeAll(base);
+}
+
+void PageItemSettersManager::setSelection(Selection * sel)
+{
+	if(that()->selection)
+		disconnect(that()->selection, SIGNAL(selectionChanged()), that(), SLOT(updateSelection()));
+	if(that()->doc)
+		disconnect(that()->doc, SIGNAL(rotationMode(int)), that(), SLOT(rotationModeChanged(int)));
+
+	that()->selection = sel;
+	that()->doc = (sel && (sel->count() > 0)) ? sel->itemAt(0)->m_Doc : 0;
+
+	if(that()->selection)
+		connect(that()->selection, SIGNAL(selectionChanged()), that(), SLOT(updateSelection()));
+	if(that()->doc)
+		connect(that()->doc, SIGNAL(rotationMode(int)), that(), SLOT(rotationModeChanged(int)));
+
+	foreach(PageItemSetterBase * base, that()->setters)
+	{
+		base->changeItem(sel);
+	}
+}
+
+PageItemSetterBase* PageItemSettersManager::getClone(const QUuid& uuid)
+{
+	foreach(PageItemSetterBase* base, that()->setters)
+	{
+		if(base->uuid() == uuid)
+			return base->clone();
+	}
+	return 0;
+}
+
+void PageItemSettersManager::rotationModeChanged(int)
+{
+	Selection * s = that()->selection ;
+	foreach(PageItemSetterBase * base, that()->setters)
+	{
+		base->changeItem(s);
+	}
+}
+
+void PageItemSettersManager::updateSelection()
+{
+	Selection * s = that()->selection ;
+	foreach(PageItemSetterBase * base, that()->setters)
+	{
+		base->changeItem(s);
+	}
+}
Index: scribus/pageitemsettersmanager.h
===================================================================
--- scribus/pageitemsettersmanager.h	(revision 0)
+++ scribus/pageitemsettersmanager.h	(revision 13808)
@@ -0,0 +1,63 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef PAGEITEMSETTERSMANAGER_H
+#define PAGEITEMSETTERSMANAGER_H
+
+#include <QObject>
+#include <QList>
+#include <QUuid>
+
+class PageItemSetterBase;
+class PageItem;
+class Selection;
+class ScribusDoc;
+
+/**
+  PageItemSettersManager acts as a registry for page item setters.
+  Notifying setters of document changes (selection, units, etc.).
+  */
+
+class PageItemSettersManager : public QObject
+{
+	Q_OBJECT
+
+	static PageItemSettersManager * instance;
+	static PageItemSettersManager * that();
+
+	PageItemSettersManager(QObject * parent = 0);
+
+	QList<PageItemSetterBase*> setters;
+	Selection * selection;
+	ScribusDoc * doc;
+
+public:
+	static void registerSetter(PageItemSetterBase* base);
+	static void setSelection(Selection* selection);
+	static PageItemSetterBase* getClone(const QUuid& uuid);
+
+private slots:
+	void UnRegisterSetter();
+	void rotationModeChanged(int);
+	void updateSelection();
+
+};
+
+#endif // PAGEITEMSETTERSMANAGER_H
Index: scribus/ui/positionsetter.ui
===================================================================
--- scribus/ui/positionsetter.ui	(revision 0)
+++ scribus/ui/positionsetter.ui	(revision 13808)
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PositionSetterWidget</class>
+ <widget class="QWidget" name="PositionSetterWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>291</width>
+    <height>72</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QFormLayout" name="formLayout_4">
+   <item row="0" column="0">
+    <layout class="QFormLayout" name="formLayout_3">
+     <item row="0" column="0">
+      <layout class="QFormLayout" name="formLayout_2">
+       <item row="0" column="0">
+        <widget class="QLabel" name="xposLabel">
+         <property name="text">
+          <string>X-pos:</string>
+         </property>
+         <property name="buddy">
+          <cstring>xposSpinBox</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="ScrSpinBox" name="xposSpinBox">
+         <property name="focusPolicy">
+          <enum>Qt::WheelFocus</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="yposLabel">
+         <property name="text">
+          <string>Y-pos:</string>
+         </property>
+         <property name="buddy">
+          <cstring>yposSpinBox</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="ScrSpinBox" name="yposSpinBox"/>
+       </item>
+      </layout>
+     </item>
+     <item row="0" column="1">
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="Line" name="line">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QFormLayout" name="formLayout">
+         <item row="0" column="0">
+          <widget class="QLabel" name="widthLabel">
+           <property name="text">
+            <string>Width:</string>
+           </property>
+           <property name="buddy">
+            <cstring>widthSpinBox</cstring>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="ScrSpinBox" name="widthSpinBox"/>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="heightLabel">
+           <property name="text">
+            <string>Height:</string>
+           </property>
+           <property name="buddy">
+            <cstring>heightSpinBox</cstring>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="ScrSpinBox" name="heightSpinBox"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="LinkButton" name="keepFrameWHRatioButton">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QDoubleSpinBox</extends>
+   <header>ui/scrspinbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LinkButton</class>
+   <extends>QToolButton</extends>
+   <header>ui/linkbutton.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
Index: scribus/ui/openpalette.cpp
===================================================================
--- scribus/ui/openpalette.cpp	(revision 0)
+++ scribus/ui/openpalette.cpp	(revision 13808)
@@ -0,0 +1,89 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "openpalette.h"
+#include "pageitemsettersmanager.h"
+#include "ui/pageitemsetterbase.h"
+
+#include <QDragEnterEvent>
+#include <QDropEvent>
+#include <QUuid>
+#include <QRect>
+#include <QDebug>
+
+OpenPalette::OpenPalette(QWidget * parent)
+		:ScrPaletteBase(parent)
+{
+	setAcceptDrops(true);
+	setAttribute ( Qt::WA_DeleteOnClose );
+	setWindowTitle(tr("empty palette"));
+	if(parent)
+		setGeometry(QRect(parent->x(),parent->y(), 300, 200));
+	else
+		setGeometry(QRect(64, 64 , 300, 200));
+	mainLayout = new QVBoxLayout(this);
+}
+
+
+void OpenPalette::dragEnterEvent( QDragEnterEvent *event )
+{
+	if (event->mimeData()->hasFormat("text/x-scribus-palette-item"))
+	{
+		// prevent copy of an item already present
+		QString uidText(event->mimeData()->data("text/x-scribus-palette-item"));
+		QUuid pid(uidText);
+		foreach(PageItemSetterBase  * b, hosted)
+		{
+			if(b->uuid() == pid)
+				return;
+		}
+		event->acceptProposedAction();
+	}
+	else
+		qDebug()<<"Entered in Open Palette:"<<event->mimeData()->formats().join("; ");
+}
+
+
+void OpenPalette::dropEvent ( QDropEvent * event )
+{
+	QString uidText(event->mimeData()->data("text/x-scribus-palette-item"));
+	QUuid pid(uidText);
+	if(pid.isNull())
+		qDebug()<<"Dropped a Null setter uuid on Open Palette";
+	else
+	{
+		PageItemSetterBase * base(PageItemSettersManager::getClone(pid));
+		if(base)
+		{
+			mainLayout->addWidget(base);
+			hosted << base;
+			QStringList gList;
+			foreach(PageItemSetterBase  * b, hosted)
+			{
+				if(!gList.contains(b->group()))
+					gList << b->group();
+			}
+			setWindowTitle(gList.join("/"));
+		}
+	}
+}
+
+
+
Index: scribus/ui/pageitempositionsetter.cpp
===================================================================
--- scribus/ui/pageitempositionsetter.cpp	(revision 0)
+++ scribus/ui/pageitempositionsetter.cpp	(revision 13808)
@@ -0,0 +1,295 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "pageitempositionsetter.h"
+#include "pageitemsettersmanager.h"
+
+#include "pageitem.h"
+#include "scribusdoc.h"
+#include "units.h"
+#include "selection.h"
+
+#include <QDebug>
+
+PageItemPositionSetter::PageItemPositionSetter(QWidget * parent)
+		:PageItemSetterBase(parent), m_select(0), hasConnections(false)
+{
+	setupUi(this);
+	refineSetup();
+	activate(false);
+	PageItemSettersManager::registerSetter(this);
+}
+
+void PageItemPositionSetter::refineSetup()
+{
+	keepFrameWHRatioButton->setCheckable( true );
+	keepFrameWHRatioButton->setAutoRaise( true );
+	keepFrameWHRatioButton->setMaximumSize( QSize( 15, 32767 ) );
+	keepFrameWHRatioButton->setChecked(true);
+}
+
+QString PageItemPositionSetter::group() const
+{
+	return QString("XYZ");
+}
+
+PageItemSetterBase * PageItemPositionSetter::clone()
+{
+	return new PageItemPositionSetter(0);
+}
+
+void PageItemPositionSetter::changeItem(Selection * sel)
+{
+	removeConnections();
+
+	m_select = sel;
+	if(!m_select || (m_select->count() == 0))
+	{
+		activate(false);
+		xposSpinBox->setValue(0);
+		yposSpinBox->setValue(0);
+		widthSpinBox->setValue(0);
+		heightSpinBox->setValue(0);
+		return;
+	}
+	activate(true);
+	PageItem * refItem = m_select->itemAt(0);
+	double unitRatio = refItem->m_Doc->unitRatio();
+	double maxXYWHVal = 0xFFFFFF * unitRatio;
+	double minXYVal = -0xFFFFFF * unitRatio;
+	int unitIndex = refItem->m_Doc->unitIndex();
+	int precision = unitGetPrecisionFromIndex(unitIndex);
+	xposSpinBox->setValues( minXYVal, maxXYWHVal, precision, minXYVal);
+	yposSpinBox->setValues( minXYVal, maxXYWHVal, precision, minXYVal);
+	widthSpinBox->setValues(unitRatio, maxXYWHVal, precision, unitRatio);
+	heightSpinBox->setValues(unitRatio, maxXYWHVal, precision, unitRatio);
+	xposSpinBox->setNewUnit(unitIndex);
+	yposSpinBox->setNewUnit(unitIndex);
+	widthSpinBox->setNewUnit(unitIndex);
+	heightSpinBox->setNewUnit(unitIndex);
+	rotmode = refItem->m_Doc->RotMode();
+	updateValues();
+}
+
+void PageItemPositionSetter::createConnections()
+{
+	if(hasConnections)
+		return;
+	connectedItem = m_select->itemAt(0);
+	connect(connectedItem, SIGNAL(position(double,double)), this, SLOT(captureChanges(double,double)));
+	connect(connectedItem, SIGNAL(widthAndHeight(double,double)), this, SLOT(captureChanges(double,double)));
+	connect(xposSpinBox, SIGNAL(valueChanged(double)), this, SLOT(modXpos(double)));
+	connect(yposSpinBox, SIGNAL(valueChanged(double)), this, SLOT(modYpos(double)));
+	connect(heightSpinBox,SIGNAL(valueChanged(double)), this, SLOT(modHeight(double)));
+	connect(widthSpinBox, SIGNAL(valueChanged(double)),this, SLOT(modWidth(double)));
+	hasConnections = true;
+	activate(true);
+}
+
+void PageItemPositionSetter::removeConnections()
+{
+	if(!hasConnections)
+		return;
+	disconnect(connectedItem, SIGNAL(position(double,double)), this, SLOT(captureChanges(double,double)));
+	disconnect(connectedItem, SIGNAL(widthAndHeight(double,double)), this, SLOT(captureChanges(double,double)));
+	disconnect(xposSpinBox, SIGNAL(valueChanged(double)), this, SLOT(modXpos(double)));
+	disconnect(yposSpinBox, SIGNAL(valueChanged(double)), this, SLOT(modYpos(double)));
+	disconnect(heightSpinBox,SIGNAL(valueChanged(double)), this, SLOT(modHeight(double)));
+	disconnect(widthSpinBox, SIGNAL(valueChanged(double)),this, SLOT(modWidth(double)));
+	hasConnections = false;
+	connectedItem = 0;
+	activate(false);
+}
+
+void PageItemPositionSetter::updateValues()
+{
+	if(!m_select || (m_select->count() == 0))
+		return;
+	removeConnections();
+
+	PageItem * Item =  m_select->itemAt(0);
+	QRectF r(Item->xPos(), Item->yPos(), Item->width(), Item->height());
+	if(m_select->isMultipleSelection())
+			r = m_select->getGroupRect();
+	double baseAdjustX = 0;
+	double baseAdjustY = 0;
+	adjustBase(baseAdjustX, baseAdjustY, r);
+
+	qDebug()<<"U"<<r<<baseAdjustX<<baseAdjustY;
+
+	ScribusDoc * doc = m_select->itemAt(0)->m_Doc;
+	double displayX = (r.x() - doc->currentPage()->xOffset() + baseAdjustX) * doc->unitRatio();
+	double displayY	= (r.y() - doc->currentPage()->yOffset() + baseAdjustY) * doc->unitRatio();
+	double displayW = r.width() *  doc->unitRatio();
+	double displayH = r.height() * doc->unitRatio();
+
+	xposSpinBox->setValue(displayX);
+	yposSpinBox->setValue(displayY);
+	widthSpinBox->setValue(displayW);
+	heightSpinBox->setValue(displayH);
+
+	createConnections();
+}
+
+void PageItemPositionSetter::captureChanges(double, double)
+{
+	updateValues();
+}
+
+void PageItemPositionSetter::modXpos(double val)
+{
+	if(!m_select || (m_select->count() == 0))
+		return;
+	// first check if we can move at all, though it should be prevented elsewhere
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		if(pit->locked())
+			return;
+	}
+	removeConnections();
+	ScribusDoc * doc = m_select->itemAt(0)->m_Doc;
+	QRectF oldVisualRect = m_select->getVisualGroupRect();
+	QRectF oldRect = m_select->getGroupRect();
+	double baseAdjustX = 0;
+	double baseAdjustY = 0;
+	adjustBase(baseAdjustX, baseAdjustY, m_select->getGroupRect());
+	double xoffset = doc->currentPage()->xOffset();
+	double newX = (xposSpinBox->value() /  doc->unitRatio())  - baseAdjustX;
+	double shiftH = newX - (oldRect.x() - xoffset) ;
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		pit->moveBy(shiftH,0);
+	}
+	updateCanvas(oldVisualRect.unite(m_select->getVisualGroupRect()));
+	createConnections();
+}
+
+void PageItemPositionSetter::modYpos(double val)
+{
+	if(!m_select || (m_select->count() == 0))
+		return;
+	// first check if we can move at all, though it should be prevented elsewhere
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		if(pit->locked())
+			return;
+	}
+	removeConnections();
+	ScribusDoc * doc = m_select->itemAt(0)->m_Doc;
+	QRectF oldVisualRect = m_select->getVisualGroupRect();
+	QRectF oldRect = m_select->getGroupRect();
+	double baseAdjustX = 0;
+	double baseAdjustY = 0;
+	adjustBase(baseAdjustX, baseAdjustY, m_select->getGroupRect());
+	double yoffset = doc->currentPage()->yOffset();
+	double newY = (yposSpinBox->value() /  doc->unitRatio()) - baseAdjustY;
+	double shiftV = newY - (oldRect.y() - yoffset);
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		pit->moveBy(0, shiftV);
+	}
+	updateCanvas(oldVisualRect.unite(m_select->getVisualGroupRect()));
+	createConnections();
+}
+
+void PageItemPositionSetter::modWidth(double val)
+{
+	if(!m_select || (m_select->count() == 0))
+		return;
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		if(pit->locked() || pit->sizeLocked())
+			return;
+	}
+	removeConnections();
+	double unitRatio = m_select->itemAt(0)->m_Doc->unitRatio();
+	QRectF oldRect = m_select->getVisualGroupRect();
+	QRectF r = m_select->getGroupRect();
+	double scaleFactor = (widthSpinBox->value() / unitRatio) / r.width() ;
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		double newW = pit->width() * scaleFactor;
+		pit->setWidth(newW);
+		if(keepFrameWHRatioButton->isChecked())
+		{
+			double newH = pit->height() * scaleFactor;
+			pit->setHeight(newH);
+			heightSpinBox->setValue(newH * pit->m_Doc->unitRatio());
+		}
+	}
+	updateCanvas(oldRect.unite(m_select->getVisualGroupRect()));
+	createConnections();
+}
+
+void PageItemPositionSetter::modHeight(double val)
+{
+	if(!m_select || (m_select->count() == 0))
+		return;
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		if(pit->locked() || pit->sizeLocked())
+			return;
+	}
+	removeConnections();
+	double unitRatio = m_select->itemAt(0)->m_Doc->unitRatio();
+	QRectF oldRect = m_select->getVisualGroupRect();
+	QRectF r = m_select->getGroupRect();
+	double scaleFactor =  (heightSpinBox->value() / unitRatio) / r.height() ;
+	foreach(PageItem* pit, m_select->selectionList())
+	{
+		double newH = pit->height() * scaleFactor;
+		pit->setHeight(newH);
+		if(keepFrameWHRatioButton->isChecked())
+		{
+			double newW = pit->width() * scaleFactor;
+			pit->setWidth(newW);
+			widthSpinBox->setValue(newW * pit->m_Doc->unitRatio());
+		}
+	}
+	updateCanvas(oldRect.unite(m_select->getVisualGroupRect()));
+	createConnections();
+}
+
+void PageItemPositionSetter::updateCanvas(QRectF rect)
+{
+	//	qDebug()<<"updateCanvas"<<rect;
+	//	m_Item->setRedrawBounding();
+
+	m_select->itemAt(0)->m_Doc->regionsChanged()->update(rect);
+}
+
+void PageItemPositionSetter::adjustBase(double &baseAdjustX , double &baseAdjustY, QRectF bb)
+{
+	if(rotmode == 1)
+		baseAdjustX = bb.width();
+	else if(rotmode == 2)
+	{
+		baseAdjustX =  bb.width() / 2.0;
+		baseAdjustY =  bb.height() / 2.0;
+	}
+	else if(rotmode == 3)
+		baseAdjustY = bb.height();
+	else if(rotmode == 4)
+	{
+		baseAdjustX =  bb.width();
+		baseAdjustY =  bb.height();
+	}
+
+}
Index: scribus/ui/rotationsetter.ui
===================================================================
--- scribus/ui/rotationsetter.ui	(revision 0)
+++ scribus/ui/rotationsetter.ui	(revision 13808)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>RotationWidget</class>
+ <widget class="QWidget" name="RotationWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>203</width>
+    <height>39</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QFormLayout" name="formLayout_2">
+   <item row="0" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <layout class="QFormLayout" name="formLayout">
+       <item row="0" column="0">
+        <widget class="QLabel" name="rotationLabel">
+         <property name="text">
+          <string>Rotation:</string>
+         </property>
+         <property name="buddy">
+          <cstring>rotationSpinBox</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="ScrSpinBox" name="rotationSpinBox"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QPushButton" name="rot90Button">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text">
+        <string>+90</string>
+       </property>
+       <property name="flat">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QDoubleSpinBox</extends>
+   <header>ui/scrspinbox.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>

Property changes on: scribus/ui/rotationsetter.ui
___________________________________________________________________
Added: svn:mergeinfo

Index: scribus/ui/pageitemrotationsetter.cpp
===================================================================
--- scribus/ui/pageitemrotationsetter.cpp	(revision 0)
+++ scribus/ui/pageitemrotationsetter.cpp	(revision 13808)
@@ -0,0 +1,179 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+#include "pageitemrotationsetter.h"
+#include "pageitemsettersmanager.h"
+
+#include "pageitem.h"
+#include "scribusdoc.h"
+#include "units.h"
+#include "selection.h"
+
+PageItemRotationSetter::PageItemRotationSetter(QWidget * parent )
+		:PageItemSetterBase(parent), m_select(0), connectedItem(0)
+{
+	setupUi(this);
+	refineSetup();
+	activate(false);
+	PageItemSettersManager::registerSetter(this);
+}
+
+QString PageItemRotationSetter::group()const
+{
+	return QString("XYZ");
+}
+
+PageItemSetterBase * PageItemRotationSetter::clone()
+{
+	return new PageItemRotationSetter(0);
+}
+
+void PageItemRotationSetter::refineSetup()
+{
+	rotationSpinBox->setNewUnit(SC_DEGREES);
+	rotationSpinBox->setValues( 0, 359.99, 1, 0);
+	rotationSpinBox->setWrapping(true);
+}
+
+void PageItemRotationSetter::changeItem(Selection * sel)
+{
+	removeConnections();
+	m_select = sel;
+	// We do not allow to set rotation for multis.
+	if(!m_select || (m_select->count() != 1))
+	{
+		activate(false);
+		return;
+	}
+	activate(true);
+	updateRotation(m_select->itemAt(0)->rotation());
+}
+
+void PageItemRotationSetter::createConnections()
+{
+
+	if(connectedItem != 0)
+		return;
+	connectedItem = m_select->itemAt(0);
+	connect(connectedItem, SIGNAL(rotation(double)), this, SLOT(updateRotation(double)));
+	connect(rotationSpinBox, SIGNAL(valueChanged(double)), this, SLOT(modRot(double)));
+	connect(rot90Button, SIGNAL(clicked()), this, SLOT(rotate90()));
+	activate(true);
+}
+
+void PageItemRotationSetter::removeConnections()
+{
+	if(0 == connectedItem)
+		return;
+	disconnect(connectedItem, SIGNAL(rotation(double)), this, SLOT(updateRotation(double)));
+	disconnect(rotationSpinBox, SIGNAL(valueChanged(double)), this, SLOT(modRot(double)));
+	disconnect(rot90Button, SIGNAL(clicked()), this, SLOT(rotate90()));
+	connectedItem = 0;
+	activate(false);
+}
+
+
+void PageItemRotationSetter::updateRotation(double val)
+{
+	if(!m_select || (m_select->count() != 1))
+		return;
+	removeConnections();
+	rotationSpinBox->setValue(returnedVal(val));
+	createConnections();
+}
+
+void PageItemRotationSetter::modRot(double val)
+{
+	if(!m_select || (m_select->count() != 1))
+		return;
+	removeConnections();
+	PageItem * Item = m_select->itemAt(0);
+	QRectF oldR = Item->getVisualBoundingRect();
+//	Item->setRotation(returnedVal(val));
+	rotate(returnedVal(val), Item);
+	Item->m_Doc->regionsChanged()->update(oldR.unite(Item->getBoundingRect()));
+	createConnections();
+
+}
+
+void PageItemRotationSetter::rotate90()
+{
+	if(!m_select || (m_select->count() != 1))
+		return;
+	removeConnections();
+	PageItem * Item = m_select->itemAt(0);
+	QRectF oldR = Item->getVisualBoundingRect();
+	double newRot = (rotationSpinBox->value() + 90.0) ;
+	if(newRot > 360.0)
+		newRot -= 360.0;
+//	Item->setRotation(returnedVal(newRot));
+	rotate(returnedVal(newRot), Item);
+	rotationSpinBox->setValue(newRot);
+	Item->m_Doc->regionsChanged()->update(oldR.unite(Item->getBoundingRect()));
+	createConnections();
+}
+
+double PageItemRotationSetter::returnedVal(const double& val) const
+{
+	double rr = val;
+	if (rr > 0)
+		rr = 360.0 - rr;
+	return fabs(rr);
+}
+
+void PageItemRotationSetter::rotate(double angle, PageItem * item)
+{
+	int rotMode = item->m_Doc->RotMode();
+	if (rotMode != 0)
+	{
+		QMatrix ma;
+		ma.translate(item->xPos(), item->yPos());
+		ma.scale(1, 1);
+		ma.rotate(item->rotation());
+		double ro = angle - item->rotation();
+		FPoint n(0,0);
+		switch (rotMode)
+		{
+		case 2:
+			ma.translate(item->width()/2.0, item->height()/2.0);
+			n = FPoint(-item->width()/2.0, -item->height()/2.0);
+			break;
+		case 4:
+			ma.translate(item->width(), item->height());
+			n = FPoint(-item->width(), -item->height());
+			break;
+		case 3:
+			ma.translate(0, item->height());
+			n = FPoint(0, -item->height());
+			break;
+		case 1:
+			ma.translate(item->width(), 0);
+			n = FPoint(-item->width(), 0);
+			break;
+		}
+		ma.rotate(ro);
+		double x = ma.m11() * n.x() + ma.m21() * n.y() + ma.dx();
+		double y = ma.m22() * n.y() + ma.m12() * n.x() + ma.dy();
+
+		item->setRotation(angle);
+		item->moveBy(x - item->xPos(), y - item->yPos());
+	}
+	else
+		item->setRotation(angle);
+}
Index: scribus/ui/pageitemrotationsetter.h
===================================================================
--- scribus/ui/pageitemrotationsetter.h	(revision 0)
+++ scribus/ui/pageitemrotationsetter.h	(revision 13808)
@@ -0,0 +1,58 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+#ifndef PAGEITEMROTATIONSETTER_H
+#define PAGEITEMROTATIONSETTER_H
+
+#include "ui/pageitemsetterbase.h"
+#include "ui_rotationsetter.h"
+
+class PageItem;
+
+class PageItemRotationSetter : public PageItemSetterBase, private Ui::RotationWidget
+{
+	Q_OBJECT
+
+	Selection * m_select;
+
+public:
+	PageItemRotationSetter(QWidget * parent = 0);
+
+	void changeItem(Selection* sel);
+	QString group() const;
+	PageItemSetterBase * clone();
+
+private:
+	void refineSetup();
+
+	void createConnections();
+	void removeConnections();
+	PageItem * connectedItem;
+
+	inline double returnedVal(const double& val) const;
+	void rotate(double angle, PageItem* item);
+
+private slots:
+	void updateRotation(double val);
+	void modRot(double val);
+	void rotate90();
+
+};
+
+#endif // PAGEITEMROTATIONSETTER_H
Index: scribus/ui/openpalette.h
===================================================================
--- scribus/ui/openpalette.h	(revision 0)
+++ scribus/ui/openpalette.h	(revision 13808)
@@ -0,0 +1,51 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef OPENPALETTE_H
+#define OPENPALETTE_H
+
+#include "ui/scrpalettebase.h"
+
+#include <QList>
+#include <QVBoxLayout>
+
+class PageItemSetterBase;
+
+/**
+  * An OpenPalette is aimed to host dropped setters
+  * and in some extent to serialize its content and
+  * layout in order to reload it over sessions
+  */
+class OpenPalette : public ScrPaletteBase
+{
+public:
+	OpenPalette(QWidget * parent);
+
+protected:
+	void dragEnterEvent( QDragEnterEvent *event );
+	void dropEvent ( QDropEvent * event );
+
+private:
+	QList<PageItemSetterBase*> hosted;
+	QVBoxLayout * mainLayout;
+
+};
+
+#endif // OPENPALETTE_H
Index: scribus/ui/pageitemsetterbase.h
===================================================================
--- scribus/ui/pageitemsetterbase.h	(revision 0)
+++ scribus/ui/pageitemsetterbase.h	(revision 13808)
@@ -0,0 +1,88 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+
+#ifndef PAGEITEMSETTERBASE_H
+#define PAGEITEMSETTERBASE_H
+
+#include <QWidget>
+#include <QString>
+#include <QUuid>
+
+//Not exactly clear what would be the best but we go for the Selection atm -pm
+//class PageItem;
+class Selection;
+
+/**
+*  PageItemSetterBase is base class for any widget that can set
+*  properties of a page item.
+*
+* note about dragging:
+* this base class is expected to handle propper dragging, droppers
+* must ask the pageitemsettersmanager a clone of a dropped setter based
+* on the uuid.
+*
+*/
+class PageItemSetterBase : public QWidget
+{
+public:
+	/**
+	  * Default constructor
+	  */
+	PageItemSetterBase(QWidget * parent = 0);
+
+	/**
+	*  Reset parameters and internal state to reflect properties of
+	*  newly assigned (page item)^^selection .
+	*/
+	virtual void changeItem(Selection*) = 0;
+
+	/**
+	  * Return a group name which can be used to assossiate setters
+	  * and generally help the caller to layout widgets (think pages in PP as of 2009 :)
+	  */
+	virtual QString group() const = 0;
+
+	/**
+	  * Return a setter on same property
+	  */
+	virtual PageItemSetterBase* clone() = 0;
+
+	/**
+	  * Return identifier for this setter
+	  */
+	QUuid uuid() const {return m_uuid;}
+
+protected:
+	QPoint startDragPoint;
+	virtual void mousePressEvent(QMouseEvent *event);
+	virtual void mouseMoveEvent(QMouseEvent *event);
+
+	/**
+	  * Enable/Disable only children because doing the same
+	  * on the widget itself disables dragging.
+	  */
+	virtual void activate(const bool& act);
+
+private:
+	const QUuid m_uuid;
+
+};
+#endif // PAGEITEMSETTERBASE_H
Index: scribus/ui/pageitempositionsetter.h
===================================================================
--- scribus/ui/pageitempositionsetter.h	(revision 0)
+++ scribus/ui/pageitempositionsetter.h	(revision 13808)
@@ -0,0 +1,67 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef PAGEITEMPOSITIONSETTER_H
+#define PAGEITEMPOSITIONSETTER_H
+
+#include "pageitemsetterbase.h"
+#include "ui_positionsetter.h"
+
+#include <QRectF>
+
+class PageItem;
+
+class PageItemPositionSetter : public PageItemSetterBase, private Ui::PositionSetterWidget
+{
+	Q_OBJECT
+
+	Selection* m_select;
+
+public:
+	PageItemPositionSetter(QWidget * parent = 0);
+
+	void changeItem(Selection* sel);
+	QString group() const;
+	PageItemSetterBase* clone();
+
+private:
+	void refineSetup();
+
+	void createConnections();
+	void removeConnections();
+	PageItem * connectedItem;
+	bool hasConnections;
+
+	void updateCanvas(QRectF rect);
+
+	void adjustBase(double &baseAdjustX , double &baseAdjustY, QRectF bb);
+	int rotmode;
+
+private slots:
+	void updateValues();
+	void captureChanges(double, double);
+	void modXpos(double val);
+	void modYpos(double val);
+	void modWidth(double val);
+	void modHeight(double val);
+
+};
+
+#endif // PAGEITEMPOSITIONSETTER_H
Index: scribus/ui/pageitemsetterbase.cpp
===================================================================
--- scribus/ui/pageitemsetterbase.cpp	(revision 0)
+++ scribus/ui/pageitemsetterbase.cpp	(revision 13808)
@@ -0,0 +1,67 @@
+/***************************************************************************
+ *   Copyright (C) 2009 by Pierre Marchand                                 *
+ *   pierre at oep-h.com                                                      *
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "pageitemsetterbase.h"
+
+#include <QApplication>
+#include <QMouseEvent>
+#include <QDrag>
+#include <QMimeData>
+#include <QPixmap>
+
+PageItemSetterBase::PageItemSetterBase(QWidget * parent)
+		:QWidget(parent), m_uuid(QUuid::createUuid())
+{
+}
+
+void PageItemSetterBase::mousePressEvent(QMouseEvent * event)
+{
+	if (event->button() == Qt::LeftButton)
+		startDragPoint = event->pos();
+
+}
+
+void PageItemSetterBase::mouseMoveEvent(QMouseEvent * event)
+{
+	if (!(event->buttons() & Qt::LeftButton))
+		return;
+	if ((event->pos() - startDragPoint).manhattanLength() < QApplication::startDragDistance())
+		return;
+
+	QDrag *drag = new QDrag(this);
+	QMimeData *mimeData = new QMimeData;
+
+	mimeData->setData("text/x-scribus-palette-item", m_uuid.toString().toAscii());
+	drag->setPixmap(QPixmap::grabWidget(this, rect()));
+	drag->setMimeData(mimeData);
+
+	Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction);
+
+}
+
+
+void PageItemSetterBase::activate(const bool& act)
+{
+	foreach( QWidget * widget, findChildren<QWidget*>() )
+	{
+		widget->setEnabled(act);
+	}
+}
+
Index: scribus/CMakeLists.txt
===================================================================
--- scribus/CMakeLists.txt	(revision 13807)
+++ scribus/CMakeLists.txt	(revision 13808)
@@ -18,6 +18,25 @@
   ADD_SUBDIRECTORY(designer)
 ENDIF (WANT_DESIGNER)
 
+# We setup something like a group to gather setter related stuff
+# because it could expand into a huge amount of file at some point.
+SET(SCRIBUS_ITEMSETTERS_UI_SRC
+ui/positionsetter.ui
+ui/rotationsetter.ui
+)
+SET(SCRIBUS_ITEMSETTERS_CLASS
+pageitemsettersmanager.h
+ui/pageitempositionsetter.h
+ui/pageitemrotationsetter.h
+)
+SET(SCRIBUS_ITEMSETTERS_SRC
+pageitemsettersmanager.cpp
+ui/openpalette.cpp
+ui/pageitemsetterbase.cpp
+ui/pageitempositionsetter.cpp
+ui/pageitemrotationsetter.cpp
+)
+
 SET(SCRIBUS_UI_SRC
   ui/aboutplugins.ui
   ui/aligndistribute.ui
@@ -92,6 +111,7 @@
   ui/helpbrowsernavigation.ui
   ui/unicodesearch.ui
   ui/useprintermarginsdialog.ui
+  ${SCRIBUS_ITEMSETTERS_UI_SRC}
 )
 
 SET(SCRIBUS_MOC_CLASSES
@@ -341,6 +361,7 @@
   urllauncher.h
   ui/useprintermarginsdialog.h
   ui/vruler.h
+  ${SCRIBUS_ITEMSETTERS_CLASS}
 )
 
 SET(SCRIBUS_SOURCES
@@ -712,6 +733,7 @@
   vgradient.cpp
   vgradientex.cpp
   ui/vruler.cpp
+  ${SCRIBUS_ITEMSETTERS_SRC}
 )
 
 IF(WIN32)




More information about the scribus-commit mailing list