Subversion Repositories Scribus

Rev

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