Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
4430 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
*/
3 paul 7
#include "cmykfw.h"
8
#include "cmykfw.moc"
9
#include <qpainter.h>
10
#include <qpopupmenu.h>
11
#include <qcursor.h>
259 Franz 12
#include <qmessagebox.h>
279 Franz 13
#include <qfileinfo.h>
282 Franz 14
#include <qdir.h>
8031 fschmid 15
#include <qdom.h>
279 Franz 16
#include <cstdlib>
2952 cbradney 17
 
18
#include "commonstrings.h"
3543 avox 19
#include "sccombobox.h"
2688 craig 20
#include "scconfig.h"
1693 craig 21
#include "scpaths.h"
5880 jghali 22
#include "scribusdoc.h"
6125 cbradney 23
#include "colorutil.h"
8031 fschmid 24
#include "colorlistbox.h"
3051 fschmid 25
#include "util.h"
7478 jghali 26
#include "sccolorengine.h"
3 paul 27
 
5915 fschmid 28
CMYKChoose::CMYKChoose( QWidget* parent, ScribusDoc* doc, ScColor orig, QString name, ColorList *Colors, QStringList Cust, bool newCol  )
5880 jghali 29
                : QDialog( parent, "fw", true, 0 ), CurrSwatch(doc)
3 paul 30
{
5880 jghali 31
        m_doc = doc;
5915 fschmid 32
        isNew = newCol;
1488 fschmid 33
        if (orig.getColorModel () == colorModelCMYK)
34
                CMYKmode = true;
35
        else
36
                CMYKmode = false;
216 Franz 37
        dynamic = true;
161 Franz 38
        Wsave = false;
259 Franz 39
        EColors = Colors;
279 Franz 40
        CurrSwatch.clear();
3041 fschmid 41
        alertIcon = loadIcon("alert.png");
216 Franz 42
        imageA = QPixmap(50,50);
7478 jghali 43
        imageA.fill( ScColorEngine::getDisplayColor(orig, m_doc) );
44
        if ( ScColorEngine::isOutOfGamut(orig, m_doc) )
5361 cbradney 45
                paintAlert(alertIcon,imageA, 2, 2, false);
216 Franz 46
        imageN = QPixmap(50,50);
7478 jghali 47
        imageN.fill( ScColorEngine::getDisplayColor(orig, m_doc) );
48
        if ( ScColorEngine::isOutOfGamut(orig, m_doc) )
5361 cbradney 49
                paintAlert(alertIcon, imageN, 2, 2, false);
216 Franz 50
        Farbe = orig;
51
        QPixmap image0 = SliderPix(180);
52
        QPixmap image1 = SliderPix(300);
53
        QPixmap image2 = SliderPix(60);
54
        QPixmap image3 = SliderBlack();
7478 jghali 55
        CMYKColor cmyk;
216 Franz 56
        double ccd, cmd, cyd, ckd;
7478 jghali 57
        ScColorEngine::getCMYKValues(orig, m_doc, cmyk);
58
        ccd = cmyk.c / 2.55;
59
        cmd = cmyk.m / 2.55;
60
        cyd = cmyk.y / 2.55;
61
        ckd = cmyk.k / 2.55;
62
        RGBColor rgb;
1488 fschmid 63
        double crd, cgd, cbd;
7478 jghali 64
        ScColorEngine::getRGBValues(orig, m_doc, rgb);
65
        crd = rgb.r / 2.55;
66
        cgd = rgb.g / 2.55;
67
        cbd = rgb.b / 2.55;
216 Franz 68
        resize( 498, 306 );
69
        setCaption( tr( "Edit Color" ) );
70
        setIcon(loadIcon("AppIcon.png"));
71
        CMYKFarbenLayout = new QHBoxLayout( this );
72
        CMYKFarbenLayout->setSpacing( 6 );
73
        CMYKFarbenLayout->setMargin( 11 );
74
        Layout23 = new QVBoxLayout;
75
        Layout23->setSpacing( 7 );
76
        Layout23->setMargin( 0 );
3 paul 77
 
348 Franz 78
        TextLabel1 = new QLabel( tr( "&Name:" ), this, "TextLabel1" );
216 Franz 79
        TextLabel1->setMinimumSize( QSize( 200, 22 ) );
80
        Layout23->addWidget( TextLabel1 );
3 paul 81
 
259 Franz 82
        Farbname = new QLineEdit( this, "Farbname" );
216 Franz 83
        Farbname->setMinimumSize( QSize( 200, 22 ) );
84
        Farbname->setText( name );
348 Franz 85
        TextLabel1->setBuddy( Farbname );
216 Franz 86
        Layout23->addWidget( Farbname );
3 paul 87
 
348 Franz 88
        TextLabel3 = new QLabel( tr( "Color &Model" ), this, "TextLabel3" );
216 Franz 89
        TextLabel3->setMinimumSize( QSize( 100, 22 ) );
90
        Layout23->addWidget( TextLabel3 );
3 paul 91
 
3680 cbradney 92
        ComboBox1 = new ScComboBox( false, this, "ComboBox1" );
216 Franz 93
        ComboBox1->insertItem( tr( "CMYK" ) );
94
        ComboBox1->insertItem( tr( "RGB" ) );
95
        ComboBox1->insertItem( tr( "Web Safe RGB" ) );
1488 fschmid 96
        if (!CMYKmode)
97
                ComboBox1->setCurrentItem( 1 );
348 Franz 98
        TextLabel3->setBuddy( ComboBox1 );
216 Franz 99
        Layout23->addWidget( ComboBox1 );
3057 fschmid 100
 
101
        Separations = new QCheckBox( this, "Separations" );
3080 cbradney 102
        Separations->setText( tr( "Is Spot Color" ) );
3057 fschmid 103
        Separations->setChecked(orig.isSpotColor());
104
        Layout23->addWidget( Separations );
105
 
3060 fschmid 106
        Regist = new QCheckBox( this, "Regist" );
3080 cbradney 107
        Regist->setText( tr( "Is Registration Color" ) );
3060 fschmid 108
        Regist->setChecked(orig.isRegistrationColor());
109
        Layout23->addWidget( Regist );
110
 
111
        QSpacerItem* spacer = new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding );
216 Franz 112
        Layout23->addItem( spacer );
3 paul 113
 
216 Franz 114
        Layout2 = new QGridLayout;
115
        Layout2->setSpacing( 6 );
116
        Layout2->setMargin( 0 );
3 paul 117
 
348 Franz 118
        TextLabel5_2 = new QLabel( tr( "New" ), this, "TextLabel5_2" );
216 Franz 119
        TextLabel5_2->setMinimumSize( QSize( 50, 22 ) );
