Subversion Repositories Scribus

Rev

Rev 3567 | Rev 3670 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 paul 1
#include "seiten.h"
2
#include "seiten.moc"
3
#include <qcursor.h>
173 Franz 4
#include "scribus.h"
3436 fschmid 5
#include "dynamictip.h"
3560 fschmid 6
#include "pagelayout.h"
7
#include "sccombobox.h"
3 paul 8
extern QPixmap loadIcon(QString nam);
9
 
3205 craig 10
 
3 paul 11
/* Code fuer DragObjekt */
12
SeDrag::SeDrag(QString secret, QWidget * parent, const char * name): QStoredDrag("page/magic", parent, name)
13
{
14
        QByteArray data(secret.length());
15
        for (uint a = 0; a < secret.length(); ++a)
16
                data[a]= QChar(secret[a]);
17
        setEncodedData( data );
18
}
19
 
20
bool SeDrag::canDecode( QDragMoveEvent* e )
21
{
22
        return e->provides("page/magic");
23
}
24
 
25
bool SeDrag::decode( QDropEvent* e, QString& str )
26
{
27
        QByteArray payload = e->data("page/magic");
28
        if (payload.size())
167 Franz 29
        {
3 paul 30
                e->accept();
31
                str = "";
32
                for (uint a = 0; a < payload.size(); ++a)
33
                        str += payload[a];
34
                return true;
167 Franz 35
        }
3 paul 36
        return false;
37
}
38
 
39
/* IconItems Code */
3429 fschmid 40
SeItem::SeItem(QTable* parent, QString text, QPixmap Pix)
41
                : QTableItem(parent, QTableItem::Never, "", Pix)
3 paul 42
{
3429 fschmid 43
        pageName = text;
3 paul 44
        setWordWrap(true);
45
}
46
 
3623 cbradney 47
const QString& SeItem::getPageName()
48
{
49
        return pageName;
50
}
51
 
3 paul 52
/* ListBox Subclass */
53
SeList::SeList(QWidget* parent) : QListBox(parent)
54
{
55
        Mpressed = false;
56
        setAcceptDrops(true);
57
}
58
 
59
void SeList::mouseReleaseEvent(QMouseEvent *m)
60
{
61
        Mpressed = false;
62
        if (m->button() == RightButton)
167 Franz 63
        {
3 paul 64
                QPopupMenu *pmen = new QPopupMenu();
65
                qApp->setOverrideCursor(QCursor(ArrowCursor), true);
112 Franz 66
                int px = pmen->insertItem( tr("Show Page Previews"), this, SLOT(ToggleTh()));
3 paul 67
                if (Thumb)
68
                        pmen->setItemChecked(px, true);
69
                pmen->exec(QCursor::pos());
70
                delete pmen;
167 Franz 71
        }
3 paul 72
}
73
 
74
void SeList::ToggleTh()
75
{
76
        Thumb = !Thumb;
77
        emit ThumbChanged();
78
}
79
 
80
void SeList::mousePressEvent(QMouseEvent* e)
81
{
82
        e->accept();
83
        CurItem = 0;
84
        QListBoxItem *i = itemAt(e->pos());
85
        if (i)
167 Franz 86
        {
3 paul 87
                CurItem = i;
88
                Mpos = e->pos();
248 Franz 89
                Mpressed = true;
167 Franz 90
        }
3 paul 91
}
92
 
93
void SeList::mouseMoveEvent(QMouseEvent* e)
94
{
95
        if ((Mpressed) && ((Mpos - e->pos()).manhattanLength() > 4))
167 Franz 96
        {
3 paul 97
                Mpressed = false;
98
                QListBoxItem *i = itemAt(Mpos);
99
                if (i)
167 Franz 100
                {
3 paul 101
                        QDragObject *dr = new SeDrag("1"+i->text(), this, "te");
102
                        dr->setPixmap(loadIcon("doc.png"));
103
                        dr->drag();
104
                }
167 Franz 105
        }
3 paul 106
}
107
 
108
/* QTable Subclass */
109
SeView::SeView(QWidget* parent) : QTable(parent)
110
{
111
        setDragEnabled(true);
112
        setAcceptDrops(true);
113
        viewport()->setAcceptDrops(true);
114
        setShowGrid(false);
115
        Mpressed = false;
116
        Namen = true;
117
        setFocusPolicy(NoFocus);
118
}
119
 
120
void SeView::contentsMousePressEvent(QMouseEvent* e)
121
{
122
        e->accept();
123
        Mpos = e->pos();
124
        Mpressed = true;
125
}
126
 
