Subversion Repositories Scribus

Rev

Rev 16895 | Rev 16968 | 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
*/
1789 fschmid 7
 
3540 cbradney 8
 
10862 cbradney 9
#include "propertiespalette.h"
3457 avox 10
 
10200 cbradney 11
#include <QCloseEvent>
9931 fschmid 12
#include <QComboBox>
10200 cbradney 13
#include <QEvent>
14
#include <QFocusEvent>
8501 cbradney 15
#include <QKeyEvent>
13951 fschmid 16
#include <QTransform>
10200 cbradney 17
#include <QObject>
9931 fschmid 18
#include <QPoint>
10200 cbradney 19
#include <QSpacerItem>
20
#include <QStackedWidget>
9931 fschmid 21
#include <QTimer>
10200 cbradney 22
#include <QToolBox>
23
#include <QToolTip>
24
#include <QVBoxLayout>
25
#include <QValidator>
26
#include <QWidget>
3934 cbradney 27
 
14170 jghali 28
#if defined(_MSC_VER)
29
#define _USE_MATH_DEFINES
30
#endif
9931 fschmid 31
#include <cmath>
3934 cbradney 32
#include "arrowchooser.h"
121 Franz 33
#include "autoform.h"
12092 fschmid 34
#include "basepointwidget.h"
3934 cbradney 35
#include "commonstrings.h"
7747 jghali 36
#include "colorlistbox.h"
9796 fschmid 37
#include "sccolorengine.h"
3934 cbradney 38
#include "cpalette.h"
10601 mrdocs 39
#include "pageitem_textframe.h"
15600 jghali 40
#include "propertiespalette_group.h"
15536 jghali 41
#include "propertiespalette_image.h"
15553 jghali 42
#include "propertiespalette_line.h"
15529 jghali 43
#include "propertiespalette_shape.h"
16894 jghali 44
#include "propertiespalette_table.h"
15634 jghali 45
#include "propertiespalette_text.h"
15518 jghali 46
#include "propertiespalette_utils.h"
47
#include "propertiespalette_xyz.h"
3934 cbradney 48
#include "sccombobox.h"
49
#include "scfonts.h"
173 Franz 50
#include "scribus.h"
5243 cbradney 51
#include "scribuscore.h"
4695 cbradney 52
#include "scraction.h"
3934 cbradney 53
#include "scribusview.h"
54
#include "selection.h"
55
#include "spalette.h"
710 cbradney 56
#include "styleselect.h"
13606 jghali 57
#include "tabmanager.h"
15518 jghali 58
#include "transparencypalette.h"
806 cbradney 59
#include "units.h"
1263 tsoots 60
#include "undomanager.h"
2531 craig 61
#include "util.h"
10200 cbradney 62
#include "util_icon.h"
14284 fschmid 63
#include "util_math.h"
5184 avox 64
#include "text/nlsconfig.h"
11206 fschmid 65
#include "dasheditor.h"
14389 cbradney 66
#include "fontcombo.h"
67
#include "colorcombo.h"
504 cbradney 68
 
14284 fschmid 69
//using namespace std;
504 cbradney 70
 
15844 jghali 71
PropertiesPalette::PropertiesPalette( QWidget* parent) : ScDockPalette( parent, "PropertiesPalette", 0)
3 paul 72
{
5781 cbradney 73
        m_ScMW=0;
15741 jghali 74
        m_doc=0;
75
        m_haveDoc = false;
76
        m_haveItem = false;
8605 cbradney 77
        m_unitRatio = 1.0;
15661 jghali 78
 
16584 jghali 79
        setObjectName(QString::fromLocal8Bit("PropertiesPalette"));
10529 fschmid 80
        setSizePolicy( QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
3 paul 81
 
16584 jghali 82
//      MpalLayout = new QVBoxLayout();
83
//      MpalLayout->setMargin(5);
84
//      MpalLayout->setSpacing(1);
85
//      setLayout(MpalLayout);
16100 jghali 86
 
1448 cbradney 87
        QFont f(font());
217 Franz 88
        f.setPointSize(f.pointSize()-1);
89
        setFont(f);
332 Franz 90
 
10529 fschmid 91
        TabStack = new QToolBox( this );
332 Franz 92
 
10529 fschmid 93
        page = new QWidget( TabStack );
15518 jghali 94
 
9931 fschmid 95
        pageLayout = new QVBoxLayout( page );
96
        pageLayout->setMargin(0);
97
        pageLayout->setSpacing(5);
3 paul 98
 
15518 jghali 99
        xyzPal = new PropertiesPalette_XYZ( page );
100
        pageLayout->addWidget( xyzPal );
68 Franz 101
 
217 Franz 102
        QSpacerItem* spacer13 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
103
        pageLayout->addItem( spacer13 );
9931 fschmid 104
        idXYZItem = TabStack->addItem( page, "X, Y, &Z" );
3 paul 105
 
9931 fschmid 106
        page_2 = new QWidget( TabStack );
107
        pageLayout_2 = new QVBoxLayout( page_2 );
108
        pageLayout_2->setSpacing( 5 );
109
        pageLayout_2->setMargin( 0 );
3 paul 110
 
15529 jghali 111
        shapePal = new PropertiesPalette_Shape( page_2 );
112
        pageLayout_2->addWidget( shapePal );
11125 fschmid 113
 
217 Franz 114
        QSpacerItem* spacer6 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
115
        pageLayout_2->addItem( spacer6 );
9931 fschmid 116
        idShapeItem = TabStack->addItem( page_2, "&Shape" );
3 paul 117
 
9931 fschmid 118
        page_group = new QWidget(TabStack);
119
        page_group_layout = new QVBoxLayout( page_group );
120
        page_group_layout->setSpacing( 5 );
121
        page_group_layout->setMargin( 0 );
6451 fschmid 122
 
15600 jghali 123
        groupPal = new PropertiesPalette_Group( page_group );
124
        page_group_layout->addWidget( groupPal );
8494 fschmid 125
 
6451 fschmid 126
        QSpacerItem* spacerTr2 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
127
        page_group_layout->addItem( spacerTr2 );
128
        idGroupItem = TabStack->addItem(page_group, "Groups");
129
 
9931 fschmid 130
        page_3 = new QWidget( TabStack );
131
        pageLayout_3 = new QVBoxLayout( page_3 );
132
        pageLayout_3->setSpacing( 5 );
133
        pageLayout_3->setMargin( 0 );
2230 fschmid 134
        pageLayout_3->setAlignment( Qt::AlignLeft );
3 paul 135
 
15634 jghali 136
        textPal = new PropertiesPalette_Text( page_group );
137
        pageLayout_3->addWidget( textPal );
12293 fschmid 138
 
15634 jghali 139
        idTextItem = TabStack->addItem( page_3, "&Text" );
12293 fschmid 140
 
10529 fschmid 141
        page_4 = new QWidget( TabStack );
9931 fschmid 142
        pageLayout_4 = new QVBoxLayout( page_4 );
143
        pageLayout_4->setSpacing( 5 );
144
        pageLayout_4->setMargin( 0 );
3 paul 145
 
15536 jghali 146
        imagePal = new PropertiesPalette_Image(page_4);
147
        pageLayout_4->addWidget(imagePal);
3 paul 148
 
217 Franz 149
        QSpacerItem* spacer9 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
150
        pageLayout_4->addItem( spacer9 );
2207 cbradney 151
        idImageItem=TabStack->addItem( page_4, "&Image" );
3 paul 152
 
9931 fschmid 153
        page_5 = new QWidget( TabStack );
154
        pageLayout_5 = new QVBoxLayout( page_5 );
155
        pageLayout_5->setSpacing( 5 );
156
        pageLayout_5->setMargin( 0 );
3 paul 157
 
15553 jghali 158
        linePal = new PropertiesPalette_Line(page_5);
159
        pageLayout_5->addWidget(linePal);
3 paul 160
 
2207 cbradney 161
        idLineItem=TabStack->addItem( page_5, "&Line" );
5320 fschmid 162
 
9931 fschmid 163
        page_6 = new QWidget( TabStack );
164
        pageLayout_6 = new QVBoxLayout( page_6 );
165
        pageLayout_6->setSpacing( 5 );
166
        pageLayout_6->setMargin( 0 );
5320 fschmid 167
        Cpal = new Cpalette(page_6);
168
        pageLayout_6->addWidget( Cpal );
14300 fschmid 169
        idColorsItem = TabStack->addItem(page_6, "&Colors" );
170
 
171
        page_7 = new QWidget( TabStack );
172
        pageLayout_7 = new QVBoxLayout( page_7 );
173
        pageLayout_7->setSpacing( 5 );
174
        pageLayout_7->setMargin( 0 );
175
        Tpal = new Tpalette(page_7);
176
        pageLayout_7->addWidget( Tpal );
177
        idTransparencyItem = TabStack->addItem(page_7, "&Transparency" );
5320 fschmid 178
 
16894 jghali 179
        page_8 = new QWidget(TabStack);
180
        pageLayout_8 = new QVBoxLayout(page_8);
181
        pageLayout_8->setSpacing(5);
182
        pageLayout_8->setMargin(0);
183
        tablePal = new PropertiesPalette_Table(page_8);
184
        pageLayout_8->addWidget(tablePal);
185
        idTableItem = TabStack->addItem(page_8, "T&able" );
186
 
16584 jghali 187
//      MpalLayout->addWidget( TabStack );
332 Franz 188
 
15844 jghali 189
        setWidget( TabStack );
190
 
2199 cbradney 191
        languageChange();
216 Franz 192
 
15553 jghali 193
        connect(linePal, SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int)));
