Subversion Repositories Scribus

Rev

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