Subversion Repositories Scribus

Rev

Rev 18921 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5244 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
/***************************************************************************
8
                          pageitem.h  -  description
9
                             -------------------
10
    copyright            : Scribus Team
11
 ***************************************************************************/
12
 
13
/***************************************************************************
14
 *                                                                         *
15
 *   This program is free software; you can redistribute it and/or modify  *
16
 *   it under the terms of the GNU General Public License as published by  *
17
 *   the Free Software Foundation; either version 2 of the License, or     *
18
 *   (at your option) any later version.                                   *
19
 *                                                                         *
20
 ***************************************************************************/
21
 
5721 avox 22
#include <cassert>
23
#include <iostream>
11490 avox 24
#include <QByteArray>
25
#include <QDebug>
10223 cbradney 26
#include <QGlobalStatic>
5721 avox 27
 
15706 jghali 28
#include "colormgmt/sccolormgmtengine.h"
5244 cbradney 29
#include "commonstrings.h"
30
#include "filewatcher.h"
31
#include "pluginmanager.h"
32
#include "prefsmanager.h"
33
#include "scpaths.h"
10212 cbradney 34
#include "scribusapp.h"
35
#include "scribuscore.h"
5244 cbradney 36
#include "splash.h"
37
#include "undomanager.h"
10212 cbradney 38
#include "util.h"
13245 cbradney 39
#include "util_icon.h"
10212 cbradney 40
#include "util_ghostscript.h"
5244 cbradney 41
 
10212 cbradney 42
 
5244 cbradney 43
extern ScribusQApp* ScQApp;
44
 
45
#include "cmserrorhandling.h"
46
 
47
ScribusCore::ScribusCore() : QObject()
48
{
49
        m_ScribusInitialized=false;
50
        m_SplashScreen=0;
51
        m_UseGUI=false;
5880 jghali 52
        m_HaveCMS=false;
8678 subik 53
//      m_PaletteParent=0;
5418 cbradney 54
        m_currScMW=0;
10338 jghali 55
 
56
        defaultRGBProfile  = NULL;
57
        defaultCMYKProfile = NULL;
58
        defaultRGBToScreenSolidTrans  = NULL;
59
        defaultRGBToScreenImageTrans  = NULL;
60
        defaultCMYKToScreenImageTrans = NULL;
61
        defaultRGBToCMYKTrans = NULL;
62
        defaultCMYKToRGBTrans = NULL;
5244 cbradney 63
}
64
 
65
 
66
 
67
ScribusCore::~ScribusCore()
5257 cbradney 68
{
10338 jghali 69
        TermDefaultColorTransforms();
8678 subik 70
//      delete m_PaletteParent;
5257 cbradney 71
}
5244 cbradney 72
 
5721 avox 73
#ifndef NDEBUG
74
static void abort_on_error(QtMsgType t, const char * m)
75
{
5980 avox 76
        std::cerr << m << "\n";
5721 avox 77
        if(t==QtFatalMsg) assert(false);
5980 avox 78
//      if(t!=QtDebugMsg) assert(false);
5721 avox 79
}
80
#endif
81
 
82
 
13335 cbradney 83
int ScribusCore::init(bool useGUI, bool swapDialogButtonOrder, const QList<QString>& filesToUse)
5244 cbradney 84
{
85
        m_UseGUI=useGUI;
13335 cbradney 86
        m_Files=filesToUse;
5244 cbradney 87
        m_SwapDialogButtonOrder=swapDialogButtonOrder;
10363 jghali 88
#if !defined(NDEBUG) && !defined(_WIN32)
5721 avox 89
        qInstallMsgHandler( & abort_on_error );
90
#endif
91
 
5244 cbradney 92
        return 0;
93
}
94
 
10112 jghali 95
const QString& ScribusCore::getGuiLanguage() const
96
{
97
        return ScQApp->currGUILanguage();
98
}
99
 
