Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
181 Franz 1
/***************************************************************************
2
                              guidemanager.cpp
3
                             -------------------
4
    begin                : Fri Jan 30 2004
5
    copyright            : (C) 2004 by Alessandro Rimoldi
6
    copyright            : (C) by Franz Schmid
7
    e-mail               : http://www.ideale.ch/contact
8
 ***************************************************************************/
9
 
10
/***************************************************************************
11
 *                                                                         *
12
 *   This program is free software; you can redistribute it and/or modify  *
13
 *   it under the terms of the GNU General Public License as published by  *
14
 *   the Free Software Foundation; either version 2 of the License, or     *
15
 *   (at your option) any later version.                                   *
16
 *                                                                         *
17
 ***************************************************************************/
18
 
2164 subik 19
#include "scribus.h"
3934 cbradney 20
#include "selection.h"
3 paul 21
#include "guidemanager.h"
22
#include "guidemanager.moc"
3670 cbradney 23
#include "page.h"
1843 cbradney 24
#include "units.h"
4185 subik 25
#include "commonstrings.h"
26
#include "pagestructs.h"
27
 
2200 subik 28
#include <qradiobutton.h>
2215 subik 29
#include <qlayout.h>
2237 subik 30
#include <qcursor.h>
4185 subik 31
#include <qlistview.h>
32
#include <qdialog.h>
33
#include <qvaluelist.h>
34
#include <qgroupbox.h>
35
#include <qlabel.h>
36
#include <qlistview.h>
37
#include <qpushbutton.h>
38
#include <qcheckbox.h>
39
#include <qtooltip.h>
40
#include <qhbuttongroup.h>
1843 cbradney 41
 
2164 subik 42
 
3 paul 43
extern QPixmap loadIcon(QString nam);
181 Franz 44
 
4185 subik 45
 
