void MarginWidget::setMarginsToPrinterMargins() { UsePrinterMarginsDialog upm(parentWidget(), m_pageSize, unitGetRatioFromIndex(m_unitIndex), unitGetSuffixFromIndex(m_unitIndex)); if (upm.exec()) { double t,b,l,r; upm.getNewPrinterMargins(t,b,l,r); presetCombo->setCurrentIndex(PresetLayout::none); marginData.setTop(t); marginData.setBottom(b); marginData.setLeft(l); marginData.setRight(r); updateMarginSpinValues(); bottomR->setMaximum((qMax(0.0, pageHeight - t) * m_unitRatio)); topR->setMaximum((qMax(0.0, pageHeight - b) * m_unitRatio)); rightR->setMaximum((qMax(0.0, pageWidth - l) * m_unitRatio)); leftR->setMaximum((qMax(0.0, pageWidth - r) * m_unitRatio)); rightR->setEnabled(true); topR->setEnabled(true); bottomR->setEnabled(true); } }
void MarginWidget::setNewMargins(MarginStruct &m) { disconnect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); disconnect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); disconnect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); disconnect(rightR, SIGNAL(valueChanged(double)), this, SLOT(setRight())); marginData=m; updateMarginSpinValues(); connect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); connect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); connect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); connect(rightR, SIGNAL(valueChanged(double)), this, SLOT(setRight())); }
void MarginWidget::setBottom() { double newVal = bottomR->value() / m_unitRatio; topR->setMaximum(qMax(0.0, pageHeight * m_unitRatio - bottomR->value())); if (linkMargins->isChecked() && savedPresetItem==PresetLayout::none) { marginData.set(newVal, newVal, newVal, newVal); updateMarginSpinValues(); } else marginData.setBottom(newVal); setPreset(); }
void MarginWidget::setRight() { double newVal = rightR->value() / m_unitRatio; leftR->setMaximum(qMax(0.0, pageWidth * m_unitRatio - rightR->value())); if (linkMargins->isChecked() && savedPresetItem==PresetLayout::none) { marginData.set(newVal, newVal, newVal, newVal); updateMarginSpinValues(); } else marginData.setRight(newVal); setPreset(); }
void NewMarginWidget::setLeft() { double newVal = leftMarginSpinBox->value() / m_unitRatio; rightMarginSpinBox->setMaximum(qMax(0.0, pageWidth * m_unitRatio - leftMarginSpinBox->value())); if (marginLinkButton->isChecked() && savedPresetItem==PresetLayout::none) { marginData.set(newVal, newVal, newVal, newVal); updateMarginSpinValues(); } else marginData.setLeft(newVal); setPreset(); }
void NewMarginWidget::setPreset() { if ((m_flags & ShowPreset) == 0) return; leftMarginSpinBox->blockSignals(true); rightMarginSpinBox->blockSignals(true); topMarginSpinBox->blockSignals(true); bottomMarginSpinBox->blockSignals(true); if (savedPresetItem==PresetLayout::none) savedMarginData=marginData; int item = presetLayoutComboBox->currentIndex(); MarginStruct marg = presetLayoutComboBox->getMargins(item, pageWidth, pageHeight, leftMarginSpinBox->value() / m_unitRatio); facingPages ? presetLayoutComboBox->setEnabled(true) : presetLayoutComboBox->setEnabled(false); bool restoringValues=false; if (item==PresetLayout::none && savedPresetItem!=PresetLayout::none) { marg=savedMarginData; restoringValues=true; } if (restoringValues || (presetLayoutComboBox->needUpdate() && facingPages)) { marginData.set(qMax(0.0, marg.top()), qMax(0.0, marg.left()), qMax(0.0, marg.bottom()), qMax(0.0, marg.right())); updateMarginSpinValues(); bottomMarginSpinBox->setMaximum(qMax(0.0, pageHeight * m_unitRatio - topMarginSpinBox->value())); topMarginSpinBox->setMaximum(qMax(0.0, pageHeight * m_unitRatio - bottomMarginSpinBox->value())); rightMarginSpinBox->setMaximum(qMax(0.0, pageWidth * m_unitRatio - leftMarginSpinBox->value())); leftMarginSpinBox->setMaximum(qMax(0.0, pageWidth * m_unitRatio - rightMarginSpinBox->value())); rightMarginSpinBox->setEnabled(restoringValues); topMarginSpinBox->setEnabled(restoringValues); bottomMarginSpinBox->setEnabled(restoringValues); } else { rightMarginSpinBox->setEnabled(true); topMarginSpinBox->setEnabled(true); bottomMarginSpinBox->setEnabled(true); } if (pageType == 1) rightMarginSpinBox->setEnabled(false); leftMarginSpinBox->setEnabled(item != PresetLayout::nineparts); if (item!=PresetLayout::none) marginLinkButton->setChecked(false); marginLinkButton->setEnabled(item==PresetLayout::none || !presetLayoutComboBox->isEnabled()); leftMarginSpinBox->blockSignals(false); rightMarginSpinBox->blockSignals(false); topMarginSpinBox->blockSignals(false); bottomMarginSpinBox->blockSignals(false); savedPresetItem=item; }
void MarginWidget::setPreset() { disconnect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); disconnect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); disconnect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); disconnect(rightR, SIGNAL(valueChanged(double)), this, SLOT(setRight())); if (savedPresetItem==PresetLayout::none) savedMargins=marginData; int item = presetCombo->currentIndex(); MarginStruct marg = presetCombo->getMargins(item, pageWidth, pageHeight, leftR->value() / m_unitRatio); presetCombo->setEnabled(facingPages); bool restoringValues=false; if (item==PresetLayout::none && savedPresetItem!=PresetLayout::none) { marg=savedMargins; restoringValues=true; } if (restoringValues || (presetCombo->needUpdate() && facingPages)) { marginData.set(qMax(0.0, marg.top()), qMax(0.0, marg.left()), qMax(0.0, marg.bottom()), qMax(0.0, marg.right())); updateMarginSpinValues(); bottomR->setMaximum(qMax(0.0, pageHeight * m_unitRatio - topR->value())); topR->setMaximum(qMax(0.0, pageHeight * m_unitRatio - bottomR->value())); rightR->setMaximum(qMax(0.0, pageWidth * m_unitRatio - leftR->value())); leftR->setMaximum(qMax(0.0, pageWidth * m_unitRatio - rightR->value())); rightR->setEnabled(restoringValues); topR->setEnabled(restoringValues); bottomR->setEnabled(restoringValues); } else { rightR->setEnabled(true); topR->setEnabled(true); bottomR->setEnabled(true); } if (pageType == 1) rightR->setEnabled(false); leftR->setEnabled(item != PresetLayout::nineparts); if (item!=PresetLayout::none) linkMargins->setChecked(false); linkMargins->setEnabled(item==PresetLayout::none || !presetCombo->isEnabled()); connect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); connect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); connect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); connect(rightR, SIGNAL(valueChanged(double)), this, SLOT(setRight())); savedPresetItem=item; }
void NewMarginWidget::setup(const MarginStruct& margs, int layoutType, int unitIndex, int flags) { marginData=savedMarginData=margs; m_unitIndex=unitIndex; m_unitRatio=unitGetRatioFromIndex(unitIndex); m_flags=flags; leftMarginSpinBox->setMaximum(1000); rightMarginSpinBox->setMaximum(1000); topMarginSpinBox->setMaximum(1000); bottomMarginSpinBox->setMaximum(1000); leftMarginSpinBox->init(unitIndex); rightMarginSpinBox->init(unitIndex); topMarginSpinBox->init(unitIndex); bottomMarginSpinBox->init(unitIndex); updateMarginSpinValues(); if ((m_flags & ShowPreset) == 0) { presetLayoutComboBox->blockSignals(true); presetLayoutComboBox->resize(0,0); presetLayoutLabel->resize(0,0); presetLayoutComboBox->hide(); presetLayoutLabel->hide(); gridLayout->removeWidget(presetLayoutComboBox); gridLayout->removeWidget(presetLayoutLabel); } if ((m_flags & ShowPrinterMargins) == 0) { printerMarginsPushButton->blockSignals(true); printerMarginsPushButton->resize(0,0); printerMarginsPushButton->hide(); gridLayout->removeWidget(printerMarginsPushButton); } setFacingPages(!(layoutType == singlePage)); gridLayout->invalidate(); languageChange(); connect(topMarginSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setTop())); connect(bottomMarginSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); connect(leftMarginSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); connect(rightMarginSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setRight())); connect(presetLayoutComboBox, SIGNAL(activated(int)), this, SLOT(setPreset())); connect(marginLinkButton, SIGNAL(clicked()), this, SLOT(slotLinkMargins())); connect(printerMarginsPushButton, SIGNAL(clicked()), this, SLOT(setMarginsToPrinterMargins())); }
MarginWidget::MarginWidget( QWidget* parent, QString /*title*/, const MarginStruct* margs, int unitIndex, bool showChangeAll, bool showBleeds) : QTabWidget(parent), pageType(0) { marginData=*margs; savedMargins=*margs; savedPresetItem=PresetLayout::none;//we dont recheck if we are using a layout but always start at none facingPages = false; useBleeds = showBleeds; marginPage = new QWidget(this); presetCombo = new PresetLayout(marginPage); presetLabel = new QLabel( tr("Preset Layouts:"), marginPage); presetLabel->setBuddy(presetCombo); m_unitIndex=unitIndex; m_unitRatio=unitGetRatioFromIndex(unitIndex); leftR = new ScrSpinBox( 0, 1000, marginPage, unitIndex ); rightR = new ScrSpinBox( 0, 1000, marginPage, unitIndex ); topR = new ScrSpinBox( 0, 1000, marginPage, unitIndex ); bottomR = new ScrSpinBox( 0, 1000, marginPage, unitIndex ); updateMarginSpinValues(); bText = new QLabel( tr( "&Bottom:" ), marginPage); bText->setBuddy(bottomR); tText = new QLabel( tr( "&Top:" ), marginPage); tText->setBuddy(topR); rText = new QLabel( tr( "&Right:" ), marginPage); rText->setBuddy(rightR); lText = new QLabel( tr( "&Left:" ), marginPage); lText->setBuddy(leftR); linkMargins = new LinkButton( marginPage ); linkMargins->setCheckable( true ); linkMargins->setChecked(false); linkMargins->setAutoRaise( true ); linkMargins->setMinimumSize( QSize( 15, 0 ) ); linkMargins->setMaximumSize( QSize( 15, 32767 ) ); // layout GroupLayout = new QGridLayout( marginPage ); GroupLayout->setSpacing( 5 ); GroupLayout->setMargin( 10 ); GroupLayout->addWidget(presetLabel, 0, 0); GroupLayout->addWidget(presetCombo, 0, 1); GroupLayout->addWidget( leftR, 1, 1 ); GroupLayout->addWidget( rightR, 2, 1 ); GroupLayout->addWidget( topR, 3, 1 ); GroupLayout->addWidget( bottomR, 4, 1 ); GroupLayout->addWidget( lText, 1, 0 ); GroupLayout->addWidget( rText, 2, 0 ); GroupLayout->addWidget( tText, 3, 0 ); GroupLayout->addWidget( bText, 4, 0 ); GroupLayout->addWidget( linkMargins, 1, 2, 4, 1 ); if (showChangeAll) { marginsForPagesLayout = new QHBoxLayout; marginsForPagesLayout->setMargin(5); marginsForPagesLayout->setSpacing(5); marginsForPages = new QLabel( tr( "Apply settings to:" ), marginPage ); marginsForPagesLayout->addWidget(marginsForPages); marginsForAllPages = new QCheckBox( marginPage ); marginsForAllPages->setText( tr( "All Document Pages" ) ); marginsForAllPages->setChecked( false ); marginsForPagesLayout->addWidget(marginsForAllPages); marginsForAllMasterPages = new QCheckBox( marginPage ); marginsForAllMasterPages->setText( tr( "All Master Pages" ) ); marginsForAllMasterPages->setChecked( false ); marginsForPagesLayout->addWidget(marginsForAllMasterPages); GroupLayout->addLayout( marginsForPagesLayout, 6, 0, 1, 2 ); marginsForAllPages->setToolTip( "<qt>" + tr( "Apply the margin changes to all existing pages in the document" ) + "</qt>" ); marginsForAllMasterPages->setToolTip( "<qt>" + tr( "Apply the margin changes to all existing master pages in the document" ) + "</qt>" ); } else { marginsForPages=NULL; marginsForAllPages=NULL; marginsForAllMasterPages=NULL; } usePrinterMarginsButton=NULL; #if defined(HAVE_CUPS) || defined(_WIN32) usePrinterMarginsButton=new QPushButton( tr("Printer Margins..."),marginPage ); GroupLayout->addWidget( usePrinterMarginsButton, 5, 1 ); usePrinterMarginsButton->setToolTip( "<qt>" + tr( "Import the margins for the selected page size from the available printers" ) + "</qt>"); connect(usePrinterMarginsButton, SIGNAL(clicked()), this, SLOT(setMarginsToPrinterMargins())); #endif addTab(marginPage, tr("Margin Guides")); if (useBleeds) { bleedPage = new QWidget(this); BleedGroupLayout = new QGridLayout( bleedPage ); BleedGroupLayout->setSpacing( 5 ); BleedGroupLayout->setMargin( 10 ); BleedGroupLayout->setAlignment( Qt::AlignTop ); BleedTxt3 = new QLabel( bleedPage ); BleedGroupLayout->addWidget( BleedTxt3, 0, 0 ); BleedLeft = new ScrSpinBox( 0, 3000*m_unitRatio, bleedPage, unitIndex ); BleedGroupLayout->addWidget( BleedLeft, 0, 1 ); BleedTxt4 = new QLabel( bleedPage ); BleedGroupLayout->addWidget( BleedTxt4, 1, 0 ); BleedRight = new ScrSpinBox( 0, 3000*m_unitRatio, bleedPage, unitIndex ); BleedGroupLayout->addWidget( BleedRight, 1, 1 ); BleedTxt1 = new QLabel( bleedPage ); BleedTxt1->setText( tr( "Top:" ) ); BleedGroupLayout->addWidget( BleedTxt1, 2, 0 ); BleedTop = new ScrSpinBox( 0, 3000*m_unitRatio, bleedPage, unitIndex ); BleedGroupLayout->addWidget( BleedTop, 2, 1 ); BleedTxt2 = new QLabel( bleedPage ); BleedTxt2->setText( tr( "Bottom:" ) ); BleedGroupLayout->addWidget( BleedTxt2, 3, 0 ); BleedBottom = new ScrSpinBox( 0, 3000*m_unitRatio, bleedPage, unitIndex ); BleedGroupLayout->addWidget( BleedBottom, 3, 1 ); linkBleeds = new LinkButton( bleedPage ); /** Fix Me to move this to the prefsmanager.cpp someday */ linkBleeds->setCheckable( true ); linkBleeds->setChecked(true); linkBleeds->setAutoRaise( true ); linkBleeds->setMinimumSize( QSize( 15, 0 ) ); linkBleeds->setMaximumSize( QSize( 15, 32767 ) ); BleedGroupLayout->addWidget( linkBleeds, 0, 2, 4, 1 ); BleedTop->setToolTip( "<qt>" + tr( "Distance for bleed from the top of the physical page" ) + "</qt>" ); BleedBottom->setToolTip( "<qt>" + tr( "Distance for bleed from the bottom of the physical page" ) + "</qt>" ); BleedLeft->setToolTip( "<qt>" + tr( "Distance for bleed from the left of the physical page" ) + "</qt>" ); BleedRight->setToolTip( "<qt>" + tr( "Distance for bleed from the right of the physical page" ) + "</qt>"); linkBleeds->setToolTip( "<qt>" + tr( "Ensure all bleeds have the same value" ) + "</qt>"); connect(BleedLeft, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); connect(BleedRight, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); connect(BleedTop, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); connect(BleedBottom, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); connect(linkBleeds, SIGNAL(clicked()), this, SLOT(slotLinkBleeds())); addTab(bleedPage, tr("Bleeds")); } // hints topR->setToolTip( "<qt>" + tr( "Distance between the top margin guide and the edge of the page" ) + "</qt>"); bottomR->setToolTip( "<qt>" + tr( "Distance between the bottom margin guide and the edge of the page" ) + "</qt>"); leftR->setToolTip( "<qt>" + tr( "Distance between the left margin guide and the edge of the page. If a double-sided, 3 or 4-fold layout is selected, this margin space can be used to achieve the correct margins for binding.") + "</qt>"); rightR->setToolTip( "<qt>" + tr( "Distance between the right margin guide and the edge of the page. If a double-sided, 3 or 4-fold layout is selected, this margin space can be used to achieve the correct margins for binding.") + "</qt>"); linkMargins->setToolTip( "<qt>" + tr( "Ensure all margins have the same value") + "</qt>"); // signals&slots connect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); connect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); connect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); connect(rightR, SIGNAL(valueChanged(double)), this, SLOT(setRight())); connect(presetCombo, SIGNAL(activated(int)), this, SLOT(setPreset())); connect(linkMargins, SIGNAL(clicked()), this, SLOT(slotLinkMargins())); }
void NewMarginWidget::setNewValues(const MarginStruct& margs) { marginData=savedMarginData=margs; updateMarginSpinValues(); }