120
        TextLabel5_2->setMaximumSize( QSize( 100, 22 ) );
3 paul 121
 
216 Franz 122
        Layout2->addWidget( TextLabel5_2, 0, 1 );
3 paul 123
 
348 Franz 124
        OldC = new QLabel( "", this, "OldC" );
216 Franz 125
        OldC->setMinimumSize( QSize( 50, 50 ) );
126
        OldC->setMaximumSize( QSize( 50, 50 ) );
127
        OldC->setFrameShape( QLabel::WinPanel );
128
        OldC->setFrameShadow( QLabel::Sunken );
129
        OldC->setScaledContents( true );
130
        OldC->setAlignment( int( QLabel::AlignCenter ) );
131
        OldC->setPixmap( imageA );
3 paul 132
 
216 Franz 133
        Layout2->addWidget( OldC, 1, 0 );
3 paul 134
 
348 Franz 135
        TextLabel5 = new QLabel( tr( "Old" ), this, "TextLabel5" );
216 Franz 136
        TextLabel5->setMinimumSize( QSize( 50, 22 ) );
137
        TextLabel5->setMaximumSize( QSize( 100, 22 ) );
3 paul 138
 
216 Franz 139
        Layout2->addWidget( TextLabel5, 0, 0 );
3 paul 140
 
348 Franz 141
        NewC = new QLabel( "", this, "NewC" );
216 Franz 142
        NewC->setMinimumSize( QSize( 50, 50 ) );
143
        NewC->setMaximumSize( QSize( 50, 50 ) );
144
        NewC->setFrameShape( QLabel::WinPanel );
145
        NewC->setFrameShadow( QLabel::Sunken );
146
        NewC->setScaledContents( true );
147
        NewC->setAlignment( int( QLabel::AlignCenter ) );
148
        NewC->setPixmap( imageN );
3 paul 149
 
216 Franz 150
        Layout2->addWidget( NewC, 1, 1 );
151
        Layout23->addLayout( Layout2 );
3 paul 152
 
216 Franz 153
        Layout21 = new QHBoxLayout;
154
        Layout21->setSpacing( 20 );
155
        Layout21->setMargin( 10 );
3 paul 156
 
2952 cbradney 157
        Cancel_2 = new QPushButton( CommonStrings::tr_OK, this, "Cancel_2" );
216 Franz 158
        Cancel_2->setDefault( true );
159
        Layout21->addWidget( Cancel_2 );
2952 cbradney 160
        Cancel = new QPushButton( CommonStrings::tr_Cancel, this, "Cancel" );
216 Franz 161
        Layout21->addWidget( Cancel );
162
        Layout23->addLayout( Layout21 );
163
        CMYKFarbenLayout->addLayout( Layout23 );
3 paul 164
 
216 Franz 165
        Frame4 = new QFrame( this, "Frame4" );
166
        Frame4->setFrameShape( QFrame::NoFrame );
167
        Frame4->setFrameShadow( QFrame::Raised );
168
        Frame4Layout = new QVBoxLayout( Frame4 );
169
        Frame4Layout->setSpacing( 6 );
170
        Frame4Layout->setMargin( 0 );
4546 subik 171
 
3680 cbradney 172
        Swatches = new ScComboBox( false, Frame4, "ComboBox1" );
287 Franz 173
        Swatches->insertItem( tr( "HSV-Colormap" ) );
4606 cbradney 174
/*
279 Franz 175
        Swatches->insertItem("X11 RGB-Set");
176
        Swatches->insertItem("X11 Grey-Set");
177
        Swatches->insertItem("Gnome-Set");
178
        Swatches->insertItem("SVG-Set");
1873 mrdocs 179
        Swatches->insertItem("OpenOffice.org-Set");
4606 cbradney 180
*/
181
        csm.findPaletteLocations();
182
        csm.findPalettes();
183
        QStringList allSets(csm.paletteNames());
184
        for ( QStringList::Iterator it = allSets.begin(); it != allSets.end(); ++it )
185
        {
186
                Swatches->insertItem((*it));
187
        }
188
        customSetStartIndex=Swatches->count();
1873 mrdocs 189
 
279 Franz 190
        if (Cust.count() != 0)
191
        {
192
                QStringList realEx;
193
                realEx.clear();
194
                for (uint m = 0; m < Cust.count(); ++m)
195
                {
5917 jghali 196
                        QString Cpfad = QDir::convertSeparators( ScPaths::getApplicationDataDir() +Cust[m]);
279 Franz 197
                        QFileInfo cfi(Cpfad);
198
                        if (cfi.exists())
199
                        {
200
                                Swatches->insertItem(Cust[m]);
201
                                realEx.append(Cust[m]);
202
                        }
203
                }
204
                CColSet = realEx;
205
        }
206
        Frame4Layout->addWidget( Swatches );
4546 subik 207
 
279 Franz 208
        TabStack = new QWidgetStack( Frame4, "TabStack" );
209
        TabStack->setFrameShape( QWidgetStack::NoFrame );
210
 
211
        Frame5a = new QFrame( TabStack, "Frame4" );
212
        Frame5a->setFrameShape( QFrame::NoFrame );
213
        Frame5a->setFrameShadow( QFrame::Raised );
214
        Frame5aLayout = new QHBoxLayout( Frame5a );
215
        Frame5aLayout->setSpacing( 0 );
216
        Frame5aLayout->setMargin( 0 );
217
        Frame5 = new QFrame(Frame5a);
216 Franz 218
        Frame5->setFrameShape( QLabel::WinPanel );
219
        Frame5->setFrameShadow( QLabel::Sunken );
220
        Frame5->setMinimumSize( QSize( 182, 130 ) );
221
        Frame5->setMaximumSize( QSize( 182, 130 ) );
222
        Frame5Layout = new QHBoxLayout( Frame5 );
223
        Frame5Layout->setSpacing( 0 );
224
        Frame5Layout->setMargin( 0 );
5880 jghali 225
        ColorMap = new ColorChart( Frame5, doc);
216 Franz 226
        ColorMap->setMinimumSize( QSize( 180, 128 ) );
227
        ColorMap->setMaximumSize( QSize( 180, 128 ) );
228
        Frame5Layout->addWidget( ColorMap );
279 Franz 229
        Frame5aLayout->addWidget( Frame5, 0, AlignCenter);
230
        TabStack->addWidget( Frame5a, 0 );
4546 subik 231
 
8031 fschmid 232
        ColorSwatch = new ColorListBox(TabStack, "StyledL");
279 Franz 233
        TabStack->addWidget( ColorSwatch, 1 );
3 paul 234
 
279 Franz 235
        Frame4Layout->addWidget( TabStack );
4546 subik 236
 
287 Franz 237
        Layout2x = new QGridLayout;