2164 subik 46
GuideManager::GuideManager(QWidget* parent) : QDialog(parent, "GuideManager", true, 0)
3 paul 47
{
2397 cbradney 48
        setCaption( tr("Manage Guides"));
240 Franz 49
        setIcon(loadIcon("AppIcon.png"));
2143 subik 50
 
240 Franz 51
        /* Initialise the global variables */
4185 subik 52
        resetMarginsForPage();
4026 craig 53
        docUnitIndex = ScMW->doc->unitIndex();
4185 subik 54
        docUnitPrecision = unitGetPrecisionFromIndex(docUnitIndex);
1917 cbradney 55
        docUnitRatio = unitGetRatioFromIndex(docUnitIndex);
4185 subik 56
        docUnitDecimals = unitGetDecimalsFromIndex(docUnitIndex);
57
        suffix = unitGetSuffixFromIndex(docUnitIndex);
2143 subik 58
 
240 Franz 59
        /* Create the dialog elements */
4185 subik 60
        QVBoxLayout *guideManagerLayout = new QVBoxLayout(this, 11, 6, "guideManagerLayout");
2143 subik 61
 
2215 subik 62
        QHBoxLayout *Layout6 = new QHBoxLayout(0, 0, 6, "Layout6");
2143 subik 63
 
4185 subik 64
        QGroupBox *horGroup = new QGroupBox(this, "horGroup");
65
        horGroup->setTitle( tr("Horizontal Guides"));
66
        horGroup->setColumnLayout(0, Qt::Vertical);
67
        horGroup->layout()->setSpacing(6);
68
        horGroup->layout()->setMargin(11);
69
        QVBoxLayout *horGroupLayout = new QVBoxLayout(horGroup->layout());
70
        horGroupLayout->setAlignment(Qt::AlignTop);
2143 subik 71
 
4185 subik 72
        horList = new QListView(horGroup, "horList");
73
        horList->addColumn(tr("Guide"));
74
        horList->addColumn(tr("Unit"));
75
        horList->setMinimumSize(QSize(0, 150));
76
        horList->setSelectionMode(QListView::Extended);
77
        horList->setAllColumnsShowFocus(true);
78
        horList->setSorting(0);
79
        horGroupLayout->addWidget(horList);
2143 subik 80
 
2215 subik 81
        QHBoxLayout *Layout4 = new QHBoxLayout(0, 0, 6, "Layout4");
2143 subik 82
 
4185 subik 83
        TextLabel2 = new QLabel( tr("&Y-Pos:"), horGroup, "TextLabel2");
240 Franz 84
        Layout4->addWidget(TextLabel2);
2143 subik 85
 
4185 subik 86
        horSpin = new MSpinBox(0, locPageHeight, horGroup, 4);
87
        TextLabel2->setBuddy(horSpin);
88
        Layout4->addWidget(horSpin);
2143 subik 89
 
4185 subik 90
        horGroupLayout->addLayout(Layout4);
2143 subik 91
 
2215 subik 92
        QHBoxLayout *Layout3 = new QHBoxLayout(0, 0, 6, "Layout3");
2143 subik 93
 
4185 subik 94
        horSet = new QPushButton( tr( "&Add" ), horGroup, "horSet");
95
        horSet->setAutoDefault(false);
96
        Layout3->addWidget(horSet);
2143 subik 97
 
4185 subik 98
        horDel = new QPushButton( tr( "D&elete" ), horGroup, "horDel");
99
        horDel->setAutoDefault(false);
100
        Layout3->addWidget(horDel);
2143 subik 101
 
4185 subik 102
        horGroupLayout->addLayout(Layout3);
2143 subik 103
 
4185 subik 104
        Layout6->addWidget(horGroup);
2143 subik 105
 
4185 subik 106
        verGroup = new QGroupBox(this, "verGroup");
107
        verGroup->setTitle( tr("Vertical Guides"));
108
        verGroup->setColumnLayout(0, Qt::Vertical);
109
        verGroup->layout()->setSpacing(6);
110
        verGroup->layout()->setMargin(11);
111
        QVBoxLayout *verGroupLayout = new QVBoxLayout(verGroup->layout());
112
        verGroupLayout->setAlignment(Qt::AlignTop);
2143 subik 113
 
4185 subik 114
        verList = new QListView(verGroup, "verList");
115
        verList->addColumn(tr("Guide"));
116
        verList->addColumn(tr("Unit"));
117
        verList->setMinimumSize(QSize(0, 150));
118
        verList->setSorting(0);
119
        verList->setSelectionMode(QListView::Extended);
120
        verList->setAllColumnsShowFocus(true);
121
        verGroupLayout->addWidget(verList);
2143 subik 122
 
2215 subik 123
        QHBoxLayout *Layout2 = new QHBoxLayout(0, 0, 6, "Layout2");
2143 subik 124
 
4185 subik 125
        TextLabel1 = new QLabel( tr("&X-Pos:"), verGroup, "TextLabel1");
240 Franz 126
        Layout2->addWidget(TextLabel1);
2143 subik 127
 
4185 subik 128
        verSpin = new MSpinBox(0, locPageWidth, verGroup, 4);
129
        TextLabel1->setBuddy(verSpin);
130
        Layout2->addWidget(verSpin);
2143 subik 131
 
4185 subik 132
        verGroupLayout->addLayout(Layout2);
2143 subik 133
 
2215 subik 134
        QHBoxLayout *Layout1 = new QHBoxLayout(0, 0, 6, "Layout1");
2143 subik 135
 
4185 subik 136
        verSet = new QPushButton( tr( "A&dd" ), verGroup, "verSet");
137
        verSet->setAutoDefault(false);
138
        Layout1->addWidget(verSet);
2143 subik 139
 
4185 subik 140
        verDel = new QPushButton( tr( "De&lete" ), verGroup, "verDel");
141
        verDel->setAutoDefault(false);
142
        Layout1->addWidget(verDel);
2143 subik 143
 
4185 subik 144
        verGroupLayout->addLayout(Layout1);
2143 subik 145
 
4185 subik 146
        Layout6->addWidget(verGroup);
2143 subik 147
 
4185 subik 148
        guideManagerLayout->addLayout(Layout6);
2143 subik 149
 
2215 subik 150
        QHBoxLayout *Layout7 = new QHBoxLayout(0, 0, 6, "Layout7");
2143 subik 151
 
2200 subik 152
        // auto guides
4185 subik 153
        QGroupBox *horGroup2 = new QGroupBox(this, "horGroup");
154
        horGroup2->setTitle( tr("Rows and Columns - Automatic Guides"));
155
        horGroup2->setColumnLayout(0, Qt::Vertical);
156
        horGroup2->layout()->setSpacing(6);
157
        horGroup2->layout()->setMargin(11);
158
        QVBoxLayout *horGroupLayout2 = new QVBoxLayout(horGroup2->layout());
159
        horGroupLayout2->setAlignment(Qt::AlignTop);
2143 subik 160
 
2215 subik 161
        // auto guides basic
4185 subik 162
        QLabel *TextLabel8 = new QLabel( tr("&Rows:"), horGroup2, "TextLabel8");
163
        rowSpin = new QSpinBox(1, 100, 1, horGroup2, "rowSpin");
164
        TextLabel8->setBuddy(rowSpin);
2143 subik 165
 
4185 subik 166
        QLabel *TextLabel9 = new QLabel( tr("C&olumns:"), horGroup2, "TextLabel9");
167
        colSpin = new QSpinBox(1, 100, 1, horGroup2, "colSpin");
168
        TextLabel9->setBuddy(colSpin);
2143 subik 169
 
2215 subik 170
        QVBoxLayout *rcLayout = new QVBoxLayout(0, 0, 6, "rcLayout");
171
        rcLayout->addWidget(TextLabel8);
4185 subik 172
        rcLayout->addWidget(rowSpin);
2215 subik 173
        rcLayout->addWidget(TextLabel9);
4185 subik 174
        rcLayout->addWidget(colSpin);
2215 subik 175
 
176
        // auto guides gaps
4185 subik 177
        useRowGap = new QCheckBox( tr("Row &Gap"), horGroup2, "useRowGap");
2215 subik 178
        useRowGap->setChecked(false);
4185 subik 179
        rowGap = new MSpinBox(0, 100, horGroup2, 4);
2215 subik 180
        rowGap->setValue(0);
181
        rowGap->setEnabled(false);
182
 
4185 subik 183
        useColGap = new QCheckBox( tr("Colum&n Gap"), horGroup2, "useColGap");
2200 subik 184
        useColGap->setChecked(false);
4185 subik 185
        colGap = new MSpinBox(0, 100, horGroup2, 4);
2215 subik 186
        colGap->setValue(0);
2200 subik 187
        colGap->setEnabled(false);
188
 
2215 subik 189
        QVBoxLayout *rcGapLayout = new QVBoxLayout(0, 0, 6, "rcGapLayout");
190
        rcGapLayout->addWidget(useRowGap);
191
        rcGapLayout->addWidget(rowGap);
192
        rcGapLayout->addWidget(useColGap);
193
        rcGapLayout->addWidget(colGap);
2143 subik 194
 
2215 subik 195
        // auto guides formating
196
        QHBoxLayout *autoGuidesLayout = new QHBoxLayout(0, 0, 6, "autoGuidesLayout");
197
        autoGuidesLayout->addLayout(rcLayout);
198
        autoGuidesLayout->addLayout(rcGapLayout);
199
 
200
        QHBoxLayout *Layout10 = new QHBoxLayout(0, 0, 6, "Layout10");
4185 subik 201
        bGroup = new QHButtonGroup(horGroup2, "bGroup");
202
        bGroup->setFrameStyle(QFrame::NoFrame);
203
        QLabel *TextLabel10 = new QLabel( tr("Refer to:"), horGroup2, "TextLabel10");
2164 subik 204
        Layout10->addWidget(TextLabel10);
4185 subik 205
        QRadioButton *fPage = new QRadioButton( tr( "&Page" ), bGroup, "fpage");
2164 subik 206
        fPage->setChecked(true);
4185 subik 207
        (void) new QRadioButton( tr( "&Margins" ), bGroup, "fmargin");
208
        QRadioButton *fSelect = new QRadioButton( tr( "&Selection" ), bGroup, "fselect");
2164 subik 209
        fSelect->setEnabled(selected);
4185 subik 210
        Layout10->addWidget(bGroup);
2143 subik 211
 
212
        QSpacerItem* spacer2 = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
213
        Layout10->addItem(spacer2);
214
 
4185 subik 215
        Layout7->addWidget(horGroup2);
216
        horGroupLayout2->addLayout(autoGuidesLayout);
217
        horGroupLayout2->addLayout(Layout10);
2143 subik 218
 
4185 subik 219
        guideManagerLayout->addLayout(Layout7);
2143 subik 220
 
2215 subik 221
        QHBoxLayout *Layout5 = new QHBoxLayout(0, 0, 6, "Layout5");
4185 subik 222
        lockedCheckBox = new QCheckBox( tr( "&Lock Guides" ), this, "lockedCheckBox");
223
        lockedCheckBox->setChecked(ScMW->doc->GuideLock);
224
        Layout5->addWidget(lockedCheckBox);
2143 subik 225
 
3816 subik 226
        allPages = new QCheckBox(tr("&Apply to All Pages"), this, "allPages");
227
        allPages->setChecked(false);
228
        Layout5->addWidget(allPages);
229
 
230
        QHBoxLayout *buttonLayout = new QHBoxLayout(0, 0, 6, "buttonLayout");
2215 subik 231
        QSpacerItem* spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
3816 subik 232
        buttonLayout->addItem(spacer);
2143 subik 233
 
2952 cbradney 234
        okButton = new QPushButton( CommonStrings::tr_OK, this, "okButton");
2215 subik 235
        okButton->setAutoDefault(false);
2237 subik 236
        cancelButton = new QPushButton( tr( "&Close" ), this, "cancelButton");
237
        cancelButton->setAutoDefault(false);
238
        cancelButton->setAccel(QKeySequence("Esc"));
2397 cbradney 239
        setButton = new QPushButton( tr("&Update"), this, "setButton");
2237 subik 240
        setButton->setAutoDefault(false);
3816 subik 241
        buttonLayout->addWidget(setButton);
242
        buttonLayout->addWidget(okButton);
243
        buttonLayout->addWidget(cancelButton);
2143 subik 244
 
4185 subik 245
        guideManagerLayout->addLayout(Layout5);
246
        guideManagerLayout->addLayout(buttonLayout);
2143 subik 247
 
4185 subik 248
        // set current guides
249
        setGuidesFromList(horList, ScMW->doc->currentPage->YGuides);
250
        setGuidesFromList(verList, ScMW->doc->currentPage->XGuides);
2215 subik 251
        unitChange();
2143 subik 252
 
2237 subik 253
        //tooltips
254
        QToolTip::add( setButton, "<qt>" + tr("Set the guides in document. Guide manager is still opened but the changes are persistant", "guide manager") + "</qt>");
255
 
240 Franz 256
        // Create signals and slots connections
2237 subik 257
        connect(okButton, SIGNAL(clicked()), this, SLOT(commitChanges()));
258
        connect(setButton, SIGNAL(clicked()), this, SLOT(commitEditChanges()));
259
        connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
4185 subik 260
        connect(horSet, SIGNAL(clicked()), this, SLOT(AddHorVal()));
261
        connect(horDel, SIGNAL(clicked()), this, SLOT(DelHorVal()));
262
        connect(horSpin, SIGNAL(valueChanged(int)), this, SLOT(ChangeHorVal()));
263
        connect(horList, SIGNAL(currentChanged(QListViewItem*)), this, SLOT(horList_currentChanged(QListViewItem*)));
264
        connect(verSet, SIGNAL(clicked()), this, SLOT(AddVerVal()));
265
        connect(verDel, SIGNAL(clicked()), this, SLOT(DelVerVal()));
266
        connect(verSpin, SIGNAL(valueChanged(int)), this, SLOT(ChangeVerVal()));
267
        connect(verList, SIGNAL(currentChanged(QListViewItem*)), this, SLOT(verList_currentChanged(QListViewItem*)));
2200 subik 268
        connect(useRowGap, SIGNAL(toggled(bool)), this, SLOT(useRowGap_clicked(bool)));
269
        connect(useColGap, SIGNAL(toggled(bool)), this, SLOT(useColGap_clicked(bool)));
4185 subik 270
}
2143 subik 271
 
