Subversion Repositories Scribus

Rev

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