Index: scribus/commonstrings.cpp
===================================================================
--- scribus/commonstrings.cpp	(revision 22367)
+++ scribus/commonstrings.cpp	(working copy)
@@ -217,18 +217,34 @@
 	return untrString;
 }
 
-const QString& CommonStrings::translatePageSetLocString(const QString &untrString)
+const QString& CommonStrings::translatePageSetLocString(const QString &untrString, int biding)
 {
-	if (untrString==pageLocLeft)
-		return trPageLocLeft;
-	if (untrString==pageLocMiddle)
-		return trPageLocMiddle;
-	if (untrString==pageLocMiddleLeft)
-		return trPageLocMiddleLeft;
-	if (untrString==pageLocMiddleRight)
-		return trPageLocMiddleRight;
-	if (untrString==pageLocRight)
-		return trPageLocRight;
+	if (biding == 0)
+	{
+		if (untrString==pageLocLeft)
+			return trPageLocLeft;
+		if (untrString==pageLocMiddle)
+			return trPageLocMiddle;
+		if (untrString==pageLocMiddleLeft)
+			return trPageLocMiddleLeft;
+		if (untrString==pageLocMiddleRight)
+			return trPageLocMiddleRight;
+		if (untrString==pageLocRight)
+			return trPageLocRight;
+	}
+	else
+	{
+		if (untrString==pageLocLeft)
+			return trPageLocRight;
+		if (untrString==pageLocMiddle)
+			return trPageLocMiddle;
+		if (untrString==pageLocMiddleLeft)
+			return trPageLocMiddleRight;
+		if (untrString==pageLocMiddleRight)
+			return trPageLocMiddleLeft;
+		if (untrString==pageLocRight)
+			return trPageLocLeft;
+	}
 	return untrString;
 }
 
Index: scribus/commonstrings.h
===================================================================
--- scribus/commonstrings.h	(revision 22367)
+++ scribus/commonstrings.h	(working copy)
@@ -64,7 +64,7 @@
 	 * @param untrString "untranslated" string
 	 * @return translated string
 	 */