4198 subik 272
GuideManager::~GuideManager()
273
{
274
        ScMW->mainWindowStatusLabel->setText(QString::null);
275
}
276
 
4185 subik 277
void GuideManager::DelHorVal()
278
{
279
        /* previous item pointer to ensure that ++it
280
        runs before item goes deleted */
281
        QListViewItem *itemToDelete;
282
        QListViewItemIterator it(horList, QListViewItemIterator::Selected);
283
        while (it.current())
264 Franz 284
        {
4185 subik 285
                itemToDelete = it.current();
286
                ++it;
287
                if (itemToDelete)
288
                {
289
                        horList->takeItem(itemToDelete);
290
                        delete itemToDelete;
291
                }
264 Franz 292
        }
4185 subik 293
}
294
 
295
void GuideManager::DelVerVal()
296
{
297
        QListViewItem *itemToDelete;
298
        QListViewItemIterator it(verList, QListViewItemIterator::Selected);
299
        while (it.current())
240 Franz 300
        {
4185 subik 301
                itemToDelete = it.current();
302
                ++it;
303
                if (itemToDelete)
264 Franz 304
                {
4185 subik 305
                        verList->takeItem(itemToDelete);
306
                        delete itemToDelete;
264 Franz 307
                }
2143 subik 308
        }
309
}
2237 subik 310
 