194
 
15600 jghali 195
        connect(groupPal, SIGNAL(shapeChanged(int)) , this, SLOT(handleNewShape(int)));
15661 jghali 196
        connect(groupPal, SIGNAL(shapeEditStarted()), this, SLOT(handleShapeEdit()));
15600 jghali 197
 
2148 fschmid 198
        connect(TabStack, SIGNAL(currentChanged(int)), this, SLOT(SelTab(int)));
13024 cbradney 199
 
15634 jghali 200
        connect(Cpal, SIGNAL(NewSpecial(double, double, double, double, double, double, double, double, double, double)), this, SLOT(NewSpGradient(double, double, double, double, double, double, double, double, double, double )));
201
        connect(Cpal, SIGNAL(editGradient(int)), this, SLOT(toggleGradientEdit(int)));
202
        connect(Tpal, SIGNAL(NewSpecial(double, double, double, double, double, double, double, double, double, double)), this, SLOT(NewSpGradientM(double, double, double, double, double, double, double, double )));
203
        connect(Tpal, SIGNAL(editGradient()), this, SLOT(toggleGradientEditM()));
4546 subik 204
 
15741 jghali 205
        m_haveItem = false;
16894 jghali 206
        for (int ws = 1; ws < 9; ++ws)
2148 fschmid 207
                TabStack->setItemEnabled(ws, false);
208
        TabStack->setCurrentIndex(0);
10529 fschmid 209
        TabStack->widget(0)->setEnabled(false);
2148 fschmid 210
        TabStack->setItemEnabled(0, false);
3 paul 211
}
2156 fschmid 212
 
10862 cbradney 213
void PropertiesPalette::closeEvent(QCloseEvent *closeEvent)
7526 fschmid 214
{
14754 jghali 215
        if (m_ScMW && !m_ScMW->scriptIsRunning())
7526 fschmid 216
        {
15741 jghali 217
                if ((m_haveDoc) && (m_haveItem))
7526 fschmid 218
                {
10529 fschmid 219
                        if (Cpal->gradEditButton->isChecked())
7526 fschmid 220
                        {
12766 jghali 221
                                m_ScMW->view->requestMode(modeNormal);
15741 jghali 222
                                m_ScMW->view->RefreshGradient(m_item);
7526 fschmid 223
                        }
224
                }
225
        }
15844 jghali 226
        ScDockPalette::closeEvent(closeEvent);
7526 fschmid 227
}
228
 
10862 cbradney 229
void PropertiesPalette::setMainWindow(ScribusMainWindow* mw)
5257 cbradney 230
{
5781 cbradney 231
        m_ScMW=mw;
5622 jghali 232
        QPoint p1 = mapToGlobal(pos());
5781 cbradney 233
        QPoint p2 = m_ScMW->mapFromGlobal(p1);
8556 subik 234
        //Qt4 reparent(m_ScMW, this->getWFlags(), p2);
235
        setParent(m_ScMW);
236
        move(p2);
237
 
15518 jghali 238
        this->xyzPal->setMainWindow(mw);
15529 jghali 239
        this->shapePal->setMainWindow(mw);
15600 jghali 240
        this->groupPal->setMainWindow(mw);
15536 jghali 241
        this->imagePal->setMainWindow(mw);
15553 jghali 242
        this->linePal->setMainWindow(mw);
15634 jghali 243
        this->textPal->setMainWindow(mw);
16894 jghali 244
        this->tablePal->setMainWindow(mw);
15518 jghali 245
 
5781 cbradney 246
        connect(this, SIGNAL(DocChanged()), m_ScMW, SLOT(slotDocCh()));
15788 jghali 247
        //connect(this->Cpal, SIGNAL(gradientChanged()), m_ScMW, SLOT(updtGradFill()));
248
        //connect(this->Cpal, SIGNAL(strokeGradientChanged()), m_ScMW, SLOT(updtGradStroke()));
16957 jghali 249
        connect(this->Tpal, SIGNAL(gradientChanged()), this, SLOT(handleGradientChanged()));
5257 cbradney 250
}
251
 
