// Слот - изменение расположения фонового изображения
int ScaleSettingsDialog::slotImagePathChanged(QString path)
{
    QFileInfo fileInfo(path);
    bool isExist = fileInfo.exists();
    bool isCorrectSuffix = (fileInfo.suffix() == "svg");
    if (isExist && isCorrectSuffix)
    {
        lblImageNotification->setText("");

        // Получение информации об изображении
        mImageSize = QSvgRenderer(path).viewBox().size();
        lblSourceSizeValue->setText(QString("%1x%2 пкс").arg(mImageSize.width()).arg(mImageSize.height()));
        lblNewSizeValue->setText(QString("%1x%2 пкс")
                                 .arg(mImageSize.width() * spbScale->value() / 100)
                                 .arg(mImageSize.height() * spbScale->value() / 100));
        // Установка возможности модификации масштаба изображения
        gbScaleSettings->setEnabled(true);
    }
    else
    {
        lblImageNotification->setText("<span style='color:red;'>Изображение не найдено!</span>");
        gbScaleSettings->setEnabled(false);
    }

    if (leImage->focusWidget())
        btnApply->setEnabled(true);

    return 0;
}
// Слот - щелчок по кнопке "Обзор" (фоновое изображение)
int ScaleSettingsDialog::slotBtnBrowseImageClick()
{
    QFileDialog dialog(this);
    dialog.setWindowTitle(QString("Выбрать фоновое изображение"));
    dialog.setDirectory(mProjectDirectory);
    dialog.setNameFilter(QString("SVG-изображение (*.svg)"));
    dialog.setLabelText(QFileDialog::Accept, "&Выбрать изображение");

    if (dialog.exec() != QDialog::Accepted)
        return 0;

    QString dialogResult = dialog.selectedFiles().first();

    if (!dialogResult.isEmpty())
    {
        // Установка пути до фонового изображения
        leImage->setText(dialogResult);

        // Очистка поля для уведомлений
        lblImageNotification->setText("");

        // Разблокировка кнопки "Применить"
        btnApply->setEnabled(true);

        // Установка модификаторов масштаба в 100%
        spbScale->setValue(100);
        slScale->setValue(100);

        // Получение информации об изображении
        mImageSize = QSvgRenderer(dialogResult).viewBox().size();

        lblSourceSizeValue->setText(QString("%1x%2 пкс")
                                    .arg(mImageSize.width())
                                    .arg(mImageSize.height()));
        lblNewSizeValue->setText(QString("%1x%2 пкс")
                                 .arg(mImageSize.width() * spbScale->value() / 100)
                                 .arg(mImageSize.height() * spbScale->value() / 100));
        // Установка возможности модификации масштаба изображения
        gbScaleSettings->setEnabled(true);
    }

    return 0;
}
Exemplo n.º 3
0
svgItemProperties::svgItemProperties(specSVGItem* i, QWidget* parent) :
	QDialog(parent),
	ui(new Ui::svgItemProperties),
	item(i)
{
	ui->setupUi(this);

	ui->itemPreview->load(i->data);
	QSize svgSize = QSvgRenderer(item->data).defaultSize() ;
	originalAspectRatio = (double) svgSize.width() / svgSize.height() ;
	svgSize.scale(300, 300, Qt::KeepAspectRatio);
	ui->itemPreview->setFixedSize(svgSize) ;
	//	ui->itemPreview

	ui->anchorRadioButtons->setId(ui->topLeftRadio,     specSVGItem::topLeft);
	ui->anchorRadioButtons->setId(ui->topRadio,         specSVGItem::top);
	ui->anchorRadioButtons->setId(ui->topRightRadio,    specSVGItem::topRight);
	ui->anchorRadioButtons->setId(ui->leftRadio,        specSVGItem::left);
	ui->anchorRadioButtons->setId(ui->centerRadio,      specSVGItem::center);
	ui->anchorRadioButtons->setId(ui->rightRadio,       specSVGItem::right);
	ui->anchorRadioButtons->setId(ui->bottomLeftRadio,  specSVGItem::bottomLeft);
	ui->anchorRadioButtons->setId(ui->bottomRadio,      specSVGItem::bottom);
	ui->anchorRadioButtons->setId(ui->bottomRightRadio, specSVGItem::bottomRight);

	ui->anchorRadioButtons->button(item->anchor)->setChecked(true) ;

	ui->xValue->setRange(-INFINITY, INFINITY);
	ui->yValue->setRange(-INFINITY, INFINITY);
	ui->widthValue->setRange(0, INFINITY);
	ui->heightValue->setRange(0, INFINITY);

	ui->xValue->setValue(item->ownBounds.x.second) ;
	ui->yValue->setValue(item->ownBounds.y.second) ;
	ui->widthValue->setValue(item->ownBounds.width.second) ;
	ui->heightValue->setValue(item->ownBounds.height.second) ;

	ui->xPixelsButton->setChecked(item->ownBounds.x.first != QwtPlot::axisCnt) ;
	ui->yPixelsButton->setChecked(item->ownBounds.y.first != QwtPlot::axisCnt) ;
	ui->widthPixelsButton->setChecked(item->ownBounds.width.first != QwtPlot::axisCnt) ;
	ui->heightPixelsButton->setChecked(item->ownBounds.height.first != QwtPlot::axisCnt) ;
}
// Установка пути к изображению
int ScaleSettingsDialog::setImage(const QString image,
                                  const int scaleFactor)
{
    if (!image.isEmpty())
    {
        QDir currentDir(image);
        currentDir.makeAbsolute();
        mImage = currentDir.path();
    }
    else
    {
        mImage = image;
    }

    leImage->setText(mImage);
    if (!QFile(mImage).exists())
    {
        lblImageNotification->setText("<span style='color:red;'>Изображение не найдено!</span>");
        gbScaleSettings->setEnabled(false);
    }
    else
    {
        lblImageNotification->setText("");

        // Установка модификаторов масштаба в 100%
        spbScale->setValue(scaleFactor);
        slScale->setValue(scaleFactor);
        // Получение информации об изображении
        mImageSize = QSvgRenderer(image).viewBox().size();
        lblSourceSizeValue->setText(QString("%1x%2 пкс").arg(mImageSize.width()).arg(mImageSize.height()));
        lblNewSizeValue->setText(QString("%1x%2 пкс")
                                 .arg(mImageSize.width() * spbScale->value() / 100)
                                 .arg(mImageSize.height() * spbScale->value() / 100));
        // Установка возможности модификации масштаба изображения
        gbScaleSettings->setEnabled(true);
    }

    return 0;
}