4198 subik 311
bool GuideManager::addValueToList(QListView *list, MSpinBox *spin)
3 paul 312
{
4185 subik 313
        QString tmp;
314
        tmp = tmp.setNum(0.0, 'f', docUnitPrecision);
4198 subik 315
        // no duplications
316
        if (list->findItem(tmp, 0) != 0)
317
        {
318
                ScMW->mainWindowStatusLabel->setText(tr("There is empty (0.0) guide already"));
319
                return false;
320
        }
321
        QListViewItem *item = new QListViewItem(list, tmp, suffix);
322
        list->insertItem(item);
323
        list->setCurrentItem(item);
324
        list->clearSelection();
325
        list->setSelected(item, true);
326
        spin->setFocus();
327
        spin->selectAll();
328
        return true;
3 paul 329
}
2143 subik 330
 
4198 subik 331
void GuideManager::AddHorVal()
332
{
333
        addValueToList(horList, horSpin);
334
}
335
 
4185 subik 336
void GuideManager::AddVerVal()
3 paul 337
{
4198 subik 338
        addValueToList(verList, verSpin);
3 paul 339
}
2143 subik 340
 
4185 subik 341
void GuideManager::resetMarginsForPage()
3 paul 342
{
4185 subik 343
        locPageWidth = ScMW->doc->currentPage->width();
344
        locPageHeight = ScMW->doc->currentPage->height();
345
        // whatif selection settings
346
        FPoint selectionTopLeft = FPoint(0, 0);
347
        FPoint selectionBottomRight = FPoint(0, 0);
2143 subik 348
 
4185 subik 349
        int docSelectionCount = ScMW->doc->selection->count();
350
        // multiselection
351
        if (docSelectionCount > 1)
352
        {
353
                selectionTopLeft.setXY(ScMW->view->GroupX - ScMW->doc->currentPage->xOffset(),
354
                                                           ScMW->view->GroupY - ScMW->doc->currentPage->yOffset());
355
                selectionBottomRight.setXY(ScMW->view->GroupW,
356
                                                                   ScMW->view->GroupH);
357
        }
358
        // only one item selected
359
        else if (docSelectionCount == 1)
360
        {
361
                PageItem *currItem = ScMW->doc->selection->itemAt(0);
362
                selectionTopLeft.setXY(currItem->xPos() - ScMW->doc->currentPage->xOffset(),
363
                                                           currItem->yPos() - ScMW->doc->currentPage->yOffset());
364
                selectionBottomRight.setXY(currItem->width(), currItem->height());
365
        }
2143 subik 366
 
4185 subik 367
        selected = true;
368
        if (selectionBottomRight != FPoint(0, 0))
369
        {
370
                gy = selectionTopLeft.y();
371
                gx = selectionTopLeft.x();
372
                gw = selectionBottomRight.x();
373
                gh = selectionBottomRight.y();
374
        }
375
        else selected = false;
376
 
377
        locTop = ScMW->doc->pageMargins.Top;
378
        locBottom = ScMW->doc->pageMargins.Bottom;
379
 
380
        PageLocation pageLocation = ScMW->doc->locationOfPage(ScMW->doc->currentPageNumber());
381
        switch (pageLocation)
382
        {
383
                case MiddlePage :
384
                        locLeft = ScMW->doc->pageMargins.Left;
385
                        locRight = ScMW->doc->pageMargins.Left;
386
                        break;
387
                case LeftPage:
388
                        locLeft = ScMW->doc->pageMargins.Right;
389
                        locRight = ScMW->doc->pageMargins.Left;
390
                        break;
391
                case RightPage:
392
                        locRight = ScMW->doc->pageMargins.Right;
393
                        locLeft = ScMW->doc->pageMargins.Left;
394
                        break;
395
                default:
396
                        locRight = 0;
397
                        locLeft = 0;
398
        }
3 paul 399
}
2143 subik 400
 
