Scribus Developer Documentation - API
logo-pen

Scribus Developer Documentation - API

reformdoc.cpp

Go to the documentation of this file.
00001 /*
00002 For general Scribus (>=1.3.2) copyright and licensing information please refer
00003 to the COPYING file provided with the program. Following this notice may exist
00004 a copyright and/or license notice that predates the release of Scribus 1.3.2
00005 for which a new license (GPL+exception) is in place.
00006 */
00007 #include "reformdoc.h"
00008 
00009 #include <QColorDialog>
00010 #include <QCursor>
00011 #include <QSpinBox>
00012 #include <QToolTip>
00013 #include <QPixmap>
00014 #include <QStackedWidget>
00015 
00016 #include "arrowchooser.h"
00017 #include "cmsprefs.h"
00018 #include "colorcombo.h"
00019 #include "commonstrings.h"
00020 #include "docinfo.h"
00021 #include "docitemattrprefs.h"
00022 #include "docsections.h"
00023 #include "fontcombo.h"
00024 #include "fontprefs.h"
00025 #include "hyphenator.h"
00026 #include "hysettings.h"
00027 #include "linecombo.h"
00028 #include "marginwidget.h"
00029 #include "page.h"
00030 #include "pagelayout.h"
00031 #include "pagesize.h"
00032 #include "polygonwidget.h"
00033 #include "prefsmanager.h"
00034 #include "propertiespalette.h"
00035 #include "sccombobox.h"
00036 #include "scribus.h"
00037 #include "scribuscore.h"
00038 #include "scrspinbox.h"
00039 #include "tabcheckdoc.h"
00040 #include "tabdisplay.h"
00041 #include "tabdocument.h"
00042 #include "tabguides.h"
00043 #include "tabpdfoptions.h"
00044 #include "tabtools.h"
00045 #include "tabtypography.h"
00046 #include "tocindexprefs.h"
00047 #include "units.h"
00048 #include "units.h"
00049 #include "util_icon.h"
00050 
00051 
00052 
00053 ReformDoc::ReformDoc( QWidget* parent, ScribusDoc* doc ) : PrefsDialogBase( parent )
00054 {
00055     saveButton->hide();
00056     docUnitIndex = doc->unitIndex();
00057     currDoc = doc;
00058     ScMW = (ScribusMainWindow*)parent;
00059     unitRatio = doc->unitRatio();
00060     QString ein = unitGetSuffixFromIndex(docUnitIndex);
00061     decimals = unitGetDecimalsFromIndex(docUnitIndex);
00062 
00063     setWindowTitle( tr( "Document Setup" ) );
00064     tabPage = new TabDocument( prefsWidgets, "tab", true );
00065     tabPage->hideReform();
00066     addItem( tr("Document"), loadIcon("scribusdoc.png"), tabPage);
00067 
00068     docInfos = new DocInfos(prefsWidgets, doc->documentInfo);
00069     addItem( tr("Document Information"), loadIcon("documentinfo32.png"), docInfos);
00070 
00071     tabGuides = new TabGuides(prefsWidgets, &doc->guidesSettings, &doc->typographicSettings, docUnitIndex);
00072     addItem( tr("Guides"), loadIcon("guides.png"), tabGuides);
00073 
00074     tabView = new TabDisplay( prefsWidgets, "tabView" );
00075     tabView->setDocSetupMode();
00076     addItem( tr("Display"), loadIcon("screen.png"), tabView);
00077 
00078     tabTypo = new TabTypograpy( prefsWidgets, &doc->typographicSettings);
00079     addItem( tr("Typography"), loadIcon("typography.png"), tabTypo);
00080 
00081     tabTools = new TabTools( prefsWidgets, &doc->toolSettings, docUnitIndex, doc);
00082     addItem( tr("Tools"), loadIcon("tools.png"), tabTools);
00083 
00084     tabHyphenator = new HySettings(prefsWidgets, &ScMW->LangTransl);
00085     addItem( tr("Hyphenator"), loadIcon("hyphenate.png"), tabHyphenator);
00086 
00087     tabFonts = new FontPrefs(prefsWidgets, true, PrefsManager::instance()->preferencesLocation(), doc);
00088     addItem( tr("Fonts"), loadIcon("font.png"), tabFonts);
00089 
00090     tabDocChecker = new TabCheckDoc(prefsWidgets, doc->checkerProfiles, doc->curCheckProfile);
00091     addItem( tr("Preflight Verifier"), loadIcon("checkdoc.png"), tabDocChecker);
00092 
00093     tabPDF = new TabPDFOptions( prefsWidgets, doc->PDF_Options, PrefsManager::instance()->appPrefs.AvailFonts,
00094                                 ScCore->PDFXProfiles, doc->UsedFonts, doc->PDF_Options.PresentVals,
00095                                 docUnitIndex, doc->pageHeight, doc->pageWidth, doc );
00096     addItem( tr("PDF Export"), loadIcon("acroread32.png"), tabPDF);
00097 
00098     tabDocItemAttributes = new DocumentItemAttributes(prefsWidgets);
00099     docAttributesList=tabDocItemAttributes->getDocAttributesNames();
00100     tabDocItemAttributes->setup(&doc->docItemAttributes);
00101     addItem( tr("Document Item Attributes"), loadIcon("docattributes.png"), tabDocItemAttributes);
00102 
00103     tabTOCIndexPrefs = new TOCIndexPrefs( prefsWidgets );
00104     tabTOCIndexPrefs->setupItemAttrs( docAttributesList );
00105     tabTOCIndexPrefs->setup(&(currDoc->docToCSetups), currDoc);
00106     addItem( tr("Table of Contents and Indexes"), loadIcon("tabtocindex.png"), tabTOCIndexPrefs);
00107 
00108     tabDocSections = new DocSections(prefsWidgets);
00109     tabDocSections->setup(currDoc->sections, currDoc->DocPages.count()-1);
00110     addItem( tr("Sections"), loadIcon("tabtocindex.png"), tabDocSections);
00111 
00112     int cmsTab = 0;
00113     if (ScCore->haveCMS())
00114     {
00115         tabColorManagement = new CMSPrefs(prefsWidgets, &doc->CMSSettings, &ScCore->InputProfiles, &ScCore->InputProfilesCMYK, &ScCore->PrinterProfiles, &ScCore->MonitorProfiles);
00116         cmsTab = addItem( tr("Color Management"), loadIcon("blend.png"), tabColorManagement);
00117     }
00118 
00119     setDS(doc->currentPageLayout);
00120 
00121     // signals and slots connections
00122     connect(tabPage->docLayout, SIGNAL( selectedLayout(int) ), this, SLOT( setDS(int) ) );
00123     connect(tabPage->unitCombo, SIGNAL(activated(int)), this, SLOT(unitChange()));
00124     connect(backToDefaults, SIGNAL(clicked()), this, SLOT(restoreDefaults()));
00125     connect(applyChangesButton, SIGNAL(clicked()), this, SLOT(applyChangesButton_clicked()));
00126     connect(this, SIGNAL(aboutToShow(QWidget *)), this, SLOT(showWidgetInStack(QWidget *)));
00127 
00128     if (ScCore->haveCMS())
00129     {
00130         prefsWidgets->setCurrentIndex(cmsTab);
00131         connect(tabColorManagement, SIGNAL(cmsOn(bool )), this, SLOT(switchCMS(bool )));
00132     }
00133     resize( minimumSizeHint() );
00134     prefsSelection->arrangeIcons();
00135     prefsSelection->item(0)->setSelected(true);
00136     itemSelected(prefsSelection->item(0));
00137     restoreDefaults();
00138 }
00139 
00140 void ReformDoc::restoreDefaults()
00141 {
00142     ApplicationPrefs* prefsData=&(PrefsManager::instance()->appPrefs);
00143     tabPage->restoreDefaults(currDoc);
00144     tabView->restoreDefaults(prefsData, currDoc->guidesSettings, currDoc->pageSets, currDoc->currentPageLayout, currDoc->scratch);
00145     tabView->gapHorizontal->setValue(currDoc->GapHorizontal); // * unitRatio);
00146     tabView->gapVertical->setValue(currDoc->GapVertical); // * unitRatio);
00147     tabView->setPaperColor(currDoc->papColor);
00148     tabHyphenator->restoreDefaults(currDoc);
00149     tabGuides->restoreDefaults(&currDoc->guidesSettings, &currDoc->typographicSettings, docUnitIndex);
00150     tabTypo->restoreDefaults(&currDoc->typographicSettings);
00151     tabTools->restoreDefaults(&currDoc->toolSettings, docUnitIndex);
00152     tabFonts->restoreDefaults();
00153     tabDocChecker->restoreDefaults(&currDoc->checkerProfiles, currDoc->curCheckProfile);
00154     tabPDF->restoreDefaults(currDoc->PDF_Options, PrefsManager::instance()->appPrefs.AvailFonts,
00155                             ScCore->PDFXProfiles, currDoc->UsedFonts, currDoc->PDF_Options.PresentVals,
00156                             docUnitIndex, currDoc->pageHeight, currDoc->pageWidth, currDoc, false);
00157     if (ScCore->haveCMS())
00158         tabColorManagement->restoreDefaults(&currDoc->CMSSettings, &ScCore->InputProfiles,
00159                                          &ScCore->InputProfilesCMYK,
00160                                          &ScCore->PrinterProfiles, &ScCore->MonitorProfiles);
00161     docInfos->restoreDefaults();
00162 
00163     unitChange();
00164 }
00165 
00166 void ReformDoc::unitChange()
00167 {
00168     double oldUnitRatio = unitRatio;
00169     docUnitIndex = tabPage->unitCombo->currentIndex();
00170     unitRatio = unitGetRatioFromIndex(docUnitIndex);
00171     QString suffix = unitGetSuffixFromIndex(docUnitIndex);
00172     double invUnitConversion = 1.0 / oldUnitRatio * unitRatio;
00173     tabPage->unitChange();
00174     tabGuides->unitChange(suffix, docUnitIndex, invUnitConversion);
00175     tabView->unitChange(docUnitIndex);
00176     tabTools->unitChange(docUnitIndex);
00177     tabPDF->unitChange(suffix, docUnitIndex, invUnitConversion);
00178 }
00179 
00180 void ReformDoc::setDS(int layout)
00181 {
00182     tabPage->marginGroup->setFacingPages(!(layout == singlePage));
00183     tabPage->choosenLayout = layout;
00184     tabPage->docLayout->firstPage->setCurrentIndex(currDoc->pageSets[tabPage->choosenLayout].FirstPage);
00185 //  tabView->gapHorizontal->setValue(currDoc->pageSets[tabPage->choosenLayout].GapHorizontal * unitRatio);
00186 //  tabView->gapVertical->setValue(currDoc->pageSets[tabPage->choosenLayout].GapBelow * unitRatio);
00187 //  tabView->gapHorizontal->setValue(currDoc->GapHorizontal * unitRatio);
00188 //  tabView->gapVertical->setValue(currDoc->GapVertical * unitRatio);
00189 }
00190 
00191 void ReformDoc::switchCMS(bool enable)
00192 {
00193     tabPDF->enableCMS(enable);
00194 }
00195 
00196 void ReformDoc::showWidgetInStack(QWidget *widgetToShow)
00197 {
00198     //Update the attributes list in TOC setup
00199     if (widgetToShow==tabTOCIndexPrefs)
00200         tabTOCIndexPrefs->setupItemAttrs( tabDocItemAttributes->getDocAttributesNames() );
00201     if (widgetToShow == tabTools)
00202         tabTools->enableFontPreview(true);
00203 }
00204 
00205 const int ReformDoc::getSelectedUnit()
00206 {
00207     return tabPage->unitCombo->currentIndex();
00208 }
00209 
00210 const bool ReformDoc::colorManagementSettingsChanged()
00211 {
00212     return ScCore->haveCMS() && tabColorManagement->changed;
00213 }
00214 
00215 const bool ReformDoc::imageResolutionChanged()
00216 {
00217     return viewToRecalcPictureRes;
00218 }
00219 
00220 void ReformDoc::updateDocumentSettings()
00221 {
00222     double tpr2, lr2, rr2, br2;
00223     tpr2 = tabPage->marginGroup->top();
00224     br2 = tabPage->marginGroup->bottom();
00225     lr2 = tabPage->marginGroup->left();
00226     rr2 = tabPage->marginGroup->right();
00227     int fp = tabPage->choosenLayout;
00228     currDoc->pageSets[fp].FirstPage = tabPage->docLayout->firstPage->currentIndex();
00229 //  currDoc->pageSets[fp].GapHorizontal = tabView->gapHorizontal->value() / currDoc->unitRatio();
00230     currDoc->GapVertical = tabView->gapVertical->value() / currDoc->unitRatio();
00231     currDoc->GapHorizontal = tabView->gapHorizontal->value() / currDoc->unitRatio();
00232 //  currDoc->pageSets[fp].GapBelow = tabView->gapVertical->value() / currDoc->unitRatio();
00233     //currDoc->FirstPnum = pageNumber->value();
00234     currDoc->resetPage(tpr2, lr2, rr2, br2, fp);
00235     currDoc->PageOri = tabPage->pageOrientationComboBox->currentIndex();
00236     currDoc->m_pageSize = tabPage->prefsPageSizeName;
00237     currDoc->pageWidth = tabPage->pageW;
00238     currDoc->pageHeight = tabPage->pageH;
00239     double TopD = tabView->topScratch->value() / currDoc->unitRatio() - currDoc->scratch.Top;
00240     double LeftD = tabView->leftScratch->value() / currDoc->unitRatio() - currDoc->scratch.Left;
00241     currDoc->scratch.Bottom = tabView->bottomScratch->value() / currDoc->unitRatio();
00242     currDoc->scratch.Left = tabView->leftScratch->value() / currDoc->unitRatio();
00243     currDoc->scratch.Right = tabView->rightScratch->value() / currDoc->unitRatio();
00244     currDoc->scratch.Top = tabView->topScratch->value() / currDoc->unitRatio();
00245     currDoc->bleeds.Bottom = tabPage->marginGroup->bottomBleed();
00246     currDoc->bleeds.Top = tabPage->marginGroup->topBleed();
00247     currDoc->bleeds.Left = tabPage->marginGroup->leftBleed();
00248     currDoc->bleeds.Right = tabPage->marginGroup->rightBleed();
00249     for (int p = 0; p < currDoc->Pages->count(); ++p)
00250     {
00251         Page *pp = currDoc->Pages->at(p);
00252         if (tabPage->sizeAllPages->isChecked())
00253         {
00254             pp->setInitialWidth(currDoc->pageWidth);
00255             pp->setInitialHeight(currDoc->pageHeight);
00256             pp->setHeight(currDoc->pageHeight);
00257             pp->setWidth(currDoc->pageWidth);
00258             pp->m_pageSize = currDoc->m_pageSize;
00259             pp->PageOri = currDoc->PageOri;
00260         }
00261         if (tabPage->marginGroup->getMarginsForAllPages())
00262         {
00263             pp->initialMargins.Left = lr2;
00264             pp->initialMargins.Right = rr2;
00265             pp->initialMargins.Top = tpr2;
00266             pp->initialMargins.Bottom = br2;
00267         }
00268     }
00269     for (int p = 0; p < currDoc->MasterPages.count(); ++p)
00270     {
00271         Page *pp = currDoc->MasterPages.at(p);
00272         if (tabPage->sizeAllMasterPages->isChecked())
00273         {
00274             pp->setInitialWidth(currDoc->pageWidth);
00275             pp->setInitialHeight(currDoc->pageHeight);
00276             pp->setHeight(currDoc->pageHeight);
00277             pp->setWidth(currDoc->pageWidth);
00278             pp->m_pageSize = currDoc->m_pageSize;
00279             pp->PageOri = currDoc->PageOri;
00280         }
00281         if (tabPage->marginGroup->getMarginsForAllMasterPages())
00282         {
00283             pp->initialMargins.Left = lr2;
00284             pp->initialMargins.Right = rr2;
00285             pp->initialMargins.Top = tpr2;
00286             pp->initialMargins.Bottom = br2;
00287         }
00288         pp->setXOffset(currDoc->scratch.Left);
00289         pp->setYOffset(currDoc->scratch.Top);
00290     }
00291     uint docItemsCount = currDoc->MasterItems.count();
00292     for (uint ite = 0; ite < docItemsCount; ++ite)
00293     {
00294         PageItem *item = currDoc->MasterItems.at(ite);
00295         item->moveBy(LeftD, TopD);
00296         item->setRedrawBounding();
00297     }
00298     currDoc->guidesSettings.before = tabGuides->inBackground->isChecked();
00299     currDoc->marginColored = tabView->checkUnprintable->isChecked();
00300     currDoc->papColor = tabView->colorPaper;
00301     currDoc->guidesSettings.marginsShown = tabGuides->marginBox->isChecked();
00302     currDoc->guidesSettings.showBleed = tabView->checkBleed->isChecked();
00303     currDoc->guidesSettings.framesShown = tabView->checkFrame->isChecked();
00304     currDoc->guidesSettings.layerMarkersShown = tabView->checkLayerM->isChecked();
00305     currDoc->guidesSettings.gridShown = tabGuides->checkGrid->isChecked();
00306     currDoc->guidesSettings.guidesShown = tabGuides->guideBox->isChecked();
00307     currDoc->guidesSettings.baseShown = tabGuides->baselineBox->isChecked();
00308     currDoc->guidesSettings.showPic = tabView->checkPictures->isChecked();
00309     currDoc->guidesSettings.linkShown = tabView->checkLink->isChecked();
00310     currDoc->guidesSettings.showControls = tabView->checkControl->isChecked();
00311     currDoc->guidesSettings.rulerMode = tabView->checkRuler->isChecked();
00312     currDoc->guidesSettings.grabRad = tabGuides->grabDistance->value();
00313     currDoc->guidesSettings.guideRad = tabGuides->snapDistance->value();
00314     currDoc->guidesSettings.minorGrid = tabGuides->minorSpace->value() / currDoc->unitRatio();
00315     currDoc->guidesSettings.majorGrid = tabGuides->majorSpace->value() / currDoc->unitRatio();
00316     currDoc->guidesSettings.minorColor = tabGuides->colorMinorGrid;
00317     currDoc->guidesSettings.majorColor = tabGuides->colorMajorGrid;
00318     currDoc->guidesSettings.margColor = tabGuides->colorMargin;
00319     currDoc->guidesSettings.guideColor = tabGuides->colorGuides;
00320     currDoc->guidesSettings.baseColor = tabGuides->colorBaselineGrid;
00321     currDoc->checkerProfiles = tabDocChecker->checkerProfile;
00322     currDoc->curCheckProfile = tabDocChecker->curCheckProfile->currentText();
00323     currDoc->typographicSettings.valueSuperScript = tabTypo->superDisplacement->value();
00324     currDoc->typographicSettings.scalingSuperScript = tabTypo->superScaling->value();
00325     currDoc->typographicSettings.valueSubScript = tabTypo->subDisplacement->value();
00326     currDoc->typographicSettings.scalingSubScript = tabTypo->subScaling->value();
00327     currDoc->typographicSettings.valueSmallCaps = tabTypo->capsScaling->value();
00328     currDoc->typographicSettings.autoLineSpacing = tabTypo->autoLine->value();
00329     currDoc->typographicSettings.valueBaseGrid = tabGuides->baseGrid->value(); // / currDoc->unitRatio();
00330     currDoc->typographicSettings.offsetBaseGrid = tabGuides->baseOffset->value(); // / currDoc->unitRatio();
00331     currDoc->typographicSettings.valueUnderlinePos = qRound(tabTypo->underlinePos->value() * 10);
00332     currDoc->typographicSettings.valueUnderlineWidth = qRound(tabTypo->underlineWidth->value() * 10);
00333     currDoc->typographicSettings.valueStrikeThruPos = qRound(tabTypo->strikethruPos->value() * 10);
00334     currDoc->typographicSettings.valueStrikeThruWidth = qRound(tabTypo->strikethruWidth->value() * 10);
00335     currDoc->toolSettings.defFont = tabTools->fontComboText->currentText();
00336     currDoc->toolSettings.defSize = tabTools->sizeComboText->currentText().left(2).toInt() * 10;
00337     currDoc->toolSettings.dStrokeText = tabTools->colorComboStrokeText->currentText();
00338     switch (tabTools->tabFillCombo->currentIndex())
00339     {
00340         case 0:
00341             currDoc->toolSettings.tabFillChar = "";
00342             break;
00343         case 1:
00344             currDoc->toolSettings.tabFillChar = ".";
00345             break;
00346         case 2:
00347             currDoc->toolSettings.tabFillChar = "-";
00348             break;
00349         case 3:
00350             currDoc->toolSettings.tabFillChar = "_";
00351             break;
00352         case 4:
00353             currDoc->toolSettings.tabFillChar = tabTools->tabFillCombo->currentText().right(1);
00354             break;
00355     }
00356     if (currDoc->toolSettings.dStrokeText == CommonStrings::tr_NoneColor)
00357         currDoc->toolSettings.dStrokeText = CommonStrings::None;
00358     currDoc->toolSettings.dPenText = tabTools->colorComboText->currentText();
00359     if (currDoc->toolSettings.dPenText == CommonStrings::tr_NoneColor)
00360         currDoc->toolSettings.dPenText = CommonStrings::None;
00361     currDoc->toolSettings.dTextBackGround = tabTools->colorComboTextBackground->currentText();
00362     if (currDoc->toolSettings.dTextBackGround == CommonStrings::tr_NoneColor)
00363         currDoc->toolSettings.dTextBackGround = CommonStrings::None;
00364     currDoc->toolSettings.dTextLineColor = tabTools->colorComboTextLine->currentText();
00365     if (currDoc->toolSettings.dTextLineColor == CommonStrings::tr_NoneColor)
00366         currDoc->toolSettings.dTextLineColor = CommonStrings::None;
00367     currDoc->toolSettings.dTextBackGroundShade = tabTools->shadingTextBack->value();
00368     currDoc->toolSettings.dTextLineShade = tabTools->shadingTextLine->value();
00369     currDoc->toolSettings.dTextPenShade = tabTools->shadingText->value();
00370     currDoc->toolSettings.dTextStrokeShade = tabTools->shadingTextStroke->value();
00371     currDoc->toolSettings.dCols = tabTools->columnsText->value();
00372     currDoc->toolSettings.dGap = tabTools->gapText->value() / currDoc->unitRatio();
00373     currDoc->toolSettings.dTabWidth = tabTools->gapTab->value() / currDoc->unitRatio();
00374     currDoc->toolSettings.dPen = tabTools->colorComboLineShape->currentText();
00375     if (currDoc->toolSettings.dPen == CommonStrings::tr_NoneColor)
00376         currDoc->toolSettings.dPen = CommonStrings::None;
00377     currDoc->toolSettings.dBrush = tabTools->comboFillShape->currentText();
00378     if (currDoc->toolSettings.dBrush == CommonStrings::tr_NoneColor)
00379         currDoc->toolSettings.dBrush = CommonStrings::None;
00380     currDoc->toolSettings.dShade = tabTools->shadingFillShape->value();
00381     currDoc->toolSettings.dShade2 = tabTools->shadingLineShape->value();
00382     currDoc->toolSettings.dLineArt = static_cast<Qt::PenStyle>(tabTools->comboStyleShape->currentIndex()) + 1;
00383     currDoc->toolSettings.dWidth = tabTools->lineWidthShape->value();
00384     currDoc->toolSettings.dStartArrow = tabTools->startArrow->currentIndex();
00385     currDoc->toolSettings.dEndArrow = tabTools->endArrow->currentIndex();
00386     currDoc->toolSettings.magMin = tabTools->minimumZoom->value();
00387     currDoc->toolSettings.magMax = tabTools->maximumZoom->value();
00388     currDoc->toolSettings.magStep = tabTools->zoomStep->value();
00389     currDoc->toolSettings.dPenLine = tabTools->colorComboLine->currentText();
00390     if (currDoc->toolSettings.dPenLine == CommonStrings::tr_NoneColor)
00391         currDoc->toolSettings.dPenLine = CommonStrings::None;
00392     currDoc->toolSettings.dShadeLine = tabTools->shadingLine->value();
00393     currDoc->toolSettings.dLstyleLine = static_cast<Qt::PenStyle>(tabTools->comboStyleLine->currentIndex()) + 1;
00394     currDoc->toolSettings.dWidthLine = tabTools->lineWidthLine->value();
00395     currDoc->toolSettings.dBrushPict = tabTools->comboFillImage->currentText();
00396     if (currDoc->toolSettings.dBrushPict == CommonStrings::tr_NoneColor)
00397         currDoc->toolSettings.dBrushPict = CommonStrings::None;
00398     currDoc->toolSettings.shadePict = tabTools->shadingFillImage->value();
00399     currDoc->toolSettings.scaleX = static_cast<double>(tabTools->scalingHorizontal->value()) / 100.0;
00400     currDoc->toolSettings.scaleY = static_cast<double>(tabTools->scalingVertical->value()) / 100.0;
00401     currDoc->toolSettings.scaleType = tabTools->buttonGroup3->isChecked();
00402     currDoc->toolSettings.aspectRatio = tabTools->checkRatioImage->isChecked();
00403     currDoc->toolSettings.useEmbeddedPath = tabTools->embeddedPath->isChecked();
00404     int haRes = 0;
00405     if (tabTools->checkFullRes->isChecked())
00406         haRes = 0;
00407     if (tabTools->checkNormalRes->isChecked())
00408         haRes = 1;
00409     if (tabTools->checkHalfRes->isChecked())
00410         haRes = 2;
00411     if (currDoc->toolSettings.lowResType != haRes)
00412     {
00413         currDoc->toolSettings.lowResType = haRes;
00414         viewToRecalcPictureRes=true;
00415     }
00416     else
00417         viewToRecalcPictureRes=false;
00418     currDoc->toolSettings.dispX = tabTools->genDispX->value();
00419     currDoc->toolSettings.dispY = tabTools->genDispY->value();
00420     currDoc->toolSettings.constrain = tabTools->genRot->value();
00421     tabTools->polyWidget->getValues(&currDoc->toolSettings.polyC, &