summaryrefslogtreecommitdiffstats
path: root/scribus/tabdisplay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scribus/tabdisplay.cpp')
-rw-r--r--scribus/tabdisplay.cpp383
1 files changed, 383 insertions, 0 deletions
diff --git a/scribus/tabdisplay.cpp b/scribus/tabdisplay.cpp
new file mode 100644
index 0000000..2dc0f16
--- /dev/null
+++ b/scribus/tabdisplay.cpp
@@ -0,0 +1,383 @@
+/*
+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 <QPushButton>
+#include <QCheckBox>
+#include <QLabel>
+#include <QSlider>
+#include <QToolTip>
+#include <QGroupBox>
+#include <QColorDialog>
+#include <QPainter>
+
+#include <QList>
+#include <QPixmap>
+#include <QDesktopWidget>
+
+#include "tabdisplay.h"
+
+#include "scrspinbox.h"
+#include "prefsmanager.h"
+#include "units.h"
+#include "util_icon.h"
+
+
+TabDisplay::TabDisplay(QWidget* parent, const char* name)
+ : QWidget(parent)
+{
+ setupUi(this);
+ buttonRestoreDPI->setIcon(QIcon(loadIcon("screen.png")));
+ backColor->setToolTip( "<qt>" + tr( "Color for paper" ) + "</qt>");
+ checkUnprintable->setToolTip( "<qt>" + tr( "Mask the area outside the margins in the margin color" ) + "</qt>" );
+ checkLink->setToolTip( "<qt>" + tr("Enable or disable the display of linked frames.") + "</qt>");
+ checkControl->setToolTip( "<qt>" + tr("Display non-printing characters such as paragraph markers in text frames") + "</qt>");
+ checkFrame->setToolTip( "<qt>" + tr("Turns the display of frames on or off") + "</qt>");
+ checkLayerM->setToolTip( "<qt>" + tr("Turns the display of layer indicators on or off") + "</qt>");
+ checkPictures->setToolTip( "<qt>" + tr("Turns the display of images on or off") + "</qt>");
+ checkShowPageShadow->setToolTip( "<qt>" + tr("Turns the page shadow on or off") + "</qt>");
+ leftScratch->setToolTip( "<qt>" + tr( "Defines amount of space left of the document canvas available as a pasteboard for creating and modifying elements and dragging them onto the active page" ) + "</qt>" );
+ rightScratch->setToolTip( "<qt>" + tr( "Defines amount of space right of the document canvas available as a pasteboard for creating and modifying elements and dragging them onto the active page" ) + "</qt>" );
+ topScratch->setToolTip( "<qt>" + tr( "Defines amount of space above the document canvas available as a pasteboard for creating and modifying elements and dragging them onto the active page" ) + "</qt>" );
+ bottomScratch->setToolTip( "<qt>" + tr( "Defines amount of space below the document canvas available as a pasteboard for creating and modifying elements and dragging them onto the active page" ) + "</qt>" );
+ CaliText->setToolTip( "<qt>" + tr( "Set the default zoom level" ) + "</qt>");
+ CaliGroup->setToolTip( "<qt>" + tr( "Place a ruler against your screen and drag the slider to set the zoom level so Scribus will display your pages and objects on them at the correct size" ) + "</qt>" );
+
+ connect(backColor, SIGNAL(clicked()), this, SLOT(changePaperColor()));
+ connect(buttonFrameSelected, SIGNAL(clicked()), this, SLOT(changeFrameColor()));
+ connect(buttonFrameNormal, SIGNAL(clicked()), this, SLOT(changeNormFrameColor()));
+ connect(buttonFrameGrouped, SIGNAL(clicked()), this, SLOT(changeGroupFrameColor()));
+ connect(buttonFrameLinked, SIGNAL(clicked()), this, SLOT(changeChainFrameColor()));
+ connect(buttonFrameLocked, SIGNAL(clicked()), this, SLOT(changeLockFrameColor()));
+ connect(buttonFrameAnnotation, SIGNAL(clicked()), this, SLOT(changeAnnotFrameColor()));
+ connect(buttonSelectedPage, SIGNAL(clicked()), this, SLOT(changePageBorderColor()));
+ connect(buttonControlChars, SIGNAL(clicked()), this, SLOT(changeControlCharsColor()));
+
+ connect(buttonRestoreDPI, SIGNAL(clicked()), this, SLOT(restoreDisScale()));
+ connect(CaliSlider, SIGNAL(valueChanged(int)), this, SLOT(setDisScale()));
+ connect(rulerUnitCombo, SIGNAL(activated(int)), this, SLOT(drawRuler()));
+}
+
+void TabDisplay::restoreDefaults(struct ApplicationPrefs *prefsData, struct guidesPrefs &guidesSettings, QList<PageSet> &pageSets, int pageLayout, MarginStruct &scratch)
+{
+ docUnitIndex = prefsData->docUnitIndex;
+ double unitRatio = unitGetRatioFromIndex(docUnitIndex);
+
+ DisScale = prefsData->DisScale;
+ int decimals = unitGetPrecisionFromIndex(docUnitIndex);
+ QString unitSuffix = unitGetSuffixFromIndex(docUnitIndex);
+ QPixmap pm(54, 14);
+ pm.fill(prefsData->DpapColor);
+ colorPaper = prefsData->DpapColor;
+ backColor->setIcon(pm);
+ backColor->setText( QString::null );
+ pm.fill(prefsData->DFrameColor);
+ colorFrame = prefsData->DFrameColor;
+ buttonFrameSelected->setText( QString::null );
+ buttonFrameSelected->setIcon(pm);
+ pm.fill(prefsData->DFrameNormColor);
+ colorFrameNorm = prefsData->DFrameNormColor;
+ buttonFrameNormal->setText( QString::null );
+ buttonFrameNormal->setIcon(pm);
+ pm.fill(prefsData->DFrameGroupColor);
+ colorFrameGroup = prefsData->DFrameGroupColor;
+ buttonFrameGrouped->setText( QString::null );
+ buttonFrameGrouped->setIcon(pm);
+ pm.fill(prefsData->DFrameLinkColor);
+ colorFrameLinked = prefsData->DFrameLinkColor;
+ buttonFrameLinked->setText( QString::null );
+ buttonFrameLinked->setIcon(pm);
+ pm.fill(prefsData->DFrameLockColor);
+ colorFrameLocked = prefsData->DFrameLockColor;
+ buttonFrameLocked->setText( QString::null );
+ buttonFrameLocked->setIcon(pm);
+ pm.fill(prefsData->DFrameAnnotationColor);
+ colorFrameAnnotation = prefsData->DFrameAnnotationColor;
+ buttonFrameAnnotation->setText( QString::null );
+ buttonFrameAnnotation->setIcon(pm);
+ pm.fill(prefsData->DPageBorderColor);
+ colorPageBorder = prefsData->DPageBorderColor;
+ buttonSelectedPage->setText( QString::null );
+ buttonSelectedPage->setIcon(pm);
+ pm.fill(prefsData->DControlCharColor);
+ colorControlChars = prefsData->DControlCharColor;
+ buttonControlChars->setText( QString::null );
+ buttonControlChars->setIcon(pm);
+ checkShowPageShadow->setChecked(prefsData->showPageShadow);
+ checkUnprintable->setChecked( prefsData->marginColored );
+ checkPictures->setChecked(guidesSettings.showPic);
+ checkLink->setChecked(guidesSettings.linkShown);
+ checkControl->setChecked(guidesSettings.showControls);
+ checkFrame->setChecked(guidesSettings.framesShown);
+ checkLayerM->setChecked(guidesSettings.layerMarkersShown);
+ checkRuler->setChecked(guidesSettings.rulerMode);
+ checkBleed->setChecked(guidesSettings.showBleed);
+ topScratch->setDecimals( decimals );
+ topScratch->setMaximum(1000);
+ topScratch->setNewUnit(docUnitIndex);
+ topScratch->setValue(scratch.Top * unitRatio);
+ leftScratch->setMaximum(1000);
+ leftScratch->setNewUnit(docUnitIndex);
+ leftScratch->setValue(scratch.Left * unitRatio);
+ bottomScratch->setMaximum(1000);
+ bottomScratch->setNewUnit(docUnitIndex);
+ bottomScratch->setValue(scratch.Bottom * unitRatio);
+ rightScratch->setDecimals( decimals );
+ rightScratch->setMaximum(1000);
+ rightScratch->setNewUnit(docUnitIndex);
+ rightScratch->setValue(scratch.Right * unitRatio);
+ gapHorizontal->setSuffix( unitSuffix );
+ gapHorizontal->setDecimals( decimals );
+ gapHorizontal->setMaximum(1000);
+ gapVertical->setSuffix( unitSuffix );
+ gapVertical->setDecimals( decimals );
+ gapVertical->setMaximum(1000);
+ CaliSlider->setValue(qRound(100 * DisScale) - 150);
+ CaliAnz->setText(QString::number(qRound(DisScale*72.0))+ tr(" dpi"));
+ rulerUnitCombo->clear();
+ rulerUnitCombo->addItems(unitGetTextUnitList());
+ rulerUnitCombo->setCurrentIndex(docUnitIndex);
+ drawRuler();
+}
+
+void TabDisplay::unitChange(int docUnitIx)
+{
+ docUnitIndex = docUnitIx;
+ topScratch->setNewUnit(docUnitIndex);
+ bottomScratch->setNewUnit(docUnitIndex);
+ leftScratch->setNewUnit(docUnitIndex);
+ rightScratch->setNewUnit(docUnitIndex);
+ gapVertical->setNewUnit(docUnitIndex);
+ gapHorizontal->setNewUnit(docUnitIndex);
+ drawRuler();
+}
+
+void TabDisplay::changePaperColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorPaper, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorPaper = neu;
+ backColor->setIcon(pm);
+ }
+}
+
+void TabDisplay::setPaperColor(QColor neu)
+{
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorPaper = neu;
+ backColor->setIcon(pm);
+ }
+}
+
+void TabDisplay::setMarginColored(bool colored)
+{
+ checkUnprintable->setChecked(colored);
+}
+
+void TabDisplay::restoreDisScale()
+{
+ disconnect(CaliSlider, SIGNAL(valueChanged(int)), this, SLOT(setDisScale()));
+ int dpi = qApp->desktop()->logicalDpiX();
+ if ((dpi < 60) || (dpi > 250))
+ dpi = 72;
+ DisScale = dpi / 72.0;
+ CaliSlider->setValue(qRound(100 * DisScale) - 150);
+ drawRuler();
+ CaliAnz->setText(QString::number(qRound(DisScale*72.0))+ tr(" dpi"));
+ connect(CaliSlider, SIGNAL(valueChanged(int)), this, SLOT(setDisScale()));
+}
+
+void TabDisplay::setDisScale()
+{
+ DisScale = qMax((150.0 + CaliSlider->value()) / 100.0, 0.01);
+ drawRuler();
+ CaliAnz->setText(QString::number(qRound(DisScale*72.0))+ tr(" dpi"));
+}
+
+void TabDisplay::drawRuler()
+{
+ double xl, iter, iter2, maxi;
+ int index = rulerUnitCombo->currentIndex();
+ iter = unitRulerGetIter1FromIndex(index);
+ iter2 = unitRulerGetIter2FromIndex(index);
+ switch (index)
+ {
+ case 0:
+ maxi = 200.0;
+ break;
+ case 1:
+ maxi = iter2;
+ break;
+ case 2:
+ maxi = 2 * iter2;
+ break;
+ case 3:
+ maxi = 240.0;
+ break;
+ case 4:
+ maxi = 240.0;
+ break;
+ default:
+ iter = 10.0;
+ iter2 = iter * 10.0;
+ maxi = 200.0;
+ break;
+ }
+
+ QPixmap pm(qMin(qMax(CaliRuler->width(), qRound(maxi)+30), qRound(maxi*DisScale+30)), 21);
+ pm.fill();
+ QPainter p;
+ p.begin(&pm);
+ p.drawLine(0, 19, pm.width(), 19);
+ p.setBrush(Qt::black);
+ p.setPen(Qt::black);
+ p.scale(DisScale, 1.0);
+ for (xl = 0; xl < maxi; xl += iter)
+ p.drawLine(QPointF(xl, 13.0), QPointF(xl, 19.0));
+ for (xl = 0; xl < maxi+10; xl += iter2)
+ {
+ p.drawLine(QPointF(xl, 6.0), QPointF(xl, 19.0));
+ p.save();
+ p.scale(1.0 / DisScale, 1.0);
+ switch (index)
+ {
+ case 2:
+ case 4:
+ p.drawText(static_cast<int>((xl+qRound(2/DisScale)) * DisScale), 12, QString::number(xl / iter2));
+ break;
+ case 3:
+ case 5:
+ p.drawText(static_cast<int>((xl+qRound(2/DisScale)) * DisScale), 12, QString::number(xl / iter));
+ break;
+ default:
+ p.drawText(static_cast<int>((xl+qRound(2/DisScale)) * DisScale), 12, QString::number(xl / iter * 10));
+ break;
+ }
+ p.restore();
+ }
+ p.end();
+ CaliRuler->setPixmap(pm);
+}
+
+void TabDisplay::setDocSetupMode()
+{
+ CaliGroup->hide();
+ selectedPageBorderLabel->hide();
+ buttonSelectedPage->hide();
+ groupObjFrame->hide();
+ textColorGroup->hide();
+ checkShowPageShadow->hide();
+}
+
+void TabDisplay::changeFrameColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorFrame, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorFrame = neu;
+ buttonFrameSelected->setIcon(pm);
+ }
+}
+
+void TabDisplay::changeNormFrameColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorFrameNorm, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorFrameNorm = neu;
+ buttonFrameNormal->setIcon(pm);
+ }
+}
+
+void TabDisplay::changeGroupFrameColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorFrameGroup, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorFrameGroup = neu;
+ buttonFrameGrouped->setIcon(pm);
+ }
+}
+
+void TabDisplay::changeChainFrameColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorFrameLinked, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorFrameLinked = neu;
+ buttonFrameLinked->setIcon(pm);
+ }
+}
+
+void TabDisplay::changeLockFrameColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorFrameLocked, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorFrameLocked = neu;
+ buttonFrameLocked->setIcon(pm);
+ }
+}
+
+void TabDisplay::changeAnnotFrameColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorFrameAnnotation, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorFrameAnnotation = neu;
+ buttonFrameAnnotation->setIcon(pm);
+ }
+}
+
+void TabDisplay::changePageBorderColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorPageBorder, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorPageBorder = neu;
+ buttonSelectedPage->setIcon(pm);
+ }
+}
+
+void TabDisplay::changeControlCharsColor()
+{
+ QColor neu = QColor();
+ neu = QColorDialog::getColor(colorControlChars, this);
+ if (neu.isValid())
+ {
+ QPixmap pm(54, 14);
+ pm.fill(neu);
+ colorControlChars = neu;
+ buttonControlChars->setIcon(pm);
+ }
+}