Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 19.12 KB | None | 0 0
  1. --- src/core/applications/application.cpp
  2. +++ src/core/applications/application.cpp
  3. @@ -237,6 +237,10 @@ QString Application::getModuleText(Module module)
  4.          return "TransmissionLineStructureDistances";
  5.      case Module_TransmissionLineFinalSags:
  6.          return "TransmissionLineFinalSags";
  7. +    case Module_TransmissionLineCableType:
  8. +        return "TransmissionLineCableType";
  9. +    case Module_TransmissionLineInputOptions:
  10. +        return "TransmissionLineInputOptions";
  11.      case Module_TransmissionLineMinimumPhaseGroundStructureDistance:
  12.          return "TransmissionLineMinimumPhaseGroundStructureDistance";
  13.      case Module_TransmissionLinePercentualDischarges:
  14. --- src/core/applications/application.h
  15. +++ src/core/applications/application.h
  16. @@ -80,6 +80,8 @@ public:
  17.          Module_TransmissionLineCleareance,
  18.          Module_TransmissionLineStructureDistances,
  19.          Module_TransmissionLineFinalSags,
  20. +        Module_TransmissionLineCableType,
  21. +        Module_TransmissionLineInputOptions,
  22.          Module_TransmissionLineMinimumPhaseGroundStructureDistance,
  23.          Module_TransmissionLinePercentualDischarges,
  24.          Module_TransmissionLineFaultClearTime,
  25. --- src/core/applications/windpressure.cpp
  26. +++ src/core/applications/windpressure.cpp
  27. @@ -30,6 +30,8 @@ WindPressure::WindPressure(Project *project) :
  28.      m_modules[Module_TransmissionLineCleareance] = true;
  29.      m_modules[Module_TransmissionLineStructureDistances] = true;
  30.      m_modules[Module_TransmissionLineFinalSags] = true;
  31. +    m_modules[Module_TransmissionLineCableType] = true;
  32. +    m_modules[Module_TransmissionLineInputOptions] = true;
  33.  }
  34.  
  35.  bool WindPressure::calculate(QString &error)
  36. --- src/core/transmissionline.cpp
  37. +++ src/core/transmissionline.cpp
  38. @@ -1,6 +1,8 @@
  39.  #include "transmissionline.h"
  40.  #include <util/utm.h>
  41.  #include <util/settings.h>
  42. +#include "core/database.h"
  43. +#include "core/cabletype.h"
  44.  #include "project.h"
  45.  #include "tower.h"
  46.  #include "towertype.h"
  47. @@ -51,6 +53,7 @@ void TransmissionLine::load(QSettings *settings)
  48.      m_towerWindSpan = settings->value("towerWindSpan").toString();
  49.      m_minimumTemperature = settings->value("minimumTemperature").toString();
  50.      m_averageTemperature = settings->value("averageTemperature").toString();
  51. +    m_operatingTemperature = settings->value("operatingTemperature").toString();
  52.      m_windTemperature = settings->value("windTemperature").toString();
  53.      m_minimumAltitude = settings->value("minimumAltitude").toString();
  54.      m_terrainCategory = static_cast<TerrainCategory>(settings->value("terrainCategory").toInt());
  55. @@ -62,6 +65,9 @@ void TransmissionLine::load(QSettings *settings)
  56.      m_distanceConductorSW = settings->value("distanceConductorSW").toString();
  57.      m_finalSagAtOperatingTemperature = settings->value("finalSagAtOperatingTemperature").toString();
  58.      m_finalSagAtAverageTemperature = settings->value("finalSagAtAverageTemperature").toString();
  59. +    uint cableTypeId = settings->value("cableId", 0).toUInt();
  60. +    m_cableType = g_database->getCableById(cableTypeId);
  61. +    m_inputOption = settings->value("inputOption").toString();
  62.  
  63.      m_transposed = settings->value("transposed", false).toBool();
  64.      m_maxCircuits = settings->value("maxCircuits", 1).toInt();
  65. @@ -196,6 +202,7 @@ void TransmissionLine::save(QSettings *settings, bool saveTemporary)
  66.      settings->setValue("towerWindSpan", m_towerWindSpan);
  67.      settings->setValue("minimumTemperature", m_minimumTemperature);
  68.      settings->setValue("averageTemperature", m_averageTemperature);
  69. +    settings->setValue("operatingTemperature", m_operatingTemperature);
  70.      settings->setValue("windTemperature", m_windTemperature);
  71.      settings->setValue("minimumAltitude", m_minimumAltitude);
  72.      settings->setValue("terrainCategory", m_terrainCategory);
  73. @@ -207,6 +214,11 @@ void TransmissionLine::save(QSettings *settings, bool saveTemporary)
  74.      settings->setValue("distanceConductorSW", m_distanceConductorSW);
  75.      settings->setValue("finalSagAtOperatingTemperature", m_finalSagAtOperatingTemperature);
  76.      settings->setValue("finalSagAtAverageTemperature", m_finalSagAtAverageTemperature);
  77. +    if(CableTypePtr cableType = m_cableType.lock())
  78. +        settings->setValue("cableId", cableType->getId());
  79. +    else
  80. +        settings->setValue("cableId", 0);
  81. +    settings->setValue("inputOption", m_inputOption);
  82.      settings->setValue("ignored", m_ignored);
  83.  
  84.      settings->beginGroup("RiskFailureGaps");
  85. --- src/core/transmissionline.h
  86. +++ src/core/transmissionline.h
  87. @@ -120,6 +120,7 @@ public:
  88.      void setTowerWindSpan(const QString& towerWindSpan) { m_towerWindSpan = towerWindSpan; }
  89.      void setMinimumTemperature(const QString& minimumTemperature) { m_minimumTemperature = minimumTemperature; }
  90.      void setAverageTemperature(const QString& averageTemperature) { m_averageTemperature = averageTemperature; }
  91. +    void setOperatingTemperature(const QString& operatingTemperature) { m_operatingTemperature = operatingTemperature; }
  92.      void setWindTemperature(const QString& windTemperature) { m_windTemperature = windTemperature; }
  93.      void setMinimumAltitude(const QString& minimumAltitude) { m_minimumAltitude = minimumAltitude; }
  94.      void setTerrainCategory(TerrainCategory terrainCategory) { m_terrainCategory = terrainCategory; }
  95. @@ -131,6 +132,8 @@ public:
  96.      void setDistanceConductorSW(const QString& distanceConductorSW) { m_distanceConductorSW = distanceConductorSW; }
  97.      void setFinalSagAtOperationTemperature(const QString& finalSagAtOperatingTemperature) { m_finalSagAtOperatingTemperature = finalSagAtOperatingTemperature; }
  98.      void setFinalSagAtAverageTemperature(const QString& finalSagAtAverageTemperature) { m_finalSagAtAverageTemperature = finalSagAtAverageTemperature; }
  99. +    void setCableType(const CableTypePtr& cableType) { m_cableType = cableType; }
  100. +    void setInputOption(const QString& inputOption) { m_inputOption = inputOption; }
  101.  
  102.      void setAverageElevation(const QString& elevation);
  103.      void setAverageGroundResistance(const QString& groundResistance);
  104. @@ -182,6 +185,8 @@ public:
  105.      QString getMinimumTemperatureText() const { return m_minimumTemperature; }
  106.      double getAverageTemperature() const { return m_averageTemperature.toDouble(); }
  107.      QString getAverageTemperatureText() const { return m_averageTemperature; }
  108. +    double getOperatingTemperature() const { return m_operatingTemperature.toDouble(); }
  109. +    QString getOperatingTemperatureText() const { return m_operatingTemperature; }
  110.      double getWindTemperature() const { return m_windTemperature.toDouble(); }
  111.      QString getWindTemperatureText() const { return m_windTemperature; }
  112.      double getMinimumAltitude() const { return m_minimumAltitude.toDouble(); }
  113. @@ -203,6 +208,8 @@ public:
  114.      QString getFinalSagAtOperatingTemperatureText() const { return m_finalSagAtOperatingTemperature; }
  115.      double getFinalSagAtAverageTemperature() const { return m_finalSagAtAverageTemperature.toDouble(); }
  116.      QString getFinalSagAtAverageTemperatureText() const { return m_finalSagAtAverageTemperature; }
  117. +    CableTypePtr getCableType() { return m_cableType.lock(); }
  118. +    QString getInputOption() { return m_inputOption; }
  119.  
  120.      double getAverageElevation();
  121.      double getAverageGroundResistance();
  122. @@ -261,6 +268,7 @@ private:
  123.      QString m_towerWindSpan;
  124.      QString m_minimumTemperature;
  125.      QString m_averageTemperature;
  126. +    QString m_operatingTemperature;
  127.      QString m_windTemperature;
  128.      QString m_minimumAltitude;
  129.      TerrainCategory m_terrainCategory = TerrainCategory_A;
  130. @@ -272,6 +280,8 @@ private:
  131.      QString m_distanceConductorSW;
  132.      QString m_finalSagAtOperatingTemperature;
  133.      QString m_finalSagAtAverageTemperature;
  134. +    CableTypeWeakPtr m_cableType;
  135. +    QString m_inputOption;
  136.      bool m_ignored = false;
  137.  
  138.      // Output variables
  139. --- src/views/transmissionlinesview.cpp
  140. +++ src/views/transmissionlinesview.cpp
  141. @@ -1,6 +1,8 @@
  142.  #include "transmissionlinesview.h"
  143.  #include "inputview.h"
  144.  #include "riskfailuregapview.h"
  145. +#include "core/database.h"
  146. +#include "core/cabletype.h"
  147.  #include <core/project.h>
  148.  #include <core/substation.h>
  149.  #include <core/transmissionline.h>
  150. @@ -112,7 +114,9 @@ TransmissionLinesView::TransmissionLinesView(InputView *parent) :
  151.      m_minimumTemperature = new InputLineEdit(InputLineEdit::Real);
  152.      m_averageTemperatureLabel = new QLabel(tr("Average"));
  153.      m_averageTemperature = new InputLineEdit(InputLineEdit::Real);
  154. -    m_windTemperatureLabel = new QLabel(tr("Coincident with wind"));
  155. +    m_operatingTemperatureLabel = new QLabel(tr("Operating"));
  156. +    m_operatingTemperature = new InputLineEdit(InputLineEdit::Real);
  157. +    m_windTemperatureLabel = new QLabel(tr("Wind temperature") + QString(" (%1C)").arg(QChar(0x00B0)));
  158.      m_windTemperature = new InputLineEdit(InputLineEdit::Real);
  159.      m_minimumAltitudeLabel = new QLabel(tr("Minimum altitude") + " (m)");
  160.      m_minimumAltitude = new InputLineEdit(InputLineEdit::GreaterEqual, 0.0);
  161. @@ -145,7 +149,14 @@ TransmissionLinesView::TransmissionLinesView(InputView *parent) :
  162.      m_finalSagAtAverageTemperatureLabel = new QLabel(tr("At average temperature"));
  163.      m_finalSagAtAverageTemperature = new InputLineEdit(InputLineEdit::GreaterThan, 0.0);
  164.      m_finalSagHelpButton = new HelpButton(tr("If these fields are left blank, the program will calculate them."));
  165. -
  166. +    m_cablesLabel = new QLabel(tr("Cable code"));
  167. +    m_cables = new QComboBox();
  168. +    m_inputOptionsLabel = new QLabel(tr("Input option"));
  169. +    m_inputOptions = new QComboBox();
  170. +    connect(m_inputOptions, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateOptionsVisibility()));
  171. +    m_inputOptions->addItem(tr("Final sags"));
  172. +    m_inputOptions->addItem(tr("Cable condition temperatures"));
  173. +    m_inputOptionsHelpButton = new HelpButton(tr("You can either enter the final sags, or the cable condition temperatures. If you choose the second option, the final sags are going to be calculated."));
  174.  
  175.      int row = 0;
  176.      gridLayout->addWidget(new QLabel(tr("Name")), row, 0);
  177. @@ -205,8 +216,8 @@ TransmissionLinesView::TransmissionLinesView(InputView *parent) :
  178.      temperaturesLayout->addWidget(m_minimumTemperature, 1);
  179.      temperaturesLayout->addWidget(m_averageTemperatureLabel);
  180.      temperaturesLayout->addWidget(m_averageTemperature, 1);
  181. -    temperaturesLayout->addWidget(m_windTemperatureLabel);
  182. -    temperaturesLayout->addWidget(m_windTemperature, 1);
  183. +    temperaturesLayout->addWidget(m_operatingTemperatureLabel);
  184. +    temperaturesLayout->addWidget(m_operatingTemperature, 1);
  185.  
  186.      QHBoxLayout *structureLayout = new QHBoxLayout;
  187.      structureLayout->addWidget(m_distanceConductorsInfSupLabel);
  188. @@ -224,8 +235,8 @@ TransmissionLinesView::TransmissionLinesView(InputView *parent) :
  189.      gridLayout->addWidget(m_averageSpan, row++, 1);
  190.      gridLayout->addWidget(m_towerWindSpanLabel, row, 0);
  191.      gridLayout->addWidget(m_towerWindSpan, row++, 1);
  192. -    gridLayout->addWidget(m_temperaturesLabel, row, 0);
  193. -    gridLayout->addLayout(temperaturesLayout, row++, 1);
  194. +    gridLayout->addWidget(m_windTemperatureLabel, row, 0);
  195. +    gridLayout->addWidget(m_windTemperature, row++, 1);
  196.      gridLayout->addWidget(m_minimumAltitudeLabel, row, 0);
  197.      gridLayout->addWidget(m_minimumAltitude, row++, 1);
  198.      gridLayout->addWidget(m_terrainCategoryLabel, row, 0);
  199. @@ -241,9 +252,16 @@ TransmissionLinesView::TransmissionLinesView(InputView *parent) :
  200.      gridLayout->addWidget(m_clearance, row++, 1);
  201.      gridLayout->addWidget(m_structureDistances, row, 0);
  202.      gridLayout->addLayout(structureLayout, row++, 1);
  203. +    gridLayout->addWidget(m_cablesLabel, row, 0);
  204. +    gridLayout->addWidget(m_cables, row++, 1);
  205. +    gridLayout->addWidget(m_inputOptionsLabel, row, 0);
  206. +    gridLayout->addWidget(m_inputOptions, row, 1);
  207. +    gridLayout->addWidget(m_inputOptionsHelpButton, row++, 2);
  208.      gridLayout->addWidget(m_finalsSags, row, 0);
  209.      gridLayout->addLayout(finalSagLayout, row, 1);
  210.      gridLayout->addWidget(m_finalSagHelpButton, row++, 2);
  211. +    gridLayout->addWidget(m_temperaturesLabel, row, 0);
  212. +    gridLayout->addLayout(temperaturesLayout, row++, 1);
  213.  
  214.      connect(m_name, SIGNAL(textEdited(QString)), this, SLOT(nameEdited(QString)));
  215.      connect(g_project, SIGNAL(projectPreSave()), this, SLOT(preSave()));
  216. @@ -253,6 +271,20 @@ TransmissionLinesView::TransmissionLinesView(InputView *parent) :
  217.      updateWidgetsVisibility();
  218.  }
  219.  
  220. +void TransmissionLinesView::updateFromDatabase()
  221. +{
  222. +    QVector<CableTypePtr> cables = g_database->getCables();
  223. +    qSort(cables.begin(), cables.end(), [](const CableTypePtr& a, const CableTypePtr& b) {
  224. +        return a->getCode() < b->getCode();
  225. +    });
  226. +
  227. +    m_cables->blockSignals(true);
  228. +    m_cables->clear();
  229. +    for(const CableTypePtr& cable : cables)
  230. +        m_cables->addItem(cable->getCode(), cable->getId());
  231. +    m_cables->blockSignals(false);
  232. +}
  233. +
  234.  void TransmissionLinesView::updateFromProject(int index)
  235.  {
  236.      const QVector<TransmissionLinePtr>& transmissionLines = g_project->getTransmissionLines();
  237. @@ -320,6 +352,7 @@ void TransmissionLinesView::updateFromProject(int index)
  238.      m_towerWindSpan->setText(tl->getTowerWindSpanText());
  239.      m_minimumTemperature->setText(tl->getMinimumTemperatureText());
  240.      m_averageTemperature->setText(tl->getAverageTemperatureText());
  241. +    m_operatingTemperature->setText(tl->getOperatingTemperatureText());
  242.      m_windTemperature->setText(tl->getWindTemperatureText());
  243.      m_minimumAltitude->setText(tl->getMinimumAltitudeText());
  244.      m_terrainCategory->setCurrentIndex(tl->getTerrainCategory());
  245. @@ -331,6 +364,15 @@ void TransmissionLinesView::updateFromProject(int index)
  246.      m_distanceConductorsSW->setText(tl->getDistanceConductorSWText());
  247.      m_finalSagAtOperatingTemperature->setText(tl->getFinalSagAtOperatingTemperatureText());
  248.      m_finalSagAtAverageTemperature->setText(tl->getFinalSagAtAverageTemperatureText());
  249. +    int cableTypeIndex = -1;
  250. +    if(CableTypePtr cableType = tl->getCableType())
  251. +        cableTypeIndex = m_cables->findData(cableType->getId());
  252. +    m_cables->setCurrentIndex(cableTypeIndex);
  253. +    int inputOption = 0;
  254. +    if(!tl->getInputOption().isEmpty())
  255. +        inputOption = m_inputOptions->findText(tl->getInputOption());
  256. +    m_inputOptions->setCurrentIndex(inputOption);
  257. +    updateOptionsVisibility();
  258.  }
  259.  
  260.  void TransmissionLinesView::updateToProject(int index)
  261. @@ -365,6 +407,7 @@ void TransmissionLinesView::updateToProject(int index)
  262.      tl->setTowerWindSpan(m_towerWindSpan->text());
  263.      tl->setMinimumTemperature(m_minimumTemperature->text());
  264.      tl->setAverageTemperature(m_averageTemperature->text());
  265. +    tl->setOperatingTemperature(m_operatingTemperature->text());
  266.      tl->setWindTemperature(m_windTemperature->text());
  267.      tl->setMinimumAltitude(m_minimumAltitude->text());
  268.      tl->setTerrainCategory(static_cast<TerrainCategory>(m_terrainCategory->currentData().toInt()));
  269. @@ -376,12 +419,17 @@ void TransmissionLinesView::updateToProject(int index)
  270.      tl->setDistanceConductorSW(m_distanceConductorsSW->text());
  271.      tl->setFinalSagAtOperationTemperature(m_finalSagAtOperatingTemperature->text());
  272.      tl->setFinalSagAtAverageTemperature(m_finalSagAtAverageTemperature->text());
  273. +    uint cableTypeId = m_cables->currentData().toUInt();
  274. +    tl->setCableType(g_database->getCableById(cableTypeId));
  275. +    tl->setInputOption(m_inputOptions->currentText());
  276.  
  277.      m_riskFailure->updateToProject();
  278.  }
  279.  
  280.  void TransmissionLinesView::showEvent(QShowEvent *)
  281.  {
  282. +    updateFromDatabase();
  283. +
  284.      TransmissionLinePtr tl = m_inputView->getTransmissionLine();
  285.      updateFromProject(g_project->getTransmissionLineIndex(tl));
  286.  }
  287. @@ -495,6 +543,8 @@ void TransmissionLinesView::updateWidgetsVisibility()
  288.      m_minimumTemperature->setVisible(showWindPressureTemperatures);
  289.      m_averageTemperatureLabel->setVisible(showWindPressureTemperatures);
  290.      m_averageTemperature->setVisible(showWindPressureTemperatures);
  291. +    m_operatingTemperatureLabel->setVisible(showWindPressureTemperatures);
  292. +    m_operatingTemperature->setVisible(showWindPressureTemperatures);
  293.      m_windTemperatureLabel->setVisible(showWindPressureTemperatures);
  294.      m_windTemperature->setVisible(showWindPressureTemperatures);
  295.  
  296. @@ -537,6 +587,37 @@ void TransmissionLinesView::updateWidgetsVisibility()
  297.      m_finalSagAtAverageTemperatureLabel->setVisible(showFinalSags);
  298.      m_finalSagAtAverageTemperature->setVisible(showFinalSags);
  299.      m_finalSagHelpButton->setVisible(showFinalSags);
  300. +
  301. +    bool showCableType = g_project->hasModule(Application::Module_TransmissionLineCableType);
  302. +    m_cablesLabel->setVisible(showCableType);
  303. +    m_cables->setVisible(showCableType);
  304. +
  305. +    bool showInputOptions = g_project->hasModule(Application::Module_TransmissionLineInputOptions);
  306. +    m_inputOptionsLabel->setVisible(showInputOptions);
  307. +    m_inputOptions->setVisible(showInputOptions);
  308. +    m_inputOptionsHelpButton->setVisible(showInputOptions);
  309. +}
  310. +
  311. +void TransmissionLinesView::updateOptionsVisibility()
  312. +{
  313. +    bool option = false;
  314. +    if(m_inputOptions->currentText() == "Cable condition temperatures")
  315. +        option = true;
  316. +
  317. +    m_temperaturesLabel->setVisible(option);
  318. +    m_minimumTemperatureLabel->setVisible(option);
  319. +    m_minimumTemperature->setVisible(option);
  320. +    m_averageTemperatureLabel->setVisible(option);
  321. +    m_averageTemperature->setVisible(option);
  322. +    m_operatingTemperatureLabel->setVisible(option);
  323. +    m_operatingTemperature->setVisible(option);
  324. +
  325. +    m_finalsSags->setVisible(!option);
  326. +    m_finalSagAtOperatingTemperatureLabel->setVisible(!option);
  327. +    m_finalSagAtOperatingTemperature->setVisible(!option);
  328. +    m_finalSagAtAverageTemperatureLabel->setVisible(!option);
  329. +    m_finalSagAtAverageTemperature->setVisible(!option);
  330. +    m_finalSagHelpButton->setVisible(!option);
  331.  }
  332.  
  333.  void TransmissionLinesView::transmissionLineChanged(int currentIndex)
  334. --- src/views/transmissionlinesview.h
  335. +++ src/views/transmissionlinesview.h
  336. @@ -19,6 +19,7 @@ class TransmissionLinesView : public QScrollArea
  337.  public:
  338.      explicit TransmissionLinesView(InputView *parent = 0);
  339.  
  340. +    void updateFromDatabase();
  341.      void updateFromProject(int index = -1);
  342.      void updateToProject(int index);
  343.  
  344. @@ -27,6 +28,7 @@ public:
  345.  
  346.  private slots:
  347.      void updateWidgetsVisibility();
  348. +    void updateOptionsVisibility();
  349.      void transmissionLineChanged(int currentIndex);
  350.      void nameEdited(QString name);
  351.      void preSave();
  352. @@ -97,6 +99,8 @@ private:
  353.      QLineEdit *m_minimumTemperature;
  354.      QLabel *m_averageTemperatureLabel;
  355.      QLineEdit *m_averageTemperature;
  356. +    QLabel *m_operatingTemperatureLabel;
  357. +    QLineEdit *m_operatingTemperature;
  358.      QLabel *m_windTemperatureLabel;
  359.      QLineEdit *m_windTemperature;
  360.      QLabel *m_minimumAltitudeLabel;
  361. @@ -123,6 +127,11 @@ private:
  362.      QLabel *m_finalSagAtAverageTemperatureLabel;
  363.      QLineEdit *m_finalSagAtAverageTemperature;
  364.      HelpButton *m_finalSagHelpButton;
  365. +    QLabel *m_cablesLabel;
  366. +    QComboBox *m_cables;
  367. +    QLabel *m_inputOptionsLabel;
  368. +    QComboBox *m_inputOptions;
  369. +    HelpButton *m_inputOptionsHelpButton;
  370.  
  371.      InputView *m_inputView;
  372.  };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement