23 #include <qtablewidget.h>
24 #include <qtabwidget.h>
26 #include <QtPrintSupport/QPrinter>
27 #include <QtPrintSupport/QPrintDialog>
29 #include <qtextstream.h>
30 #include <qfiledialog.h>
31 #include <qradiobutton.h>
33 #include <qbuttongroup.h>
34 #include <qmessagebox.h>
35 #include <qheaderview.h>
46 #include <QHBoxLayout>
48 #include <QGridLayout>
54 #define TR(id) OLocalizator::getString("TYSpectreWidget", (id))
72 setWindowTitle(
TR(
"id_caption"));
96 QGridLayout* groupBoxRadioLayout =
new QGridLayout();
100 QGroupBox* groupBoxRadio =
new QGroupBox();
101 groupBoxRadio->setTitle(
"");
102 groupBoxRadio->setLayout(groupBoxRadioLayout);
133 QStringList stringList;
134 stringList.append(
TR(
"id_freq"));
135 stringList.append(
"");
136 _tableau->setHorizontalHeaderLabels(stringList);
152 QGroupBox* buttonGroupBox =
new QGroupBox(
this);
153 buttonGroupBox->setTitle(
TR(
""));
154 QGridLayout* buttonGroupBoxLayout =
new QGridLayout();
155 buttonGroupBox->setLayout(buttonGroupBoxLayout);
156 buttonGroupBoxLayout->setAlignment(Qt::AlignTop);
210 QString unite =
"dB";
218 QStringList stringList;
219 stringList.append(
TR(
"id_freq"));
220 stringList.append(unite);
221 _tableau->setHorizontalHeaderLabels(stringList);
227 for (
int i = 0; i <
_tableau->rowCount(); i++)
229 _tableau->item(i, 0)->setFlags(QFlag(0));
261 if (col == 1 &&
_tableau->item(row, col) !=
nullptr)
265 _tableau->item(row, col)->text().toDouble(&ok);
276 for (
int i = 0; i <
_nbFreq; i++)
306 for (
int i = 0; i <
_nbFreq; i++)
310 _tableau->item(i, 1)->setFlags(Qt::ItemIsEditable);
314 _tableau->item(i, 1)->setFlags(QFlag(0));
323 std::vector<QString> tmp;
325 QString qFileName = QFileDialog::getOpenFileName(
this,
"Choose a file",
"",
"CSV (*.csv)");
327 if (!qFileName.isEmpty())
333 if (!qFileName.endsWith(
"csv"))
339 if (f.open(QIODevice::ReadOnly))
369 int indice1 = -10000;
376 bool bOctave =
false;
377 if (ok && ((indice1 - indice0) > 1))
393 if ((bOctave && (tmp.size() < 9)) ||
394 (!bOctave && (tmp.size() < 31)))
396 int ret = QMessageBox::warning(
this,
"Tympan",
TR(
"id_warning_file_not_ok"), QMessageBox::Yes,
398 if (ret == QMessageBox::No)
406 _tableau->setRowCount(
static_cast<int>(tmp.size()) - 1);
407 for (
unsigned j = 0; j < tmp.size(); j++)
409 _tableau->setItem(j, 0,
new QTableWidgetItem(tmp[j].section(
";", 0, 0)));
410 _tableau->setItem(j, 1,
new QTableWidgetItem(tmp[j].section(
";", 1, 1)));
417 QString qFileName = QFileDialog::getSaveFileName(
this,
"Choose a file",
"",
"CSV (*.csv)");
419 if (!qFileName.isEmpty())
421 if (!qFileName.endsWith(
".csv"))
428 if (f.open(QIODevice::WriteOnly))
437 s <<
TR(
"id_freq") <<
";"
442 for (
int i = 0; i < nbFreq; i++)
444 s <<
_tableau->item(i, 0)->text() <<
";" <<
_tableau->item(i, 1)->text() <<
"\n";
467 if (pDialog->exec() == QDialog::Accepted)
469 QPrintDialog dialog(
_printer,
this);
475 int mid = int(
_printer->width() / 2) -
476 int(paint.fontMetrics().horizontalAdvance(pDialog->
_lineEditTete->text()) / 2);
479 int(paint.fontMetrics().horizontalAdvance(pDialog->
_lineEditPied->text()) / 2);
481 paint.setFont(QFont(
"Helvetica", 15, QFont::Bold));
483 int(paint.fontMetrics().horizontalAdvance(pDialog->
_lineEditTitre->text()) / 2);
485 paint.setFont(QFont());
487 int sizeX = 80, sizeY = 25;
488 int ymax = int(
double(
_printer->height()) * 4 / 5 / (
_tableau->rowCount() + 1));
493 int x = int(
double(
_printer->width() - sizeX * 2) / 2);
494 int y = int((
double(
_printer->height()) - sizeY * (
_tableau->rowCount() + 1)) / 2);
495 paint.drawText(x, y,
TR(
"id_freq"));
496 paint.drawText(x + sizeX + 20, y,
"dB");
498 paint.translate(-sizeX, sizeY);
499 for (
int i = 0; i <
_tableau->rowCount(); i++)
501 for (
int j = 0; j <
_tableau->columnCount(); j++)
503 paint.drawText(x + sizeX + 20, y,
_tableau->item(i, j)->text());
504 paint.translate(sizeX, 0);
506 paint.translate(0, sizeY);
507 paint.translate(-
_tableau->columnCount() * sizeX, 0);
514 static void processEvents();
518 qApp->processEvents();
525 bool isChanged =
false;
536 *pSpectre = pSpectre->
toTOct();
549 *pSpectre = pSpectre->
toOct();
581 for (
int i = 0; i <
_tableau->rowCount(); i++)
604 for (
int i = 0; i < nbFreq; i++)
606 _tableau->setItem(i, 0,
new QTableWidgetItem((QString().setNum(
tabFreq[i],
'f', 2))));
623 for (
int i = indexDepart; i < nbFreq; i++)
625 val =
_tableau->item(i, 1)->text().toDouble(
640 *pSpectre = pSpectre->
toOct();
Boite de dialogue des parametres d'impression (fichier header)
const std::vector< double > tabFreq
OTabFreq TYTabFreq
Collection des frequences.
unsigned int getNbValues() const
Number of values in the spectrum.
void setType(TYSpectreType type)
Set the spectrum type.
TYSpectreType getType() const
Get the spectrum type.
OSpectreAbstract & toTOct() const
Converts to one-third Octave.
OSpectreAbstract & toOct() const
Converts to Octave.
double * getTabValReel() override
static int getIndice(const double &freq)
Return the index associated to a frequency.
TYElement * getParent() const
classe pour une boite de dialogue des parametres d'impression.
QGroupBox * _groupBoxCalcul
QLineEdit * _lineEditPied
QLineEdit * _lineEditTete
QGroupBox * _groupBoxProjet
QLineEdit * _lineEditTitre
virtual void setForm(const TYSpectreForm &form)
static int getXMLPrecision()
Get/Set de la precision de stockage des resultats (XML)
virtual TYSpectreForm getForm()
Set/Get de la forme du spectre.
virtual bool getIsReadOnly()
Set/Get du flag de conservation en BDD.
virtual QString getRemarque() const
Set/Get des remarques.
static const TYTabFreq getTabFreqNorm(TYSpectreForm form=SPECTRE_FORM_TIERS)
TYSpectreType
Spectrum type.