238
        Layout2x->setSpacing( 6 );
239
        Layout2x->setMargin( 0 );
279 Franz 240
 
348 Franz 241
        CyanT = new QLabel( tr( "C:" ), Frame4, "Cyant" );
287 Franz 242
        Layout2x->addWidget(CyanT, 0, 0);
3 paul 243
 
216 Franz 244
        Layout1_2 = new QVBoxLayout;
245
        Layout1_2->setSpacing( 0 );
246
        Layout1_2->setMargin( 0 );
3 paul 247
 
216 Franz 248
        CyanP = new QLabel( Frame4, "CyanP" );
249
        CyanP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
250
                                           CyanP->sizePolicy().hasHeightForWidth() ) );
251
        CyanP->setMinimumSize( QSize( 200, 10 ) );
252
        CyanP->setPixmap(image0);
253
        CyanP->setScaledContents( true );
254
        Layout1_2->addWidget( CyanP );
3 paul 255
 
216 Franz 256
        CyanSL = new QSlider( Frame4, "CyanSL" );
257
        CyanSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 258
        CyanSL->setMaxValue( 100 );
216 Franz 259
        CyanSL->setOrientation( QSlider::Horizontal );
260
        CyanSL->setTickmarks( QSlider::NoMarks );
261
        Layout1_2->addWidget( CyanSL );
287 Franz 262
        Layout2x->addLayout(Layout1_2, 0, 1);
3 paul 263
 
226 Franz 264
        CyanSp = new MSpinBox( Frame4, 0 );
216 Franz 265
        CyanSp->setMaxValue( 100 );
266
        CyanSp->setSuffix( tr(" %"));
287 Franz 267
        Layout2x->addWidget(CyanSp, 0, 2);
216 Franz 268
        CyanSp->setValue(ccd);
226 Franz 269
        CyanSL->setValue(qRound(ccd));
3 paul 270
 
348 Franz 271
        MagentaT = new QLabel( tr( "M:" ), Frame4, "Cyant" );
287 Franz 272
        Layout2x->addWidget(MagentaT, 1, 0);
3 paul 273
 
216 Franz 274
        Layout1_2_2 = new QVBoxLayout;
275
        Layout1_2_2->setSpacing( 0 );
276
        Layout1_2_2->setMargin( 0 );
3 paul 277
 
216 Franz 278
        MagentaP = new QLabel( Frame4, "MagentaP" );
279
        MagentaP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
280
                                              MagentaP->sizePolicy().hasHeightForWidth() ) );
281
        MagentaP->setMinimumSize( QSize( 200, 10 ) );
282
        MagentaP->setPixmap(image1);
283
        MagentaP->setScaledContents( true );
284
        Layout1_2_2->addWidget( MagentaP );
3 paul 285
 
216 Franz 286
        MagentaSL = new QSlider( Frame4, "MagentaSL" );
287
        MagentaSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 288
        MagentaSL->setMaxValue( 100 );
216 Franz 289
        MagentaSL->setOrientation( QSlider::Horizontal );
290
        MagentaSL->setTickmarks( QSlider::NoMarks );
291
        Layout1_2_2->addWidget( MagentaSL );
287 Franz 292
        Layout2x->addLayout(Layout1_2_2, 1, 1);
3 paul 293
 
226 Franz 294
        MagentaSp = new MSpinBox( Frame4, 0 );
216 Franz 295
        MagentaSp->setMaxValue( 100 );
296
        MagentaSp->setSuffix( tr(" %"));
287 Franz 297
        Layout2x->addWidget(MagentaSp, 1, 2);
216 Franz 298
        MagentaSp->setValue(cmd);
226 Franz 299
        MagentaSL->setValue(qRound(cmd));
3 paul 300
 
348 Franz 301
        YellowT = new QLabel( tr( "Y:" ), Frame4, "Cyant" );
287 Franz 302
        Layout2x->addWidget(YellowT, 2, 0);
3 paul 303
 
216 Franz 304
        Layout1_2_3 = new QVBoxLayout;
305
        Layout1_2_3->setSpacing( 0 );
306
        Layout1_2_3->setMargin( 0 );
3 paul 307
 
216 Franz 308
        YellowP = new QLabel( Frame4, "YellowP" );
309
        YellowP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
310
                                             YellowP->sizePolicy().hasHeightForWidth() ) );
311
        YellowP->setMinimumSize( QSize( 200, 10 ) );
312
        YellowP->setPixmap(image2);
313
        YellowP->setScaledContents( true );
314
        Layout1_2_3->addWidget( YellowP );
3 paul 315
 
216 Franz 316
        YellowSL = new QSlider( Frame4, "YellowSL" );
317
        YellowSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 318
        YellowSL->setMaxValue( 100 );
216 Franz 319
        YellowSL->setOrientation( QSlider::Horizontal );
320
        YellowSL->setTickmarks( QSlider::NoMarks );
321
        Layout1_2_3->addWidget( YellowSL );
287 Franz 322
        Layout2x->addLayout(Layout1_2_3, 2, 1);
3 paul 323
 
226 Franz 324
        YellowSp = new MSpinBox( Frame4, 0 );
216 Franz 325
        YellowSp->setMaxValue( 100 );
326
        YellowSp->setSuffix( tr(" %"));
287 Franz 327
        Layout2x->addWidget(YellowSp, 2, 2);
216 Franz 328
        YellowSp->setValue(cyd);
226 Franz 329
        YellowSL->setValue(qRound(cyd));
3 paul 330
 
348 Franz 331
        BlackT = new QLabel( tr( "K:" ), Frame4, "Cyant" );
287 Franz 332
        Layout2x->addWidget(BlackT, 3, 0);
3 paul 333
 
216 Franz 334
        Layout1_2_4 = new QVBoxLayout;
335
        Layout1_2_4->setSpacing( 0 );
336
        Layout1_2_4->setMargin( 0 );
3 paul 337
 
216 Franz 338
        BlackP = new QLabel( Frame4, "BlackP" );
339
        BlackP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
340
                                            BlackP->sizePolicy().hasHeightForWidth() ) );
341
        BlackP->setMinimumSize( QSize( 200, 10 ) );
342
        BlackP->setPixmap(image3);
343
        BlackP->setScaledContents( true );
344
        Layout1_2_4->addWidget( BlackP );
3 paul 345
 
216 Franz 346
        BlackSL = new QSlider( Frame4, "BlackSL" );
347
        BlackSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 348
        BlackSL->setMaxValue( 100 );
216 Franz 349
        BlackSL->setOrientation( QSlider::Horizontal );
350
        BlackSL->setTickmarks( QSlider::NoMarks );
351
        Layout1_2_4->addWidget( BlackSL );
