Subversion Repositories Scribus

Rev

Rev 16311 | Rev 16814 | 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();
395
        if (m_createTransaction && currItem)
396
        {
397
                m_view->resetMousePressed();
398
                currItem->checkChanges(true);
399
                QString targetName = Um::ScratchSpace;
400
                if (currItem->OwnPage > -1)
401
                        targetName = m_doc->Pages->at(currItem->OwnPage)->getUName();
402
                m_createTransaction->commit(targetName, currItem->getUPixmap(),
403
                                                                        Um::Create + " " + currItem->getUName(),  "", Um::ICreate);
404
                m_doc->changed();
405
                delete m_createTransaction;
406
                m_createTransaction = NULL;    
12633 jghali 407
                /*currItem->update();
12610 jghali 408
                currItem->emitAllToGUI();*/
409
        }
410
        else if (m_createTransaction)
411
        {
412
                m_createTransaction->cancel();
413
                delete m_createTransaction;
414
                m_createTransaction = NULL;
415
        }
13955 cbradney 416
        if (!PrefsManager::instance()->appPrefs.uiPrefs.stickyTools)
12610 jghali 417
        {
418
                m_view->requestMode(modeNormal);
419
        }
420
        else
421
        {
422
                m_view->updateCanvas();
423
                int appMode = m_doc->appMode;
424
                m_view->requestMode(appMode);
425
        }
426
        inItemCreation = false;
427
}
428
 
429
 
430
 
431
void CreateMode::selectPage(QMouseEvent *m)
432
{
433
        m_MouseButtonPressed = true;
434
        FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
435
        canvasPressCoord     = mousePointDoc;
14932 cbradney 436
        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 437
//      mpo.moveBy(qRound(Doc->minCanvasCoordinate.x() * m_canvas->scale()), qRound(m_doc->minCanvasCoordinate.y() * m_canvas->scale()));
438
        m_doc->nodeEdit.deselect();
439
        m_view->Deselect(false);
440
        if (!m_doc->masterPageMode())
441
        {
442
                int i = m_doc->OnPage(canvasPressCoord.x(), canvasPressCoord.y());
443
                if (i!=-1)
444
                {
445
                        uint docCurrPageNo=m_doc->currentPageNumber();
446
                        uint j=static_cast<uint>(i);
447
                        if (docCurrPageNo != j)
448
                        {
449
                                m_doc->setCurrentPage(m_doc->Pages->at(j));
450
                                m_view->setMenTxt(j);
451
                                m_view->DrawNew();
452
                        }
453
                }
454
/*              uint docPagesCount=m_doc->Pages->count();
455
                uint docCurrPageNo=m_doc->currentPageNumber();
456
                for (uint i = 0; i < docPagesCount; ++i)
457
                {
458
                        int x = static_cast<int>(m_doc->Pages->at(i)->xOffset() * m_canvas->scale());
459
                        int y = static_cast<int>(m_doc->Pages->at(i)->yOffset() * m_canvas->scale());
460
                        int w = static_cast<int>(m_doc->Pages->at(i)->width() * m_canvas->scale());
461
                        int h = static_cast<int>(m_doc->Pages->at(i)->height() * m_canvas->scale());
462
                        if (QRect(x, y, w, h).intersects(mpo))
463
                        {
464
                                if (docCurrPageNo != i)
465
                                {
466
                                        m_doc->setCurrentPage(m_doc->Pages->at(i));
467
                                        setMenTxt(i);
468
                                        DrawNew();
469
                                }
470
                                break;
471
                        }
472
                } */
473
 
474
                //FIXME m_view->setRulerPos(m_view->contentsX(), m_view->contentsY());
475
        }
476
}
477
 
