Ejemplo n.º 1
0
void MyFracWindow::tabChanged()
{
	if (_tabWidget->currentPageIndex() == 1) {
		emit view2DEnabled(false);
		emit view3DEnabled(true);
		emit previewEnabled(false);

		_comboGrid->setEnabled(true);
		_sliderHeight->setEnabled(true);
	} else {
		emit view3DEnabled(false);
		emit view2DEnabled(true);
		if (!_juliaMode)
			emit previewEnabled(true);

		_comboGrid->setEnabled(false);
		_sliderHeight->setEnabled(false);
	}
}
Ejemplo n.º 2
0
void MyFracWindow::updateMode()
{
	_actionMandelbrot->setEnabled(_juliaMode);
	_editJuliaX->setEnabled(_juliaMode);
	_editJuliaY->setEnabled(_juliaMode);

	if (_juliaMode) {
		QString str;
		_editJuliaX->setText(str.setNum(_juliaX, 'g', 12));
		_editJuliaY->setText(str.setNum(_juliaY, 'g', 12));
		emit previewEnabled(false);
		emit modeChangedJulia(_juliaX, _juliaY);
	} else {
		_editJuliaX->setText(QString::null);
		_editJuliaY->setText(QString::null);
		emit previewEnabled(true);
		emit modeChangedMandelbrot();
	}
}
Ejemplo n.º 3
0
int LinkLook::previewSize() const
{
    if (previewEnabled()) {
        switch (preview()) {
        default:
        case None:          return 0;
        case IconSize:      return iconSize();
        case TwiceIconSize: return iconSize() * 2;
        case ThreeIconSize: return iconSize() * 3;
        }
    } else
        return 0;
}
Ejemplo n.º 4
0
void MyFracWindow::onFileSave()
{
	QHBox* box = new QHBox(NULL);
	box->setSpacing(10);

	new QLabel(i18n("Image Size:"), box);
	QLineEdit* editResX = new QLineEdit(box);
	editResX->setValidator(new QIntValidator(1, 32768, editResX));
	box->setStretchFactor(editResX, 0);
	new QLabel(i18n("x"), box);
	QLineEdit* editResY = new QLineEdit(box);
	editResY->setValidator(new QIntValidator(1, 32768, editResY));
	box->setStretchFactor(editResY, 0);
	box->setStretchFactor(new QWidget(box), 1);

	editResX->setText(QString::number(_imageSize.width()));
	editResY->setText(QString::number(_imageSize.height()));

	KFileDialog imageDlg(_imagePath, QString::null, this, "file_dlg", true, box);
	imageDlg.setCaption(i18n("Save Image"));
	imageDlg.setOperationMode(KFileDialog::Saving);
	imageDlg.setMimeFilter(KImageIO::mimeTypes(KImageIO::Writing), _imageMime);

	if (imageDlg.exec() == KFileDialog::Accepted) {
		QString fileName = imageDlg.selectedFile();

		_imagePath = QFileInfo(fileName).dirPath();
		_imageMime = imageDlg.currentMimeFilter();

		if (editResX->hasAcceptableInput() && editResY->hasAcceptableInput()) {
			_imageSize.setWidth(editResX->text().toInt());
			_imageSize.setHeight(editResY->text().toInt());
		} else {
			KMessageBox::sorry(this, i18n("An invalid image size was entered."));
			return;
		}

		emit previewEnabled(false);

		_progressDialog = new QProgressDialog(this, NULL, true);
		_progressDialog->setCaption(i18n("Save Image"));
		_progressDialog->setLabelText(i18n("Generating Image..."));
		_progressDialog->setTotalSteps(100);
		_progressDialog->setMinimumDuration(0);

		_generator.setSize(_imageSize);
		_generator.setPosition(_posX, _posY, _zoom, _angle);
		if (_juliaMode)
			_generator.setJuliaMode(_juliaX, _juliaY);
		_generator.setQuality(_maxIter, _threshold);
		_generator.setBackground(_backgroundColor.rgb());
		_generator.setGradient(_gradientData, _gradientScale, _gradientOffset);

		_generator.addToQueue();
		_progressDialog->exec();

		if (!_progressDialog->wasCanceled()) {
			if (!_generator.isValid()) {
				KMessageBox::sorry(this, i18n("Not enough memory to generate the fractal."));
			} else {
				_progressDialog->setLabelText(i18n("Saving Image..."));
				_progressDialog->setProgress(0);
				qApp->processEvents();
				_generator.repaintImage();
				QString format = KImageIO::typeForMime(_imageMime);
				bool result = _generator.getImage().save(fileName, format.ascii());
				_progressDialog->setProgress(100);
				if (!result) {
					KMessageBox::sorry(this, i18n("Failed to save the image file."));
				}
			}
		} else
			_generator.abort();

		delete _progressDialog;
		_progressDialog = NULL;

		_generator.freeData();

		if (!_juliaMode)
			emit previewEnabled(true);
	}
}