287 Franz 352
        Layout2x->addLayout(Layout1_2_4, 3, 1);
3 paul 353
 
226 Franz 354
        BlackSp = new MSpinBox( Frame4, 0 );
216 Franz 355
        BlackSp->setMaxValue( 100 );
356
        BlackSp->setSuffix( tr(" %"));
287 Franz 357
        Layout2x->addWidget(BlackSp, 3, 2);
216 Franz 358
        BlackSp->setValue(ckd);
226 Franz 359
        BlackSL->setValue(qRound(ckd));
7478 jghali 360
        BlackComp = cmyk.k;
287 Franz 361
        Frame4Layout->addLayout( Layout2x );
4179 fschmid 362
        QSpacerItem* spacer2 = new QSpacerItem( 2, 2, QSizePolicy::Minimum, QSizePolicy::Expanding );
363
        Frame4Layout->addItem( spacer2 );
216 Franz 364
        CMYKFarbenLayout->addWidget( Frame4 );
365
        int h, s, v;
7478 jghali 366
        ScColorEngine::getRGBColor(orig, m_doc).hsv(&h, &s, &v);
216 Franz 367
        ColorMap->drawPalette(v);
368
        ColorMap->setMark(h, s);
344 Franz 369
        Fnam = name;
259 Franz 370
        Farbname->selectAll();
371
        Farbname->setFocus();
279 Franz 372
        TabStack->raiseWidget(0);
4179 fschmid 373
        setFixedSize(minimumSizeHint());
216 Franz 374
        // signals and slots connections
6433 cbradney 375
        QToolTip::add( Regist, "<qt>" + tr( "Choosing this will enable printing this on all plates. Registration colors are used for printer marks such as crop marks, registration marks and the like. These are not typically used in the layout itself." ) + "</qt>");
376
        QToolTip::add( Separations, "<qt>" + tr( "Choosing this will make this color a spot color, thus creating another spot when creating plates or separations. This is used most often when a logo or other color needs exact representation or cannot be replicated with CMYK inks. Metallic and fluorescent inks are good examples which cannot be easily replicated with CMYK inks." ) + "</qt>");
216 Franz 377
        connect( Cancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
259 Franz 378
        connect( Cancel_2, SIGNAL( clicked() ), this, SLOT( Verlassen() ) );
216 Franz 379
        connect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
380
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
381
        connect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
382
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
383
        connect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
384
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
385
        connect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
386
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
387
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
388
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
389
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
390
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
391
        connect( ColorMap, SIGNAL( ColorVal(int, int, bool)), this, SLOT( setColor2(int, int, bool)));
392
        connect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
279 Franz 393
        connect( Swatches, SIGNAL(activated(int)), this, SLOT(SelSwatch(int)));
394
        connect(ColorSwatch, SIGNAL(highlighted(int)), this, SLOT(SelFromSwatch(int)));
3057 fschmid 395
        connect(Separations, SIGNAL(clicked()), this, SLOT(setSpot()));
3060 fschmid 396
        connect(Regist, SIGNAL(clicked()), this, SLOT(setRegist()));
4179 fschmid 397
        layout()->activate();
1488 fschmid 398
        if (!CMYKmode)
399
                SelModel ( tr( "RGB" ));
3 paul 400
}
401
 
402
void CMYKChoose::mouseReleaseEvent(QMouseEvent *m)
403
{
404
        if (m->button() == RightButton)
161 Franz 405
        {
3 paul 406
                QPopupMenu *pmen = new QPopupMenu();
407
                qApp->setOverrideCursor(QCursor(ArrowCursor), true);
112 Franz 408
                int px = pmen->insertItem( tr("Dynamic Color Bars"), this, SLOT(ToggleSL()));
409
                int py = pmen->insertItem( tr("Static Color Bars"), this, SLOT(ToggleSL()));
80 Franz 410
                pmen->setItemChecked((dynamic ? px : py) , true);
3 paul 411
                pmen->exec(QCursor::pos());
412
                delete pmen;
161 Franz 413
        }
3 paul 414
}
415
 
216 Franz 416
void CMYKChoose::SetValueS(int val)
417
{
418
        disconnect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
419
        disconnect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
420
        disconnect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
421
        disconnect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
226 Franz 422
        if (CyanSL == sender())
423
                CyanSp->setValue(val);
424
        if (MagentaSL == sender())
425
                MagentaSp->setValue(val);
426
        if (YellowSL == sender())
427
                YellowSp->setValue(val);
428
        if (BlackSL == sender())
429
                BlackSp->setValue(val);
216 Franz 430
        setColor();
431
        connect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
432
        connect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
433
        connect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
434
        connect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
435
}
436
 
3 paul 437
void CMYKChoose::ToggleSL()
438
{
439
        dynamic = !dynamic;
161 Franz 440
        CyanP->setPixmap(SliderPix(CMYKmode ? 180 : 0));
441
        MagentaP->setPixmap(SliderPix(CMYKmode? 300 : 120));
442
        YellowP->setPixmap(SliderPix(CMYKmode? 60 : 240));
443
        if (CMYKmode)
444
                BlackP->setPixmap(SliderBlack());
3 paul 445
}
446
 
447
QPixmap CMYKChoose::SliderPix(int farbe)
448
{
7478 jghali 449
        RGBColor rgb;
450
        CMYKColor cmyk;
161 Franz 451
        QPixmap image0 = QPixmap(255,10);
452
        QPainter p;
453
        p.begin(&image0);
454
        p.setPen(NoPen);
3 paul 455
        int r, g, b, c, m, y, k;
456
        QColor tmp;
216 Franz 457
        for (int x = 0; x < 255; x += 5)
458
        {
459
                if (CMYKmode)
259 Franz 460
                {
7478 jghali 461
                        ScColorEngine::getCMYKValues(Farbe, m_doc, cmyk);
462
                        cmyk.getValues(c, m, y, k);
216 Franz 463
                        if (dynamic)
464
                        {
465
                                switch (farbe)
466
                                {
467
                                case 180:
7478 jghali 468
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(x, m, y, k), m_doc);
216 Franz 469
                                        break;
470
                                case 300:
7478 jghali 471
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(c, x, y, k), m_doc);
216 Franz 472
                                        break;
473
                                case 60:
7478 jghali 474
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(c, m, x, k), m_doc);
216 Franz 475
                                        break;
476
                                }
3 paul 477
                                p.setBrush(tmp);
216 Franz 478
                        }
479
                        else
1488 fschmid 480
                        {
481
                                switch (farbe)
482
                                {
483
                                case 180:
7478 jghali 484
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(x, 0, 0, 0), m_doc);
1488 fschmid 485
                                        break;
486
                                case 300:
7478 jghali 487
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(0, x, 0, 0), m_doc);
1488 fschmid 488
                                        break;