127
void SeView::contentsMouseReleaseEvent(QMouseEvent* e)
128
{
129
        e->accept();
130
        Mpressed = false;
3429 fschmid 131
/*      if (e->button() == RightButton)
167 Franz 132
        {
3 paul 133
                QPopupMenu *pmen = new QPopupMenu();
134
                qApp->setOverrideCursor(QCursor(ArrowCursor), true);
2093 cbradney 135
                int px = pmen->insertItem( tr("Show Master Page Names"), this, SLOT(ToggleNam()));
3 paul 136
                if (Namen)
137
                        pmen->setItemChecked(px, true);
138
                pmen->exec(QCursor::pos());
139
                delete pmen;
3429 fschmid 140
        } */
3 paul 141
        emit Click(rowAt(e->pos().y()), columnAt(e->pos().x()), e->button());
142
}
143
 
144
void SeView::ToggleNam()
145
{
3429 fschmid 146
/*      Namen = !Namen;
80 Franz 147
        int val = 35;
3 paul 148
        if (Namen)
80 Franz 149
                val = 100;
150
        setColumnWidth(1, val);
151
        setColumnWidth(3, val);
3 paul 152
        hide();
3429 fschmid 153
        show(); */
3 paul 154
}
155
 
156
void SeView::contentsMouseMoveEvent(QMouseEvent* e)
157
{
158
        QString str, tmp;
3429 fschmid 159
        bool dummy;
3 paul 160
        int p;
161
        int a = rowAt(e->pos().y());
162
        int b = columnAt(e->pos().x());
163
        if ((Mpressed) && ((Mpos - e->pos()).manhattanLength() > 4))
167 Franz 164
        {
3 paul 165
                Mpressed = false;
166
                if ((a != -1) && (b != -1))
167 Franz 167
                {
3429 fschmid 168
                        QTableItem* ite = item(a, b);
3436 fschmid 169
                        if (ite == 0)
170
                                return;
3429 fschmid 171
                        SeItem* it = (SeItem*)ite;
172
                        str = it->pageName;
173
                        p = GetPage(a, b, &dummy);
3 paul 174
                        QDragObject *dr = new SeDrag("2 "+tmp.setNum(p)+" "+str, this, "te");
175
                        dr->setPixmap(loadIcon("doc.png"));
176
                        dr->drag();
177
                }
167 Franz 178
        }
3436 fschmid 179
        QTable::contentsMouseMoveEvent(e);
3 paul 180
}
181
 
182
void SeView::contentsDropEvent(QDropEvent * e)
183
{
184
        QString str, tmp;
3429 fschmid 185
        bool lastPage = false;
3 paul 186
        if (SeDrag::decode(e, str))
167 Franz 187
        {
3429 fschmid 188
                ClearPix();
167 Franz 189
                if (str.startsWith("1"))
3 paul 190
                {
191
                        int a = rowAt(e->pos().y());
192
                        int b = columnAt(e->pos().x());
193
                        int p;
194
                        tmp = str.remove(0,1);
195
                        if ((a == -1) || (b == -1))
196
                                return;
3429 fschmid 197
                        if (a == numRows()-1)
167 Franz 198
                        {
3429 fschmid 199
                                emit NewPage(MaxC+1, tmp);
200
                                return;
167 Franz 201
                        }
3429 fschmid 202
                        p = GetPage(a, b, &lastPage);
203
                        if (numCols() == 1)
204
                        {
205
                                if ((a % 2) == 0)
206
                                        emit NewPage(p, tmp);
207
                                else
208
                                        emit UseTemp(tmp, p);
209
                                return;
210
                        }
3 paul 211
                        else
167 Franz 212
                        {
3429 fschmid 213
                                if ((b % 2) == 0)
3 paul 214
                                {
3429 fschmid 215
                                        if (lastPage)
216
                                                emit NewPage(p+1, tmp);
3 paul 217
                                        else
3429 fschmid 218
                                                emit NewPage(p, tmp);
167 Franz 219
                                }
3 paul 220
                                else
3429 fschmid 221
                                        emit UseTemp(tmp, p);
222
                                return;
167 Franz 223
                        }
224
                }
3 paul 225
                if (str.startsWith("2"))
167 Franz 226
                {
3 paul 227
                        int st = str.find(" ");
228
                        int en = str.find(" ", st+1);
229
                        tmp = str.mid(en+1);
230
                        int dr = str.mid(st, en-st).toInt();
231
                        int a = rowAt(e->pos().y());
232
                        int b = columnAt(e->pos().x());
3436 fschmid 233
                        int p;
3 paul 234
                        if ((a == -1) || (b == -1))
235
                                return;
3436 fschmid 236
                        QTableItem* ite = item(a, b);
3429 fschmid 237
                        p = GetPage(a, b, &lastPage);
3436 fschmid 238
                        if (a == numRows()-1)
239
                        {
240
                                emit MovePage(dr, p+1);
241
                                return;
242
                        }
3429 fschmid 243
                        if (numCols() == 1)
167 Franz 244
                        {
3436 fschmid 245
                                if ((a % 2) == 0)
246
                                        emit MovePage(dr, p);
247
                                else
3429 fschmid 248
                                {
249
                                        emit UseTemp(tmp, p);
3436 fschmid 250
                                        if (ite == 0)
251
                                                return;
3429 fschmid 252
                                        SeItem* it = (SeItem*)ite;
253
                                        it->pageName = tmp;
254
                                }
255
                                return;
256
                        }
257
                        else
258
                        {
3436 fschmid 259
                                if ((b % 2) == 0)
3429 fschmid 260
                                {
3436 fschmid 261
                                        if (lastPage)
262
                                                emit MovePage(dr, p+1);
263
                                        else
264
                                                emit MovePage(dr, p);
265
                                }
266
                                else
267
                                {
3429 fschmid 268
                                        emit UseTemp(tmp, p);
3436 fschmid 269
                                        if (ite == 0)
270
                                                return;
3429 fschmid 271
                                        SeItem* it = (SeItem*)ite;
272
                                        it->pageName = tmp;
273
                                }
274
                                return;
275
                        }
276
                }
167 Franz 277
        }
3 paul 278
}
279
 
