29 #include <sys/types.h>
32 #include <QtCore/QDir>
33 #include <QtCore/QSettings>
37 #if QT_VERSION >= 0x050000
38 # include <QtWidgets/QBoxLayout>
39 # include <QtWidgets/QButtonGroup>
40 # include <QtWidgets/QCheckBox>
41 # include <QtWidgets/QFrame>
42 # include <QtWidgets/QGroupBox>
43 # include <QtWidgets/QGridLayout>
44 # include <QtWidgets/QHeaderView>
45 # include <QtWidgets/QLabel>
46 # include <QtWidgets/QLineEdit>
47 # include <QtWidgets/QMessageBox>
48 # include <QtWidgets/QPushButton>
49 # include <QtWidgets/QRadioButton>
50 # include <QtWidgets/QSpinBox>
51 # include <QtWidgets/QTreeWidget>
52 # include <QtWidgets/QVBoxLayout>
54 # include <QtGui/QBoxLayout>
55 # include <QtGui/QButtonGroup>
56 # include <QtGui/QCheckBox>
57 # include <QtGui/QFrame>
58 # include <QtGui/QGroupBox>
59 # include <QtGui/QGridLayout>
60 # include <QtGui/QHeaderView>
61 # include <QtGui/QLabel>
62 # include <QtGui/QLineEdit>
63 # include <QtGui/QMessageBox>
64 # include <QtGui/QPushButton>
65 # include <QtGui/QRadioButton>
66 # include <QtGui/QSpinBox>
67 # include <QtGui/QTreeWidget>
68 # include <QtGui/QVBoxLayout>
72 #include <QtGui/QPixmap>
98 QSettings *settings,
QWidget *parent)
117 setWizardStyle(ModernStyle);
119 setPixmap(QWizard::LogoPixmap, QPixmap(
":/images/NVI_logo.png"));
120 setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_1.png"));
123 QString(isSystemWideRun?
" (system-wide settings)":
""));
143 w->setTitle(
"<p><font size=+1 face=\"Times\">Welcome to vgosDbProcLogs</font></p>");
146 str =
"The Startup Wizard will ask you few questions about software configuration.";
148 w->setSubTitle(
"<font face=\"Times\"><p>Thank you for installing vgosDbProcLogs version " +
151 w->setSubTitle(
"<font face=\"Times\"><p>Congratulation! You just have upgraded SgLib and "
155 w->setSubTitle(
"<font face=\"Times\"><p>It is Startup Wizard. "
156 "You are using SgLib version " +
161 w->setButtonText(QWizard::NextButton,
"Agree");
163 QVBoxLayout *layout =
new QVBoxLayout;
164 w->setLayout(layout);
168 "<h3>vgosDbProcLogs</h3>"
169 "<p>vgosDbProcLogs is software that extracts meteo parameters and cable calibrations from"
170 "log files and stores them in vgosDb format."
172 "<p>Copyright (C) 2015-2020 Sergei Bolotin.</p>"
174 "<p>This program is free software: you can redistribute it and/or modify "
175 "it under the terms of the GNU General Public License as published by "
176 "the Free Software Foundation, either version 3 of the License, or "
177 "(at your option) any later version.</p>"
179 "<p>This program is distributed in the hope that it will be useful, "
180 "but WITHOUT ANY WARRANTY; without even the implied warranty of "
181 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the "
182 "GNU General Public License for more details.</p>"
184 "<p>You should have received a copy of the GNU General Public License "
185 "along with this program. If not, see http://www.gnu.org/licenses.</p>"
187 "<p>Please, read carefully the license agreement and if you agree, press \"Agree\" button.</p>"
190 QLabel *label=
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
191 label->setWordWrap(
true);
192 layout->addWidget(label);
193 layout->addStretch(1);
201 QCheckBox *cb=
new QCheckBox(
"I have read and accept the conditions.", w);
203 layout->addWidget(cb);
204 layout->addSpacing(40);
215 bool have2ForceUser(
false);
219 QVBoxLayout *layout=
new QVBoxLayout;
221 QGridLayout *gridLayout;
222 w->setLayout(layout);
225 w->setTitle(
"<p><font size=+1 face=\"Times\">Essential directories of vgosDbProcLogs</font></p>");
226 w->setSubTitle(
"<font face=\"Times\"><p>The working directory of the software.</p></font>");
227 w->setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_2.png"));
231 "<h3>Default Directories</h3>"
232 "<p>Please, provide paths to data on your system.</p>"
233 "<p>Users will be able to overwrite default settings.</p>"
237 "<h3>vgosDbProcLogs Home Directory</h3>"
238 "<p>Please, specify the software's home directory.</p>"
239 "<p>All paths that are not absolute will be counted form this directory. The software home "
240 "directory have to be writable for a user and should be different from user's home directory.</p>"
242 label =
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
243 label->setWordWrap(
true);
244 layout->addWidget(label);
245 layout->addSpacing(20);
252 if (path2Home == QDir::homePath())
253 have2ForceUser =
true;
255 gBox =
new QGroupBox(
"vgosDbProcLogs home directory", w);
256 gridLayout =
new QGridLayout(gBox);
257 label =
new QLabel(
"Path to the software home directory:", gBox);
258 label->setMinimumSize(label->sizeHint());
262 gridLayout->addWidget(label, 0, 0);
267 layout->addWidget(gBox);
268 layout->addSpacing(20);
272 gBox =
new QGroupBox(
"Essential directories", w);
273 gridLayout =
new QGridLayout(gBox);
275 label =
new QLabel(
"Path to session files:", gBox);
276 label->setMinimumSize(label->sizeHint());
280 gridLayout->addWidget(label, 0, 0);
283 label =
new QLabel(
"Path to vgosDb files:", gBox);
284 label->setMinimumSize(label->sizeHint());
288 gridLayout->addWidget(label, 1, 0);
291 label =
new QLabel(
"Path to Master files:", gBox);
292 label->setMinimumSize(label->sizeHint());
296 gridLayout->addWidget(label, 2, 0);
299 layout->addWidget(gBox);
303 gBox =
new QGroupBox(
"General options", w);
304 QVBoxLayout *aLayout=
new QVBoxLayout(gBox);
310 layout->addWidget(gBox);
322 QString userName(
""), userLoginName(
""), userEMail(
""), userInitials(
"");
323 QString hostName(
""), domainName(
"");
335 struct passwd *pw=getpwuid(uid);
337 perror(
"getpwuid: ");
341 userLoginName = pw->pw_name;
342 userName = pw->pw_gecos;
343 if (userName.contains(
","))
344 userName = userName.left(userName.indexOf(
","));
347 if (gethostname(buff,
sizeof(buff))==-1)
349 perror(
"gethostname: ");
350 userEMail = userName +
"@localhost";
358 if (!hostName.contains(
"."))
361 if (getdomainname(buff,
sizeof(buff))==-1)
362 perror(
"getdomainname: ");
366 if (!domainName.contains(
"(none)") && domainName.simplified().size()>0)
367 hostName +=
"." + domainName;
370 userEMail = userLoginName +
"@" + hostName;
372 if (userName.contains(
" "))
374 userInitials = userName.mid(0, 1) + userName.mid(userName.indexOf(
" ") + 1, 1);
376 else if (userName.size()>=2)
377 userInitials = userName.left(2);
389 w->setTitle(
"<p><font size=+1 face=\"Times\">User identities</font></p>");
390 w->setSubTitle(
"<font face=\"Times\"><p>Please, specify your name and e-mail address.</p></font>");
391 w->setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_3.png"));
395 QVBoxLayout *layout=
new QVBoxLayout;
396 w->setLayout(layout);
400 "<h3>User Identities</h3>"
401 "<p>Describe yourself, your name, e-mail, etc.</p>"
402 "<p>[Plus something else, more polite...]</p>"
404 label =
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
405 label->setWordWrap(
true);
406 layout->addWidget(label);
407 layout->addSpacing(20);
409 QGroupBox *gBox=
new QGroupBox(
"User Identities", w);
410 QGridLayout *gridLayout=
new QGridLayout(gBox);
412 label =
new QLabel(
"User Name:", gBox);
413 label->setMinimumSize(label->sizeHint());
417 gridLayout->addWidget(label, 0, 0);
420 label =
new QLabel(
"E-mail address:", gBox);
421 label->setMinimumSize(label->sizeHint());
425 gridLayout->addWidget(label, 1, 0);
428 label =
new QLabel(
"User's default initials:", gBox);
429 label->setMinimumSize(label->sizeHint());
433 gridLayout->addWidget(label, 2, 0);
436 layout->addWidget(gBox);
446 QString acFullName, acAbbrevName, acAbbName;
448 bool have2ForceUser(
false);
459 have2ForceUser =
true;
462 w->setTitle(
"<p><font size=+1 face=\"Times\">Analysis Center identities</font></p>");
463 w->setSubTitle(
"<font face=\"Times\"><p>Please, describe organization where you work.</p></font>");
464 w->setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_4.png"));
468 QVBoxLayout *layout=
new QVBoxLayout;
469 w->setLayout(layout);
473 "<h3>Analysis Center</h3>"
474 "<p>Please, specify the analysis center.</p>"
475 "<p>[Plus something else, more polite...]</p>"
477 label =
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
478 label->setWordWrap(
true);
479 layout->addWidget(label);
480 layout->addSpacing(20);
482 QGroupBox *gBox=
new QGroupBox(
"Analysis Center", w);
483 QGridLayout *gridLayout=
new QGridLayout(gBox);
485 label =
new QLabel(
"Full Name:", gBox);
486 label->setMinimumSize(label->sizeHint());
492 gridLayout->addWidget(label, 0, 0);
495 label =
new QLabel(
"Abbreviation:", gBox);
496 label->setMinimumSize(label->sizeHint());
500 gridLayout->addWidget(label, 1, 0);
503 label =
new QLabel(
"Abbrev.:", gBox);
504 label->setMinimumSize(label->sizeHint());
508 gridLayout->addWidget(label, 2, 0);
518 layout->addWidget(gBox);
528 const QString logLevelNames[4] = {
"Error",
"Warning",
"Info",
"Debug"};
529 int logLevel(
settings_->value(
"Logger/LogLevel", 2).toInt());
531 w->setTitle(
"<p><font size=+1 face=\"Times\">Logger </font></p>");
532 w->setSubTitle(
"<font face=\"Times\"><p>Set up configuration of the logging subsystem.</p></font>");
533 w->setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_5.png"));
537 QVBoxLayout *layout=
new QVBoxLayout;
538 w->setLayout(layout);
542 "<p>Change parameters of the logging subsystem.</p>"
544 label =
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
545 label->setWordWrap(
true);
546 layout->addWidget(label);
547 layout->addSpacing(20);
551 QGridLayout *gridLayout;
553 gBox =
new QGroupBox(
"Main log options", w);
554 gridLayout =
new QGridLayout(gBox);
558 label =
new QLabel(
"Log file name:", gBox);
559 label->setMinimumSize(label->sizeHint());
562 gridLayout->addWidget(label, 0, 0);
567 label =
new QLabel(
"Log capacity:", gBox);
568 label->setMinimumSize(label->sizeHint());
574 gridLayout->addWidget(label, 1, 0);
577 gridLayout->setColumnStretch( 2, 1);
588 gridLayout->activate();
589 layout->addWidget(gBox);
592 gBox =
new QGroupBox(
"Main log levels", w);
594 QVBoxLayout *aLayout=
new QVBoxLayout(gBox);
595 QRadioButton *rbLogLevel[4];
596 for (
int i=0; i<4; i++)
598 rbLogLevel[i] =
new QRadioButton(logLevelNames[i], gBox);
599 rbLogLevel[i]-> setMinimumSize(rbLogLevel[i]->sizeHint());
601 aLayout->addWidget(rbLogLevel[i]);
603 rbLogLevel[logLevel]->setChecked(
true);
604 layout->addWidget(gBox);
608 gBox =
new QGroupBox(
"Aux log options", w);
609 gridLayout =
new QGridLayout(gBox);
613 label =
new QLabel(
"Path to logs for each session:", gBox);
614 label->setMinimumSize(label->sizeHint());
616 gridLayout->addWidget(label, 0, 0);
619 cbMakeAuxLog_ =
new QCheckBox(
"Save log file for each session", gBox);
624 layout->addWidget(gBox);
636 w->setTitle(
"<p><font size=+1 face=\"Times\">Default cable calibration sign</font></p>");
637 w->setSubTitle(
"<font face=\"Times\"><p>Set up the default cable calibraiton sign for a "
638 "station. These values are used if no <em>cablelong</em> measurements were made during "
639 "a session.</p></font>");
640 w->setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_6.png"));
644 QVBoxLayout *mainLayout=
new QVBoxLayout;
645 w->setLayout(mainLayout);
648 "<h3>Default cable calibration sign set up</h3>"
649 "<p>Set up a cable calibration sign, this sign will be used if a station did not make "
650 "<em>cablelong</em> measurement during observations.</p>"
652 label =
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
653 label->setWordWrap(
true);
654 mainLayout->addWidget(label);
655 mainLayout->addSpacing(20);
657 QGroupBox *gBox=
new QGroupBox(
"List of stations",
659 QBoxLayout *layout=
new QVBoxLayout(gBox);
661 QStringList headerLabels;
662 headerLabels <<
"Station" <<
"Default sign";
667 for (QMap<QString, int>::const_iterator it=
setup.getDefaultCableSignByStn().begin();
668 it!=
setup.getDefaultCableSignByStn().end(); ++it)
670 QString stnName=it.key();
672 item->setText( 0, stnName);
673 item->setData( 0, Qt::TextAlignmentRole, Qt::AlignLeft);
674 item->setText( 1, it.value()==1?
"+":(it.value()==-1?
"-":
"?"));
675 item->setData( 1, Qt::TextAlignmentRole, Qt::AlignCenter);
679 #if QT_VERSION >= 0x050000
696 QPushButton *bAdd =
new QPushButton(
"Add",
this);
697 QPushButton *bEdit =
new QPushButton(
"Edit",
this);
698 QPushButton *bDelete=
new QPushButton(
"Delete",
this);
700 bDelete->setMinimumSize((btnSize=bDelete->sizeHint()));
701 bAdd->setMinimumSize(btnSize);
702 bEdit->setMinimumSize(btnSize);
704 QBoxLayout *subLayout=
new QHBoxLayout();
705 layout->addLayout(subLayout);
706 subLayout->addStretch(1);
707 subLayout->addSpacing(3*btnSize.width());
708 subLayout->addWidget(bAdd);
709 subLayout->addWidget(bEdit);
710 subLayout->addWidget(bDelete);
712 mainLayout->addWidget(gBox);
727 w->setTitle(
"<p><font size=+1 face=\"Times\">RINEX files</font></p>");
728 w->setSubTitle(
"<font face=\"Times\"><p>Set up input of meteorological parameters from "
729 "a nearby GPS station. These data are available in RINEX format from IGS sites.</p></font>");
730 w->setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_1.png"));
734 QVBoxLayout *mainLayout=
new QVBoxLayout;
735 w->setLayout(mainLayout);
738 "<h3>Meteorological data in RINEX format</h3>"
739 "<p>Some VLBI stations do not provide meteo data in their FS log files, however there is a nearby "
740 "GPS station with meteo sensors. The software is capable to read such data in RINEX format. Set up "
741 "GPS station name and (if necessary) pressure offset.</p>"
743 label =
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
744 label->setWordWrap(
true);
745 mainLayout->addWidget(label);
746 mainLayout->addSpacing(20);
748 QGroupBox *gBox=
new QGroupBox(
"List of stations",
this);
749 QBoxLayout *layout=
new QVBoxLayout(gBox);
751 QStringList headerLabels;
752 headerLabels <<
"Station" <<
"GPS station" <<
"Pressure offset (mbar)";
757 for (QMap<QString, QString>::const_iterator it=
setup.getRinexFileNameByStn().begin();
758 it!=
setup.getRinexFileNameByStn().end(); ++it)
760 QString stnName=it.key();
761 QString gpsName=it.value();
764 if (
setup.getRinexPressureOffsetByStn().contains(stnName))
765 dP =
setup.getRinexPressureOffsetByStn().value(stnName);
768 item->setText( 0, stnName);
769 item->setData( 0, Qt::TextAlignmentRole, Qt::AlignLeft);
771 item->setText( 1, gpsName);
772 item->setData( 1, Qt::TextAlignmentRole, Qt::AlignRight);
774 item->setText( 2, QString(
"").sprintf(
"%.2f", dP));
775 item->setData( 2, Qt::TextAlignmentRole, Qt::AlignRight);
777 twRinexData_->header()->resizeSections(QHeaderView::ResizeToContents);
778 #if QT_VERSION >= 0x050000
779 twRinexData_->header()->setSectionResizeMode(QHeaderView::Interactive);
781 twRinexData_->header()->setResizeMode(QHeaderView::Interactive);
790 twRinexData_->setFrameStyle(QFrame::WinPanel | QFrame::Sunken);
794 QPushButton *bAdd =
new QPushButton(
"Add",
this);
795 QPushButton *bEdit =
new QPushButton(
"Edit",
this);
796 QPushButton *bDelete=
new QPushButton(
"Delete",
this);
798 bDelete->setMinimumSize((btnSize=bDelete->sizeHint()));
799 bAdd->setMinimumSize(btnSize);
800 bEdit->setMinimumSize(btnSize);
802 QBoxLayout *subLayout=
new QHBoxLayout();
803 layout->addLayout(subLayout);
804 subLayout->addStretch(1);
805 subLayout->addSpacing(3*btnSize.width());
806 subLayout->addWidget(bAdd);
807 subLayout->addWidget(bEdit);
808 subLayout->addWidget(bDelete);
810 mainLayout->addWidget(gBox);
826 w->setTitle(
"<p><font size=+1 face=\"Times\">Ready to run</font></p>");
827 w->setSubTitle(
"<font face=\"Times\"><p>We are done.</p></font>");
828 w->setPixmap(QWizard::WatermarkPixmap, QPixmap(
":/images/pattern_2.png"));
830 QVBoxLayout *layout =
new QVBoxLayout;
831 w->setLayout(layout);
835 "<h3>vgosDbProcLogs is ready to run</h3>"
838 QLabel *label =
new QLabel(
"<font face=\"Times\">" + str +
"</font>");
839 label->setWordWrap(
true);
840 layout->addWidget(label);
877 settings_->setValue(
"Logger/LogLevel", logLevel);
891 QMessageBox::warning(
this,
"Warning",
"Cannot create Home directory " +
910 QString stnName=twItem->text(0);
911 int sgn=
setup.defaultCableSignByStn().value(stnName);
926 QString stnName=twItem->text(0);
928 if (QMessageBox::warning(
this,
"Delete?",
929 "Are you sure to delete the station \"" + stnName +
930 "\" from the list of default cable cal signs?\n",
931 QMessageBox::No | QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes)
934 setup.defaultCableSignByStn().remove(stnName);
957 QString stnName=twItem->text(0);
958 QString gpsStn=
setup.rinexFileNameByStn().value(stnName);
960 if (
setup.rinexPressureOffsetByStn().contains(stnName))
961 dP =
setup.rinexPressureOffsetByStn().value(stnName);
963 &
setup.rinexPressureOffsetByStn(), stnName, gpsStn, dP,
978 QString stnName=twItem->text(0);
980 if (QMessageBox::warning(
this,
"Delete?",
981 "Are you sure to remove RINEX file setup for the station \"" + stnName +
"\"?\n",
982 QMessageBox::No | QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes)
985 setup.rinexFileNameByStn().remove(stnName);
986 if (
setup.rinexPressureOffsetByStn().contains(stnName))
987 setup.rinexPressureOffsetByStn().remove(stnName);
998 &
setup.rinexPressureOffsetByStn(), QString(
""), QString(
""), 0.0,
1014 const QString& stnName,
int cblSign,
1025 setWindowTitle(
"Deafault Cable Calibration Sign Editor");
1029 QBoxLayout *layout, *subLayout;
1034 gbox =
new QGroupBox(
"Default Cable Cal Sign",
this);
1035 grid =
new QGridLayout(gbox);
1037 label=
new QLabel(
"Station key:", gbox);
1038 label->setMinimumSize(label->sizeHint());
1039 grid ->addWidget(label, 0, 0, Qt::AlignLeft | Qt::AlignVCenter);
1041 label=
new QLabel(
"Sign:", gbox);
1042 label->setMinimumSize(label->sizeHint());
1043 grid ->addWidget(label, 1, 0, Qt::AlignLeft | Qt::AlignVCenter);
1051 leSign_->setFixedWidth(
leSign_->fontMetrics().width(
"QQQQQQQQQQ") + 10);
1052 grid ->addWidget(
leSign_, 1, 1);
1056 layout =
new QVBoxLayout(
this);
1057 layout -> addWidget(gbox);
1060 subLayout =
new QHBoxLayout();
1061 layout->addLayout(subLayout);
1062 subLayout->addStretch(1);
1064 QPushButton *bOk=
new QPushButton(
"OK",
this);
1065 QPushButton *bCancel=
new QPushButton(
"Cancel",
this);
1066 bOk->setDefault(
true);
1069 bCancel->setMinimumSize((btnSize=bCancel->sizeHint()));
1070 bOk->setMinimumSize(btnSize);
1071 subLayout->addWidget(bOk);
1072 subLayout->addWidget(bCancel);
1073 connect(bOk, SIGNAL(clicked()), SLOT(
accept()));
1074 connect(bCancel, SIGNAL(clicked()), SLOT(
reject()));
1094 wtItem_->setData( 0, Qt::TextAlignmentRole, Qt::AlignLeft);
1096 wtItem_->setData( 1, Qt::TextAlignmentRole, Qt::AlignCenter);
1100 "::accept(): cannot insert \"" +
stnName_ +
"\" in the map, the record already exists");
1111 "::accept(): cannot find \"" +
stnName_ +
"\" in the map");
1122 QString stn(
""), str(
"");
1130 if (str.at(0) ==
'+')
1132 else if (str.at(0) ==
'-')
1135 sgn = str.toInt()>0?1:-1;
1162 QMap<QString, double>* pressOffsetByStn,
const QString& stnName,
const QString rinexFname,
1164 QWidget* parent, Qt::WindowFlags flags)
1178 setWindowTitle(
"RINEX Files Editor");
1182 QBoxLayout *layout, *subLayout;
1187 gbox =
new QGroupBox(
"Import a RINEX file:",
this);
1188 grid =
new QGridLayout(gbox);
1190 label=
new QLabel(
"Station key:", gbox);
1191 label->setMinimumSize(label->sizeHint());
1192 grid->addWidget(label, 0, 0, Qt::AlignLeft | Qt::AlignVCenter);
1194 label=
new QLabel(
"GPS station:", gbox);
1195 label->setMinimumSize(label->sizeHint());
1196 grid->addWidget(label, 1, 0, Qt::AlignLeft | Qt::AlignVCenter);
1198 label=
new QLabel(
"Pressure offset:", gbox);
1199 label->setMinimumSize(label->sizeHint());
1200 grid->addWidget(label, 2, 0, Qt::AlignLeft | Qt::AlignVCenter);
1218 layout =
new QVBoxLayout(
this);
1219 layout -> addWidget(gbox);
1222 subLayout =
new QHBoxLayout();
1223 layout->addLayout(subLayout);
1224 subLayout->addStretch(1);
1226 QPushButton *bOk=
new QPushButton(
"OK",
this);
1227 QPushButton *bCancel=
new QPushButton(
"Cancel",
this);
1228 bOk->setDefault(
true);
1231 bCancel->setMinimumSize((btnSize=bCancel->sizeHint()));
1232 bOk->setMinimumSize(btnSize);
1233 subLayout->addWidget(bOk);
1234 subLayout->addWidget(bCancel);
1235 connect(bOk, SIGNAL(clicked()), SLOT(
accept()));
1236 connect(bCancel, SIGNAL(clicked()), SLOT(
reject()));
1258 wtItem_->setData( 0, Qt::TextAlignmentRole, Qt::AlignLeft);
1260 wtItem_->setData( 1, Qt::TextAlignmentRole, Qt::AlignRight);
1262 wtItem_->setData( 2, Qt::TextAlignmentRole, Qt::AlignRight);
1266 "::accept(): cannot insert \"" +
stnName_ +
"\" in the map, the record already exists");
1281 "::accept(): cannot find \"" +
stnName_ +
"\" in the map");
1292 QString stn(
""), gps(
"");
SgVersion libraryVersion("SgLib", 0, 7, 5, "Tuscarora (rc1)", SgMJD(2022, 2, 18, 17, 34))
const QString & getPath2AuxLogs() const
const QString & getPath2MasterFiles() const
bool getHave2SavePerSessionLog() const
void setHave2SavePerSessionLog(bool)
const QString & getPath2Home() const
void setPath2Home(const QString &)
SgIdentities & identities()
void setPath2VgosDbFiles(const QString &)
const QString & getPath2VgosDbFiles() const
void setPath2MasterFiles(const QString &)
void setPath2AuxLogs(const QString &)
const QString & getAcAbbrevName() const
const QString & getAcAbbName() const
void setAcAbbrevName(const QString &)
void setAcFullName(const QString &)
const QString & getUserEmailAddress() const
void setAcAbbName(const QString &)
const QString & getUserDefaultInitials() const
const QString & getAcFullName() const
void setUserDefaultInitials(const QString &)
void setUserEmailAddress(const QString &)
void setUserName(const QString &)
const QString & getUserName() const
virtual void write(LogLevel, quint32, const QString &, bool=false)
bool getIsStoreInFile() const
void setIsStoreInFile(bool isStoreInFile)
void setLogFacility(LogLevel lvl, quint32 f)
void setFileName(const QString &fileName)
void setIsNeedTimeMark(bool isNeedTimeMark)
void setCapacity(int capacity)
bool getIsNeedTimeMark() const
const QString & getFileName() const
const QString & getSoftwareName() const
const QString & getCodeName() const
QMap< QString, int > * signByStation_
VpDefaultCableCalSignEditor(QMap< QString, int > *signByStation, const QString &stnName, int cblSign, QTreeWidget *twDefaultCableSigns, QTreeWidgetItem *wtItem, QWidget *=0, Qt::WindowFlags=0)
QTreeWidget * twDefaultCableSigns_
QString className() const
QLineEdit * leStationName_
QTreeWidgetItem * wtItem_
QString className() const
QLineEdit * leStationKey_
QLineEdit * leRinexPressureOffset_
QTreeWidget * twRinexData_
VpRinexDataEditor(QMap< QString, QString > *fnameByStn, QMap< QString, double > *pressOffsetByStn, const QString &stnName, const QString rinexFname, double pressureOffset, QTreeWidget *twRinexData, QTreeWidgetItem *wtItem, QWidget *=0, Qt::WindowFlags=0)
QMap< QString, double > * rinexPressureOffsetByStn_
QMap< QString, QString > * rinexFileNameByStn_
QLineEdit * leRinexFileName_
QTreeWidgetItem * wtItem_
void insertDefaultCableSign()
VpWizardPage * createPageHomeDir()
QTreeWidget * twDefaultCableSigns_
QLineEdit * leSessionDirName_
VpWizardPage * createIntroPage()
void deleteDefaultCableSign()
QLineEdit * leAuxLogsDirName_
QCheckBox * cbMakeAuxLog_
QTreeWidget * twRinexData_
QCheckBox * cbLogTimeLabel_
QCheckBox * cbLogStoreInFile_
QLineEdit * leAcFullName_
QLineEdit * leHomeDirName_
QLineEdit * leAcAbbrevName_
QLineEdit * leUserInitials_
VpWizardPage * createPageRinexData()
QLineEdit * eLogFileName_
VpWizardPage * createPageOne()
VpWizardPage * createPageThree()
VpWizardPage * createConclusionPage()
VpWizardPage * createPageTwo()
QString className() const
VpWizardPage * createPageDefaultCableSigns()
QCheckBox * cbUseLocalLocale_
static int serialNumber()
VpStartupWizard(bool isFirstRun, bool isForcedRun, bool isSystemWideRun, QSettings *settings, QWidget *parent=0)
QLineEdit * leMasterFilesDirName_
static const int serialNumber_
void editDefaultCableSign()
QButtonGroup * bgLogLevels_
QLineEdit * leVgosDbDirName_
virtual ~VpStartupWizard()
void registerField(const QString &name, QWidget *widget, const char *property=0, const char *changedSignal=0)
SgVersion vgosDbProcLogsVersion