489
                                case 60:
7478 jghali 490
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(0, 0, x, 0), m_doc);
1488 fschmid 491
                                        break;
492
                                }
493
                                p.setBrush(tmp);
494
                        }
259 Franz 495
                }
216 Franz 496
                else
497
                {
7478 jghali 498
                        ScColorEngine::getRGBValues(Farbe, m_doc, rgb);
499
                        rgb.getValues(r, g, b);
216 Franz 500
                        if (dynamic)
501
                        {
502
                                switch (farbe)
503
                                {
504
                                case 0:
7478 jghali 505
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(x, g, b), m_doc);
216 Franz 506
                                        break;
507
                                case 120:
7478 jghali 508
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(r, x, b), m_doc);
216 Franz 509
                                        break;
510
                                case 240:
7478 jghali 511
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(r, g, x), m_doc);
216 Franz 512
                                        break;
513
                                }
1488 fschmid 514
                                p.setBrush(tmp);
216 Franz 515
                        }
516
                        else
1488 fschmid 517
                        {
518
                                switch (farbe)
519
                                {
520
                                case 0:
7478 jghali 521
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(x, 0, 0), m_doc);
1488 fschmid 522
                                        break;
523
                                case 120:
7478 jghali 524
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(0, x, 0), m_doc);
1488 fschmid 525
                                        break;
526
                                case 240:
7478 jghali 527
                                        tmp = ScColorEngine::getDisplayColorGC(ScColor(0, 0, x), m_doc);
1488 fschmid 528
                                        break;
529
                                }
530
                                p.setBrush(tmp);
531
                        }
216 Franz 532
                }
533
                p.drawRect(x, 0, 5, 10);
161 Franz 534
        }
216 Franz 535
        p.end();
536
        return image0;
3 paul 537
}
538
 
539
QPixmap CMYKChoose::SliderBlack()
540
{
161 Franz 541
        QPixmap image0 = QPixmap(255,10);
542
        QPainter p;
543
        int val = 255;
544
        p.begin(&image0);
545
        p.setPen(NoPen);
546
        int c, m, y, k;
7478 jghali 547
        CMYKColor cmyk;
548
        ScColorEngine::getCMYKValues(Farbe, m_doc, cmyk);
549
        cmyk.getValues(c, m, y, k);
161 Franz 550
        for (int x = 0; x < 255; x += 5)
216 Franz 551
        {
552
                if (dynamic)
7478 jghali 553
                        p.setBrush( ScColorEngine::getDisplayColorGC(ScColor(c, m, y, x), m_doc) );
216 Franz 554
                else
7478 jghali 555
                        p.setBrush( ScColorEngine::getDisplayColorGC(ScColor(0, 0, 0, x), m_doc) );
216 Franz 556
                p.drawRect(x, 0, 5, 10);
557
                val -= 5;
558
        }
559
        p.end();
560
        return image0;
3 paul 561
}
562
 
279 Franz 563
void CMYKChoose::SelSwatch(int n)
564
{
565
        if (n == 0)
566
                TabStack->raiseWidget(0);
567
        else
568
        {
569
                bool cus = false;
570
                CurrSwatch.clear();
5917 jghali 571
                QString Cpfad = QDir::convertSeparators(ScPaths::getApplicationDataDir() + Swatches->currentText());
4602 cbradney 572
                QString pfadC = ScPaths::instance().libDir()+"swatches/";
4606 cbradney 573
                QString pfadC2 = pfadC + "Scribus_X11.txt";
279 Franz 574
                switch (n)
575
                {
4606 cbradney 576
                        /*
279 Franz 577
                case 1:
4606 cbradney 578
                        pfadC2 = pfadC + "Scribus_X11.txt";
279 Franz 579
                        break;
580
                case 2:
4606 cbradney 581
                        pfadC2 = pfadC + "Scribus_X11Grey.txt";
279 Franz 582
                        break;
583
                case 3:
4606 cbradney 584
                        pfadC2 = pfadC + "Scribus_Gnome.txt";
279 Franz 585
                        break;
586
                case 4:
4606 cbradney 587
                        pfadC2 = pfadC + "Scribus_SVG.txt";
279 Franz 588
                        break;
1967 fschmid 589
                case 5:
4606 cbradney 590
                        pfadC2 = pfadC + "Scribus_OpenOffice.txt";
1967 fschmid 591
                        cus = true;
592
                        break;
4606 cbradney 593
                        */
279 Franz 594
                default:
4606 cbradney 595
                        if (n<customSetStartIndex)
596
                        {
597
                                QString listText=Swatches->text(n);
598
                                if (listText=="Scribus OpenOffice")
599
                                        cus=true;
600
                                pfadC2 = csm.paletteFileFromName(listText);
601
                        }
602
                        else
603
                        {
604
                                pfadC2 = Cpfad;
605
                                cus = true;
606
                        }
279 Franz 607
                        break;
608
                }
609
                if (n != 0)
610
                {
611
                        QFile fiC(pfadC2);
612
                        if (fiC.open(IO_ReadOnly))
613
                        {
614
                                QString ColorEn, Cname;
615
                                int Rval, Gval, Bval, Kval;
616
                                QTextStream tsC(&fiC);
617
                                ColorEn = tsC.readLine();
8031 fschmid 618
                                if (ColorEn.startsWith("<?xml version="))
279 Franz 619
                                {
8031 fschmid 620
                                        QCString docBytes("");
621
                                        loadRawText(pfadC2, docBytes);
622
                                        QString docText("");
623
                                        docText = QString::fromUtf8(docBytes);
624
                                        QDomDocument docu("scridoc");
625
                                        docu.setContent(docText);
626
                                        ScColor lf = ScColor();
627
                                        QDomElement elem = docu.documentElement();
628
                                        QDomNode PAGE = elem.firstChild();
629
                                        while(!PAGE.isNull())
279 Franz 630
                                        {
8031 fschmid 631
                                                QDomElement pg = PAGE.toElement();
632
                                                if(pg.tagName()=="COLOR" && pg.attribute("NAME")!=CommonStrings::None)
633
                                                {
634
                                                        if (pg.hasAttribute("CMYK"))
635
                                                                lf.setNamedColor(pg.attribute("CMYK"));
636
                                                        else
637
                                                                lf.fromQColor(QColor(pg.attribute("RGB")));
638
                                                        if (pg.hasAttribute("Spot"))
639
                                                                lf.setSpotColor(static_cast<bool>(pg.attribute("Spot").toInt()));
640
                                                        else
641
                                                                lf.setSpotColor(false);
642
                                                        if (pg.hasAttribute("Register"))
643
                                                                lf.setRegistrationColor(static_cast<bool>(pg.attribute("Register").toInt()));
644
                                                        else
645
                                                                lf.setRegistrationColor(false);
646
                                                        CurrSwatch.insert(pg.attribute("NAME"), lf);
647
                                                }
648
                                                PAGE=PAGE.nextSibling();
279 Franz 649
                                        }
8031 fschmid 650
                                }
651
                                else
652
                                {
653
                                        while (!tsC.atEnd())
279 Franz 654
                                        {
8031 fschmid 655
                                                ScColor tmp;
656
                                                ColorEn = tsC.readLine();
657
                                                if (ColorEn.length()>0 && ColorEn[0]==QChar('#'))
658
                                                        continue;
659
                                                QTextStream CoE(&ColorEn, IO_ReadOnly);
660
                                                CoE >> Rval;
661
                                                CoE >> Gval;
662
                                                CoE >> Bval;
663
                                                if (cus)
664
                                                {
665
                                                        CoE >> Kval;
666
                                                        Cname = CoE.read().stripWhiteSpace();
667
                                                        tmp.setColor(Rval, Gval, Bval, Kval);
668
                                                }
4608 cbradney 669
                                                else
8031 fschmid 670
                                                {
671
                                                        Cname = CoE.read().stripWhiteSpace();
672
                                                        tmp.setColorRGB(Rval, Gval, Bval);
673
                                                }
674
 
675
                                                if ((n<customSetStartIndex) && (Cname.length()==0))
676
                                                {
677
                                                        if (!cus)
678
                                                                Cname=QString("#%1%2%3").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).upper();
679
                                                        else
680
                                                                Cname=QString("#%1%2%3%4").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).arg(Kval,2,16).upper();
681
                                                        Cname.replace(" ","0");
682
                                                }
683
                                                if (CurrSwatch.contains(Cname))
684
                                                {
685
                                                        if (tmp==CurrSwatch[Cname])
686
                                                                continue;
687
                                                        Cname=QString("%1%2").arg(Cname).arg(CurrSwatch.count());
688
                                                }
689
 
690
                                                CurrSwatch.insert(Cname, tmp);
4606 cbradney 691
                                        }
279 Franz 692
                                }
693
                                fiC.close();
694
                        }
695
                        else
696
                        {
7478 jghali 697
                                CurrSwatch.insert("White", ScColor(0, 0, 0, 0));
698
                                CurrSwatch.insert("Black", ScColor(0, 0, 0, 255));
699
                                CurrSwatch.insert("Blue", ScColor(255, 255, 0, 0));
700
                                CurrSwatch.insert("Cyan", ScColor(255, 0, 0, 0));
701
                                CurrSwatch.insert("Green", ScColor(255, 0, 255, 0));
702
                                CurrSwatch.insert("Red", ScColor(0, 255, 255, 0));
703
                                CurrSwatch.insert("Yellow", ScColor(0, 0, 255, 0));
704
                                CurrSwatch.insert("Magenta", ScColor(0, 255, 0, 0));
279 Franz 705
                        }
706
                }