280
void SeView::contentsDragEnterEvent(QDragEnterEvent *e)
281
{
282
        if (SeDrag::canDecode(e))
283
                e->accept();
284
}
285
 
2219 fschmid 286
void SeView::contentsDragLeaveEvent(QDragLeaveEvent *)
3 paul 287
{
288
        ClearPix();
289
}
290
 
291
void SeView::contentsDragMoveEvent(QDragMoveEvent *e)
292
{
293
        QString str, tmp;
294
        if (SeDrag::decode(e, str))
167 Franz 295
        {
3 paul 296
                int a = rowAt(e->pos().y());
297
                int b = columnAt(e->pos().x());
3429 fschmid 298
                ClearPix();
3 paul 299
                if ((a == -1) || (b == -1))
300
                        return;
3429 fschmid 301
                if (numCols() == 1)
167 Franz 302
                {
3429 fschmid 303
                        if ((a % 2) == 0)
3 paul 304
                        {
305
                                QPixmap pm;
248 Franz 306
                                pm = QPixmap(columnWidth(b), rowHeight(a));
3 paul 307
                                pm.fill(darkBlue);
3429 fschmid 308
                                setPixmap(a, 0, pm);
167 Franz 309
                        }
310
                }
3 paul 311
                else
167 Franz 312
                {
3429 fschmid 313
                        if (((b % 2) == 0) || (a == numRows()-1))
3 paul 314
                        {
315
                                QPixmap pm;
3429 fschmid 316
                                pm = QPixmap(columnWidth(b), rowHeight(a));
3 paul 317
                                pm.fill(darkBlue);
3429 fschmid 318
                                setPixmap(a, b, pm);
167 Franz 319
                        }
3 paul 320
                }
167 Franz 321
        }
3 paul 322
}
323
 
324
void SeView::ClearPix()
325
{
3429 fschmid 326
        int counter = 0;
327
        int rowcounter = 0;
3 paul 328
        for (int a = 0; a < numRows(); ++a)
167 Franz 329
        {
3429 fschmid 330
                counter = 0;
331
                if (numCols() == 1)
3 paul 332
                {
3429 fschmid 333
                        if ((a % 2) == 0)
3 paul 334
                        {
3429 fschmid 335
                                clearCell(rowcounter, 0);
336
                                rowcounter += 2;
3 paul 337
                        }
167 Franz 338
                }
3 paul 339
                else
167 Franz 340
                {
3429 fschmid 341
                        for (int b = 0; b < numCols(); ++b)
342
                        {
343
                                if ((b % 2) == 0)
344
                                {
345
                                        clearCell(rowcounter, counter);
346
                                        counter += 2;
347
                                }
348
                        }
349
                        rowcounter++;
3 paul 350
                }
167 Franz 351
        }
3429 fschmid 352
        for (int c = 0; c < numCols(); ++c)
353
        {
354
                clearCell(numRows()-1, c);
355
        }
3 paul 356
}
357
 
