/* Copyright 2006-2021 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 . */ #include "exportpropertieswidget.h" #include /** @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 */ ExportPropertiesWidget::~ExportPropertiesWidget() { } /** @brief ExportPropertiesWidget::exportProperties @return les parametres d'export definis via le widget */ 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); } } /** @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. @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 */ 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 */ 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); export_border = new QRadioButton(tr("Exporter entièrement le folio"), groupbox_options); optionshlayout -> addWidget(export_border, 0, 0); exported_content_choices -> addButton(export_border); 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())); }