707
                ColorSwatch->clear();
1065 cbradney 708
                ColorList::Iterator it;
279 Franz 709
                QPixmap pm = QPixmap(30, 15);
710
                for (it = CurrSwatch.begin(); it != CurrSwatch.end(); ++it)
711
                {
8031 fschmid 712
                        ColorSwatch->insertItem( new ColorFancyPixmapItem(it.data(), m_doc, it.key()) );
713
//                      pm.fill( ScColorEngine::getDisplayColor(CurrSwatch[it.key()], m_doc) );
714
//                      ColorSwatch->insertItem(pm, it.key());
279 Franz 715
                }
716
                ColorSwatch->setSelected(ColorSwatch->currentItem(), false);
717
                TabStack->raiseWidget(1);
718
        }
719
}
720
 
3060 fschmid 721
void CMYKChoose::setRegist()
722
{
723
        disconnect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
724
        if (Regist->isChecked())
725
        {
726
                ComboBox1->setCurrentItem( 0 );
727
                Separations->setChecked(false);
728
                SelModel( tr("CMYK"));
729
        }
730
        connect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
731
}
732
 
3057 fschmid 733
void CMYKChoose::setSpot()
734
{
735
        disconnect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
736
        if (Separations->isChecked())
737
        {
738
                ComboBox1->setCurrentItem( 0 );
3060 fschmid 739
                Regist->setChecked(false);
3057 fschmid 740
                SelModel( tr("CMYK"));
741
        }
742
        connect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
743
}
744
 
