Example #1
0
 def tbl_3_changed(self, row, col):
     if not self.loaded: return
     if self.tbl_3.verticalHeaderItem(row) is None: return
     item = self.tbl_3.item(row, col)
     if item is None: return
     key = self.tbl_3.verticalHeaderItem(row).text()
     if "flow units" in key.lower() or \
        "headloss" in key.lower() or \
        "unbalanced" in key.lower() or \
        "status report" in key.lower():
         # do nothing
         pass
     elif "maximum trials" in key.lower() or \
          "default pattern" in key.lower() or \
          "check freq" in key.lower() or \
          "max check" in key.lower():
         val, val_is_good = ParseData.intTryParse(item.text())
         if val_is_good:
             self.defaults.parameters_values[key] = val
     else:
         val, val_is_good = ParseData.floatTryParse(item.text())
         if val_is_good:
             self.defaults.parameters_values[key] = val
     self.parameter_changed = True
     pass
 def set_CN(self):
     props = []
     for i in range(0, len(CurveNumberInfiltration.metadata)):
         if "subcatch" in CurveNumberInfiltration.metadata[i].label.lower():
             continue
         elif "conduct" in CurveNumberInfiltration.metadata[i].label.lower():
             continue
         else:
             props.append(CurveNumberInfiltration.metadata[i].label)
     self.tblGeneric.setRowCount(len(props))
     self.tblGeneric.setVerticalHeaderLabels(props)
     #self.infil_model = CurveNumberInfiltration()
     for i in range(0, self.tblGeneric.rowCount()):
         vtitle = self.tblGeneric.verticalHeaderItem(i).text().lower()
         if "curve" in vtitle:
             val, val_is_good = ParseData.floatTryParse(self.defaults.infil_model_cn.curve_number)
             if val_is_good:
                 self.tblGeneric.setItem(i,0, QtGui.QTableWidgetItem(unicode(val)))
             else:
                 self.tblGeneric.setItem(i,0, QtGui.QTableWidgetItem(unicode(self.defaults.infil_model_cn.default_CN())))
         elif "dry" in vtitle:
             val, val_is_good = ParseData.floatTryParse(self.defaults.infil_model_cn.dry_days)
             if val_is_good:
                 self.tblGeneric.setItem(i,0, QtGui.QTableWidgetItem(unicode(val)))
             else:
                 self.tblGeneric.setItem(i,0, QtGui.QTableWidgetItem(unicode(self.defaults.infil_model_cn.default_dry_time())))
    def GetData(self):
        """
        construct pandas time series from grid data
        Returns:
        """
        del self.X[:]  #datetime
        del self.Y[:]  #value
        self.hour_only = True
        if self.tblTime.item(0, 0):
            if self.tblTime.item(0, 0).text():
                self.hour_only = False
        n = 0
        ldate = ""
        ltime = ""
        for row in range(self.tblTime.rowCount()):
            if self.tblTime.item(row, 2):
                y_val, y_val_good = ParseData.floatTryParse(
                    self.tblTime.item(row, 2).text())
                if y_val_good:
                    # as long as the value is good, then start parsing time stamp
                    self.Y.append(y_val)
                    if self.tblTime.item(row, 0):
                        if self.tblTime.item(row, 0).text():
                            ldate = self.tblTime.item(row, 0).text()
                    if self.tblTime.item(row, 1):
                        ltime, ltime_good = ParseData.floatTryParse(
                            self.tblTime.item(row, 1).text())
                        if ltime_good:
                            if self.tblTime.item(row, 1).text():
                                ltime = self.tblTime.item(row, 1).text()
                    if self.hour_only:
                        if ":" in ltime:
                            arr = ltime.split(":")
                            hr = 0
                            mm = 0
                            ss = 0
                            if len(arr) > 0:
                                hr = int(arr[0])
                            if len(arr) > 1:
                                mm = int(arr[1])
                            if len(arr) > 2:
                                ss = int(arr[2])
                            stamp = hr + mm / 60.0 + ss / 3600.0
                        else:
                            # if not in H:M format, then it is just fraction hours from beginning
                            stamp = float(ltime)
                    else:
                        stamp = pd.Timestamp(ldate + " " + ltime)

                    self.X.append(stamp)
                    n += 1
            else:
                return n
        return n
Example #4
0
 def GetData(self):
     n = 0
     for row in range(self.tblMult.rowCount()):
         if self.tblMult.item(row,0) and self.tblMult.item(row,1):
             x_val, x_val_good = ParseData.floatTryParse(self.tblMult.item(row, 0).text())
             y_val, y_val_good = ParseData.floatTryParse(self.tblMult.item(row, 1).text())
             if x_val_good and y_val_good:
                 if row + 1 >= self.MAXPOINTS:
                     break
                 else:
                     self.X[row + 1] = x_val
                     self.Y[row + 1] = y_val
                     n += 1
         else:
             return n
     return n
Example #5
0
    def set_from(self, project):
        # section = core.swmm.options.dynamic_wave.DynamicWave()
        section = project.options.dynamic_wave
        if section.inertial_damping == core.swmm.options.dynamic_wave.InertialDamping.PARTIAL:
            self.cboInertial.setCurrentIndex(1)
        if section.inertial_damping == core.swmm.options.dynamic_wave.InertialDamping.FULL:
            self.cboInertial.setCurrentIndex(2)
        if section.inertial_damping == core.swmm.options.dynamic_wave.InertialDamping.NONE:
            self.cboInertial.setCurrentIndex(0)

        if section.force_main_equation == core.swmm.options.dynamic_wave.ForceMainEquation.H_W:
            self.cboForce.setCurrentIndex(0)
        if section.force_main_equation == core.swmm.options.dynamic_wave.ForceMainEquation.D_W:
            self.cboForce.setCurrentIndex(1)

        if section.normal_flow_limited == core.swmm.options.dynamic_wave.NormalFlowLimited.SLOPE:
            self.cboNormal.setCurrentIndex(0)
        if section.normal_flow_limited == core.swmm.options.dynamic_wave.NormalFlowLimited.FROUDE:
            self.cboNormal.setCurrentIndex(1)
        if section.normal_flow_limited == core.swmm.options.dynamic_wave.NormalFlowLimited.BOTH:
            self.cboNormal.setCurrentIndex(2)

        val, val_is_good = ParseData.intTryParse(section.threads)
        if val_is_good:
            self.cboThreads.setCurrentIndex(val - 1)
        if float(section.variable_step) > 0:
            self.cbxUseVariable.setChecked(True)
        self.sbxAdjusted.setValue(float(section.variable_step) * 100)
        self.txtMinimum.setText(str(section.minimum_step))
        self.txtLengthening.setText(str(section.lengthening_step))
        self.txtSurfaceArea.setText(str(section.min_surface_area))
        self.txtTolerance.setText(str(section.head_tolerance))
        self.sbxTrials.setValue(int(section.max_trials))
