Skip to content

Commit

Permalink
Merge pull request #361 from plc-user/master
Browse files Browse the repository at this point in the history
element-editor: add mirror and flip for "text"
  • Loading branch information
scorpio810 authored Feb 18, 2025
2 parents a3bf2e2 + c2a2e5f commit 1af3c5b
Show file tree
Hide file tree
Showing 16 changed files with 68 additions and 34 deletions.
2 changes: 1 addition & 1 deletion sources/TerminalStrip/terminalstrip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ bool TerminalStrip::addTerminal(Element *terminal)
}
}

if (terminal->elementData().m_type != ElementData::Terminale) {
if (terminal->elementData().m_type != ElementData::Terminal) {
return false;
}

Expand Down
8 changes: 4 additions & 4 deletions sources/dataBase/projectdatabase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -458,8 +458,8 @@ void projectDataBase::populateElementTable()
for (auto diagram : m_project->diagrams())
{
const ElementProvider ep(diagram);
const auto elmt_vector = ep.find(ElementData::Simple | ElementData::Terminale | ElementData::Master | ElementData::Thumbnail);
//Insert all value into the database
const auto elmt_vector = ep.find(ElementData::Simple | ElementData::Terminal | ElementData::Master | ElementData::Thumbnail);
//Insert all values into the database
for (const auto &elmt : elmt_vector)
{
const auto elmt_data = elmt->elementData();
Expand Down Expand Up @@ -487,9 +487,9 @@ void projectDataBase::populateElementInfoTable()
for (const auto &diagram : m_project->diagrams())
{
const ElementProvider ep(diagram);
const auto elmt_vector = ep.find(ElementData::Simple | ElementData::Terminale | ElementData::Master | ElementData::Thumbnail);
const auto elmt_vector = ep.find(ElementData::Simple | ElementData::Terminal | ElementData::Master | ElementData::Thumbnail);

//Insert all value into the database
//Insert all values into the database
for (const auto &elmt : elmt_vector)
{
m_insert_element_info_query.bindValue(QStringLiteral(":uuid"), elmt->uuid().toString());
Expand Down
4 changes: 2 additions & 2 deletions sources/dataBase/ui/elementquerywidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ void ElementQueryWidget::setQuery(const QString &query)
if (ui->m_simple_cb->isChecked()) {
++c;
}
ui->m_terminal_cb->setChecked (str_type.contains(ElementData::typeToString(ElementData::Terminale)) ? true : false);
ui->m_terminal_cb->setChecked (str_type.contains(ElementData::typeToString(ElementData::Terminal)) ? true : false);
if (ui->m_terminal_cb->isChecked()) {
++c;
}
Expand Down Expand Up @@ -340,7 +340,7 @@ QString ElementQueryWidget::queryStr() const
bool b = false;
if (ui->m_terminal_cb->isChecked()) {
if (b) where +=" OR";
where += QStringLiteral(" element_type = '") += ElementData::typeToString(ElementData::Terminale) += "'";
where += QStringLiteral(" element_type = '") += ElementData::typeToString(ElementData::Terminal) += "'";
b = true;
}
if (ui->m_thumbnail_cb->isChecked()) {
Expand Down
2 changes: 1 addition & 1 deletion sources/diagramevent/diagrameventaddelement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ bool DiagramEventAddElement::buildElement()

/**
@brief DiagramEventAddElement::addElement
Add an element at the current pos en current rotation,
Add an element at the current pos and current rotation,
if project autoconductor option is enable, and the element can be wired, we do it.
*/
void DiagramEventAddElement::addElement()
Expand Down
4 changes: 2 additions & 2 deletions sources/editor/editorcommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@ void MirrorElementsCommand::redo()
foreach (auto *item, m_items) {
if (item->type() == PartText::Type) {
PartText* staticText = qgraphicsitem_cast<PartText*>(item);
//staticText->mirror();
staticText->mirror();
} else if (item->type() == PartDynamicTextField::Type) {
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
dyntext->mirror();
Expand Down Expand Up @@ -734,7 +734,7 @@ void FlipElementsCommand::redo()
foreach (auto *item, m_items) {
if (item->type() == PartText::Type) {
PartText* staticText = qgraphicsitem_cast<PartText*>(item);
//staticText->flip();
staticText->flip();
} else if (item->type() == PartDynamicTextField::Type) {
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
dyntext->flip();
Expand Down
5 changes: 2 additions & 3 deletions sources/editor/elementscene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -463,15 +463,14 @@ const QDomDocument ElementScene::toXml(bool all_parts)
auto type_ = m_element_data.m_type;
if (type_ == ElementData::Slave ||
type_ == ElementData::Master ||
type_ == ElementData::Terminale ||
type_ == ElementData::Thumbnail)
type_ == ElementData::Terminal)
{
root.appendChild(m_element_data.kindInfoToXml(xml_document));
}

if (type_ == ElementData::Simple ||
type_ == ElementData::Master ||
type_ == ElementData::Terminale ||
type_ == ElementData::Terminal ||
type_ == ElementData::Thumbnail)
{
QDomElement element_info = xml_document.createElement("elementInformations");
Expand Down
2 changes: 1 addition & 1 deletion sources/editor/graphicspart/partdynamictextfield.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ void PartDynamicTextField::fromXml(const QDomElement &dom_elmt) {
setFont(font_);
}
else if (dom_elmt.hasAttribute("font_size")) {
// plc-user: for convenience - to support font-size from old 'input' ?")
// to support font-size from old 'input'
setFont(QETApp::dynamicTextsItemFont(dom_elmt.attribute("font_size", QString::number(9)).toInt()));
}
else {
Expand Down
33 changes: 33 additions & 0 deletions sources/editor/graphicspart/parttext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,39 @@ void PartText::setRotation(qreal angle) {
setPos(QTransform().rotate(angle).map(pos()));
}

void PartText::mirror() {
// at first: rotate the text:
QGraphicsObject::setRotation(QET::correctAngle((360-rotation()), true));
// then see, where we need to re-position depending on text, font ...
QFontMetrics qfm(font());
qreal textwidth = qfm.horizontalAdvance(toPlainText());
// ... and angle!!!
qreal rot = qRound(QET::correctAngle(rotation(), true));
qreal c = qCos(qDegreesToRadians(rot));
qreal s = qSin(qDegreesToRadians(rot));
// Now: Move!
qreal x = (-1) * pos().x() - c * (textwidth);
qreal y = pos().y() - s * (textwidth);
setPos(x, y);
}

void PartText::flip() {
// at first: rotate the text:
QGraphicsObject::setRotation(QET::correctAngle((360-rotation()), true));
// then see, where we need to re-position depending on text, font ...
QFontMetrics qfm(font());
qreal textheight = realSize() - qfm.descent();
// ... and angle!!!
qreal rot = qRound(QET::correctAngle(rotation(), true));
qreal c = qCos(qDegreesToRadians(rot));
qreal s = qSin(qDegreesToRadians(rot));
// Now: Move!
qreal x = pos().x() - s * (textheight);
qreal y = (-1) * pos().y() + c * (textheight);
setPos(x, y);
}


/**
Importe les proprietes d'un texte statique depuis un element XML
@param xml_element Element XML a lire
Expand Down
2 changes: 2 additions & 0 deletions sources/editor/graphicspart/parttext.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ class PartText : public QGraphicsTextItem, public CustomElementPart {
void fromXml(const QDomElement &) override;
const QDomElement toXml(QDomDocument &) const override;
void setRotation(qreal angle);
void mirror();
void flip();
bool isUseless() const override;
QRectF sceneGeometricRect() const override;
void startUserTransformation(const QRectF &) override;
Expand Down
10 changes: 5 additions & 5 deletions sources/editor/ui/elementpropertieseditorwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ void ElementPropertiesEditorWidget::upDateInterface()
ui->m_master_type_cb->setCurrentIndex(
ui->m_master_type_cb->findData (
m_data.m_master_type));
} else if (m_data.m_type == ElementData::Terminale) {
} else if (m_data.m_type == ElementData::Terminal) {
ui->m_terminal_type_cb->setCurrentIndex(
ui->m_terminal_type_cb->findData(
m_data.m_terminal_type));
Expand All @@ -121,7 +121,7 @@ void ElementPropertiesEditorWidget::setUpInterface()
ui->m_base_type_cb->addItem (tr("Esclave"), ElementData::Slave);
ui->m_base_type_cb->addItem (tr("Renvoi de folio suivant"), ElementData::NextReport);
ui->m_base_type_cb->addItem (tr("Renvoi de folio précédent"), ElementData::PreviousReport);
ui->m_base_type_cb->addItem (tr("Bornier"), ElementData::Terminale);
ui->m_base_type_cb->addItem (tr("Bornier"), ElementData::Terminal);
ui->m_base_type_cb->addItem (tr("Vignette"), ElementData::Thumbnail);

// Slave option
Expand Down Expand Up @@ -181,7 +181,7 @@ void ElementPropertiesEditorWidget::updateTree()
case ElementData::Slave:
ui->m_tree->setDisabled(true);
break;
case ElementData::Terminale:
case ElementData::Terminal:
ui->m_tree->setEnabled(true);
break;
default:
Expand Down Expand Up @@ -227,7 +227,7 @@ void ElementPropertiesEditorWidget::on_m_buttonBox_accepted()
else if (m_data.m_type == ElementData::Master) {
m_data.m_master_type = ui->m_master_type_cb->currentData().value<ElementData::MasterType>();
}
else if (m_data.m_type == ElementData::Terminale)
else if (m_data.m_type == ElementData::Terminal)
{
m_data.m_terminal_type = ui->m_terminal_type_cb->currentData().value<ElementData::TerminalType>();
m_data.m_terminal_function = ui->m_terminal_func_cb->currentData().value<ElementData::TerminalFunction>();
Expand Down Expand Up @@ -260,7 +260,7 @@ void ElementPropertiesEditorWidget::on_m_base_type_cb_currentIndexChanged(int in
slave = true;
else if (type_ == ElementData::Master)
master = true;
else if (type_ == ElementData::Terminale)
else if (type_ == ElementData::Terminal)
terminal = true;

ui->m_slave_gb->setVisible(slave);
Expand Down
2 changes: 1 addition & 1 deletion sources/elementprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ QVector<TerminalElement *> ElementProvider::freeTerminal() const

for (const auto element : elmt_list)
{
if (element->elementData().m_type == ElementData::Terminale)
if (element->elementData().m_type == ElementData::Terminal)
{
const auto te{static_cast<TerminalElement *>(element)};
if (!te->parentTerminalStrip()) {
Expand Down
12 changes: 6 additions & 6 deletions sources/properties/elementdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ QDomElement ElementData::kindInfoToXml(QDomDocument &document)

returned_elmt.appendChild(xml_count);
}
else if (m_type == ElementData::Terminale)
else if (m_type == ElementData::Terminal)
{
//type
auto xml_type = document.createElement(QStringLiteral("kindInformation"));
Expand Down Expand Up @@ -233,7 +233,7 @@ bool ElementData::operator==(const ElementData &data) const
return false;
}
}
else if (data.m_type == ElementData::Terminale) {
else if (data.m_type == ElementData::Terminal) {
//Check terminal type or overrided terminal type
if (data.m_terminal_type_is_override != m_terminal_type_is_override) {
return false;
Expand Down Expand Up @@ -309,7 +309,7 @@ QString ElementData::typeToString(ElementData::Type type)
return QStringLiteral("master");
case ElementData::Slave :
return QStringLiteral("slave");
case ElementData::Terminale :
case ElementData::Terminal :
return QStringLiteral("terminal");
case ElementData::Thumbnail:
return QStringLiteral("thumbnail");
Expand All @@ -333,7 +333,7 @@ ElementData::Type ElementData::typeFromString(const QString &string)
} else if (string == QLatin1String("slave")) {
return ElementData::Slave;
} else if (string == QLatin1String("terminal")) {
return ElementData::Terminale;
return ElementData::Terminal;
} else if (string == QLatin1String("thumbnail")) {
return ElementData::Thumbnail;
}
Expand Down Expand Up @@ -548,7 +548,7 @@ void ElementData::kindInfoFromXml(const QDomElement &xml_element)
{
if (m_type == ElementData::Master ||
m_type == ElementData::Slave ||
m_type == ElementData::Terminale)
m_type == ElementData::Terminal)
{
auto xml_kind = xml_element.firstChildElement(QStringLiteral("kindInformations"));
for (const auto &dom_elmt : QETXML::findInDomElement(xml_kind, QStringLiteral("kindInformation")))
Expand All @@ -571,7 +571,7 @@ void ElementData::kindInfoFromXml(const QDomElement &xml_element)
m_contact_count = dom_elmt.text().toInt();
}
}
else if (m_type == ElementData::Terminale) {
else if (m_type == ElementData::Terminal) {
if (name == QLatin1String("type")) {
m_terminal_type = terminalTypeFromString(dom_elmt.text());
} else if (name == QLatin1String("function")) {
Expand Down
2 changes: 1 addition & 1 deletion sources/properties/elementdata.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class ElementData : public PropertiesInterface
AllReport = 6,
Master = 8,
Slave = 16,
Terminale = 32,
Terminal = 32,
Thumbnail = 64};
Q_ENUM(Type)
Q_DECLARE_FLAGS(Types, Type)
Expand Down
4 changes: 2 additions & 2 deletions sources/qetdiagrameditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -585,12 +585,12 @@ void QETDiagramEditor::setUpActions()
connect(&m_row_column_actions_group, &QActionGroup::triggered, this, &QETDiagramEditor::rowColumnGroupTriggered);

//Selections Actions (related to a selected item)
m_delete_selection = m_selection_actions_group.addAction( QET::Icons::EditDelete, tr("Supprimer") );
m_delete_selection = m_selection_actions_group.addAction( QET::Icons::EditDelete, tr("Supprimer") );
m_rotate_selection = m_selection_actions_group.addAction( QET::Icons::TransformRotate, tr("Pivoter") );
m_rotate_texts = m_selection_actions_group.addAction( QET::Icons::ObjectRotateRight, tr("Orienter les textes") );
m_find_element = m_selection_actions_group.addAction( QET::Icons::ZoomDraw, tr("Retrouver dans le panel") );
m_edit_selection = m_selection_actions_group.addAction( QET::Icons::ElementEdit, tr("Éditer l'item sélectionné") );
m_group_selected_texts = m_selection_actions_group.addAction(QET::Icons::textGroup, tr("Grouper les textes sélectionnés"));
m_group_selected_texts = m_selection_actions_group.addAction( QET::Icons::textGroup, tr("Grouper les textes sélectionnés"));

m_delete_selection->setShortcut(Qt::Key_Delete);
m_rotate_selection->setShortcut(Qt::Key_Space);
Expand Down
8 changes: 4 additions & 4 deletions sources/qetgraphicsitem/element.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -632,8 +632,8 @@ DynamicElementTextItem *Element::parseDynamicText(
const QDomElement &dom_element)
{
DynamicElementTextItem *deti = new DynamicElementTextItem(this);
//Because the xml description of a .elmt file is the same as how a dynamic text field is save to xml in a .qet file
//wa call fromXml, we just change the tagg name (.elmt = dynamic_text, .qet = dynamic_elmt_text)
//Because the xml description of a .elmt file is the same as how a dynamic text field is saved to xml in a .qet file
//we call fromXml, we just change the tagg name (.elmt = dynamic_text, .qet = dynamic_elmt_text)
//and the uuid (because the uuid, is the uuid of the description and not the uuid of instantiated dynamic text field)

QDomElement dom(dom_element.cloneNode(true).toElement());
Expand Down Expand Up @@ -845,7 +845,7 @@ bool Element::fromXml(QDomElement &e,
QStringLiteral("elementInformation"));

//Load override properties (For now, only used when the element is a terminal)
if (m_data.m_type == ElementData::Terminale)
if (m_data.m_type == ElementData::Terminal)
{

auto elmt_type_list = QETXML::subChild(e, QStringLiteral("properties"), QStringLiteral("element_type"));
Expand Down Expand Up @@ -976,7 +976,7 @@ QDomElement Element::toXml(
}

//Save override properties (For now, only used when the element is a terminal)
if (m_data.m_type == ElementData::Terminale)
if (m_data.m_type == ElementData::Terminal)
{
QDomElement properties = document.createElement(QStringLiteral("properties"));
QDomElement element_type = document.createElement(QStringLiteral("element_type"));
Expand Down
2 changes: 1 addition & 1 deletion sources/ui/elementinfowidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ void ElementInfoWidget::disableLiveEdit()
void ElementInfoWidget::buildInterface()
{
QStringList keys;
if (m_element.data()->elementData().m_type == ElementData::Terminale) {
if (m_element.data()->elementData().m_type == ElementData::Terminal) {
keys = QETInformation::terminalElementInfoKeys();
} else {
keys = QETInformation::elementInfoKeys();
Expand Down

0 comments on commit 1af3c5b

Please sign in to comment.