3 paul 745
void CMYKChoose::SelModel(const QString& mod)
746
{
217 Franz 747
        disconnect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
748
        disconnect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
749
        disconnect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
750
        disconnect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
751
        disconnect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
752
        disconnect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
753
        disconnect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
754
        disconnect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
755
        disconnect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
756
        disconnect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
757
        disconnect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
758
        disconnect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
3 paul 759
        if (mod == tr("CMYK"))
161 Franz 760
        {
3 paul 761
                CMYKmode = true;
762
                Wsave = false;
226 Franz 763
                CyanSL->setMaxValue( 100 );
764
                MagentaSL->setMaxValue( 100 );
765
                YellowSL->setMaxValue( 100 );
766
                CyanSp->setMaxValue( 100 );
767
                MagentaSp->setMaxValue( 100);
768
                YellowSp->setMaxValue( 100 );
217 Franz 769
                CyanSL->setLineStep(1);
770
                MagentaSL->setLineStep(1);
771
                YellowSL->setLineStep(1);
772
                CyanSL->setPageStep(10);
773
                MagentaSL->setPageStep(10);
774
                YellowSL->setPageStep(10);
226 Franz 775
                CyanSp->setDecimals(1);
776
                MagentaSp->setDecimals(1);
777
                YellowSp->setDecimals(1);
778
                CyanSp->setLineStep(1);
779
                MagentaSp->setLineStep(1);
780
                YellowSp->setLineStep(1);
217 Franz 781
                CyanSp->setSuffix( tr(" %"));
782
                MagentaSp->setSuffix( tr(" %"));
783
                YellowSp->setSuffix( tr(" %"));
112 Franz 784
                CyanT->setText( tr("C:"));
785
                MagentaT->setText( tr("M:"));
786
                YellowT->setText( tr("Y:"));
216 Franz 787
                CyanP->setPixmap(SliderPix(180));
788
                MagentaP->setPixmap(SliderPix(300));
789
                YellowP->setPixmap(SliderPix(60));
790
                BlackP->setPixmap(SliderBlack());
4179 fschmid 791
/*              BlackP->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
792
                BlackSL->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
793
                BlackSp->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
794
                BlackT->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); */
216 Franz 795
                BlackP->show();
796
                BlackSL->show();
797
                BlackSp->show();
798
                BlackT->show();
7478 jghali 799
                Farbe = ScColorEngine::convertToModel(Farbe, m_doc, colorModelCMYK);
216 Franz 800
                setValues();
161 Franz 801
        }
3 paul 802
        else
216 Franz 803
                //      if (mod == tr("RGB"))
161 Franz 804
        {
3 paul 805
                CMYKmode = false;
806
                Wsave = false;
217 Franz 807
                CyanSL->setMaxValue( 255 );
808
                MagentaSL->setMaxValue( 255 );
809
                YellowSL->setMaxValue( 255 );
810
                CyanSL->setLineStep(1);
811
                MagentaSL->setLineStep(1);
812
                YellowSL->setLineStep(1);
813
                CyanSL->setPageStep(1);
814
                MagentaSL->setPageStep(1);
815
                YellowSL->setPageStep(1);
816
                CyanSp->setDecimals(1);
817
                MagentaSp->setDecimals(1);
818
                YellowSp->setDecimals(1);
819
                CyanSp->setLineStep(1);
820
                MagentaSp->setLineStep(1);
821
                YellowSp->setLineStep(1);
822
                CyanSp->setMaxValue( 255 );
823
                MagentaSp->setMaxValue( 255 );
824
                YellowSp->setMaxValue( 255 );
825
                CyanSp->setSuffix("");
826
                MagentaSp->setSuffix("");
827
                YellowSp->setSuffix("");
112 Franz 828
                CyanT->setText( tr("R:"));
829
                MagentaT->setText( tr("G:"));
830
                YellowT->setText( tr("B:"));
216 Franz 831
                CyanP->setPixmap(SliderPix(0));
832
                MagentaP->setPixmap(SliderPix(120));
833
                YellowP->setPixmap(SliderPix(240));
3424 fschmid 834
                Layout2x->setResizeMode(QLayout::Fixed);
4179 fschmid 835
/*              BlackP->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
836
                BlackSL->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
837
                BlackSp->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
838
                BlackT->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored)); */
216 Franz 839
                BlackP->hide();
840
                BlackSL->hide();
841
                BlackSp->hide();
842
                BlackT->hide();
178 Franz 843
                if (mod == tr("Web Safe RGB"))
161 Franz 844
                {
3 paul 845
                        Wsave = true;
217 Franz 846
                        CyanSL->setLineStep(51);
847
                        MagentaSL->setLineStep(51);
848
                        YellowSL->setLineStep(51);
849
                        CyanSL->setPageStep(51);
850
                        MagentaSL->setPageStep(51);
851
                        YellowSL->setPageStep(51);
852
                        CyanSp->setLineStep(51);
853
                        MagentaSp->setLineStep(51);
854
                        YellowSp->setLineStep(51);
161 Franz 855
                }
7478 jghali 856
                Farbe = ScColorEngine::convertToModel(Farbe, m_doc, colorModelRGB);
216 Franz 857
                setValues();
161 Franz 858
        }
7478 jghali 859
        imageN.fill( ScColorEngine::getDisplayColor(Farbe, m_doc) );
860
        if (ScColorEngine::isOutOfGamut(Farbe, m_doc))
5369 mrdocs 861
                paintAlert(alertIcon, imageN, 2, 2, false);
862
        NewC->setPixmap( imageN );
5690 mrdocs 863
        QToolTip::add( NewC, "<qt>" + tr( "If color management is enabled, a triangle warning indicator is a warning the the color maybe outside of the color gamut of the current printer profile selected. What this means is the color may not print exactly as indicated on screen. More hints about gamut warnings are in the online help under Color Management." ) + "</qt>");
864
        QToolTip::add( OldC, "<qt>" + tr( "If color management is enabled, a triangle warning indicator is a warning the the color maybe outside of the color gamut of the current printer profile selected. What this means is the color may not print exactly as indicated on screen. More hints about gamut warnings are in the online help under Color Management." ) + "</qt>");
865
 
217 Franz 866
        connect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
867
        connect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
868
        connect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
869
        connect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
870
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
871
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
872
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
873
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
874
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
875
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
876
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
877
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
3 paul 878
}
879
 
880
void CMYKChoose::setColor()
881
{
217 Franz 882
        int c, m, y, k;
883
        if (CMYKmode)
884
        {
1488 fschmid 885
                c = qRound(CyanSp->value() * 2.55);
886
                m = qRound(MagentaSp->value() * 2.55);
887
                y = qRound(YellowSp->value() * 2.55);
888
                k = qRound(BlackSp->value() * 2.55);
217 Franz 889
        }
890
        else
891
        {
892
                c = qRound(CyanSp->value());
893
                m = qRound(MagentaSp->value());
894
                y = qRound(YellowSp->value());
895
                k = qRound(BlackSp->value());
896
        }
216 Franz 897
        int h, s, v;
898
        BlackComp = k;
3 paul 899
        if (Wsave)
161 Franz 900
        {
3 paul 901
                blockSignals(true);
217 Franz 902
                c = c / 51 * 51;
903
                m = m / 51 * 51;
904
                y = y / 51 * 51;
905
                CyanSp->setValue(c);
906
                MagentaSp->setValue(m);
907
                YellowSp->setValue(y);
908
                CyanSL->setValue(c);
909
                MagentaSL->setValue(m);
910
                YellowSL->setValue(y);
3 paul 911
                blockSignals(false);
161 Franz 912
        }
7478 jghali 913
        ScColor tmp;
3 paul 914
        if (CMYKmode)
161 Franz 915
        {
1488 fschmid 916
                tmp.setColor(c, m, y, k);
216 Franz 917
                if (dynamic)
918
                {
919
                        CyanP->setPixmap(SliderPix(180));
920
                        MagentaP->setPixmap(SliderPix(300));
921
                        YellowP->setPixmap(SliderPix(60));
922
                        BlackP->setPixmap(SliderBlack());
923
                }
161 Franz 924
        }
3 paul 925
        else
161 Franz 926
        {
7478 jghali 927
                tmp.setColorRGB(c, m, y);
3 paul 928
                QColor tmp2 = QColor(c, m, y, QColor::Rgb);
929
                tmp2.hsv(&h, &s, &v);
216 Franz 930
                BlackComp = 255 - v;
931
                if (dynamic)
932
                {
933
                        CyanP->setPixmap(SliderPix(0));
934
                        MagentaP->setPixmap(SliderPix(120));
935
                        YellowP->setPixmap(SliderPix(240));
936
                }
161 Franz 937
        }
7478 jghali 938
        imageN.fill(ScColorEngine::getDisplayColor(tmp, m_doc) );
939
        if ( ScColorEngine::isOutOfGamut(tmp, m_doc) )
5361 cbradney 940
                paintAlert(alertIcon, imageN, 2, 2, false);
7478 jghali 941
        ScColorEngine::getRGBColor(tmp, m_doc).hsv(&h, &s, &v);
161 Franz 942
        NewC->setPixmap( imageN );
943
        Farbe = tmp;
944
        ColorMap->drawPalette(v);
216 Franz 945
        ColorMap->setMark(h, s);
3 paul 946
}
947
 
