prefsmanager.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 /*************************************************************************** 00008 copyright : (C) 2005 by Craig Bradney 00009 email : cbradney@zip.com.au 00010 ***************************************************************************/ 00011 00012 /*************************************************************************** 00013 * * 00014 * This program is free software; you can redistribute it and/or modify * 00015 * it under the terms of the GNU General Public License as published by * 00016 * the Free Software Foundation; either version 2 of the License, or * 00017 * (at your option) any later version. * 00018 * * 00019 ***************************************************************************/ 00020 00021 #include <QColor> 00022 #include <QDebug> 00023 #include <QDesktopWidget> 00024 #include <QDir> 00025 #include <QDomDocument> 00026 #include <QFile> 00027 #include <QMatrix> 00028 #include <QList> 00029 #include <QString> 00030 #include <QStringList> 00031 #include <QStyleFactory> 00032 00033 #include "prefsmanager.h" 00034 00035 #include "actionmanager.h" 00036 #include "colorsetmanager.h" 00037 #include "commonstrings.h" 00038 #include "filewatcher.h" 00039 #include "latexhelpers.h" 00040 #include "missing.h" 00041 #include "tabkeyboardshortcutswidget.h" 00042 #include "pagesize.h" 00043 #include "pagestructs.h" 00044 #include "pdfoptions.h" 00045 #include "prefsfile.h" 00046 #include "scfonts.h" 00047 #include "scmessagebox.h" 00048 #include "scpaths.h" 00049 #include "scribuscore.h" 00050 #include "scribusstructs.h" 00051 #include "scribuscore.h" 00052 #include "ui/modetoolbar.h" 00053 #include "util.h" 00054 #include "util_ghostscript.h" 00055 00056 extern bool emergencyActivated; 00057 00058 PrefsManager* PrefsManager::_instance = 0; 00059 00060 PrefsManager::PrefsManager(QObject *parent) 00061 : QObject(parent) 00062 { 00063 } 00064 00065 PrefsManager::~PrefsManager() 00066 { 00067 appPrefs.AvailFonts.clear(); 00068 delete prefsFile; 00069 } 00070 00071 PrefsManager* PrefsManager::instance() 00072 { 00073 if (_instance == 0) 00074 _instance = new PrefsManager(); 00075 00076 return _instance; 00077 } 00078 00079 void PrefsManager::deleteInstance() 00080 { 00081 if (_instance) 00082 delete _instance; 00083 _instance = 0; 00084 } 00085 00086 00087 ApplicationPrefs* PrefsManager::applicationPrefs() 00088 { 00089 return &appPrefs; 00090 } 00091 00092 PrefsFile* PrefsManager::applicationPrefsFile() 00093 { 00094 return prefsFile; 00095 } 00096 00097 bool PrefsManager::importingFrom12x() 00098 { 00099 return importingFrom12; 00100 } 00101 00102 00103 void PrefsManager::setup() 00104 { 00105 setupPreferencesLocation(); 00106 00107 importingFrom12=copyOldPreferences(); 00108 prefsFile = new PrefsFile( prefsLocation + "/prefs135.xml" ); 00109 if (importingFrom12) 00110 convert12Preferences(); 00111 //<<CB TODO Reset keyboard shortcuts of all 1.3 users as too many 00112 // have conflicts if they dont nuke their settings. 00113 // - Remove for 1.3.0 release: importingFrom12=true; 00114 //>>CB 00115 } 00116 00117 void PrefsManager::initDefaults() 00118 { 00120 SCFontsIterator it(appPrefs.AvailFonts); 00121 bool goodFont = false; 00122 for ( SCFontsIterator itf(appPrefs.AvailFonts); itf.hasNext(); itf.next()) 00123 { 00124 if ((itf.currentKey() == "Arial Regular") || (itf.currentKey() == "Times New Roman Regular")) 00125 { 00126 appPrefs.toolSettings.defFont = itf.currentKey(); 00127 goodFont = true; 00128 break; 00129 } 00130 } 00131 if (!goodFont) 00132 appPrefs.toolSettings.defFont = it.currentKey(); 00133 appPrefs.toolSettings.defSize = 120; 00134 00136 appPrefs.DColors.clear(); 00137 00138 ColorSetManager csm; 00139 csm.initialiseDefaultPrefs(appPrefs); 00140 csm.findPaletteLocations(); 00141 csm.findPalettes(); 00142 /* 00143 QString pfadC = ScPaths::instance().libDir()+"swatches/"; 00144 QString pfadC2 = pfadC + "Scribus_X11.txt"; 00145 QFile fiC(pfadC2); 00146 if (!fiC.exists()) 00147 { 00148 appPrefs.DColors.insert("White", ScColor(0, 0, 0, 0)); 00149 appPrefs.DColors.insert("Black", ScColor(0, 0, 0, 255)); 00150 appPrefs.DColors.insert("Blue", ScColor(255, 255, 0, 0)); 00151 appPrefs.DColors.insert("Cyan", ScColor(255, 0, 0, 0)); 00152 appPrefs.DColors.insert("Green", ScColor(255, 0, 255, 0)); 00153 appPrefs.DColors.insert("Red", ScColor(0, 255, 255, 0)); 00154 appPrefs.DColors.insert("Yellow", ScColor(0, 0, 255, 0)); 00155 appPrefs.DColors.insert("Magenta", ScColor(0, 255, 0, 0)); 00156 appPrefs.DColorSet = "Scribus-Small"; 00157 } 00158 else 00159 { 00160 if (fiC.open(IO_ReadOnly)) 00161 { 00162 QString ColorEn, Cname; 00163 int Rval, Gval, Bval; 00164 QTextStream tsC(&fiC); 00165 ColorEn = tsC.readLine(); 00166 while (!tsC.atEnd()) 00167 { 00168 ColorEn = tsC.readLine(); 00169 QTextStream CoE(&ColorEn, IO_ReadOnly); 00170 CoE >> Rval; 00171 CoE >> Gval; 00172 CoE >> Bval; 00173 CoE >> Cname; 00174 ScColor tmp; 00175 tmp.setColorRGB(Rval, Gval, Bval); 00176 appPrefs.DColors.insert(Cname, tmp); 00177 } 00178 fiC.close(); 00179 } 00180 appPrefs.DColorSet = "X11 RGB-Set"; 00181 } 00182 */ 00183 00184 appPrefs.Wheelval = 40; 00186 appPrefs.mainWinSettings.xPosition = 0; 00187 appPrefs.mainWinSettings.yPosition = 0; 00188 appPrefs.mainWinSettings.width = 640; 00189 appPrefs.mainWinSettings.height = 480; 00190 appPrefs.mainWinSettings.maximized = false; 00191 appPrefs.mainWinState = QByteArray(); 00192 appPrefs.guidesSettings.marginsShown = true; 00193 appPrefs.guidesSettings.framesShown = true; 00194 appPrefs.guidesSettings.layerMarkersShown = false; 00195 appPrefs.guidesSettings.gridShown = false; 00196 appPrefs.guidesSettings.guidesShown = true; 00197 appPrefs.guidesSettings.colBordersShown = false; 00198 appPrefs.guidesSettings.baseShown = false; 00199 appPrefs.guidesSettings.showPic = true; 00200 appPrefs.guidesSettings.showControls = false; 00201 appPrefs.guidesSettings.linkShown = false; 00202 appPrefs.guidesSettings.rulersShown = true; 00203 appPrefs.guidesSettings.showBleed = true; 00204 appPrefs.guidesSettings.rulerMode = true; 00205 appPrefs.guidesSettings.grabRad = 4; 00206 appPrefs.guidesSettings.guideRad = 10; 00207 appPrefs.guidesSettings.minorGrid = 20; 00208 appPrefs.guidesSettings.majorGrid = 100; 00209 appPrefs.guidesSettings.minorColor = QColor(Qt::green); 00210 appPrefs.guidesSettings.majorColor = QColor(Qt::green); 00211 appPrefs.guidesSettings.margColor = QColor(Qt::blue); 00212 appPrefs.guidesSettings.guideColor = QColor(Qt::darkBlue); 00213 appPrefs.guidesSettings.baseColor = QColor(Qt::lightGray); 00214 appPrefs.typographicSettings.valueSuperScript = 33; 00215 appPrefs.typographicSettings.scalingSuperScript = 66; 00216 appPrefs.typographicSettings.valueSubScript = 33; 00217 appPrefs.typographicSettings.scalingSubScript = 66; 00218 appPrefs.typographicSettings.valueSmallCaps = 75; 00219 appPrefs.typographicSettings.autoLineSpacing = 20; 00220 appPrefs.typographicSettings.valueUnderlinePos = -1; 00221 appPrefs.typographicSettings.valueUnderlineWidth = -1; 00222 appPrefs.typographicSettings.valueStrikeThruPos = -1; 00223 appPrefs.typographicSettings.valueStrikeThruWidth = -1; 00224 appPrefs.typographicSettings.valueBaseGrid = 14.4; 00225 appPrefs.typographicSettings.offsetBaseGrid = 0.0; 00226 appPrefs.GUI = ""; 00227 appPrefs.grayscaleIcons = false; // can be a little slower on startup.. but its a nice effect to play with 00228 appPrefs.showToolTips = true; 00229 appPrefs.moveTimeout = 150; 00230 appPrefs.stickyTools = false; 00231 //FIXME 00232 //Black here causes issues when a colour set is loaded without "Black" in it. 00233 //"Black" is created with wrong values. Eg SVG colour set 00234 appPrefs.toolSettings.dPen = "Black"; 00235 appPrefs.toolSettings.dBrush = "Black"; 00236 appPrefs.toolSettings.dShade = 100; 00237 appPrefs.toolSettings.dShade2 = 100; 00238 appPrefs.toolSettings.dLineArt = Qt::SolidLine; 00239 appPrefs.toolSettings.dWidth = 1; 00240 appPrefs.toolSettings.dPenLine = "Black"; 00241 appPrefs.toolSettings.dPenText = "Black"; 00242 appPrefs.toolSettings.dStrokeText = "Black"; 00243 appPrefs.toolSettings.dTextBackGround = CommonStrings::None; 00244 appPrefs.toolSettings.dTextLineColor = CommonStrings::None; 00245 appPrefs.toolSettings.dTextBackGroundShade = 100; 00246 appPrefs.toolSettings.dTextLineShade = 100; 00247 appPrefs.toolSettings.dTextPenShade = 100; 00248 appPrefs.toolSettings.dTextStrokeShade = 100; 00249 appPrefs.toolSettings.tabFillChar = ""; 00250 appPrefs.toolSettings.dTabWidth = 36.0; 00251 appPrefs.toolSettings.dispX = 10.0; 00252 appPrefs.toolSettings.dispY = 10.0; 00253 appPrefs.toolSettings.constrain = 15.0; 00254 appPrefs.DpapColor = QColor(Qt::white); 00255 appPrefs.DFrameColor = QColor(Qt::red); 00256 appPrefs.DFrameNormColor = QColor(Qt::black); 00257 appPrefs.DFrameGroupColor = QColor(Qt::darkCyan); 00258 appPrefs.DFrameLockColor = QColor(Qt::darkRed); 00259 appPrefs.DFrameLinkColor = QColor(Qt::red); 00260 appPrefs.DFrameAnnotationColor = QColor(Qt::blue); 00261 appPrefs.DPageBorderColor = QColor(Qt::red); 00262 appPrefs.DControlCharColor = QColor(Qt::darkRed); 00263 appPrefs.toolSettings.dCols = 1; 00264 appPrefs.toolSettings.dGap = 0.0; 00265 appPrefs.toolSettings.dShadeLine = 100; 00266 appPrefs.toolSettings.dLstyleLine = Qt::SolidLine; 00267 appPrefs.toolSettings.dWidthLine = 1; 00268 appPrefs.toolSettings.dStartArrow = 0; 00269 appPrefs.toolSettings.dEndArrow = 0; 00270 appPrefs.toolSettings.magMin = 10; 00271 appPrefs.toolSettings.magMax = 3200; 00272 appPrefs.toolSettings.magStep = 200; 00273 appPrefs.toolSettings.dBrushPict = CommonStrings::None; 00274 appPrefs.toolSettings.shadePict = 100; 00275 appPrefs.toolSettings.scaleX = 1; 00276 appPrefs.toolSettings.scaleY = 1; 00277 appPrefs.guidesSettings.before = true; 00278 appPrefs.docUnitIndex = 0; 00279 appPrefs.toolSettings.polyC = 4; 00280 appPrefs.toolSettings.polyF = 0.5; 00281 appPrefs.toolSettings.polyS = false; 00282 appPrefs.toolSettings.polyFd = 0; 00283 appPrefs.toolSettings.polyR = 0; 00284 // appPrefs.PSize = 40; 00285 appPrefs.ClipMargin = false; 00286 appPrefs.GCRMode = false; 00287 appPrefs.doOverprint = false; 00288 appPrefs.RecentDocs.clear(); 00289 appPrefs.RecentScrapbooks.clear(); 00290 appPrefs.RecentDCount = 5; 00291 appPrefs.doCopyToScrapbook = true; 00292 appPrefs.persistentScrapbook = false; 00293 appPrefs.numScrapbookCopies = 10; 00294 appPrefs.marginColored = false; 00295 appPrefs.pageSize = "A4"; 00296 appPrefs.pageOrientation = 0; 00297 PageSize a4("A4"); 00298 appPrefs.PageWidth = a4.width(); 00299 appPrefs.PageHeight = a4.height(); 00300 appPrefs.margins.Top = 40; 00301 appPrefs.margins.Bottom = 40; 00302 appPrefs.margins.Left = 40; 00303 appPrefs.margins.Right = 40; 00304 appPrefs.bleeds.Top = 0; 00305 appPrefs.bleeds.Left = 0; 00306 appPrefs.bleeds.Right = 0; 00307 appPrefs.bleeds.Bottom = 0; 00308 appPrefs.toolSettings.scaleType = true; 00309 appPrefs.toolSettings.aspectRatio = true; 00310 appPrefs.toolSettings.lowResType = 1; 00311 appPrefs.toolSettings.useEmbeddedPath = false; 00312 appPrefs.MinWordLen = 3; 00313 appPrefs.HyCount = 2; 00314 appPrefs.Language = ""; 00315 appPrefs.specialWords.clear(); 00316 appPrefs.ignoredWords.clear(); 00317 appPrefs.Automatic = true; 00318 appPrefs.AutoCheck = false; 00319 appPrefs.AutoSave = true; 00320 appPrefs.AutoSaveTime = 600000; 00321 appPrefs.DisScale = 1.0; 00322 appPrefs.DocDir = ScPaths::getUserDocumentDir(); 00323 appPrefs.ProfileDir = ""; 00324 appPrefs.ScriptDir = ""; 00325 appPrefs.documentTemplatesDir = ""; 00326 appPrefs.CustomColorSets.clear(); 00327 appPrefs.PrPr_Mode = false; 00328 appPrefs.Gcr_Mode = true; 00329 appPrefs.PrPr_AntiAliasing = false; 00330 appPrefs.PrPr_Transparency = false; 00331 appPrefs.PrPr_C = true; 00332 appPrefs.PrPr_M = true; 00333 appPrefs.PrPr_Y = true; 00334 appPrefs.PrPr_K = true; 00335 appPrefs.imageEditorExecutable = "gimp"; 00336 appPrefs.extBrowserExecutable = ""; 00337 appPrefs.latexConfigs = LatexConfigCache::defaultConfigs(); 00338 appPrefs.latexEditorExecutable = ""; 00339 appPrefs.latexResolution = 72; 00340 appPrefs.latexForceDpi = true; 00341 appPrefs.latexUseEmbeddedEditor = true; 00342 appPrefs.latexStartWithEmptyFrames = false; 00343 appPrefs.gs_AntiAliasGraphics = true; 00344 appPrefs.gs_AntiAliasText = true; 00345 appPrefs.gs_exe = getGSDefaultExeName(); 00346 appPrefs.gs_Resolution = 72; 00347 appPrefs.STEcolor = QColor(Qt::white); 00348 appPrefs.DCMSset.DefaultMonitorProfile = ""; 00349 appPrefs.DCMSset.DefaultPrinterProfile = ""; 00350 appPrefs.DCMSset.DefaultImageRGBProfile = ""; 00351 appPrefs.DCMSset.DefaultSolidColorRGBProfile = ""; 00352 appPrefs.DCMSset.DefaultSolidColorCMYKProfile = ""; 00353 appPrefs.DCMSset.CMSinUse = false; 00354 appPrefs.DCMSset.SoftProofOn = false; 00355 appPrefs.DCMSset.SoftProofFullOn = false; 00356 appPrefs.DCMSset.GamutCheck = false; 00357 appPrefs.DCMSset.BlackPoint = true; 00358 appPrefs.DCMSset.DefaultIntentColors = 1; 00359 appPrefs.DCMSset.DefaultIntentImages = 0; 00360 appPrefs.GFontSub.clear(); 00361 appPrefs.scratch.Left = 100; 00362 appPrefs.scratch.Right = 100; 00363 appPrefs.scratch.Top = 20; 00364 appPrefs.scratch.Bottom = 20; 00365 appPrefs.GapHorizontal = 0.0; 00366 appPrefs.GapVertical = 40.0; 00367 struct PageSet pageS; 00368 pageS.Name = CommonStrings::pageSet1; 00369 pageS.FirstPage = 0; 00370 pageS.Rows = 1; 00371 pageS.Columns = 1; 00372 // pageS.GapHorizontal = 0.0; 00373 // pageS.GapVertical = 0.0; 00374 // pageS.GapBelow = 40.0; 00375 pageS.pageNames.clear(); 00376 appPrefs.pageSets.append(pageS); 00377 pageS.Name = CommonStrings::pageSet2; 00378 pageS.FirstPage = 1; 00379 pageS.Columns = 2; 00380 pageS.pageNames.clear(); 00381 pageS.pageNames.append(CommonStrings::pageLocLeft); 00382 pageS.pageNames.append(CommonStrings::pageLocRight); 00383 appPrefs.pageSets.append(pageS); 00384 pageS.Name = CommonStrings::pageSet3; 00385 pageS.FirstPage = 0; 00386 pageS.Columns = 3; 00387 pageS.pageNames.clear(); 00388 pageS.pageNames.append(CommonStrings::pageLocLeft); 00389 pageS.pageNames.append(CommonStrings::pageLocMiddle); 00390 pageS.pageNames.append(CommonStrings::pageLocRight); 00391 appPrefs.pageSets.append(pageS); 00392 pageS.Name = CommonStrings::pageSet4; 00393 pageS.FirstPage = 0; 00394 pageS.Columns = 4; 00395 pageS.pageNames.clear(); 00396 pageS.pageNames.append(CommonStrings::pageLocLeft); 00397 pageS.pageNames.append(CommonStrings::pageLocMiddleLeft); 00398 pageS.pageNames.append(CommonStrings::pageLocMiddleRight); 00399 pageS.pageNames.append(CommonStrings::pageLocRight); 00400 appPrefs.pageSets.append(pageS); 00401 appPrefs.FacingPages = singlePage; 00402 appPrefs.askBeforeSubstituite = true; 00403 appPrefs.haveStylePreview = true; 00404 // lorem ipsum defaults 00405 appPrefs.useStandardLI = false; 00406 appPrefs.paragraphsLI = 10; 00407 appPrefs.showStartupDialog = true; 00408 appPrefs.useSmallWidgets = false; 00409 initDefaultCheckerPrefs(&appPrefs.checkerProfiles); 00410 appPrefs.curCheckProfile = CommonStrings::PostScript; 00411 appPrefs.PDF_Options.Thumbnails = false; 00412 appPrefs.PDF_Options.Articles = false; 00413 appPrefs.PDF_Options.useLayers = false; 00414 appPrefs.PDF_Options.Compress = true; 00415 appPrefs.PDF_Options.CompressMethod = PDFOptions::Compression_Auto; 00416 appPrefs.PDF_Options.Quality = 0; 00417 appPrefs.PDF_Options.RecalcPic = false; 00418 appPrefs.PDF_Options.Bookmarks = false; 00419 appPrefs.PDF_Options.PicRes = 300; 00420 appPrefs.PDF_Options.Version = PDFOptions::PDFVersion_14; 00421 appPrefs.PDF_Options.Resolution = 300; 00422 appPrefs.PDF_Options.Binding = 0; 00423 appPrefs.PDF_Options.EmbedList.clear(); 00424 appPrefs.PDF_Options.SubsetList.clear(); 00425 appPrefs.PDF_Options.MirrorH = false; 00426 appPrefs.PDF_Options.MirrorV = false; 00427 appPrefs.PDF_Options.doClip = false; 00428 appPrefs.PDF_Options.RotateDeg = 0; 00429 appPrefs.PDF_Options.PresentMode = false; 00430 appPrefs.PDF_Options.Datei = ""; 00431 appPrefs.PDF_Options.PresentVals.clear(); 00432 appPrefs.PDF_Options.isGrayscale = false; 00433 appPrefs.PDF_Options.UseRGB = true; 00434 appPrefs.PDF_Options.UseProfiles = false; 00435 appPrefs.PDF_Options.UseProfiles2 = false; 00436 appPrefs.PDF_Options.SolidProf = ""; 00437 appPrefs.PDF_Options.SComp = 3; 00438 appPrefs.PDF_Options.ImageProf = ""; 00439 appPrefs.PDF_Options.PrintProf = ""; 00440 appPrefs.PDF_Options.Info = ""; 00441 appPrefs.PDF_Options.Intent = 0; 00442 appPrefs.PDF_Options.Intent2 = 0; 00443 appPrefs.PDF_Options.bleeds.Top = 0; 00444 appPrefs.PDF_Options.bleeds.Left = 0; 00445 appPrefs.PDF_Options.bleeds.Right = 0; 00446 appPrefs.PDF_Options.bleeds.Bottom = 0; 00447 appPrefs.PDF_Options.useDocBleeds = true; 00448 appPrefs.PDF_Options.cropMarks = false; 00449 appPrefs.PDF_Options.bleedMarks = false; 00450 appPrefs.PDF_Options.registrationMarks = false; 00451 appPrefs.PDF_Options.colorMarks = false; 00452 appPrefs.PDF_Options.docInfoMarks = false; 00453 appPrefs.PDF_Options.markOffset = 0; 00454 appPrefs.PDF_Options.EmbeddedI = false; 00455 appPrefs.PDF_Options.Encrypt = false; 00456 appPrefs.PDF_Options.PassOwner = ""; 00457 appPrefs.PDF_Options.PassUser = ""; 00458 appPrefs.PDF_Options.Permissions = -4; 00459 appPrefs.PDF_Options.UseLPI = false; 00460 appPrefs.PDF_Options.LPISettings.clear(); 00461 appPrefs.PDF_Options.UseSpotColors = true; 00462 appPrefs.PDF_Options.doOverprint = false; 00463 appPrefs.PDF_Options.doMultiFile = false; 00464 appPrefs.PDF_Options.displayBookmarks = false; 00465 appPrefs.PDF_Options.displayFullscreen = false; 00466 appPrefs.PDF_Options.displayLayers = false; 00467 appPrefs.PDF_Options.displayThumbs = false; 00468