3429 fschmid 358
int SeView::GetPage(int r, int c, bool *last)
3 paul 359
{
3429 fschmid 360
        int counter = firstP;
361
        int rowcounter = 0;
362
        int ret = MaxC;
363
        *last = false;
364
        if (r == numRows()-1)
167 Franz 365
        {
3429 fschmid 366
                *last = true;
367
                return ret;
368
        }
369
        if ((r == 0) && (c < firstP*colmult+coladd))
370
                return 0;
371
        for (int a = 0; a < MaxC+1; ++a)
372
        {
373
                if ((rowcounter*rowmult+rowadd == r) && (counter*colmult+coladd == c))
3 paul 374
                {
3429 fschmid 375
                        ret = a;
3441 fschmid 376
                        return ret;
167 Franz 377
                }
3 paul 378
                else
167 Franz 379
                {
3429 fschmid 380
                        if (numCols() == 1)
381
                        {
382
                                if (rowcounter*rowmult == r)
383
                                {
384
                                        ret = a;
3441 fschmid 385
                                        return ret;
3429 fschmid 386
                                }
387
                        }
388
                        else
389
                        {
390
                                if ((counter*colmult == c) && (rowcounter*rowmult+rowadd == r))
391
                                {
392
                                        ret = a;
3441 fschmid 393
                                        return ret;
3429 fschmid 394
                                }
395
                        }
167 Franz 396
                }
3429 fschmid 397
                counter++;
398
                if (counter > cols-1)
399
                {
400
                        counter = 0;
401
                        rowcounter++;
402
                }
167 Franz 403
        }
3429 fschmid 404
        *last = true;
405
        return ret;
3 paul 406
}
407
 
408
/* Der Muelleimer */
409
TrashBin::TrashBin(QWidget * parent) : QLabel(parent, "Trash")
410
{
411
        Normal = loadIcon("trashcan.png");
412
        Offen = loadIcon("trashcan2.png");
413
        setPixmap(Normal);
414
        setScaledContents(false);
415
        setAcceptDrops(true);
416
}
417
 
418
void TrashBin::dragEnterEvent(QDragEnterEvent *e)
419
{
420
        if (SeDrag::canDecode(e))
167 Franz 421
        {
3 paul 422
                e->accept();
423
                setPixmap(Offen);
167 Franz 424
        }
3 paul 425
}
426
 
427
void TrashBin::dragLeaveEvent(QDragLeaveEvent *)
428
{
429
        setPixmap(Normal);
430
}
431
 
432
void TrashBin::dropEvent(QDropEvent * e)
433
{
434
        setPixmap(Normal);
435
        QString str, tmp;
436
        if (SeDrag::decode(e, str))
167 Franz 437
        {
438
                if (str.startsWith("2"))
3 paul 439
                {
440
                        int st = str.find(" ");
441
                        int en = str.find(" ", st+1);
442
                        emit DelPage(str.mid(st, en-st).toInt());
167 Franz 443
                }
3 paul 444
                if (str.startsWith("1"))
167 Franz 445
                {
3 paul 446
                        tmp = str.remove(0,1);
447
                        emit DelMaster(tmp);
448
                }
167 Franz 449
        }
3 paul 450
}
451
 
452
 