948
void CMYKChoose::setColor2(int h, int s, bool ende)
949
{
950
        QColor tm = QColor(QMAX(QMIN(359,h),0), QMAX(QMIN(255,255-s),0), 255-BlackComp, QColor::Hsv);
951
        int r, g, b;
952
        tm.rgb(&r, &g, &b);
7478 jghali 953
        ScColor tmp;
1488 fschmid 954
        tmp.fromQColor(tm);
3 paul 955
        if (CMYKmode)
7478 jghali 956
        {
957
                CMYKColor cmyk;
958
                ScColorEngine::getCMYKValues(tmp, m_doc, cmyk);
959
                tmp.setColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k);
960
        }
961
        imageN.fill( ScColorEngine::getDisplayColor(tmp, m_doc) );
962
        if ( ScColorEngine::isOutOfGamut(tmp, m_doc) )
5361 cbradney 963
                paintAlert(alertIcon, imageN, 2, 2, false);
161 Franz 964
        NewC->setPixmap( imageN );
965
        Farbe = tmp;
966
        if (ende)
216 Franz 967
                setValues();
3 paul 968
}
969
 
279 Franz 970
void CMYKChoose::SelFromSwatch(int c)
971
{
2886 fschmid 972
        ScColor tmp = CurrSwatch[ColorSwatch->text(c)];
8031 fschmid 973
        if (tmp.getColorModel() == colorModelCMYK)
974
                SelModel( tr("CMYK"));
975
        else
976
                SelModel( tr("RGB"));
977
/*      if (CMYKmode)
7478 jghali 978
        {
979
                CMYKColor cmyk;
980
                ScColorEngine::getCMYKValues(tmp, m_doc, cmyk);
981
                tmp.setColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k);
8031 fschmid 982
        } */
7478 jghali 983
        imageN.fill( ScColorEngine::getDisplayColor(tmp, m_doc) );
984
        if ( ScColorEngine::isOutOfGamut(tmp, m_doc) )
5361 cbradney 985
                paintAlert(alertIcon, imageN, 2, 2, false);
279 Franz 986
        NewC->setPixmap( imageN );
987
        Farbe = tmp;
988
        setValues();
8031 fschmid 989
        Separations->setChecked(tmp.isSpotColor());
990
        Regist->setChecked(tmp.isRegistrationColor());
279 Franz 991
}
992
 
3 paul 993
void CMYKChoose::setValues()
994
{
995
        if (CMYKmode)
161 Franz 996
        {
7478 jghali 997
                CMYKColor cmyk;
216 Franz 998
                int cc, cm, cy, ck;
7478 jghali 999
                ScColorEngine::getCMYKValues(Farbe, m_doc, cmyk);
1000
                cmyk.getValues(cc, cm, cy, ck);
216 Franz 1001
                CyanSp->setValue(cc / 2.55);
226 Franz 1002
                CyanSL->setValue(qRound(cc / 2.55));
216 Franz 1003
                MagentaSp->setValue(cm / 2.55);
226 Franz 1004
                MagentaSL->setValue(qRound(cm / 2.55));
216 Franz 1005
                YellowSp->setValue(cy / 2.55);
226 Franz 1006
                YellowSL->setValue(qRound(cy / 2.55));
216 Franz 1007
                BlackSp->setValue(ck / 2.55);
226 Franz 1008
                BlackSL->setValue(qRound(ck / 2.55));
216 Franz 1009
                if (dynamic)
1010
                {
1011
                        CyanP->setPixmap(SliderPix(180));
1012
                        MagentaP->setPixmap(SliderPix(300));
1013
                        YellowP->setPixmap(SliderPix(60));
1014
                        BlackP->setPixmap(SliderBlack());
1015
                }
1016
        }
161 Franz 1017
        else
216 Franz 1018
        {
7478 jghali 1019
                RGBColor rgb;
216 Franz 1020
                int r, g, b;
7478 jghali 1021
                ScColorEngine::getRGBValues(Farbe, m_doc, rgb);
1022
                rgb.getValues(r, g, b);
217 Franz 1023
                CyanSp->setValue(static_cast<double>(r));
1024
                CyanSL->setValue(r);
1025
                MagentaSp->setValue(static_cast<double>(g));
1026
                MagentaSL->setValue(g);
1027
                YellowSp->setValue(static_cast<double>(b));
1028
                YellowSL->setValue(b);
216 Franz 1029
                int h, s, v;
7478 jghali 1030
                ScColorEngine::getRGBColor(Farbe, m_doc).hsv(&h, &s, &v);
216 Franz 1031
                BlackComp = 255 - v;
1032
                if (dynamic)
1033
                {
1034
                        CyanP->setPixmap(SliderPix(0));
1035
                        MagentaP->setPixmap(SliderPix(120));
1036
                        YellowP->setPixmap(SliderPix(240));
1037
                }
1038
        }
3 paul 1039
}
1040
 
259 Franz 1041
void CMYKChoose::Verlassen()
1042
{
494 fschmid 1043
        // if condition 10/21/2004 pv #1191 - just be sure that user cannot create "None" color
8439 cbradney 1044
        if (Farbname->text() == CommonStrings::None || Farbname->text() == CommonStrings::tr_NoneColor)
494 fschmid 1045
        {
3510 cbradney 1046
                QMessageBox::information(this, CommonStrings::trWarning, tr("You cannot create a color named \"%1\".\nIt is a reserved name for transparent color").arg(Farbname->text()), 0);
494 fschmid 1047
                Farbname->setFocus();
1048
                Farbname->selectAll();
1049
                return;
1050
        }
5915 fschmid 1051
        if ((Fnam != Farbname->text()) || (isNew))
259 Franz 1052
        {
344 Franz 1053
                if (EColors->contains(Farbname->text()))
1054
                {
5915 fschmid 1055
                        QMessageBox::information(this, CommonStrings::trWarning, tr("The name of the color already exists,\nplease choose another one."), CommonStrings::tr_OK, 0, 0, 0, QMessageBox::Ok);
344 Franz 1056
                        Farbname->selectAll();
1057
                        Farbname->setFocus();
1058
                        return;
1059
                }
1060
                else
1061
                        accept();
259 Franz 1062
        }
1063
        else
1064
                accept();
1065
}