10862 cbradney 252
void PropertiesPalette::SelTab(int t)
3 paul 253
{
14754 jghali 254
        if (!m_ScMW || m_ScMW->scriptIsRunning())
173 Franz 255
                return;
14767 fschmid 256
        foreach (QObject *o, TabStack->widget(t)->children())
257
        {
258
                // Layouts, boxes etc aren't widgets at all
259
                // so let's skip them silently...
260
                QWidget *w = qobject_cast<QWidget*>(o);
261
                if (w)
262
                {
263
                        QWidget *i = TabStack->widget(t);
264
                        while ((i = i->nextInFocusChain()) != TabStack->widget(t))
265
                        {
266
                                if (((i->focusPolicy() & Qt::TabFocus) == Qt::TabFocus) && !i->focusProxy() && i->isEnabled())
267
                                {
268
                                        i->setFocus();
269
                                        break;
270
                                }
271
                        }
272
                }
273
        }
3 paul 274
}
275
 
10862 cbradney 276
void PropertiesPalette::setDoc(ScribusDoc *d)
3 paul 277
{
15741 jghali 278
        if((d == (ScribusDoc*) m_doc) || (m_ScMW && m_ScMW->scriptIsRunning()))
7677 jghali 279
                return;
280
 
15776 jghali 281
        if (m_doc)
282
        {
283
                disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged()));
284
                disconnect(m_doc             , SIGNAL(docChanged())      , this, SLOT(handleSelectionChanged()));
285
        }
286
 
15741 jghali 287
        m_doc = d;
288
        m_item = NULL;
289
        Cpal->setDocument(m_doc);
7900 fschmid 290
        Cpal->setCurrentItem(NULL);
15741 jghali 291
        Tpal->setDocument(m_doc);
14300 fschmid 292
        Tpal->setCurrentItem(NULL);
15600 jghali 293
 
16844 jghali 294
        m_unitRatio = m_doc->unitRatio();
295
        m_unitIndex = m_doc->unitIndex();
8613 cbradney 296
//qt4 FIXME here
15741 jghali 297
        m_haveDoc = true;
298
        m_haveItem = false;
335 Franz 299
 
15741 jghali 300
        xyzPal->setDoc(m_doc);
301
        shapePal->setDoc(m_doc);
302
        groupPal->setDoc(m_doc);
303
        imagePal->setDoc(m_doc);
304
        linePal->setDoc(m_doc);
305
        textPal->setDoc(m_doc);
16894 jghali 306
        tablePal->setDocument(m_doc);
15518 jghali 307
 
7677 jghali 308
        updateColorList();
15776 jghali 309
 
310
        connect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged()));
311
        connect(m_doc             , SIGNAL(docChanged())      , this, SLOT(handleSelectionChanged()));
3 paul 312
}
313
 
10862 cbradney 314
void PropertiesPalette::unsetDoc()
3 paul 315
{
15776 jghali 316
        if (m_doc)
317
        {
318
                disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged()));
319
                disconnect(m_doc             , SIGNAL(docChanged())      , this, SLOT(handleSelectionChanged()));
320
        }
321
 
15741 jghali 322
        m_haveDoc = false;
323
        m_haveItem = false;
324
        m_doc=NULL;
325
        m_item = NULL;
15536 jghali 326
 
15518 jghali 327
        xyzPal->unsetItem();
328
        xyzPal->unsetDoc();
15529 jghali 329
        shapePal->unsetItem();
330
        shapePal->unsetDoc();
15600 jghali 331
        groupPal->unsetItem();
332
        groupPal->unsetDoc();
15536 jghali 333
        imagePal->unsetItem();
334
        imagePal->unsetDoc();
15553 jghali 335
        linePal->unsetItem();
336
        linePal->unsetDoc();
15634 jghali 337
        textPal->unsetItem();
338
        textPal->unsetDoc();
16894 jghali 339
        tablePal->unsetItem();
340
        tablePal->unsetDocument();
15536 jghali 341
 
7900 fschmid 342
        Cpal->setCurrentItem(NULL);
343
        Cpal->setDocument(NULL);
14300 fschmid 344
        Tpal->setCurrentItem(NULL);
345
        Tpal->setDocument(NULL);
15634 jghali 346
 
15741 jghali 347
        m_haveItem = false;
16894 jghali 348
        for (int ws = 1; ws < 9; ++ws)
11003 fschmid 349
                TabStack->setItemEnabled(ws, false);
350
        TabStack->widget(0)->setEnabled(false);
351
        TabStack->setItemEnabled(idXYZItem, false);
3 paul 352
}
353
 
10862 cbradney 354
void PropertiesPalette::unsetItem()
4738 cbradney 355
{
15741 jghali 356
        m_haveItem = false;
357
        m_item     = NULL;
7900 fschmid 358
        Cpal->setCurrentItem(NULL);
14300 fschmid 359
        Tpal->setCurrentItem(NULL);
15741 jghali 360
        handleSelectionChanged();
4738 cbradney 361
}
4546 subik 362
 
10862 cbradney 363
void PropertiesPalette::setTextFlowMode(PageItem::TextFlowMode mode)
5620 jghali 364
{
15741 jghali 365
        if (!m_ScMW || m_ScMW->scriptIsRunning() || !m_haveItem)
5620 jghali 366
                return;
15600 jghali 367
        shapePal->displayTextFlowMode(mode);
368
        groupPal->displayTextFlowMode(mode);
5620 jghali 369
}
370
 
15741 jghali 371
PageItem* PropertiesPalette::currentItemFromSelection()
3 paul 372
{
15741 jghali 373
        PageItem *currentItem = NULL;
374
 
375
        if (m_doc)
376
        {
377
                if (m_doc->m_Selection->count() > 1)
378
                {
379
                        uint lowestItem = 999999;
380
                        for (int a=0; a<m_doc->m_Selection->count(); ++a)
381
                        {
382
                                currentItem = m_doc->m_Selection->itemAt(a);
383
                                lowestItem = qMin(lowestItem, currentItem->ItemNr);
384
                        }
385
                        currentItem = m_doc->Items->at(lowestItem);
386
                }
387
                else if (m_doc->m_Selection->count() == 1)
388
                {
389
                        currentItem = m_doc->m_Selection->itemAt(0);
390
                }
391
        }
392
 
393
        return currentItem;
394
}
395
 
396
void PropertiesPalette::setCurrentItem(PageItem *i)
397
{
14754 jghali 398
        if (!m_ScMW || m_ScMW->scriptIsRunning())
173 Franz 399
                return;
3894 cbradney 400
        //CB We shouldnt really need to process this if our item is the same one
401
        //maybe we do if the item has been changed by scripter.. but that should probably
402
        //set some status if so.
15741 jghali 403
        //FIXME: This wont work until when a canvas deselect happens, m_item must be NULL.
404
        //if (m_item == i)
3894 cbradney 405
        //      return;
11741 jghali 406
 
15741 jghali 407
        if (!i)
408
        {
409
                unsetItem();
410
                return;
411
        }
412
 
15840 jghali 413
        int oldTabIndex = TabStack->currentIndex();
414
 
15741 jghali 415
        if (!m_doc)
11741 jghali 416
                setDoc(i->doc());
417
 
15553 jghali 418
        disconnect(TabStack, SIGNAL(currentChanged(int)) , this, SLOT(SelTab(int)));
15614 jghali 419
        disconnect(linePal , SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int)));
4546 subik 420
 
15741 jghali 421
        m_haveItem = false;