4185 subik 401
void GuideManager::addRows()
2200 subik 402
{
4185 subik 403
        resetMarginsForPage();
404
        horList->clear();
405
        int n = QString(rowSpin->text()).toInt();
2143 subik 406
        double offset = 0;
3620 subik 407
        double newPageHeight = locPageHeight;
2143 subik 408
 
4185 subik 409
        if (bGroup->selectedId() == 1)
2143 subik 410
        {
3620 subik 411
                newPageHeight = locPageHeight - locTop - locBottom;
412
                offset = locTop;
2143 subik 413
        }
4185 subik 414
        else if (bGroup->selectedId() == 2)
2164 subik 415
        {
2200 subik 416
                offset = gy;
3620 subik 417
                newPageHeight = gh;
2164 subik 418
        }
2143 subik 419
 
3620 subik 420
        double spacing = newPageHeight / n;
2215 subik 421
        QValueList<double> values;
2200 subik 422
        for (int i = 1; i < n; ++i)
2143 subik 423
        {
2200 subik 424
                if (useRowGap->isChecked())
2143 subik 425
                {
4026 craig 426
                        double gapValue = value2pts(rowGap->value(), ScMW->doc->unitIndex());
3943 subik 427
                        values.append(offset + (spacing * i) + (gapValue / 2.0));
428
                        values.append(offset + (spacing * i) - (gapValue / 2.0));
2143 subik 429
                }
430
                else
3620 subik 431
                        values.append(offset + (spacing * i));
2143 subik 432
        }
4185 subik 433
        setGuidesFromList(horList, values);
2143 subik 434
}
435
 