7330 jghali 100
int ScribusCore::startGUI(bool showSplash, bool showFontInfo, bool showProfileInfo, const QString newGuiLanguage, const QString prefsUserFile)
5244 cbradney 101
{
8678 subik 102
//      m_PaletteParent=new QWidget(0);
103
//      Q_CHECK_PTR(m_PaletteParent);
5418 cbradney 104
        ScribusMainWindow* scribus = new ScribusMainWindow();
5257 cbradney 105
        Q_CHECK_PTR(scribus);
106
        if (!scribus)
107
                return(EXIT_FAILURE);
5418 cbradney 108
        ScMWList.append(scribus);
109
        m_currScMW=0;
5781 cbradney 110
//      ScMW=scribus;
7330 jghali 111
        int retVal=initScribusCore(showSplash, showFontInfo, showProfileInfo,newGuiLanguage, prefsUserFile);
5257 cbradney 112
        if (retVal == 1)
113
                return(EXIT_FAILURE);
10977 cbradney 114
 
5257 cbradney 115
        retVal = scribus->initScMW(true);
116
        if (retVal == 1)
117
                return(EXIT_FAILURE);
10977 cbradney 118
 
5257 cbradney 119
        closeSplash();
120
        m_ScribusInitialized=true;
10571 fschmid 121
//      ScQApp->setMainWidget(scribus);
5257 cbradney 122
        connect(ScQApp, SIGNAL(lastWindowClosed()), ScQApp, SLOT(quit()));
5244 cbradney 123
 
5257 cbradney 124
        scribus->show();
16186 craig 125
        int subsRet=scribus->ShowSubs();
126
        if (subsRet==0)
13335 cbradney 127
        {
16186 craig 128
                if (!m_Files.isEmpty())
129
                {
130
                        for (int i = 0; i < m_Files.size(); ++i)
131
                                scribus->loadDoc(m_Files.at(i));
132
                }
133
                else
134
                {
135
                        if (PrefsManager::instance()->appPrefs.showStartupDialog)
136
                                scribus->startUpDialog();
137
                        else
138
                                scribus->setFocus();
139
                }
140
        }      
141
        else if (subsRet==QMessageBox::Help)
5257 cbradney 142
        {
16186 craig 143
                scribus->slotRaiseOnlineHelp();
5257 cbradney 144
        }
16186 craig 145
 
11162 cbradney 146
        // A hook for plugins and scripts to trigger on. Some plugins and scripts
5257 cbradney 147
        // require the app to be fully set up (in particular, the main window to be
148
        // built and shown) before running their setup.
149
        emit appStarted();
10977 cbradney 150
 
5257 cbradney 151
        return EXIT_SUCCESS;
5244 cbradney 152
}
153
 
7330 jghali 154
int ScribusCore::initScribusCore(bool showSplash, bool showFontInfo, bool showProfileInfo,
155
                                                                 const QString newGuiLanguage, const QString prefsUserFile)
5244 cbradney 156
{
157
        CommonStrings::languageChange();
158
        int retVal=0;
159
//FIXME ExternalApp = 0;
160
        initSplash(showSplash);
161
        prefsManager = PrefsManager::instance();
162
        prefsManager->setup();
6699 cbradney 163
        //CB #4428 Get fonts before prefs are set to default
164
        bool haveFonts=false;
17113 craig 165
//#ifdef Q_OS_MAC
166
//      haveFonts=ScCore->initFonts(true);
167
//#else
6699 cbradney 168
        haveFonts=ScCore->initFonts(showFontInfo);
17113 craig 169
//#endif
6699 cbradney 170
        if (!haveFonts)
171
                return 1;
5244 cbradney 172
        prefsManager->initDefaults();
173
        prefsManager->initDefaultGUIFont(qApp->font());
174
        prefsManager->initArrowStyles();
175
        undoManager = UndoManager::instance();
176
        fileWatcher = new FileWatcher(this);
177
        pluginManager = new PluginManager();
178
        setSplashStatus( tr("Initializing Plugins") );
179
        pluginManager->initPlugs();
6699 cbradney 180
/* #4428, remove block later if ok
5244 cbradney 181
        bool haveFonts=false;
10531 avox 182
#ifdef Q_OS_MAC
5244 cbradney 183
        haveFonts=ScCore->initFonts(true);
184
#else
185
        haveFonts=ScCore->initFonts(showFontInfo);
186
#endif
187
        if (!haveFonts)
188
                return 1;
6699 cbradney 189
*/
5244 cbradney 190
        setSplashStatus( tr("Initializing Keyboard Shortcuts") );
191
        prefsManager->initDefaultActionKeys();
192
        setSplashStatus( tr("Reading Preferences") );
193
        if (prefsUserFile.isNull())
194
                prefsManager->ReadPrefs();
195
        else
196
                prefsManager->ReadPrefs(prefsUserFile);
11174 fschmid 197
//      setSplashStatus( tr("Applying User Shortcuts") );
198
//      prefsManager->applyLoadedShortCuts();
10977 cbradney 199
 
5244 cbradney 200
        m_HaveGS = testGSAvailability();
201
        m_HavePngAlpha = testGSDeviceAvailability("pngalpha");
202
        m_HaveTiffSep = testGSDeviceAvailability("tiffsep");
203
 
10435 cbradney 204
        ScCore->setSplashStatus( tr("Reading Color Profiles") );
5880 jghali 205
        m_HaveCMS = false;
7330 jghali 206
        getCMSProfiles(showProfileInfo);
5244 cbradney 207
        initCMS();
208
 
209
        return retVal;
210
}
211
 
