General Purpose Geodetic Library
NsStartupWizard.cpp
Go to the documentation of this file.
1 /*
2  *
3  * This file is a part of nuSolve. nuSolve is a part of CALC/SOLVE system
4  * and is designed to perform data analyis of a geodetic VLBI session.
5  * Copyright (C) 2010-2020 Sergei Bolotin.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #include "nuSolve.h"
23 #include "NsStartupWizard.h"
24 
25 #include <iostream>
26 #include <stdlib.h>
27 #include <unistd.h>
28 #include <sys/types.h>
29 #include <pwd.h>
30 
31 #include <QtCore/QDir>
32 
33 
34 
35 #if QT_VERSION >= 0x050000
36 # include <QtWidgets/QBoxLayout>
37 # include <QtWidgets/QCheckBox>
38 # include <QtWidgets/QFrame>
39 # include <QtWidgets/QGroupBox>
40 # include <QtWidgets/QGridLayout>
41 # include <QtWidgets/QLabel>
42 # include <QtWidgets/QLineEdit>
43 # include <QtWidgets/QMessageBox>
44 # include <QtWidgets/QPushButton>
45 # include <QtWidgets/QVBoxLayout>
46 #else
47 # include <QtGui/QBoxLayout>
48 # include <QtGui/QCheckBox>
49 # include <QtGui/QFrame>
50 # include <QtGui/QGroupBox>
51 # include <QtGui/QGridLayout>
52 # include <QtGui/QLabel>
53 # include <QtGui/QLineEdit>
54 # include <QtGui/QMessageBox>
55 # include <QtGui/QPushButton>
56 # include <QtGui/QVBoxLayout>
57 #endif
58 
59 #include <QtGui/QPixmap>
60 
61 
62 
63 #include <SgLogger.h>
64 
65 
66 
67 
68 
69 
70 //
71 const int NsStartupWizard::serialNumber_ = 20170412; // 2017/04/12
72 //
73 /*=======================================================================================================
74 *
75 * METHODS:
76 *
77 *======================================================================================================*/
79 {
81 };
82 
83 
84 
85 //
86 NsStartupWizard::NsStartupWizard(bool isFirstRun, bool isForcedRun, bool isSystemWideRun,
87  QWidget *parent)
88  : QWizard(parent)
89 {
90  isFirstRun_ = isFirstRun;
91  isForcedRun_ = isForcedRun;
92  isSystemWideRun_ = isSystemWideRun;
93 
94  addPage(createIntroPage());
95  addPage(createPageHomeDir());
96  if (!isSystemWideRun_)
97  addPage(createPageOne());
98  addPage(createPageTwo());
99  addPage(createConclusionPage());
100 
101  setWizardStyle(ModernStyle);
102  // setOption(QWizard::ExtendedWatermarkPixmap);
103 
104  setPixmap(QWizard::LogoPixmap, QPixmap(":/images/NVI_logo.png"));
105  setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/pattern_1.png"));
106 
107  setWindowTitle(tr("Startup Wizard"));
108 };
109 
110 
111 
112 //
114 {
115 };
116 
117 
118 
119 //
121 {
122  NsWizardPage *w=new NsWizardPage();
123  QString str;
124 
125  // title:
126  // w->setTitle("<p><font size=+1 face=\"Times\">Wellcome to <b>&nu;Solve</b>!</font></p>");
127  w->setTitle("<p><font size=+1 face=\"Times\">Welcome to &nu;Solve</font></p>");
128 
129  // subTitle:
130  str = "The Startup Wizard will ask you few questions about software configuration.";
131  if (isFirstRun_)
132  w->setSubTitle("<font face=\"Times\"><p>Thank you for installing &nu;Solve version " +
133  nuSolveVersion.toString() + ".</p><p>" + str + "</p></font>");
134  else if (!isForcedRun_)
135  w->setSubTitle( "<font face=\"Times\"><p>Congratulation! You just have upgraded SgLib and &nu;Solve "
136  "software to the versions " + libraryVersion.toString() + " and " + nuSolveVersion.toString() +
137  ".</p><p>" + str + "</p></font>");
138  else
139  w->setSubTitle( "<font face=\"Times\"><p>We are appreciate your loyalty to Startup Wizard. "
140  "We can run it as many times as you want. Currently, you are using SgLib version " +
142  ") and &nu;Solve version " + nuSolveVersion.toString() + " (" +
143  nuSolveVersion.getCodeName() + ").</p><p>" + str + "</p></font>");
144 
145  w->setButtonText(QWizard::NextButton, "Agree");
146 
147  QVBoxLayout *layout = new QVBoxLayout;
148  w->setLayout(layout);
149 
150  // first label:
151  str =
152  "<h3>&nu;Solve</h3>"
153  "<p>&nu;Solve is software for VLBI data processing. "
154 
155  "<p>Copyright (C) 2010-2020 Sergei Bolotin.</p>"
156 
157  "<p>This program is free software: you can redistribute it and/or modify "
158  "it under the terms of the GNU General Public License as published by "
159  "the Free Software Foundation, either version 3 of the License, or "
160  "(at your option) any later version.</p>"
161 
162  "<p>This program is distributed in the hope that it will be useful, "
163  "but WITHOUT ANY WARRANTY; without even the implied warranty of "
164  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the "
165  "GNU General Public License for more details.</p>"
166 
167  "<p>You should have received a copy of the GNU General Public License "
168  "along with this program. If not, see http://www.gnu.org/licenses.</p>"
169 
170  "<p>Please, read carefully the license agreement and if you agree, press \"Agree\" button.</p>"
171  ""
172  "";
173  QLabel *label=new QLabel("<font face=\"Times\">" + str + "</font>");
174  label->setWordWrap(true);
175  layout->addWidget(label);
176  layout->addStretch(1);
177 
178  QCheckBox *cb=new QCheckBox("I have read and accept the conditions.", w);
179  w->registerField("warrantyAccepted*", cb);
180  layout->addWidget(cb);
181  layout->addSpacing(40);
182 
183  return w;
184 };
185 
186 
187 
188 //
190 {
191  NsWizardPage *w=new NsWizardPage();
192  QString userName(""), userLoginName(""), userEMail(""), userInitials("");
193  QString hostName(""), domainName("");
194  bool isDUN(false);
195  SgIdentities ids;
196  if (!isFirstRun_ &&
199  isDUN = true;
200 
201  if (isFirstRun_ || isDUN)
202  {
203  // guess user login name:
204  uid_t uid=geteuid();
205  struct passwd *pw=getpwuid(uid);
206  if (!pw)
207  perror("getpwuid: ");
208  else
209  {
210  char buff[256];
211  userLoginName = pw->pw_name;
212  userName = pw->pw_gecos;
213  if (userName.contains(","))
214  userName = userName.left(userName.indexOf(","));
215 
216  // guess host name:
217  if (gethostname(buff, sizeof(buff))==-1)
218  {
219  perror("gethostname: ");
220  userEMail = userName + "@localhost";
221  }
222  else
223  {
224  hostName = buff;
225  // If hostname contains at least one dot, assume this is F.Q.D.N. host name
226  // and do not ask about the domain name:
227  //
228  if (!hostName.contains("."))
229  {
230  // guess domain name:
231  if (getdomainname(buff, sizeof(buff))==-1)
232  perror("getdomainname: ");
233  else
234  {
235  domainName = buff;
236  if (!domainName.contains("(none)") && domainName.simplified().size()>0)
237  hostName += "." + domainName;
238  };
239  };
240  userEMail = userLoginName + "@" + hostName;
241  };
242  if (userName.contains(" "))
243  {
244  userInitials = userName.mid(0, 1) + userName.mid(userName.indexOf(" ") + 1, 1);
245  }
246  else if (userName.size()>=2)
247  userInitials = userName.left(2);
248  else
249  userInitials = "??";
250  };
251  }
252  else
253  {
254  userName = setup.identities().getUserName();
255  userEMail = setup.identities().getUserEmailAddress();
256  userInitials = setup.identities().getUserDefaultInitials();
257  };
258 
259  w->setTitle("<p><font size=+1 face=\"Times\">User identities</font></p>");
260  w->setSubTitle("<font face=\"Times\"><p>Please, specify your name and e-mail address.</p></font>");
261  w->setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/pattern_2.png"));
262 
263  QString str;
264  QLabel *label;
265  QVBoxLayout *layout=new QVBoxLayout;
266  w->setLayout(layout);
267  // layout->addStretch(1);
268 
269  str =
270  "<h3>User Identities</h3>"
271  "<p>Describe yourself, your name, e-mail, etc.</p>"
272  "<p>[Plus something else, more polite...]</p>"
273  "";
274  label = new QLabel("<font face=\"Times\">" + str + "</font>");
275  label->setWordWrap(true);
276  layout->addWidget(label);
277  layout->addSpacing(20);
278 
279  QGroupBox *gBox=new QGroupBox("User Identities", w);
280  QGridLayout *gridLayout=new QGridLayout(gBox);
281 
282  label = new QLabel("User Name:", gBox);
283  label->setMinimumSize(label->sizeHint());
284  leUserName_ = new QLineEdit(gBox);
285  leUserName_->setText(userName);
286  leUserName_->setMinimumSize(leUserName_->sizeHint());
287  gridLayout->addWidget(label, 0, 0);
288  gridLayout->addWidget(leUserName_, 0, 1);
289  //
290  label = new QLabel("E-mail address:", gBox);
291  label->setMinimumSize(label->sizeHint());
292  leUserEmail_ = new QLineEdit(gBox);
293  leUserEmail_->setText(userEMail);
294  leUserEmail_->setMinimumSize(leUserEmail_->sizeHint());
295  gridLayout->addWidget(label, 1, 0);
296  gridLayout->addWidget(leUserEmail_, 1, 1);
297  //
298  label = new QLabel("User's default initials:", gBox);
299  label->setMinimumSize(label->sizeHint());
300  leUserInitials_ = new QLineEdit(gBox);
301  leUserInitials_->setText(userInitials);
302  leUserInitials_->setMinimumSize(leUserInitials_->sizeHint());
303  gridLayout->addWidget(label, 2, 0);
304  gridLayout->addWidget(leUserInitials_, 2, 1);
305 
306  layout->addWidget(gBox);
307  // layout->addStretch(1);
308  return w;
309 };
310 
311 
312 
313 //
315 {
316  NsWizardPage *w=new NsWizardPage();
317  QString acFullName, acAbbrevName, acAbbName;
318  SgIdentities ids;
319  bool have2ForceUser(false);
320 
321  acFullName = setup.identities().getAcFullName();
322  acAbbrevName = setup.identities().getAcAbbrevName();
323  acAbbName = setup.identities().getAcAbbName();
324 
326  {
327  acFullName = "";
328  acAbbrevName = "";
329  acAbbName = "";
330  have2ForceUser = true;
331  };
332 
333  w->setTitle("<p><font size=+1 face=\"Times\">Analysis Center identities</font></p>");
334  w->setSubTitle("<font face=\"Times\"><p>Please, describe organization where you work.</p></font>");
335  w->setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/pattern_6.png"));
336 
337  QString str;
338  QLabel *label;
339  QVBoxLayout *layout=new QVBoxLayout;
340  w->setLayout(layout);
341  // layout->addStretch(1);
342 
343  str =
344  "<h3>Analysis Center</h3>"
345  "<p>Please, specify the analysis center.</p>"
346  "<p>[Plus something else, more polite...]</p>"
347  "";
348  label = new QLabel("<font face=\"Times\">" + str + "</font>");
349  label->setWordWrap(true);
350  layout->addWidget(label);
351  layout->addSpacing(20);
352 
353  QGroupBox *gBox=new QGroupBox("Analysis Center", w);
354  QGridLayout *gridLayout=new QGridLayout(gBox);
355  // int l;
356  label = new QLabel("Full Name:", gBox);
357  label->setMinimumSize(label->sizeHint());
358  leAcFullName_ = new QLineEdit(gBox);
359  leAcFullName_->setText(acFullName);
360  leAcFullName_->setMinimumSize(leAcFullName_->sizeHint());
361  // AC names could be long:
362  // leAcFullName_->setMinimumWidth(leAcFullName_->fontMetrics().width(acFullName) + 20);
363  gridLayout->addWidget(label, 0, 0);
364  gridLayout->addWidget(leAcFullName_, 0, 1);
365  //
366  label = new QLabel("Abbreviation:", gBox);
367  label->setMinimumSize(label->sizeHint());
368  leAcAbbrevName_ = new QLineEdit(gBox);
369  leAcAbbrevName_->setText(acAbbrevName);
370  leAcAbbrevName_->setMinimumSize(leAcAbbrevName_->sizeHint());
371  gridLayout->addWidget(label, 1, 0);
372  gridLayout->addWidget(leAcAbbrevName_, 1, 1);
373  //
374  label = new QLabel("Abbrev.:", gBox);
375  label->setMinimumSize(label->sizeHint());
376  leAcAbbName_ = new QLineEdit(gBox);
377  leAcAbbName_->setText(acAbbName);
378  leAcAbbName_->setMinimumSize(leAcAbbName_->sizeHint());
379  gridLayout->addWidget(label, 2, 0);
380  gridLayout->addWidget(leAcAbbName_, 2, 1);
381 
382  if (have2ForceUser)
383  {
384  w->registerField("acFullName*", leAcFullName_);
385  w->registerField("acAbbrevName*", leAcAbbrevName_);
386 // w->registerField("acAbbName*", leAcAbbName_);
387  };
388 
389  layout->addWidget(gBox);
390  // layout->addStretch(1);
391  return w;
392 };
393 
394 
395 
396 //
398 {
399  NsWizardPage *w=new NsWizardPage();
400  QString path2Home;
401  bool have2ForceUser(false);
402 
403  QString str;
404  QLabel *label;
405  QVBoxLayout *layout=new QVBoxLayout;
406  QGroupBox *gBox;
407  QGridLayout *gridLayout;
408  w->setLayout(layout);
409 
410  w->setTitle("<p><font size=+1 face=\"Times\">Essential directories of &nu;Solve</font></p>");
411  w->setSubTitle("<font face=\"Times\"><p>The working directory of the software.</p></font>");
412  w->setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/pattern_5.png"));
413 
414  if (isSystemWideRun_)
415  str =
416  "<h3>Default Directories</h3>"
417  "<p>Please, provide paths to data on your system.</p>"
418  "<p>Users will be able to overwrite default settings.</p>"
419  "";
420  else
421  str =
422  "<h3>&nu;Solve Home Directory</h3>"
423  "<p>Please, specify the software's home directory.</p>"
424  "<p>All paths that are not absolute will be counted form this directory. The software home "
425  "directory have to be writable for a user and should be different from user's home directory.</p>"
426  "";
427 
428  label = new QLabel("<font face=\"Times\">" + str + "</font>");
429  label->setWordWrap(true);
430  layout->addWidget(label);
431  layout->addSpacing(20);
432 
433  if (!isSystemWideRun_)
434  {
435  path2Home = setup.getPath2Home();
436 
437  if (isFirstRun_ || setup.getPath2Home()=="")
438  path2Home = QDir::homePath() + "/" + nuSolveVersion.getSoftwareName();
439  if (path2Home == QDir::homePath()) // cannot be user's home
440  have2ForceUser = true;
441 
442  gBox = new QGroupBox("Directories", w);
443  gridLayout = new QGridLayout(gBox);
444  //
445  label = new QLabel("Path to the software home directory:", gBox);
446  label->setMinimumSize(label->sizeHint());
447  leHomeDirName_ = new QLineEdit(gBox);
448  leHomeDirName_->setText(path2Home);
449  leHomeDirName_->setMinimumSize(leHomeDirName_->sizeHint());
450  gridLayout->addWidget(label, 0, 0);
451  gridLayout->addWidget(leHomeDirName_, 0, 1);
452  //
453  label = new QLabel("Path to logs for each session:", gBox);
454  label->setMinimumSize(label->sizeHint());
455  leAuxLogsDirName_ = new QLineEdit(gBox);
457  leAuxLogsDirName_->setMinimumSize(leAuxLogsDirName_->sizeHint());
458  gridLayout->addWidget(label, 1, 0);
459  gridLayout->addWidget(leAuxLogsDirName_, 1, 1);
460 
461  cbMakeAuxLog_ = new QCheckBox("Save a log file for each session (command line mode only)", gBox);
462  cbMakeAuxLog_->setMinimumSize(cbMakeAuxLog_->sizeHint());
464  gridLayout->addWidget(cbMakeAuxLog_, 2, 0, 1, 2);
465 
466  layout->addWidget(gBox);
467  //
468  if (have2ForceUser)
469  w->registerField("path2Home*", leHomeDirName_);
470  }
471  else
472  {
473  gBox = new QGroupBox("Essential paths", w);
474  gridLayout = new QGridLayout(gBox);
475  //
476  label = new QLabel("Executables of Catalog<->nuSolve Interface:", gBox);
477  label->setMinimumSize(label->sizeHint());
478  lePath2CatNu_ = new QLineEdit(gBox);
480  lePath2CatNu_->setMinimumSize(lePath2CatNu_->sizeHint());
481  gridLayout->addWidget(label, 0, 0);
482  gridLayout->addWidget(lePath2CatNu_, 0, 1);
483 
484  label = new QLabel("Observations (DBH) files:", gBox);
485  label->setMinimumSize(label->sizeHint());
486  lePath2Dbh_ = new QLineEdit(gBox);
487  lePath2Dbh_->setText(setup.getPath2DbhFiles());
488  lePath2Dbh_->setMinimumSize(lePath2Dbh_->sizeHint());
489  gridLayout->addWidget(label, 1, 0);
490  gridLayout->addWidget(lePath2Dbh_, 1, 1);
491  //
492  label = new QLabel("Observations (vgosDb) files:", gBox);
493  label->setMinimumSize(label->sizeHint());
494  lePath2VgosDb_ = new QLineEdit(gBox);
496  lePath2VgosDb_->setMinimumSize(lePath2VgosDb_->sizeHint());
497  gridLayout->addWidget(label, 2, 0);
498  gridLayout->addWidget(lePath2VgosDb_, 2, 1);
499  //
500  label = new QLabel("Observations (vgosDa) files:", gBox);
501  label->setMinimumSize(label->sizeHint());
502  lePath2VgosDa_ = new QLineEdit(gBox);
504  lePath2VgosDa_->setMinimumSize(lePath2VgosDa_->sizeHint());
505  gridLayout->addWidget(label, 3, 0);
506  gridLayout->addWidget(lePath2VgosDa_, 3, 1);
507  //
508  label = new QLabel("A priori files:", gBox);
509  label->setMinimumSize(label->sizeHint());
510  lePath2Apriori_ = new QLineEdit(gBox);
512  lePath2Apriori_->setMinimumSize(lePath2Apriori_->sizeHint());
513  gridLayout->addWidget(label, 4, 0);
514  gridLayout->addWidget(lePath2Apriori_, 4, 1);
515  //
516  label = new QLabel("Masterfiles:", gBox);
517  label->setMinimumSize(label->sizeHint());
518  lePath2Masterfiles_ = new QLineEdit(gBox);
520  lePath2Masterfiles_->setMinimumSize(lePath2Masterfiles_->sizeHint());
521  gridLayout->addWidget(label, 5, 0);
522  gridLayout->addWidget(lePath2Masterfiles_, 5, 1);
523 
524  layout->addWidget(gBox);
525  //
526  gBox = new QGroupBox("Miscellaneous output", w);
527  gridLayout = new QGridLayout(gBox);
528  //
529  label = new QLabel("Spoolfile output:", gBox);
530  label->setMinimumSize(label->sizeHint());
531  lePath2Spoolfiles_ = new QLineEdit(gBox);
533  lePath2Spoolfiles_->setMinimumSize(lePath2Spoolfiles_->sizeHint());
534  gridLayout->addWidget(label, 0, 0);
535  gridLayout->addWidget(lePath2Spoolfiles_, 0, 1);
536  //
537  label = new QLabel("List of not used observations output:", gBox);
538  label->setMinimumSize(label->sizeHint());
539  lePath2NotUsedObs_ = new QLineEdit(gBox);
541  lePath2NotUsedObs_->setMinimumSize(lePath2NotUsedObs_->sizeHint());
542  gridLayout->addWidget(label, 1, 0);
543  gridLayout->addWidget(lePath2NotUsedObs_, 1, 1);
544  //
545  label = new QLabel("Reports output:", gBox);
546  label->setMinimumSize(label->sizeHint());
547  lePath2Reports_ = new QLineEdit(gBox);
549  lePath2Reports_->setMinimumSize(lePath2Reports_->sizeHint());
550  gridLayout->addWidget(label, 2, 0);
551  gridLayout->addWidget(lePath2Reports_, 2, 1);
552  //
553  label = new QLabel("Save observations in NGS format:", gBox);
554  label->setMinimumSize(label->sizeHint());
555  lePath2NgsOutput_ = new QLineEdit(gBox);
557  lePath2NgsOutput_->setMinimumSize(lePath2NgsOutput_->sizeHint());
558  gridLayout->addWidget(label, 3, 0);
559  gridLayout->addWidget(lePath2NgsOutput_, 3, 1);
560  //
561  label = new QLabel("Plotter output (PS, PDF or ASCII files):", gBox);
562  label->setMinimumSize(label->sizeHint());
563  lePath2PlotterOutput_ = new QLineEdit(gBox);
565  lePath2PlotterOutput_->setMinimumSize(lePath2PlotterOutput_->sizeHint());
566  gridLayout->addWidget(label, 4, 0);
567  gridLayout->addWidget(lePath2PlotterOutput_, 4, 1);
568  //
569  label = new QLabel("State and intermediate results:", gBox);
570  label->setMinimumSize(label->sizeHint());
571  lePath2IntermediateResults_ = new QLineEdit(gBox);
573  lePath2IntermediateResults_->setMinimumSize(lePath2IntermediateResults_->sizeHint());
574  gridLayout->addWidget(label, 5, 0);
575  gridLayout->addWidget(lePath2IntermediateResults_, 5, 1);
576  //
577  label = new QLabel("Path to the auxiliary logs:", gBox);
578  label->setMinimumSize(label->sizeHint());
579  leAuxLogsDirName_ = new QLineEdit(gBox);
581  leAuxLogsDirName_->setMinimumSize(leAuxLogsDirName_->sizeHint());
582  gridLayout->addWidget(label, 6, 0);
583  gridLayout->addWidget(leAuxLogsDirName_, 6, 1);
584 
585  layout->addWidget(gBox);
586  };
587  return w;
588 };
589 
590 
591 
592 //
594 {
595  NsWizardPage *w=new NsWizardPage();
596  QString str;
597 
598  w->setTitle("<p><font size=+1 face=\"Times\">Ready to run</font></p>");
599  w->setSubTitle("<font face=\"Times\"><p>We are done.</p></font>");
600  w->setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/pattern_3.png"));
601 
602  QVBoxLayout *layout = new QVBoxLayout;
603  w->setLayout(layout);
604 
605  // first label:
606  str =
607  "<h3>&nu;Solve is ready to run</h3>"
608  "<p>Have a happy &nu;Solving!</p>"
609  "";
610  QLabel *label = new QLabel("<font face=\"Times\">" + str + "</font>");
611  label->setWordWrap(true);
612  layout->addWidget(label);
613 
614  return w;
615 };
616 
617 
618 
620 {
621  if (!isSystemWideRun_)
622  {
628  };
632 
633  if (isSystemWideRun_)
634  {
648  };
649  //
650  // check home dir:
651  if (!isSystemWideRun_)
652  {
653  QDir dir;
654  if (!dir.exists(setup.getPath2Home()))
655  {
656  if (!dir.mkpath(setup.getPath2Home()))
657  QMessageBox::warning(this, "Warning", "Cannot create Home directory " +
658  setup.getPath2Home());
659  else
661  ": the directory " + setup.getPath2Home() + " has been created");
662  };
663  };
664  //
665  QWizard::accept();
666 };
667 /*=====================================================================================================*/
SgVersion nuSolveVersion("nuSolve", 0, 7, 5, "Carroll Creek (rc)", SgMJD(2022, 2, 18, 17, 34))
SgLogger * logger
Definition: SgLogger.cpp:231
SgVersion libraryVersion("SgLib", 0, 7, 5, "Tuscarora (rc1)", SgMJD(2022, 2, 18, 17, 34))
void setPath2APrioriFiles(const QString &)
Definition: NsSetup.h:736
const QString & getPath2AuxLogs() const
Definition: NsSetup.h:510
void setPath2NgsOutput(const QString &)
Definition: NsSetup.h:776
void setPath2DbhFiles(const QString &)
Definition: NsSetup.h:720
const QString & getPath2ReportOutput() const
Definition: NsSetup.h:470
const QString & getPath2CatNuInterfaceExec() const
Definition: NsSetup.h:414
void setPath2SpoolFileOutput(const QString &)
Definition: NsSetup.h:752
const QString & getPath2MasterFiles() const
Definition: NsSetup.h:446
void setPath2VgosDaFiles(const QString &path)
Definition: NsSetup.h:206
bool getHave2SavePerSessionLog() const
Definition: NsSetup.h:518
const QString & getPath2SpoolFileOutput() const
Definition: NsSetup.h:454
void setPath2IntermediateResults(const QString &)
Definition: NsSetup.h:792
void setHave2SavePerSessionLog(bool)
Definition: NsSetup.h:816
const QString & getPath2Home() const
Definition: NsSetup.h:406
void setPath2CatNuInterfaceExec(const QString &)
Definition: NsSetup.h:712
void setPath2Home(const QString &)
Definition: NsSetup.h:704
void setPath2ReportOutput(const QString &)
Definition: NsSetup.h:768
SgIdentities & identities()
Definition: NsSetup.h:566
void setPath2NotUsedObsFileOutput(const QString &)
Definition: NsSetup.h:760
const QString & getPath2APrioriFiles() const
Definition: NsSetup.h:438
const QString & getPath2VgosDaFiles() const
Definition: NsSetup.h:87
const QString & getPath2DbhFiles() const
Definition: NsSetup.h:422
void setPath2PlotterOutput(const QString &)
Definition: NsSetup.h:784
const QString & getPath2PlotterOutput() const
Definition: NsSetup.h:486
void setPath2VgosDbFiles(const QString &)
Definition: NsSetup.h:728
const QString & getPath2VgosDbFiles() const
Definition: NsSetup.h:430
void setPath2MasterFiles(const QString &)
Definition: NsSetup.h:744
const QString & getPath2NgsOutput() const
Definition: NsSetup.h:478
void setPath2AuxLogs(const QString &)
Definition: NsSetup.h:808
const QString & getPath2NotUsedObsFileOutput() const
Definition: NsSetup.h:462
const QString & getPath2IntermediateResults() const
Definition: NsSetup.h:494
NsWizardPage * createConclusionPage()
QLineEdit * lePath2Dbh_
QLineEdit * lePath2VgosDa_
QLineEdit * lePath2CatNu_
QLineEdit * lePath2Spoolfiles_
NsStartupWizard(bool isFirstRun, bool isForcedRun, bool isSystemWideRun, QWidget *parent=0)
QLineEdit * leAcFullName_
QLineEdit * leAcAbbrevName_
virtual ~NsStartupWizard()
QLineEdit * lePath2Reports_
static const int serialNumber_
QLineEdit * lePath2IntermediateResults_
QLineEdit * lePath2Apriori_
QLineEdit * lePath2VgosDb_
QCheckBox * cbMakeAuxLog_
NsWizardPage * createPageHomeDir()
QLineEdit * lePath2NotUsedObs_
static int serialNumber()
QLineEdit * lePath2NgsOutput_
QLineEdit * leUserInitials_
QString className() const
NsWizardPage * createPageTwo()
QLineEdit * leAcAbbName_
NsWizardPage * createIntroPage()
QLineEdit * lePath2Masterfiles_
QLineEdit * lePath2PlotterOutput_
QLineEdit * leHomeDirName_
NsWizardPage * createPageOne()
QLineEdit * leAuxLogsDirName_
QLineEdit * leUserName_
QLineEdit * leUserEmail_
void registerField(const QString &name, QWidget *widget, const char *property=0, const char *changedSignal=0)
const QString & getAcAbbrevName() const
Definition: SgIdentities.h:247
const QString & getAcAbbName() const
Definition: SgIdentities.h:255
void setAcAbbrevName(const QString &)
Definition: SgIdentities.h:367
void setAcFullName(const QString &)
Definition: SgIdentities.h:359
const QString & getUserEmailAddress() const
Definition: SgIdentities.h:223
void setAcAbbName(const QString &)
Definition: SgIdentities.h:375
const QString & getUserDefaultInitials() const
Definition: SgIdentities.h:231
const QString & getAcFullName() const
Definition: SgIdentities.h:239
void setUserDefaultInitials(const QString &)
Definition: SgIdentities.h:351
void setUserEmailAddress(const QString &)
Definition: SgIdentities.h:343
void setUserName(const QString &)
Definition: SgIdentities.h:335
const QString & getUserName() const
Definition: SgIdentities.h:215
virtual void write(LogLevel, quint32, const QString &, bool=false)
Definition: SgLogger.cpp:88
const QString & getSoftwareName() const
Definition: SgVersion.h:254
const QString & getCodeName() const
Definition: SgVersion.h:286
QString toString() const
Definition: SgVersion.h:356
NsSetup setup
Definition: nuSolve.cpp:61