mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-23 02:10:52 +01:00
TitleBlockPropertiesWidget: replace widget made with c++ by widget made with ui file
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3204 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
284
sources/ui/titleblockpropertieswidget.cpp
Normal file
284
sources/ui/titleblockpropertieswidget.cpp
Normal file
@@ -0,0 +1,284 @@
|
||||
/*
|
||||
Copyright 2006-2014 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 "titleblockpropertieswidget.h"
|
||||
#include "ui_titleblockpropertieswidget.h"
|
||||
#include "templatescollection.h"
|
||||
#include "qeticons.h"
|
||||
#include "titleblocktemplate.h"
|
||||
#include <QMenu>
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::TitleBlockPropertiesWidget
|
||||
* default constructor
|
||||
* @param titleblock properties to edit
|
||||
* @param current_date if true, display the radio button "current date"
|
||||
* @param parent parent widget
|
||||
*/
|
||||
TitleBlockPropertiesWidget::TitleBlockPropertiesWidget(const TitleBlockProperties &titleblock, bool current_date, QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::TitleBlockPropertiesWidget),
|
||||
m_tbt_collection(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
initDialog(current_date);
|
||||
setProperties(titleblock);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::~TitleBlockPropertiesWidget
|
||||
* destructor
|
||||
*/
|
||||
TitleBlockPropertiesWidget::~TitleBlockPropertiesWidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::setProperties
|
||||
* @param properties
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::setProperties(const TitleBlockProperties &properties) {
|
||||
ui -> m_title_le -> setText (properties.title);
|
||||
ui -> m_author_le -> setText (properties.author);
|
||||
ui -> m_file_le -> setText (properties.filename);
|
||||
ui -> m_folio_le -> setText (properties.folio);
|
||||
|
||||
//About date
|
||||
on_m_fixed_date_rb_toggled(ui->m_fixed_date_rb->isChecked());
|
||||
ui -> m_date_edit -> setDate(QDate::currentDate());
|
||||
|
||||
if (ui -> m_current_date_rb -> isVisible()) {
|
||||
if(properties.useDate == TitleBlockProperties::CurrentDate)
|
||||
ui -> m_current_date_rb -> setChecked(true);
|
||||
else {
|
||||
if (properties.date.isNull())
|
||||
ui -> m_no_date_rb -> setChecked(true);
|
||||
else {
|
||||
ui -> m_fixed_date_rb -> setChecked(true);
|
||||
ui -> m_date_edit -> setDate(properties.date);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (properties.useDate == TitleBlockProperties::CurrentDate)
|
||||
ui -> m_fixed_date_rb ->setChecked(true);
|
||||
else {
|
||||
if (properties.date.isNull())
|
||||
ui -> m_no_date_rb -> setChecked(true);
|
||||
else {
|
||||
ui -> m_fixed_date_rb -> setChecked(true);
|
||||
ui -> m_date_edit -> setDate(properties.date);
|
||||
}
|
||||
}
|
||||
} //About date
|
||||
|
||||
if (!properties.template_name.isEmpty()) {
|
||||
int matching_index = ui -> m_tbt_cb -> findData (properties.template_name);
|
||||
if (matching_index != -1)
|
||||
ui -> m_tbt_cb -> setCurrentIndex(matching_index);
|
||||
}
|
||||
|
||||
m_dcw -> setContext(properties.context);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::properties
|
||||
* @return the edited properties
|
||||
*/
|
||||
TitleBlockProperties TitleBlockPropertiesWidget::properties() const {
|
||||
TitleBlockProperties prop;
|
||||
prop.title = ui -> m_title_le -> text();
|
||||
prop.author = ui -> m_author_le -> text();
|
||||
prop.filename = ui -> m_file_le -> text();
|
||||
prop.folio = ui -> m_folio_le -> text();
|
||||
|
||||
if (ui->m_no_date_rb->isChecked()) {
|
||||
prop.useDate = TitleBlockProperties::UseDateValue;
|
||||
prop.date = QDate();
|
||||
}
|
||||
else if (ui -> m_fixed_date_rb -> isChecked()) {
|
||||
prop.useDate = TitleBlockProperties::UseDateValue;
|
||||
prop.date = ui->m_date_edit->date();
|
||||
}
|
||||
else if (ui->m_current_date_rb->isVisible() && ui->m_current_date_rb->isChecked()) {
|
||||
prop.useDate = TitleBlockProperties::CurrentDate;
|
||||
prop.date = QDate::currentDate();
|
||||
}
|
||||
|
||||
if (!currentTitleBlockTemplateName().isEmpty())
|
||||
prop.template_name = currentTitleBlockTemplateName();
|
||||
|
||||
prop.context = m_dcw -> context();
|
||||
|
||||
return prop;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::setTitleBlockTemplatesVisible
|
||||
* if true, title block template combo box and menu button is visible
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::setTitleBlockTemplatesVisible(const bool &visible) {
|
||||
ui -> m_tbt_label -> setVisible(visible);
|
||||
ui -> m_tbt_cb -> setVisible(visible);
|
||||
ui -> m_tbt_pb -> setVisible(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::setReadOnly
|
||||
* if true, this widget is disable
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::setReadOnly(const bool &ro) {
|
||||
ui->m_tbt_gb->setDisabled(ro);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::currentTitleBlockTemplateName
|
||||
* @return the current title block name
|
||||
*/
|
||||
QString TitleBlockPropertiesWidget::currentTitleBlockTemplateName() const {
|
||||
int index = ui -> m_tbt_cb -> currentIndex();
|
||||
if(index != -1)
|
||||
return (ui -> m_tbt_cb -> itemData(index).toString());
|
||||
return QString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::setCurrentTitleBlockTemplateName
|
||||
* set the current title block "name", if "name" doesn't match, this method do nothing
|
||||
* @param name
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::setCurrentTitleBlockTemplateName (const QString &name) {
|
||||
int index = ui -> m_tbt_cb -> findData(name);
|
||||
if (index != -1)
|
||||
ui -> m_tbt_cb -> setCurrentIndex(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::setTitleBlockTemplatesCollection
|
||||
* Set the collection of title block
|
||||
* @param tbt_collection
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::setTitleBlockTemplatesCollection(TitleBlockTemplatesCollection *tbt_collection) {
|
||||
if (!tbt_collection) return;
|
||||
if (m_tbt_collection && tbt_collection != m_tbt_collection) {
|
||||
// forget any connection with the previous collection
|
||||
disconnect(m_tbt_collection, 0, this, 0);
|
||||
}
|
||||
|
||||
m_tbt_collection = tbt_collection;
|
||||
updateTemplateList();
|
||||
connect(m_tbt_collection, SIGNAL(changed(TitleBlockTemplatesCollection*,QString)), this, SLOT(updateTemplateList()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::setTitleBlockTemplatesList
|
||||
* Set the list of title block used.
|
||||
* Fill the combo box of title box with each name of title block.
|
||||
* @param tbt
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::setTitleBlockTemplatesList(const QStringList &tbt) {
|
||||
ui -> m_tbt_cb ->clear();
|
||||
ui -> m_tbt_cb -> addItem(QET::Icons::TitleBlock, tr("Mod\350le par d\351faut"));
|
||||
foreach (QString tbt_name, tbt) {
|
||||
ui -> m_tbt_cb -> addItem(QET::Icons::TitleBlock, tbt_name, tbt_name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::initDialog
|
||||
* Init this dialog
|
||||
* @param current_date true for display current date radio button
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::initDialog(const bool ¤t_date) {
|
||||
m_dcw = new DiagramContextWidget();
|
||||
ui -> m_tab2_vlayout -> addWidget(m_dcw);
|
||||
|
||||
setTitleBlockTemplatesVisible(false);
|
||||
ui -> m_current_date_rb -> setVisible(current_date);
|
||||
|
||||
m_tbt_edit = new QAction(tr("\311diter ce mod\350le", "menu entry"), this);
|
||||
m_tbt_duplicate = new QAction(tr("Dupliquer et editer ce mod\350le", "menu entry"), this);
|
||||
|
||||
connect(m_tbt_edit, SIGNAL(triggered()), this, SLOT(editCurrentTitleBlockTemplate()));
|
||||
connect(m_tbt_duplicate, SIGNAL(triggered()), this, SLOT(duplicateCurrentTitleBlockTemplate()));
|
||||
|
||||
m_tbt_menu = new QMenu(tr("Title block templates actions"));
|
||||
m_tbt_menu -> addAction(m_tbt_edit);
|
||||
m_tbt_menu -> addAction(m_tbt_duplicate);
|
||||
ui -> m_tbt_pb -> setMenu(m_tbt_menu);
|
||||
|
||||
connect(ui->m_tbt_cb, SIGNAL(currentIndexChanged(QString)), this, SLOT(changeCurrentTitleBlockTemplate(QString)));
|
||||
}
|
||||
|
||||
void TitleBlockPropertiesWidget::editCurrentTitleBlockTemplate() {
|
||||
emit(editTitleBlockTemplate(currentTitleBlockTemplateName(), false));
|
||||
}
|
||||
|
||||
void TitleBlockPropertiesWidget::duplicateCurrentTitleBlockTemplate() {
|
||||
emit(editTitleBlockTemplate(currentTitleBlockTemplateName(), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::updateTemplateList
|
||||
* Update the title block template list
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::updateTemplateList() {
|
||||
if (!m_tbt_collection) return;
|
||||
|
||||
QString current_template_name = currentTitleBlockTemplateName();
|
||||
setTitleBlockTemplatesList(m_tbt_collection -> templates());
|
||||
setCurrentTitleBlockTemplateName(current_template_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::changeCurrentTitleBlockTemplate
|
||||
* Load the additionnal field of title block "text"
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::changeCurrentTitleBlockTemplate(QString name) {
|
||||
// delete all entry
|
||||
m_dcw -> clear();
|
||||
// get template
|
||||
TitleBlockTemplate *tpl = m_tbt_collection -> getTemplate( name );
|
||||
if(tpl != 0) {
|
||||
// get all template fields
|
||||
QStringList fields = tpl -> listOfVariables();
|
||||
// set fields to additional_fields_ widget
|
||||
DiagramContext templateContext;
|
||||
for(int i =0; i<fields.count(); i++)
|
||||
templateContext.addValue(fields.at(i), "");
|
||||
m_dcw->setContext(templateContext);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::on_m_date_now_pb_clicked
|
||||
* Set the date to current date
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::on_m_date_now_pb_clicked() {
|
||||
ui -> m_date_edit -> setDate(QDate::currentDate());
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockPropertiesWidget::on_m_fixed_date_rb_toggled
|
||||
* Disable widget related to fixed date, if radio button
|
||||
* current date isn't checked
|
||||
*/
|
||||
void TitleBlockPropertiesWidget::on_m_fixed_date_rb_toggled(bool checked) {
|
||||
ui -> m_date_edit -> setEnabled(checked);
|
||||
ui -> m_date_now_pb -> setEnabled(checked);
|
||||
}
|
||||
Reference in New Issue
Block a user