422
        m_item = i;
6451 fschmid 423
 
15840 jghali 424
        /*xyzPal->handleSelectionChanged();
15529 jghali 425
        shapePal->handleSelectionChanged();
15600 jghali 426
        groupPal->handleSelectionChanged();
15536 jghali 427
        imagePal->handleSelectionChanged();
15553 jghali 428
        linePal->handleSelectionChanged();
15840 jghali 429
        textPal->handleSelectionChanged();*/
15518 jghali 430
 
15840 jghali 431
        /*Cpal->setCurrentItem(m_item);
432
        Cpal->updateFromItem();*/
15741 jghali 433
        Tpal->setCurrentItem(m_item);
14300 fschmid 434
        Tpal->updateFromItem();
15553 jghali 435
 
15741 jghali 436
        setTextFlowMode(m_item->textFlowMode());
12471 cbradney 437
 
15614 jghali 438
        connect(linePal , SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int)));
15553 jghali 439
 
12471 cbradney 440
//CB replaces old emits from PageItem::emitAllToGUI()
441
        setLocked(i->locked());
15518 jghali 442
 
16173 jghali 443
        if ((m_item->isGroup()) && (!m_item->isSingleSel))
6451 fschmid 444
        {
8494 fschmid 445
                TabStack->setItemEnabled(idXYZItem, true);
446
                TabStack->setItemEnabled(idShapeItem, false);
6451 fschmid 447
                TabStack->setItemEnabled(idGroupItem, true);
14077 fschmid 448
                TabStack->setItemEnabled(idLineItem, false);
15060 fschmid 449
                TabStack->setItemEnabled(idColorsItem, false);
8494 fschmid 450
                TabStack->setItemEnabled(idTextItem, false);
451
                TabStack->setItemEnabled(idImageItem, false);
6451 fschmid 452
        }
453
        else
454
                TabStack->setItemEnabled(idGroupItem, false);
15529 jghali 455
 
15741 jghali 456
        m_haveItem = true;
15536 jghali 457
 
15840 jghali 458
        if (oldTabIndex != TabStack->currentIndex())
459
        {
460
                //Must be called only when necessary : cause focus problem
461
                //in spinboxes when processing valueChanged() signals
462
                SelTab(TabStack->currentIndex());
463
        }
464
 
15518 jghali 465
        xyzPal->handleSelectionChanged();
15529 jghali 466
        shapePal->handleSelectionChanged();
15600 jghali 467
        groupPal->handleSelectionChanged();
15536 jghali 468
        imagePal->handleSelectionChanged();
15553 jghali 469
        linePal->handleSelectionChanged();
15634 jghali 470
        textPal->handleSelectionChanged();
16894 jghali 471
        tablePal->handleSelectionChanged();
15518 jghali 472
 
15741 jghali 473
        if (m_item->asOSGFrame())
13839 fschmid 474
        {
475
                TabStack->setItemEnabled(idXYZItem, true);
476
                TabStack->setItemEnabled(idShapeItem, true);
477
                TabStack->setItemEnabled(idGroupItem, false);
478
                TabStack->setItemEnabled(idLineItem, false);
479
                TabStack->setItemEnabled(idColorsItem, true);
16894 jghali 480
                TabStack->setItemEnabled(idTableItem, false);
14300 fschmid 481
                TabStack->setItemEnabled(idTransparencyItem, false);
13839 fschmid 482
                TabStack->setItemEnabled(idTextItem, false);
483
                TabStack->setItemEnabled(idImageItem, false);
484
        }
15741 jghali 485
        if (m_item->asSymbolFrame())
15060 fschmid 486
        {
487
                TabStack->setItemEnabled(idXYZItem, true);
488
                TabStack->setItemEnabled(idShapeItem, false);
489
                TabStack->setItemEnabled(idGroupItem, true);
490
                TabStack->setItemEnabled(idLineItem, false);
491
                TabStack->setItemEnabled(idColorsItem, false);
492
                TabStack->setItemEnabled(idTextItem, false);
493
                TabStack->setItemEnabled(idImageItem, false);
494
                TabStack->setItemEnabled(idTransparencyItem, false);
495
        }
14767 fschmid 496
        connect(TabStack, SIGNAL(currentChanged(int)), this, SLOT(SelTab(int)));
3 paul 497
}
498
 
15741 jghali 499
void  PropertiesPalette::handleSelectionChanged()
3 paul 500
{
15741 jghali 501
        if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning())
173 Franz 502
                return;
13606 jghali 503
        int currentTab = TabStack->currentIndex();
2156 fschmid 504
        disconnect(TabStack, SIGNAL(currentChanged(int)), this, SLOT(SelTab(int)));
15518 jghali 505
 
16735 jghali 506
//      qDebug() << "PropertiesPalette::handleSelectionChanged()";
15518 jghali 507
 
15776 jghali 508
        /*xyzPal->handleSelectionChanged();
15741 jghali 509
        shapePal->handleSelectionChanged();
510
        groupPal->handleSelectionChanged();
511
        imagePal->handleSelectionChanged();
512
        linePal->handleSelectionChanged();
15776 jghali 513
        textPal->handleSelectionChanged();*/
15741 jghali 514
 
515
        PageItem* currItem = currentItemFromSelection();
516
        if (m_doc->m_Selection->count() > 1)
215 Franz 517
        {
16894 jghali 518
                for (int ws = 1; ws < 9; ++ws)
11316 fschmid 519
                        TabStack->setItemEnabled(ws, false);
10529 fschmid 520
                TabStack->widget(0)->setEnabled(true);
6451 fschmid 521
                TabStack->setItemEnabled(idXYZItem, true);
14077 fschmid 522
                TabStack->setItemEnabled(idLineItem, false);
6451 fschmid 523
                TabStack->setItemEnabled(idColorsItem, true);
14300 fschmid 524
                TabStack->setItemEnabled(idTransparencyItem, true);
16894 jghali 525
                TabStack->setItemEnabled(idTableItem, false); // At least not for now.
15741 jghali 526
                if (m_haveItem && m_item)
13606 jghali 527
                {
16173 jghali 528
                        if ((m_item->isGroup()) && (!m_item->isSingleSel))
13606 jghali 529
                                TabStack->setItemEnabled(idGroupItem, true);
530
                }
215 Franz 531
        }
3 paul 532
        else
