23 #include <qpushbutton.h>
28 #include <qinputdialog.h>
29 #include <QMessageBox>
31 #include <QHBoxLayout>
33 #include <QGridLayout>
51 #define TR(id) OLocalizator::getString("TYFaceModelerPickEditor", (id))
52 #define IMG(id) OLocalizator::getPicture("TYPickEditor", (id))
65 QMenu* pPopup =
new QMenu(NULL);
67 std::map<QAction*, int> retCodes;
68 std::map<QAction*, LPTYGeometryNode> posRetCodes;
69 std::map<QAction*, TYAcousticRectangle*> dimAccRectRetCodes;
70 std::map<QAction*, TYAcousticRectangle*> remAccRectRetCodes;
74 while ((i < pElts->size()) && (i + 1 < pElts->size()))
79 QFont font = pPopup->font();
80 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
91 code = pPopup->addAction(
TR(
"id_popup_dimension"));
99 code = pPopup->addAction(QIcon(
IMG(
"id_icon_moving")),
TR(
"id_popup_position"));
105 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
108 pPopup->addSeparator();
113 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
125 QAction* popupRet = pPopup->exec(QCursor::pos());
127 if (retCodes.find(popupRet) != retCodes.end())
129 pElts->at(retCodes[popupRet])->edit(
_pModeler);
131 else if (dimAccRectRetCodes.find(popupRet) != dimAccRectRetCodes.end())
135 else if (posRetCodes.find(popupRet) != posRetCodes.end())
143 else if (remAccRectRetCodes.find(popupRet) != remAccRectRetCodes.end())
151 pParent->updateGraphicTree();
177 pDlg->setWindowTitle(
TR(
"id_popup_dimension"));
179 QGridLayout* pLayout =
new QGridLayout();
180 pDlg->setLayout(pLayout);
182 QBoxLayout* pEditLayout =
new QHBoxLayout();
183 pEditLayout->setContentsMargins(10, 10, 10, 10);
184 pLayout->addLayout(pEditLayout, 0, 1);
189 float sizeX = NAN, sizeY = NAN;
193 QLabel* pXLabelName =
new QLabel(pDlg);
194 pXLabelName->setText(
TR(
"id_x_label"));
195 pEditLayout->addWidget(pXLabelName);
197 pXLineEdit->setFixedWidth(60);
198 pXLineEdit->setText(QString().setNum(sizeX,
'f', 2));
199 pEditLayout->addWidget(pXLineEdit);
202 pEditLayout->addSpacing(10);
203 QLabel* pYLabelName =
new QLabel(pDlg);
204 pYLabelName->setText(
TR(
"id_y_label"));
205 pEditLayout->addWidget(pYLabelName);
207 pYLineEdit->setFixedWidth(60);
208 pYLineEdit->setText(QString().setNum(sizeY,
'f', 2));
209 pEditLayout->addWidget(pYLineEdit);
211 QBoxLayout* pBtnLayout =
new QHBoxLayout();
212 pLayout->addLayout(pBtnLayout, 1, 1);
214 pBtnLayout->addStretch(1);
216 QPushButton* pButtonOK =
new QPushButton(
TR(
"id_ok_btn"), pDlg);
217 pButtonOK->setDefault(
true);
218 QObject::connect(pButtonOK, &QPushButton::clicked, pDlg, &QDialog::accept);
219 pBtnLayout->addWidget(pButtonOK);
221 QPushButton* pButtonCancel =
new QPushButton(
TR(
"id_cancel_btn"), pDlg);
222 pButtonCancel->setShortcut(Qt::Key_Escape);
223 QObject::connect(pButtonCancel, &QPushButton::clicked, pDlg, &QDialog::reject);
224 pBtnLayout->addWidget(pButtonCancel);
227 int ret = pDlg->exec();
230 if (ret == QDialog::Accepted)
234 float sizeX = pXLineEdit->text().toDouble();
235 float sizeY = pYLineEdit->text().toDouble();
237 if (sizeX <= 1E-4 || sizeY <= 1.E-4)
239 QMessageBox::warning(
_pModeler,
"Tympan",
TR(
"id_warning_size_not_ok"),
256 pRect->updateGraphicTree();
fichier contenant differents types d'actions (fichier header)
TYMainWindow * getTYMainWnd()
Retourne le pointeur sur la fenetre principale.
pour l'application Tympan (fichier header)
gestion du picking des faces (fichier header)
outil IHM pour une entrée utilisateur (fichier header)
Fenetre principale de l'application Tympan (fichier header)
Classe generique pour une fenetre de modeleur (fichier header)
Objet pour le picking graphique (fichier header)
TYModelerFrame * _pModeler
Le modeler associe a cet editor.
virtual void updateGrid()
virtual bool remAcousticSurf(const LPTYAcousticSurfaceGeoNode pAccSurfGeoNode)
LPTYAcousticSurfaceGeoNode findAcousticSurf(const LPTYAcousticSurface pAccSurf)
void addAction(TYAction *pAction)
Ajoute une nouvelle action a l'historique.
Definit une action, necessaire pour la gestion de l'undo.
virtual void setIsGeometryModified(bool isModified)
TYFaceModelerPickEditor(TYModelerFrame *pModeler)
~TYFaceModelerPickEditor()
void showDimensionsDialog(TYRectangle *pRect, TYAcousticRectangleNode *pParent=NULL)
virtual void showPopupMenu(std::shared_ptr< LPTYElementArray > pElts)
void updateModelers(bool clipping=true, bool axesAndGrid=true, bool displayList=true)
Classe generique pour une fenetre de modeleur.
TYActionManager * getActionManager()
bool askForResetResultat()
gestion de l'element actionne par picking
void showPositionDialog(TYGeometryNode *pGeoNode, bool activeHeight)
void setSize(float sizeX, float sizeY)
void getSize(float &sizeX, float &sizeY)
suppression d'une surface acoustique a un ensemble de surfaces acoustiques
Action de redimensionnement d'un rectangle.