20 #include <QStandardItem> 22 #include <QColorDialog> 23 #include <QModelIndex> 25 #include <QUndoCommand> 61 QStandardItemModel(parent),
101 QStandardItem *item = itemFromIndex(index);
104 while (item->parent())
105 item = item->parent();
124 QList <QStandardItem *> qsi_list;
129 QStandardItem *qsi =
new QStandardItem(deti->toPlainText());
130 qsi->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled |Qt::ItemIsDragEnabled);
135 QStandardItem *src =
new QStandardItem(
tr(
"Source du texte"));
136 src->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
141 else title =
tr(
"Texte composé");
142 QStandardItem *srca =
new QStandardItem(title);
143 srca->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
144 srca->setData(
textFrom, Qt::UserRole+1);
146 qsi_list << src << srca;
147 qsi->appendRow(qsi_list);
150 QStandardItem *usr =
new QStandardItem(
tr(
"Texte"));
151 usr->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
153 QStandardItem *usra =
new QStandardItem(deti->toPlainText());
154 usra->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
158 qsi_list << usr << usra;
159 qsi->appendRow(qsi_list);
162 QStandardItem *info =
new QStandardItem(
tr(
"Information"));
163 info->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
166 infoa->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
168 infoa->setData(deti->
infoName(), Qt::UserRole+2);
171 qsi_list << info << infoa;
172 qsi->appendRow(qsi_list);
175 QStandardItem *composite =
new QStandardItem(
tr(
"Texte composé"));
176 composite->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
181 QStandardItem *compositea =
new QStandardItem(deti->
compositeText().isEmpty() ?
182 tr(
"Mon texte composé") :
184 compositea->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
189 qsi_list << composite << compositea;
190 qsi->appendRow(qsi_list);
193 QStandardItem *
size =
new QStandardItem(
tr(
"Taille"));
194 size->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
196 QStandardItem *siza =
new QStandardItem();
197 siza->setData(deti->
font().pointSize(), Qt::EditRole);
199 siza->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
202 qsi_list <<
size << siza;
203 qsi->appendRow(qsi_list);
206 QStandardItem *
font =
new QStandardItem(
tr(
"Police"));
207 font->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
209 QStandardItem *fonta =
new QStandardItem();
210 fonta->setData(deti->
font().family(), Qt::EditRole);
212 fonta->setData(deti->
font(), Qt::UserRole+2);
213 fonta->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
216 qsi_list <<
font << fonta;
217 qsi->appendRow(qsi_list);
220 QStandardItem *
color =
new QStandardItem(
tr(
"Couleur"));
221 color->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
223 QStandardItem *colora =
new QStandardItem;
224 colora->setData(deti->
color(), Qt::ForegroundRole);
225 colora->setData(deti->
color(), Qt::EditRole);
227 colora->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
230 qsi_list <<
color << colora;
231 qsi->appendRow(qsi_list);
234 QStandardItem *
frame =
new QStandardItem(
tr(
"Cadre"));
235 frame->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
237 QStandardItem *frame_a =
new QStandardItem;
238 frame_a->setCheckable(
true);
239 frame_a->setCheckState(deti->
frame()? Qt::Checked : Qt::Unchecked);
241 frame_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable);
244 qsi_list <<
frame << frame_a;
245 qsi->appendRow(qsi_list);
248 QStandardItem *width =
new QStandardItem(
tr(
"Largeur"));
249 width->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
251 QStandardItem *width_a =
new QStandardItem;
252 width_a->setData(deti->
textWidth(), Qt::EditRole);
254 width_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
257 qsi_list << width << width_a;
258 qsi->appendRow(qsi_list);
263 QStandardItem *x_pos =
new QStandardItem(
tr(
"Position X"));
264 x_pos->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
266 QStandardItem *x_pos_a =
new QStandardItem;
267 x_pos_a->setData(deti->pos().x(), Qt::EditRole);
269 x_pos_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
272 qsi_list << x_pos << x_pos_a;
273 qsi->appendRow(qsi_list);
276 QStandardItem *y_pos =
new QStandardItem(
tr(
"Position Y"));
277 y_pos->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
279 QStandardItem *y_pos_a =
new QStandardItem;
280 y_pos_a->setData(deti->pos().y(), Qt::EditRole);
282 y_pos_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
285 qsi_list << y_pos << y_pos_a;
286 qsi->appendRow(qsi_list);
289 QStandardItem *rot =
new QStandardItem(
tr(
"Rotation"));
290 rot->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
292 QStandardItem *rot_a =
new QStandardItem;
293 rot_a->setData(deti->rotation(), Qt::EditRole);
295 rot_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
298 qsi_list << rot << rot_a;
299 qsi->appendRow(qsi_list);
302 QStandardItem *alignment =
new QStandardItem(
tr(
"Alignement"));
303 alignment->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
305 QStandardItem *alignmenta =
new QStandardItem(
tr(
"Éditer"));
306 alignmenta->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
308 alignmenta->setData(QVariant::fromValue(deti->
alignment()), Qt::UserRole+2);
311 qsi_list << alignment << alignmenta;
312 qsi->appendRow(qsi_list);
317 QStandardItem *empty_qsi =
new QStandardItem(0);
318 empty_qsi->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
319 qsi_list << qsi << empty_qsi;
348 QModelIndex text_index =
m_texts_list.value(deti)->index();
349 this->removeRow(text_index.row(), text_index.parent());
365 if (QStandardItem *item = itemFromIndex(index))
381 if(item->column() == 1)
384 item = item->parent()->child(item->row(), 0);
386 item = itemFromIndex(index(item->row(),0));
399 QStandardItem *text_item = item;
400 while (text_item->parent())
401 text_item = text_item->parent();
407 QStandardItem *previous = item;
408 QStandardItem *top = item;
436 return QModelIndex();
449 QUndoCommand *undo =
nullptr;
453 undo =
new QUndoCommand(
tr(
"Éditer un texte d'élément"));
460 QString from = text_qsi->child(
src_txt_row,1)->data(Qt::DisplayRole).toString();
468 if(from ==
tr(
"Texte utilisateur"))
470 QString text = text_qsi->child(
usr_txt_row,1)->data(Qt::DisplayRole).toString();
471 if (text != deti->
text())
474 else if (from ==
tr(
"Information de l'élément"))
476 QString info_name = text_qsi->child(
info_txt_row,1)->data(Qt::UserRole+2).toString();
480 else if (from ==
tr(
"Texte composé"))
482 QString composite_text = text_qsi->child(
compo_txt_row,1)->data(Qt::UserRole+2).toString();
487 int fs = text_qsi->child(
size_txt_row,1)->data(Qt::EditRole).toInt();
488 if (fs != deti->
font().pointSize())
491 font.setPointSize(fs);
493 quc->setText(
tr(
"Modifier la taille d'un texte d'élément"));
496 QFont
font = text_qsi->child(
font_txt_row, 1)->data(Qt::UserRole+2).value<QFont>();
500 quc->setText(
tr(
"Modifier la police d'un texte d'élément"));
507 quc->setText(
tr(
"Modifier la couleur d'un texte d'élément"));
510 bool frame = text_qsi->child(
frame_txt_row,1)->checkState() == Qt::Checked? true :
false;
514 quc->setText(
tr(
"Modifier le cadre d'un texte d'élément"));
517 qreal text_width = text_qsi->child(
width_txt_row, 1)->data(Qt::EditRole).toDouble();
522 quc->setText(
tr(
"Modifier la largeur d'un texte d'élément"));
528 QPointF p(text_qsi->child(
x_txt_row,1)->data(Qt::EditRole).toDouble(),
529 text_qsi->child(
y_txt_row,1)->data(Qt::EditRole).toDouble());
534 quc->setText(
tr(
"Déplacer un texte d'élément"));
540 qreal rot = text_qsi->child(
rot_txt_row,1)->data(Qt::EditRole).toDouble();
542 if(rot != deti->rotation())
546 quc->setText(
tr(
"Pivoter un texte d'élément"));
553 Qt::Alignment alignment = text_qsi->child(
align_txt_row, 1)->data(Qt::UserRole+2).value<Qt::Alignment>();
557 quc->setText(
tr(
"Modifier l'alignement d'un texte d'élément"));
574 QUndoCommand *undo =
nullptr;
578 undo =
new QUndoCommand(
tr(
"Éditer un groupe de textes"));
585 QString alignment = group_qsi->child(
align_grp_row,1)->data(Qt::DisplayRole).toString();
586 if((alignment ==
tr(
"Gauche")) && (group->
alignment() != Qt::AlignLeft))
588 else if((alignment ==
tr(
"Droite")) && (group->
alignment() != Qt::AlignRight))
590 else if((alignment ==
tr(
"Centre")) && (group->
alignment() != Qt::AlignVCenter))
596 QPointF
pos(group_qsi->child(
x_grp_row,1)->data(Qt::EditRole).toDouble(),
597 group_qsi->child(
y_grp_row,1)->data(Qt::EditRole).toDouble());
612 int v_adjustment = group_qsi->child(
adjust_grp_row,1)->data(Qt::EditRole).toInt();
616 QString name = group_qsi->data(Qt::DisplayRole).toString();
617 if(group->
name() != name)
620 bool hold_to_bottom = group_qsi->child(
hold_to_bottom_grp_row, 1)->checkState() == Qt::Checked? true :
false;
624 bool frame_ = group_qsi->child(
frame_grp_row, 1)->checkState() == Qt::Checked? true :
false;
625 if(group->
frame() != frame_)
642 QStandardItem *grp =
new QStandardItem(group->
name());
643 grp->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsEditable);
646 QStandardItem *empty_qsi =
new QStandardItem(0);
647 empty_qsi->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
649 QList<QStandardItem *> qsi_list;
650 qsi_list << grp << empty_qsi;
652 this->insertRow(0, qsi_list);
656 QStandardItem *alignment =
new QStandardItem(
tr(
"Alignement"));
657 alignment->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
661 case Qt::AlignLeft: text =
tr(
"Gauche");
break;
662 case Qt::AlignRight: text =
tr(
"Droite");
break;
663 case Qt::AlignVCenter: text =
tr(
"Centre");
break;
666 QStandardItem *alignment_a =
new QStandardItem(text);
668 alignment_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
670 qsi_list << alignment << alignment_a;
671 grp->appendRow(qsi_list);
674 QStandardItem *x_pos =
new QStandardItem(
tr(
"Position X"));
675 x_pos->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
677 QStandardItem *x_pos_a =
new QStandardItem;
678 x_pos_a->setData(group->
pos().x(), Qt::EditRole);
680 x_pos_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
683 qsi_list << x_pos << x_pos_a;
684 grp->appendRow(qsi_list);
687 QStandardItem *y_pos =
new QStandardItem(
tr(
"Position Y"));
688 y_pos->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
690 QStandardItem *y_pos_a =
new QStandardItem;
691 y_pos_a->setData(group->
pos().y(), Qt::EditRole);
693 y_pos_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
696 qsi_list << y_pos << y_pos_a;
697 grp->appendRow(qsi_list);
700 QStandardItem *rot =
new QStandardItem(
tr(
"Rotation"));
701 rot->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
703 QStandardItem *rot_a =
new QStandardItem;
704 rot_a->setData(group->
rotation(), Qt::EditRole);
706 rot_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
708 qsi_list << rot << rot_a;
709 grp->appendRow(qsi_list);
712 QStandardItem *v_adj =
new QStandardItem(
tr(
"Ajustement vertical"));
713 v_adj->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
715 QStandardItem *v_adj_a =
new QStandardItem;
718 v_adj_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
720 qsi_list << v_adj << v_adj_a;
721 grp->appendRow(qsi_list);
724 QStandardItem *frame_ =
new QStandardItem(
tr(
"Cadre"));
725 frame_->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
727 QStandardItem *frame_a =
new QStandardItem;
728 frame_a->setCheckable(
true);
729 frame_a->setCheckState(group->
frame()? Qt::Checked : Qt::Unchecked);
731 frame_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable);
733 qsi_list << frame_ << frame_a;
734 grp->appendRow(qsi_list);
738 QStandardItem *hold_bottom =
new QStandardItem(
tr(
"Maintenir en bas de page"));
739 hold_bottom->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
741 QStandardItem *hold_bottom_a =
new QStandardItem();
742 hold_bottom_a->setCheckable(
true);
743 hold_bottom_a->setCheckState(group->
holdToBottomPage() ? Qt::Checked : Qt::Unchecked);
745 hold_bottom_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable);
747 qsi_list << hold_bottom << hold_bottom_a;
748 grp->appendRow(qsi_list);
770 QModelIndex group_index =
m_groups_list.value(group)->index();
771 this->removeRow(group_index.row(), group_index.parent());
796 QModelIndex text_index = indexFromItem(text_item);
797 removeRow(text_index.row(), text_index.parent());
813 if (QStandardItem *item = itemFromIndex(index))
828 if(item->column() == 1)
831 item = item->parent()->child(item->row(), 0);
833 item = itemFromIndex(index(item->row(),0));
836 while (item->parent())
837 item = item->parent();
856 return QModelIndex();
867 QStandardItem *item =
nullptr;
870 if(index.column() == 1)
872 if(index.parent().isValid())
873 item = itemFromIndex(index.parent().child(index.row(),0));
875 item = itemFromIndex(this->index(index.row(),0));
878 item = itemFromIndex(index);
894 QStandardItem *item =
nullptr;
897 if(index.column() == 1)
899 if(index.parent().isValid())
900 item = itemFromIndex(index.parent().child(index.row(),0));
902 item = itemFromIndex(this->index(index.row(),0));
905 item = itemFromIndex(index);
917 if(data->hasFormat(
"application/x-qet-element-text-uuid"))
920 if(parent.isValid() && row != -1 && column !=1)
921 index = parent.child(row, column);
922 else if (parent.isValid() && row == -1 && column == -1)
925 QUuid uuid(data->text());
932 if(text->uuid() == uuid)
938 if(text->uuid() == uuid)
950 if(text->uuid() == uuid)
972 if(data->hasFormat(
"application/x-qet-element-text-uuid"))
974 QUuid uuid(data->text());
979 if(parent.isValid() && row != -1 && column !=1)
980 index = parent.child(row, column);
981 else if (parent.isValid() && row == -1 && column == -1)
990 if(text->uuid() == uuid)
1008 if(text->uuid() == uuid)
1016 QUndoStack &stack =
m_element.data()->diagram()->undoStack();
1017 stack.beginMacro(
tr(
"Déplacer un texte dans un autre groupe"));
1037 if(text->uuid() == uuid)
1063 QModelIndex index = indexes.first();
1064 if (index.isValid())
1066 QStandardItem *item = itemFromIndex(index);
1072 QMimeData *mime_data =
new QMimeData();
1073 mime_data->setText(deti->
uuid().toString());
1074 mime_data->setData(
"application/x-qet-element-text-uuid", deti->
uuid().toString().toLatin1());
1080 return QStandardItemModel::mimeData(indexes);
1089 QStringList mime_list = QAbstractItemModel::mimeTypes();
1090 mime_list <<
"application/x-qet-element-text-uuid";
1107 bool usr =
false, info =
false, compo =
false;
1140 qsi->child(
x_grp_row, 0)->setFlags(Qt::ItemIsSelectable);
1141 qsi->child(
x_grp_row, 1)->setFlags(Qt::ItemIsSelectable);
1142 qsi->child(
y_grp_row, 0)->setFlags(Qt::ItemIsSelectable);
1143 qsi->child(
y_grp_row, 1)->setFlags(Qt::ItemIsSelectable);
1144 qsi->child(
rot_grp_row, 0)->setFlags(Qt::ItemIsSelectable);
1145 qsi->child(
rot_grp_row, 1)->setFlags(Qt::ItemIsSelectable);
1149 qsi->child(
x_grp_row, 0)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
1150 qsi->child(
x_grp_row, 1)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
1151 qsi->child(
y_grp_row, 0)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
1152 qsi->child(
y_grp_row, 1)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
1153 qsi->child(
rot_grp_row, 0)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
1154 qsi->child(
rot_grp_row, 1)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
1172 if (qsi->data().toInt() ==
textFrom)
1174 QString from = qsi->data(Qt::DisplayRole).toString();
1176 if (from ==
tr(
"Texte utilisateur"))
1179 text_qsi->setData(text_qsi->child(
usr_txt_row,1)->data(Qt::DisplayRole).toString());
1181 else if (from ==
tr(
"Information de l'élément"))
1184 QString info = text_qsi->child(
info_txt_row,1)->data(Qt::UserRole+2).toString();
1185 text_qsi->setData(dc.
value(info), Qt::DisplayRole);
1190 QString compo = text_qsi->child(
compo_txt_row,1)->data(Qt::UserRole+2).toString();
1196 else if (qsi->data().toInt() ==
userText)
1198 QString text = qsi->data(Qt::DisplayRole).toString();
1199 text_qsi->setData(text, Qt::DisplayRole);
1203 QString info = qsi->data(Qt::UserRole+2).toString();
1204 text_qsi->setData(dc.
value(info), Qt::DisplayRole);
1208 QString compo = qsi->data(Qt::UserRole+2).toString();
1233 QList<QMetaObject::Connection> connection_list;
1239 connection_list << connect(deti, &DynamicElementTextItem::xChanged, [deti,
this](){this->
updateDataFromText(deti,
pos);});
1240 connection_list << connect(deti, &DynamicElementTextItem::yChanged, [deti,
this](){this->
updateDataFromText(deti,
pos);});
1242 connection_list << connect(deti, &DynamicElementTextItem::rotationChanged, [deti,
this](){this->
updateDataFromText(deti,
rotation);});
1273 QList<QMetaObject::Connection> connection_list;
1316 qsi->setData(deti->toPlainText(), Qt::DisplayRole);
1321 qsi->setData(deti->toPlainText(), Qt::DisplayRole);
1322 qsi->child(
usr_txt_row,1)->setData(deti->toPlainText(), Qt::DisplayRole);
1323 qsi->setData(deti->toPlainText(), Qt::DisplayRole);
1328 qsi->setData(deti->toPlainText(), Qt::DisplayRole);
1329 QString info_name = deti->
infoName();
1330 qsi->child(
info_txt_row,1)->setData(info_name, Qt::UserRole+2);
1336 qsi->setData(deti->toPlainText(), Qt::DisplayRole);
1338 qsi->child(
compo_txt_row,1)->setData(deti->toPlainText(), Qt::DisplayRole);
1339 qsi->setData(deti->toPlainText(), Qt::DisplayRole);
1347 QFont f(deti->
font());
1348 qsi->child(
font_txt_row,1)->setData(f.family(), Qt::EditRole);
1349 qsi->child(
font_txt_row,1)->setData(f, Qt::UserRole+2);
1350 qsi->child(
size_txt_row,1)->setData(f.pointSize(), Qt::EditRole);
1362 qsi->child(
x_txt_row,1)->setData(deti->pos().x(), Qt::EditRole);
1364 qsi->child(
y_txt_row,1)->setData(deti->pos().y(), Qt::EditRole);
1369 qsi->child(
frame_txt_row,1)->setCheckState(deti->
frame()? Qt::Checked : Qt::Unchecked);
1375 qsi->child(
rot_txt_row,1)->setData(deti->rotation(), Qt::EditRole);
1403 case Qt::AlignLeft: qsi->child(
align_grp_row,1)->setData(
tr(
"Gauche"), Qt::DisplayRole);
break;
1404 case Qt::AlignRight : qsi->child(
align_grp_row,1)->setData(
tr(
"Droite"), Qt::DisplayRole);
break;
1405 case Qt::AlignVCenter : qsi->child(
align_grp_row,1)->setData(
tr(
"Centre"), Qt::DisplayRole);
break;
1406 default: qsi->child(0,1)->setData(
"", Qt::DisplayRole);
break;
1412 qsi->child(
x_grp_row,1)->setData(group->
pos().x(), Qt::EditRole);
1413 qsi->child(
y_grp_row,1)->setData(group->
pos().y(), Qt::EditRole);
1423 qsi->setData(group->
name(), Qt::DisplayRole);
1432 qsi->child(
frame_grp_row, 1)->setCheckState(group->
frame()? Qt::Checked : Qt::Unchecked);
1447 QStyledItemDelegate(parent)
1452 switch (index.data(Qt::UserRole+1).toInt())
1456 QComboBox *qcb =
new QComboBox(parent);
1457 qcb->setObjectName(
"text_from");
1458 qcb->addItem(
tr(
"Texte utilisateur"));
1459 qcb->addItem(
tr(
"Information de l'élément"));
1460 qcb->addItem(
tr(
"Texte composé"));
1466 QStandardItem *qsi = detm->itemFromIndex(index);
1477 QMap <QString, QString> info_map;
1482 QComboBox *qcb =
new QComboBox(parent);
1483 qcb->setObjectName(
"info_text");
1484 for (
const QString& key : info_map.keys()) {
1485 qcb->addItem(key, info_map.value(key));
1492 QStandardItem *qsi = detm->itemFromIndex(index);
1502 cted->setObjectName(
"composite_text");
1508 QStandardItem *qsi = detm->itemFromIndex(index);
1518 atd->setObjectName(
"alignment_text");
1523 QSpinBox *sb =
new QSpinBox(parent);
1524 sb->setObjectName(
"font_size");
1525 sb->setFrame(
false);
1531 QFont font = QFontDialog::getFont(&ok, index.data(Qt::UserRole+2).value<QFont>(), parent);
1532 QWidget *w =
new QWidget(parent);
1536 w->setProperty(
"ok", ok);
1538 w->setObjectName(
"font_dialog");
1543 QColorDialog *cd =
new QColorDialog(index.data(Qt::EditRole).value<QColor>(), parent);
1544 cd->setObjectName(
"color_dialog");
1549 QSpinBox *sb =
new QSpinBox(parent);
1550 sb->setObjectName(
"pos_dialog");
1551 sb->setRange(-1000,10000);
1552 sb->setFrame(
false);
1553 sb->setSuffix(
" px");
1558 QSpinBox *sb =
new QSpinBox(parent);
1559 sb->setObjectName(
"rot_spinbox");
1560 sb->setRange(0, 359);
1561 sb->setWrapping(
true);
1562 sb->setFrame(
false);
1563 sb->setSuffix(
" °");
1568 QSpinBox *sb =
new QSpinBox(parent);
1569 sb->setObjectName(
"width_spinbox");
1570 sb->setRange(-1, 500);
1571 sb->setFrame(
false);
1572 sb->setSuffix(
" px");
1577 QComboBox *qcb =
new QComboBox(parent);
1578 qcb->setFrame(
false);
1579 qcb->setObjectName(
"group_alignment");
1580 qcb->addItem(
tr(
"Gauche"));
1581 qcb->addItem(
tr(
"Centre"));
1582 qcb->addItem(
tr(
"Droite"));
1587 QSpinBox *sb =
new QSpinBox(parent);
1588 sb->setObjectName(
"group_pos");
1589 sb->setRange(-1000,10000);
1590 sb->setFrame(
false);
1591 sb->setSuffix(
" px");
1596 QSpinBox *sb =
new QSpinBox(parent);
1597 sb->setObjectName(
"group_rotation");
1598 sb->setRange(0, 359);
1599 sb->setWrapping(
true);
1600 sb->setFrame(
false);
1601 sb->setSuffix(
" °");
1606 QSpinBox *sb =
new QSpinBox(parent);
1607 sb->setObjectName(
"group_v_adjustment");
1608 sb->setRange(-20, 20);
1609 sb->setFrame(
false);
1610 sb->setSuffix(
" px");
1614 return QStyledItemDelegate::createEditor(parent, option, index);
1619 if (index.isValid())
1621 if (editor->objectName() ==
"font_dialog")
1623 if (QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
1625 if(QStandardItem *qsi = qsim->itemFromIndex(index))
1627 if (editor->property(
"ok").toBool() ==
true)
1629 qsi->setData(editor->font().family(), Qt::EditRole);
1630 qsi->setData(editor->font(), Qt::UserRole+2);
1636 else if(editor->objectName() ==
"color_dialog")
1638 if (QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
1640 if(QStandardItem *qsi = qsim->itemFromIndex(index))
1642 QColorDialog *cd =
static_cast<QColorDialog *
> (editor);
1643 if (cd->result() == QDialog::Accepted)
1645 qsi->setData(cd->selectedColor(), Qt::EditRole);
1646 qsi->setData(cd->selectedColor(), Qt::ForegroundRole);
1653 else if (editor->objectName() ==
"info_text")
1655 if (QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
1657 if(QStandardItem *qsi = qsim->itemFromIndex(index))
1659 QComboBox *cb =
static_cast<QComboBox *
>(editor);
1660 qsi->setData(cb->currentText(), Qt::DisplayRole);
1661 qsi->setData(cb->currentData(), Qt::UserRole+2);
1667 else if (editor->objectName() ==
"composite_text")
1669 if (QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
1671 if(QStandardItem *qsi = qsim->itemFromIndex(index))
1676 QString edited_text = cted->
plainText();
1677 QString assigned_text;
1689 qsi->setData(assigned_text, Qt::DisplayRole);
1690 qsi->setData(edited_text, Qt::UserRole+2);
1695 else if (editor->objectName() ==
"alignment_text")
1697 if(QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
1699 if(QStandardItem *qsi = qsim->itemFromIndex(index))
1703 qsi->setData(QVariant::fromValue(align), Qt::UserRole+2);
1708 else if (editor->objectName() ==
"group_alignment")
1710 if(QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
1712 if(QStandardItem *qsi = qsim->itemFromIndex(index))
1714 QComboBox *cb =
static_cast<QComboBox *
>(editor);
1715 qsi->setData(cb->currentText(), Qt::DisplayRole);
1721 QStyledItemDelegate::setModelData(editor, model, index);
1731 if(object->objectName() ==
"pos_dialog" ||
object->objectName() ==
"font_size" ||
object->objectName() ==
"rot_spinbox" || \
1732 object->objectName() ==
"group_rotation" ||
object->objectName() ==
"group_v_adjustment" ||
object->objectName() ==
"width_spinbox" ||\
1733 object->objectName() ==
"group_pos")
1735 object->event(event);
1737 QSpinBox *sb =
static_cast<QSpinBox *
>(object);
1738 switch (event->type()) {
1739 case QEvent::KeyPress:
1740 emit commitData(sb);
break;
1741 case QEvent::KeyRelease:
1742 emit commitData(sb);
break;
1743 case QEvent::MouseButtonPress:
1744 emit commitData(sb);
break;
1745 case QEvent::MouseButtonRelease:
1746 emit commitData(sb);
break;
1748 emit commitData(sb);
break;
1755 if((object->objectName() ==
"text_from" ||
object->objectName() ==
"info_text" ||
object->objectName() ==
"group_alignment") && event->type() == QEvent::FocusIn)
1757 QComboBox *qcb =
static_cast<QComboBox *
>(object);
1758 connect(qcb,
static_cast<void (QComboBox::*)(
int)
>(&QComboBox::currentIndexChanged), [
this,qcb](){emit commitData(qcb);});
1761 return QStyledItemDelegate::eventFilter(
object, event);
1781 qstrl <<
"function";
1783 qstrl <<
"tension-protocol";
1796 info_list.removeAll(
"formula");
1799 for(
const QString& info : info_list)
void removeText(DynamicElementTextItem *deti)
DynamicElementTextModel::removeText.
void holdToBottomPageChanged(bool)
void fontChanged(QFont font)
The QPropertyUndoCommand class This undo command manage QProperty of a QObject. This undo command can...
DynamicElementTextModel(Element *element, QObject *parent=nullptr)
ElementTextItemGroup * parentGroup() const
DynamicElementTextItem::parentGroup.
ConductorProperties properties
Conductor::properties.
QString text
DynamicElementTextItem::text.
virtual kind linkType() const
void frameChanged(bool frame)
QPointer< Conductor > m_watched_conductor
The CompositeTextEditDialog class CompositeTextEditDialog display a dialog use to write the complex t...
The DynamicElementTextItem class This class provide a simple text field of element who can be added o...
void setConnection(DynamicElementTextItem *deti, bool set)
DynamicElementTextModel::setConnection Set up the connection for to keep up to date the data of this...
void textFromChanged(DynamicElementTextItem::TextFrom text_from)
void textsGroupAdded(ElementTextItemGroup *group)
void enableGroupRotationAndPos(ElementTextItemGroup *group)
DynamicElementTextModel::enableGroupRotation Enable/disable the item "group rotation" according the o...
void addText(DynamicElementTextItem *deti)
DynamicElementTextModel::addText.
DiagramContext elementInformations() const
TextFrom textFrom
DynamicElementTextItem::textFrom.
QUndoCommand * undoForEditedText(DynamicElementTextItem *deti, QUndoCommand *parent_undo=nullptr) const
DynamicElementTextModel::undoForEditedText.
void colorChanged(QColor color)
void enableSourceText(DynamicElementTextItem *deti, DynamicElementTextItem::TextFrom tf)
DynamicElementTextModel::enableSourceText Enable the good field, according to the current source of t...
Qt::Alignment alignment() const
AlignmentTextDialog::alignment.
bool eventFilter(QObject *object, QEvent *event) override
QVariant value(const QString &key) const
QHash< DynamicElementTextItem *, QStandardItem * > m_texts_list
Element * elementUseForInfo() const
DynamicElementTextItem::elementUseForInfo.
DynamicElementTextItem * textFromItem(QStandardItem *item) const
DynamicElementTextModel::textFromItem.
QList< QStandardItem * > itemsForText(DynamicElementTextItem *deti)
DynamicElementTextModel::itemsForText.
QStringList mimeTypes() const override
DynamicElementTextModel::mimeTypes.
void verticalAdjustmentChanged(int)
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
DynamicElementTextModel::dropMimeData.
void frameChanged(bool frame)
void itemDataChanged(QStandardItem *qsi)
QString compositeText
DynamicElementTextItem::compositeText.
QHash< ElementTextItemGroup *, QList< QMetaObject::Connection > > m_hash_group_connect
void textsGroupAboutToBeRemoved(ElementTextItemGroup *group)
bool contains(const QString &) const
~DynamicElementTextModel() override
void textAddedToGroup(DynamicElementTextItem *text, ElementTextItemGroup *group)
QHash< ElementTextItemGroup *, QStandardItem * > m_groups_list
void removeGroup(ElementTextItemGroup *group)
DynamicElementTextModel::removeGroup Remove the text item group from this model.
qreal correctAngle(const qreal &)
void updateDataFromText(DynamicElementTextItem *deti, DynamicElementTextModel::ValueType type)
void updateDataFromGroup(ElementTextItemGroup *group, DynamicElementTextModel::ValueType type)
QList< DynamicElementTextItem * > texts() const
ElementTextItemGroup::texts.
QPointer< Element > m_element
static QStringList elementInfoKeys()
QETApp::elementInfoKeys.
void textRemovedFromGroup(DynamicElementTextItem *text, ElementTextItemGroup *group)
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void addGroup(ElementTextItemGroup *group)
DynamicElementTextModel::AddGroup Add a text item group to this model.
Element * parentElement() const
DynamicElementTextItem::ParentElement.
The ElementTextItemGroup class This class represent a group of element text Texts in the group can be...
bool indexIsText(const QModelIndex &index) const
DynamicElementTextModel::indexIsText.
void rotationChanged(qreal)
QModelIndex indexFromGroup(ElementTextItemGroup *group) const
DynamicElementTextModel::indexFromGroup.
QMimeData * mimeData(const QModelIndexList &indexes) const override
void textWidthChanged(qreal width)
static int hold_to_bottom_grp_row
bool indexIsGroup(const QModelIndex &index) const
DynamicElementTextModel::indexIsGroup.
ElementTextItemGroup * groupFromIndex(const QModelIndex &index) const
DynamicElementTextModel::groupFromIndex.
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
static int adjust_grp_row
void textChanged(QString text)
void removeTextFromGroup(DynamicElementTextItem *deti, ElementTextItemGroup *group)
void infoNameChanged(QString info)
DynamicTextItemDelegate(QObject *parent=Q_NULLPTR)
void alignmentChanged(Qt::Alignment)
QString m_tension_protocol
void compositeTextChanged(QString text)
bool indexIsInGroup(const QModelIndex &index) const
DynamicElementTextModel::indexIsInGroup.
void textAdded(DynamicElementTextItem *deti)
static QString elementTranslatedInfoKey(const QString &)
ElementsProperties::translatedInfo Return the translated information key given by If don't match...
void textRemoved(DynamicElementTextItem *deti)
void setAnimated(bool animate=true, bool first_time=true)
QPropertyUndoCommand::setAnimated.
ElementTextItemGroup * groupFromItem(QStandardItem *item) const
DynamicElementTextModel::groupFromItem.
QStringList availableInfo(DynamicElementTextItem *deti) const
DynamicTextItemDelegate::availableInfo.
void addTextToGroup(DynamicElementTextItem *deti, ElementTextItemGroup *group)
DynamicElementTextModel::textAddedToGroup Add the text to the group .
QModelIndex indexFromText(DynamicElementTextItem *text) const
DynamicElementTextModel::indexFromText.
The DynamicElementTextModel class A model to use with QtView. This model display and can edit the val...
QString plainText() const
CompositeTextEditDialog::plainText.
QString infoName
DynamicElementTextItem::infoName.
static QString replaceVariable(const QString &formula, const DiagramContext &dc)
AssignVariables::replaceVariable Replace the variables in in form %{my-var} to the corresponding val...
bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override
QUndoCommand * undoForEditedGroup(ElementTextItemGroup *group, QUndoCommand *parent_undo=nullptr) const
DynamicElementTextModel::undoForEditedGroup.
DynamicElementTextItem * textFromIndex(const QModelIndex &index) const
DynamicElementTextModel::textFromIndex.
QHash< DynamicElementTextItem *, QList< QMetaObject::Connection > > m_hash_text_connect