View Issue Details

IDProjectCategoryView StatusLast Update
0010077ScribusUser Interfacepublic2014-10-24 23:00
ReporterStefanM Assigned Tojghali  
PrioritynormalSeverityfeatureReproducibilityalways
Status assignedResolutionopen 
PlatformimacOSMAC OS X OS VersionSnow Lep
Product Version1.4.0svn 
Summary0010077: [patch] Add indentation control etc. to Properties Palette
DescriptionAdd indentation control (indent first line xxx mm) to Properties Palette
Additional InformationIts miss is annoying esp. for newspaper projects, where first line has usually an em indent
TagsNo tags attached.
PatchYes

Activities

ale

2011-06-27 11:42

manager   ~0026488

planned for the new PP...

all the setting wil be in the PP and in the styles.

cezaryece

2011-06-27 13:34

updater   ~0026492

Last edited: 2011-06-27 13:38

I think this is one of things we could do before 1.6. And should be done as we could...
Personally I am not so optimistic about 1.6 release date (afraid far beyond 2012) and would like to see 1.4.x as good as possible.

cezaryece

2012-07-25 09:52

updater   ~0028607

Fixed in branch ProPal.

jghali

2012-07-25 10:08

administrator   ~0028612

Please do not mark as fixed unless patch has been provided and committed in SVN trunk.

cezaryece

2012-07-25 10:36

updater  

