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())); }