diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/basepointwidget.cpp | |
| download | scribus-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.cpp | 203 |
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(); +} |
