示例#1
0
    def rbnLinks_Clicked(self):
        if self.rbnLinks.isChecked():
            self.gbxToGraph.setTitle(
                transl8("frmGraph", "Links to Graph", None))
            self.cboParameter.clear()

            attr_list = []
            for att in ENR_link_type.Attributes:
                if att.name == "Quality":
                    if self.project.options.quality.quality.value == 2:  # 'chemical'
                        attr_list.append("Chemical")
                        # units = attribute.units(self.output.unit_system)
                    elif self.project.options.quality.quality.value == 3:  # 'Age'
                        attr_list.append("Age")
                        # units = "hours"
                    elif self.project.options.quality.quality.value == 4:  # 'Trace'
                        attr_list.append(
                            "Trace " + self.project.options.quality.trace_node)
                        # units = "percent"
                else:
                    attr_list.append(att.name)

            self.cboParameter.addItems(attr_list)
            self.lstToGraph.clear()
            self.list_items = self.output.links
            self.add_element()
示例#2
0
 def rbnLinks_Clicked(self):
     if self.rbnLinks.isChecked():
         self.gbxToGraph.setTitle(transl8("frmGraph", "Links to Graph", None))
         self.cboParameter.clear()
         self.cboParameter.addItems(ENR_LinkAttributeNames)
         self.lstToGraph.clear()
         self.lstToGraph.addItems(self.report.all_link_ids())
示例#3
0
 def rbnTimeseriesLink_Clicked(self):
     if self.rbnTimeseriesLink.isChecked():
         self.item_type = ENR_link_type
         self.set_attributes()
         self.cbxSort.setEnabled(False)
         self.cbxSort.setText(transl8("frmTable", "Sort by", None))
         self.rbnNodes.setChecked(False)
         self.rbnLinks.setChecked(False)
         self.rbnTimeseriesNode.setChecked(False)
示例#4
0
 def rbnLinks_Clicked(self):
     if self.rbnLinks.isChecked():
         self.gbxToGraph.setTitle(
             transl8("frmGraph", "Links to Graph", None))
         self.cboParameter.clear()
         self.cboParameter.addItems(
             [att.name for att in ENR_link_type.Attributes])
         self.lstToGraph.clear()
         self.list_items = self.output.links
         self.lstToGraph.addItems(self.list_items.keys())