3623 cbradney 453
PagePalette::PagePalette(QWidget* parent) : ScrPaletteBase( parent, "SP", false, 0)
248 Franz 454
{
1448 cbradney 455
        setIcon(loadIcon("AppIcon.png"));
3623 cbradney 456
        PagePaletteLayout = new QVBoxLayout( this );
457
        PagePaletteLayout->setSpacing( 5 );
458
        PagePaletteLayout->setMargin( 5 );
248 Franz 459
        Splitter1 = new QSplitter( this, "Splitter1" );
460
        Splitter1->setOrientation( QSplitter::Vertical );
461
        QWidget* privateLayoutWidget = new QWidget( Splitter1, "Layout2" );
462
        Layout2 = new QVBoxLayout( privateLayoutWidget, 0, 5, "Layout2");
463
        TextLabel1 = new QLabel( privateLayoutWidget, "TextLabel1" );
464
        Layout2->addWidget( TextLabel1 );
2093 cbradney 465
        masterPageList = new SeList(privateLayoutWidget);
466
        masterPageList->setMinimumSize(QSize(130,70));
467
        masterPageList->Thumb = false;
468
        Layout2->addWidget( masterPageList );
248 Franz 469
        QWidget* privateLayoutWidget_2 = new QWidget( Splitter1, "Layout3" );
470
        Layout3 = new QVBoxLayout( privateLayoutWidget_2, 0, 5, "Layout3");
471
        TextLabel2 = new QLabel( privateLayoutWidget_2, "TextLabel2" );
472
        Layout3->addWidget( TextLabel2 );
3623 cbradney 473
        pageView = new SeView(privateLayoutWidget_2);
474
        pageView->setLeftMargin(0);
475
        pageView->verticalHeader()->hide();
476
        pageView->setTopMargin(0);
477
        pageView->horizontalHeader()->hide();
478
        pageView->setSorting(false);
479
        pageView->setSelectionMode(QTable::NoSelection);
480
        pageView->setColumnMovingEnabled(false);
481
        pageView->setRowMovingEnabled(false);
482
        pageView->setNumRows(1);
483
        pageView->setNumCols(1);
484
        pageView->setMinimumSize(QSize(130,120));
485
        Layout3->addWidget( pageView );
486
        PagePaletteLayout->addWidget( Splitter1 );
3 paul 487
 
248 Franz 488
        Layout1 = new QHBoxLayout;
3560 fschmid 489
        Layout1->setSpacing( 5 );
248 Franz 490
        Layout1->setMargin( 0 );
3560 fschmid 491
        QValueList<PageSet> dummy;
492
        dummy.clear();
3567 fschmid 493
        struct PageSet pageS;
494
        pageS.Name = tr( "Double sided" );
495
        pageS.FirstPage = 0;
496
        pageS.Rows = 1;
497
        pageS.Columns = 1;
498
        pageS.GapHorizontal = 0.0;
499
        pageS.GapVertical = 0.0;
500
        pageS.GapBelow = 40.0;
501
        pageS.pageNames.clear();
502
        pageS.pageNames.append( tr("Middle Right"));
503
        dummy.append(pageS);
3560 fschmid 504
        pageLayout = new PageLayouts(this, dummy, false);
505
        Layout1->addWidget( pageLayout );
3 paul 506
 
3560 fschmid 507
        QSpacerItem* spacer = new QSpacerItem( 15, 15, QSizePolicy::Expanding, QSizePolicy::Minimum );
248 Franz 508
        Layout1->addItem( spacer );
509
 
510
        Trash = new TrashBin( this );
167 Franz 511
        Trash->setMinimumSize(QSize(22,22));
248 Franz 512
        Layout1->addWidget( Trash );
3623 cbradney 513
        PagePaletteLayout->addLayout( Layout1 );
167 Franz 514
        pix = loadIcon("document2.png");
3623 cbradney 515
        currView = 0;
167 Franz 516
        Rebuild();
2195 cbradney 517
        languageChange();
3623 cbradney 518
        dynTip = new DynamicTip(pageView);
2093 cbradney 519
        connect(masterPageList, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(selMasterPage()));
520
        connect(masterPageList, SIGNAL(ThumbChanged()), this, SLOT(RebuildTemp()));
3623 cbradney 521
        connect(pageView, SIGNAL(Click(int, int, int)), this, SLOT(GotoPage(int, int, int)));
522
        connect(pageView, SIGNAL(MovePage(int, int)), this, SLOT(MPage(int, int)));
167 Franz 523
        connect(Trash, SIGNAL(DelMaster(QString)), this, SLOT(DelMPage(QString)));
3560 fschmid 524
        connect(pageLayout, SIGNAL(selectedLayout(int )), this, SLOT(handlePageLayout(int )));
525
        connect(pageLayout, SIGNAL(selectedFirstPage(int )), this, SLOT(handleFirstPage(int )));
3623 cbradney 526
 
527
        connect(this, SIGNAL(EditTemp(QString)), ScApp, SLOT(manageMasterPages(QString)));
528
        connect(pageView, SIGNAL(UseTemp(QString, int)), ScApp, SLOT(Apply_MasterPage(QString, int)));
529
        connect(pageView, SIGNAL(NewPage(int, QString)), ScApp, SLOT(slotNewPageP(int, QString)));
530
        connect(Trash, SIGNAL(DelPage(int)), ScApp, SLOT(DeletePage2(int)));
531
        connect(this, SIGNAL(GotoSeite(int)), ScApp, SLOT(selectPagesFromOutlines(int)));
532
 
2093 cbradney 533
        QToolTip::add(Trash, "<qt>" + tr("Drag pages or master pages onto the trashbin to delete them") + "</qt>");
534
        QToolTip::add(masterPageList, "<qt>" + tr("Here are all your master pages. To create a new page, drag a master page to the page view below") + "</qt>");
3 paul 535
}
536
 