Example #6
0
    def set_from(self, project):
        hydraulics_options = project.options.hydraulics

        ui.convenience.set_combo(self.cboFlow, hydraulics_options.flow_units)
        ui.convenience.set_combo(
            self.cboHeadloss,
            hydraulics_options.head_loss.name.replace('_', "-"))

        self.txtAccuracy.setText(str(hydraulics_options.accuracy))
        self.txtCheckFrequency.setText(str(hydraulics_options.check_frequency))
        self.txtDampLimit.setText(str(hydraulics_options.damp_limit))
        self.txtDefaultPattern.setText(str(hydraulics_options.default_pattern))
        self.txtDemandMultiplier.setText(
            str(hydraulics_options.demand_multiplier))
        self.txtEmitterExponent.setText(
            str(hydraulics_options.emitter_exponent))
        self.txtMaxCheck.setText(str(hydraulics_options.max_check))
        self.txtMaximumTrials.setText(str(hydraulics_options.maximum_trials))
        self.txtRelativeViscosity.setText(str(hydraulics_options.viscosity))
        self.txtSpecificGravity.setText(
            str(hydraulics_options.specific_gravity))
        if hydraulics_options.unbalanced == core.epanet.options.hydraulics.Unbalanced.STOP:
            self.rbnStop.setChecked(True)
        if hydraulics_options.unbalanced == core.epanet.options.hydraulics.Unbalanced.CONTINUE:
            val, val_is_good = ParseData.intTryParse(
                hydraulics_options.unbalanced_continue)
            if not val_is_good:
                val = 0
            if val == 0:
                self.rbnContinue.setChecked(True)
            elif val > 0:
                self.rbnContinueN.setChecked(True)
        self.txtContinueN.setText(str(hydraulics_options.unbalanced_continue))
 def GetData(self):
     # construct pandas time series from grid data
     del self.X[:]
     del self.Y[:]
     n = 0
     for row in range(self.tblMult.rowCount()):
         if self.tblMult.item(row, 1):
             y_val, y_val_good = ParseData.floatTryParse(
                 self.tblMult.item(row, 1).text())
             x_val, x_val_good = ParseData.floatTryParse(
                 self.tblMult.item(row, 0).text())
             if y_val_good and x_val_good:
                 # as long as the values are good
                 self.Y.append(y_val)
                 self.X.append(x_val)
                 n += 1
         else:
             return n
     return n
    def load_curve_data(self):
        directory = self._main_form.program_settings.value("DataDir", "")
        file_name, ftype = QFileDialog.getOpenFileName(self,
                                                       "Open Curve Data File",
                                                       directory,
                                                       "Curve Files (*.dat)")
        if os.path.exists(file_name):
            self._main_form.program_settings.setValue(
                "DataDir", os.path.dirname(file_name))
            self._main_form.program_settings.sync()

        if file_name:
            with open(file_name, "r") as open_file:
                lines = open_file.readlines()

            if len(lines) > 1:
                a = lines[1].split()
                self.txtDescription.setText(a[len(a) - 1])
            if len(lines) > 2:
                curve_xy = []
                for i in range(2, len(lines)):
                    try:
                        x, y = lines[i].split()
                        xval, xval_is_good = ParseData.floatTryParse(x)
                        yval, yval_is_good = ParseData.floatTryParse(y)
                        if xval_is_good and yval_is_good:
                            curve_xy.append((x, y))

                        point_count = -1
                        for point in curve_xy:
                            point_count += 1
                            led = QLineEdit(str(point[0]))
                            self.tblMult.setItem(point_count, 0,
                                                 QTableWidgetItem(led.text()))
                            led = QLineEdit(str(point[1]))
                            self.tblMult.setItem(point_count, 1,
                                                 QTableWidgetItem(led.text()))

                        pass
                    except Exception as ex:
                        pass
Example #9
0
 def tbl_2_changed(self, row, col):
     if not self.loaded: return
     if self.tbl_2.verticalHeaderItem(row) is None: return
     item = self.tbl_2.item(row, col)
     if item is None: return
     key = self.tbl_2.verticalHeaderItem(row).text()
     if "infiltration model" in key.lower():
         self.defaults.properties_sub_values[key] = item.currentText()
     else:
         val, val_is_good = ParseData.floatTryParse(item.text())
         if val_is_good:
             self.defaults.properties_sub_values[key] = val
     self.property_sub_changed = True
     pass
