Subversion Repositories Scribus

Rev

Rev 68 | Rev 83 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 paul 1
/***************************************************************************
2
                          scribuswin.cpp  -  description
3
                             -------------------
4
    begin                : Mit Nov 6 2002
5
    copyright            : (C) 2002 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
81 Franz 17
#include <qfileinfo.h>
18
#include <qdir.h>
4 paul 19
#include "scribuswin.h"
20
#include "scribuswin.moc"
81 Franz 21
#include "scribusXml.h"
4 paul 22
extern QPixmap loadIcon(QString nam);
23
 
24
ScribusWin::ScribusWin(QWidget* parent, ScribusDoc* ddoc)
25
                                                                                        : QMainWindow(parent, "", WDestructiveClose)
26
{
27
  setIcon(loadIcon("AppIcon.xpm"));
28
        doc = ddoc;
29
        muster = NULL;
30
        NrItems = 0;
31
        First = 1;
32
        Last = 0;
33
}
34
 
35
void ScribusWin::setView(ScribusView* dview)
36
{
37
        view = dview;
38
}
39
 
81 Franz 40
void ScribusWin::slotAutoSave()
41
{
42
  if ((doc->hasName) && (doc->isModified()) && (!doc->TemplateMode))
43
        {
44
                system("mv -f " + doc->DocName + " " + doc->DocName+".bak");
45
                QString fn = doc->DocName;
46
        QFileInfo fi(fn);
47
        QDir::setCurrent(fi.dirPath(true));
48
                ScriXmlDoc *ss = new ScriXmlDoc();
49
                if (ss->WriteDoc(fn, doc, view, 0))
50
                        {
51
                        doc->setUnModified();
52
                        setCaption(doc->DocName);
53
                        qApp->processEvents();
54
                        emit AutoSaved();
55
                        }
56
                delete ss;
57
        }
58
}
59
 
4 paul 60
void ScribusWin::closeEvent(QCloseEvent *ce)
61
{
62
        if (doc->isModified())
63
        {
64
        int exit=QMessageBox::information(this,
65
                                                                                                                                        tr("Warning"),
66
                                    tr("Document:")+" "+doc->DocName+"\n"+tr("has been changed since the last save."),
67
                                    tr("Save Now"),
68
                                    tr("Cancel"),
69
                                    tr("Leave Anyway"),
70
                                    0, 1);
71
         switch (exit)
72
                {
73
                case 0:
74
                        emit SaveAndClose();
75
                                ce->accept();
76
                        break;
77
                case 1:
78
                        break;
79
                case 2:
80
                                emit Schliessen();
81
                                ce->accept();
82
                        break;
83
                }
84
                }
85
        else
86
                {
87
                emit Schliessen();
88
                ce->accept();
89
                }
90
}
91
 
92
void ScribusWin::CloseCMSProfiles()
93
{
94
#ifdef HAVE_CMS
95
        cmsCloseProfile(doc->DocInputProf);
96
        cmsCloseProfile(doc->DocOutputProf);
97
        cmsCloseProfile(doc->DocPrinterProf);
98
        cmsDeleteTransform(stdTrans);
99
        cmsDeleteTransform(stdProof);
100
        cmsDeleteTransform(stdTransImg);
101
        cmsDeleteTransform(stdProofImg);
102
#endif
103
}
104
 
105
void ScribusWin::OpenCMSProfiles(ProfilesL InPo, ProfilesL MoPo, ProfilesL PrPo)
106
{
107
#ifdef HAVE_CMS
108
        QString pfad = PREL;
109
        pfad += "/lib/scribus/profiles/";
110
        doc->DocInputProf = cmsOpenProfileFromFile(InPo[doc->CMSSettings.DefaultInputProfile2], "r");
111
        doc->DocOutputProf = cmsOpenProfileFromFile(pfad + MoPo[doc->CMSSettings.DefaultMonitorProfile], "r");
112
        doc->DocPrinterProf = cmsOpenProfileFromFile(pfad + PrPo[doc->CMSSettings.DefaultPrinterProfile], "r");
113
        int dcmsFlags = 0;
68 Franz 114
        int dcmsFlags2 = cmsFLAGS_NOTPRECALC;
4 paul 115
        if (Gamut)
116
                dcmsFlags |= cmsFLAGS_GAMUTCHECK;
117
        else
118
                dcmsFlags |= cmsFLAGS_SOFTPROOFING;
68 Franz 119
#ifdef cmsFLAGS_BLACKPOINTCOMPENSATION
120
        dcmsFlags2 |= cmsFLAGS_BLACKPOINTCOMPENSATION;
121
        dcmsFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION;
122
#endif
4 paul 123
        stdProof = cmsCreateProofingTransform(doc->DocInputProf, TYPE_RGB_16,
124
                                                                                                                                                                doc->DocOutputProf, TYPE_RGB_16,
125
                                                                                                                                                                doc->DocPrinterProf,
126
                                                                                                                                                                IntentPrinter,
127
                                                                                                                                                                IntentMonitor, dcmsFlags);
128
        stdTrans = cmsCreateTransform(doc->DocInputProf, TYPE_RGB_16,
129
                                                                                                                          doc->DocOutputProf, TYPE_RGB_16,
130
                                                                                                                          IntentMonitor,
68 Franz 131
                                                                                                                          dcmsFlags2);
4 paul 132
        stdProofImg = cmsCreateProofingTransform(doc->DocInputProf, TYPE_RGBA_8,
133
                                                                                                                                                                         doc->DocOutputProf, TYPE_RGBA_8,
134
                                                                                                                                                                         doc->DocPrinterProf,
135
                                                                                                                                                                         IntentPrinter,
136
                                                                                                                                                                         IntentMonitor, dcmsFlags);
137
        stdTransImg = cmsCreateTransform(doc->DocInputProf, TYPE_RGBA_8,
138
                                                                                                                                 doc->DocOutputProf, TYPE_RGBA_8,
139
                                                                                                                                 IntentMonitor,
68 Franz 140
                                                                                                                                 dcmsFlags2);
4 paul 141
#endif
142
}