3623 cbradney 537
void PagePalette::DelMPage(QString tmp)
3 paul 538
{
167 Franz 539
        if (tmp == tr("Normal"))
248 Franz 540
                return;
3623 cbradney 541
        int Nr = currView->Doc->MasterNames[tmp];
542
        Page* Seite = currView->Doc->MasterPages.at(Nr);
543
        currView->Doc->MasterPages.remove(Nr);
456 fschmid 544
        delete Seite;
3623 cbradney 545
        currView->Doc->MasterNames.clear();
546
        for (uint aa=0; aa < currView->Doc->MasterPages.count(); ++aa)
248 Franz 547
        {
3623 cbradney 548
                Seite = currView->Doc->MasterPages.at(aa);
3200 cbradney 549
                Seite->setPageNr(aa);
3623 cbradney 550
                if (currView->Doc->currentPageLayout == doublePage)
167 Franz 551
                {
3623 cbradney 552
                        Seite->Margins.Left = Seite->LeftPg ? currView->Doc->pageMargins.Right : currView->Doc->pageMargins.Left;
553
                        Seite->Margins.Right= Seite->LeftPg? currView->Doc->pageMargins.Left : currView->Doc->pageMargins.Right;
248 Franz 554
                }
3 paul 555
                else
167 Franz 556
                {
3623 cbradney 557
                        Seite->Margins.Right = currView->Doc->pageMargins.Right;
558
                        Seite->Margins.Left = currView->Doc->pageMargins.Left;
167 Franz 559
                }
3623 cbradney 560
                Seite->Margins.Top = currView->Doc->pageMargins.Top;
561
                Seite->Margins.Bottom = currView->Doc->pageMargins.Bottom;
562
                currView->Doc->MasterNames[Seite->PageNam] = aa;
248 Franz 563
        }
3623 cbradney 564
        for (uint b=0; b<currView->Doc->DocPages.count(); ++b)
167 Franz 565
        {
3623 cbradney 566
                if (currView->Doc->DocPages.at(b)->MPageNam == tmp)
567
                        currView->Doc->DocPages.at(b)->MPageNam = "Normal";
167 Franz 568
        }
3623 cbradney 569
        currView->DrawNew();
3 paul 570
        RebuildTemp();
571
        RebuildPage();
3623 cbradney 572
        currView->Doc->setModified(true);
3 paul 573
}
574
 
3623 cbradney 575
void PagePalette::MPage(int r, int c)
3 paul 576
{
3436 fschmid 577
        if (r == c)
578
                return;
3623 cbradney 579
        if (c > pageView->MaxC)
580
                currView->Doc->movePage(r, r + 1, c, 2);
3436 fschmid 581
        else
3623 cbradney 582
                currView->Doc->movePage(r, r + 1, c, 0);
583
        currView->reformPages();
3 paul 584
        RebuildPage();
3623 cbradney 585
        currView->DrawNew();
586
        currView->Doc->setModified(true);
3 paul 587
}
588
 
3623 cbradney 589
void PagePalette::GotoPage(int r, int c, int b)
3 paul 590
{
591
        int p;
3429 fschmid 592
        bool dummy;
3 paul 593
        if ((b == LeftButton) && (r != -1) && (c != -1))
167 Franz 594
        {
3623 cbradney 595
                p = pageView->GetPage(r, c, &dummy);
3 paul 596
                emit GotoSeite(p);
167 Franz 597
        }
3 paul 598
}
599
 
3623 cbradney 600
void PagePalette::enablePalette(const bool enabled)
3 paul 601
{
3623 cbradney 602
        pageView->setEnabled(enabled);
603
        masterPageList->setEnabled(enabled);
604
        pageLayout->setEnabled(enabled);
3 paul 605
}
606
 
3623 cbradney 607
void PagePalette::handlePageLayout(int layout)
3 paul 608
{
3623 cbradney 609
        double tpr = currView->Doc->pageMargins.Top;
610
        double lr = currView->Doc->pageMargins.Left;
611
        double rr = currView->Doc->pageMargins.Right;
612
        double br = currView->Doc->pageMargins.Bottom;
613
        pageLayout->selectFirstP(currView->Doc->pageSets[layout].FirstPage);
614
        currView->Doc->resetPage(tpr, lr, rr, br, layout);
615
        currView->reformPages();
616
        currView->DrawNew();
617
        currView->GotoPage(currView->Doc->currentPage->pageNr());
3 paul 618
        RebuildPage();
3623 cbradney 619
        currView->Doc->setModified(true);
3 paul 620
}
621
 
3623 cbradney 622
void PagePalette::handleFirstPage(int fp)
3 paul 623
{
3623 cbradney 624
        currView->Doc->pageSets[currView->Doc->currentPageLayout].FirstPage = fp;
625
        currView->reformPages();
626
        currView->DrawNew();
627
        currView->GotoPage(currView->Doc->currentPage->pageNr());
3 paul 628
        RebuildPage();
3623 cbradney 629
        currView->Doc->setModified(true);
3 paul 630
}
631
 