Example #10
0
 def tblGeneric_changed(self, row, col):
     if not self.loaded: return
     if self.tblGeneric.verticalHeaderItem(row) is None: return
     item = self.tblGeneric.item(row, col)
     if item is None: return
     key = self.tblGeneric.verticalHeaderItem(row).text()
     if key == self.defaults.id_increment_key:
         val, val_is_good = ParseData.intTryParse(item.text())
         if val_is_good:
             self.defaults.id_increment = val
     else:
         self.defaults.model_object_prefix[key] = item.text()
     self.label_changed = True
     pass
    def cmdOK_Clicked(self):
        section = self._main_form.project.options.dates

        orig_start_date = section.start_date
        orig_start_time = section.start_time
        orig_report_start_date = section.report_start_date
        orig_report_start_time = section.report_start_time
        orig_end_date = section.end_date
        orig_end_time = section.end_time
        orig_sweep_end = section.sweep_end
        orig_sweep_start = section.sweep_start
        orig_dry_days = section.dry_days

        section.start_date = self.dedStart.date().toString(section.DATE_FORMAT)
        section.start_time = self.tmeStart.time().toString(section.TIME_FORMAT)
        section.report_start_date = self.dedStartReport.date().toString(
            section.DATE_FORMAT)
        section.report_start_time = self.tmeReport.time().toString(
            section.TIME_FORMAT)
        section.end_date = self.dedEnd.date().toString(section.DATE_FORMAT)
        section.end_time = self.tmeEnd.time().toString(section.TIME_FORMAT)
        section.sweep_end = self.dedSweepEnd.date().toString(
            section.DATE_SWEEP_FORMAT)
        section.sweep_start = self.dedSweepStart.date().toString(
            section.DATE_SWEEP_FORMAT)
        val, val_is_good = ParseData.floatTryParse(self.txtAntecedent.text())
        if val_is_good and val >= 0:
            section.dry_days = val

        if orig_start_date != section.start_date or \
            orig_start_time != section.start_time or \
            orig_report_start_date != section.report_start_date or \
            orig_report_start_time != section.report_start_time or \
            orig_end_date != section.end_date or \
            orig_end_time != section.end_time or \
            orig_sweep_end != section.sweep_end or \
            orig_sweep_start != section.sweep_start or \
            orig_dry_days != section.dry_days:
            self._main_form.mark_project_as_unsaved()

        self._main_form.program_settings.setValue(
            "Geometry/" + "frmDates_geometry", self.saveGeometry())
        self._main_form.program_settings.setValue(
            "Geometry/" + "frmDates_state", self.saveState())
        self.close()
Example #12
0
 def cmdOK_Clicked(self):
     section = self._main_form.project.options.dates
     section.start_date = self.dedStart.date().toString(section.DATE_FORMAT)
     section.start_time = self.tmeStart.time().toString(section.TIME_FORMAT)
     section.report_start_date = self.dedStartReport.date().toString(
         section.DATE_FORMAT)
     section.report_start_time = self.tmeReport.time().toString(
         section.TIME_FORMAT)
     section.end_date = self.dedEnd.date().toString(section.DATE_FORMAT)
     section.end_time = self.tmeEnd.time().toString(section.TIME_FORMAT)
     section.sweep_end = self.dedSweepEnd.date().toString(
         section.DATE_SWEEP_FORMAT)
     section.sweep_start = self.dedSweepStart.date().toString(
         section.DATE_SWEEP_FORMAT)
     val, val_is_good = ParseData.floatTryParse(self.txtAntecedent.text())
     if val_is_good and val >= 0:
         section.dry_days = val
     self.close()