212
 
213
void ScribusCore::initSplash(bool showSplash)
214
{
215
        if (showSplash)
216
        {
13245 cbradney 217
        QPixmap pix = loadIcon("Splash.png", true);
218
        m_SplashScreen = new SplashScreen(pix, Qt::WindowStaysOnTopHint);
219
        if (m_SplashScreen != NULL)
220
            m_SplashScreen->show();
10571 fschmid 221
                if (m_SplashScreen != NULL && m_SplashScreen->isVisible())
5244 cbradney 222
                        setSplashStatus(QObject::tr("Initializing..."));
223
        }
224
        else
225
                m_SplashScreen = NULL;
226
}
227
 
228
void ScribusCore::setSplashStatus(const QString& newText)
229
{
230
        if (m_SplashScreen != NULL)
13245 cbradney 231
        m_SplashScreen->setStatus( newText );
5244 cbradney 232
}
233
 
234
void ScribusCore::showSplash(bool shown)
235
{
10571 fschmid 236
        if (m_SplashScreen!=NULL && shown!=m_SplashScreen->isVisible())
237
                m_SplashScreen->setVisible(shown);
5244 cbradney 238
}
239
 
240
bool ScribusCore::splashShowing() const
241
{
242
        if (m_SplashScreen != NULL)
10571 fschmid 243
                return m_SplashScreen->isVisible();
5244 cbradney 244
        return false;
245
}
246
 
247
void ScribusCore::closeSplash()
248
{
249
        if (m_SplashScreen!=NULL)
250
        {
251
                m_SplashScreen->close();
252
                delete m_SplashScreen;
253
                m_SplashScreen = NULL;
254
        }
255
}
256
 
257
bool ScribusCore::usingGUI() const
258
{
259
        return m_UseGUI;
260
}
261
 
262
bool ScribusCore::isMacGUI() const
263
{
264
        // Do it statically for now
265
#if defined(Q_WS_MAC)
266
        return true;
267
#else
268
        return false;
269
#endif
270
}
271
 
272
bool ScribusCore::isWinGUI() const
273
{
274
        // Do it statically for now
275
#if defined(_WIN32)
276
        return true;
277
#else
278
        return false;
279
#endif
280
}
281
 
282
bool ScribusCore::reverseDialogButtons() const
283
{
284
        if (m_SwapDialogButtonOrder)
285
                return true;
286
        //Win32 - dont switch
287
        #if defined(_WIN32)
288
                return false;
289
        //Mac Aqua - switch
290
        #elif defined(Q_WS_MAC)
291
                return true;
292
        #else
293
        //Gnome - switch
294
        QString gnomesession= ::getenv("GNOME_DESKTOP_SESSION_ID");
295
        if (!gnomesession.isEmpty())
296
                return true;
297
 
298
        //KDE/KDE Aqua - dont switch
299
        //Best guess for now if we are running under KDE
300
        QString kdesession= ::getenv("KDE_FULL_SESSION");
301
        if (!kdesession.isEmpty())
302
                return false;
303
        #endif
304
        return false;
305
}
306
 
