Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
12610 jghali 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
 */
7
/***************************************************************************
8
*                                                                         *
9
*   This program is free software; you can redistribute it and/or modify  *
10
*   it under the terms of the GNU General Public License as published by  *
11
*   the Free Software Foundation; either version 2 of the License, or     *
12
*   (at your option) any later version.                                   *
13
*                                                                         *
14
***************************************************************************/
15
 
16
 
17
#include "canvasmode_create.h"
18
 
19
#include <QApplication>
20
#include <QButtonGroup>
21
#include <QCheckBox>
22
#include <QCursor>
23
#include <QEvent>
24
#include <QMessageBox>
25
#include <QMouseEvent>
26
#include <QPainterPath>
27
#include <QPoint>
28
#include <QRect>
29
#include <QWidgetAction>
30
 
13576 cbradney 31
#include "ui/basepointwidget.h"
12610 jghali 32
#include "canvas.h"
33
#include "fpoint.h"
34
#include "fpointarray.h"
13576 cbradney 35
#include "ui/hruler.h"
36
#include "ui/vruler.h"
12610 jghali 37
#include "hyphenator.h"
13650 cbradney 38
#include "ui/insertTable.h"
39
#include "ui/oneclick.h"
12610 jghali 40
#include "pageitem_textframe.h"
13576 cbradney 41
#include "ui/pageselector.h"
12610 jghali 42
#include "prefscontext.h"
43
#include "prefsfile.h"
44
#include "prefsmanager.h"
13551 cbradney 45
#include "ui/propertiespalette.h"
12610 jghali 46
#include "scraction.h"
13551 cbradney 47
#include "ui/scrapbookpalette.h"
12610 jghali 48
#include "scribus.h"
49
#include "scribusdoc.h"
50
#include "scribusview.h"
51
#include "scribusXml.h"
52
#include "selection.h"
53
#include "undomanager.h"
54
#include "units.h"
55
#include "util.h"
56
#include "util_icon.h"
57
#include "util_math.h"
58
 
59
 
60
 
61
CreateMode::CreateMode(ScribusView* view) : CanvasMode(view)
62
{
63
        canvasPressCoord.setXY(-1.0, -1.0);
64
        mouseGlobalCoord.setXY(-1.0, -1.0);
65
        inItemCreation = false;
66
        createObjectMode     = 0;
67
        createObjectSubMode  = 0;
68
        modifiers            = 0;
69
        m_MouseButtonPressed = false;
70
        m_createTransaction  = NULL;
71
}
72
 
73
 