3623 cbradney 632
void PagePalette::RebuildTemp()
3 paul 633
{
173 Franz 634
        if (ScApp->ScriptRunning)
635
                return;
2093 cbradney 636
        masterPageList->clear();
3623 cbradney 637
        if (currView == 0)
3 paul 638
                return;
1815 fschmid 639
        QPixmap pm;
3 paul 640
        QMap<QString,int>::Iterator it;
3623 cbradney 641
        for (it = currView->Doc->MasterNames.begin(); it != currView->Doc->MasterNames.end(); ++it)
167 Franz 642
        {
2093 cbradney 643
                if (masterPageList->Thumb)
1815 fschmid 644
                {
3623 cbradney 645
                        pm.convertFromImage(currView->MPageToPixmap(it.key(),60));
2093 cbradney 646
                        masterPageList->insertItem(pm, it.key() == "Normal" ? tr("Normal") : it.key());
1815 fschmid 647
                }
3 paul 648
                else
2093 cbradney 649
                        masterPageList->insertItem(it.key() == "Normal" ? tr("Normal") : it.key());
167 Franz 650
        }
3 paul 651
}
652
 
3623 cbradney 653
void PagePalette::RebuildPage()
3 paul 654
{
173 Franz 655
        if (ScApp->ScriptRunning)
656
                return;
3 paul 657
        QString str;
3560 fschmid 658
        disconnect(pageLayout, SIGNAL(selectedLayout(int )), this, SLOT(handlePageLayout(int )));
659
        disconnect(pageLayout, SIGNAL(selectedFirstPage(int )), this, SLOT(handleFirstPage(int )));
3623 cbradney 660
        pageView->setNumRows(1);
661
        pageView->setNumCols(1);
662
        if (currView == 0)
167 Franz 663
        {
3560 fschmid 664
                connect(pageLayout, SIGNAL(selectedLayout(int )), this, SLOT(handlePageLayout(int )));
665
                connect(pageLayout, SIGNAL(selectedFirstPage(int )), this, SLOT(handleFirstPage(int )));
3 paul 666
                return;
167 Franz 667
        }
3623 cbradney 668
        pageLayout->updateLayoutSelector(currView->Doc->pageSets);
669
        pageLayout->selectItem(currView->Doc->currentPageLayout);
670
        pageLayout->firstPage->setCurrentItem(currView->Doc->pageSets[currView->Doc->currentPageLayout].FirstPage);
671
        pageView->MaxC = currView->Doc->Pages.count()-1;
3436 fschmid 672
        int counter, rowcounter, colmult, rowmult, coladd,rowadd;
3623 cbradney 673
        counter = currView->Doc->pageSets[currView->Doc->currentPageLayout].FirstPage;
674
        int cols = currView->Doc->pageSets[currView->Doc->currentPageLayout].Columns;
675
        int rows = (currView->Doc->pageCount+counter) / currView->Doc->pageSets[currView->Doc->currentPageLayout].Columns;
676
        if (((currView->Doc->pageCount+counter) % currView->Doc->pageSets[currView->Doc->currentPageLayout].Columns) != 0)
3429 fschmid 677
                rows++;
678
        rowcounter = 0;
679
        if (cols == 1)
167 Franz 680
        {
3623 cbradney 681
                pageView->setNumCols(cols);
682
                pageView->setNumRows(rows*2+1);
3429 fschmid 683
                colmult = 1;
684
                coladd = 0;
685
                rowmult = 2;
686
                rowadd = 1;
167 Franz 687
        }
3 paul 688
        else
167 Franz 689
        {
3623 cbradney 690
                pageView->setNumCols(cols*2);
691
                pageView->setNumRows(rows+1);
3429 fschmid 692
                colmult = 2;
693
                coladd = 1;
694
                rowmult = 1;
695
                rowadd = 0;
696
        }
3623 cbradney 697
        pageView->coladd = coladd;
698
        pageView->colmult = colmult;
699
        pageView->rowadd = rowadd;
700
        pageView->rowmult = rowmult;
701
        pageView->firstP = counter;
702
        pageView->cols = currView->Doc->pageSets[currView->Doc->currentPageLayout].Columns;
703
        for (uint a = 0; a < currView->Doc->Pages.count(); ++a)
3429 fschmid 704
        {
3623 cbradney 705
                str = currView->Doc->Pages.at(a)->MPageNam;
706
                QTableItem *it = new SeItem( pageView, str, CreateIcon(a, pix));
707
                pageView->setItem(rowcounter*rowmult+rowadd, counter*colmult+coladd, it);
708
                pageView->setColumnWidth(counter*colmult+coladd, pix.width());
3429 fschmid 709
                if (cols == 1)
3436 fschmid 710
                {
3623 cbradney 711
                        pageView->setRowHeight(rowcounter*rowmult, 10);
712
                        pageView->setRowHeight(rowcounter*rowmult+rowadd, pix.height());
3436 fschmid 713
                }
3429 fschmid 714
                else
3623 cbradney 715
                        pageView->setRowHeight(rowcounter*rowmult+rowadd, pix.height()+5);
3429 fschmid 716
                counter++;
3623 cbradney 717
                if (counter > currView->Doc->pageSets[currView->Doc->currentPageLayout].Columns-1)
167 Franz 718
                {
3429 fschmid 719
                        counter = 0;
720
                        rowcounter++;
167 Franz 721
                }
722
        }
3623 cbradney 723
        pageView->setRowHeight(pageView->numRows()-1, 10);
3436 fschmid 724
        counter = 0;
725
        if (cols != 1)
726
        {
3623 cbradney 727
                for (int c = 0; c < pageView->numCols(); ++c)
3436 fschmid 728
                {
729
                        if ((counter % 2) == 0)
3623 cbradney 730
                                pageView->setColumnWidth(counter, 10);
3436 fschmid 731
                        else
3623 cbradney 732
                                pageView->setColumnWidth(counter, pix.width());
3436 fschmid 733
                        counter++;
734
                }
735
        }
3623 cbradney 736
        pageView->repaint();
3560 fschmid 737
        connect(pageLayout, SIGNAL(selectedLayout(int )), this, SLOT(handlePageLayout(int )));
738
        connect(pageLayout, SIGNAL(selectedFirstPage(int )), this, SLOT(handleFirstPage(int )));
3 paul 739
}
740
 
