summaryrefslogtreecommitdiffstats
path: root/scribus/ui/createrange.cpp
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/ui/createrange.cpp
downloadscribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/ui/createrange.cpp')
-rw-r--r--scribus/ui/createrange.cpp214
1 files changed, 214 insertions, 0 deletions
diff --git a/scribus/ui/createrange.cpp b/scribus/ui/createrange.cpp
new file mode 100644
index 0000000..6e01bdf
--- /dev/null
+++ b/scribus/ui/createrange.cpp
@@ -0,0 +1,214 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+#include "createrange.h"
+
+#include "usertaskstructs.h"
+
+#include <QGroupBox>
+#include <QLabel>
+#include <QListWidget>
+#include <QPushButton>
+#include <QRadioButton>
+#include <QSpinBox>
+#include <QString>
+#include <QTabWidget>
+
+CreateRange::CreateRange(QString currText, int pageCount, QWidget* parent, Qt::WFlags fl )
+ : QDialog(parent, fl),
+ m_PageCount(pageCount),
+ m_RangeType(0),
+ m_BasicRangeType(0)
+{
+ setupUi(this);
+ pageCountValueLabel->setText(QString("%1").arg(pageCount));
+ basicConsecutiveFromSpinBox->setMinimum(1);
+ basicConsecutiveToSpinBox->setMinimum(1);
+ basicConsecutiveFromSpinBox->setMaximum(pageCount);
+ basicConsecutiveToSpinBox->setMaximum(pageCount);
+ basicSelectRangeType(m_BasicRangeType);
+ advPageGroupSizeSpinBox->setMaximum(pageCount);
+ if (m_PageCount==1)
+ basicEvenRadioButton->setShown(false);
+ if (currText.length()>0)
+ basicRangeListBox->addItem(currText);
+ // signals and slots connections
+ connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(selectRangeType(int)));
+ connect(basicRangeAddButton, SIGNAL(clicked()), this, SLOT(basicAddToRange()));
+ connect(basicRangeDelButton, SIGNAL(clicked()), this, SLOT(basicDelFromRange()));
+ connect(basicConsecutiveRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeConsec()));
+ connect(basicCommaSepRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeComma()));
+ connect(basicEvenRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeEven()));
+ connect(basicOddRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeOdd()));
+ connect(basicRangeUpButton, SIGNAL(clicked()), this, SLOT(basicMoveUp()));
+ connect(basicRangeDownButton, SIGNAL(clicked()), this, SLOT(basicMoveDown()));
+ connect(advPageGroupSizeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(advSpinChange(int)));
+ connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
+ connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
+ advPageGroupSizeSpinBox->setValue(4);
+}
+
+CreateRange::~CreateRange()
+{
+}
+
+void CreateRange::getCreateRangeData(CreateRangeData& crData)
+{
+ crData.pageRange="";
+ //First tab selected
+ if (m_RangeType==0)
+ {
+ uint c=basicRangeListBox->count();
+ if (c==0)
+ {
+ basicAddToRange();
+ c=basicRangeListBox->count();
+ }
+ for (uint i=0;i<c;++i)
+ {
+ if (i!=0 && i<c)
+ crData.pageRange+=",";
+ crData.pageRange+=basicRangeListBox->item(i)->text();
+ }
+ }
+ else
+ crData.pageRange=m_PageString;
+}
+
+void CreateRange::basicAddToRange( )
+{
+ QString newEntry;
+ switch (m_BasicRangeType)
+ {
+ case 0:
+ {
+ int from=basicConsecutiveFromSpinBox->value();
+ int to=basicConsecutiveToSpinBox->value();
+ if (from==to)
+ newEntry=QString("%1").arg(from);
+ else
+ newEntry=QString("%1-%2").arg(from).arg(to);
+ }
+ break;
+ case 1:
+ newEntry=basicCommaSepLineEdit->text();
+ break;
+ case 2:
+ {
+ QString numbers;
+ for (int i=2; i<=m_PageCount; i+=2)
+ {
+ if (i!=2)
+ numbers+=",";
+ numbers+=QString("%1").arg(i);
+ }
+ newEntry=numbers;
+ }
+ break;
+ case 3:
+ {
+ QString numbers;
+ for (int i=1; i<=m_PageCount; i+=2)
+ {
+ if (i!=1)
+ numbers+=",";
+ numbers+=QString("%1").arg(i);
+ }
+ newEntry=numbers;
+ }
+ break;
+ }
+ if (newEntry.length()!=0)
+ basicRangeListBox->addItem(newEntry);
+}
+
+void CreateRange::basicDelFromRange()
+{
+ delete basicRangeListBox->takeItem(basicRangeListBox->currentRow());
+}
+
+void CreateRange::basicSelectRangeTypeConsec()
+{
+ basicSelectRangeType(0);
+}
+
+void CreateRange::basicSelectRangeTypeComma()
+{
+ basicSelectRangeType(1);
+}
+
+void CreateRange::basicSelectRangeTypeEven()
+{
+ basicSelectRangeType(2);
+}
+
+void CreateRange::basicSelectRangeTypeOdd()
+{
+ basicSelectRangeType(3);
+}
+
+void CreateRange::basicSelectRangeType(int i)
+{
+ m_BasicRangeType=i;
+ bool basicRangeTypeIsConsecutive=(i==0);
+ basicConsecutiveFromLabel->setEnabled(basicRangeTypeIsConsecutive);
+ basicConsecutiveFromSpinBox->setEnabled(basicRangeTypeIsConsecutive);
+ basicConsecutiveToLabel->setEnabled(basicRangeTypeIsConsecutive);
+ basicConsecutiveToSpinBox->setEnabled(basicRangeTypeIsConsecutive);
+ basicCommaSepLineEdit->setEnabled(!basicRangeTypeIsConsecutive);
+}
+
+void CreateRange::selectRangeType(int)
+{
+ m_RangeType=tabWidget->currentIndex();
+}
+
+
+void CreateRange::basicMoveUp()
+{
+ int index=basicRangeListBox->currentRow();
+ if (index==-1 || index==0)
+ return;
+ basicRangeListBox->clearSelection();
+ QListWidgetItem * clbi = basicRangeListBox->takeItem(index);
+ basicRangeListBox->insertItem(qMax(0, index-1), clbi);
+ basicRangeListBox->setCurrentItem(clbi);
+}
+
+void CreateRange::basicMoveDown()
+{
+ int index=basicRangeListBox->currentRow();
+ if (index==-1 || index==static_cast<int>(basicRangeListBox->count())-1)
+ return;
+ basicRangeListBox->clearSelection();
+ QListWidgetItem * clbi = basicRangeListBox->takeItem(index);
+ basicRangeListBox->insertItem(index+1, clbi);
+ basicRangeListBox->setCurrentItem(clbi);
+}
+
+
+void CreateRange::advSpinChange(int /*v*/)
+{
+ m_PageString="";
+ int mp1=m_PageCount+1;
+ //locked at 4 for now.
+ if (m_PageCount % 4 == 0)
+ {
+ //28,1,2,27, 26,3,4,25
+ for (int i=m_PageCount;i>m_PageCount/2;i-=2)
+ {
+ if (i!=m_PageCount)
+ m_PageString+=",";
+ m_PageString+=QString("%1").arg(i);
+ m_PageString+=QString(",%1").arg(mp1-i);
+ m_PageString+=QString(",%1").arg(mp1-i+1);
+ m_PageString+=QString(",%1").arg(i-1);
+ }
+ }
+ QString tmp(m_PageString);
+ tmp.truncate(20);
+ advSampleOrderExampleLabel->setText(tmp+"...");
+}