Krita Source Code Documentation
Loading...
Searching...
No Matches
KoZoomWidget.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2004 Ariya Hidayat <ariya@kde.org>
3 SPDX-FileCopyrightText: 2006 Peter Simonsson <peter.simonsson@gmail.com>
4 SPDX-FileCopyrightText: 2006-2007 C. Boemann <cbo@boemann.dk>
5 SPDX-FileCopyrightText: 2014 Sven Langkamp <sven.langkamp@gmail.com>
6
7 SPDX-License-Identifier: LGPL-2.0-only
8*/
9
10#include "KoZoomWidget.h"
11
12#include <QSlider>
13#include <QToolButton>
14#include <QBoxLayout>
15#include <QDebug>
16#include <klocalizedstring.h>
17
18#include "KoZoomInput.h"
19#include "KoIcon.h"
20
22{
23public:
24
26 : slider(0)
27 , input(0)
29 {}
30
31 QSlider* slider;
33 QToolButton* canvasMappingButton;
34
35 qreal effectiveZoom {1.0};
36
38};
39
40KoZoomWidget::KoZoomWidget(QWidget* parent, int maxZoom )
41 : QWidget(parent)
42 , d(new Private)
43{
44 QHBoxLayout *layout = new QHBoxLayout(this);
45 //layout->setSizeConstraint(QLayout::SetFixedSize);
46 layout->setContentsMargins(0, 0, 0, 0);
47 layout->setSpacing(0);
48
49 d->input = new KoZoomInput(this);
50 connect(d->input, SIGNAL(zoomLevelChanged(QString)), this, SIGNAL(zoomLevelChanged(QString)));
51 connect(d->input, SIGNAL(zoomLevelChangedIndex(int)), this, SIGNAL(zoomLevelChangedIndex(int)));
52 layout->addWidget(d->input);
53
54 d->slider = new QSlider(Qt::Horizontal);
55 d->slider->setToolTip(i18n("Zoom"));
56 d->slider->setMinimum(0);
57 d->slider->setMaximum(maxZoom);
58 d->slider->setValue(0);
59 d->slider->setSingleStep(1);
60 d->slider->setPageStep(1);
61 d->slider->setMinimumWidth(80);
62 layout->addWidget(d->slider);
63 layout->setStretch(1, 1);
64
65 d->canvasMappingButton = new QToolButton(this);
66 d->canvasMappingButton->setIcon(kisIcon("zoom-pixels"));
67 d->canvasMappingButton->setCheckable(true);
68 d->canvasMappingButton->setChecked(false);
69 d->canvasMappingButton->setAutoRaise(true);
70 layout->addWidget(d->canvasMappingButton);
71 connect(d->canvasMappingButton, &QToolButton::toggled, this, [this](bool value) {
72 d->updateUsePrintResolutionButtonIcon(value);
73 Q_EMIT sigUsePrintResolutionModeChanged(value);
74 });
75 d->updateUsePrintResolutionButtonIcon(false);
76
77 connect(d->slider, SIGNAL(valueChanged(int)), this, SIGNAL(sliderValueChanged(int)));
78}
79
83
85{
86 return d->input->isFlat();
87}
88
90{
91 d->input->setFlat(flat);
92}
93
94void KoZoomWidget::setSliderState(int size, int index)
95{
96 QSignalBlocker b(d->slider);
97 d->slider->setMaximum(size - 1);
98 d->slider->setValue(index);
99}
100
101void KoZoomWidget::setZoomLevelsState(const QStringList &values, int index, const QString &activeText)
102{
103 QSignalBlocker b(d->input);
104 d->input->setZoomLevels(values);
105 d->input->setCurrentZoomLevel(index, activeText);
106}
107
109{
110 d->input->setCurrentZoomLevel(index);
111}
112
113void KoZoomWidget::setCurrentZoomLevel(const QString &valueString)
114{
115 d->input->setCurrentZoomLevel(valueString);
116}
117
119{
120 QSignalBlocker b(d->slider);
121 d->slider->setValue(value);
122}
123
125{
126 QString canvasMappingMode;
127
128 if (value) {
129 canvasMappingButton->setIcon(kisIcon("zoom-print"));
130 canvasMappingMode = i18n("Print Size");
131 } else {
132 canvasMappingButton->setIcon(kisIcon("zoom-pixels"));
133 canvasMappingMode = i18n("Pixel Size");
134 }
135
136 canvasMappingButton->setToolTip(
137 i18n("Map the displayed canvas size between pixel size or print size\n"
138 "Current Mapping: %1",
139 canvasMappingMode));
140}
141
143{
144 if (d->canvasMappingButton->isChecked() != value) {
145 QSignalBlocker b(d->canvasMappingButton);
146 d->canvasMappingButton->setChecked(value);
147 d->updateUsePrintResolutionButtonIcon(value);
148 }
149}
150
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void updateUsePrintResolutionButtonIcon(bool value)
QToolButton * canvasMappingButton
KoZoomWidget(QWidget *parent, int maxZoom)
void setCurrentZoomLevel(const QString &valueString)
~KoZoomWidget() override
void zoomLevelChangedIndex(int index)
void setZoomInputFlat(bool flat)
void setZoomLevelsState(const QStringList &values, int index, const QString &activeText)
void setSliderValue(int value)
bool isZoomInputFlat() const
void setUsePrintResolutionMode(bool value)
void sliderValueChanged(int value)
QScopedPointer< Private > const d
void setSliderState(int size, int index)
void zoomLevelChanged(const QString &level)
#define kisIcon(name)
Definition kis_icon.h:26