215 Franz 533
        {
15741 jghali 534
                int itemType = currItem ? (int) currItem->itemType() : -1;
535
                m_haveItem   = (itemType != -1);
536
 
537
                int visID = TabStack->currentIndex();
10529 fschmid 538
                TabStack->widget(0)->setEnabled(true);
6451 fschmid 539
                TabStack->setItemEnabled(idXYZItem, true);
540
                TabStack->setItemEnabled(idColorsItem, true);
14300 fschmid 541
                TabStack->setItemEnabled(idTransparencyItem, true);
15741 jghali 542
                switch (itemType)
215 Franz 543
                {
217 Franz 544
                case -1:
15741 jghali 545
                        m_haveItem = false;
16894 jghali 546
                        for (int ws = 1; ws < 9; ++ws)
2148 fschmid 547
                                TabStack->setItemEnabled(ws, false);
10529 fschmid 548
                        TabStack->widget(0)->setEnabled(false);
6451 fschmid 549
                        TabStack->setItemEnabled(idXYZItem, false);
15840 jghali 550
                        Cpal->displayGradient(0);
217 Franz 551
                        break;
13839 fschmid 552
                case PageItem::ImageFrame:
553
                case PageItem::LatexFrame:
554
                case PageItem::OSGFrame:
15741 jghali 555
                        if (currItem->asOSGFrame())
13839 fschmid 556
                        {
557
                                TabStack->setItemEnabled(idXYZItem, true);
558
                                TabStack->setItemEnabled(idShapeItem, true);
559
                                TabStack->setItemEnabled(idGroupItem, false);
560
                                TabStack->setItemEnabled(idLineItem, false);
561
                                TabStack->setItemEnabled(idColorsItem, true);
14300 fschmid 562
                                TabStack->setItemEnabled(idTransparencyItem, false);
16894 jghali 563
                                TabStack->setItemEnabled(idTableItem, false);
13839 fschmid 564
                                TabStack->setItemEnabled(idTextItem, false);
565
                                TabStack->setItemEnabled(idImageItem, false);
566
                        }
4941 fschmid 567
                        else
13839 fschmid 568
                        {
569
                                TabStack->setItemEnabled(idShapeItem, true);
570
                                TabStack->setItemEnabled(idTextItem, false);
571
                                TabStack->setItemEnabled(idImageItem, true);
572
                                TabStack->setItemEnabled(idLineItem, true);
573
                        }
217 Franz 574
                        break;
13839 fschmid 575
                case PageItem::TextFrame:
6451 fschmid 576
                        TabStack->setItemEnabled(idShapeItem, true);
577
                        TabStack->setItemEnabled(idTextItem, true);
578
                        TabStack->setItemEnabled(idImageItem, false);
579
                        TabStack->setItemEnabled(idLineItem, true);
217 Franz 580
                        break;
13839 fschmid 581
                case PageItem::Line:
6451 fschmid 582
                        TabStack->setItemEnabled(idShapeItem, false);
583
                        TabStack->setItemEnabled(idTextItem, false);
584
                        TabStack->setItemEnabled(idImageItem, false);
585
                        TabStack->setItemEnabled(idLineItem, true);
217 Franz 586
                        break;
13839 fschmid 587
                case PageItem::ItemType1:
588
                case PageItem::ItemType3:
589
                case PageItem::Polygon:
16200 jghali 590
                case PageItem::RegularPolygon:
16222 jghali 591
                case PageItem::Arc:
6451 fschmid 592
                        TabStack->setItemEnabled(idShapeItem, true);
593
                        TabStack->setItemEnabled(idTextItem, false);
594
                        TabStack->setItemEnabled(idImageItem, false);
595
                        TabStack->setItemEnabled(idLineItem, true);
217 Franz 596
                        break;
13839 fschmid 597
                case PageItem::PolyLine:
16318 jghali 598
                case PageItem::Spiral:
6451 fschmid 599
                        TabStack->setItemEnabled(idShapeItem, true);
600
                        TabStack->setItemEnabled(idTextItem, false);
601
                        TabStack->setItemEnabled(idImageItem, false);
602
                        TabStack->setItemEnabled(idLineItem, true);
217 Franz 603
                        break;
13839 fschmid 604
                case PageItem::PathText:
6451 fschmid 605
                        TabStack->setItemEnabled(idShapeItem, true);
606
                        TabStack->setItemEnabled(idTextItem, true);
607
                        TabStack->setItemEnabled(idImageItem, false);
608
                        TabStack->setItemEnabled(idLineItem, true);
217 Franz 609
                        break;
15060 fschmid 610
                case PageItem::Symbol:
16173 jghali 611
                case PageItem::Group:
15060 fschmid 612
                        TabStack->setItemEnabled(idShapeItem, false);
613
                        TabStack->setItemEnabled(idTextItem, false);
614
                        TabStack->setItemEnabled(idImageItem, false);
615
                        TabStack->setItemEnabled(idLineItem, false);
616
                        TabStack->setItemEnabled(idGroupItem, true);
617
                        TabStack->setItemEnabled(idColorsItem, false);
618
                        TabStack->setItemEnabled(idTransparencyItem, false);
619
                        break;
16894 jghali 620
                case PageItem::Table:
621
                        TabStack->setItemEnabled(idTableItem, true);
622
                        TabStack->setItemEnabled(idShapeItem, true);
623
                        TabStack->setItemEnabled(idTextItem, false);
624
                        TabStack->setItemEnabled(idImageItem, false);
625
                        TabStack->setItemEnabled(idLineItem, false);
626
                        TabStack->setItemEnabled(idGroupItem, false);
627
                        TabStack->setItemEnabled(idColorsItem, false);
628
                        TabStack->setItemEnabled(idTransparencyItem, false);
629
                        break;
3 paul 630
                }
215 Franz 631
        }
13606 jghali 632
        if (TabStack->isItemEnabled(currentTab) && (TabStack->currentIndex() != currentTab))
633
                TabStack->setCurrentIndex(currentTab);
3 paul 634
        updateGeometry();
635
        repaint();
2156 fschmid 636
        connect(TabStack, SIGNAL(currentChanged(int)), this, SLOT(SelTab(int)));
3 paul 637
 
15741 jghali 638
        if (currItem)
6451 fschmid 639
        {
15741 jghali 640
                setCurrentItem(currItem);
6451 fschmid 641
        }
4049 cbradney 642
}
643
 
10862 cbradney 644
void PropertiesPalette::unitChange()
3 paul 645
{
15741 jghali 646
        if (!m_haveDoc)
11633 jghali 647
                return;
15741 jghali 648
        bool tmp = m_haveItem;
649
        m_haveItem = false;
8605 cbradney 650
        double oldRatio = m_unitRatio;
15741 jghali 651
        m_unitRatio = m_doc->unitRatio();
652
        m_unitIndex = m_doc->unitIndex();
15518 jghali 653
 
654
        xyzPal->unitChange();
15529 jghali 655
        shapePal->unitChange();
15600 jghali 656
        groupPal->unitChange();
15536 jghali 657
        imagePal->unitChange();
15553 jghali 658
        linePal->unitChange();
15634 jghali 659
        textPal->unitChange();
15518 jghali 660
 
15741 jghali 661
        Cpal->unitChange(oldRatio, m_unitRatio, m_doc->unitIndex());
662
        Tpal->unitChange(oldRatio, m_unitRatio, m_doc->unitIndex());
663
        m_haveItem = tmp;
3 paul 664
}
665
 
15553 jghali 666
void PropertiesPalette::NewLineMode(int mode)
3 paul 667
{
14754 jghali 668
        if (!m_ScMW || m_ScMW->scriptIsRunning())
173 Franz 669
                return;
15553 jghali 670
        xyzPal->setLineMode(mode);
15741 jghali 671
        xyzPal->displayWH(m_item->width(), m_item->height());
3 paul 672
        updateGeometry();
673
        repaint();
674
}
675
 