478
void CreateMode::SetupDrawNoResize(int nr)
479
{
480
        PageItem* currItem = m_doc->Items->at(nr);
13996 cbradney 481
        //      currItem->setFont(Doc->toolSettings.textFont);
482
        //      currItem->setFontSize(Doc->toolSettings.textSize);
12610 jghali 483
        m_doc->m_Selection->delaySignalsOn();
484
        m_doc->m_Selection->clear();
485
        m_doc->m_Selection->addItem(currItem);
486
        m_doc->m_Selection->delaySignalsOff();
487
//      emit DocChanged();
488
        currItem->Sizing =  false /*currItem->asLine() ? false : true*/;
489
        //#6456 m_view->resetMoveTimer();
490
}
491
 
492
void CreateMode::getFrameItemTypes(int& itemType, int& frameType)
493
{
494
        itemType  = (int) PageItem::Polygon;
495
        frameType = (int) PageItem::Rectangle;
496
        switch (createObjectMode)
497
        {
498
        case modeDrawShapes:
499
                switch (createObjectSubMode)
500
                {
501
                case 0:
502
                        itemType  = (int) PageItem::Polygon;
503
                        frameType = (int) PageItem::Rectangle;
504
                        break;
505
                case 1:
506
                        itemType  = (int) PageItem::Polygon;
507
                        frameType = (int) PageItem::Ellipse;
508
                        break;
509
                default:
510
                        itemType  = (int) PageItem::Polygon;
511
                        frameType = (int) PageItem::Unspecified;
512
                        break;
513
                }
514
                break;
515
        case modeDrawLine:
516
                itemType  = (int) PageItem::Line;
517
                frameType = (int) PageItem::Unspecified;
518
                break;
519
        case modeDrawLatex:
520
                itemType  = (int) PageItem::LatexFrame;
521
                frameType = (int) PageItem::Unspecified;
522
                break;
523
        case modeDrawImage:
524
                itemType  = (int) PageItem::ImageFrame;
525
                frameType = (int) PageItem::Unspecified;
526
                break;
527
        case modeDrawText:
528
                itemType  = (int) PageItem::TextFrame;
529
                frameType = (int) PageItem::Unspecified;
530
                break;
531
        case modeDrawRegularPolygon:
16191 fschmid 532
                itemType  = (int) PageItem::RegularPolygon;
12610 jghali 533
                frameType = (int) PageItem::Unspecified;
534
                break;
16215 fschmid 535
        case modeDrawArc:
536
                itemType  = (int) PageItem::Arc;
537
                frameType = (int) PageItem::Unspecified;
538
                break;
16311 fschmid 539
        case modeDrawSpiral:
540
                itemType  = (int) PageItem::Spiral;
541
                frameType = (int) PageItem::Unspecified;
542
                break;
12610 jghali 543
        case modeInsertPDFButton:
544
        case modeInsertPDFTextfield:
545
        case modeInsertPDFCheckbox:
546
        case modeInsertPDFCombobox:
547
        case modeInsertPDFListbox:
548
        case modeInsertPDFTextAnnotation:
549
        case modeInsertPDFLinkAnnotation:
550
                itemType  = (int) PageItem::TextFrame;
551
                frameType = (int) PageItem::Unspecified;
552
                break;
553
        case modeDrawTable:
554
                itemType  = (int) PageItem::TextFrame;
555
                frameType = (int) PageItem::Unspecified;
556
                break;
13839 fschmid 557
#ifdef HAVE_OSG
558
        case modeInsertPDF3DAnnotation:
559
                itemType  = (int) PageItem::OSGFrame;
560
                frameType = (int) PageItem::Unspecified;
561
                break;
562
#endif
12610 jghali 563
        }
564
}
565
 