示例#5
0
 def rbnNodes_Clicked(self):
     if self.rbnNodes.isChecked():
         self.gbxToGraph.setTitle(transl8("frmGraph", "Nodes to Graph", None))
         self.cboParameter.clear()
         self.cboParameter.addItems(ENR_NodeAttributeNames)
         self.lstToGraph.clear()
         # for index in range(0, self.output.nodeCount - 1):
         #     self.lstToGraph.addItem(str(self.output.get_NodeID(index)))
         for node_id in self.report.all_node_ids():
             self.lstToGraph.addItem(node_id)
 def rbnTimeseriesLink_Clicked(self):
     if self.rbnTimeseriesLink.isChecked():
         self.cbxSort.setEnabled(False)
         self.cbxSort.setText(transl8("frmTable", "Sort by", None))
         self.lstColumns.clear()
         self.lstColumns.addItems(ENR_LinkAttributeNames)
         self.lstColumns.selectAll()
         self.cboFilter.clear()
         self.cboFilter.addItems(ENR_LinkAttributeNames)
         self.rbnNodes.setChecked(False)
         self.rbnLinks.setChecked(False)
         self.rbnTimeseriesNode.setChecked(False)
    def __init__(self, q_application):
        self.model = "EPANET"
        self.program_settings = QtCore.QSettings(QtCore.QSettings.IniFormat,
                                                 QtCore.QSettings.UserScope,
                                                 "EPA", self.model)
        print("Read program settings from " + self.program_settings.fileName())
        self.model_path = ''  # Set this only if needed later when running model
        self.output = None  # Set this when model output is available
        self.status_suffix = "_status.txt"
        self.status_file_name = ''  # Set this when model status is available
        self.output_filename = ''  # Set this when model output is available
        self.project_type = Project  # Use the model-specific Project as defined in core.epanet.project
        self.project_reader_type = ProjectReader
        self.project_writer_type = ProjectWriter
        self.project = Project()
        self.assembly_path = os.path.dirname(os.path.abspath(__file__))
        frmMain.__init__(self, q_application)
        self.on_load(tree_top_item_list=self.tree_top_items)
        self.tree_types = {
            self.tree_Patterns[0]: Pattern,
            self.tree_Curves[0]: Curve,
            self.tree_Junctions[0]: Junction,
            self.tree_Reservoirs[0]: Reservoir,
            self.tree_Tanks[0]: Tank,
            self.tree_Pipes[0]: Pipe,
            self.tree_Pumps[0]: Pump,
            self.tree_Valves[0]: Valve,
            self.tree_Labels[0]: Label
        }

        self.section_types = {
            Pattern: "patterns",
            Curve: "curves",
            Junction: "junctions",
            Reservoir: "reservoirs",
            Tank: "tanks",
            Pipe: "pipes",
            Pump: "pumps",
            Valve: "valves",
            Label: "labels"
        }

        if self.map_widget:  # initialize empty model map layers, ready to have model elements added
            self.model_layers = ModelLayersEPANET(self.map_widget)

        HelpHandler.init_class(os.path.join(self.assembly_path, "epanet.qhc"))
        self.help_topic = ""  # TODO: specify topic to open when Help key is pressed on main form
        self.helper = HelpHandler(self)

        self.actionStdProjSummary.triggered.connect(
            lambda: self.show_edit_window(self.get_editor("Title/Notes")))
        self.actionStatus_ReportMenu = QtGui.QAction(self)
        self.actionStatus_ReportMenu.setObjectName(
            from_utf8("actionStatus_ReportMenu"))
        self.actionStatus_ReportMenu.setText(transl8("frmMain", "Status",
                                                     None))
        self.actionStatus_ReportMenu.setToolTip(
            transl8("frmMain", "Display Simulation Status", None))
        self.menuReport.addAction(self.actionStatus_ReportMenu)
        QtCore.QObject.connect(self.actionStatus_ReportMenu,
                               QtCore.SIGNAL('triggered()'),
                               self.report_status)
        self.actionProjStatus.triggered.connect(self.report_status)

        self.actionEnergy_ReportMenu = QtGui.QAction(self)
        self.actionEnergy_ReportMenu.setObjectName(
            from_utf8("actionEnergy_ReportMenu"))
        self.actionEnergy_ReportMenu.setText(transl8("frmMain", "Energy",
                                                     None))
        self.actionEnergy_ReportMenu.setToolTip(
            transl8("frmMain", "Display Simulation Energy", None))
        self.menuReport.addAction(self.actionEnergy_ReportMenu)
        QtCore.QObject.connect(self.actionEnergy_ReportMenu,
                               QtCore.SIGNAL('triggered()'),
                               self.report_energy)

        self.actionCalibration_ReportMenu = QtGui.QAction(self)
        self.actionCalibration_ReportMenu.setObjectName(
            from_utf8("actionCalibration_ReportMenu"))
        self.actionCalibration_ReportMenu.setText(
            transl8("frmMain", "Calibration", None))
        self.actionCalibration_ReportMenu.setToolTip(
            transl8("frmMain", "Display Simulation Calibration", None))
        self.menuReport.addAction(self.actionCalibration_ReportMenu)
        QtCore.QObject.connect(self.actionCalibration_ReportMenu,
                               QtCore.SIGNAL('triggered()'),
                               self.report_calibration)

        self.actionReaction_ReportMenu = QtGui.QAction(self)
        self.actionReaction_ReportMenu.setObjectName(
            from_utf8("actionReaction_ReportMenu"))
        self.actionReaction_ReportMenu.setText(
            transl8("frmMain", "Reaction", None))
        self.actionReaction_ReportMenu.setToolTip(
            transl8("frmMain", "Display Simulation Reaction", None))
        self.menuReport.addAction(self.actionReaction_ReportMenu)
        QtCore.QObject.connect(self.actionReaction_ReportMenu,
                               QtCore.SIGNAL('triggered()'),
                               self.report_reaction)

        self.actionFull_ReportMenu = QtGui.QAction(self)
        self.actionFull_ReportMenu.setObjectName(
            from_utf8("actionFull_ReportMenu"))
        self.actionFull_ReportMenu.setText(transl8("frmMain", "Full...", None))
        self.actionFull_ReportMenu.setToolTip(
            transl8("frmMain", "Save full report as text file", None))
        self.menuReport.addAction(self.actionFull_ReportMenu)
        QtCore.QObject.connect(self.actionFull_ReportMenu,
                               QtCore.SIGNAL('triggered()'), self.report_full)

        self.actionGraph_ReportMenu = QtGui.QAction(self)
        self.actionGraph_ReportMenu.setObjectName(
            from_utf8("actionGraph_ReportMenu"))
        self.actionGraph_ReportMenu.setText(
            transl8("frmMain", "Graph...", None))
        self.actionGraph_ReportMenu.setToolTip(
            transl8("frmMain", "Display graph selection options", None))
        self.menuReport.addAction(self.actionGraph_ReportMenu)
        QtCore.QObject.connect(self.actionGraph_ReportMenu,
                               QtCore.SIGNAL('triggered()'), self.report_graph)
        self.actionProjPlotTimeseries.triggered.connect(self.report_graph)
        self.actionProjPlotScatter.triggered.connect(self.report_graph)
        self.actionProjPlotProfile.triggered.connect(self.report_graph)

        self.actionTable_ReportMenu = QtGui.QAction(self)
        self.actionTable_ReportMenu.setObjectName(
            from_utf8("actionTable_ReportMenu"))
        self.actionTable_ReportMenu.setText(
            transl8("frmMain", "Table...", None))
        self.actionTable_ReportMenu.setToolTip(
            transl8("frmMain", "Display table selection options", None))
        self.menuReport.addAction(self.actionTable_ReportMenu)
        QtCore.QObject.connect(self.actionTable_ReportMenu,
                               QtCore.SIGNAL('triggered()'), self.report_table)
        self.actionProjTableTimeseries.triggered.connect(self.report_table)

        self.Help_Topics_Menu = QtGui.QAction(self)
        self.Help_Topics_Menu.setObjectName(from_utf8("Help_Topics_Menu"))
        self.Help_Topics_Menu.setText(transl8("frmMain", "Help Topics", None))
        self.Help_Topics_Menu.setToolTip(
            transl8("frmMain", "Display Help Topics", None))
        self.menuHelp.addAction(self.Help_Topics_Menu)
        QtCore.QObject.connect(self.Help_Topics_Menu,
                               QtCore.SIGNAL('triggered()'), self.help_topics)

        self.Help_About_Menu = QtGui.QAction(self)
        self.Help_About_Menu.setObjectName(from_utf8("Help_About_Menu"))
        self.Help_About_Menu.setText(transl8("frmMain", "About", None))
        self.Help_About_Menu.setToolTip(
            transl8("frmMain", "About EPANET", None))
        self.menuHelp.addAction(self.Help_About_Menu)
        QtCore.QObject.connect(self.Help_About_Menu,
                               QtCore.SIGNAL('triggered()'), self.help_about)

        self.cbFlowUnits.clear()
        self.cbFlowUnits.addItems([
            'Flow Units: CFS', 'Flow Units: GPM', 'Flow Units: MGD',
            'Flow Units: IMGD', 'Flow Units: AFD', 'Flow Units: LPS',
            'Flow Units: LPM', 'Flow Units: MLD', 'Flow Units: CMH',
            'Flow Units: CMD'
        ])
        self.cbFlowUnits.currentIndexChanged.connect(
            self.cbFlowUnits_currentIndexChanged)
        self.cbOffset.setVisible(False)

        if self.map_widget:
            self.map_widget.applyLegend()
            self.map_widget.LegendDock.setVisible(False)
            self.cboMapSubcatchments.setVisible(False)
            self.lblMapSubcatchments.setVisible(False)
            self.set_thematic_controls()
            self.cboMapNodes.currentIndexChanged.connect(
                self.update_thematic_map)
            self.cboMapLinks.currentIndexChanged.connect(
                self.update_thematic_map)
            self.signalTimeChanged.connect(self.update_thematic_map_time)