15600 jghali 676
void PropertiesPalette::handleNewShape(int frameType)
3 paul 677
{
14754 jghali 678
        if (!m_ScMW || m_ScMW->scriptIsRunning())
173 Franz 679
                return;
15741 jghali 680
        if ((m_haveDoc) && (m_haveItem))
215 Franz 681
        {
15741 jghali 682
                if ((m_item->itemType() == PageItem::PolyLine) || (m_item->itemType() == PageItem::PathText))
3 paul 683
                        return;
13346 subik 684
 
15741 jghali 685
                if ((m_item->itemType() == PageItem::ImageFrame) || (m_item->itemType() == PageItem::TextFrame))
7359 fschmid 686
                {
16053 jghali 687
                        shapePal->setRoundRectEnabled(frameType == 0);
3 paul 688
                        return;
7359 fschmid 689
                }
15741 jghali 690
//              m_item->convertTo(PageItem::Polygon);
691
//              newSelection(6);
16053 jghali 692
                shapePal->setRoundRectEnabled(frameType == 0);
215 Franz 693
        }
3 paul 694
}
695
 
14981 fschmid 696
void PropertiesPalette::NewSpGradient(double x1, double y1, double x2, double y2, double fx, double fy, double sg, double sk, double cx, double cy)
294 Franz 697
{
14754 jghali 698
        if (!m_ScMW || m_ScMW->scriptIsRunning())
294 Franz 699
                return;
15741 jghali 700
        if ((m_haveDoc) && (m_haveItem))
294 Franz 701
        {
14197 fschmid 702
                QRectF upRect;
14300 fschmid 703
                if (m_ScMW->view->editStrokeGradient == 1)
14197 fschmid 704
                {
15741 jghali 705
                        m_item->GrStrokeStartX = x1 / m_unitRatio;
706
                        m_item->GrStrokeStartY = y1 / m_unitRatio;
707
                        m_item->GrStrokeEndX = x2 / m_unitRatio;
708
                        m_item->GrStrokeEndY = y2 / m_unitRatio;
709
                        m_item->GrStrokeFocalX = fx / m_unitRatio;
710
                        m_item->GrStrokeFocalY = fy / m_unitRatio;
711
                        m_item->GrStrokeScale = sg;
712
                        m_item->GrStrokeSkew = sk;
713
                        if (m_item->GrTypeStroke == 6)
14278 fschmid 714
                        {
15741 jghali 715
                                m_item->GrStrokeFocalX = m_item->GrStrokeStartX;
716
                                m_item->GrStrokeFocalY = m_item->GrStrokeStartY;
14278 fschmid 717
                        }
15741 jghali 718
                        m_item->update();
719
                        upRect = QRectF(QPointF(m_item->GrStrokeStartX, m_item->GrStrokeStartY), QPointF(m_item->GrStrokeEndX, m_item->GrStrokeEndY));
720
                        double radEnd = distance(m_item->GrStrokeEndX - m_item->GrStrokeStartX, m_item->GrStrokeEndY - m_item->GrStrokeStartY);
721
                        double rotEnd = xy2Deg(m_item->GrStrokeEndX - m_item->GrStrokeStartX, m_item->GrStrokeEndY - m_item->GrStrokeStartY);
14284 fschmid 722
                        QTransform m;
15741 jghali 723
                        m.translate(m_item->GrStrokeStartX, m_item->GrStrokeStartY);
14284 fschmid 724
                        m.rotate(rotEnd);
725
                        m.rotate(-90);
15741 jghali 726
                        m.rotate(m_item->GrStrokeSkew);
727
                        m.translate(radEnd * m_item->GrStrokeScale, 0);
14284 fschmid 728
                        QPointF shP = m.map(QPointF(0,0));
15741 jghali 729
                        upRect = upRect.united(QRectF(shP, QPointF(m_item->GrStrokeEndX, m_item->GrStrokeEndY)).normalized());
730
                        upRect = upRect.united(QRectF(shP, QPointF(m_item->GrStrokeStartX, m_item->GrStrokeStartY)).normalized());
14284 fschmid 731
                        upRect |= QRectF(shP, QPointF(0, 0)).normalized();
15741 jghali 732
                        upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized();
14197 fschmid 733
                }
14952 fschmid 734
                else if (m_ScMW->view->editStrokeGradient == 3)
735
                {
15741 jghali 736
                        m_item->GrControl1 = FPoint(x1 / m_unitRatio, y1 / m_unitRatio);
737
                        m_item->GrControl2 = FPoint(x2 / m_unitRatio, y2 / m_unitRatio);
738
                        m_item->GrControl3 = FPoint(fx / m_unitRatio, fy / m_unitRatio);
739
                        m_item->GrControl4 = FPoint(sg / m_unitRatio, sk / m_unitRatio);
740
                        m_item->update();
741
                        upRect = QRectF(QPointF(-m_item->width(), -m_item->height()), QPointF(m_item->width() * 2, m_item->height() * 2)).normalized();
14952 fschmid 742
                }
14981 fschmid 743
                else if (m_ScMW->view->editStrokeGradient == 4)
744
                {
15741 jghali 745
                        m_item->GrControl1 = FPoint(x1 / m_unitRatio, y1 / m_unitRatio);
746
                        m_item->GrControl2 = FPoint(x2 / m_unitRatio, y2 / m_unitRatio);
747
                        m_item->GrControl3 = FPoint(fx / m_unitRatio, fy / m_unitRatio);
748
                        m_item->GrControl4 = FPoint(sg / m_unitRatio, sk / m_unitRatio);
749
                        m_item->GrControl5 = FPoint(cx / m_unitRatio, cy / m_unitRatio);
750
                        m_item->update();
751
                        upRect = QRectF(QPointF(-m_item->width(), -m_item->height()), QPointF(m_item->width() * 2, m_item->height() * 2)).normalized();
14981 fschmid 752
                }
14197 fschmid 753
                else
754
                {
15741 jghali 755
                        m_item->GrStartX = x1 / m_unitRatio;
756
                        m_item->GrStartY = y1 / m_unitRatio;
757
                        m_item->GrEndX = x2 / m_unitRatio;
758
                        m_item->GrEndY = y2 / m_unitRatio;
759
                        m_item->GrFocalX = fx / m_unitRatio;
760
                        m_item->GrFocalY = fy / m_unitRatio;
761
                        m_item->GrScale = sg;
762
                        m_item->GrSkew = sk;
763
                        if (m_item->GrTypeStroke == 6)
14278 fschmid 764
                        {
15741 jghali 765
                                m_item->GrFocalX = m_item->GrStartX;
766
                                m_item->GrFocalY = m_item->GrStartY;
14278 fschmid 767
                        }
16803 jghali 768
                        if (m_item->GrType == 13)
769
                                m_item->createConicalMesh();
15741 jghali 770
                        m_item->update();
771
                        upRect = QRectF(QPointF(m_item->GrStartX, m_item->GrStartY), QPointF(m_item->GrEndX, m_item->GrEndY));
772
                        double radEnd = distance(m_item->GrEndX - m_item->GrStartX, m_item->GrEndY - m_item->GrStartY);
773
                        double rotEnd = xy2Deg(m_item->GrEndX - m_item->GrStartX, m_item->GrEndY - m_item->GrStartY);
14284 fschmid 774
                        QTransform m;
15741 jghali 775
                        m.translate(m_item->GrStartX, m_item->GrStartY);
14284 fschmid 776
                        m.rotate(rotEnd);
777
                        m.rotate(-90);
15741 jghali 778
                        m.rotate(m_item->GrSkew);
779
                        m.translate(radEnd * m_item->GrScale, 0);
14284 fschmid 780
                        QPointF shP = m.map(QPointF(0,0));
15741 jghali 781
                        upRect |= QRectF(shP, QPointF(m_item->GrEndX, m_item->GrEndY)).normalized();
782
                        upRect |= QRectF(shP, QPointF(m_item->GrStartX, m_item->GrStartY)).normalized();
14284 fschmid 783
                        upRect |= QRectF(shP, QPointF(0, 0)).normalized();
15741 jghali 784
                        upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized();
14197 fschmid 785
                }
15741 jghali 786
                upRect.translate(m_item->xPos(), m_item->yPos());
787
                m_doc->regionsChanged()->update(upRect.adjusted(-10.0, -10.0, 10.0, 10.0));
294 Franz 788
                emit DocChanged();
789
        }
790
}
791
 