566
PageItem* CreateMode::doCreateNewObject(void)
567
{
568
        int z = -1;
569
        double rot, len;
570
 
571
        double wSize = canvasCurrCoord.x() - createObjectPos.x();
572
        double hSize = canvasCurrCoord.y() - createObjectPos.y();
12708 jghali 573
        bool   skipOneClick = (modifiers == Qt::ShiftModifier);
12706 jghali 574
        if ((createObjectMode == modeDrawLine) || (createObjectMode == modeDrawTable) ||
575
                (createObjectMode == modeInsertPDFButton) || (createObjectMode == modeInsertPDFTextfield) ||
576
                (createObjectMode == modeInsertPDFTextfield) || (createObjectMode == modeInsertPDFCheckbox) ||
577
                (createObjectMode == modeInsertPDFCombobox) || (createObjectMode == modeInsertPDFListbox) ||
13839 fschmid 578
                (createObjectMode == modeInsertPDFTextAnnotation) || (createObjectMode == modeInsertPDFLinkAnnotation) ||
579
                (createObjectMode == modeInsertPDF3DAnnotation))
12610 jghali 580
        {
12707 jghali 581
                skipOneClick = false;
12706 jghali 582
        }
583
        if (!skipOneClick)
584
        {
12705 jghali 585
                if ((!m_view->moveTimerElapsed()) || ((fabs(wSize) < 2.0) && (fabs(hSize) < 2.0)))
12610 jghali 586
                {
12705 jghali 587
                        if (!doOneClick(createObjectPos, canvasCurrCoord))
588
                        {
589
                                return NULL;
590
                        }
12610 jghali 591
                }
592
        }
593
 
594
        wSize = canvasCurrCoord.x() - createObjectPos.x();
595
        hSize = canvasCurrCoord.y() - createObjectPos.y();
596
        PageItem *newObject = NULL, *currItem = NULL;
597
        // FIXME for modeDrawLine
598
        QRectF createObjectRect(createObjectPos.x(), createObjectPos.y(), wSize, hSize);
599
        if (createObjectMode != modeDrawLine)
600
                createObjectRect = createObjectRect.normalized();
601
        double Rxp  = createObjectRect.x();
602
        double Ryp  = createObjectRect.y();
603
        double Rxpd = createObjectRect.width();
604
        double Rypd = createObjectRect.height();
605
 
606
        switch (createObjectMode)
607
        {
608
        case modeDrawShapes:
609
                switch (createObjectSubMode)
610
                {
16277 fschmid 611
                        case 0:
612
                                if (modifiers == Qt::ShiftModifier)
613
                                        z = m_doc->itemAddArea(PageItem::Polygon, PageItem::Rectangle, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
614
                                else
615
                                        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 616
                                m_doc->Items->at(z)->FrameType = 0;
16277 fschmid 617
                                break;
618
                        case 1:
619
                                if (modifiers == Qt::ShiftModifier)
620
                                        z = m_doc->itemAddArea(PageItem::Polygon, PageItem::Ellipse, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
621
                                else
622
                                        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 623
                                m_doc->Items->at(z)->FrameType = 1;
16277 fschmid 624
                                break;
625
                        default:
626
                                if (modifiers == Qt::ShiftModifier)
627
                                        z = m_doc->itemAddArea(PageItem::Polygon, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().shapeLineColor, true);
628
                                else
629
                                        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 630
                                m_doc->Items->at(z)->SetFrameShape(m_doc->ValCount, m_doc->ShapeValues);
12891 fschmid 631
                                m_doc->AdjustItemSize(m_doc->Items->at(z));
12610 jghali 632
                                m_doc->setRedrawBounding(m_doc->Items->at(z));
633
                                m_doc->Items->at(z)->FrameType = createObjectSubMode + 2;
16277 fschmid 634
                                break;
12610 jghali 635
                }
636
                break;
637
        case modeDrawLine:
638
                Rxp = createObjectPos.x();
639
                Ryp = createObjectPos.y();
640
                m_doc->ApplyGuides(&Rxp, &Ryp);
12633 jghali 641
                rot = xy2Deg(Rxpd, Rypd);
12610 jghali 642
                if (rot < 0.0)
643
                        rot += 360;
644
                len = qMax(0.01, distance(Rxpd, Rypd));
14932 cbradney 645
                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 646
                m_doc->Items->at(z)->setRotation(rot);
13374 jghali 647
                m_doc->Items->at(z)->setRedrawBounding();
12610 jghali 648
                break;
649
        case modeDrawLatex:
650
                if (modifiers == Qt::ShiftModifier)
14932 cbradney 651
                        z = m_doc->itemAddArea(PageItem::LatexFrame, PageItem::Unspecified, Rxp, Ryp, 1, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
12610 jghali 652
                else
14932 cbradney 653
                        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 654
                break;
655
        case modeDrawImage:
656
                if (modifiers == Qt::ShiftModifier)
14932 cbradney 657
                        z = m_doc->itemAddArea(PageItem::ImageFrame, PageItem::Unspecified, Rxp, Ryp, 1, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
12610 jghali 658
                else
14932 cbradney 659
                        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 660
                break;
661
        case modeDrawText:
662
                if (modifiers == Qt::ShiftModifier)
14932 cbradney 663
                        z = m_doc->itemAddArea(PageItem::TextFrame, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().textFont, true);
12610 jghali 664
                else
14932 cbradney 665
                        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 666
                break;
667
        case modeDrawRegularPolygon:
16215 fschmid 668
                if (modifiers == Qt::ShiftModifier)
669
                        z = m_doc->itemAddArea(PageItem::RegularPolygon, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().lineColor, true);
670
                else
671
                        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);
672
                break;
673
        case modeDrawArc:
674
                if (modifiers == Qt::ShiftModifier)
675
                        z = m_doc->itemAddArea(PageItem::Arc, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, m_doc->itemToolPrefs().shapeFillColor, m_doc->itemToolPrefs().lineColor, true);
676
                else
677
                        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 678
                m_doc->AdjustItemSize(m_doc->Items->at(z));
679
                m_doc->setRedrawBounding(m_doc->Items->at(z));
16215 fschmid 680
                break;
16311 fschmid 681
        case modeDrawSpiral:
682
                if (modifiers == Qt::ShiftModifier)
683
                        z = m_doc->itemAddArea(PageItem::Spiral, PageItem::Unspecified, Rxp, Ryp, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().lineColor, true);
684
                else
685
                        z = m_doc->itemAdd(PageItem::Spiral, PageItem::Unspecified, Rxp, Ryp, Rxpd, Rypd, m_doc->itemToolPrefs().shapeLineWidth, CommonStrings::None, m_doc->itemToolPrefs().lineColor, true);
686
                m_doc->AdjustItemSize(m_doc->Items->at(z));
687
                m_doc->setRedrawBounding(m_doc->Items->at(z));
688
                break;
12610 jghali 689
        case modeInsertPDFButton:
690
        case modeInsertPDFTextfield:
691
        case modeInsertPDFCheckbox:
692
        case modeInsertPDFCombobox:
693
        case modeInsertPDFListbox:
694
        case modeInsertPDFTextAnnotation:
695
        case modeInsertPDFLinkAnnotation:
14932 cbradney 696
                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 697
                currItem = m_doc->Items->at(z);
698
                currItem->setIsAnnotation(true);
699
                currItem->AutoName = false;
700
                switch (m_doc->appMode)
701
                {
702
                case modeInsertPDFButton:
703
                        currItem->annotation().setType(2);
704
                        currItem->annotation().setFlag(65536);
705
                        break;
706
                case modeInsertPDFTextfield:
707
                        currItem->annotation().setType(3);
708
                        break;
709
                case modeInsertPDFCheckbox:
710
                        currItem->annotation().setType(4);
711
                        break;
712
                case modeInsertPDFCombobox:
713
                        currItem->annotation().setType(5);
714
                        currItem->annotation().setFlag(131072);
715
                        break;
716
                case modeInsertPDFListbox:
717
                        currItem->annotation().setType(6);
718
                        break;
719
                case modeInsertPDFTextAnnotation:
720
                        currItem->annotation().setType(10);
721
                        break;
722
                case modeInsertPDFLinkAnnotation:
723
                        currItem->annotation().setType(11);
724
                        currItem->annotation().setZiel(m_doc->currentPage()->pageNr());
725
                        currItem->annotation().setAction("0 0");
726
                        currItem->setTextFlowMode(PageItem::TextFlowDisabled);
727
                        break;
728
                }
729
                break;
730
        case modeDrawTable:
731
                /*m_view->Deselect(false);
732
                Rxp = mousePointDoc.x();
733
                Ryp = mousePointDoc.y();
734
                npf = m_doc->ApplyGridF(FPoint(Rxp, Ryp));
735
                Rxp = npf.x();
736
                Ryp = npf.y();
737
                m_doc->ApplyGuides(&Rxp, &Ryp);
738
                canvasPressCoord.setXY(qRound(Rxp), qRound(Ryp));
739
                canvasCurrCoord = canvasPressCoord;
740
                mouseGlobalCoord.setXY(m->globalPos().x(), m->globalPos().y());
741
                m_view->redrawMarker->setGeometry(m->globalPos().x(), m->globalPos().y(), 1, 1);
742
                m_view->redrawMarker->show();*/
743
 
744
                if ((m_doc->m_Selection->count() == 0) && (m_view->HaveSelRect) && (!m_view->MidButt))
745
                {
746
                        UndoTransaction * activeTransaction = NULL;
747
                        m_view->HaveSelRect = false;
748
                        double Tx, Ty, Tw, Th;
749
                        FPoint np2 = m_doc->ApplyGridF(canvasPressCoord);
750
                        Tx = np2.x();
751
                        Ty = np2.y();
752
                        m_doc->ApplyGuides(&Tx, &Ty);
753
                        canvasPressCoord.setXY(qRound(Tx), qRound(Ty));
754
                        np2 = m_doc->ApplyGridF(canvasCurrCoord);
755
                        Tw = np2.x();
756
                        Th = np2.y();
757
                        m_doc->ApplyGuides(&Tw, &Th);
758
                        canvasCurrCoord.setXY(qRound(Tw), qRound(Th));
759
                        Tw = Tw - Tx;
760
                        Th = Th - Ty;
761
                        int z;
762
                        int Cols, Rows;
763
                        double deltaX, deltaY, offX, offY;
764
                        if ((Th < 6) || (Tw < 6))
765
                        {
766
                                m_view->requestMode(submodePaintingDone);
767
                                break;
768
                        }
769
                        qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
770
                        InsertTable *dia = new InsertTable(m_view, static_cast<int>(Th / 6), static_cast<int>(Tw / 6));
771
                        if (!dia->exec())
772
                        {
773
                                m_view->requestMode(submodePaintingDone);
774
                                delete dia;
775
                                dia = NULL;
776
                                break;
777
                        }
778
                        Cols = dia->Cols->value();
779
                        Rows = dia->Rows->value();
780
                        delete dia;
781
                        dia=NULL;
782
                        deltaX = Tw / Cols;
783
                        deltaY = Th / Rows;
784
                        offX = 0.0;
785
                        offY = 0.0;
786
                        m_doc->m_Selection->clear();
787
                        if (UndoManager::undoEnabled())
788
                                activeTransaction = new UndoTransaction(m_view->undoManager->beginTransaction(m_doc->currentPage()->getUName(),
789
                                                                                                                                                                                  Um::ITable, Um::CreateTable,
790
                                                                                                                                                                                  QString(Um::RowsCols).arg(Rows).arg(Cols),
791
                                                                                                                                                                                  Um::ICreate));
792
                        m_doc->m_Selection->delaySignalsOn();
793
                        for (int rc = 0; rc < Rows; ++rc)
794
                        {
795
                                for (int cc = 0; cc < Cols; ++cc)
796
                                {
14932 cbradney 797
                                        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 798
                                        currItem = m_doc->Items->at(z);
799
                                        currItem->isTableItem = true;
800
                                        currItem->setTextFlowMode(PageItem::TextFlowUsesBoundingBox);
801
                                        m_doc->m_Selection->addItem(currItem);
802
                                        offX += deltaX;
803
                                }
804
                                offY += deltaY;
805
                                offX = 0.0;
806
                        }
807
                        for (int rc = 0; rc < Rows; ++rc)
808
                        {
809
                                for (int cc = 0; cc < Cols; ++cc)
810
                                {
811
                                        currItem = m_doc->m_Selection->itemAt((rc * Cols) + cc);
812
                                        if (rc == 0)
813
                                                currItem->TopLink = 0;
814
                                        else
815
                                                currItem->TopLink = m_doc->m_Selection->itemAt(((rc-1)*Cols)+cc);
816
                                        if (rc == Rows-1)
817
                                                currItem->BottomLink = 0;
818
                                        else
819
                                                currItem->BottomLink = m_doc->m_Selection->itemAt(((rc+1)*Cols)+cc);
820
                                        if (cc == 0)
821
                                                currItem->LeftLink = 0;
822
                                        else
823
                                                currItem->LeftLink = m_doc->m_Selection->itemAt((rc*Cols)+cc-1);
824
                                        if (cc == Cols-1)
825
                                                currItem->RightLink = 0;
826
                                        else
827
                                                currItem->RightLink = m_doc->m_Selection->itemAt((rc*Cols)+cc+1);
828
                                }
829
                        }
830
                        m_doc->itemSelection_GroupObjects(false, false);
831
                        if (activeTransaction)
832
                        {
833
                                activeTransaction->commit();
834
                                delete activeTransaction;
835
                                activeTransaction = NULL;
836
                        }
837
                        m_doc->m_Selection->delaySignalsOff();
838
                }
839
                break;
13839 fschmid 840
        case modeInsertPDF3DAnnotation:
841
                if (modifiers == Qt::ShiftModifier)
842
                {
14932 cbradney 843
                        z = m_doc->itemAddArea(PageItem::OSGFrame, PageItem::Unspecified, Rxp, Ryp, 1, m_doc->itemToolPrefs().imageFillColor, CommonStrings::None, true);
13839 fschmid 844
                }
845
                else
846
                {
14932 cbradney 847
                        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 848
                }
849
                currItem = m_doc->Items->at(z);
850
                currItem->setIsAnnotation(true);
851
                currItem->AutoName = false;
852
                currItem->annotation().setType(12);
853
                break;
12610 jghali 854
        }
855
        if (z >= 0)
856
        {
857
                SetupDrawNoResize(z);
858
                newObject = m_doc->Items->at(z);
12680 fschmid 859
                newObject->ContourLine = newObject->PoLine.copy();
12610 jghali 860
        }
861
        return newObject;
862
}
863
 
864
bool CreateMode::doOneClick(FPoint& startPoint, FPoint& endPoint)
865
{
866
        bool doCreate = false;
867
        double xSize, ySize;
868
        int  originPoint = 0;
869
 
870
        if (QApplication::keyboardModifiers() & Qt::ControlModifier)
871
                return true;
872
 
873
        PrefsContext* sizes = PrefsManager::instance()->prefsFile->getContext("ObjectSize");
874
        bool doRemember     = sizes->getBool("Remember", true);
875
 
876
        int lmode = (createObjectMode == modeDrawLine) ? 1 : 0;
877
        if (lmode == 0)
878
        {
879
                xSize = sizes->getDouble("defWidth", 100.0);
880
                ySize = sizes->getDouble("defHeight", 100.0);
881
                originPoint = sizes->getInt("Origin", 0);
882
        }
883
        else
884
        {
885
                xSize = sizes->getDouble("defLength", 100.0);
886
                ySize = sizes->getDouble("defAngle", 0.0);
887
                originPoint = sizes->getInt("OriginL", 0);
888
        }
889
 
890
        qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
891
        OneClick *dia = new OneClick(m_view, ScribusView::tr("Enter Object Size"), m_doc->unitIndex(), xSize, ySize, doRemember, originPoint, lmode);
892
        if (dia->exec())
893
        {
894
                doRemember = dia->checkRemember->isChecked();
895
                if (lmode == 0)
896
                {
897
                        xSize = dia->spinWidth->value() / unitGetRatioFromIndex(m_doc->unitIndex());
898
                        ySize = dia->spinHeight->value() / unitGetRatioFromIndex(m_doc->unitIndex());
899
                        originPoint = dia->RotationGroup->checkedId();
900
                        if (doRemember)
901
                        {
902
                                sizes->set("defWidth", xSize);
903
                                sizes->set("defHeight", ySize);
904
                                sizes->set("Origin", originPoint);
905
                        }
906
                        endPoint.setXY(startPoint.x() + xSize, startPoint.y() + ySize);
907
                        switch (originPoint)
908
                        {
909
                                case 0:
910
                                        break;
911
                                case 1:
912
                                        startPoint.setX(startPoint.x() - xSize);
913
                                        endPoint.setX(endPoint.x() - xSize);
914
                                        break;
915
                                case 2:
916
                                        startPoint.setXY(startPoint.x() - xSize / 2.0, startPoint.y() - ySize / 2.0);
917
                                        endPoint.setXY(endPoint.x() - xSize / 2.0, endPoint.y() - ySize / 2.0);
918
                                        break;
919
                                case 3:
920
                                        startPoint.setY(startPoint.y() - ySize);
921
                                        endPoint.setY(endPoint.y() - ySize);
922
                                        break;
923
                                case 4:
924
                                        startPoint.setXY(startPoint.x() - xSize, startPoint.y() - ySize);
925
                                        endPoint.setXY(endPoint.x() - xSize, endPoint.y() - ySize);
926
                                        break;
927
                        }
928
                }
929
                else
930
                {
931
                        FPoint oldStart = startPoint;
932
                        xSize = dia->spinWidth->value() / unitGetRatioFromIndex(m_doc->unitIndex());
933
                        ySize = dia->spinHeight->value();
934
                        originPoint = dia->RotationGroup->checkedId();
935
                        if (doRemember)
936
                        {
937
                                sizes->set("defLength", xSize);
938
                                sizes->set("defAngle", ySize);
939
                                sizes->set("OriginL", originPoint);
940
                        }
941
                        double angle = -ySize * M_PI / 180.0;
942
                        switch (originPoint)
943
                        {
944
                                case 0:
945
                                        endPoint = FPoint(startPoint.x() + xSize * cos(angle), startPoint.y() + xSize * sin(angle));
946
                                        break;
947
                                case 1:
948
                                        startPoint = FPoint(oldStart.x() - xSize * cos(angle), oldStart.y() - xSize * sin(angle));
949
                                        endPoint   = oldStart;
950
                                        break;
951
                                case 2:
952
                                        startPoint = FPoint(oldStart.x() - xSize / 2.0 * cos(angle), oldStart.y() - xSize / 2.0 * sin(angle));
953
                                        endPoint   = FPoint(oldStart.x() + xSize / 2.0 * cos(angle), oldStart.y() + xSize / 2.0 * sin(angle));
954
                                        break;
955
                        }
956
                }
957
                sizes->set("Remember", doRemember);
958
                doCreate = true;
959
        }
960
        delete dia;
961
        return doCreate;
962
}
963
 
12799 pierre 964
// void CreateMode::setResizeCursor(int how)
965
// {
966
//      switch (how)
967
//      {
968
//              case 1:
969
//              case 2:
970
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeFDiagCursor));
971
//                      break;
972
//              case 3:
973
//              case 4:
974
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeBDiagCursor));
975
//                      break;
976
//              case 5:
977
//              case 8:
978
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeVerCursor));
979
//                      break;
980
//              case 6:
981
//              case 7:
982
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeHorCursor));
983
//                      break;
984
//              default:
985
//                      qApp->changeOverrideCursor(QCursor(Qt::SizeAllCursor));
986
//                      break;
987
//      }
988
// }
12610 jghali 989