Subversion Repositories Scribus

Rev

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