14300 fschmid 792
void PropertiesPalette::toggleGradientEdit(int stroke)
735 fschmid 793
{
14754 jghali 794
        if (!m_ScMW || m_ScMW->scriptIsRunning())
735 fschmid 795
                return;
15741 jghali 796
        if ((m_haveDoc) && (m_haveItem))
735 fschmid 797
        {
14197 fschmid 798
                m_ScMW->view->editStrokeGradient = stroke;
14300 fschmid 799
                if (stroke == 1)
14197 fschmid 800
                {
801
                        if (Cpal->gradEditButtonStroke->isChecked())
802
                                m_ScMW->view->requestMode(modeEditGradientVectors);
803
                        else
804
                                m_ScMW->view->requestMode(modeNormal);
805
                }
735 fschmid 806
                else
14197 fschmid 807
                {
15024 fschmid 808
                        if ((Cpal->gradEditButton->isChecked()) || (Cpal->editMeshColors->isChecked()))
809
                        {
810
                                if ((stroke == 5) || (stroke == 6) || (stroke == 7))
811
                                        m_ScMW->view->requestMode(modeEditMeshGradient);
16895 jghali 812
                                else if ((stroke == 8) || (stroke == 9) || (stroke == 10) || (stroke == 11))
813
                                        m_ScMW->view->requestMode(modeEditMeshPatch);
15024 fschmid 814
                                else
815
                                        m_ScMW->view->requestMode(modeEditGradientVectors);
816
                        }
14197 fschmid 817
                        else
818
                                m_ScMW->view->requestMode(modeNormal);
819
                }
15741 jghali 820
                m_ScMW->view->RefreshGradient(m_item);
735 fschmid 821
        }
822
}
823
 
14300 fschmid 824
void PropertiesPalette::NewSpGradientM(double x1, double y1, double x2, double y2, double fx, double fy, double sg, double sk)
825
{
14754 jghali 826
        if (!m_ScMW || m_ScMW->scriptIsRunning())
14300 fschmid 827
                return;
15741 jghali 828
        if ((m_haveDoc) && (m_haveItem))
14300 fschmid 829
        {
830
                QRectF upRect;
15741 jghali 831
                m_item->GrMaskStartX = x1 / m_unitRatio;
832
                m_item->GrMaskStartY = y1 / m_unitRatio;
833
                m_item->GrMaskEndX = x2 / m_unitRatio;
834
                m_item->GrMaskEndY = y2 / m_unitRatio;
835
                m_item->GrMaskFocalX = fx / m_unitRatio;
836
                m_item->GrMaskFocalY = fy / m_unitRatio;
837
                m_item->GrMaskScale = sg;
838
                m_item->GrMaskSkew = sk;
839
                if ((m_item->GrMask == 1) || (m_item->GrMask == 4))
14300 fschmid 840
                {
15741 jghali 841
                        m_item->GrMaskFocalX = m_item->GrMaskStartX;
842
                        m_item->GrMaskFocalY = m_item->GrMaskStartY;
14300 fschmid 843
                }
15741 jghali 844
                m_item->update();
845
                upRect = QRectF(QPointF(m_item->GrMaskStartX, m_item->GrMaskStartY), QPointF(m_item->GrMaskEndX, m_item->GrMaskEndY));
846
                double radEnd = distance(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY);
847
                double rotEnd = xy2Deg(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY);
14300 fschmid 848
                QTransform m;
15741 jghali 849
                m.translate(m_item->GrMaskStartX, m_item->GrMaskStartY);
14300 fschmid 850
                m.rotate(rotEnd);
851
                m.rotate(-90);
15741 jghali 852
                m.rotate(m_item->GrMaskSkew);
853
                m.translate(radEnd * m_item->GrMaskScale, 0);
14300 fschmid 854
                QPointF shP = m.map(QPointF(0,0));
15741 jghali 855
                upRect |= QRectF(shP, QPointF(m_item->GrMaskEndX, m_item->GrMaskEndY)).normalized();
856
                upRect |= QRectF(shP, QPointF(m_item->GrMaskStartX, m_item->GrMaskStartY)).normalized();
14300 fschmid 857
                upRect |= QRectF(shP, QPointF(0, 0)).normalized();
15741 jghali 858
                upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized();
859
                upRect.translate(m_item->xPos(), m_item->yPos());
860
                m_doc->regionsChanged()->update(upRect.adjusted(-10.0, -10.0, 10.0, 10.0));
14300 fschmid 861
                emit DocChanged();
862
        }
863
}
864
 
865
void PropertiesPalette::toggleGradientEditM()
866
{
14754 jghali 867
        if (!m_ScMW || m_ScMW->scriptIsRunning())
14300 fschmid 868
                return;
15741 jghali 869
        if ((m_haveDoc) && (m_haveItem))
14300 fschmid 870
        {
871
                m_ScMW->view->editStrokeGradient = 2;
872
                if (Tpal->gradEditButton->isChecked())
873
                        m_ScMW->view->requestMode(modeEditGradientVectors);
874
                else
875
                        m_ScMW->view->requestMode(modeNormal);
876
        }
877
}
878
 
10862 cbradney 879
void PropertiesPalette::updateColorList()
3540 cbradney 880
{
15741 jghali 881
        if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning())
3540 cbradney 882
                return;
15600 jghali 883
 
884
        groupPal->updateColorList();
15634 jghali 885
        textPal->updateColorList();
16894 jghali 886
        tablePal->updateColorList();
15661 jghali 887
        Cpal->updateColorList();
888
        Tpal->updateColorList();
889
 