示例#8
0
    def __init__(self, q_application):
        frmMain.__init__(self, q_application)
        self.model = "SWMM"
        self.model_path = ''  # Set this only if needed later when running model
        self.output = None    # Set this when model output is available
        self.status_suffix = "_status.txt"
        self.status_file_name = ''  # Set this when model status is available
        self.output_filename = ''  # Set this when model output is available
        self.project_type = Project  # Use the model-specific Project as defined in core.swmm.project
        self.project = Project()
        self.assembly_path = os.path.dirname(os.path.abspath(__file__))
        self.on_load(tree_top_item_list=self.tree_top_items)
        HelpHandler.init_class(os.path.join(self.assembly_path, "swmm.qhc"))
        self.helper = HelpHandler(self)
        self.help_topic = "swmm/src/src/swmmsmainwindow.htm"

        self.actionStatus_ReportMenu = QtGui.QAction(self)
        self.actionStatus_ReportMenu.setObjectName(from_utf8("actionStatus_ReportMenu"))
        self.actionStatus_ReportMenu.setText(transl8("frmMain", "Status", None))
        self.actionStatus_ReportMenu.setToolTip(transl8("frmMain", "Display Simulation Status", None))
        self.menuReport.addAction(self.actionStatus_ReportMenu)
        QtCore.QObject.connect(self.actionStatus_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_status)

        self.actionSummary_ReportMenu = QtGui.QAction(self)
        self.actionSummary_ReportMenu.setObjectName(from_utf8("actionSummary_ReportMenu"))
        self.actionSummary_ReportMenu.setText(transl8("frmMain", "Summary", None))
        self.actionSummary_ReportMenu.setToolTip(transl8("frmMain", "Display Results Summary", None))
        self.menuReport.addAction(self.actionSummary_ReportMenu)
        QtCore.QObject.connect(self.actionSummary_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_summary)

        menu = QtGui.QMenu()
        submenuGraph = QtGui.QMenu(self.menuReport)
        submenuGraph.setTitle("Graph")
        self.menuReport.addMenu(submenuGraph)

        self.actionGraph_ProfileMenu = QtGui.QAction(self)
        self.actionGraph_ProfileMenu.setObjectName(from_utf8("actionGraph_ProfileMenu"))
        self.actionGraph_ProfileMenu.setText(transl8("frmMain", "Profile", None))
        self.actionGraph_ProfileMenu.setToolTip(transl8("frmMain", "Display Profile Plot", None))
        submenuGraph.addAction(self.actionGraph_ProfileMenu)
        QtCore.QObject.connect(self.actionGraph_ProfileMenu, QtCore.SIGNAL('triggered()'), self.report_profile)

        self.actionGraph_TimeSeriesMenu = QtGui.QAction(self)
        self.actionGraph_TimeSeriesMenu.setObjectName(from_utf8("actionGraph_TimeSeriesMenu"))
        self.actionGraph_TimeSeriesMenu.setText(transl8("frmMain", "Time Series", None))
        self.actionGraph_TimeSeriesMenu.setToolTip(transl8("frmMain", "Display Time Series Plot", None))
        submenuGraph.addAction(self.actionGraph_TimeSeriesMenu)
        QtCore.QObject.connect(self.actionGraph_TimeSeriesMenu, QtCore.SIGNAL('triggered()'), self.report_timeseries)

        self.actionGraph_ScatterMenu = QtGui.QAction(self)
        self.actionGraph_ScatterMenu.setObjectName(from_utf8("actionGraph_ScatterMenu"))
        self.actionGraph_ScatterMenu.setText(transl8("frmMain", "Scatter", None))
        self.actionGraph_ScatterMenu.setToolTip(transl8("frmMain", "Display Scatter Plot", None))
        submenuGraph.addAction(self.actionGraph_ScatterMenu)
        QtCore.QObject.connect(self.actionGraph_ScatterMenu, QtCore.SIGNAL('triggered()'), self.report_scatter)

        self.actionTable_VariableMenu = QtGui.QAction(self)
        self.actionTable_VariableMenu.setObjectName(from_utf8("actionTable_VariableMenu"))
        self.actionTable_VariableMenu.setText(transl8("frmMain", "Table", None))
        self.actionTable_VariableMenu.setToolTip(transl8("frmMain", "Display Table", None))
        self.menuReport.addAction(self.actionTable_VariableMenu)
        QtCore.QObject.connect(self.actionTable_VariableMenu, QtCore.SIGNAL('triggered()'), self.report_variable)

        self.actionStatistics_ReportMenu = QtGui.QAction(self)
        self.actionStatistics_ReportMenu.setObjectName(from_utf8("actionStatistics_ReportMenu"))
        self.actionStatistics_ReportMenu.setText(transl8("frmMain", "Statistics", None))
        self.actionStatistics_ReportMenu.setToolTip(transl8("frmMain", "Display Results Statistics", None))
        self.menuReport.addAction(self.actionStatistics_ReportMenu)
        QtCore.QObject.connect(self.actionStatistics_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_statistics)

        self.Help_Topics_Menu = QtGui.QAction(self)
        self.Help_Topics_Menu.setObjectName(from_utf8("Help_Topics_Menu"))
        self.Help_Topics_Menu.setText(transl8("frmMain", "Help Topics", None))
        self.Help_Topics_Menu.setToolTip(transl8("frmMain", "Display Help Topics", None))
        self.menuHelp.addAction(self.Help_Topics_Menu)
        QtCore.QObject.connect(self.Help_Topics_Menu, QtCore.SIGNAL('triggered()'), self.help_topics)

        self.Help_About_Menu = QtGui.QAction(self)
        self.Help_About_Menu.setObjectName(from_utf8("Help_About_Menu"))
        self.Help_About_Menu.setText(transl8("frmMain", "About", None))
        self.Help_About_Menu.setToolTip(transl8("frmMain", "About SWMM", None))
        self.menuHelp.addAction(self.Help_About_Menu)
        QtCore.QObject.connect(self.Help_About_Menu, QtCore.SIGNAL('triggered()'), self.help_about)