margins.diff (22,412 bytes)   
diff --git Scribus/scribus/CMakeLists.txt Scribus/scribus/CMakeLists.txt
index f7a9614..491cba1 100644
--- Scribus/scribus/CMakeLists.txt
+++ Scribus/scribus/CMakeLists.txt
@@ -142,6 +142,7 @@ SET(SCRIBUS_UI_SRC
   ui/propertywidget_orphansbase.ui
   ui/propertywidget_pathtextbase.ui
   ui/propertywidget_textcolorbase.ui
+  ui/propertywidget_textmarginsbase.ui
   ui/replacecolors.ui
   ui/replaceonecolor.ui
   ui/selectobjects.ui
@@ -397,6 +398,7 @@ SET(SCRIBUS_MOC_CLASSES
   ui/propertywidget_orphans.h
   ui/propertywidget_pathtext.h
   ui/propertywidget_textcolor.h
+  ui/propertywidget_textmargins.h
   ui/query.h
   ui/replacecolors.h
   ui/replaceonecolor.h
@@ -828,6 +830,7 @@ SET(SCRIBUS_SOURCES
   ui/propertywidget_orphans.cpp
   ui/propertywidget_pathtext.cpp
   ui/propertywidget_textcolor.cpp
+  ui/propertywidget_textmargins.cpp
   ui/propertywidgetbase.cpp
   ui/query.cpp
   ui/replacecolors.cpp
diff --git Scribus/scribus/scribusdoc.cpp Scribus/scribus/scribusdoc.cpp
index ee7ca48..bee241b 100644
--- Scribus/scribus/scribusdoc.cpp
+++ Scribus/scribus/scribusdoc.cpp
@@ -8331,16 +8331,64 @@ void ScribusDoc::itemSelection_SetOpticalMargins(int i, Selection* customSelecti
 {
 	ParagraphStyle newStyle;
 	newStyle.setOpticalMargins(i);
-	itemSelection_ApplyParagraphStyle(newStyle, customSelection);
+	Selection* itemSelection = (customSelection!=0) ? customSelection : m_Selection;
+	assert(itemSelection!=0);
+	uint selectedItemCount=itemSelection->count();
+	if (selectedItemCount == 0)
+		return;
+	for (uint aa = 0; aa < selectedItemCount; ++aa)
+		itemSelection_ApplyParagraphStyle(newStyle, customSelection);
 }
 
-
 void ScribusDoc::itemSelection_resetOpticalMargins(Selection* customSelection)
 {
-	//TODO
-//	ParagraphStyle newStyle;
-//	newStyle.setOpticalMargins(i);
-//	itemSelection_ApplyParagraphStyle(newStyle, customSelection);
+	Selection* itemSelection = (customSelection!=0) ? customSelection : m_Selection;
+	assert(itemSelection!=0);
+	uint selectedItemCount=itemSelection->count();
+	if (selectedItemCount == 0)
+		return;
+	for (uint aa = 0; aa < selectedItemCount; ++aa)
+	{
+		PageItem *currItem = itemSelection->itemAt(aa);
+		ParagraphStyle pStyle =  currItem->itemText.defaultStyle();
+		Selection tempSelection(this, false);
+		tempSelection.addItem(currItem, true);
+		itemSelection_SetOpticalMargins(pStyle.opticalMargins(), &tempSelection);
+	}
+}
+
+void ScribusDoc::itemSelection_SetIndentsMargins(double first, double left, double right, double above, double below, Selection* customSelection)
+{
+	Selection* itemSelection = (customSelection!=0) ? customSelection : m_Selection;
+	assert(itemSelection!=0);
+	uint selectedItemCount=itemSelection->count();
+	if (selectedItemCount == 0)
+		return;
+	ParagraphStyle newStyle;
+	newStyle.setFirstIndent(first);
+	newStyle.setLeftMargin(left);
+	newStyle.setRightMargin(right);
+	newStyle.setGapBefore(above);
+	newStyle.setGapAfter(below);
+	for (uint aa = 0; aa < selectedItemCount; ++aa)
+		itemSelection_ApplyParagraphStyle(newStyle, customSelection);
+}
+
+void ScribusDoc::itemSelection_resetIndentsMargins(Selection* customSelection)
+{
+	Selection* itemSelection = (customSelection!=0) ? customSelection : m_Selection;
+	assert(itemSelection!=0);
+	uint selectedItemCount=itemSelection->count();
+	if (selectedItemCount == 0)
+		return;
+	for (uint aa = 0; aa < selectedItemCount; ++aa)
+	{
+		PageItem *currItem = itemSelection->itemAt(aa);
+		ParagraphStyle pStyle =  currItem->itemText.defaultStyle();
+		Selection tempSelection(this, false);
+		tempSelection.addItem(currItem, true);
+		itemSelection_SetIndentsMargins(pStyle.firstIndent(), pStyle.leftMargin(), pStyle.rightMargin(), pStyle.gapBefore(), pStyle.gapAfter(), &tempSelection);
+	}
 }
 
 void ScribusDoc::itemSelection_SetTracking(int kern, Selection* customSelection)
diff --git Scribus/scribus/scribusdoc.h Scribus/scribus/scribusdoc.h
index b573fe3..5e0c0e4 100644
--- Scribus/scribus/scribusdoc.h
+++ Scribus/scribus/scribusdoc.h
@@ -1055,6 +1055,8 @@ public:
 	void itemSelection_SetEffects(int s, Selection* customSelection=0);
 	void itemSelection_SetOpticalMargins(int i, Selection* customSelection=0);
 	void itemSelection_resetOpticalMargins(Selection* customSelection=0);
+	void itemSelection_SetIndentsMargins(double first, double left, double right, double above, double below, Selection* customSelection=0);
+	void itemSelection_resetIndentsMargins(Selection* customSelection=0);
 	void itemSelection_SetColorProfile(const QString& profileName, Selection* customSelection=0);
 	void itemSelection_SetRenderIntent(int intentIndex, Selection* customSelection=0);
 	void itemSelection_SetCompressionMethod(int cmIndex, Selection* customSelection=0);
diff --git Scribus/scribus/ui/propertiespalette_text.cpp Scribus/scribus/ui/propertiespalette_text.cpp
index 9f768ae..7b6e3ec 100644
--- Scribus/scribus/ui/propertiespalette_text.cpp
+++ Scribus/scribus/ui/propertiespalette_text.cpp
@@ -21,6 +21,7 @@ for which a new license (GPL+exception) is in place.
 #include "propertywidget_advanced.h"
 #include "propertywidget_distance.h"
 #include "propertywidget_dropcap.h"
+#include "propertywidget_textmargins.h"
 #include "propertywidget_flop.h"
 #include "propertywidget_optmargins.h"
 #include "propertywidget_orphans.h"
@@ -80,6 +81,9 @@ PropertiesPalette_Text::PropertiesPalette_Text( QWidget* parent) : QWidget(paren
 	dropcapsBox = new PropertyWidget_DropCap(textTree);
 	dropcapsItem = textTree->addWidget( tr("Drop Cap"), dropcapsBox);
 
+	marginsBox = new PropertyWidget_TextMargins(textTree);
+	marginsItem = textTree->addWidget( tr("Text Margins"), marginsBox);
+
 	distanceWidgets = new PropertyWidget_Distance(textTree);
 	distanceItem = textTree->addWidget( tr("Columns && Text Distances"), distanceWidgets);
 
@@ -121,6 +125,7 @@ void PropertiesPalette_Text::setMainWindow(ScribusMainWindow* mw)
 	colorWidgets->setMainWindow(mw);
 	distanceWidgets->setMainWindow(mw);
 	dropcapsBox->setMainWindow(mw);
+	marginsBox->setMainWindow(mw);
 	optMargins->setMainWindow(mw);
 	pathTextWidgets->setMainWindow(mw);
 
@@ -159,6 +164,7 @@ void PropertiesPalette_Text::setDoc(ScribusDoc *d)
 	dropcapsBox->setDoc(m_doc);
 	flopBox->setDoc(m_doc);
 	optMargins->setDoc(m_doc);
+	marginsBox->setDoc(m_doc);
 	orphanBox->setDoc(m_doc);
 	pathTextWidgets->setDoc(m_doc);
 
@@ -191,6 +197,7 @@ void PropertiesPalette_Text::unsetDoc()
 	distanceWidgets->setDoc(0);
 	flopBox->setDoc(0);
 	optMargins->setDoc(0);
+	marginsBox->setDoc(0);
 	orphanBox->setDoc(0);
 	dropcapsBox->setDoc(0);
 	pathTextWidgets->setDoc(0);
@@ -373,6 +380,7 @@ void PropertiesPalette_Text::unitChange()
 	distanceWidgets->unitChange();
 	flopBox->unitChange();
 	optMargins->unitChange();
+	marginsBox->unitChange();
 	pathTextWidgets->unitChange();
 	dropcapsBox->unitChange();
 
@@ -493,6 +501,7 @@ void PropertiesPalette_Text::updateStyle(const ParagraphStyle& newCurrent)
 	advancedWidgets->updateStyle(newCurrent);
 	colorWidgets->updateStyle(newCurrent);
 	optMargins->updateStyle(newCurrent);
+	marginsBox->updateStyle(newCurrent);
 	orphanBox->updateStyle (newCurrent);
 	dropcapsBox->updateStyle(newCurrent);
 
@@ -676,6 +685,7 @@ void PropertiesPalette_Text::languageChange()
 	flopItem->setText(0, tr("First Line Offset"));
 	distanceItem->setText(0, tr("Columns && Text Distances"));
 	optMarginsItem->setText(0, tr("Optical Margins"));
+	marginsItem->setText(0, tr("Text Margins"));
 	orphanItem->setText(0, tr("Orphans and Widows"));
 	pathTextItem->setText(0, tr("Path Text Properties"));
 
@@ -695,6 +705,7 @@ void PropertiesPalette_Text::languageChange()
 	distanceWidgets->languageChange();
 	flopBox->languageChange();
 	optMargins->languageChange();
+	marginsBox->languageChange();
 	orphanBox->languageChange();
 	pathTextWidgets->languageChange();
 
diff --git Scribus/scribus/ui/propertiespalette_text.h Scribus/scribus/ui/propertiespalette_text.h
index d4c73db..9db0af9 100644
--- Scribus/scribus/ui/propertiespalette_text.h
+++ Scribus/scribus/ui/propertiespalette_text.h
@@ -26,6 +26,7 @@ class PageItem;
 class PropertyWidget_Advanced;
 class PropertyWidget_Distance;
 class PropertyWidget_DropCap;
+class PropertyWidget_TextMargins;
 class PropertyWidget_Flop;
 class PropertyWidget_OptMargins;
 class PropertyWidget_Orphans;
@@ -137,6 +138,9 @@ protected:
 	PropertyWidget_DropCap* dropcapsBox;
 	QTreeWidgetItem* dropcapsItem;
 
+	PropertyWidget_TextMargins* marginsBox;
+	QTreeWidgetItem* marginsItem;
+
 	PropertyWidget_PathText* pathTextWidgets;
 	QTreeWidgetItem* pathTextItem;
 };
diff --git Scribus/scribus/ui/propertywidget_optmargins.cpp Scribus/scribus/ui/propertywidget_optmargins.cpp
index 5d80362..365ec21 100644
--- Scribus/scribus/ui/propertywidget_optmargins.cpp
+++ Scribus/scribus/ui/propertywidget_optmargins.cpp
@@ -199,6 +199,7 @@ void PropertyWidget_OptMargins::resetOpticalMargins()
 		Selection tempSelection(this, false);
 		tempSelection.addItem(item, true);
 		m_doc->itemSelection_resetOpticalMargins(&tempSelection);
+		setCurrentItem(item);
 	}
 }
 
diff --git Scribus/scribus/ui/propertywidget_textmargins.cpp Scribus/scribus/ui/propertywidget_textmargins.cpp
new file mode 100644
index 0000000..0f15940
--- /dev/null
+++ Scribus/scribus/ui/propertywidget_textmargins.cpp
@@ -0,0 +1,257 @@
+#include "propertywidget_textmargins.h"
+#include "pageitem_textframe.h"
+#include "scribus.h"
+#include "scribusdoc.h"
+#include "selection.h"
+//#include "tabmanager.h"
+#include "units.h"
+//#include "util_icon.h"
+
+PropertyWidget_TextMargins::PropertyWidget_TextMargins(QWidget *parent) : QFrame(parent)
+{
+	m_item = 0;
+	m_ScMW = 0;
+
+	setupUi(this);
+
+	setFrameStyle(QFrame::Box | QFrame::Plain);
+	setLineWidth(1);
+
+	layout()->setAlignment( Qt::AlignTop );
+	firstLabel->setBuddy(firstLine);
+	firstLine->setValues(-9999,9999,2,0);
+	leftLabel->setBuddy(leftIndent);
+	leftIndent->setValues(0,9999,2,0);
+	rightLabel->setBuddy(rightIndent);
+	rightIndent->setValues(-9999,9999,2,0);
+	aboveLabel->setBuddy(spaceAbove);
+	spaceAbove->setValues(-9999,9999,2,0);
+	belowLabel->setBuddy(spaceBelow);
+	spaceBelow->setValues(-9999,9999,2,0);
+
+	languageChange();
+}
+
+void PropertyWidget_TextMargins::changeEvent(QEvent *e)
+{
+	if (e->type() == QEvent::LanguageChange)
+	{
+		languageChange();
+		return;
+	}
+	QWidget::changeEvent(e);
+}
+
+void PropertyWidget_TextMargins::setMainWindow(ScribusMainWindow *mw)
+{
+	m_ScMW = mw;
+
+	connect(m_ScMW, SIGNAL(AppModeChanged(int, int)), this, SLOT(handleAppModeChanged(int, int)));
+	connect(m_ScMW, SIGNAL(UpdateRequest(int))      , this, SLOT(handleUpdateRequest(int)));
+}
+
+void PropertyWidget_TextMargins::setDoc(ScribusDoc *d)
+{
+	if(d == (ScribusDoc*) m_doc)
+		return;
+
+	if (m_doc)
+	{
+		disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged()));
+		disconnect(m_doc             , SIGNAL(docChanged())      , this, SLOT(handleSelectionChanged()));
+	}
+
+	m_doc  = d;
+	m_item = NULL;
+
+	if (m_doc.isNull())
+	{
+		disconnectSignals();
+		return;
+	}
+
+	m_unitRatio   = m_doc->unitRatio();
+	m_unitIndex   = m_doc->unitIndex();
+
+	firstLine->setDecimals(2);
+	leftIndent->setDecimals(2);
+	rightIndent->setDecimals(2);
+	spaceAbove->setDecimals(2);
+	spaceBelow->setDecimals(2);
+
+	connect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged()));
+	connect(m_doc             , SIGNAL(docChanged())      , this, SLOT(handleSelectionChanged()));
+}
+
+void PropertyWidget_TextMargins::handleAppModeChanged(int oldMode, int mode)
+{
+	if (oldMode == modeEditTable || mode == modeEditTable)
+	{
+		setCurrentItem(m_item);
+	}
+}
+
+void PropertyWidget_TextMargins::handleSelectionChanged()
+{
+	if (!m_doc || !m_ScMW || m_ScMW->scriptIsRunning())
+		return;
+
+	PageItem* currItem = currentItemFromSelection();
+	setCurrentItem(currItem);
+	updateGeometry();
+	repaint();
+}
+
+void PropertyWidget_TextMargins::handleUpdateRequest(int)
+{
+}
+
+void PropertyWidget_TextMargins::languageChange()
+{
+	firstLabel->setText( tr("First Line Indent") );
+	leftLabel->setText( tr("Left Indent") );
+	rightLabel->setText( tr("Right Indent") );
+	aboveLabel->setText( tr("Space Above") );
+	belowLabel->setText( tr("Space Below") );
+	resetButton->setText( tr("Reset") );
+}
+
+void PropertyWidget_TextMargins::unitChange()
+{
+	if (!m_doc)
+		return;
+
+	m_unitRatio = m_doc->unitRatio();
+	m_unitIndex = m_doc->unitIndex();
+
+	firstLine->blockSignals(true);
+	leftIndent->blockSignals(true);
+	rightIndent->blockSignals(true);
+	spaceAbove->blockSignals(true);
+	spaceBelow->blockSignals(true);
+
+	firstLine->setNewUnit( m_unitIndex );
+	leftIndent->setNewUnit( m_unitIndex );
+	rightIndent->setNewUnit( m_unitIndex );
+	spaceAbove->setNewUnit( m_unitIndex );
+	spaceBelow->setNewUnit( m_unitIndex );
+
+	firstLine->blockSignals(false);
+	leftIndent->blockSignals(false);
+	rightIndent->blockSignals(false);
+	spaceAbove->blockSignals(false);
+	spaceBelow->blockSignals(false);
+}
+
+void PropertyWidget_TextMargins::displayMargins(const ParagraphStyle &pStyle)
+{
+	bool blocked = firstLine->blockSignals(true);
+	leftIndent->blockSignals(true);
+	rightIndent->blockSignals(true);
+	spaceAbove->blockSignals(true);
+	spaceBelow->blockSignals(true);
+
+	firstLine->setValue(pStyle.firstIndent());
+	leftIndent->setValue(pStyle.leftMargin());
+	rightIndent->setValue(pStyle.rightMargin());
+	spaceAbove->setValue(pStyle.gapBefore());
+	spaceBelow->setValue(pStyle.gapAfter());
+
+	firstLine->blockSignals(blocked);
+	leftIndent->blockSignals(blocked);
+	rightIndent->blockSignals(blocked);
+	spaceAbove->blockSignals(blocked);
+	spaceBelow->blockSignals(blocked);
+}
+
+void PropertyWidget_TextMargins::handleMargins()
+{
+	if (!m_doc || !m_item || !m_ScMW || m_ScMW->scriptIsRunning())
+		return;
+	PageItem *item = m_item;
+//	if (m_doc->appMode == modeEditTable)
+//		item = m_item->asTable()->activeCell().textFrame();
+	if (item != NULL)
+	{
+		Selection tempSelection(this, false);
+		tempSelection.addItem(item, true);
+		m_doc->itemSelection_SetIndentsMargins(firstLine->value(), leftIndent->value(), rightIndent->value(), spaceAbove->value(), spaceBelow->value(), &tempSelection);
+	}
+}
+
+void PropertyWidget_TextMargins::resetMargins()
+{
+	if (!m_doc || !m_item || !m_ScMW || m_ScMW->scriptIsRunning())
+		return;
+	PageItem *item = m_item;
+//	if (m_doc->appMode == modeEditTable)
+//		item = m_item->asTable()->activeCell().textFrame();
+	if (item != NULL)
+	{
+		Selection tempSelection(this, false);
+		tempSelection.addItem(item, true);
+		m_doc->itemSelection_resetIndentsMargins(&tempSelection);
+		setCurrentItem(item);
+	}
+}
+
+void PropertyWidget_TextMargins::connectSignals()
+{
+	connect(firstLine, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()), Qt::UniqueConnection);
+	connect(leftIndent, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()), Qt::UniqueConnection);
+	connect(rightIndent, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()), Qt::UniqueConnection);
+	connect(spaceAbove, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()), Qt::UniqueConnection);
+	connect(spaceBelow, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()), Qt::UniqueConnection);
+	connect(resetButton, SIGNAL(clicked()), this, SLOT(resetMargins()) );
+}
+
+void PropertyWidget_TextMargins::disconnectSignals()
+{
+	disconnect(firstLine, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()));
+	disconnect(leftIndent, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()));
+	disconnect(rightIndent, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()));
+	disconnect(spaceAbove, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()));
+	disconnect(spaceBelow, SIGNAL(valueChanged(double)), this, SLOT(handleMargins()));
+	disconnect(resetButton, SIGNAL(clicked()), this, SLOT(resetMargins()) );
+}
+
+void PropertyWidget_TextMargins::configureWidgets()
+{
+	bool enabled = false;
+	if (m_item && m_doc)
+	{
+		PageItem_TextFrame* textItem = m_item->asTextFrame();
+//		if (m_doc->appMode == modeEditTable)
+//			textItem = m_item->asTable()->activeCell().textFrame();
+
+		enabled  = (m_item->isPathText() || (textItem != NULL));
+		enabled &= (m_doc->m_Selection->count() == 1);
+	}
+	setEnabled(enabled);
+}
+
+void PropertyWidget_TextMargins::setCurrentItem(PageItem *item)
+{
+	if (!m_ScMW || m_ScMW->scriptIsRunning())
+		return;
+	if (item && m_doc.isNull())
+		setDoc(item->doc());
+
+	m_item = item;
+
+	disconnectSignals();
+	configureWidgets();
+
+	if (m_item)
+	{
+		if (m_item->asTextFrame() || m_item->asPathText())
+		{
+			ParagraphStyle parStyle =  m_item->itemText.defaultStyle();
+			if (m_doc->appMode == modeEdit)
+				m_item->currentTextProps(parStyle);
+			displayMargins(parStyle);
+		}
+
+		connectSignals();
+	}
+}
diff --git Scribus/scribus/ui/propertywidget_textmargins.h Scribus/scribus/ui/propertywidget_textmargins.h
new file mode 100644
index 0000000..f47b585
--- /dev/null
+++ Scribus/scribus/ui/propertywidget_textmargins.h
@@ -0,0 +1,53 @@
+#ifndef PROPERTYWIDGET_TEXTMARGINS_H
+#define PROPERTYWIDGET_TEXTMARGINS_H
+
+#include "ui_propertywidget_textmarginsbase.h"
+#include "propertywidgetbase.h"
+
+class PageItem;
+class ParagraphStyle;
+class ScribusMainWindow;
+
+class PropertyWidget_TextMargins : public QFrame, private Ui::PropertyWidget_TextMarginsBase, public PropertyWidgetBase
+{
+	Q_OBJECT
+	
+public:
+	explicit PropertyWidget_TextMargins(QWidget *parent = 0);
+	~PropertyWidget_TextMargins() {}
+	
+	void updateStyle(const ParagraphStyle &newCurrent) { displayMargins(newCurrent); }
+
+protected:
+	PageItem *         m_item;
+	ScribusMainWindow* m_ScMW;
+	double m_unitRatio;
+	int    m_unitIndex;
+
+	void connectSignals();
+	void disconnectSignals();
+
+	void configureWidgets(void);
+	void setCurrentItem(PageItem *item);
+
+	virtual void changeEvent(QEvent *e);
+
+public slots:
+	void setMainWindow(ScribusMainWindow *mw);
+	void setDoc(ScribusDoc *d);
+
+	void handleAppModeChanged(int oldMode, int mode);
+	void handleSelectionChanged();
+	void handleUpdateRequest(int);
+
+	void languageChange();
+	void unitChange();
+
+	void displayMargins(const ParagraphStyle& pStyle);
+
+private slots:
+	void handleMargins();
+	void resetMargins();
+};
+
+#endif // PROPERTYWIDGET_TEXTMARGINS_H
\ No newline at end of file
diff --git Scribus/scribus/ui/propertywidget_textmarginsbase.ui Scribus/scribus/ui/propertywidget_textmarginsbase.ui
new file mode 100644
index 0000000..6774972
--- /dev/null
+++ Scribus/scribus/ui/propertywidget_textmarginsbase.ui
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PropertyWidget_TextMarginsBase</class>
+ <widget class="QFrame" name="PropertyWidget_TextMarginsBase">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>210</width>
+    <height>162</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Frame</string>
+  </property>
+  <property name="frameShape">
+   <enum>QFrame::StyledPanel</enum>
+  </property>
+  <property name="frameShadow">
+   <enum>QFrame::Raised</enum>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="margin">
+    <number>5</number>
+   </property>
+   <property name="spacing">
+    <number>2</number>
+   </property>
+   <item row="4" column="1">
+    <widget class="ScrSpinBox" name="spaceBelow">
+     <property name="maximum">
+      <double>9999.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="ScrSpinBox" name="rightIndent">
+     <property name="maximum">
+      <double>9999.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="ScrSpinBox" name="leftIndent">
+     <property name="maximum">
+      <double>9999.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="0" colspan="2">
+    <widget class="QToolButton" name="resetButton">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>Reset</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0">
+    <widget class="QLabel" name="belowLabel">
+     <property name="text">
+      <string>Space &amp;Below</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QLabel" name="rightLabel">
+     <property name="text">
+      <string>&amp;Right Indent</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0">
+    <widget class="QLabel" name="firstLabel">
+     <property name="text">
+      <string>&amp;First Line Indent</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QLabel" name="aboveLabel">
+     <property name="text">
+      <string>Space &amp;Above</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <widget class="ScrSpinBox" name="spaceAbove">
+     <property name="maximum">
+      <double>9999.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="leftLabel">
+     <property name="text">
+      <string>&amp;Left Indent</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="ScrSpinBox" name="firstLine">
+     <property name="minimum">
+      <double>-9999.000000000000000</double>
+     </property>
+     <property name="maximum">
+      <double>9999.000000000000000</double>
+     </property>
+     <property name="value">
+      <double>0.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QDoubleSpinBox</extends>
+   <header>ui/scrspinbox.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
margins.diff (22,412 bytes)   