15741 jghali 890
        assert (m_doc->PageColors.document());
68 Franz 891
}
892
 
10862 cbradney 893
bool PropertiesPalette::userActionOn()
1263 tsoots 894
{
15634 jghali 895
        bool userActionOn = false;
896
        userActionOn  = xyzPal->userActionOn();
897
        userActionOn |= imagePal->userActionOn();
898
        return userActionOn;
1502 tsoots 899
}
900
 
10862 cbradney 901
void PropertiesPalette::changeEvent(QEvent *e)
10859 cbradney 902
{
903
        if (e->type() == QEvent::LanguageChange)
904
        {
905
                languageChange();
15529 jghali 906
                return;
10859 cbradney 907
        }
16097 jghali 908
        ScDockPalette::changeEvent(e);
10859 cbradney 909
}
910
 
10862 cbradney 911
void PropertiesPalette::languageChange()
2199 cbradney 912
{
10495 cbradney 913
        setWindowTitle( tr("Properties"));
4546 subik 914
 
10529 fschmid 915
        TabStack->setItemText(idXYZItem, tr("X, Y, &Z"));
916
        TabStack->setItemText(idTextItem, tr("&Text"));
917
        TabStack->setItemText(idImageItem, tr("&Image"));
918
        TabStack->setItemText(idShapeItem, tr("&Shape"));
919
        TabStack->setItemText(idLineItem, tr("&Line"));
920
        TabStack->setItemText(idColorsItem, tr("&Colors"));
921
        TabStack->setItemText(idGroupItem, tr("&Group"));
14492 cbradney 922
        TabStack->setItemText(idTransparencyItem, tr("&Transparency"));
16894 jghali 923
        TabStack->setItemText(idTableItem, tr("T&able"));
4546 subik 924
 
15518 jghali 925
        xyzPal->languageChange();
15529 jghali 926
        shapePal->languageChange();
15600 jghali 927
        groupPal->languageChange();
15536 jghali 928
        imagePal->languageChange();
15553 jghali 929
        linePal->languageChange();
15634 jghali 930
        textPal->languageChange();
16894 jghali 931
        tablePal->languageChange();
2199 cbradney 932
}
933
 
10862 cbradney 934
void PropertiesPalette::setGradientEditMode(bool on)
3540 cbradney 935
{
10529 fschmid 936
        Cpal->gradEditButton->setChecked(on);
3540 cbradney 937
}
938
 
16895 jghali 939
void PropertiesPalette::endPatchAdd()
940
{
941
        Cpal->endPatchAdd();
942
}
943
 
10862 cbradney 944
void PropertiesPalette::updateColorSpecialGradient()
3540 cbradney 945
{
15741 jghali 946
        if (!m_haveDoc)
3549 cbradney 947
                return;
15741 jghali 948
        if(m_doc->m_Selection->isEmpty())
3593 cbradney 949
                return;
15600 jghali 950
 
951
        groupPal->updateColorSpecialGradient();
952
 
15741 jghali 953
        double dur=m_doc->unitRatio();
954
        PageItem *currItem=m_doc->m_Selection->itemAt(0);
7921 cbradney 955
        if (currItem)
14300 fschmid 956
        {
957
                if (m_ScMW->view->editStrokeGradient == 0)
14981 fschmid 958
                        Cpal->setSpecialGradient(currItem->GrStartX * dur, currItem->GrStartY * dur, currItem->GrEndX * dur, currItem->GrEndY * dur, currItem->GrFocalX * dur, currItem->GrFocalY * dur, currItem->GrScale, currItem->GrSkew, 0, 0);
14300 fschmid 959
                else if (m_ScMW->view->editStrokeGradient == 1)
14981 fschmid 960
                        Cpal->setSpecialGradient(currItem->GrStrokeStartX * dur, currItem->GrStrokeStartY * dur, currItem->GrStrokeEndX * dur, currItem->GrStrokeEndY * dur, currItem->GrStrokeFocalX * dur, currItem->GrStrokeFocalY * dur, currItem->GrStrokeScale, currItem->GrStrokeSkew, 0, 0);
14952 fschmid 961
                else if (m_ScMW->view->editStrokeGradient == 3)
14981 fschmid 962
                        Cpal->setSpecialGradient(currItem->GrControl1.x() * dur, currItem->GrControl1.y() * dur, currItem->GrControl2.x() * dur, currItem->GrControl2.y() * dur, currItem->GrControl3.x() * dur, currItem->GrControl3.y() * dur, currItem->GrControl4.x() * dur, currItem->GrControl4.y() * dur, 0, 0);
963
                else if (m_ScMW->view->editStrokeGradient == 4)
964
                        Cpal->setSpecialGradient(currItem->GrControl1.x() * dur, currItem->GrControl1.y() * dur, currItem->GrControl2.x() * dur, currItem->GrControl2.y() * dur, currItem->GrControl3.x() * dur, currItem->GrControl3.y() * dur, currItem->GrControl4.x() * dur, currItem->GrControl4.y() * dur, currItem->GrControl5.x(), currItem->GrControl5.y());
15024 fschmid 965
                else if ((m_ScMW->view->editStrokeGradient == 5) || (m_ScMW->view->editStrokeGradient == 6))
966
                        Cpal->setMeshPoint();
16895 jghali 967
                else if (m_ScMW->view->editStrokeGradient == 8)
968
                        Cpal->setMeshPatchPoint();
969
                else if (m_ScMW->view->editStrokeGradient == 9)
970
                        Cpal->setMeshPatch();
16173 jghali 971
                else if (!currItem->isGroup())
15600 jghali 972
                        Tpal->setSpecialGradient(currItem->GrMaskStartX * dur, currItem->GrMaskStartY * dur, currItem->GrMaskEndX * dur, currItem->GrMaskEndY * dur, currItem->GrMaskFocalX * dur, currItem->GrMaskFocalY * dur, currItem->GrMaskScale, currItem->GrMaskSkew);
14300 fschmid 973
        }
3540 cbradney 974
}
975
 
10862 cbradney 976
void PropertiesPalette::setLocked(bool isLocked)
4695 cbradney 977
{
15529 jghali 978
        shapePal->setLocked(isLocked);
4695 cbradney 979
}
980
 
15661 jghali 981
void PropertiesPalette::handleShapeEdit()
6451 fschmid 982
{
14754 jghali 983
        if (!m_ScMW || m_ScMW->scriptIsRunning())
6451 fschmid 984
                return;
15741 jghali 985
        if ((m_haveDoc) && (m_haveItem))
6451 fschmid 986
        {
16053 jghali 987
                shapePal->setRoundRectEnabled(false);
6451 fschmid 988
        }
989
}
16957 jghali 990
 
991
void PropertiesPalette::handleGradientChanged()
992
{
993
        if (!m_ScMW || m_ScMW->scriptIsRunning())
994
                return;
995
        if ((m_haveDoc) && (m_haveItem))
996
        {
997
                VGradient vg(Tpal->gradEdit->gradient());
998
                m_doc->itemSelection_SetMaskGradient(vg);
999
        }
1000
}