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 rulermover.cpp - description
9 -------------------
10 begin : Sun Jul 24 2005
11 copyright : (C) 2005 by Franz Schmid
12 email : Franz.Schmid@altmuehlnet.de
13 ***************************************************************************/
14
15 /***************************************************************************
16 * *
17 * This program is free software; you can redistribute it and/or modify *
18 * it under the terms of the GNU General Public License as published by *
19 * the Free Software Foundation; either version 2 of the License, or *
20 * (at your option) any later version. *
21 * *
22 ***************************************************************************/
23
24 #include "rulermover.h"
25
26 #include <QApplication>
27 #include <QCursor>
28 #include <QMenu>
29 #include <QPixmap>
30 #include <QPalette>
31 #include <QWidget>
32
33
34 #include "canvas.h"
35 #include "canvasgesture_rulermove.h"
36 #include "iconmanager.h"
37 #include "scraction.h"
38 #include "scribus.h"
39 #include "scribusdoc.h"
40 #include "scribusview.h"
41 #include "ui/guidemanager.h"
42
43
RulerMover(ScribusView * pa)44 RulerMover::RulerMover(ScribusView *pa) : QWidget(pa)
45 {
46 setBackgroundRole(QPalette::Window);
47 setAutoFillBackground(true);
48 QPalette palette;
49 palette.setBrush(QPalette::Window, QColor(240, 240, 240));
50 palette.setBrush(backgroundRole(), QBrush(IconManager::instance().loadPixmap("mover.png")));
51 setPalette(palette);
52 currView = pa;
53 rulerGesture = new RulerGesture(currView, RulerGesture::ORIGIN);
54 Mpressed = false;
55 }
56
mouseDoubleClickEvent(QMouseEvent *)57 void RulerMover::mouseDoubleClickEvent(QMouseEvent *)
58 {
59 currView->m_doc->rulerXoffset = 0;
60 currView->m_doc->rulerYoffset = 0;
61 currView->DrawNew();
62 }
63
mousePressEvent(QMouseEvent * m)64 void RulerMover::mousePressEvent(QMouseEvent *m)
65 {
66 if (m->button() == Qt::LeftButton)
67 {
68 Mpressed = true;
69 qApp->setOverrideCursor(QCursor(Qt::CrossCursor));
70 currView->startGesture(rulerGesture);
71 currView->registerMousePress(m->globalPos());
72 }
73 QWidget::mousePressEvent(m);
74 }
75
mouseReleaseEvent(QMouseEvent * m)76 void RulerMover::mouseReleaseEvent(QMouseEvent *m)
77 {
78 qApp->restoreOverrideCursor();
79 if (Mpressed)
80 {
81 rulerGesture->mouseReleaseEvent(m);
82 Mpressed = false;
83 }
84 else if (m->button() == Qt::RightButton)
85 {
86 QMenu *pmen = new QMenu();
87 QMenu *pmen2 = nullptr;
88 pmen->addAction( tr("Reset Rulers"), this, SLOT(resetRulers()));
89 pmen->addAction(currView->m_doc->scMW()->scrActions["viewRulerMode"]);
90 if (currView->m_doc->guidesPrefs().rulerMode)
91 {
92 pmen2 = new QMenu();
93 if (pmen2)
94 {
95 pmen2->setTitle( tr("Move on current Page"));
96 pmen2->addAction( tr("Origin at Top Left"), this, SLOT(resetRulers()));
97 pmen2->addAction( tr("Origin at Top Right"), this, SLOT(moveRulerTopRight()));
98 pmen2->addAction( tr("Origin at Bottom Left"), this, SLOT(moveRulerBottomLeft()));
99 pmen2->addAction( tr("Origin at Bottom Right"), this, SLOT(moveRulerBottomRight()));
100 pmen2->addAction( tr("Origin at Center"), this, SLOT(moveRulerCenter()));
101 pmen2->addAction( tr("Origin at Top Center"), this, SLOT(moveRulerTopCenter()));
102 pmen2->addAction( tr("Origin at Bottom Center"), this, SLOT(moveRulerBottomCenter()));
103 pmen->addMenu(pmen2);
104 }
105 }
106 pmen->exec(QCursor::pos());
107 delete pmen;
108 delete pmen2;
109 }
110 if (currView->m_doc->guidesPrefs().guidesShown)
111 currView->m_doc->scMW()->guidePalette->setupPage();
112 QWidget::mouseReleaseEvent(m);
113 }
114
mouseMoveEvent(QMouseEvent * m)115 void RulerMover::mouseMoveEvent(QMouseEvent *m)
116 {
117 if (Mpressed)
118 rulerGesture->mouseMoveEvent(m);
119 QWidget::mouseMoveEvent(m);
120 }
121
resetRulers()122 void RulerMover::resetRulers()
123 {
124 currView->m_doc->rulerXoffset = 0;
125 currView->m_doc->rulerYoffset = 0;
126 currView->DrawNew();
127 }
128
moveRulerTopRight()129 void RulerMover::moveRulerTopRight()
130 {
131 currView->m_doc->rulerXoffset = currView->m_doc->currentPage()->width();
132 currView->m_doc->rulerYoffset = 0;
133 currView->DrawNew();
134 }
135
moveRulerBottomLeft()136 void RulerMover::moveRulerBottomLeft()
137 {
138 currView->m_doc->rulerXoffset = 0;
139 currView->m_doc->rulerYoffset = currView->m_doc->currentPage()->height();
140 currView->DrawNew();
141 }
142
moveRulerBottomRight()143 void RulerMover::moveRulerBottomRight()
144 {
145 currView->m_doc->rulerXoffset = currView->m_doc->currentPage()->width();
146 currView->m_doc->rulerYoffset = currView->m_doc->currentPage()->height();
147 currView->DrawNew();
148 }
149
moveRulerCenter()150 void RulerMover::moveRulerCenter()
151 {
152 currView->m_doc->rulerXoffset = currView->m_doc->currentPage()->width() / 2.0;
153 currView->m_doc->rulerYoffset = currView->m_doc->currentPage()->height() / 2.0;
154 currView->DrawNew();
155 }
156
moveRulerTopCenter()157 void RulerMover::moveRulerTopCenter()
158 {
159 currView->m_doc->rulerXoffset = currView->m_doc->currentPage()->width() / 2.0;
160 currView->m_doc->rulerYoffset = 0;
161 currView->DrawNew();
162 }
163
moveRulerBottomCenter()164 void RulerMover::moveRulerBottomCenter()
165 {
166 currView->m_doc->rulerXoffset = currView->m_doc->currentPage()->width() / 2.0;
167 currView->m_doc->rulerYoffset = currView->m_doc->currentPage()->height();
168 currView->DrawNew();
169 }
170
171