summaryrefslogtreecommitdiffstats
path: root/scribus/basepointwidget.cpp
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/basepointwidget.cpp
downloadscribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/basepointwidget.cpp')
-rw-r--r--scribus/basepointwidget.cpp203
1 files changed, 203 insertions, 0 deletions
diff --git a/scribus/basepointwidget.cpp b/scribus/basepointwidget.cpp
new file mode 100644
index 0000000..c6dca8f
--- /dev/null
+++ b/scribus/basepointwidget.cpp
@@ -0,0 +1,203 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+
+#include "basepointwidget.h"
+
+BasePointWidget::BasePointWidget(QWidget *pa, int mode) : QWidget(pa)
+{
+ m_mode = mode;
+ if (m_mode == 0)
+ {
+ setMinimumSize(QSize(48, 48));
+ setMaximumSize(QSize(48, 48));
+ }
+ else
+ {
+ setMinimumSize(QSize(48, 16));
+ setMaximumSize(QSize(48, 16));
+ }
+ setMouseTracking(true);
+ selectedBase = 0;
+ hooveredBase = -1;
+ Mpressed = false;
+}
+
+void BasePointWidget::paintEvent(QPaintEvent *e)
+{
+ QPainter p;
+ p.begin(this);
+ p.setRenderHint(QPainter::Antialiasing, true);
+ p.setBrush(palette().color(QPalette::Window));
+ p.setPen(Qt::NoPen);
+ p.drawRect(0, 0, width(), height());
+ p.setBrush(Qt::black);
+ p.setPen(QPen(palette().color(QPalette::WindowText), 1));
+ if (m_mode == 0)
+ {
+ p.drawEllipse( 4, 4, 10, 10);
+ p.drawEllipse(34, 4, 10, 10);
+ p.drawEllipse(19, 19, 10, 10);
+ p.drawEllipse( 4, 34, 10, 10);
+ p.drawEllipse(34, 34, 10, 10);
+ }
+ else
+ {
+ p.drawEllipse( 4, 4, 10, 10);
+ p.drawEllipse(19, 4, 10, 10);
+ p.drawEllipse(34, 4, 10, 10);
+ }
+ p.setPen(QPen(palette().color(QPalette::WindowText), 2));
+ if (m_mode == 0)
+ {
+ p.drawLine(8, 8, 33, 8);
+ p.drawLine(8, 38, 33, 38);
+ p.drawLine(8, 8, 8, 33);
+ p.drawLine(38, 8, 38, 33);
+ }
+ else
+ p.drawLine(8, 8, 33, 8);
+ p.setBrush(Qt::white);
+ p.setPen(QPen(palette().color(QPalette::WindowText), 2));
+ if (m_mode == 0)
+ {
+ p.drawEllipse( 3, 3, 10, 10);
+ p.drawEllipse(33, 3, 10, 10);
+ p.drawEllipse(18, 18, 10, 10);
+ p.drawEllipse( 3, 33, 10, 10);
+ p.drawEllipse(33, 33, 10, 10);
+ }
+ else
+ {
+ p.drawEllipse( 3, 3, 10, 10);
+ p.drawEllipse(18, 3, 10, 10);
+ p.drawEllipse(33, 3, 10, 10);
+ }
+ if (hooveredBase > -1)
+ {
+ p.setBrush(Qt::NoBrush);
+ p.setPen(QPen(palette().color(QPalette::Highlight), 1));
+ if (hooveredBase == 0)
+ p.drawEllipse( 4, 4, 8, 8);
+ else if (hooveredBase == 1)
+ p.drawEllipse(34, 4, 8, 8);
+ else if (hooveredBase == 2)
+ {
+ if (m_mode == 0)
+ p.drawEllipse(19, 19, 8, 8);
+ else
+ p.drawEllipse(19, 4, 8, 8);
+ }
+ else if (hooveredBase == 3)
+ p.drawEllipse( 4, 34, 8, 8);
+ else if (hooveredBase == 4)
+ p.drawEllipse(34, 34, 8, 8);
+ }
+ p.setBrush(palette().color(QPalette::WindowText));
+ p.setPen(Qt::NoPen);
+ if (selectedBase == 0)
+ p.drawEllipse( 5, 5, 6, 6);
+ else if (selectedBase == 1)
+ p.drawEllipse(35, 5, 6, 6);
+ else if (selectedBase == 2)
+ {
+ if (m_mode == 0)
+ p.drawEllipse(20, 20, 6, 6);
+ else
+ p.drawEllipse(20, 5, 6, 6);
+ }
+ else if (selectedBase == 3)
+ p.drawEllipse( 5, 35, 6, 6);
+ else if (selectedBase == 4)
+ p.drawEllipse(35, 35, 6, 6);
+ p.end();
+}
+
+void BasePointWidget::mousePressEvent(QMouseEvent *m)
+{
+ m->accept();
+ Mpressed = true;
+}
+
+void BasePointWidget::mouseReleaseEvent(QMouseEvent *m)
+{
+ m->accept();
+ if (Mpressed)
+ {
+ QPoint p = m->pos();
+ if (m_mode == 0)
+ {
+ if (QRect( 3, 3, 10, 10).contains(p))
+ selectedBase = 0;
+ else if (QRect(33, 3, 10, 10).contains(p))
+ selectedBase = 1;
+ else if (QRect(18, 18, 10, 10).contains(p))
+ selectedBase = 2;
+ else if (QRect( 3, 33, 10, 10).contains(p))
+ selectedBase = 3;
+ else if (QRect(33, 33, 10, 10).contains(p))
+ selectedBase = 4;
+ }
+ else
+ {
+ if (QRect( 3, 3, 9, 9).contains(p))
+ selectedBase = 0;
+ else if (QRect(33, 3, 10, 10).contains(p))
+ selectedBase = 1;
+ else if (QRect(18, 3, 10, 10).contains(p))
+ selectedBase = 2;
+ }
+ emit buttonClicked(selectedBase);
+ }
+ update();
+}
+
+void BasePointWidget::mouseMoveEvent(QMouseEvent *m)
+{
+ m->accept();
+ QPoint p = m->pos();
+ hooveredBase = -1;
+ if (m_mode == 0)
+ {
+ if (QRect( 3, 3, 10, 10).contains(p))
+ hooveredBase = 0;
+ else if (QRect(33, 3, 10, 10).contains(p))
+ hooveredBase = 1;
+ else if (QRect(18, 18, 10, 10).contains(p))
+ hooveredBase = 2;
+ else if (QRect( 3, 33, 10, 10).contains(p))
+ hooveredBase = 3;
+ else if (QRect(33, 33, 10, 10).contains(p))
+ hooveredBase = 4;
+ }
+ else
+ {
+ if (QRect( 3, 3, 10, 10).contains(p))
+ hooveredBase = 0;
+ else if (QRect(33, 3, 10, 10).contains(p))
+ hooveredBase = 1;
+ else if (QRect(18, 3, 10, 10).contains(p))
+ hooveredBase = 2;
+ }
+ update();
+}
+
+void BasePointWidget::leaveEvent(QEvent*)
+{
+ hooveredBase = -1;
+ update();
+}
+
+int BasePointWidget::checkedId()
+{
+ return selectedBase;
+}
+
+void BasePointWidget::setCheckedId(int id)
+{
+ selectedBase = id;
+ update();
+}