KoZoomAction::KoZoomAction( KoZoomMode::Modes zoomModes, const QString& text, QObject *parent) : QSelectAction(text, parent) ,d(new Private) { d->zoomModes = zoomModes; d->slider = 0; d->input = 0; d->specialButtons = 0; setIcon(koIcon("zoom-original")); setEditable( true ); setMaxComboViewCount( 15 ); d->sliderLookup[0] = KoZoomMode::minimumZoom(); d->sliderLookup[32] = KoZoomMode::maximumZoom(); int steps = 32; int halfSteps = steps / 2; qreal zoomStep = pow(1.0 / KoZoomMode::minimumZoom(), 1.0/halfSteps); for(int i = 1; i < steps; ++i) { d->sliderLookup[i] = pow(zoomStep, i - halfSteps); } d->effectiveZoom = 1.0; regenerateItems(d->effectiveZoom, true); connect( this, SIGNAL( triggered( const QString& ) ), SLOT( triggered( const QString& ) ) ); }
void KisNodeModel::regenerateItems(KisNodeDummy *dummy) { const QModelIndex &index = m_d->indexConverter->indexFromDummy(dummy); emit dataChanged(index, index); dummy = dummy->firstChild(); while (dummy) { regenerateItems(dummy); dummy = dummy->nextSibling(); } }
QWidget * KoZoomAction::createWidget(QWidget *parent) { // create the custom widget only if we add the action to the status bar if (!qobject_cast<QStatusBar*>(parent)) return QSelectAction::createWidget(parent); QWidget *group = new QWidget(parent); QHBoxLayout *layout = new QHBoxLayout(group); layout->setSizeConstraint(QLayout::SetFixedSize); layout->setMargin(0); layout->setSpacing(0); // this is wrong; createWidget() implies this is a factory method, so we should be able to be called // multiple times without problems. The 'new' here means we can't do that. // TODO refactor this method to use connections instead of d-pointer members to communicate so it becomes reentrant. d->input = new KoZoomInput(group); regenerateItems( d->effectiveZoom, true ); connect(d->input, SIGNAL(zoomLevelChanged(const QString&)), this, SLOT(triggered(const QString&))); layout->addWidget(d->input); d->slider = new QSlider(Qt::Horizontal); d->slider->setToolTip(QObject::tr("Zoom")); d->slider->setMinimum(0); d->slider->setMaximum(32); d->slider->setValue(16); d->slider->setSingleStep(1); d->slider->setPageStep(1); d->slider->setMinimumWidth(80); d->slider->setMaximumWidth(80); layout->addWidget(d->slider); if (d->specialButtons & AspectMode) { d->aspectButton = new QToolButton(group); d->aspectButton->setIcon(koIcon("zoom-pixels")); d->aspectButton->setIconSize(QSize(22,22)); d->aspectButton->setCheckable(true); d->aspectButton->setChecked(true); d->aspectButton->setAutoRaise(true); d->aspectButton->setToolTip(QObject::tr("Use same aspect as pixels")); connect(d->aspectButton, SIGNAL(toggled(bool)), this, SIGNAL(aspectModeChanged(bool))); layout->addWidget(d->aspectButton); }
KoZoomAction::KoZoomAction( KoZoomMode::Modes zoomModes, const QString& text, QObject *parent) : KSelectAction(text, parent) ,d(new Private) { d->zoomModes = zoomModes; d->slider = 0; d->input = 0; d->specialButtons = 0; setIcon(KIcon("zoom-original")); setEditable( true ); setMaxComboViewCount( 15 ); for(int i = 0; i<33; i++) d->sliderLookup[i] = pow(1.1892071, i - 16); d->effectiveZoom = 1.0; regenerateItems(d->effectiveZoom, true); connect( this, SIGNAL( triggered( const QString& ) ), SLOT( triggered( const QString& ) ) ); }
void KoZoomAction::setZoom( qreal zoom ) { setEffectiveZoom(zoom); regenerateItems( d->effectiveZoom, true ); }
void KoZoomAction::setZoomModes( KoZoomMode::Modes zoomModes ) { d->zoomModes = zoomModes; regenerateItems( d->effectiveZoom ); }
void KisNodeModel::slotIsolatedModeChanged() { regenerateItems(m_d->dummiesFacade->rootDummy()); }