Example #13
0
 def tbl_3_changed(self, row, col):
     if not self.loaded: return
     if self.tbl_3.verticalHeaderItem(row) is None: return
     item = self.tbl_3.item(row, col)
     if item is None: return
     key = self.tbl_3.verticalHeaderItem(row).text()
     if "flow units" in key.lower() or \
        "link offsets" in key.lower() or \
        "routing" in key.lower() or \
        "force main" in key.lower():
         # do nothing
         pass
     elif "conduit geometry" in key.lower():
         #self.defaults.xsection.shape = CrossSection[item.text()]
         pass
     else:
         val, val_is_good = ParseData.floatTryParse(item.text())
         if val_is_good:
             self.defaults.parameters_values[key] = val
     self.parameter_changed = True
     pass
    def table_itemChanged(self, item):
        if self.tblGeneric.currentItem() is None: return
        new_val, new_val_is_good = ParseData.floatTryParse(self.tblGeneric.currentItem().text())
        if not new_val_is_good: return
        vtitle = self.tblGeneric.verticalHeaderItem(self.tblGeneric.currentRow()).text()

        attr_name = ""
        for i in range(0, len(self.meta)):
            if self.meta[i].label == vtitle:
                attr_name = self.meta[i].attribute
                break

        if len(attr_name) == 0: return

        enum_val = E_InfilModel[self.cboInfilModel.currentText().upper()]
        if enum_val == E_InfilModel.MODIFIED_HORTON:
            self.defaults.infil_model_horton.__dict__[attr_name] = new_val
        elif enum_val == E_InfilModel.MODIFIED_GREEN_AMPT:
            self.defaults.infil_model_ga.__dict__[attr_name] = new_val
        elif enum_val == E_InfilModel.CURVE_NUMBER:
            self.defaults.infil_model_cn.__dict__[attr_name] = new_val
        pass
    def set_from(self, project):
        section = project.options.time_steps
        self.cbxSkip.setChecked(section.skip_steady_state)
        self.sbxLateral.setValue(int(section.lateral_inflow_tolerance))
        self.sbxSystem.setValue(int(section.system_flow_tolerance))

        (days, hours, minutes,
         seconds) = frmTimeSteps.split_days(section.dry_step)
        self.sbxDry.setValue(days)
        self.tmeDry.setTime(QtCore.QTime(hours, minutes, seconds))

        (days, hours, minutes,
         seconds) = frmTimeSteps.split_days(section.wet_step)
        self.sbxWet.setValue(days)
        self.tmeWet.setTime(QtCore.QTime(hours, minutes, seconds))

        (days, hours, minutes,
         seconds) = frmTimeSteps.split_days(section.report_step)
        self.sbxReportDay.setValue(days)
        self.tmeReport.setTime(QtCore.QTime(hours, minutes, seconds))

        (days, hours, minutes,
         seconds) = frmTimeSteps.split_days(section.rule_step)
        self.tmeControl.setTime(QtCore.QTime(hours, minutes, seconds))

        if ':' in section.routing_step:
            if len(section.routing_step.split(':')
                   [0]) == 1:  # Delphi GUI writes routing step as h:mm:ss
                routing_time = QtCore.QTime(0, 0, 0).secsTo(
                    QtCore.QTime.fromString(section.routing_step, 'h:mm:ss'))
            else:
                routing_time = QtCore.QTime(0, 0, 0).secsTo(
                    QtCore.QTime.fromString(section.routing_step,
                                            section.TIME_FORMAT))
        else:
            routing_time, good_int = ParseData.get_int_from_float(
                section.routing_step)
        self.txtRouting.setText(str(routing_time))
    def set_all(self, project):
        evap_section = project.evaporation
        # "Constant Value","Time Series","Climate File","Monthly Averages","Temperatures"
        self.evap_pan_list = evap_section.monthly_pan_coefficients
        self.evap_monthly_list = evap_section.monthly

        if evap_section.format == EvaporationFormat.UNSET:
            self.cboEvap.setCurrentIndex(0)
            self.cboEvap_currentIndexChanged(0)
        elif evap_section.format == EvaporationFormat.CONSTANT:
            self.cboEvap.setCurrentIndex(0)
            self.cboEvap_currentIndexChanged(0)
        elif evap_section.format == EvaporationFormat.MONTHLY:
            self.cboEvap.setCurrentIndex(3)
            self.cboEvap_currentIndexChanged(3)
        elif evap_section.format == EvaporationFormat.TIMESERIES:
            self.cboEvap.setCurrentIndex(1)
            self.cboEvap_currentIndexChanged(1)
        elif evap_section.format == EvaporationFormat.TEMPERATURE:
            self.cboEvap.setCurrentIndex(4)
            self.cboEvap_currentIndexChanged(4)
        elif evap_section.format == EvaporationFormat.FILE:
            self.cboEvap.setCurrentIndex(2)
            self.cboEvap_currentIndexChanged(2)
        if evap_section.constant == '':
            evap_section.constant = 0.0
        self.txtDaily.setText(str(evap_section.constant))
        self.cbxDry.setChecked(evap_section.dry_only)

        time_series_section = project.find_section("TIMESERIES")
        time_series_list = time_series_section.value[0:]
        self.cboEvapTs.clear()
        selected_index = 0
        for value in time_series_list:
            self.cboEvapTs.addItem(value.name)
            if value.name == evap_section.timeseries:
                selected_index = int(self.cboEvapTs.count()) - 1
        self.cboEvapTs.setCurrentIndex(selected_index)

        pattern_section = project.find_section("PATTERNS")
        pattern_list = pattern_section.value[0:]
        self.cboMonthly.clear()
        self.cboMonthly.addItem("")
        selected_index = 0
        previous_pattern = ""
        for value in pattern_list:
            if value.name and value.name != previous_pattern:
                self.cboMonthly.addItem(value.name)
                previous_pattern = value.name
                if value.name == evap_section.recovery_pattern:
                    selected_index = int(self.cboMonthly.count()) - 1
        self.cboMonthly.setCurrentIndex(selected_index)

        temp_section = project.temperature
        if temp_section.source == TemperatureSource.UNSET:
            self.rbnTimeseries.setChecked(False)
            self.rbnExternal.setChecked(False)
            self.rbnNoData.setChecked(True)
        elif temp_section.source == TemperatureSource.TIMESERIES and temp_section.timeseries:
            self.rbnTimeseries.setChecked(True)
            self.rbnExternal.setChecked(False)
            self.rbnNoData.setChecked(False)
        elif temp_section.source == TemperatureSource.FILE:
            self.rbnTimeseries.setChecked(False)
            self.rbnExternal.setChecked(True)
            self.rbnNoData.setChecked(False)
        else:
            self.rbnTimeseries.setChecked(False)
            self.rbnExternal.setChecked(False)
            self.rbnNoData.setChecked(True)

        time_series_section = project.timeseries
        time_series_list = time_series_section.value[0:]
        self.cboTimeSeries.clear()
        self.cboTimeSeries.addItem('')
        selected_index = 0
        for value in time_series_list:
            self.cboTimeSeries.addItem(value.name)
            if value.name == temp_section.timeseries:
                selected_index = self.cboTimeSeries.count()
        self.cboTimeSeries.setCurrentIndex(selected_index)
        self.txtClimate.setText(temp_section.filename)
        self.dedStart.setDate(
            QtCore.QDate.fromString(temp_section.start_date, "MM/dd/yyyy"))
        if temp_section.start_date:
            self.cbxStart.setChecked(True)

        # wind speed tab
        if temp_section.wind_speed.source == WindSource.MONTHLY:
            self.rbnMonthly.setChecked(True)
            monthly_list = temp_section.wind_speed.wind_speed_monthly
            point_count = -1
            for value in monthly_list:
                point_count += 1
                led = QtGui.QLineEdit(str(value))
                self.tblWind.setItem(0, point_count,
                                     QtGui.QTableWidgetItem(led.text()))
        elif temp_section.wind_speed.source == WindSource.FILE:
            self.rbnUseClimate.setChecked(True)

        # snow melt tab
        val, val_is_good = ParseData.floatTryParse(
            temp_section.snow_melt.snow_temp)
        if not val_is_good:
            val = 34
        self.txtSnowDivide.setText(str(val))
        self.txtSnowATI.setText(str(temp_section.snow_melt.ati_weight))
        self.txtSnowMelt.setText(
            str(temp_section.snow_melt.negative_melt_ratio))
        self.txtSnowElevation.setText(str(temp_section.snow_melt.elevation))
        val, val_is_good = ParseData.floatTryParse(
            temp_section.snow_melt.latitude)
        if not val_is_good or val == 0.0:
            val = 50.0
        self.txtSnowLatitude.setText(str(val))
        self.txtSnowLongitude.setText(
            str(temp_section.snow_melt.time_correction))

        # areal depletion
        areal_list = temp_section.areal_depletion.adc_impervious
        if len(areal_list) > 0:
            point_count = -1
            for value in areal_list:
                point_count += 1
                led = QtGui.QLineEdit(str(value))
                self.tblAreal.setItem(point_count, 0,
                                      QtGui.QTableWidgetItem(led.text()))
        else:
            self.btnImpNo_Clicked()

        areal_list = temp_section.areal_depletion.adc_pervious
        if len(areal_list) > 0:
            point_count = -1
            for value in areal_list:
                point_count += 1
                led = QtGui.QLineEdit(str(value))
                self.tblAreal.setItem(point_count, 1,
                                      QtGui.QTableWidgetItem(led.text()))
            pass
        else:
            self.btnPerNo_Clicked()
        # self.tblAreal.resizeColumnsToContents()

        # adjustments for temp, evap, rain, cond
        adjustments_section = project.find_section("ADJUSTMENTS")
        temp_list = adjustments_section.temperature
        point_count = -1
        for value in temp_list:
            point_count += 1
            led = QtGui.QLineEdit(str(value))
            self.tblAdjustments.setItem(point_count, 0,
                                        QtGui.QTableWidgetItem(led.text()))
        evap_list = adjustments_section.evaporation
        point_count = -1
        for value in evap_list:
            point_count += 1
            led = QtGui.QLineEdit(str(value))
            self.tblAdjustments.setItem(point_count, 1,
                                        QtGui.QTableWidgetItem(led.text()))
        rain_list = adjustments_section.rainfall
        point_count = -1
        for value in rain_list:
            point_count += 1
            led = QtGui.QLineEdit(str(value))
            self.tblAdjustments.setItem(point_count, 2,
                                        QtGui.QTableWidgetItem(led.text()))
        cond_list = adjustments_section.soil_conductivity
        point_count = -1
        for value in cond_list:
            point_count += 1
            led = QtGui.QLineEdit(str(value))
            self.tblAdjustments.setItem(point_count, 3,
                                        QtGui.QTableWidgetItem(led.text()))
    def set_link(self, project, link_name):
        # assume we want to edit the first one
        self.link_name = link_name
        value = None
        try:
            value = self._main_form.project.xsections.get_item(
                "link", self.link_name)
        except:  # This must be a new one we need to add
            value = None

        if not value:
            value = core.swmm.hydraulics.link.CrossSection()
            value.link = self.link_name
            if self._main_form and self._main_form.project_settings:
                self._main_form.project_settings.apply_default_attributes(
                    value)
            self._main_form.project.xsections.value.append(value)

        for value in project.xsections.value:
            if value.link == link_name:
                # this is the link we want to edit
                for list_index in range(0, self.listWidget.count()):
                    list_item = self.listWidget.item(list_index)
                    if str(list_item.text()).upper() == value.shape.name:
                        self.listWidget.setCurrentItem(list_item)
                    elif str(list_item.text(
                    )) == 'Force Main' and value.shape.name == 'FORCE_MAIN':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Filled Circular' and value.shape.name == 'FILLED_CIRCULAR':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Closed Rectangular' and value.shape.name == 'RECT_CLOSED':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(list_item.text(
                    )) == 'Rectangular' and value.shape.name == 'RECT_OPEN':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Horizontal Elliptical' and value.shape.name == 'HORIZ_ELLIPSE':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Vertical Elliptical' and value.shape.name == 'VERT_ELLIPSE':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Rectangular Triangular' and value.shape.name == 'RECT_TRIANGULAR':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Rectangular Round' and value.shape.name == 'RECT_ROUND':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Modified Baskethandle' and value.shape.name == 'MODBASKETHANDLE':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Semi-Elliptical' and value.shape.name == 'SEMIELLIPTICAL':
                        self.listWidget.setCurrentItem(list_item)
                    elif str(
                            list_item.text()
                    ) == 'Semi-Circular' and value.shape.name == 'SEMICIRCULAR':
                        self.listWidget.setCurrentItem(list_item)

                ibarrels, good_int = ParseData.get_int_from_float(
                    value.barrels)
                if good_int:
                    self.sbxNumber.setValue(ibarrels)
                self.txt1.setText(str(value.geometry1))
                self.txt2.setText(str(value.geometry2))
                self.txt3.setText(str(value.geometry3))
                self.txt4.setText(str(value.geometry4))

                # for rect_open sidewalls, set geom3 to 0,1,2 for None, One, Both
                if value.shape.name == 'RECTANGULAR':
                    self.cboCombo.setCurrentIndex(int(value.geometry3))

                # for horizontal and vertical elliptical and arch, combo gets standard sizes
                if value.shape.name == 'HORIZ_ELLIPSE':
                    self.cboCombo.setCurrentIndex(int(value.geometry3))
                if value.shape.name == 'VERT_ELLIPSE':
                    self.cboCombo.setCurrentIndex(int(value.geometry3))
                if value.shape.name == 'ARCH':
                    self.cboCombo.setCurrentIndex(int(value.geometry3))

                if value.shape.name == 'IRREGULAR':
                    # for irregular, combo needs transect names, dialog opens transect buttons
                    for index in range(0, self.cboCombo.count()):
                        if value.geometry1 == self.cboCombo.itemText(index):
                            self.cboCombo.setCurrentIndex(index)

                if value.shape.name == 'CUSTOM':
                    # for custom, combo needs shape curves, dialog opens shape curve editor
                    for index in range(0, self.cboCombo.count()):
                        if value.curve == self.cboCombo.itemText(index):
                            self.cboCombo.setCurrentIndex(index)