cezaryece

2012-07-25 10:37

updater   ~0028615

Patch provided. Check if it is applyable (here is).

jghali

2012-08-15 20:26

administrator   ~0028821

Thanks. A few notes about that patch :
- when doc unit is mm (for eg.), entered values are not properly set to doc.
- values entered in the dialog are set altogether to paragraphy style : this must not be done in this way. Each value must be set to paragraph style individually, otherwise values set in a paragraph style may be overriden with same values but local formatting.
- itemSelection_SetIndentMargins() and itemSelection_resetIndentMargins() should not modify 'gap before' and 'gap after' paragraph, those values are not related to text indentation.
- reset button is imo unneeded : the paragraph style sweeper will do same job and have better behavior when a paragraph is formatted with a named paragraph style.

Issue History

Date Modified Username Field Change
2011-06-27 10:09 StefanM New Issue
2011-06-27 11:42 ale Note Added: 0026488
2011-06-27 13:34 cezaryece Note Added: 0026492
2011-06-27 13:38 cezaryece Note Edited: 0026492
2012-07-25 09:52 cezaryece Assigned To => cezaryece
2012-07-25 09:52 cezaryece Status new => assigned
2012-07-25 09:52 cezaryece Note Added: 0028607
2012-07-25 09:52 cezaryece Status assigned => resolved
2012-07-25 09:52 cezaryece Fixed in Version => 1.5.0svn
2012-07-25 09:52 cezaryece Resolution open => fixed
2012-07-25 10:08 jghali Note Added: 0028612
2012-07-25 10:08 jghali Status resolved => assigned
2012-07-25 10:08 jghali Resolution fixed => open
2012-07-25 10:08 jghali Fixed in Version 1.5.0svn =>
2012-07-25 10:36 cezaryece File Added: margins.diff
2012-07-25 10:37 cezaryece Assigned To cezaryece => jghali
2012-07-25 10:37 cezaryece Note Added: 0028615
2012-08-13 11:15 ale Summary Add indentation control etc. to Properties Palette => [patch] Add indentation control etc. to Properties Palette
2012-08-15 20:26 jghali Note Added: 0028821
2014-10-24 23:00 Kunda Patch => Yes