1
/*******************************************************************
3
Part of the Fritzing project - http://fritzing.org
4
Copyright (c) 2007-2010 Fachhochschule Potsdam - http://fh-potsdam.de
6
Fritzing is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
11
Fritzing is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
16
You should have received a copy of the GNU General Public License
17
along with Fritzing. If not, see <http://www.gnu.org/licenses/>.
19
********************************************************************
22
$Author: cohen@irascible.com $:
23
$Date: 2010-05-06 22:30:19 +0200 (Thu, 06 May 2010) $
25
********************************************************************/
27
#include "zoomcontrols.h"
28
#include "../debugdialog.h"
29
#include "../utils/zoomslider.h"
31
ZoomButton::ZoomButton(QBoxLayout::Direction dir, ZoomButton::ZoomType type, ZoomableGraphicsView* view, QWidget *parent) : QLabel(parent)
33
QString imgPath = ":/resources/images/icons/partsEditorZoom%1%2Button.png";
34
QString typeStr = type==ZoomButton::ZoomIn? "In": "Out";
36
if(dir == QBoxLayout::LeftToRight || dir == QBoxLayout::RightToLeft) {
38
} else if(dir == QBoxLayout::TopToBottom || dir == QBoxLayout::BottomToTop) {
41
imgPath = imgPath.arg(typeStr).arg(dirStr);
42
m_step = 5*ZoomSlider::ZoomStep;
46
connect(this, SIGNAL(clicked()), this, SLOT(zoom()) );
47
setPixmap(QPixmap(imgPath));
50
void ZoomButton::zoom() {
51
int inOrOut = m_type == ZoomButton::ZoomIn? 1: -1;
52
m_owner->relativeZoom(inOrOut*m_step, false);
53
m_owner->ensureFixedToBottomRightItems();
56
void ZoomButton::mousePressEvent(QMouseEvent *event) {
57
//QLabel::mousePressEvent(event);
62
void ZoomButton::enterEvent(QEvent *event) {
63
QLabel::enterEvent(event);
66
void ZoomButton::leaveEvent(QEvent *event) {
67
QLabel::leaveEvent(event);
71
///////////////////////////////////////////////////////////
73
ZoomControlsPrivate::ZoomControlsPrivate(ZoomableGraphicsView* view, QBoxLayout::Direction dir, QWidget *parent) : QFrame(parent)
75
//setObjectName("zoomControls");
77
m_zoomInButton = new ZoomButton(dir, ZoomButton::ZoomIn, view, this);
78
m_zoomOutButton = new ZoomButton(dir, ZoomButton::ZoomOut, view, this);
80
m_boxLayout = new QBoxLayout(dir,this);
81
m_boxLayout->addWidget(m_zoomInButton);
82
m_boxLayout->addWidget(m_zoomOutButton);
83
m_boxLayout->setMargin(2);
84
m_boxLayout->setSpacing(2);
86
setStyleSheet("background-color: transparent;");
89
///////////////////////////////////////////////////////////
91
ZoomControls::ZoomControls(ZoomableGraphicsView *view, QWidget *parent)
92
: ZoomControlsPrivate(view, QBoxLayout::RightToLeft, parent)
94
m_zoomLabel = new QLabel(this);
95
m_zoomLabel->setFixedWidth(35);
96
connect(view, SIGNAL(zoomChanged(qreal)),this,SLOT(updateLabel(qreal)));
97
m_boxLayout->insertWidget(1,m_zoomLabel); // in the middle
98
m_boxLayout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Minimum)); // at the beginning
99
updateLabel(view->currentZoom());
102
void ZoomControls::updateLabel(qreal zoom) {
103
m_zoomLabel->setText(QString("%1%").arg((int)zoom));
1
/*******************************************************************
3
Part of the Fritzing project - http://fritzing.org
4
Copyright (c) 2007-2011 Fachhochschule Potsdam - http://fh-potsdam.de
6
Fritzing is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
11
Fritzing is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
16
You should have received a copy of the GNU General Public License
17
along with Fritzing. If not, see <http://www.gnu.org/licenses/>.
19
********************************************************************
22
$Author: cohen@irascible.com $:
23
$Date: 2011-07-30 21:17:22 +0200 (Sat, 30 Jul 2011) $
25
********************************************************************/
27
#include "zoomcontrols.h"
28
#include "../debugdialog.h"
29
#include "../utils/zoomslider.h"
31
ZoomButton::ZoomButton(QBoxLayout::Direction dir, ZoomButton::ZoomType type, ZoomableGraphicsView* view, QWidget *parent) : QLabel(parent)
33
QString imgPath = ":/resources/images/icons/partsEditorZoom%1%2Button.png";
34
QString typeStr = type==ZoomButton::ZoomIn? "In": "Out";
36
if(dir == QBoxLayout::LeftToRight || dir == QBoxLayout::RightToLeft) {
38
} else if(dir == QBoxLayout::TopToBottom || dir == QBoxLayout::BottomToTop) {
41
imgPath = imgPath.arg(typeStr).arg(dirStr);
42
m_step = 5*ZoomSlider::ZoomStep;
46
connect(this, SIGNAL(clicked()), this, SLOT(zoom()) );
47
setPixmap(QPixmap(imgPath));
50
void ZoomButton::zoom() {
51
int inOrOut = m_type == ZoomButton::ZoomIn? 1: -1;
52
m_owner->relativeZoom(inOrOut*m_step, false);
53
m_owner->ensureFixedToBottomRightItems();
56
void ZoomButton::mousePressEvent(QMouseEvent *event) {
57
//QLabel::mousePressEvent(event);
62
void ZoomButton::enterEvent(QEvent *event) {
63
QLabel::enterEvent(event);
66
void ZoomButton::leaveEvent(QEvent *event) {
67
QLabel::leaveEvent(event);
71
///////////////////////////////////////////////////////////
73
ZoomControlsPrivate::ZoomControlsPrivate(ZoomableGraphicsView* view, QBoxLayout::Direction dir, QWidget *parent) : QFrame(parent)
75
//setObjectName("zoomControls");
77
m_zoomInButton = new ZoomButton(dir, ZoomButton::ZoomIn, view, this);
78
m_zoomOutButton = new ZoomButton(dir, ZoomButton::ZoomOut, view, this);
80
m_boxLayout = new QBoxLayout(dir,this);
81
m_boxLayout->addWidget(m_zoomInButton);
82
m_boxLayout->addWidget(m_zoomOutButton);
83
m_boxLayout->setMargin(2);
84
m_boxLayout->setSpacing(2);
86
setStyleSheet("background-color: transparent;");
89
///////////////////////////////////////////////////////////
91
ZoomControls::ZoomControls(ZoomableGraphicsView *view, QWidget *parent)
92
: ZoomControlsPrivate(view, QBoxLayout::RightToLeft, parent)
94
m_zoomLabel = new QLabel(this);
95
m_zoomLabel->setFixedWidth(35);
96
connect(view, SIGNAL(zoomChanged(double)),this,SLOT(updateLabel(double)));
97
m_boxLayout->insertWidget(1,m_zoomLabel); // in the middle
98
m_boxLayout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Minimum)); // at the beginning
99
updateLabel(view->currentZoom());
102
void ZoomControls::updateLabel(double zoom) {
103
m_zoomLabel->setText(QString("%1%").arg((int)zoom));