qelectrotech-source-mirror/sources/exportpropertieswidget.cpp

236 lines
9.0 KiB
C++
Raw Normal View History

/*
2020-06-15 17:42:37 +02:00
Copyright 2006-2020 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "exportpropertieswidget.h"
#include <QFileSystemModel>
/**
@brief ExportPropertiesWidget::ExportPropertiesWidget
Constructeur
@param parent QWidget parent
*/
ExportPropertiesWidget::ExportPropertiesWidget(QWidget *parent) : QWidget(parent) {
setMinimumWidth(680);
setMinimumHeight(720);
build();
setExportProperties(ExportProperties());
}
/**
@brief ExportPropertiesWidget::ExportPropertiesWidget
Constructeur
@param export_properties Parametres d'export a afficher / editer
@param parent QWidget parent
*/
ExportPropertiesWidget::ExportPropertiesWidget(const ExportProperties &export_properties, QWidget *parent) : QWidget(parent) {
build();
setExportProperties(export_properties);
}
/**
@brief ExportPropertiesWidget::~ExportPropertiesWidget
Destructeur
*/
2020-09-07 22:03:40 +02:00
ExportPropertiesWidget::~ExportPropertiesWidget()
{
}
/**
@brief ExportPropertiesWidget::exportProperties
@return les parametres d'export definis via le widget
*/
2020-09-07 22:03:40 +02:00
ExportProperties ExportPropertiesWidget::exportProperties() const
{
ExportProperties export_properties;
export_properties.destination_directory = QDir(dirpath -> text());
export_properties.format = format -> itemData(format -> currentIndex()).toString();
export_properties.draw_grid = draw_grid -> isChecked();
export_properties.draw_border = draw_border -> isChecked();
export_properties.draw_titleblock = draw_titleblock -> isChecked();
export_properties.draw_terminals = draw_terminals -> isChecked();
export_properties.draw_colored_conductors = draw_colored_conductors -> isChecked();
export_properties.exported_area = export_border -> isChecked() ? QET::BorderArea : QET::ElementsArea;
return(export_properties);
}
/**
@brief ExportPropertiesWidget::setExportProperties
@param export_properties les parametres d'export a afficher / editer via le widget
*/
void ExportPropertiesWidget::setExportProperties(const ExportProperties &export_properties) {
dirpath -> setText(QDir::toNativeSeparators(export_properties.destination_directory.absolutePath()));
int index = format -> findData(export_properties.format);
if (index == -1) index = 0;
format -> setCurrentIndex(index);
draw_grid -> setChecked(export_properties.draw_grid);
draw_border -> setChecked(export_properties.draw_border);
draw_titleblock -> setChecked(export_properties.draw_titleblock);
draw_terminals -> setChecked(export_properties.draw_terminals);
draw_colored_conductors -> setChecked(export_properties.draw_colored_conductors);
if (export_properties.exported_area == QET::BorderArea) {
export_border -> setChecked(true);
} else {
export_elements -> setChecked(true);
}
}
/**
2020-07-15 18:02:11 +02:00
@brief ExportPropertiesWidget::setPrintingMode
Puts the widget in Print or Export mode. Print mode
does not display as many options as Export mode.
/
Passe le widget en mode Impression ou en mode Export. Le mode Impression
n'affiche pas autant d'options que le mode Export.
2020-07-15 18:02:11 +02:00
@param mode
true to use the widget in print mode,
false to use it in export mode
/
true pour utiliser le widget en mode impression, false pour
l'utiliser en mode export
*/
void ExportPropertiesWidget::setPrintingMode(bool mode) {
dirpath_label -> setVisible(!mode);
dirpath -> setVisible(!mode);
button_browse -> setVisible(!mode);
format_label -> setVisible(!mode);
format -> setVisible(!mode);
export_border -> setVisible(!mode);
export_elements -> setVisible(!mode);
}
/**
@brief ExportPropertiesWidget::slot_chooseADirectory
Slot asking the user to choose a folder
/ Slot demandant a l'utilisateur de choisir un dossier
*/
2020-09-07 22:03:40 +02:00
void ExportPropertiesWidget::slot_chooseADirectory()
{
QString user_dir = QFileDialog::getExistingDirectory(
this,
tr("Exporter dans le dossier", "dialog title"),
dirpath -> text()
);
if (!user_dir.isEmpty()) {
dirpath -> setText(QDir::toNativeSeparators(user_dir));
}
}
/**
@brief ExportPropertiesWidget::build
Generated the ExportPropertiesWidget ui
/ Cette methode construit le widget en lui-meme
*/
2020-09-07 22:03:40 +02:00
void ExportPropertiesWidget::build()
{
// le dialogue est un empilement vertical d'elements
QVBoxLayout *vboxLayout = new QVBoxLayout();
vboxLayout -> setContentsMargins(0, 0, 0, 0);
/* le dialogue comprend une ligne permettant d'indiquer un chemin de dossier (hboxLayout) */
QHBoxLayout *hboxLayout = new QHBoxLayout();
dirpath_label = new QLabel(tr("Dossier cible :"), this);
dirpath = new QLineEdit(this);
QCompleter *completer = new QCompleter(this);
completer -> setModel(new QFileSystemModel(completer));
dirpath -> setCompleter(completer);
button_browse = new QPushButton(tr("Parcourir"), this);
hboxLayout -> addWidget(dirpath_label);
hboxLayout -> addWidget(dirpath);
hboxLayout -> addWidget(button_browse);
hboxLayout -> addStretch();
vboxLayout -> addLayout(hboxLayout);
/* une ligne permettant de choisir le format (hboxLayout1) */
QHBoxLayout *hboxLayout1 = new QHBoxLayout();
format_label = new QLabel(tr("Format :"), this);
hboxLayout1 -> addWidget(format_label);
hboxLayout1 -> addWidget(format = new QComboBox(this));
format -> addItem(tr("PNG (*.png)"), "PNG");
format -> addItem(tr("JPEG (*.jpg)"), "JPG");
format -> addItem(tr("Bitmap (*.bmp)"), "BMP");
format -> addItem(tr("SVG (*.svg)"), "SVG");
format -> addItem(tr("DXF (*.dxf)"), "DXF");
hboxLayout1 -> addStretch();
vboxLayout -> addLayout(hboxLayout1);
/* un cadre permettant de specifier les options de l'image finale */
QGroupBox *groupbox_options = new QGroupBox(tr("Options de rendu", "groupbox title"));
QGridLayout *optionshlayout = new QGridLayout(groupbox_options);
// Choix de la zone du schema a exporter
exported_content_choices = new QButtonGroup(groupbox_options);
2020-07-12 22:54:23 +02:00
export_border = new QRadioButton(tr("Exporter entièrement le folio"), groupbox_options);
optionshlayout -> addWidget(export_border, 0, 0);
exported_content_choices -> addButton(export_border);
2020-07-12 22:54:23 +02:00
export_elements = new QRadioButton(tr("Exporter seulement les éléments"), groupbox_options);
optionshlayout -> addWidget(export_elements, 0, 1);
exported_content_choices -> addButton(export_elements);
// dessiner la grille
draw_grid = new QCheckBox(tr("Dessiner la grille"), groupbox_options);
optionshlayout -> addWidget(draw_grid, 1, 1);
// dessiner le cadre
draw_border = new QCheckBox(tr("Dessiner le cadre"), groupbox_options);
optionshlayout -> addWidget(draw_border, 1, 0);
// dessiner le cartouche
draw_titleblock = new QCheckBox(tr("Dessiner le cartouche"), groupbox_options);
optionshlayout -> addWidget(draw_titleblock, 2, 0);
// dessiner les bornes
draw_terminals = new QCheckBox(tr("Dessiner les bornes"), groupbox_options);
optionshlayout -> addWidget(draw_terminals, 2, 1);
// conserver les couleurs des conducteurs
draw_colored_conductors = new QCheckBox(tr("Conserver les couleurs des conducteurs"), groupbox_options);
optionshlayout -> addWidget(draw_colored_conductors, 3, 0);
vboxLayout -> addWidget(groupbox_options);
setLayout(vboxLayout);
// ordre des input selectionnes avec la touche tab
setTabOrder(dirpath, button_browse);
setTabOrder(button_browse, format);
setTabOrder(format, export_border);
setTabOrder(export_border, draw_border);
setTabOrder(draw_border, draw_grid);
setTabOrder(draw_grid, draw_titleblock);
setTabOrder(draw_titleblock, draw_terminals);
setTabOrder(draw_terminals, draw_colored_conductors);
// connexion du bouton permettant le choix du repertoire
connect(button_browse, SIGNAL(released()), this, SLOT(slot_chooseADirectory()));
// emission de signaux lors du changement de format et lors du changement de zone exportee
connect(format, SIGNAL(currentIndexChanged(int)), this, SIGNAL(formatChanged()));
connect(exported_content_choices, SIGNAL(buttonClicked(QAbstractButton *)), this, SIGNAL(exportedAreaChanged()));
connect(draw_grid, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_border, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_titleblock, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_terminals, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_colored_conductors, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
}