307
//Returns false when there are no fonts
308
bool ScribusCore::initFonts(bool showFontInfo)
309
{
310
        setSplashStatus( tr("Searching for Fonts") );
311
        bool haveFonts=prefsManager->GetAllFonts(showFontInfo);
312
        if (!haveFonts)
313
        {
314
                closeSplash();
315
                QString mess = tr("There are no fonts found on your system.");
316
                mess += "\n" + tr("Exiting now.");
317
                QMessageBox::critical(0, tr("Fatal Error"), mess, 1, 0, 0);
318
        }
319
        else
320
                setSplashStatus( tr("Font System Initialized") );
321
        return haveFonts;
322
}
323
 
324
 
7330 jghali 325
void ScribusCore::getCMSProfiles(bool showInfo)
5244 cbradney 326
{
327
        QString profDir;
328
        QStringList profDirs;
329
        MonitorProfiles.clear();
330
        PrinterProfiles.clear();
331
        InputProfiles.clear();
332
        InputProfilesCMYK.clear();
17179 craig 333
        QString pfad = ScPaths::instance().shareDir();
5244 cbradney 334
        pfad += "profiles/";
335
        profDirs = ScPaths::getSystemProfilesDirs();
336
        profDirs.prepend( prefsManager->appPrefs.ProfileDir );
337
        profDirs.prepend( pfad );
8545 cbradney 338
        for(int i = 0; i < profDirs.count(); i++)
5244 cbradney 339
        {
340
                profDir = profDirs[i];
341
                if(!profDir.isEmpty())
342
                {
343
                        if(profDir.right(1) != "/")
344
                                profDir += "/";
7330 jghali 345
                        getCMSProfilesDir(profDir, showInfo, true);
5244 cbradney 346
                }
347
        }
348
        if ((!PrinterProfiles.isEmpty()) && (!InputProfiles.isEmpty()) && (!MonitorProfiles.isEmpty()))
5880 jghali 349
                m_HaveCMS = true;
5244 cbradney 350
        else
5880 jghali 351
                m_HaveCMS = false;
5244 cbradney 352
}
353
 
