mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 20:50:34 +01:00
-Cette ligne, et les suivantes ci-dessous, seront ignorées-- M sources/aboutqet.cpp M sources/bordertitleblock.cpp M sources/conductorproperties.h M sources/configdialog.cpp M sources/configpages.cpp M sources/configpages.h M sources/createdxf.h M sources/diagram.cpp M sources/diagram.h M sources/diagramcommands.cpp M sources/diagramcommands.h M sources/diagramprintdialog.cpp M sources/diagramprintdialog.h M sources/diagramschooser.cpp M sources/diagramschooser.h M sources/diagramview.cpp M sources/diagramview.h M sources/dvevent/dveventaddimage.cpp M sources/dvevent/dveventaddshape.cpp M sources/editor/arceditor.cpp M sources/editor/arceditor.h M sources/editor/editorcommands.cpp M sources/editor/editorcommands.h M sources/editor/elementitemeditor.h M sources/editor/elementprimitivedecorator.cpp M sources/editor/elementscene.cpp M sources/editor/elementscene.h M sources/editor/elementview.cpp M sources/editor/ellipseeditor.cpp M sources/editor/ellipseeditor.h M sources/editor/esevent/eseventaddtext.cpp M sources/editor/esevent/eseventaddtextfield.cpp M sources/editor/esevent/eseventinterface.cpp M sources/editor/graphicspart/customelementpart.h M sources/editor/graphicspart/parttext.cpp M sources/editor/graphicspart/parttext.h M sources/editor/graphicspart/parttextfield.cpp M sources/editor/graphicspart/parttextfield.h M sources/editor/lineeditor.cpp M sources/editor/lineeditor.h M sources/editor/polygoneditor.cpp M sources/editor/qetelementeditor.cpp M sources/editor/qetelementeditor.h M sources/editor/rectangleeditor.cpp M sources/editor/rectangleeditor.h M sources/editor/styleeditor.cpp M sources/editor/styleeditor.h M sources/editor/terminaleditor.cpp M sources/editor/terminaleditor.h M sources/editor/texteditor.cpp M sources/editor/texteditor.h M sources/editor/textfieldeditor.cpp M sources/editor/textfieldeditor.h M sources/editor/ui/elementpropertieseditorwidget.cpp M sources/elementdefinition.cpp M sources/elementdeleter.cpp M sources/elementdeleter.h M sources/elementdialog.cpp M sources/elementscategorieslist.h M sources/elementscategorieswidget.cpp M sources/elementscategorieswidget.h M sources/elementscategory.cpp M sources/elementscategorydeleter.cpp M sources/elementscategorydeleter.h M sources/elementscategoryeditor.cpp M sources/elementscategoryeditor.h M sources/elementscollection.cpp M sources/elementscollectioncache.cpp M sources/elementspanel.cpp M sources/elementspanel.h M sources/elementspanelwidget.cpp M sources/elementspanelwidget.h M sources/elementtextsmover.h M sources/exportdialog.cpp M sources/exportdialog.h M sources/exportproperties.cpp M sources/exportpropertieswidget.cpp M sources/exportpropertieswidget.h M sources/genericpanel.cpp M sources/integrationmoveelementshandler.cpp M sources/integrationmoveelementshandler.h M sources/interactivemoveelementshandler.cpp M sources/nameslistwidget.cpp M sources/nameslistwidget.h M sources/newelementwizard.cpp M sources/newelementwizard.h M sources/nomenclature.cpp M sources/nomenclature.h M sources/projectconfigpages.cpp M sources/projectview.cpp M sources/projectview.h M sources/qet.cpp M sources/qetapp.cpp M sources/qetapp.h M sources/qetdiagrameditor.cpp M sources/qetdiagrameditor.h M sources/qetgraphicsitem/conductor.cpp M sources/qetgraphicsitem/conductortextitem.cpp M sources/qetgraphicsitem/customelement.cpp M sources/qetgraphicsitem/diagramimageitem.cpp M sources/qetgraphicsitem/diagramtextitem.cpp M sources/qetgraphicsitem/diagramtextitem.h M sources/qetgraphicsitem/element.cpp M sources/qetgraphicsitem/ghostelement.cpp M sources/qetgraphicsitem/qetshapeitem.cpp M sources/qetgraphicsitem/terminal.cpp M sources/qetgraphicsitem/terminal.h M sources/qeticons.cpp M sources/qeticons.h M sources/qetmainwindow.cpp M sources/qetmessagebox.cpp M sources/qetmessagebox.h M sources/qetprintpreviewdialog.cpp M sources/qetprintpreviewdialog.h M sources/qetproject.cpp M sources/qetsingleapplication.cpp M sources/qettabbar.h M sources/qfilenameedit.cpp M sources/qtextorientationspinboxwidget.cpp M sources/qtextorientationspinboxwidget.h M sources/qtextorientationwidget.cpp M sources/qtextorientationwidget.h M sources/richtext/richtexteditor.cpp M sources/richtext/richtexteditor_p.h M sources/richtext/ui_addlinkdialog.h M sources/titleblock/dimensionwidget.h M sources/titleblock/gridlayoutanimation.h M sources/titleblock/helpercell.h M sources/titleblock/integrationmovetemplateshandler.cpp M sources/titleblock/integrationmovetemplateshandler.h M sources/titleblock/qettemplateeditor.cpp M sources/titleblock/qettemplateeditor.h M sources/titleblock/templatecellsset.h M sources/titleblock/templatecellwidget.cpp M sources/titleblock/templatecellwidget.h M sources/titleblock/templatecommands.cpp M sources/titleblock/templatedeleter.cpp M sources/titleblock/templatedeleter.h M sources/titleblock/templatelocationchooser.cpp M sources/titleblock/templatelocationchooser.h M sources/titleblock/templatelocationsaver.cpp M sources/titleblock/templatelocationsaver.h M sources/titleblock/templatelogomanager.cpp M sources/titleblock/templatelogomanager.h M sources/titleblock/templateview.cpp M sources/titleblock/templatevisualcell.h M sources/titleblockcell.cpp M sources/titleblocktemplate.cpp M sources/treecoloranimation.h M sources/ui/conductorpropertieswidget.cpp M sources/ui/diagrampropertiesdialog.cpp M sources/ui/diagramselection.cpp M sources/ui/dialogautonum.cpp M sources/ui/dialogwaiting.cpp M sources/ui/elementpropertieswidget.cpp M sources/ui/elementselectorwidget.cpp M sources/ui/linksingleelementwidget.cpp M sources/ui/masterpropertieswidget.cpp M sources/ui/potentialtextsdialog.cpp M sources/ui/projectpropertiesdialog.cpp M sources/ui/selectautonumw.cpp M sources/ui/titleblockpropertieswidget.cpp M sources/ui/xrefpropertieswidget.cpp M sources/undocommand/changeelementinformationcommand.cpp git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3783 bfdf4180-ca20-0410-9c96-a3a8aa849046
302 lines
11 KiB
C++
302 lines
11 KiB
C++
/*
|
|
Copyright 2006-2015 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 "styleeditor.h"
|
|
#include "customelementgraphicpart.h"
|
|
|
|
/**
|
|
Constructeur
|
|
@param editor L'editeur d'element concerne
|
|
@param p La partie a editer
|
|
@param parent le Widget parent
|
|
*/
|
|
StyleEditor::StyleEditor(QETElementEditor *editor, CustomElementGraphicPart *p, QWidget *parent) :
|
|
ElementItemEditor(editor, parent),
|
|
part(p)
|
|
{
|
|
// couleur
|
|
outline_color = new QComboBox(this);
|
|
outline_color -> addItem(tr("Noir", "element part color"), CustomElementGraphicPart::BlackColor);
|
|
outline_color -> addItem(tr("Blanc", "element part color"), CustomElementGraphicPart::WhiteColor);
|
|
outline_color -> addItem(tr("Vert", "element part color"), CustomElementGraphicPart::GreenColor);
|
|
outline_color -> addItem(tr("Rouge", "element part color"), CustomElementGraphicPart::RedColor);
|
|
outline_color -> addItem(tr("Bleu", "element part color"), CustomElementGraphicPart::BlueColor);
|
|
|
|
// style
|
|
line_style = new QComboBox(this);
|
|
line_style -> addItem(tr("Normal", "element part line style"), CustomElementGraphicPart::NormalStyle);
|
|
line_style -> addItem(tr("Tiret", "element part line style"), CustomElementGraphicPart::DashedStyle);
|
|
line_style -> addItem(tr("Pointillé", "element part line style"), CustomElementGraphicPart::DottedStyle);
|
|
line_style -> addItem(tr("Traits et points", "element part line style"), CustomElementGraphicPart::DashdottedStyle);
|
|
//normal_style -> setChecked(true);
|
|
|
|
// epaisseur
|
|
size_weight = new QComboBox(this);
|
|
size_weight -> addItem(tr("Nulle", "element part weight"), CustomElementGraphicPart::NoneWeight);
|
|
size_weight -> addItem(tr("Fine", "element part weight"), CustomElementGraphicPart::ThinWeight);
|
|
size_weight -> addItem(tr("Normale", "element part weight"), CustomElementGraphicPart::NormalWeight);
|
|
size_weight -> addItem(tr("Forte", "element part weight"), CustomElementGraphicPart::UltraWeight);
|
|
size_weight -> addItem(tr("Élevé", "element part weight"), CustomElementGraphicPart::BigWeight);
|
|
|
|
// remplissage
|
|
filling_color = new QComboBox (this);
|
|
filling_color -> addItem(tr("Aucun", "element part filling"), CustomElementGraphicPart::NoneFilling);
|
|
filling_color -> addItem(tr("Noir", "element part filling"), CustomElementGraphicPart::BlackFilling);
|
|
filling_color -> addItem(tr("Blanc", "element part filling"), CustomElementGraphicPart::WhiteFilling);
|
|
filling_color -> addItem(tr("Vert", "element part filling"), CustomElementGraphicPart::GreenFilling);
|
|
filling_color -> addItem(tr("Rouge", "element part filling"), CustomElementGraphicPart::RedFilling);
|
|
filling_color -> addItem(tr("Bleu", "element part filling"), CustomElementGraphicPart::BlueFilling);
|
|
|
|
// antialiasing
|
|
antialiasing = new QCheckBox(tr("Antialiasing"));
|
|
|
|
updateForm();
|
|
|
|
main_layout = new QVBoxLayout();
|
|
main_layout -> setMargin(0);
|
|
|
|
main_layout -> addWidget(new QLabel("<u>" + tr("Apparence :") + "</u> "));
|
|
|
|
QHBoxLayout *color_layout = new QHBoxLayout();
|
|
color_layout -> addWidget(new QLabel(tr("Contour :")), 0, Qt::AlignRight);
|
|
color_layout -> addWidget(outline_color);
|
|
color_layout -> addSpacing(10);
|
|
color_layout -> addWidget(new QLabel(tr("Remplissage :")), 0, Qt::AlignRight);
|
|
color_layout -> addWidget(filling_color);
|
|
main_layout -> addLayout(color_layout);
|
|
|
|
QHBoxLayout *style_layout = new QHBoxLayout();
|
|
style_layout -> addWidget(new QLabel(tr("Style : ")), 0, Qt::AlignRight);
|
|
style_layout -> addWidget(line_style);
|
|
style_layout -> addSpacing(10);
|
|
style_layout -> addWidget(new QLabel(tr("Épaisseur : ")), 0, Qt::AlignRight);
|
|
style_layout -> addWidget(size_weight);
|
|
main_layout -> addLayout(style_layout);
|
|
|
|
main_layout -> addWidget(antialiasing);
|
|
|
|
main_layout -> addSpacing(10);
|
|
main_layout -> addWidget(new QLabel("<u>" + tr("Géométrie :") + "</u> "));
|
|
main_layout -> addStretch();
|
|
setLayout(main_layout);
|
|
}
|
|
|
|
/// Destructeur
|
|
StyleEditor::~StyleEditor() {
|
|
}
|
|
/**
|
|
* @brief StyleEditor::updatePart
|
|
* Update the part from the content of the form
|
|
*/
|
|
void StyleEditor::updatePart() {
|
|
if (!part) return;
|
|
part->setProperty("antialias", antialiasing -> isChecked());
|
|
part->setProperty("color", outline_color -> itemData(outline_color -> currentIndex()));
|
|
part->setProperty("line_style", line_style -> itemData(line_style -> currentIndex()));
|
|
part->setProperty("line_weight", size_weight -> itemData(size_weight -> currentIndex()));
|
|
part->setProperty("filling", filling_color -> itemData(filling_color -> currentIndex()));
|
|
}
|
|
|
|
/// Update antialiasing with undo command
|
|
void StyleEditor::updatePartAntialiasing()
|
|
{
|
|
if (part)
|
|
addChangePartCommand(tr("style antialiasing"), part, "antialias", antialiasing -> isChecked());
|
|
else if (!m_part_list.isEmpty())
|
|
addChangePartCommand(tr("style antialiasing"), m_cep_list, "antialias", antialiasing -> isChecked());
|
|
}
|
|
|
|
/// Update color with undo command
|
|
void StyleEditor::updatePartColor()
|
|
{
|
|
if (part)
|
|
addChangePartCommand(tr("style couleur"), part, "color", outline_color->itemData(outline_color -> currentIndex()));
|
|
else if (!m_part_list.isEmpty())
|
|
addChangePartCommand(tr("style couleur"), m_cep_list, "color", outline_color->itemData(outline_color -> currentIndex()));
|
|
}
|
|
|
|
/// Update style with undo command
|
|
void StyleEditor::updatePartLineStyle()
|
|
{
|
|
if (part)
|
|
addChangePartCommand(tr("style ligne"), part, "line_style", line_style->itemData(line_style -> currentIndex()));
|
|
else if (!m_part_list.isEmpty())
|
|
addChangePartCommand(tr("style ligne"), m_cep_list, "line_style", line_style->itemData(line_style -> currentIndex()));
|
|
}
|
|
|
|
/// Update weight with undo command
|
|
void StyleEditor::updatePartLineWeight()
|
|
{
|
|
if (part)
|
|
addChangePartCommand(tr("style epaisseur"), part, "line_weight", size_weight->itemData(size_weight -> currentIndex()));
|
|
else if (!m_part_list.isEmpty())
|
|
addChangePartCommand(tr("style epaisseur"), m_cep_list, "line_weight", size_weight->itemData(size_weight -> currentIndex()));
|
|
}
|
|
|
|
/// Update color filling with undo command
|
|
void StyleEditor::updatePartFilling()
|
|
{
|
|
if(part)
|
|
addChangePartCommand(tr("style remplissage"), part, "filling", filling_color->itemData(filling_color -> currentIndex()));
|
|
else if (!m_part_list.isEmpty())
|
|
addChangePartCommand(tr("style remplissage"), m_cep_list, "filling", filling_color->itemData(filling_color -> currentIndex()));
|
|
}
|
|
|
|
/**
|
|
* @brief StyleEditor::updateForm
|
|
* Update the edition form according to the value of edited part(s)
|
|
*/
|
|
void StyleEditor::updateForm()
|
|
{
|
|
if (!part && m_part_list.isEmpty()) return;
|
|
activeConnections(false);
|
|
|
|
if (part)
|
|
{
|
|
antialiasing -> setChecked(part -> antialiased());
|
|
outline_color -> setCurrentIndex(part -> color());
|
|
line_style -> setCurrentIndex(part -> lineStyle());
|
|
size_weight -> setCurrentIndex(part -> lineWeight());
|
|
filling_color -> setCurrentIndex(part -> filling());
|
|
}
|
|
else if (m_part_list.size())
|
|
{
|
|
CustomElementGraphicPart *first_part = m_part_list.first();
|
|
antialiasing -> setChecked(first_part -> antialiased());
|
|
outline_color -> setCurrentIndex(first_part -> color());
|
|
line_style -> setCurrentIndex(first_part -> lineStyle());
|
|
size_weight -> setCurrentIndex(first_part -> lineWeight());
|
|
filling_color -> setCurrentIndex(first_part -> filling());
|
|
|
|
foreach (CustomElementGraphicPart *cegp, m_part_list)
|
|
{
|
|
if (first_part -> antialiased() != cegp -> antialiased()) antialiasing -> setChecked(false);
|
|
if (first_part -> color() != cegp -> color()) outline_color -> setCurrentIndex(-1);
|
|
if (first_part -> lineStyle() != cegp -> lineStyle()) line_style -> setCurrentIndex(-1);
|
|
if (first_part -> lineWeight() != cegp -> lineWeight()) size_weight -> setCurrentIndex(-1);
|
|
if (first_part -> filling() != cegp -> filling()) filling_color -> setCurrentIndex(-1);
|
|
}
|
|
}
|
|
|
|
activeConnections(true);
|
|
}
|
|
|
|
/**
|
|
* @brief StyleEditor::setPart
|
|
* Set the part to edit by this editor.
|
|
* Note : editor can accept or refuse to edit a part
|
|
* @param new_part : part to edit
|
|
* @return true if editor accept to edit this CustomElementPart otherwise false
|
|
*/
|
|
bool StyleEditor::setPart(CustomElementPart *new_part) {
|
|
m_part_list.clear();
|
|
|
|
if (!new_part)
|
|
{
|
|
part = nullptr;
|
|
return(true);
|
|
}
|
|
|
|
if (CustomElementGraphicPart *part_graphic = dynamic_cast<CustomElementGraphicPart *>(new_part))
|
|
{
|
|
part = part_graphic;
|
|
updateForm();
|
|
return(true);
|
|
}
|
|
|
|
return(false);
|
|
}
|
|
|
|
/**
|
|
* @brief StyleEditor::setParts
|
|
* Set several parts to edit by this editor.
|
|
* Note : editor can accept or refuse to edit several parts.
|
|
* @param part_list
|
|
* @return true if every customeElementPart stored in part_list can
|
|
* be edited by this part editor, otherwise return false
|
|
* (see StyleEditor::isStyleEditable)
|
|
*/
|
|
bool StyleEditor::setParts(QList<CustomElementPart *> part_list)
|
|
{
|
|
if (part_list.isEmpty()) return false;
|
|
if (part_list.size() == 1) return setPart(part_list.first());
|
|
|
|
part = nullptr;
|
|
m_part_list.clear();
|
|
m_cep_list.clear();
|
|
|
|
if (!isStyleEditable(part_list)) return false;
|
|
|
|
foreach (CustomElementPart *cep, part_list)
|
|
{
|
|
if (CustomElementGraphicPart *cegp = dynamic_cast<CustomElementGraphicPart *>(cep))
|
|
m_part_list << cegp;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
foreach (CustomElementGraphicPart *cegp, m_part_list)
|
|
m_cep_list << cegp;
|
|
|
|
updateForm();
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
|
*/
|
|
CustomElementPart *StyleEditor::currentPart() const {
|
|
return(part);
|
|
}
|
|
|
|
/**
|
|
* @brief StyleEditor::isStyleEditable
|
|
* @param cep_list
|
|
* @return true if all of the content of cep_list can be edited by style editor, else return false.
|
|
*/
|
|
bool StyleEditor::isStyleEditable(QList<CustomElementPart *> cep_list)
|
|
{
|
|
QStringList str;
|
|
str << "arc" << "ellipse" << "line" << "polygon" << "rect";
|
|
|
|
foreach (CustomElementPart *cep, cep_list)
|
|
if (!str.contains(cep -> xmlName()))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
Active ou desactive les connexionx signaux/slots entre les widgets internes.
|
|
@param active true pour activer les connexions, false pour les desactiver
|
|
*/
|
|
void StyleEditor::activeConnections(bool active) {
|
|
if (active) {
|
|
connect (outline_color, SIGNAL(activated(int)), this, SLOT(updatePartColor()));
|
|
connect(line_style, SIGNAL(activated(int)), this, SLOT(updatePartLineStyle()));
|
|
connect(size_weight, SIGNAL(activated(int)), this, SLOT(updatePartLineWeight()));
|
|
connect(filling_color, SIGNAL(activated(int)), this, SLOT(updatePartFilling()));
|
|
connect(antialiasing, SIGNAL(stateChanged(int)), this, SLOT(updatePartAntialiasing()));
|
|
} else {
|
|
disconnect(outline_color, SIGNAL(activated(int)), this, SLOT(updatePartColor()));
|
|
disconnect(line_style, SIGNAL(activated(int)), this, SLOT(updatePartLineStyle()));
|
|
disconnect(size_weight, SIGNAL(activated(int)), this, SLOT(updatePartLineWeight()));
|
|
disconnect(filling_color, SIGNAL(activated(int)), this, SLOT(updatePartFilling()));
|
|
disconnect(antialiasing, SIGNAL(stateChanged(int)), this, SLOT(updatePartAntialiasing()));
|
|
}
|
|
}
|