class frmRunSimulation(QMainWindow, Ui_frmRunSimulation):

    SHORT_TERM_LIMIT = 20  # Simulations running fewer days than this will have time of day displayed while running
    context = "RunSimulation"
    TXT_STATUS_COMPUTING = transl8(context, "Computing...")
    TXT_STATUS_WRONGVERSION = transl8(context, "Wrong version of simulator.")
    TXT_STATUS_FAILED = transl8(context,
                                "Run was unsuccessful due to system error.")
    TXT_STATUS_ERROR = transl8(
        context, "Run was unsuccessful. See Status Report for reasons.")
    TXT_STATUS_WARNING = transl8(
        context,
        "Warning messages were generated. See Status Report for details.")
    TXT_STATUS_SUCCESS = transl8(context, "Run was successful.")
    TXT_STATUS_SHUTDOWN = transl8(
        context, "Simulator performed an illegal operation and was shut down.")
    # TXT_STATUS_STOPPED =    transl8(context, "Run was successful but was stopped before completion.")
    TXT_STATUS_IMPORT_ERROR = transl8(context, "Import Error")
    TXT_STATUS_CANCELLED = transl8(context, "Run cancelled by user.")
    TXT_STATUS_NONE = transl8(context, "Unable to run simulator.")
    TXT_STATUS_INIT = transl8(context, "Initializing")
    TXT_STATUS_COMPILING = transl8(context, "Compiling network data...")

    TXT_REORDERING = transl8(context, "Re-ordering network nodes...")
    TXT_SOLVING_HYD = transl8(context, "Solving hydraulics")
    TXT_SAVING_HYD = transl8(context, "Saving hydraulics")
    TXT_SOLVING_WQ = transl8(context, "Solving quality")

    TXT_COMPLETE = transl8(context, " complete")
    TXT_SAVING = transl8(context, "Saving project data...")
    TXT_READING = transl8(context, "Reading project data..")
    TXT_CHECKING = transl8(context, "Checking project data...")
    TXT_CONTINUITY_ERROR = transl8(context, "Continuity Error")

    TXT_SURF_RUNOFF = transl8(context, "Surface Runoff:")
    TXT_FLOW_ROUTING = transl8(context, "Flow Routing:")
    TXT_QUAL_ROUTING = transl8(context, "Quality Routing:")

    StatusLabelDict = {
        RunStatus.rsSuccess: TXT_STATUS_SUCCESS,
        RunStatus.rsWarning: TXT_STATUS_WARNING,
        RunStatus.rsError: TXT_STATUS_ERROR,
        RunStatus.rsWrongVersion: TXT_STATUS_WRONGVERSION,
        RunStatus.rsFailed: TXT_STATUS_FAILED,
        RunStatus.rsShutdown: TXT_STATUS_SHUTDOWN,
        # RunStatus.rsStopped:      TXT_STATUS_STOPPED,
        RunStatus.rsImportError: TXT_STATUS_IMPORT_ERROR,
        RunStatus.rsCancelled: TXT_STATUS_CANCELLED,
        RunStatus.rsNone: TXT_STATUS_NONE,
        RunStatus.rsInit: TXT_STATUS_INIT,
        RunStatus.rsComputing: TXT_STATUS_COMPUTING,
        RunStatus.rsCompiling: TXT_STATUS_COMPILING,
        RunStatus.rsHydraulics: TXT_SOLVING_HYD,
        RunStatus.rsWQ: TXT_SOLVING_WQ
    }

    def __init__(self, main_form=None):
        QMainWindow.__init__(self, main_form)
        self.setupUi(self)
        self.progressBar.setValue(0)
        # It looks redundant to have both lines below, but the first is needed to establish the run_status attribute
        self.run_status = RunStatus.rsInit
        self.set_status(RunStatus.rsInit)
        self.cmdStop.clicked.connect(self.stop_clicked)
        self.cmdMinimize.clicked.connect(self.minimize_clicked)
        self.cmdOK.clicked.connect(self.ok_clicked)
        self._main_form = main_form
        self._last_displayed_days = -1

    def ok_clicked(self):
        self.close()
        #     #  OnClick procedure for the OK button.
        #     self.hide()
        #     self.ModalResult = mrOK

    def minimize_clicked(self):
        #  OnClick procedure for the Minimize button.
        self.showMinimized()
        if self._main_form:
            try:
                self._main_form.showMinimized()
            except:
                pass

    # procedure TSimulationForm.CancelBtnClick(Sender: TObject)
    #   RunStatus := rsCancelled

    def stop_clicked(self):
        #  OnClick procedure for the Stop button.
        self.set_status(RunStatus.rsCancelled)
        self.cmdStop.setVisible(False)
        self.cmdOK.setVisible(True)
        self.cmdOK.setFocus()
        # // Restore original directory
        #   ChDir(OldDir)

    def set_status(self, status):
        self.run_status = status
        self.set_status_text(self.StatusLabelDict[self.run_status])

    def set_status_text(self, text):
        self.StatusLabel.setText(text)
        self.StatusLabel.update()
        process_events()

    def update_progress_bar(self, elapsed, total):
        if total <= 0:
            percent = 0
        else:
            percent = int(elapsed * 100 / total)
        if percent != self.progressBar.value():
            self.progressBar.setValue(percent)
            # self.progressBar.update()
            # process_events()

    def update_progress_days(self, elapsed_days, total_days):
        int_days = int(elapsed_days)
        update = False
        if int_days != self._last_displayed_days:
            self._last_displayed_days = int_days
            self.txtDays.setText(str(int_days))
            self.txtDays.update()
            update = True
        if total_days <= self.SHORT_TERM_LIMIT:
            float_hours = (elapsed_days - int_days) * 24
            int_hours = int(float_hours)
            minutes = int((float_hours - int_hours) * 60)
            self.txtHrsMin.setText("{:02}:{:02}".format(int_hours, minutes))
            self.txtHrsMin.update()
            update = True
        if update:
            process_events()