-	static const QString& translatePageSetLocString(const QString &untrString);
+	static const QString& translatePageSetLocString(const QString &untrString, int biding = 0);
 	/**
 	 * \brief Return the untranslated Page Set string if given the translated one
 	 * @param trString translated string
Index: scribus/plugins/fileloader/scribus150format/scribus150format.cpp
===================================================================
--- scribus/plugins/fileloader/scribus150format/scribus150format.cpp	(revision 22367)
+++ scribus/plugins/fileloader/scribus150format/scribus150format.cpp	(working copy)
@@ -2024,6 +2024,7 @@
 {
 	m_Doc->setPageSize(attrs.valueAsString("PAGESIZE"));
 	m_Doc->setPageOrientation(attrs.valueAsInt("ORIENTATION", 0));
+	m_Doc->setBinding(attrs.valueAsInt("PAGEBINDING", 0));
 	m_Doc->FirstPnum  = attrs.valueAsInt("FIRSTNUM", 1);
 	m_Doc->setPagePositioning(attrs.valueAsInt("BOOK", 0));
 
@@ -6140,6 +6141,7 @@
 				ss->set("LEFT_OLD", newPage->LeftPg);
 				ss->set("NAME_OLD", newPage->pageName());
 				ss->set("ORIENTATION_OLD", newPage->orientation());
+				ss->set("BINDING_OLD", newPage);
 				ss->set("SIZE_OLD", newPage->m_pageSize);
 				ss->set("WIDTH_OLD", newPage->width());
 				ss->set("HEIGHT_OLD", newPage->height());
Index: scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
===================================================================
--- scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp	(revision 22367)
+++ scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp	(working copy)
@@ -225,6 +225,7 @@
 	docu.writeAttribute("BleedRight"  , m_Doc->bleeds()->right());
 	docu.writeAttribute("BleedBottom" , m_Doc->bleeds()->bottom());
 	docu.writeAttribute("ORIENTATION" , m_Doc->pageOrientation());
+	docu.writeAttribute("PAGEBINDING" , m_Doc->pageBiding());
 	docu.writeAttribute("PAGESIZE"    , m_Doc->pageSize());
 	docu.writeAttribute("FIRSTNUM"    , m_Doc->FirstPnum);
 	docu.writeAttribute("BOOK"        , m_Doc->pagePositioning());
Index: scribus/prefsmanager.cpp
===================================================================
--- scribus/prefsmanager.cpp	(revision 22367)
+++ scribus/prefsmanager.cpp	(working copy)
@@ -327,6 +327,7 @@
 		appPrefs.docSetupPrefs.language = "en_GB";
 	appPrefs.docSetupPrefs.pageSize = LocaleManager::instance()->pageSizeForLocale(ScQApp->currGUILanguage());
 	appPrefs.docSetupPrefs.pageOrientation = 0;
+	appPrefs.docSetupPrefs.binding = 0;
 	PageSize defaultPageSize(appPrefs.docSetupPrefs.pageSize);
 	appPrefs.docSetupPrefs.pageWidth = defaultPageSize.width();
 	appPrefs.docSetupPrefs.pageHeight = defaultPageSize.height();
@@ -1398,6 +1399,7 @@
 	deDocumentSetup.setAttribute("Language",appPrefs.docSetupPrefs.language);
 	deDocumentSetup.setAttribute("UnitIndex",appPrefs.docSetupPrefs.docUnitIndex);
 	deDocumentSetup.setAttribute("PageSize",appPrefs.docSetupPrefs.pageSize);
+	deDocumentSetup.setAttribute("PageBinding",appPrefs.docSetupPrefs.binding);
 	deDocumentSetup.setAttribute("PageOrientation",appPrefs.docSetupPrefs.pageOrientation);
 	deDocumentSetup.setAttribute("PageWidth",ScCLocale::toQStringC(appPrefs.docSetupPrefs.pageWidth));
 	deDocumentSetup.setAttribute("PageHeight",ScCLocale::toQStringC(appPrefs.docSetupPrefs.pageHeight));
@@ -2009,6 +2011,7 @@
 				appPrefs.docSetupPrefs.language = "en_GB";
 			appPrefs.docSetupPrefs.docUnitIndex = dc.attribute("UnitIndex", "0").toInt();
 			appPrefs.docSetupPrefs.pageSize = dc.attribute("PageSize","A4");
+			appPrefs.docSetupPrefs.binding = dc.attribute("PageBinding", "0").toInt();
 			appPrefs.docSetupPrefs.pageOrientation = dc.attribute("PageOrientation", "0").toInt();
 			appPrefs.docSetupPrefs.pageWidth   = ScCLocale::toDoubleC(dc.attribute("PageWidth"), 595.0);
 			appPrefs.docSetupPrefs.pageHeight  = ScCLocale::toDoubleC(dc.attribute("PageHeight"), 842.0);
Index: scribus/prefsstructs.h
===================================================================
--- scribus/prefsstructs.h	(revision 22367)
+++ scribus/prefsstructs.h	(working copy)
@@ -183,6 +183,7 @@
 	bool AutoSaveLocation;
 	QString AutoSaveDir;
 	bool saveCompressed;
+	int binding;
 };
 
 //Guides
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp	(revision 22367)
+++ scribus/scribus.cpp	(working copy)
@@ -2117,6 +2117,7 @@
 		{
 			int facingPages = dia->choosenLayout();
 			int firstPage = dia->firstPage->currentIndex();
+			int bind = dia->bind->currentIndex();
 			docSet = dia->startDocSetup->isChecked();
 			double topMargin = dia->marginGroup->top();
 			double bottomMargin = dia->marginGroup->bottom();
@@ -2141,11 +2142,13 @@
 			doc->setPageSetFirstPage(facingPages, firstPage);
 			doc->bleeds()->set(dia->bleedTop(), dia->bleedLeft(), dia->bleedBottom(), dia->bleedRight());
 			HaveNewDoc();
+			doc->setBinding(bind);
 			doc->reformPages(true);
 			// Don's disturb user with "save?" dialog just after new doc
 			// doc changing should be rewritten maybe... maybe later...
 			doc->setModified(false);
 			updateActiveWindowCaption(doc->DocName);
+
 		}
 		else if (dia->tabSelected() == NewDoc::NewFromTemplateTab)
 		{
@@ -2199,6 +2202,7 @@
 	{
 		int facingPages = dia->choosenLayout();
 		int firstPage = dia->firstPage->currentIndex();
+		int bind = dia->bind->currentIndex();
 		docSet = dia->startDocSetup->isChecked();
 		double topMargin = dia->marginGroup->top();
 		double bottomMargin = dia->marginGroup->bottom();
@@ -2232,6 +2236,7 @@
 			doc->setModified(false);
 			updateActiveWindowCaption(doc->DocName);
 		}
+		doc->setBinding(bind);
 	}
 	delete dia;
 	if (docSet)
Index: scribus/scribusdoc.cpp
===================================================================
--- scribus/scribusdoc.cpp	(revision 22367)
+++ scribus/scribusdoc.cpp	(working copy)
@@ -6143,15 +6143,28 @@
 // without running this monster
 void ScribusDoc::reformPages(bool moveObjects)
 {
+	//	 m_binding = m_docPrefsData.docSetupPrefs.binding;
 	QMap<uint, oldPageVar> pageTable;
 	struct oldPageVar oldPg;
 	int counter = pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].FirstPage;
 	int rowcounter = 0;
-	double maxYPos=0.0, maxXPos=0.0;
-	double currentXPos=m_docPrefsData.displayPrefs.scratch.left(), currentYPos=m_docPrefsData.displayPrefs.scratch.top(), lastYPos=Pages->at(0)->initialHeight();
-//	currentXPos += (pageWidth+pageSets[currentPageLayout].GapHorizontal) * counter;
-	currentXPos += (m_docPrefsData.docSetupPrefs.pageWidth+m_docPrefsData.displayPrefs.pageGapHorizontal) * counter;
-
+	double maxYPos=0.0, maxXPos=0.0, currentXPos = 0.0, currentYPos = 0.0, lastYPos = 0.0;
+	if (m_docPrefsData.docSetupPrefs.binding == 1)
+	{
+		currentXPos=m_docPrefsData.displayPrefs.scratch.left() + m_docPrefsData.docSetupPrefs.pageWidth;
+		currentYPos=m_docPrefsData.displayPrefs.scratch.top();
+		lastYPos=Pages->at(0)->initialHeight();
+		//	currentXPos += (pageWidth+pageSets[currentPageLayout].GapHorizontal) * counter;
+		currentXPos -= (m_docPrefsData.docSetupPrefs.pageWidth+m_docPrefsData.displayPrefs.pageGapHorizontal) * counter;
+	}
+	else
+	{
+		currentXPos = m_docPrefsData.displayPrefs.scratch.left();
+		currentYPos=m_docPrefsData.displayPrefs.scratch.top();
+		lastYPos=Pages->at(0)->initialHeight();
+		//      currentXPos += (pageWidth+pageSets[currentPageLayout].GapHorizontal) * counter;
+		currentXPos += (m_docPrefsData.docSetupPrefs.pageWidth+m_docPrefsData.displayPrefs.pageGapHorizontal) * counter;
+	}
 	lastYPos = Pages->at(0)->initialHeight();
 	ScPage* page;
 	int docPageCount=Pages->count();
@@ -6191,29 +6204,63 @@
 			page->setYOffset(currentYPos);
 			if (counter < pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].Columns-1)
 			{
-				currentXPos += page->width() + m_docPrefsData.displayPrefs.pageGapHorizontal;
+				if (m_docPrefsData.docSetupPrefs.binding == 1)
+				{
+					currentXPos -= page->width() + m_docPrefsData.displayPrefs.pageGapHorizontal;
+				}
+				else
+				{
+					currentXPos += page->width() + m_docPrefsData.displayPrefs.pageGapHorizontal;
+				}
 				lastYPos = qMax(lastYPos, page->height());
 				if (counter == 0)
 				{
-					page->Margins.setLeft(page->initialMargins.right());
-					page->Margins.setRight(page->initialMargins.left());
+					if (m_docPrefsData.docSetupPrefs.binding == 1)
+					{
+						page->Margins.setLeft(page->initialMargins.left());
+						page->Margins.setRight(page->initialMargins.right());
+					}
+					else
+					{
+						page->Margins.setLeft(page->initialMargins.right());
+						page->Margins.setRight(page->initialMargins.left());
+					}
 				}
 				else
 				{
-					page->Margins.setLeft(page->initialMargins.left());
-					page->Margins.setRight(page->initialMargins.left());
+					if (m_docPrefsData.docSetupPrefs.binding == 1)
+					{
+						page->Margins.setLeft(page->initialMargins.right());
+						page->Margins.setRight(page->initialMargins.right());
+					}
+					else
+					{
+						page->Margins.setLeft(page->initialMargins.left());
+						page->Margins.setRight(page->initialMargins.left());
+					}
 				}
 			}
 			else
 			{
-				currentXPos = m_docPrefsData.displayPrefs.scratch.left();
+				if (m_docPrefsData.docSetupPrefs.binding == 1)
+					currentXPos = m_docPrefsData.displayPrefs.scratch.left() + m_docPrefsData.docSetupPrefs.pageWidth;
+				else
+					currentXPos = m_docPrefsData.displayPrefs.scratch.left();
 				if (pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].Columns > 1)
 					currentYPos += qMax(lastYPos, page->height())+m_docPrefsData.displayPrefs.pageGapVertical;
 				else
 					currentYPos += page->height()+m_docPrefsData.displayPrefs.pageGapVertical;
 				lastYPos = 0;
-				page->Margins.setRight(page->initialMargins.right());
-				page->Margins.setLeft(page->initialMargins.left());
+				if (m_docPrefsData.docSetupPrefs.binding == 1)
+				{
+					page->Margins.setRight(page->initialMargins.left());
+					page->Margins.setLeft(page->initialMargins.right());
+				}
+				else
+				{
+					page->Margins.setRight(page->initialMargins.right());
+					page->Margins.setLeft(page->initialMargins.left());
+				}
 			}
 			counter++;
 			if (counter > pageSets()[m_docPrefsData.docSetupPrefs.pagePositioning].Columns-1)
Index: scribus/scribusdoc.h
===================================================================
--- scribus/scribusdoc.h	(revision 22367)
+++ scribus/scribusdoc.h	(working copy)
@@ -188,7 +188,11 @@
 	const QString& language() const { return m_docPrefsData.docSetupPrefs.language; }
 	void setLanguage(const QString& s) { m_docPrefsData.docSetupPrefs.language=s; }
 	int pageOrientation() const { return m_docPrefsData.docSetupPrefs.pageOrientation; }
+	int pageBiding() const {return m_docPrefsData.docSetupPrefs.binding; }
 	void setPageOrientation(int o) { m_docPrefsData.docSetupPrefs.pageOrientation=o; }
+	void setBinding(int x) {m_docPrefsData.docSetupPrefs.binding = x;
+						   m_docPrefsData.pdfPrefs.Binding = x;
+						   }
 	int pagePositioning() const { return m_docPrefsData.docSetupPrefs.pagePositioning; }
 	void setPagePositioning(int p) { m_docPrefsData.docSetupPrefs.pagePositioning=p; }
 	double pageHeight() const { return m_docPrefsData.docSetupPrefs.pageHeight; }
Index: scribus/ui/newfile.cpp
===================================================================
--- scribus/ui/newfile.cpp	(revision 22367)
+++ scribus/ui/newfile.cpp	(working copy)
@@ -290,6 +290,14 @@
 	pageCountLabel->setBuddy(pageCountSpinBox);
 	optionsGroupBoxLayout->addRow( pageCountLabel, pageCountSpinBox);
 
+	layoutLabel2 = new QLabel( optionsGroupBox );
+	layoutLabel2->setText( tr( "Binding Direction:" ) );
+	bind = new ScComboBox( optionsGroupBox );
+	optionsGroupBoxLayout->addRow( layoutLabel2, bind );
+	bind->addItem(tr("Left To Right"));
+	bind->addItem(tr("Right To Left"));
+	bind->setCurrentIndex(prefsManager->appPrefs.docSetupPrefs.binding);
+
 	layoutLabel1 = new QLabel( optionsGroupBox );
 	layoutLabel1->setText( tr( "First Page is:" ) );
 	firstPage = new ScComboBox( optionsGroupBox );
@@ -462,7 +470,7 @@
 		QStringList::Iterator pNames;
 		for(pNames = prefsManager->appPrefs.pageSets[nr].pageNames.begin(); pNames != prefsManager->appPrefs.pageSets[nr].pageNames.end(); ++pNames )
 		{
-			firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames)));
+			firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames), bind->currentIndex()));
 		}
 	}
 	else
Index: scribus/ui/newfile.h
===================================================================
--- scribus/ui/newfile.h	(revision 22367)
+++ scribus/ui/newfile.h	(working copy)
@@ -75,6 +75,8 @@
 	QFrame* newDocFrame;
 	PageLayoutsWidget* layoutsView;
 	QLabel* layoutLabel1;
+	QLabel* layoutLabel2;
+	ScComboBox* bind;
 	ScComboBox* firstPage;
 	QGroupBox* pageSizeGroupBox;
 	MarginWidget* marginGroup;
@@ -151,7 +153,6 @@
 	void gotoDesktopDirectory();
 	void gotoHomeDirectory();
 	void openFileDialogFileClicked(const QString &path);
-
 protected:
 	QVBoxLayout* TabbedNewDocLayout;
 	QHBoxLayout* Layout1;
Index: scribus/ui/pagelayout.cpp
===================================================================
--- scribus/ui/pagelayout.cpp	(revision 22367)
+++ scribus/ui/pagelayout.cpp	(working copy)
@@ -78,6 +78,11 @@
 	layoutsCombo = new ScComboBox( this );
 	layoutGroupLayout->addWidget( layoutsCombo );
 
+	layoutLable2 = new QLabel( this );
+	layoutGroupLayout->addWidget( layoutLable2 );
+	bind = new ScComboBox( this );
+	layoutGroupLayout->addWidget( bind );
+
 	layoutLabel1 = new QLabel( this );
 	layoutGroupLayout->addWidget( layoutLabel1 );
 	firstPage = new ScComboBox( this );
@@ -87,6 +92,7 @@
 
 	connect(layoutsCombo, SIGNAL(activated(int)), this, SLOT(itemSelected(int)));
 	connect(firstPage, SIGNAL(activated(int)), this, SIGNAL(selectedFirstPage(int)));
+	connect(bind, SIGNAL(activated(int)), this, SIGNAL(selectBinding(int)));
 }
 
 PageLayouts::PageLayouts(QWidget* parent, QList<PageSet> pSets, bool mode)  : QGroupBox( parent )
@@ -106,6 +112,10 @@
 		layoutsCombo = new ScComboBox( this );
 		layoutGroupLayout->addWidget( layoutsCombo );
 	}
+	layoutLable2 = new QLabel( this );
+	layoutGroupLayout->addWidget( layoutLable2 );
+	bind = new ScComboBox( this );
+	layoutGroupLayout->addWidget( bind );
 	layoutLabel1 = new QLabel( this );
 	layoutGroupLayout->addWidget( layoutLabel1 );
 	firstPage = new ScComboBox( this );
@@ -163,7 +173,7 @@
 		QStringList::Iterator pNames;
 		for(pNames = pageSets[nr].pageNames.begin(); pNames != pageSets[nr].pageNames.end(); ++pNames )
 		{
-			firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames)));
+			firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames), bind->currentIndex()));
 		}
 	}
 	else
@@ -196,7 +206,7 @@
 		QStringList::Iterator pNames;
 		for(pNames = pageSets[chosen].pageNames.begin(); pNames != pageSets[chosen].pageNames.end(); ++pNames )
 		{
-			firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames)));
+			firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames), bind->currentIndex()));
 		}
 	}
 	else
@@ -288,11 +298,14 @@
 		if (currIndex>=0 && currIndex<pageSets.count())
 			for(QStringList::Iterator pNames = pageSets[currIndex].pageNames.begin(); pNames != pageSets[currIndex].pageNames.end(); ++pNames )
 			{
-				firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames)));
+				firstPage->addItem(CommonStrings::translatePageSetLocString((*pNames), bind->currentIndex()));
 			}
 		firstPage->setCurrentIndex(currFirstPageIndex);
 		connect(firstPage, SIGNAL(activated(int)), this, SIGNAL(selectedFirstPage(int)));
 	}
+	layoutLable2->setText( tr( "Binding Direction: " ));
+	bind->addItem(tr("Left To Right"));
+	bind->addItem(tr("Right To Left"));
 	layoutLabel1->setText( tr( "First Page is:" ) );
 
 	QString layoutText( tr( "Number of pages to show side-by-side on the canvas. Often used for allowing items to be placed across page spreads." ) );
Index: scribus/ui/pagelayout.h
===================================================================
--- scribus/ui/pagelayout.h	(revision 22367)
+++ scribus/ui/pagelayout.h	(working copy)
@@ -51,6 +51,8 @@
 	QLabel* layoutLabel1;
 	ScComboBox* firstPage;
 	QList<PageSet> pageSets;
+	QLabel* layoutLable2;
+	ScComboBox* bind;
 
 public slots:
 	void itemSelected(QListWidgetItem* ic);
@@ -59,6 +61,7 @@
 signals:
 	void selectedLayout(int);
 	void selectedFirstPage(int);
+	void selectBinding(int);
 
 private:
 	void itemSelectedPost(int chosen);
Index: scribus/ui/pagepalette_pages.cpp
===================================================================
--- scribus/ui/pagepalette_pages.cpp	(revision 22367)
+++ scribus/ui/pagepalette_pages.cpp	(working copy)
@@ -70,6 +70,7 @@
 	connect(masterPageList, SIGNAL(thumbnailChanged()), this, SLOT(rebuildMasters()));
 	connect(masterPageList, SIGNAL(DelMaster(QString)), this, SLOT(deleteMasterPage(QString)));
 
+	connect(pageLayout, SIGNAL(selectBinding(int))     , this, SLOT(handleBinging(int)));
 	connect(pageLayout, SIGNAL(selectedLayout(int ))   , this, SLOT(handlePageLayout(int )));
 	connect(pageLayout, SIGNAL(selectedFirstPage(int )), this, SLOT(handleFirstPage(int )));
 	connect(pageView  , SIGNAL(Click(int, int, int))   , this, SLOT(pageView_gotoPage(int, int, int)));
@@ -164,6 +165,15 @@
 	pageLayout->setEnabled(enabled);
 }
 
+void PagePalette_Pages::handleBinging(int bind)
+{
+	currView->Doc->setBinding(bind);
+	currView->reformPages();
+	currView->DrawNew();
+	currView->GotoPage(currView->Doc->currentPageNumber());
+	rebuildPages();
+}
+
 void PagePalette_Pages::handlePageLayout(int layout)
 {
 	pageLayout->selectFirstP(currView->Doc->pageSets()[layout].FirstPage);
Index: scribus/ui/pagepalette_pages.h
===================================================================
--- scribus/ui/pagepalette_pages.h	(revision 22367)
+++ scribus/ui/pagepalette_pages.h	(working copy)
@@ -50,6 +50,7 @@
 	void markPage(uint nr);
 	void selMasterPage();
 	void languageChange();
+	void handleBinging(int);
 
 private slots:
 	void pageView_applyMasterPage(QString masterpageName, int pageIndex);
Index: scribus/ui/prefs_documentsetup.cpp
===================================================================
--- scribus/ui/prefs_documentsetup.cpp	(revision 22367)
+++ scribus/ui/prefs_documentsetup.cpp	(working copy)
@@ -150,6 +150,7 @@
 	pageWidthSpinBox->setValue(pageW * unitRatio);
 	pageHeightSpinBox->setValue(pageH * unitRatio);
 	pageSets=prefsData->pageSets;
+	bind->setCurrentIndex(prefsData->docSetupPrefs.binding);
 	if (prefsData->docSetupPrefs.pagePositioning < 2)
 	{
 		threeFoldRadioButton->hide();
@@ -221,6 +222,7 @@
 	prefsData->docSetupPrefs.pagePositioning=pageLayoutButtonGroup->checkedId();
 	prefsData->pageSets[prefsData->docSetupPrefs.pagePositioning].FirstPage=layoutFirstPageIsComboBox->currentIndex();
 
+	prefsData->docSetupPrefs.binding = bind->currentIndex();
 	prefsData->docSetupPrefs.margins=marginsWidget->margins();
 	prefsData->docSetupPrefs.bleeds=bleedsWidget->margins();
 	prefsData->docSetupPrefs.saveCompressed=saveCompressedCheckBox->isChecked();
@@ -249,9 +251,18 @@
 	if (currIndex>0 && currIndex<pageSets.count())
 	{
 		layoutFirstPageIsComboBox->setEnabled(true);
-		for(QStringList::Iterator pNames = pageSets[currIndex].pageNames.begin(); pNames != pageSets[currIndex].pageNames.end(); ++pNames )
-			layoutFirstPageIsComboBox->addItem(CommonStrings::translatePageSetLocString(*pNames));
-		layoutFirstPageIsComboBox->setCurrentIndex(i<0?0:i);
+		if ( bind->currentIndex() == 0){
+			for(QStringList::Iterator pNames = pageSets[currIndex].pageNames.begin(); pNames != pageSets[currIndex].pageNames.end(); ++pNames )
+				layoutFirstPageIsComboBox->addItem(CommonStrings::translatePageSetLocString(*pNames));
+			layoutFirstPageIsComboBox->setCurrentIndex(i<0?0:i);
+		}
+		else
+		{
+			layoutFirstPageIsComboBox->addItem("Right Page");
+			layoutFirstPageIsComboBox->addItem("Left Page");
+
+			layoutFirstPageIsComboBox->setCurrentIndex(i<0?0:i);
+		}
 	}
 	else
 	{
Index: scribus/ui/prefs_documentsetup.h
===================================================================
--- scribus/ui/prefs_documentsetup.h	(revision 22367)
+++ scribus/ui/prefs_documentsetup.h	(working copy)
@@ -12,9 +12,9 @@
 #include "prefs_pane.h"
 #include "scribusapi.h"
 #include "scribusstructs.h"
+//#include "scribusdoc.h"
 
 class ScribusDoc;
-
 class SCRIBUS_API Prefs_DocumentSetup : public Prefs_Pane, Ui::Prefs_DocumentSetup
 {
 	Q_OBJECT
Index: scribus/ui/prefs_documentsetupbase.ui
===================================================================
--- scribus/ui/prefs_documentsetupbase.ui	(revision 22367)
+++ scribus/ui/prefs_documentsetupbase.ui	(working copy)
@@ -38,7 +38,7 @@
    <item>
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>1</number>
      </property>
      <widget class="QWidget" name="sizeTab">
       <attribute name="title">
@@ -247,7 +247,7 @@
        </item>
        <item>
         <layout class="QFormLayout" name="pageLayoutLayout">
-         <item row="4" column="0">
+         <item row="7" column="0">
           <widget class="QLabel" name="layoutFirstPageIsLabel">
            <property name="text">
             <string>First Page is:</string>
@@ -257,7 +257,7 @@
            </property>
           </widget>
          </item>
-         <item row="4" column="1">
+         <item row="7" column="1">
           <widget class="QComboBox" name="layoutFirstPageIsComboBox">
            <property name="sizeAdjustPolicy">
             <enum>QComboBox::AdjustToContents</enum>
@@ -307,6 +307,27 @@
            </attribute>
           </widget>
          </item>
+         <item row="4" column="1">
+          <widget class="QComboBox" name="bind">
+           <item>
+            <property name="text">
+             <string>Left To Right</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>Right To Left</string>
+            </property>
+           </item>
+          </widget>
+         </item>
+         <item row="4" column="0">
+          <widget class="QLabel" name="bindLable">
+           <property name="text">
+            <string>Binding Direction:</string>
+           </property>
+          </widget>
+         </item>
         </layout>
        </item>
        <item>
@@ -349,7 +370,7 @@
             <x>0</x>
             <y>0</y>
             <width>458</width>
-            <height>540</height>
+            <height>546</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_5">
Index: scribus/ui/prefs_pdfexport.cpp
===================================================================
--- scribus/ui/prefs_pdfexport.cpp	(revision 22367)
+++ scribus/ui/prefs_pdfexport.cpp	(working copy)
@@ -214,8 +214,8 @@
 
 	i = pageBindingComboBox->currentIndex();
 	pageBindingComboBox->clear();
-	pageBindingComboBox->addItem( tr("Left Margin"));
-	pageBindingComboBox->addItem( tr("Right Margin"));
+	pageBindingComboBox->addItem( tr("Left To Right"));
+	pageBindingComboBox->addItem( tr("Right To Lef"));
 	pageBindingComboBox->setCurrentIndex(i);
 
 	i = outputIntentionComboBox->currentIndex();
Index: scribus/ui/tabpdfoptions.ui
===================================================================
--- scribus/ui/tabpdfoptions.ui	(revision 22367)
+++ scribus/ui/tabpdfoptions.ui	(working copy)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>657</width>
-    <height>549</height>
+    <height>609</height>
    </rect>
   </property>
   <property name="currentIndex">
@@ -238,12 +238,12 @@
            </property>
            <item>
             <property name="text">
-             <string>Left Margin</string>
+             <string>Left To Right</string>
             </property>
            </item>
            <item>
             <property name="text">
-             <string>Right Margin</string>
+             <string>Right To Left</string>
             </property>
            </item>
           </widget>