4185 subik 436
void GuideManager::addCols()
2200 subik 437
{
4185 subik 438
        resetMarginsForPage();
439
        verList->clear();
440
        int n = QString(colSpin->text()).toInt();
2143 subik 441
        double offset = 0;
3620 subik 442
        double newPageWidth = locPageWidth;
2143 subik 443
 
4185 subik 444
        if (bGroup->selectedId() == 1)
2143 subik 445
        {
3620 subik 446
                newPageWidth = locPageWidth - locLeft - locRight;
447
                offset = locLeft;
2143 subik 448
        }
4185 subik 449
        else if (bGroup->selectedId() == 2)
2164 subik 450
        {
451
                offset = gx;
3620 subik 452
                newPageWidth = gw;
2164 subik 453
        }
2143 subik 454
 
3620 subik 455
        double spacing = newPageWidth / n;
2215 subik 456
        QValueList<double> values;
2200 subik 457
        for (int i = 1; i < n; ++i)
2143 subik 458
        {
2200 subik 459
                if (useColGap->isChecked())
2143 subik 460
                {
4026 craig 461
                        double gapValue = value2pts(colGap->value(), ScMW->doc->unitIndex());
3943 subik 462
                        values.append(offset + spacing * i + (gapValue / 2.0));
463
                        values.append(offset + spacing * i - (gapValue / 2.0));
2143 subik 464
                }
465
                else
2215 subik 466
                        values.append(offset + spacing * i);
2143 subik 467
        }
4185 subik 468
        setGuidesFromList(verList, values);
2215 subik 469
}
470
 
181 Franz 471
void GuideManager::ChangeHorVal()
3 paul 472
{
4185 subik 473
        QListViewItem *item = horList->currentItem();
474
        if (item == 0)
475
                return;
476
        QString tmp;
477
        tmp = tmp.setNum(horSpin->value(), 'f', docUnitPrecision);
478
        item->setText(0, tmp);
3 paul 479
}
2143 subik 480
 
181 Franz 481
void GuideManager::ChangeVerVal()
3 paul 482
{
4185 subik 483
        QListViewItem *item = verList->currentItem();
484
        if (item == 0)
485
                return;
486
        QString tmp;
487
        tmp = tmp.setNum(verSpin->value(), 'f', docUnitPrecision);
488
        item->setText(0, tmp);
3 paul 489
}
2143 subik 490
 