示例#10
0
    def __init__(self, q_application):
        frmMain.__init__(self, q_application)
        self.model = "EPANET"
        self.model_path = ''  # Set this only if needed later when running model
        self.output = None    # Set this when model output is available
        self.status_suffix = "_status.txt"
        self.status_file_name = ''  # Set this when model status is available
        self.output_filename = ''   # Set this when model output is available
        self.project_type = Project  # Use the model-specific Project as defined in core.epanet.project
        self.project = Project()
        self.assembly_path = os.path.dirname(os.path.abspath(__file__))
        self.on_load(tree_top_item_list=self.tree_top_items)

        HelpHandler.init_class(os.path.join(self.assembly_path, "epanet.qhc"))
        self.help_topic = ""  # TODO: specify topic to open when Help key is pressed on main form
        self.helper = HelpHandler(self)

        self.actionStatus_ReportMenu = QtGui.QAction(self)
        self.actionStatus_ReportMenu.setObjectName(from_utf8("actionStatus_ReportMenu"))
        self.actionStatus_ReportMenu.setText(transl8("frmMain", "Status", None))
        self.actionStatus_ReportMenu.setToolTip(transl8("frmMain", "Display Simulation Status", None))
        self.menuReport.addAction(self.actionStatus_ReportMenu)
        QtCore.QObject.connect(self.actionStatus_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_status)

        self.actionEnergy_ReportMenu = QtGui.QAction(self)
        self.actionEnergy_ReportMenu.setObjectName(from_utf8("actionEnergy_ReportMenu"))
        self.actionEnergy_ReportMenu.setText(transl8("frmMain", "Energy", None))
        self.actionEnergy_ReportMenu.setToolTip(transl8("frmMain", "Display Simulation Energy", None))
        self.menuReport.addAction(self.actionEnergy_ReportMenu)
        QtCore.QObject.connect(self.actionEnergy_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_energy)

        self.actionCalibration_ReportMenu = QtGui.QAction(self)
        self.actionCalibration_ReportMenu.setObjectName(from_utf8("actionCalibration_ReportMenu"))
        self.actionCalibration_ReportMenu.setText(transl8("frmMain", "Calibration", None))
        self.actionCalibration_ReportMenu.setToolTip(transl8("frmMain", "Display Simulation Calibration", None))
        self.menuReport.addAction(self.actionCalibration_ReportMenu)
        QtCore.QObject.connect(self.actionCalibration_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_calibration)

        self.actionReaction_ReportMenu = QtGui.QAction(self)
        self.actionReaction_ReportMenu.setObjectName(from_utf8("actionReaction_ReportMenu"))
        self.actionReaction_ReportMenu.setText(transl8("frmMain", "Reaction", None))
        self.actionReaction_ReportMenu.setToolTip(transl8("frmMain", "Display Simulation Reaction", None))
        self.menuReport.addAction(self.actionReaction_ReportMenu)
        QtCore.QObject.connect(self.actionReaction_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_reaction)

        self.actionFull_ReportMenu = QtGui.QAction(self)
        self.actionFull_ReportMenu.setObjectName(from_utf8("actionFull_ReportMenu"))
        self.actionFull_ReportMenu.setText(transl8("frmMain", "Full...", None))
        self.actionFull_ReportMenu.setToolTip(transl8("frmMain", "Save full report as text file", None))
        self.menuReport.addAction(self.actionFull_ReportMenu)
        QtCore.QObject.connect(self.actionFull_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_full)

        self.actionGraph_ReportMenu = QtGui.QAction(self)
        self.actionGraph_ReportMenu.setObjectName(from_utf8("actionGraph_ReportMenu"))
        self.actionGraph_ReportMenu.setText(transl8("frmMain", "Graph...", None))
        self.actionGraph_ReportMenu.setToolTip(transl8("frmMain", "Display graph selection options", None))
        self.menuReport.addAction(self.actionGraph_ReportMenu)
        QtCore.QObject.connect(self.actionGraph_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_graph)

        self.actionTable_ReportMenu = QtGui.QAction(self)
        self.actionTable_ReportMenu.setObjectName(from_utf8("actionTable_ReportMenu"))
        self.actionTable_ReportMenu.setText(transl8("frmMain", "Table...", None))
        self.actionTable_ReportMenu.setToolTip(transl8("frmMain", "Display table selection options", None))
        self.menuReport.addAction(self.actionTable_ReportMenu)
        QtCore.QObject.connect(self.actionTable_ReportMenu, QtCore.SIGNAL('triggered()'), self.report_table)

        self.Help_Topics_Menu = QtGui.QAction(self)
        self.Help_Topics_Menu.setObjectName(from_utf8("Help_Topics_Menu"))
        self.Help_Topics_Menu.setText(transl8("frmMain", "Help Topics", None))
        self.Help_Topics_Menu.setToolTip(transl8("frmMain", "Display Help Topics", None))
        self.menuHelp.addAction(self.Help_Topics_Menu)
        QtCore.QObject.connect(self.Help_Topics_Menu, QtCore.SIGNAL('triggered()'), self.help_topics)

        self.Help_About_Menu = QtGui.QAction(self)
        self.Help_About_Menu.setObjectName(from_utf8("Help_About_Menu"))
        self.Help_About_Menu.setText(transl8("frmMain", "About", None))
        self.Help_About_Menu.setToolTip(transl8("frmMain", "About EPANET", None))
        self.menuHelp.addAction(self.Help_About_Menu)
        QtCore.QObject.connect(self.Help_About_Menu, QtCore.SIGNAL('triggered()'), self.help_about)