7330 jghali 354
void ScribusCore::getCMSProfilesDir(QString pfad, bool showInfo, bool recursive)
5244 cbradney 355
{
15706 jghali 356
        QString profileName;
357
        QList<ScColorProfileInfo> profileInfos = ScColorMgmtEngine::getAvailableProfileInfo(pfad, recursive);
358
        for (int i = 0; i < profileInfos.count(); ++i)
5244 cbradney 359
        {
15706 jghali 360
                const ScColorProfileInfo& profInfo = profileInfos.at(i);
361
                profileName = profInfo.description;
362
                if (profileName.isEmpty())
5244 cbradney 363
                {
15706 jghali 364
                        if (showInfo)
16038 jghali 365
                                sDebug(QString("Color profile %1 is broken : no valid description").arg(profInfo.file));
15706 jghali 366
                        continue;
367
                }
368
                if (!profInfo.debug.isEmpty())
369
                {
370
                        if (showInfo)
371
                                sDebug(profInfo.debug);
372
                        continue;
373
                }
374
                switch (static_cast<int>(profInfo.deviceClass))
375
                {
376
                case Class_Input:
377
                        if (profInfo.colorSpace == ColorSpace_Rgb)
5244 cbradney 378
                        {
15706 jghali 379
                                if (!InputProfiles.contains(profileName))
380
                                        InputProfiles.insert(profileName, profInfo.file);
5244 cbradney 381
                        }
15706 jghali 382
                        break;
383
                case Class_ColorSpace:
384
                        if (profInfo.colorSpace == ColorSpace_Rgb)
385
                        {
386
                                if (!InputProfiles.contains(profileName))
387
                                        InputProfiles.insert(profileName, profInfo.file);
5244 cbradney 388
                        }
15706 jghali 389
                        if (profInfo.colorSpace == ColorSpace_Cmyk)
5244 cbradney 390
                        {
15706 jghali 391
                                if (!InputProfilesCMYK.contains(profileName))
392
                                        InputProfilesCMYK.insert(profileName, profInfo.file);
5244 cbradney 393
                        }
15706 jghali 394
                        break;
395
                case Class_Display:
396
                        if (profInfo.colorSpace == ColorSpace_Rgb)
397
                        {
398
                                if (!MonitorProfiles.contains(profileName))
399
                                        MonitorProfiles.insert(profileName, profInfo.file);
400
                                if (!InputProfiles.contains(profileName))
401
                                        InputProfiles.insert(profileName, profInfo.file);
402
                        }
403
                        if (profInfo.colorSpace == ColorSpace_Cmyk)
404
                        {
405
                                if (!InputProfilesCMYK.contains(profileName))
406
                                        InputProfilesCMYK.insert(profileName, profInfo.file);
407
                        }
408
                        break;
409
                case Class_Output:
410
                        // Disable rgb printer profile detection until effective support
411
                        // PrinterProfiles.insert(nam, pfad + d[dc], false);
412
                        if (profInfo.colorSpace == ColorSpace_Cmyk)
413
                        {
414
                                if (!PDFXProfiles.contains(profileName))
415
                                        PDFXProfiles.insert(profileName, profInfo.file);
416
                                if (!InputProfilesCMYK.contains(profileName))
417
                                        InputProfilesCMYK.insert(profileName, profInfo.file);
418
                                if (!PrinterProfiles.contains(profileName))
419
                                        PrinterProfiles.insert(profileName, profInfo.file);
420
                        }
421
                        break;
5244 cbradney 422
                }
15706 jghali 423
                if (showInfo)
424
                        sDebug( QString("Color profile %1 loaded from %2").arg(profileName).arg(profInfo.file) );
5244 cbradney 425
        }
426
}
427
 
10338 jghali 428
void ScribusCore::InitDefaultColorTransforms(void)
429
{
22843 jghali 430
        QString defaultRGBString1  = "sRGB display profile (ICC v2.2)";
431
        QString defaultRGBString2  = "sRGB IEC61966-2.1";
432
        QString defaultCMYKString1 = "Fogra27L CMYK Coated Press";
433
        QString defaultCMYKString2 = "ISO Coated v2 300% (basICColor)";
434
 
10338 jghali 435
        TermDefaultColorTransforms();
436
 
10493 fschmid 437
        // Ouvre le profile RGB par d�fault
22843 jghali 438
        if (InputProfiles.contains(defaultRGBString1))
439
                defaultRGBProfile = ScColorMgmtEngine::openProfileFromFile(InputProfiles[defaultRGBString1]);
440
        else if (InputProfiles.contains(defaultRGBString2))
441
                defaultRGBProfile = ScColorMgmtEngine::openProfileFromFile(InputProfiles[defaultRGBString2]);
10338 jghali 442
        else
15706 jghali 443
                defaultRGBProfile = ScColorMgmtEngine::createProfile_sRGB();
10338 jghali 444
 
10493 fschmid 445
        // Ouvre le profile CMYK par d�faut
22843 jghali 446
        if (InputProfilesCMYK.contains(defaultCMYKString1))
447
                defaultCMYKProfile = ScColorMgmtEngine::openProfileFromFile(InputProfilesCMYK[defaultCMYKString1]);
448
        else if (InputProfilesCMYK.contains(defaultCMYKString2))
449
                defaultCMYKProfile = ScColorMgmtEngine::openProfileFromFile(InputProfilesCMYK[defaultCMYKString2]);
10338 jghali 450
 
451
        if (!defaultRGBProfile || !defaultCMYKProfile)
452
        {
453
                TermDefaultColorTransforms();
454
                return;
455
        }
456
 
15706 jghali 457
        int dcmsFlags = Ctf_BlackPointCompensation | Ctf_LowResPrecalc;
458
        eRenderIntent intent = Intent_Relative_Colorimetric;
10338 jghali 459
 
15706 jghali 460
        defaultRGBToScreenSolidTrans  = ScColorMgmtEngine::createTransform(defaultRGBProfile, Format_RGB_16,
461
                                defaultRGBProfile, Format_RGB_16, intent, Ctf_NullTransform);
462
        defaultRGBToScreenImageTrans  = ScColorMgmtEngine::createTransform(defaultRGBProfile, Format_RGBA_8,
463
                                defaultRGBProfile, Format_RGBA_8, intent, Ctf_NullTransform);
16583 jghali 464
        defaultCMYKToScreenImageTrans = ScColorMgmtEngine::createTransform(defaultCMYKProfile, Format_CMYK_8,
465
                                defaultRGBProfile, Format_RGBA_8, intent, dcmsFlags);
15706 jghali 466
        defaultRGBToCMYKTrans = ScColorMgmtEngine::createTransform(defaultRGBProfile, Format_RGB_16,
467
                                defaultCMYKProfile, Format_CMYK_16, intent, dcmsFlags);
468
        defaultCMYKToRGBTrans = ScColorMgmtEngine::createTransform(defaultCMYKProfile, Format_CMYK_16,
469
                                defaultRGBProfile, Format_RGB_16, intent, dcmsFlags);
10338 jghali 470
        if (!defaultRGBToScreenSolidTrans  || !defaultRGBToScreenImageTrans ||
471
                !defaultCMYKToScreenImageTrans || !defaultRGBToCMYKTrans ||
472
                !defaultCMYKToRGBTrans )
473
        {
474
                TermDefaultColorTransforms();
475
        }
476
}
477
 