2215 subik 491
void GuideManager::unitChange()
3 paul 492
{
4185 subik 493
        horSpin->setSuffix(suffix);
494
        verSpin->setSuffix(suffix);
495
        rowGap->setSuffix(suffix);
496
        colGap->setSuffix(suffix);
497
        horSpin->setDecimals(docUnitDecimals);
498
        verSpin->setDecimals(docUnitDecimals);
499
        rowGap->setDecimals(docUnitDecimals);
500
        colGap->setDecimals(docUnitDecimals);
3 paul 501
}
2143 subik 502
 
2164 subik 503
void GuideManager::refreshDoc()
504
{
4185 subik 505
        if (rowSpin->value() > 1)
506
                addRows();
507
        if (colSpin->value() > 1)
508
                addCols();
509
        QValueList<double> tmp = getValuesFromList(verList);
510
        ScMW->doc->currentPage->addXGuides(tmp);
511
        tmp = getValuesFromList(horList);
512
        ScMW->doc->currentPage->addYGuides(tmp);
513
        ScMW->doc->lockGuides(lockedCheckBox->isChecked());
4026 craig 514
        ScMW->view->DrawNew();
2164 subik 515
}
2200 subik 516
 
3816 subik 517
void GuideManager::refreshWholeDoc()
518
{
4026 craig 519
        int origPage = ScMW->doc->currentPage->pageNr();
3816 subik 520
 
4136 cbradney 521
        for (uint i = 0; i < ScMW->doc->Pages->count(); ++i)
3816 subik 522
        {
4026 craig 523
                ScMW->view->GotoPage(i);
4185 subik 524
                refreshDoc();
3816 subik 525
        }
4026 craig 526
        ScMW->view->GotoPage(origPage);
527
        ScMW->view->DrawNew();
3816 subik 528
}
529
 
2200 subik 530
void GuideManager::useRowGap_clicked(bool state)
531
{
532
        rowGap->setEnabled(state);
4198 subik 533
        if (state)
534
                rowGap->setFocus();
2200 subik 535
}
536
 
537
void GuideManager::useColGap_clicked(bool state)
538
{
539
        colGap->setEnabled(state);
4198 subik 540
        if (state)
541
                colGap->setFocus();
2200 subik 542
}
2237 subik 543
 
544
void GuideManager::commitChanges()
545
{
546
        commitEditChanges();
547
        return accept();
548
}
549
 
550
void GuideManager::commitEditChanges()
551
{
552
        qApp->setOverrideCursor(QCursor(waitCursor), true);
3816 subik 553
        if (allPages->isChecked())
554
                refreshWholeDoc();
555
        else
556
                refreshDoc();
2237 subik 557
        QApplication::restoreOverrideCursor();
558
}
4185 subik 559
 
560
void GuideManager::setGuidesFromList(QListView *w, QValueList<double> guides)
561
{
562
        QValueList<double>::iterator it;
563
        QString tmp;
564
 
565
        for (it = guides.begin(); it != guides.end(); ++it)
566
        {
567
                tmp = tmp.setNum((*it) * docUnitRatio , 'f', docUnitPrecision);
568
                QListViewItem *item = new QListViewItem(w, tmp, suffix);
569
                w->insertItem(item);
570
        }
571
        w->setCurrentItem(w->firstChild());
572
        w->setSelected(w->firstChild(), true);
573
}
574
 
575
QValueList<double> GuideManager::getValuesFromList(QListView *w)
576
{
577
        QValueList<double> ret;
578
        QListViewItemIterator it(w);
579
 
580
        while (it.current())
581
        {
582
                ret.append(it.current()->text(0).toDouble() / docUnitRatio);
583
                ++it;
584
        }
585
        return ret;
586
}
587
 
588
void GuideManager::verList_currentChanged(QListViewItem *item)
589
{
590
        double val;
591
        if (!item)
592
                val = 0.0;
593
        else
594
                val = item->text(0).toDouble();
595
        verSpin->setValue(val);
596
}
597
 
598
void GuideManager::horList_currentChanged(QListViewItem *item)
599
{
600
        double val;
601
        if (!item)
602
                val = 0.0;
603
        else
604
                val = item->text(0).toDouble();
605
        horSpin->setValue(val);
606
}