74
void CreateMode::drawControls(QPainter* p)
75
{
76
        if (!inItemCreation) return;
77
 
78
        QPointF topLeft(createObjectPos.x(), createObjectPos.y());
79
        QPointF btRight(canvasCurrCoord.x(), canvasCurrCoord.y());
80
        QColor  drawColor = qApp->palette().color(QPalette::Active, QPalette::Highlight);
81
 
82
        if (createObjectMode != modeDrawLine)
83
        {
16511 craig 84
                QRectF bounds = QRectF(topLeft, btRight).normalized();
85
                QRect localRect = m_canvas->canvasToLocal(bounds);
86
                if (localRect.width() <= 0 || localRect.height() <= 0)
87
                        return;
12610 jghali 88
                p->setRenderHint(QPainter::Antialiasing);
89
 
90
                p->save();
91
                p->setPen(QPen(drawColor, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
92
                drawColor.setAlpha(64);
93
                p->setBrush(drawColor);
94
                p->drawRect(localRect);
95
 
96
                drawColor.setAlpha(255);
97
                p->setBrush(Qt::NoBrush);
98
                p->setPen(QPen(drawColor, 1, Qt::DashLine, Qt::FlatCap, Qt::MiterJoin));
99
 
100
                int frameType = 0, itemType = 0;
101
                getFrameItemTypes(itemType, frameType);
102
                if (frameType == PageItem::Ellipse)
103
                {
104
                        p->drawEllipse(localRect);
105
                }
16215 fschmid 106
                else if (createObjectMode == modeDrawArc)
107
                {
108
                        QPainterPath path;
109
                        path.moveTo(localRect.width() / 2.0, localRect.height() / 2.0);
110
                        path.arcTo(0.0, 0.0, localRect.width(), localRect.height(), m_doc->itemToolPrefs().arcStartAngle, m_doc->itemToolPrefs().arcSweepAngle);
111
                        path.closeSubpath();
112
                        p->translate(localRect.left(), localRect.top());
113
                        p->drawPath(path);
114
                }
12610 jghali 115
                else if (createObjectMode == modeDrawRegularPolygon)
116
                {
16203 fschmid 117
                        QPainterPath path = RegularPolygonPath(localRect.width(), localRect.height(), m_doc->itemToolPrefs().polyCorners, m_doc->itemToolPrefs().polyUseFactor, m_doc->itemToolPrefs().polyFactor, m_doc->itemToolPrefs().polyRotation, m_doc->itemToolPrefs().polyCurvature, m_doc->itemToolPrefs().polyInnerRot, m_doc->itemToolPrefs().polyOuterCurvature);
12610 jghali 118
                        p->translate(localRect.left(), localRect.top());
119
                        p->drawPath(path);
120
                }
16311 fschmid 121
                else if (createObjectMode == modeDrawSpiral)
122
                {
123
                        QPainterPath path = SpiralPath(localRect.width(), localRect.height(), m_doc->itemToolPrefs().spiralStartAngle, m_doc->itemToolPrefs().spiralEndAngle, m_doc->itemToolPrefs().spiralFactor);
124
                        p->translate(localRect.left(), localRect.top());
125
                        p->drawPath(path);
126
                }
12610 jghali 127
                else if ((createObjectMode == modeDrawShapes) && (createObjectSubMode > 1))
128
                {
129
                        FPointArray poly;
130
                        int valCount = m_doc->ValCount;
131
                        double *vals = m_doc->ShapeValues;
132
                        for (int a = 0; a < valCount-3; a += 4)
133
                        {
134
                                if (vals[a] < 0)
135
                                {
136
                                        poly.setMarker();
137
                                        continue;
138
                                }
139
                                double x1 = localRect.width()  * vals[a] / 100.0;
140
                                double y1 = localRect.height() * vals[a+1] / 100.0;
141
                                double x2 = localRect.width()  * vals[a+2] / 100.0;
142
                                double y2 = localRect.height() * vals[a+3] / 100.0;
143
                                poly.addPoint(x1, y1);
144
                                poly.addPoint(x2, y2);
145
                        }
146
                        QPainterPath path = poly.toQPainterPath(false);
147
                        p->translate(localRect.left(), localRect.top());
148
                        p->drawPath(path);
149
                }
150
                p->restore();
151
        }
152
        else
153
        {
154
                QPoint p1 = m_canvas->canvasToLocal(topLeft);
155
                QPoint p2 = m_canvas->canvasToLocal(btRight);
156
 
157
                p->save();
158
                p->setPen(QPen(drawColor, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
159
                p->setBrush(drawColor);
160
                p->drawLine(p1, p2);
161
                p->restore();
162
        }
163
}
164
 
165
inline bool CreateMode::GetItem(PageItem** pi)
166
{
167
        *pi = m_doc->m_Selection->itemAt(0);
168
        return (*pi) != NULL;
169
}
170
 
171
// the following code was moved from scribusview.cpp:
172
 
173
 
174
void CreateMode::enterEvent(QEvent *)
175
{
176
        if (!m_MouseButtonPressed)
177
        {
178
                setModeCursor();
179
        }
180
}
181
 
182
 
183
void CreateMode::leaveEvent(QEvent *e)
184
{
185
        if (!m_MouseButtonPressed)
186
                qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
187
}
188
 
189
 
190
void CreateMode::activate(bool fromGesture)
191
{
192
        PageItem* currItem;
193
//      qDebug() << "CreateMode::activate" << fromGesture;
194
        if (!fromGesture || !GetItem(&currItem) || !m_createTransaction)
195
        {
196
                if (m_createTransaction)
197
                {
198
//                      qDebug() << "canceling left over create Transaction";
199
                        m_createTransaction->cancel();
200
                        delete m_createTransaction;
201
                        m_createTransaction = NULL;
202
                }
203
                canvasPressCoord.setXY(-1.0, -1.0);
204
                mouseGlobalCoord.setXY(-1.0, -1.0);
205
                inItemCreation = false;
206
        }              
207
        setModeCursor();
208
}
209
 
210
void CreateMode::deactivate(bool forGesture)
211
{
212
//      qDebug() << "CreateMode::deactivate" << forGesture;
213
        if (!forGesture)
214
        {              
215
                if (m_createTransaction)
216
                {
217
//                      qDebug() << "CreateMode::deactivate: canceling left over create Transaction";
218
                        m_createTransaction->cancel();
219
                        delete m_createTransaction;
220
                        m_createTransaction = NULL;
221
                }
222
        }
223
}
224
 
225
void CreateMode::mouseDoubleClickEvent(QMouseEvent *m)
226
{
227
        m->accept();
228
        m_MouseButtonPressed = false;
229
        m_canvas->resetRenderMode();
230
}
231
 
232
 
233
void CreateMode::mouseMoveEvent(QMouseEvent *m)
234
{
235
        const FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
12705 jghali 236
        modifiers = m->modifiers();
12610 jghali 237
 
238
        double newX, newY;
239
        PageItem *currItem;
240
        QPoint np, np2, mop;
241
        QPainter p;
242
        QRect tx;
243
        m->accept();
244
//      qDebug() << "legacy mode move:" << m->x() << m->y() << m_canvas->globalToCanvas(m->globalPos()).x() << m_canvas->globalToCanvas(m->globalPos()).y();
245
//      emit MousePos(m->x()/m_canvas->scale(),// + m_doc->minCanvasCoordinate.x(), 
246
//                                m->y()/m_canvas->scale()); // + m_doc->minCanvasCoordinate.y());
13124 fschmid 247
 
13128 jghali 248
        if (commonMouseMove(m))
249
                return;
12610 jghali 250
        if (GetItem(&currItem))
251
        {
15179 jghali 252
                newX = mousePointDoc.x(); //m_view->translateToDoc(m->x(), m->y()).x());
253
                newY = mousePointDoc.y(); //m_view->translateToDoc(m->x(), m->y()).y());
12610 jghali 254
 
255
                if (m_doc->DragP)
256
                        return;
257
        }
258
        else
259
        {
260
                if ((m_MouseButtonPressed) && (m->buttons() & Qt::LeftButton))
261
                {
15179 jghali 262
                        newX = mousePointDoc.x();
263
                        newY = mousePointDoc.y();
12703 jghali 264
                        if (createObjectMode == modeDrawLine)
265
                        {
12705 jghali 266
                                if (m_doc->useRaster)
267
                                {
14932 cbradney 268
                                        newX = qRound(newX / m_doc->guidesPrefs().minorGridSpacing) * m_doc->guidesPrefs().minorGridSpacing;
269
                                        newY = qRound(newY / m_doc->guidesPrefs().minorGridSpacing) * m_doc->guidesPrefs().minorGridSpacing;
12703 jghali 270
                                }
12705 jghali 271
                                if (m->modifiers() & Qt::ControlModifier)
272
                                {
14922 jghali 273
                                        QRectF bounds(QPointF(createObjectPos.x(), createObjectPos.y()), QPointF(newX, newY));
12705 jghali 274
                                        double newRot = xy2Deg(bounds.width(), bounds.height());
275
                                        if (newRot < 0.0)
276
                                                newRot += 360;
14932 cbradney 277
                                        newRot = constrainAngle(newRot, m_doc->opToolPrefs().constrain);
12705 jghali 278
                                        double len = qMax(0.01, distance(bounds.width(), bounds.height()));
279
                                        bounds.setSize(len * QSizeF(cosd(newRot), sind(newRot)));
12703 jghali 280
                                        newX = bounds.right();
12705 jghali 281
                                        newY = bounds.bottom();
12703 jghali 282
                                }
283
                        }
13599 cbradney 284
                        //CB: #8099: Readd snapping for drag creation of lines by commenting this else..
285
                        //else
286
                        //{
12703 jghali 287
                                FPoint np2 = m_doc->ApplyGridF(FPoint(newX, newY));
288
                                double nx = np2.x();
289
                                double ny = np2.y();
290
                                m_doc->ApplyGuides(&nx, &ny);
14922 jghali 291
                                // #8959 : suppress qRound here as this prevent drawing line with angle constrain
292
                                // precisely and does not allow to stick precisely to grid or guides
293
                                newX = /*qRound(*/nx/*)*/;
294
                                newY = /*qRound(*/ny/*)*/;
13599 cbradney 295
                        //}
296
 
12610 jghali 297
                        canvasCurrCoord.setXY(newX, newY);
298
                        m_view->HaveSelRect = true;
299
 
12650 fschmid 300
                        double wSize = canvasCurrCoord.x() - createObjectPos.x();
301
                        double hSize = canvasCurrCoord.y() - createObjectPos.y();
302
                        QRectF createObjectRect(createObjectPos.x(), createObjectPos.y(), wSize, hSize);
303
                        createObjectRect = createObjectRect.normalized();
304
                        if (createObjectMode != modeDrawLine)
305
                                m_canvas->displaySizeHUD(m->globalPos(), createObjectRect.width(), createObjectRect.height(), false);
306
                        else
307
                        {
12663 fschmid 308
                                double angle = -xy2Deg(wSize, hSize);
309
                                if (angle < 0.0)
310
                                        angle = angle + 360;
12650 fschmid 311
                                double trueLength = sqrt(pow(createObjectRect.width(), 2) + pow(createObjectRect.height(), 2));
12656 fschmid 312
                                m_canvas->displaySizeHUD(m->globalPos(), trueLength, angle, true);
12650 fschmid 313
                        }
314
 
12610 jghali 315
                        // Necessary for drawControls to be called
316
                        m_canvas->repaint();
317
                }
12656 fschmid 318
                else
319
                        m_canvas->displayCorrectedXYHUD(m->globalPos(), mousePointDoc.x(), mousePointDoc.y());
12610 jghali 320
        }
321
}
322
 
323
void CreateMode::mousePressEvent(QMouseEvent *m)
324
{
325
        const FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
12705 jghali 326
        modifiers = m->modifiers();
12610 jghali 327
 
328
        double Rxp = 0, Ryp = 0;
329
        m_MouseButtonPressed = true;
330
        m_view->HaveSelRect = false;
331
        m_doc->DragP = false;
332
        m_doc->leaveDrag = false;
333
        inItemCreation = false;
334
//      oldClip = 0;
335
        m->accept();
336
        m_view->registerMousePress(m->globalPos());
14932 cbradney 337
        QRect mpo(m->x()-m_doc->guidesPrefs().grabRadius, m->y()-m_doc->guidesPrefs().grabRadius, m_doc->guidesPrefs().grabRadius*2, m_doc->guidesPrefs().grabRadius*2);
12610 jghali 338
//      mpo.moveBy(qRound(m_doc->minCanvasCoordinate.x() * m_canvas->scale()), qRound(m_doc->minCanvasCoordinate.y() * m_canvas->scale()));
339
        canvasPressCoord = mousePointDoc;
340
        createObjectMode = m_doc->appMode;
341
        createObjectSubMode = m_doc->SubMode;
342
        createObjectPos  = m_doc->ApplyGridF(canvasPressCoord);
343
 
344
        Rxp  = m_doc->ApplyGridF(canvasPressCoord).x();
345
        canvasPressCoord.setX(qRound(Rxp));
346
        Ryp  = m_doc->ApplyGridF(canvasPressCoord).y();
14141 jghali 347
        canvasPressCoord.setXY(qRound(Rxp), qRound(Ryp));
12610 jghali 348
 
349
        canvasCurrCoord = canvasPressCoord;
14141 jghali 350
        m_doc->ApplyGuides(&Rxp, &Ryp);
12610 jghali 351
        createObjectPos.setXY(Rxp, Ryp);
14141 jghali 352
 
12610 jghali 353
        if (m->button() == Qt::MidButton)
354
        {
355
                m_view->MidButt = true;
13124 fschmid 356
                if (m->modifiers() & Qt::ControlModifier)
357
                        m_view->DrawNew();
12610 jghali 358
                return;
359
        }
360
 
361
        if (m->button() == Qt::RightButton)
362
        {
363
                m_view->requestMode(modeNormal);
364
                return;
365
        }
366
        if (m->button() != Qt::LeftButton)
367
                return;
368
        selectPage(m);
369
 
370
        switch (m_doc->appMode)
371
        {
372
        case modeDrawTable:
373
                m_view->Deselect(false);
374
                break;
375
        }
376
 
377
        inItemCreation = true;
378
}
379
 
380
 
381
 
382
void CreateMode::mouseReleaseEvent(QMouseEvent *m)
383
{
384
        const FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
12705 jghali 385
        modifiers = m->modifiers();
12610 jghali 386
 
387
        PageItem *currItem;
388
        m_MouseButtonPressed = false;
389
        m_canvas->resetRenderMode();
390
        m->accept();
13285 fschmid 391
//      m_view->stopDragTimer();
12610 jghali 392
 
393
        m_createTransaction = new UndoTransaction(Um::instance()->beginTransaction("creating"));
394
        currItem = doCreateNewObject();
16814 jghali 395
        if (m_createTransaction && currItem && currItem->isGroup())
12610 jghali 396
        {
16814 jghali 397
                // We created a table, just commit transaction
12610 jghali 398
                m_view->resetMousePressed();
16814 jghali 399
                m_createTransaction->commit();
400
                m_doc->changed();
401
                delete m_createTransaction;
402
                m_createTransaction = NULL;    
403
        }
404
        else if (m_createTransaction && currItem)
405
        {
406
                m_view->resetMousePressed();
12610 jghali 407
                currItem->checkChanges(true);
408
                QString targetName = Um::ScratchSpace;
409
                if (currItem->OwnPage > -1)
410
                        targetName = m_doc->Pages->at(currItem->OwnPage)->getUName();
411
                m_createTransaction->commit(targetName, currItem->getUPixmap(),
412
                                                                        Um::Create + " " + currItem->getUName(),  "", Um::ICreate);
413
                m_doc->changed();
414
                delete m_createTransaction;
415
                m_createTransaction = NULL;    
12633 jghali 416
                /*currItem->update();
12610 jghali 417
                currItem->emitAllToGUI();*/
418
        }
419
        else if (m_createTransaction)
420
        {
421
                m_createTransaction->cancel();
422
                delete m_createTransaction;
423
                m_createTransaction = NULL;
424
        }
13955 cbradney 425
        if (!PrefsManager::instance()->appPrefs.uiPrefs.stickyTools)
12610 jghali 426
        {
427
                m_view->requestMode(modeNormal);
428
        }
429
        else
430
        {
431
                m_view->updateCanvas();
432
                int appMode = m_doc->appMode;
433
                m_view->requestMode(appMode);
434
        }
435
        inItemCreation = false;
436
}
437
 
438
 
439
 
440
void CreateMode::selectPage(QMouseEvent *m)
441
{
442
        m_MouseButtonPressed = true;
443
        FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
444
        canvasPressCoord     = mousePointDoc;
14932 cbradney 445
        QRect mpo(m->x()-m_doc->guidesPrefs().grabRadius, m->y()-m_doc->guidesPrefs().grabRadius, m_doc->guidesPrefs().grabRadius*2, m_doc->guidesPrefs().grabRadius*2);
12610 jghali 446
//      mpo.moveBy(qRound(Doc->minCanvasCoordinate.x() * m_canvas->scale()), qRound(m_doc->minCanvasCoordinate.y() * m_canvas->scale()));
447
        m_doc->nodeEdit.deselect();
448
        m_view->Deselect(false);
449
        if (!m_doc->masterPageMode())
450
        {
451
                int i = m_doc->OnPage(canvasPressCoord.x(), canvasPressCoord.y());
452
                if (i!=-1)
453
                {
454
                        uint docCurrPageNo=m_doc->currentPageNumber();
455
                        uint j=static_cast<uint>(i);
456
                        if (docCurrPageNo != j)
457
                        {
458
                                m_doc->setCurrentPage(m_doc->Pages->at(j));
459
                                m_view->setMenTxt(j);
460
                                m_view->DrawNew();
461
                        }
462
                }
463
/*              uint docPagesCount=m_doc->Pages->count();
464
                uint docCurrPageNo=m_doc->currentPageNumber();
465
                for (uint i = 0; i < docPagesCount; ++i)
466
                {
467
                        int x = static_cast<int>(m_doc->Pages->at(i)->xOffset() * m_canvas->scale());
468
                        int y = static_cast<int>(m_doc->Pages->at(i)->yOffset() * m_canvas->scale());
469
                        int w = static_cast<int>(m_doc->Pages->at(i)->width() * m_canvas->scale());
470
                        int h = static_cast<int>(m_doc->Pages->at(i)->height() * m_canvas->scale());
471
                        if (QRect(x, y, w, h).intersects(mpo))
472
                        {
473
                                if (docCurrPageNo != i)
474
                                {
475
                                        m_doc->setCurrentPage(m_doc->Pages->at(i));
476
                                        setMenTxt(i);
477
                                        DrawNew();
478
                                }
479
                                break;
480
                        }
481
                } */
482
 
483
                //FIXME m_view->setRulerPos(m_view->contentsX(), m_view->contentsY());
484
        }
485
}
486
 
487
void CreateMode::SetupDrawNoResize(int nr)
488
{
489
        PageItem* currItem = m_doc->Items->at(nr);
13996 cbradney 490
        //      currItem->setFont(Doc->toolSettings.textFont);
491
        //      currItem->setFontSize(Doc->toolSettings.textSize);
12610 jghali 492
        m_doc->m_Selection->delaySignalsOn();
493
        m_doc->m_Selection->clear();
494
        m_doc->m_Selection->addItem(currItem);
495
        m_doc->m_Selection->delaySignalsOff();
496
//      emit DocChanged();
497
        currItem->Sizing =  false /*currItem->asLine() ? false : true*/;
498
        //#6456 m_view->resetMoveTimer();
499
}
500
 
501
void CreateMode::getFrameItemTypes(int& itemType, int& frameType)
502
{
503
        itemType  = (int) PageItem::Polygon;
504
        frameType = (int) PageItem::Rectangle;
505
        switch (createObjectMode)
506
        {
507
        case modeDrawShapes:
508
                switch (createObjectSubMode)
509
                {
510
                case 0:
511
                        itemType  = (int) PageItem::Polygon;
512
                        frameType = (int) PageItem::Rectangle;
513
                        break;
514
                case 1:
515
                        itemType  = (int) PageItem::Polygon;
516
                        frameType = (int) PageItem::Ellipse;
517
                        break;
518
                default:
519
                        itemType  = (int) PageItem::Polygon;
520
                        frameType = (int) PageItem::Unspecified;
521
                        break;
522
                }
523
                break;
524
        case modeDrawLine:
525
                itemType  = (int) PageItem::Line;
526
                frameType = (int) PageItem::Unspecified;
527
                break;
528
        case modeDrawLatex:
529
                itemType  = (int) PageItem::LatexFrame;
530
                frameType = (int) PageItem::Unspecified;
531
                break;
532
        case modeDrawImage:
533
                itemType  = (int) PageItem::ImageFrame;
534
                frameType = (int) PageItem::Unspecified;
535
                break;
536
        case modeDrawText:
537
                itemType  = (int) PageItem::TextFrame;
538
                frameType = (int) PageItem::Unspecified;
539
                break;
540
        case modeDrawRegularPolygon:
16191 fschmid 541
                itemType  = (int) PageItem::RegularPolygon;
12610 jghali 542
                frameType = (int) PageItem::Unspecified;
543
                break;
16215 fschmid 544
        case modeDrawArc:
545
                itemType  = (int) PageItem::Arc;
546
                frameType = (int) PageItem::Unspecified;
547
                break;
16311 fschmid 548
        case modeDrawSpiral:
549
                itemType  = (int) PageItem::Spiral;
550
                frameType = (int) PageItem::Unspecified;
551
                break;
12610 jghali 552
        case modeInsertPDFButton:
553
        case modeInsertPDFTextfield:
554
        case modeInsertPDFCheckbox:
555
        case modeInsertPDFCombobox:
556
        case modeInsertPDFListbox:
557
        case modeInsertPDFTextAnnotation:
558
        case modeInsertPDFLinkAnnotation:
559
                itemType  = (int) PageItem::TextFrame;
560
                frameType = (int) PageItem::Unspecified;
561
                break;
562
        case modeDrawTable:
563
                itemType  = (int) PageItem::TextFrame;
564
                frameType = (int) PageItem::Unspecified;
565
                break;
13839 fschmid 566
#ifdef HAVE_OSG
567
        case modeInsertPDF3DAnnotation:
568
                itemType  = (int) PageItem::OSGFrame;
569
                frameType = (int) PageItem::Unspecified;
570
                break;
571
#endif
12610 jghali 572
        }
573
}
574
 
575
PageItem* CreateMode::doCreateNewObject(void)
576
{
577
        int z = -1;
578
        double rot, len;
579
 
580
        double wSize = canvasCurrCoord.x() - createObjectPos.x();
581
        double hSize = canvasCurrCoord.y() - createObjectPos.y();
12708 jghali 582
        bool   skipOneClick = (modifiers == Qt::ShiftModifier);
12706 jghali 583
        if ((createObjectMode == modeDrawLine) || (createObjectMode == modeDrawTable) ||
584
                (createObjectMode == modeInsertPDFButton) || (createObjectMode == modeInsertPDFTextfield) ||
585
                (createObjectMode == modeInsertPDFTextfield) || (createObjectMode == modeInsertPDFCheckbox) ||
586
                (createObjectMode == modeInsertPDFCombobox) || (createObjectMode == modeInsertPDFListbox) ||
13839 fschmid 587
                (createObjectMode == modeInsertPDFTextAnnotation) || (createObjectMode == modeInsertPDFLinkAnnotation) ||
588
                (createObjectMode == modeInsertPDF3DAnnotation))
12610 jghali 589
        {
12707 jghali 590
                skipOneClick = false;
12706 jghali 591
        }
592
        if (!skipOneClick)
593
        {
12705 jghali 594
                if ((!m_view->moveTimerElapsed()) || ((fabs(wSize) < 2.0) && (fabs(hSize) < 2.0)))
12610 jghali 595
                {
12705 jghali 596
                        if (!doOneClick(createObjectPos, canvasCurrCoord))
597
                        {
598
                                return NULL;
599
                        }
12610 jghali 600
                }
601
        }
602
 
603
        wSize = canvasCurrCoord.x() - createObjectPos.x();
604
        hSize = canvasCurrCoord.y() - createObjectPos.y();
605
        PageItem *newObject = NULL, *currItem = NULL;
606
        // FIXME for modeDrawLine
607
        QRectF createObjectRect(createObjectPos.x(), createObjectPos.y(), wSize, hSize);
608
        if (createObjectMode != modeDrawLine)
609
                createObjectRect = createObjectRect.normalized();
610
        double Rxp  = createObjectRect.x();
611
        double Ryp  = createObjectRect.y();
612
        double Rxpd = createObjectRect.width();
613
        double Rypd = createObjectRect.height();
614
 
615
        switch (createObjectMode)
616
        {
617
        case modeDrawShapes:
618
                switch (createObjectSubMode)
619
                {
16277 fschmid 620
                        case 0:
621
                                if (modifiers == Qt::ShiftModifier)
622
                                        z = m_doc->itemAddArea(PageItem::Polygon, PageItem::Rectangle, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
623
                                else
624
                                        z = m_doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
12610 jghali 625
                                m_doc->Items->at(z)->FrameType = 0;
16277 fschmid 626
                                break;
627
                        case 1:
628
                                if (modifiers == Qt::ShiftModifier)
629
                                        z = m_doc->itemAddArea(PageItem::Polygon, PageItem::Ellipse, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
630
                                else
631
                                        z = m_doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
12610 jghali 632
                                m_doc->Items->at(z)->FrameType = 1;
16277 fschmid 633
                                break;
634
                        default:
635
                                if (modifiers == Qt::ShiftModifier)
636
                                        z = m_doc->itemAddArea(PageItem::Polygon, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
637
                                else
638
                                        z = m_doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
12610 jghali 639
                                m_doc->Items->at(z)->SetFrameShape(m_doc->ValCount, m_doc->ShapeValues);
12891 fschmid 640
                                m_doc->AdjustItemSize(m_doc->Items->at(z));
12610 jghali 641
                                m_doc->setRedrawBounding(m_doc->Items->at(z));
642
                                m_doc->Items->at(z)->FrameType = createObjectSubMode + 2;
16277 fschmid 643
                                break;
12610 jghali 644
                }
645
                break;
646
        case modeDrawLine:
647
                Rxp = createObjectPos.x();
648
                Ryp = createObjectPos.y();
649
                m_doc->ApplyGuides(&Rxp, &Ryp);
12633 jghali 650
                rot = xy2Deg(Rxpd, Rypd);
12610 jghali 651
                if (rot < 0.0)
652
                        rot += 360;
653
                len = qMax(0.01, distance(Rxpd, Rypd));
14932 cbradney 654
                z = m_doc->itemAdd(PageItem::Line, PageItem::Unspecified, Rxp, Ryp, len, 1, m_doc->itemToolPrefs().lineWidth, CommonStrings::None, m_doc->itemToolPrefs().lineColor, true);
12610 jghali 655
                m_doc->Items->at(z)->setRotation(rot);
13374 jghali 656
                m_doc->Items->at(z)->setRedrawBounding();
12610 jghali 657
                break;
658
        case modeDrawLatex:
659
                if (modifiers == Qt::ShiftModifier)
14932 cbradney 660
                        z = m_doc->itemAddArea(PageItem::LatexFrame, PageItem::Unspecified, Rxp, Ryp, 1, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
12610 jghali 661
                else
14932 cbradney 662
                        z = m_doc->itemAdd(PageItem::LatexFrame, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
12610 jghali 663
                break;
664
        case modeDrawImage:
665
                if (modifiers == Qt::ShiftModifier)
14932 cbradney 666
                        z = m_doc->itemAddArea(PageItem::ImageFrame, PageItem::Unspecified, Rxp, Ryp, 1, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
12610 jghali 667
                else
14932 cbradney 668
                        z = m_doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
12610 jghali 669
                break;
670
        case modeDrawText:
671
                if (modifiers == Qt::ShiftModifier)
14932 cbradney 672
                        z = m_doc->itemAddArea(PageItem::TextFrame, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().textFont, true);
12610 jghali 673
                else
14932 cbradney 674
                        z = m_doc->itemAdd(PageItem::TextFrame, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().textFont, true);
12610 jghali 675
                break;
676
        case modeDrawRegularPolygon:
16215 fschmid 677
                if (modifiers == Qt::ShiftModifier)
678
                        z = m_doc->itemAddArea(PageItem::RegularPolygon, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().lineColor, true);
679
                else
680
                        z = m_doc->itemAdd(PageItem::RegularPolygon, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().lineColor, true);
681
                break;
682
        case modeDrawArc:
683
                if (modifiers == Qt::ShiftModifier)
684
                        z = m_doc->itemAddArea(PageItem::Arc, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().lineColor, true);
685
                else
686
                        z = m_doc->itemAdd(PageItem::Arc, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().lineColor, true);
16277 fschmid 687
                m_doc->AdjustItemSize(m_doc->Items->at(z));
688
                m_doc->setRedrawBounding(m_doc->Items->at(z));
16215 fschmid 689
                break;
16311 fschmid 690
        case modeDrawSpiral:
691
                if (modifiers == Qt::ShiftModifier)
692
                        z = m_doc->itemAddArea(PageItem::Spiral, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().lineColor, true);
693
                else
694
                        z = m_doc->itemAdd(PageItem::Spiral, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().lineColor, true);
695
                m_doc->AdjustItemSize(m_doc->Items->at(z));
696
                m_doc->setRedrawBounding(m_doc->Items->at(z));
697
                break;
12610 jghali 698
        case modeInsertPDFButton:
699
        case modeInsertPDFTextfield:
700
        case modeInsertPDFCheckbox:
701
        case modeInsertPDFCombobox:
702
        case modeInsertPDFListbox:
703
        case modeInsertPDFTextAnnotation:
704
        case modeInsertPDFLinkAnnotation:
14932 cbradney 705
                z = m_doc->itemAdd(PageItem::TextFrame, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().textColor, true);
12610 jghali 706
                currItem = m_doc->Items->at(z);
707
                currItem->setIsAnnotation(true);
708
                currItem->AutoName = false;
709
                switch (m_doc->appMode)
710
                {
711
                case modeInsertPDFButton:
712
                        currItem->annotation().setType(2);
713
                        currItem->annotation().setFlag(65536);
714
                        break;
715
                case modeInsertPDFTextfield:
716
                        currItem->annotation().setType(3);
717
                        break;
718
                case modeInsertPDFCheckbox:
719
                        currItem->annotation().setType(4);
720
                        break;
721
                case modeInsertPDFCombobox:
722
                        currItem->annotation().setType(5);
723
                        currItem->annotation().setFlag(131072);
724
                        break;
725
                case modeInsertPDFListbox:
726
                        currItem->annotation().setType(6);
727
                        break;
728
                case modeInsertPDFTextAnnotation:
729
                        currItem->annotation().setType(10);
730
                        break;
731
                case modeInsertPDFLinkAnnotation:
732
                        currItem->annotation().setType(11);
733
                        currItem->annotation().setZiel(m_doc->currentPage()->pageNr());
734
                        currItem->annotation().setAction("0 0");
735
                        currItem->setTextFlowMode(PageItem::TextFlowDisabled);
736
                        break;
737
                }
738
                break;
739
        case modeDrawTable:
740
                /*m_view->Deselect(false);
741
                Rxp = mousePointDoc.x();
742
                Ryp = mousePointDoc.y();
743
                npf = m_doc->ApplyGridF(FPoint(Rxp, Ryp));
744
                Rxp = npf.x();
745
                Ryp = npf.y();
746
                m_doc->ApplyGuides(&Rxp, &Ryp);
747
                canvasPressCoord.setXY(qRound(Rxp), qRound(Ryp));
748
                canvasCurrCoord = canvasPressCoord;
749
                mouseGlobalCoord.setXY(m->globalPos().x(), m->globalPos().y());
750
                m_view->redrawMarker->setGeometry(m->globalPos().x(), m->globalPos().y(), 1, 1);
751
                m_view->redrawMarker->show();*/
752
 
753
                if ((m_doc->m_Selection->count() == 0) && (m_view->HaveSelRect) && (!m_view->MidButt))
754
                {
755
                        UndoTransaction * activeTransaction = NULL;
756
                        m_view->HaveSelRect = false;
757
                        double Tx, Ty, Tw, Th;
758
                        FPoint np2 = m_doc->ApplyGridF(canvasPressCoord);
759
                        Tx = np2.x();
760
                        Ty = np2.y();
761
                        m_doc->ApplyGuides(&Tx, &Ty);
762
                        canvasPressCoord.setXY(qRound(Tx), qRound(Ty));
763
                        np2 = m_doc->ApplyGridF(canvasCurrCoord);
764
                        Tw = np2.x();
765
                        Th = np2.y();
766
                        m_doc->ApplyGuides(&Tw, &Th);
767
                        canvasCurrCoord.setXY(qRound(Tw), qRound(Th));
768
                        Tw = Tw - Tx;
769
                        Th = Th - Ty;
770
                        int Cols, Rows;
771
                        double deltaX, deltaY, offX, offY;
772
                        if ((Th < 6) || (Tw < 6))
773
                        {
774
                                m_view->requestMode(submodePaintingDone);
775
                                break;
776
                        }
777
                        qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
778
                        InsertTable *dia = new InsertTable(m_view, static_cast<int>(Th / 6), static_cast<int>(Tw / 6));
779
                        if (!dia->exec())
780
                        {
781
                                m_view->requestMode(submodePaintingDone);
782
                                delete dia;
783
                                dia = NULL;
784
                                break;
785
                        }
786
                        Cols = dia->Cols->value();
787
                        Rows = dia->Rows->value();
788
                        delete dia;
789
                        dia=NULL;
790
                        deltaX = Tw / Cols;
791
                        deltaY = Th / Rows;
792
                        offX = 0.0;
793
                        offY = 0.0;
794
                        m_doc->m_Selection->clear();
795
                        if (UndoManager::undoEnabled())
16814 jghali 796
                                activeTransaction = new UndoTransaction(Um::instance()->beginTransaction(m_doc->currentPage()->getUName(),
797
                                                                                                                                                                                 Um::ITable, Um::CreateTable,
798
                                                                                                                                                                                 QString(Um::RowsCols).arg(Rows).arg(Cols),
799
                                                                                                                                                                                 Um::ICreate));
12610 jghali 800
                        m_doc->m_Selection->delaySignalsOn();
801
                        for (int rc = 0; rc < Rows; ++rc)
802
                        {
803
                                for (int cc = 0; cc < Cols; ++cc)
804
                                {
14932 cbradney 805
                                        z = m_doc->itemAdd(PageItem::TextFrame, PageItem::Unspecified, Tx + offX, Ty + offY, deltaX, deltaY, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().textColor, true);
12610 jghali 806
                                        currItem = m_doc->Items->at(z);
807
                                        currItem->isTableItem = true;
808
                                        currItem->setTextFlowMode(PageItem::TextFlowUsesBoundingBox);
809
                                        m_doc->m_Selection->addItem(currItem);
810
                                        offX += deltaX;
811
                                }
812
                                offY += deltaY;
813
                                offX = 0.0;
814
                        }
815
                        for (int rc = 0; rc < Rows; ++rc)
816
                        {
817
                                for (int cc = 0; cc < Cols; ++cc)
818
                                {
819
                                        currItem = m_doc->m_Selection->itemAt((rc * Cols) + cc);
820
                                        if (rc == 0)
821
                                                currItem->TopLink = 0;
822
                                        else
823
                                                currItem->TopLink = m_doc->m_Selection->itemAt(((rc-1)*Cols)+cc);
824
                                        if (rc == Rows-1)
825
                                                currItem->BottomLink = 0;
826
                                        else
827
                                                currItem->BottomLink = m_doc->m_Selection->itemAt(((rc+1)*Cols)+cc);
828
                                        if (cc == 0)
829
                                                currItem->LeftLink = 0;
830
                                        else
831
                                                currItem->LeftLink = m_doc->m_Selection->itemAt((rc*Cols)+cc-1);
832
                                        if (cc == Cols-1)
833
                                                currItem->RightLink = 0;
834
                                        else
835
                                                currItem->RightLink = m_doc->m_Selection->itemAt((rc*Cols)+cc+1);
836
                                }
837
                        }
838
                        m_doc->itemSelection_GroupObjects(false, false);
16814 jghali 839
                        z = m_doc->Items->count() - 1;
12610 jghali 840
                        if (activeTransaction)
841
                        {
842
                                activeTransaction->commit();
843
                                delete activeTransaction;
844
                                activeTransaction = NULL;
845
                        }
846
                        m_doc->m_Selection->delaySignalsOff();
847
                }
848
                break;
13839 fschmid 849
        case modeInsertPDF3DAnnotation:
850
                if (modifiers == Qt::ShiftModifier)
851
                {
14932 cbradney 852
                        z = m_doc->itemAddArea(PageItem::OSGFrame, PageItem::Unspecified, Rxp, Ryp, 1, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
13839 fschmid 853
                }
854
                else
855
                {
14932 cbradney 856
                        z = m_doc->itemAdd(PageItem::OSGFrame, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
13839 fschmid 857
                }
858
                currItem = m_doc->Items->at(z);
859
                currItem->setIsAnnotation(true);
860
                currItem->AutoName = false;
861
                currItem->annotation().setType(12);
862
                break;
12610 jghali 863
        }
864
        if (z >= 0)
865
        {
866
                SetupDrawNoResize(z);
867
                newObject = m_doc->Items->at(z);
12680 fschmid 868
                newObject->ContourLine = newObject->PoLine.copy();
12610 jghali 869
        }
870
        return newObject;
871
}
872
 
873
bool CreateMode::doOneClick(FPoint& startPoint, FPoint& endPoint)
874
{
875
        bool doCreate = false;
876
        double xSize, ySize;
877
        int  originPoint = 0;
878
 
879
        if (QApplication::keyboardModifiers() & Qt::ControlModifier)
880
                return true;
881
 
882
        PrefsContext* sizes = PrefsManager::instance()->prefsFile->getContext("ObjectSize");
883
        bool doRemember     = sizes->getBool("Remember", true);
884
 
885
        int lmode = (createObjectMode == modeDrawLine) ? 1 : 0;
886
        if (lmode == 0)
887
        {
888
                xSize = sizes->getDouble("defWidth", 100.0);
889
                ySize = sizes->getDouble("defHeight", 100.0);
890
                originPoint = sizes->getInt("Origin", 0);
891
        }
892
        else
893
        {
894
                xSize = sizes->getDouble("defLength", 100.0);
895
                ySize = sizes->getDouble("defAngle", 0.0);
896
                originPoint = sizes->getInt("OriginL", 0);
897
        }
898
 
899
        qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
900
        OneClick *dia = new OneClick(m_view, ScribusView::tr("Enter Object Size"), m_doc->unitIndex(), xSize, ySize, doRemember, originPoint, lmode);
901
        if (dia->exec())
902
        {
903
                doRemember = dia->checkRemember->isChecked();
904
                if (lmode == 0)
905
                {
906
                        xSize = dia->spinWidth->value() / unitGetRatioFromIndex(m_doc->unitIndex());
907
                        ySize = dia->spinHeight->value() / unitGetRatioFromIndex(m_doc->unitIndex());
908
                        originPoint = dia->RotationGroup->checkedId();
909
                        if (doRemember)
910
                        {
911
                                sizes->set("defWidth", xSize);
912
                                sizes->set("defHeight", ySize);
913
                                sizes->set("Origin", originPoint);
914
                        }
915
                        endPoint.setXY(startPoint.x() + xSize, startPoint.y() + ySize);
916
                        switch (originPoint)
917
                        {
918
                                case 0:
919
                                        break;
920
                                case 1:
921
                                        startPoint.setX(startPoint.x() - xSize);
922
                                        endPoint.setX(endPoint.x() - xSize);
923
                                        break;
924
                                case 2:
925
                                        startPoint.setXY(startPoint.x() - xSize / 2.0, startPoint.y() - ySize / 2.0);
926
                                        endPoint.setXY(endPoint.x() - xSize / 2.0, endPoint.y() - ySize / 2.0);
927
                                        break;
928
                                case 3:
929
                                        startPoint.setY(startPoint.y() - ySize);
930
                                        endPoint.setY(endPoint.y() - ySize);
931
                                        break;
932
                                case 4:
933
                                        startPoint.setXY(startPoint.x() - xSize, startPoint.y() - ySize);
934
                                        endPoint.setXY(endPoint.x() - xSize, endPoint.y() - ySize);
935
                                        break;
936
                        }
937
                }
938
                else
939
                {
940
                        FPoint oldStart = startPoint;
941
                        xSize = dia->spinWidth->value() / unitGetRatioFromIndex(m_doc->unitIndex());
942
                        ySize = dia->spinHeight->value();
943
                        originPoint = dia->RotationGroup->checkedId();
944
                        if (doRemember)
945
                        {
946
                                sizes->set("defLength", xSize);
947
                                sizes->set("defAngle", ySize);
948
                                sizes->set("OriginL", originPoint);
949
                        }
950
                        double angle = -ySize * M_PI / 180.0;
951
                        switch (originPoint)
952
                        {
953
                                case 0:
954
                                        endPoint = FPoint(startPoint.x() + xSize * cos(angle), startPoint.y() + xSize * sin(angle));
955
                                        break;
956
                                case 1:
957
                                        startPoint = FPoint(oldStart.x() - xSize * cos(angle), oldStart.y() - xSize * sin(angle));
958
                                        endPoint   = oldStart;
959
                                        break;
960
                                case 2:
961
                                        startPoint = FPoint(oldStart.x() - xSize / 2.0 * cos(angle), oldStart.y() - xSize / 2.0 * sin(angle));
962
                                        endPoint   = FPoint(oldStart.x() + xSize / 2.0 * cos(angle), oldStart.y() + xSize / 2.0 * sin(angle));
963
                                        break;
964
                        }
965
                }
966
                sizes->set("Remember", doRemember);
967
                doCreate = true;
968
        }
969
        delete dia;
970
        return doCreate;
971
}
972
 
12799 pierre 973
// void CreateMode::setResizeCursor(int how)
974
// {
975
//      switch (how)
976
//      {
977
//              case 1:
978
//              case 2:
979
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeFDiagCursor));
980
//                      break;
981
//              case 3:
982
//              case 4:
983
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeBDiagCursor));
984
//                      break;
985
//              case 5:
986
//              case 8:
987
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeVerCursor));
988
//                      break;
989
//              case 6:
990
//              case 7:
991
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeHorCursor));
992
//                      break;
993
//              default:
994
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeAllCursor));
995
//                      break;
996
//      }
997
// }
12610 jghali 998