3623 cbradney 741
void PagePalette::Rebuild()
3 paul 742
{
743
        RebuildTemp();
744
        RebuildPage();
3623 cbradney 745
        enablePalette(currView != 0);
3 paul 746
}
747
 
3623 cbradney 748
void PagePalette::setView(ScribusView *view)
3 paul 749
{
3623 cbradney 750
        currView = view;
3 paul 751
}
752
 
3623 cbradney 753
void PagePalette::selMasterPage()
3 paul 754
{
2093 cbradney 755
        if (masterPageList->CurItem != 0)
756
                emit EditTemp(masterPageList->CurItem->text());
3 paul 757
}
758
 
3623 cbradney 759
QPixmap PagePalette::CreateIcon(int nr, QPixmap ret)
3 paul 760
{
761
        QString tmp;
762
        QPainter p;
399 Franz 763
        if (p.begin(&ret))
764
        {
765
                p.setBrush(white);
766
                p.setBackgroundColor(white);
767
                p.setBackgroundMode(QPainter::OpaqueMode);
768
                p.setPen(QPen(black, 1, SolidLine, FlatCap, MiterJoin));
769
                p.setFont(QFont("Helvetica", 12, QFont::Bold));
770
                tmp = tmp.setNum(nr+1);
3436 fschmid 771
                QRect b = p.fontMetrics().boundingRect(tmp);
772
                QRect c = QRect((ret.width() / 2 - b.width() / 2)-2, (ret.height() / 2 - b.height() / 2)-2, b.width()+4, b.height()+4);
773
                p.drawRect(c);
774
                QRect d = QRect((ret.width() / 2 - b.width() / 2), (ret.height() / 2 - b.height() / 2), b.width(), b.height());
775
                p.setFont(QFont("Helvetica", 11, QFont::Bold));
776
                p.drawText(d, Qt::AlignCenter, tmp);
399 Franz 777
                p.end();
778
        }
3 paul 779
        return ret;
780
}
2195 cbradney 781
 
3623 cbradney 782
void PagePalette::languageChange()
2195 cbradney 783
{
784
        setCaption( tr( "Arrange Pages" ) );
785
        TextLabel1->setText( tr( "Available Master Pages:" ) );
786
        TextLabel2->setText( tr( "Document Pages:" ) );
2219 fschmid 787
}
3623 cbradney 788
 
789
//CB Whats this variable returned for.. its always true... ? 
790
//CB Clean up the interface and stick it behind this member for now
791
const bool PagePalette::getNamen()
792
{
793
        return pageView->Namen;
794
}
795
 
796
//CB Whats this variable returned for.. its always true... ? 
797
//CB Clean up the interface and stick it behind this member for now
798
const bool PagePalette::getThumb()
799
{
800
        return masterPageList->Thumb;
801
}