478
void ScribusCore::TermDefaultColorTransforms(void)
479
{
15706 jghali 480
        defaultRGBProfile  = ScColorProfile();
481
        defaultCMYKProfile = ScColorProfile();
482
        defaultRGBToScreenSolidTrans  = ScColorTransform();
483
        defaultRGBToScreenImageTrans  = ScColorTransform();
484
        defaultCMYKToScreenImageTrans = ScColorTransform();
485
        defaultRGBToCMYKTrans = ScColorTransform();
486
        defaultCMYKToRGBTrans = ScColorTransform();
10338 jghali 487
}
488
 
5244 cbradney 489
void ScribusCore::initCMS()
490
{
22843 jghali 491
        if (!m_HaveCMS)
492
                return;
493
 
494
        ProfilesL::Iterator ip;
495
        QString defaultRGBString1  = "sRGB display profile (ICC v2.2)";
496
        QString defaultRGBString2  = "sRGB IEC61966-2.1";
497
        QString defaultCMYKString1 = "Fogra27L CMYK Coated Press";
498
        QString defaultCMYKString2 = "ISO Coated v2 300% (basICColor)";
499
 
500
        QString defaultImageRGBProfile = prefsManager->appPrefs.DCMSset.DefaultImageRGBProfile;
501
        if ((defaultImageRGBProfile.isEmpty()) || (!InputProfiles.contains(defaultImageRGBProfile)))
5244 cbradney 502
        {
22843 jghali 503
                ip = InputProfiles.find(defaultRGBString1);
504
                if (ip == InputProfiles.end())
505
                        ip = InputProfiles.find(defaultRGBString2);
506
                if (ip == InputProfiles.end())
507
                        ip = InputProfiles.begin();
508
                prefsManager->appPrefs.DCMSset.DefaultImageRGBProfile = ip.key();
5244 cbradney 509
        }
22843 jghali 510
 
511
        QString defaultImageCMYKProfile = prefsManager->appPrefs.DCMSset.DefaultImageCMYKProfile;
512
        if ((defaultImageCMYKProfile.isEmpty()) || (!InputProfilesCMYK.contains(defaultImageCMYKProfile)))
513
        {
514
                ip = InputProfilesCMYK.find(defaultCMYKString1);
515
                if (ip == InputProfilesCMYK.end())
516
                        ip = InputProfilesCMYK.find(defaultCMYKString2);
517
                if (ip == InputProfilesCMYK.end())
518
                        ip = InputProfilesCMYK.begin();
519
                prefsManager->appPrefs.DCMSset.DefaultImageCMYKProfile = ip.key();
520
        }
521
 
522
        QString defaultSolidColorRGBProfile = prefsManager->appPrefs.DCMSset.DefaultSolidColorRGBProfile;
523
        if ((defaultSolidColorRGBProfile.isEmpty()) || (!InputProfiles.contains(defaultSolidColorRGBProfile)))
524
        {
525
                ip = InputProfiles.find(defaultRGBString1);
526
                if (ip == InputProfiles.end())
527
                        ip = InputProfiles.find(defaultRGBString2);
528
                if (ip == InputProfiles.end())
529
                        ip = InputProfiles.begin();
530
                prefsManager->appPrefs.DCMSset.DefaultSolidColorRGBProfile = ip.key();
531
        }
532
 
533
        QString defaultSolidColorCMYKProfile = prefsManager->appPrefs.DCMSset.DefaultSolidColorCMYKProfile;
534
        if ((defaultSolidColorCMYKProfile.isEmpty()) || (!InputProfilesCMYK.contains(defaultSolidColorCMYKProfile)))
535
        {
536
                ip = InputProfilesCMYK.find(defaultCMYKString1);
537
                if (ip == InputProfilesCMYK.end())
538
                        ip = InputProfilesCMYK.find(defaultCMYKString2);
539
                if (ip == InputProfilesCMYK.end())
540
                        ip = InputProfilesCMYK.begin();
541
                prefsManager->appPrefs.DCMSset.DefaultSolidColorCMYKProfile = ip.key();
542
        }
543
 
544
        QString defaultMonitorProfile = prefsManager->appPrefs.DCMSset.DefaultMonitorProfile;
545
        if ((defaultMonitorProfile.isEmpty()) || (!MonitorProfiles.contains(defaultMonitorProfile)))
546
        {
547
                ip = MonitorProfiles.find(defaultRGBString1);
548
                if (ip == MonitorProfiles.end())
549
                        ip = MonitorProfiles.find(defaultRGBString2);
550
                if (ip == MonitorProfiles.end())
551
                        ip = MonitorProfiles.begin();
552
                prefsManager->appPrefs.DCMSset.DefaultMonitorProfile = ip.key();
553
        }
554
 
555
        QString defaultPrinterProfile = prefsManager->appPrefs.DCMSset.DefaultPrinterProfile;
556
        if ((defaultPrinterProfile.isEmpty()) || (!PrinterProfiles.contains(defaultPrinterProfile)))
557
        {
558
                ip = PrinterProfiles.find(defaultCMYKString1);
559
                if (ip == PrinterProfiles.end())
560
                        ip = PrinterProfiles.find(defaultCMYKString2);
561
                if (ip == PrinterProfiles.end())
562
                        ip = PrinterProfiles.begin();
563
                prefsManager->appPrefs.DCMSset.DefaultPrinterProfile = ip.key();
564
        }
565
 
566
        InitDefaultColorTransforms();
5244 cbradney 567
}
5418 cbradney 568
 
569
ScribusMainWindow * ScribusCore::primaryMainWindow( )
570
{
10018 fschmid 571
        if (ScMWList.count() == 0 || m_currScMW > ScMWList.count())
5418 cbradney 572
                return 0;
573
        ScribusMainWindow* mw=ScMWList.at(m_currScMW);
574
        if (!mw)
575
                return 0;
576
        return mw;
577
}
5781 cbradney 578
 
6703 fschmid 579
void ScribusCore::recheckGS()
580
{
581
        m_HaveGS = testGSAvailability();
582
        m_HavePngAlpha = testGSDeviceAvailability("pngalpha");
583
        m_HaveTiffSep = testGSDeviceAvailability("tiffsep");
584
}
5781 cbradney 585
 
586
bool ScribusCore::fileWatcherActive() const
587
{
588
        if (fileWatcher!=NULL)
589
                return fileWatcher->isActive();
590
        return false;
591
}