Example #18
0
    def check_coords(self):
        # check source LL coordinates
        new_src_LL = Coordinate()
        val, val_is_good = ParseData.floatTryParse(self.ui.txtLL_src_x.text())
        if val_is_good:
            new_src_LL.x = val
        else:
            return False
        val, val_is_good = ParseData.floatTryParse(self.ui.txtLL_src_y.text())
        if val_is_good:
            new_src_LL.y = val
        else:
            return False

        # check source UR coordinates
        new_src_UR = Coordinate()
        val, val_is_good = ParseData.floatTryParse(self.ui.txtUR_src_x.text())
        if val_is_good:
            new_src_UR.x = val
        else:
            return False
        val, val_is_good = ParseData.floatTryParse(self.ui.txtUR_src_y.text())
        if val_is_good:
            new_src_UR.y = val
        else:
            return False

        # check destination LL coordinates
        new_dst_LL = Coordinate()
        val, val_is_good = ParseData.floatTryParse(self.ui.txtLL_dst_x.text())
        if val_is_good:
            new_dst_LL.x = val
        else:
            return False
        val, val_is_good = ParseData.floatTryParse(self.ui.txtLL_dst_y.text())
        if val_is_good:
            new_dst_LL.y = val
        else:
            return False

        # check destination UR coordinates
        new_dst_UR = Coordinate()
        val, val_is_good = ParseData.floatTryParse(self.ui.txtUR_dst_x.text())
        if val_is_good:
            new_dst_UR.x = val
        else:
            return False
        val, val_is_good = ParseData.floatTryParse(self.ui.txtUR_dst_y.text())
        if val_is_good:
            new_dst_UR.y = val
        else:
            return False

        self.pt_src_ll.x = new_src_LL.x
        self.pt_src_ll.y = new_src_LL.y
        self.pt_src_ur.x = new_src_UR.x
        self.pt_src_ur.y = new_src_UR.y

        if not self.pt_dst_ll:
            self.pt_dst_ll = type(self.pt_src_ll)()
        if not self.pt_dst_ur:
            self.pt_dst_ur = type(self.pt_src_ur)()
        self.pt_dst_ll.x = new_dst_LL.x
        self.pt_dst_ll.y = new_dst_LL.y
        self.pt_dst_ur.x = new_dst_UR.x
        self.pt_dst_ur.y = new_dst_UR.y

        return True