예제 #1
0
class Ui_form_VSS(object):
    def setupUi(self, form_VSS):
        form_VSS.setObjectName(_fromUtf8("form_VSS"))
        form_VSS.resize(375, 372)
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("Arial"))
        form_VSS.setFont(font)
        self.verticalLayout = QtGui.QVBoxLayout(form_VSS)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.grbRunway = QtGui.QGroupBox(form_VSS)
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.grbRunway.setFont(font)
        self.grbRunway.setObjectName(_fromUtf8("grbRunway"))
        self.vLayout_grbRunway = QtGui.QVBoxLayout(self.grbRunway)
        self.vLayout_grbRunway.setObjectName(_fromUtf8("vLayout_grbRunway"))

        self.cmbAerodrome = ComboBoxPanel(self.grbRunway, True)
        self.cmbAerodrome.Caption = "Aerodrome"
        self.cmbAerodrome.LabelWidth = 120
        self.vLayout_grbRunway.addWidget(self.cmbAerodrome)

        self.cmbRwyDir = ComboBoxPanel(self.grbRunway, True)
        self.cmbRwyDir.Caption = "Runway Direction"
        self.cmbRwyDir.LabelWidth = 120
        self.cmbRwyDir.Width = 120
        self.vLayout_grbRunway.addWidget(self.cmbRwyDir)

        self.pnlTHR = PositionPanel(self.grbRunway)
        self.pnlTHR.groupBox.setTitle("Runway Thr")
        self.pnlTHR.btnCalculater.hide()
        self.pnlTHR.setObjectName("positionTHR")
        self.vLayout_grbRunway.addWidget(self.pnlTHR)

        self.pnlRwyEnd = PositionPanel(self.grbRunway)
        self.pnlRwyEnd.groupBox.setTitle("Runway End")
        self.pnlRwyEnd.hideframe_Altitude()
        self.pnlRwyEnd.btnCalculater.hide()
        self.pnlRwyEnd.setObjectName("positionRwyEnd")
        self.vLayout_grbRunway.addWidget(self.pnlRwyEnd)

        self.txtRwyDir = TrackRadialBoxPanel(self.grbRunway)
        self.txtRwyDir.Caption = "Runway In-bound Direction"
        self.txtRwyDir.LabelWidth = 160
        self.vLayout_grbRunway.addWidget(self.txtRwyDir)

        icon = QtGui.QIcon()
        icon.addPixmap(
            QtGui.QPixmap(_fromUtf8("Resource/coordinate_capture.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)

        self.cmbRwyCode = ComboBoxPanel(self.grbRunway)
        self.cmbRwyCode.Caption = "Code"
        self.cmbRwyCode.LabelWidth = 160
        self.vLayout_grbRunway.addWidget(self.cmbRwyCode)

        self.txtStripWidth = DistanceBoxPanel(self.grbRunway, DistanceUnits.M)
        self.txtStripWidth.Caption = "Strip Width"
        self.txtStripWidth.Value = Distance(300)
        self.txtStripWidth.LabelWidth = 160
        self.vLayout_grbRunway.addWidget(self.txtStripWidth)

        self.verticalLayout.addWidget(self.grbRunway)

        self.grbParameters = QtGui.QGroupBox(form_VSS)
        self.grbParameters.setObjectName(_fromUtf8("grbParameters"))
        self.vLayout_grbParameters = QtGui.QVBoxLayout(self.grbParameters)
        self.vLayout_grbParameters.setObjectName(
            _fromUtf8("vLayout_grbParameters"))

        self.cmbApproachType = ComboBoxPanel(self.grbParameters)
        self.cmbApproachType.Caption = "Approach Type"
        self.cmbApproachType.LabelWidth = 160
        self.vLayout_grbParameters.addWidget(self.cmbApproachType)

        self.txtTrack = TrackRadialBoxPanel(self.grbParameters)
        self.txtTrack.Caption = "In-bound Track"
        self.txtTrack.LabelWidth = 160
        self.vLayout_grbParameters.addWidget(self.txtTrack)

        self.txtThrFaf = DistanceBoxPanel(self.grbParameters, DistanceUnits.NM)
        self.txtThrFaf.Caption = "THR to FAF Distance"
        self.txtThrFaf.Value = Distance(5, DistanceUnits.NM)
        self.txtThrFaf.LabelWidth = 160
        self.vLayout_grbParameters.addWidget(self.txtThrFaf)

        self.txtDescAngle = AngleGradientBoxPanel(self.grbParameters)
        self.txtDescAngle.CaptionUnits = AngleGradientSlopeUnits.Degrees
        self.txtDescAngle.Caption = "Descent Angle"
        self.txtDescAngle.LabelWidth = 160
        self.txtDescAngle.Value = AngleGradientSlope(
            3, AngleGradientSlopeUnits.Degrees)
        self.vLayout_grbParameters.addWidget(self.txtDescAngle)

        self.pnlOCAH = MCAHPanel(self.grbParameters)
        self.pnlOCAH.lblMCAH.setText("Minimum Altitude (ft):")
        self.pnlOCAH.lblMCAH.setMaximumWidth(160)
        self.pnlOCAH.lblMCAH.setMinimumWidth(160)
        self.pnlOCAH.setValue(Altitude(800, AltitudeUnits.FT))
        self.pnlOCAH.cmbMCAH.clear()
        self.pnlOCAH.cmbMCAH.addItems([OCAHType.OCA, OCAHType.OCH])
        self.vLayout_grbParameters.addWidget(self.pnlOCAH)

        self.cmbConstructionType = ComboBoxPanel(self.grbParameters)
        self.cmbConstructionType.Caption = "Construction Type"
        self.cmbConstructionType.LabelWidth = 160
        self.vLayout_grbParameters.addWidget(self.cmbConstructionType)

        self.chbAdCodeF = CheckBox(self.grbParameters)
        self.chbAdCodeF.Caption = "Aerodrome Code Letter"
        self.vLayout_grbParameters.addWidget(self.chbAdCodeF)

        self.verticalLayout.addWidget(self.grbParameters)
        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem)

        self.retranslateUi(form_VSS)
        QtCore.QMetaObject.connectSlotsByName(form_VSS)

    def retranslateUi(self, form_VSS):
        form_VSS.setWindowTitle(_translate("form_VSS", "Form", None))
        self.grbRunway.setTitle(_translate("form_VSS", "Runway", None))
        # self.label_69.setText(_translate("form_VSS", "Direction (°):", None))
        # self.txtRwyDir.setText(_translate("form_VSS", "0", None))
        # self.label_66.setText(_translate("form_VSS", "Code :", None))
        # self.label_70.setText(_translate("form_VSS", "Strip Width (m):", None))
        # self.txtStripWidth.setText(_translate("form_VSS", "300", None))
        self.grbParameters.setTitle(_translate("form_VSS", "Parameters", None))
예제 #2
0
class Ui_IlsBasic(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(366, 261)
        self.form = Form
        self.verticalLayout = QtGui.QVBoxLayout(Form)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))

        self.tabCtrlGeneral = QtGui.QTabWidget(Form)
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.tabCtrlGeneral.setFont(font)
        self.tabCtrlGeneral.setAutoFillBackground(False)
        self.tabCtrlGeneral.setStyleSheet(_fromUtf8(""))
        self.tabCtrlGeneral.setObjectName(_fromUtf8("tabCtrlGeneral"))
        self.verticalLayout.addWidget(self.tabCtrlGeneral)

        self.tabInputData = QtGui.QWidget(self.tabCtrlGeneral)
        self.tabInputData.setObjectName(_fromUtf8("tabInputData"))

        self.vLayoutTabInputData = QtGui.QVBoxLayout(self.tabInputData)
        self.vLayoutTabInputData.setMargin(3)
        self.vLayoutTabInputData.setObjectName(
            _fromUtf8("vLayoutTabInputData"))
        self.tabCtrlGeneral.addTab(self.tabInputData, "Input Data")

        self.tabIls = QtGui.QWidget(self.tabCtrlGeneral)
        self.tabIls.setObjectName(_fromUtf8("tabOasIls"))
        self.vLayoutTabIls = QtGui.QHBoxLayout(self.tabIls)
        self.vLayoutTabIls.setMargin(3)
        self.vLayoutTabIls.setObjectName(_fromUtf8("vLayoutTabIls"))
        self.tabCtrlGeneral.addTab(self.tabIls, "ILS Basic")

        self.cmbAerodrome = ComboBoxPanel(self.tabInputData, True)
        self.cmbAerodrome.Caption = "Aerodrome"
        self.cmbAerodrome.LabelWidth = 120
        self.vLayoutTabInputData.addWidget(self.cmbAerodrome)

        self.cmbRwyDir = ComboBoxPanel(self.tabInputData, True)
        self.cmbRwyDir.Caption = "Runway Direction"
        self.cmbRwyDir.LabelWidth = 120
        self.cmbRwyDir.Width = 120
        self.vLayoutTabInputData.addWidget(self.cmbRwyDir)

        self.pnlThr = PositionPanel(self.tabInputData)
        self.pnlThr.groupBox.setTitle("Threshold Position")
        self.pnlThr.setObjectName("positionThr")
        self.pnlThr.btnCalculater.hide()
        self.vLayoutTabInputData.addWidget(self.pnlThr)

        self.pnlRwyEnd = PositionPanel(self.tabInputData)
        self.pnlRwyEnd.groupBox.setTitle("Runway End Position")
        self.pnlRwyEnd.btnCalculater.setVisible(False)
        self.pnlRwyEnd.hideframe_Altitude()
        self.vLayoutTabInputData.addWidget(self.pnlRwyEnd)

        self.txtTrack = TrackRadialBoxPanel(self.tabInputData)
        self.txtTrack.Caption = "In-bound Track"
        self.txtTrack.LabelWidth = 120
        self.vLayoutTabInputData.addWidget(self.txtTrack)

        self.grbParameters = QtGui.QGroupBox(self.tabIls)
        self.grbParameters.setObjectName(_fromUtf8("grbParameters"))
        self.vLayout_grbParameters = QtGui.QVBoxLayout(self.grbParameters)
        self.vLayout_grbParameters.setObjectName(
            _fromUtf8("vLayout_grbParameters"))

        self.cmbGPA = ComboBoxPanel(self.grbParameters)
        self.cmbGPA.Caption = "Glide Path Angle"
        self.vLayout_grbParameters.addWidget(self.cmbGPA)

        self.txtRDH = AltitudeBoxPanel(self.grbParameters)
        self.txtRDH.CaptionUnits = "m"
        self.txtRDH.Caption = "ILS RDH at Threshold"
        self.txtRDH.Value = Altitude(15)
        self.vLayout_grbParameters.addWidget(self.txtRDH)

        self.cmbSelectionMode = ComboBoxPanel(self.grbParameters)
        self.cmbSelectionMode.Caption = "Selection Mode"
        self.vLayout_grbParameters.addWidget(self.cmbSelectionMode)

        self.cmbConstructionType = ComboBoxPanel(self.grbParameters)
        self.cmbConstructionType.Caption = "Construction Type"
        self.vLayout_grbParameters.addWidget(self.cmbConstructionType)

        self.groupBox_3 = QtGui.QGroupBox(self.grbParameters)
        self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
        self.horizontalLayout_6 = QtGui.QHBoxLayout(self.groupBox_3)
        self.horizontalLayout_6.setSpacing(0)
        self.horizontalLayout_6.setMargin(0)
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        self.frame_8 = QtGui.QFrame(self.groupBox_3)
        self.frame_8.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_8.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_8.setObjectName(_fromUtf8("frame_8"))
        self.verticalLayout_14 = QtGui.QVBoxLayout(self.frame_8)
        self.verticalLayout_14.setContentsMargins(6, 0, -1, -1)
        self.verticalLayout_14.setObjectName(_fromUtf8("verticalLayout_14"))

        self.cmbAcCategory = ComboBoxPanel(self.frame_8)
        self.cmbAcCategory.Caption = "Category"
        self.cmbAcCategory.LabelWidth = 194
        self.verticalLayout_14.addWidget(self.cmbAcCategory)

        self.txtHL = AltitudeBoxPanel(self.frame_8)
        self.txtHL.CaptionUnits = "m"
        self.txtHL.Caption = "Height Loss"
        self.txtHL.Value = Altitude(40)
        self.txtHL.LabelWidth = 194
        self.verticalLayout_14.addWidget(self.txtHL)

        self.horizontalLayout_6.addWidget(self.frame_8)
        self.vLayout_grbParameters.addWidget(self.groupBox_3)
        self.vLayoutTabIls.addWidget(self.grbParameters)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.grbParameters.setTitle(_translate("Form", "Parameters", None))
        # self.label_73.setText(_translate("Form", "In-bound Track ():", None))
        # self.txtTrack.setText(_translate("Form", "0", None))
        # self.label_69.setText(_translate("Form", "Glide Path Angle:", None))
        # self.txtRDH.setText(_translate("Form", "15", None))
        # self.label_4.setText(_translate("Form", "ILS RDH at Threshold(m):", None))
        # self.label_68.setText(_translate("Form", "Selection Mode:", None))
        # self.label_8.setText(_translate("Form", "Construction Type:", None))
        self.groupBox_3.setTitle(_translate("Form", "Aircraft", None))
class Ui_HoldingOverHead(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(467, 464)
        self.verticalLayout = QtGui.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")

        self.gbNavAid = GroupBox(Form)
        self.gbNavAid.Caption = "Navigational Aid"
        self.verticalLayout.addWidget(self.gbNavAid)

        self.cmbNavAidType = ComboBoxPanel(self.gbNavAid)
        self.cmbNavAidType.Caption = "Type"
        self.cmbNavAidType.LabelWidth = 120
        self.gbNavAid.Add = self.cmbNavAidType

        self.cmbBasedOn = ComboBoxPanel(self.gbNavAid, True)
        self.cmbBasedOn.Caption = "Based On"
        self.cmbBasedOn.LabelWidth = 120
        self.cmbBasedOn.Width = 120
        self.gbNavAid.Add = self.cmbBasedOn

        self.pnlNavAid = PositionPanel(self.gbNavAid)
        self.pnlNavAid.btnCalculater.hide()
        self.pnlNavAid.setObjectName("pnlNavAid")
        self.gbNavAid.Add = self.pnlNavAid

        self.gbParameters = GroupBox(Form)
        self.gbParameters.Caption = "Parameters"
        self.verticalLayout.addWidget(self.gbParameters)

        self.cmbUsedFor = ComboBoxPanel(self.gbParameters)
        self.cmbUsedFor.Caption = "Type"
        self.cmbUsedFor.LabelWidth = 120
        self.gbParameters.Add = self.cmbUsedFor

        self.txtIas = SpeedBoxPanel(self.gbParameters, SpeedUnits.KTS)
        self.txtIas.Caption = "IAS"
        self.txtIas.Value = Speed(250)
        self.txtIas.LabelWidth = 120
        self.gbParameters.Add = self.txtIas

        self.txtTas = SpeedBoxPanel(self.gbParameters, SpeedUnits.KTS)
        self.txtTas.Caption = "TAS"
        self.txtTas.LabelWidth = 120
        self.txtTas.Enabled = False
        self.gbParameters.Add = self.txtTas

        self.txtAltitude = AltitudeBoxPanel(self.gbParameters)
        self.txtAltitude.CaptionUnits = "ft"
        self.txtAltitude.Caption = "Altitude"
        self.txtAltitude.Value = Altitude(10000, AltitudeUnits.FT)
        self.txtAltitude.LabelWidth = 120
        self.gbParameters.Add = self.txtAltitude

        self.txtIsa = NumberBoxPanel(self.gbParameters, "0.0")
        self.txtIsa.CaptionUnits = define._degreeStr
        self.txtIsa.Caption = "ISA"
        self.txtIsa.Value = 15
        self.txtIsa.LabelWidth = 120
        self.gbParameters.Add = self.txtIsa

        self.pnlWind = WindPanel(self.gbParameters)
        self.pnlWind.lblIA.setMinimumSize(113, 0)
        self.gbParameters.Add = self.pnlWind

        self.txtTime = NumberBoxPanel(self.gbParameters, "0.0")
        self.txtTime.CaptionUnits = "min"
        self.txtTime.Caption = "Time"
        self.txtTime.Value = 1
        self.txtTime.LabelWidth = 120
        self.gbParameters.Add = self.txtTime

        self.txtMoc = AltitudeBoxPanel(self.gbParameters)
        self.txtMoc.CaptionUnits = "m"
        self.txtMoc.Caption = "Moc"
        self.txtMoc.Value = Altitude(300)
        self.txtMoc.LabelWidth = 120
        self.gbParameters.Add = self.txtMoc

        self.chbCatH = CheckBox(self.gbParameters)
        self.chbCatH.Caption = "Cat. H ( linear MOC reduction up to 2NM )"
        self.gbParameters.Add = self.chbCatH

        self.gbEntryAreas = GroupBox(self.gbParameters, "HL")
        self.gbEntryAreas.Caption = "Entry Areas"
        self.gbParameters.Add = self.gbEntryAreas

        self.chbIntercept = CheckBox(self.gbEntryAreas)
        self.chbIntercept.Caption = "Intercept"
        self.gbEntryAreas.Add = self.chbIntercept

        self.chbSector1 = CheckBox(self.gbEntryAreas)
        self.chbSector1.Caption = "Sector 1"
        self.gbEntryAreas.Add = self.chbSector1

        self.chbSector2 = CheckBox(self.gbEntryAreas)
        self.chbSector2.Caption = "Sector 2"
        self.gbEntryAreas.Add = self.chbSector2

        self.chbSectors12 = CheckBox(self.gbEntryAreas)
        self.chbSectors12.Caption = "Sectors 1 & 2"
        self.gbEntryAreas.Add = self.chbSectors12

        self.chbSector3 = CheckBox(self.gbEntryAreas)
        self.chbSector3.Caption = "Sectors 3"
        self.gbEntryAreas.Add = self.chbSector3

        self.cmbConstruction = ComboBoxPanel(self.gbParameters)
        self.cmbConstruction.Caption = "Construction Type"
        self.cmbConstruction.LabelWidth = 120
        self.cmbConstruction.Width = 50
        self.gbParameters.Add = self.cmbConstruction

        self.mocSpinBox = NumberBoxPanel(self.gbParameters, None)
        self.mocSpinBox.Caption = "MOCmultiplier"
        self.mocSpinBox.LabelWidth = 120
        self.mocSpinBox.Value = 1
        self.mocSpinBox.Width = 50
        self.gbParameters.Add = self.mocSpinBox

        self.gbOrientation = GroupBox(Form)
        self.gbOrientation.Caption = "Orientation"
        self.verticalLayout.addWidget(self.gbOrientation)

        self.txtTrack = TrackRadialBoxPanel(self.gbOrientation)
        self.txtTrack.Caption = "In-bound Track"
        self.txtTrack.LabelWidth = 120
        self.gbOrientation.Add = self.txtTrack

        self.cmbOrientation = ComboBoxPanel(self.gbOrientation)
        self.cmbOrientation.Caption = "Turns"
        self.cmbOrientation.LabelWidth = 120
        self.gbOrientation.Add = self.cmbOrientation

        QtCore.QMetaObject.connectSlotsByName(Form)
class PinSVisualSegmentDepDlg(FlightPlanBaseDlg):
    def __init__(self, parent):
        QDialog.__init__(self, parent)
        self.ui = ui_PinSVisualSegmentDepDlg()
        self.ui.setupUi(self)
        self.surfaceType = SurfaceTypes.PinSVisualSegmentDep
        QgisHelper.matchingDialogSize(self, 700, 650)
        ''' UI State Initialize '''
        #         self.ui.btnOpenData.setDisabled(True)
        #         self.ui.btnSaveData.setDisabled(True)
        self.ui.btnExportResult.setDisabled(True)
        self.ui.btnEvaluate.setEnabled(False)
        self.ui.btnUpdateQA.setVisible(False)
        self.ui.btnUpdateQA_2.setVisible(False)

        self.pnlMCAH = MCAHPanel(self.ui.groupBox_20)
        self.pnlMCAH.lblMCAH.setText("Minimum (ft):")
        self.pnlMCAH.setValue(Altitude(500, AltitudeUnits.FT))
        self.ui.verticalLayout_5.insertWidget(4, self.pnlMCAH)
        self.ui.cmbSegmentType.Items = [
            PinsVisualSegmentType.Direct, PinsVisualSegmentType.Manoeuvring
        ]
        self.ui.cmbDepartureType.Items = [
            PinsOperationType.DayOnly, PinsOperationType.DayNight
        ]
        self.ui.cmbDepartureType.SelectedIndex = 1
        #         self.ui.cmbMCAH.addItems([MCAHType.MCA, MCAHType.MCH])
        self.ui.cmbDepartureType.Visible = False
        self.ui.txtTakeOffSurfaceTrack.Visible = False
        self.ui.frame_Limitation.hide()

        self.pnlHRP = PositionPanel(self.ui.grbIDF)
        self.pnlHRP.groupBox.setTitle("Heliport Reference point (HRP)")
        self.pnlHRP.btnCalculater.hide()
        self.pnlHRP.setObjectName("positionHRP")
        self.ui.verticalLayout_HRP.insertWidget(0, self.pnlHRP)
        self.connect(self.pnlHRP, SIGNAL("positionChanged"),
                     self.initResultPanel)

        self.pnlIDF = PositionPanel(self.ui.grbIDF)
        self.pnlIDF.groupBox.setTitle("")
        self.pnlIDF.hideframe_Altitude()
        self.pnlIDF.setObjectName("positionIDF")
        self.pnlIDF.btnCalculater.hide()
        self.ui.verticalLayout_IDF.insertWidget(0, self.pnlIDF)
        self.connect(self.pnlIDF, SIGNAL("positionChanged"),
                     self.initResultPanel)

        self.ui.cmbConstructionType.Items = [
            ConstructionType.Construct2D, ConstructionType.Construct3D
        ]
        self.ui.tblObstacles.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.ui.tblObstacles.setSortingEnabled(True)
        '''Event Handlers Connect'''
        self.ui.btnOpenData.clicked.connect(self.openData)
        self.ui.btnSaveData.clicked.connect(self.saveData)
        self.connect(self.ui.cmbSegmentType, SIGNAL("Event_0"),
                     self.chbLeftTurnProhibited_Click)
        self.connect(self.ui.cmbDepartureType, SIGNAL("Event_0"),
                     self.chbLeftTurnProhibited_Click)
        self.connect(self.ui.txtVSDG, SIGNAL("Event_0"),
                     self.chbLeftTurnProhibited_Click)
        self.connect(self.ui.txtTakeOffSurfaceTrack, SIGNAL("Event_0"),
                     self.chbLeftTurnProhibited_Click)
        # self.ui.btnCaptureSurfaceTrack.clicked.connect(self.method_39)
        self.ui.chbLeftTurnProhibited.clicked.connect(
            self.chbLeftTurnProhibited_Click)
        self.ui.chbRightTurnProhibited.clicked.connect(
            self.chbLeftTurnProhibited_Click)
        # self.ui.btnCaptureTrackFrom.clicked.connect(self.method_37)
        self.pnlIDF.txtPointX.textChanged.connect(
            self.chbLeftTurnProhibited_Click)
        self.pnlIDF.txtPointY.textChanged.connect(
            self.chbLeftTurnProhibited_Click)
        self.pnlHRP.txtPointX.textChanged.connect(
            self.chbLeftTurnProhibited_Click)
        self.pnlHRP.txtPointY.textChanged.connect(
            self.chbLeftTurnProhibited_Click)
        self.pnlHRP.txtAltitudeM.textChanged.connect(
            self.chbLeftTurnProhibited_Click)
        self.ui.btnClose.clicked.connect(self.reject)
        self.ui.btnClose_2.clicked.connect(self.reject)
        self.ui.btnConstruct.clicked.connect(self.btnConstruct_Click)
        self.ui.btnEvaluate.clicked.connect(self.btnEvaluate_Click)
        self.ui.cmbSurface.currentIndexChanged.connect(self.cmbSurfaceChanged)
        self.ui.btnExportResult.clicked.connect(self.exportResult)
        self.obstaclesModel = None

        lstTextControls = self.ui.groupBox_20.findChildren(QLineEdit)
        for ctrl in lstTextControls:
            ctrl.textChanged.connect(self.initResultPanel)

        lstComboControls = self.ui.groupBox_20.findChildren(QComboBox)
        for ctrl in lstComboControls:
            ctrl.currentIndexChanged.connect(self.initResultPanel)

    def initResultPanel(self):
        self.ui.btnEvaluate.setEnabled(False)
        self.ui.btnExportResult.setEnabled(False)
        if self.obstaclesModel != None:
            self.obstaclesModel.clear()

    def cmbSurfaceChanged(self):
        if self.obstaclesModel == None:
            return
        if self.ui.cmbSurface.currentIndex(
        ) == 0 and self.ui.cmbSurface.currentText() == "All":
            self.obstaclesModel.setFilterFixedString("")
        else:
            self.obstaclesModel.setFilterFixedString(
                self.ui.cmbSurface.currentText())

    def btnEvaluate_Click(self):
        try:
            self.obstaclesModel = PinSVisualSegmentDepObstacles(
                [self.pinSVisualSegmentDepManouvering])
            rnpArMapLayers = QgisHelper.getSurfaceLayers(
                SurfaceTypes.PinSVisualSegmentDep)
            self.obstaclesModel.loadObstacles(rnpArMapLayers)
            self.obstaclesModel.setLocateBtn(self.ui.btnLocate)
            self.ui.tblObstacles.setModel(self.obstaclesModel)
            self.obstaclesModel.setTableView(self.ui.tblObstacles)
            self.obstaclesModel.setHiddenColumns(self.ui.tblObstacles)
            self.ui.cmbSurface.setCurrentIndex(0)
            self.ui.tabControls.setCurrentIndex(1)

            self.ui.cmbSurface.clear()
            if self.ui.cmbSegmentType.SelectedIndex != 0:
                self.ui.cmbSurface.addItems([
                    "All", PinsSurfaceType.PinsSurfaceType_LevelOIS,
                    PinsSurfaceType.PinsSurfaceType_OCS
                ])
            else:
                self.ui.cmbSurface.addItem("All")
                self.ui.cmbSurface.addItem(PinsSurfaceType.PinsSurfaceType_OIS)
            self.ui.btnExportResult.setEnabled(True)
#             raise ValueError, ""
        except UserWarning as e:
            QMessageBox.warning(self, "Information", e.message)

    def method_27(self, bool_0):
        if not self.pnlIDF.IsValid():
            raise UserWarning, "IDF poisition value is incorrect. "
        # if (self.ui.cmbSegmentType.SelectedIndex == 0):
        #     self.valueValidate(self.ui.txtTrackFrom, "Track From")
        # self.valueValidate(self.ui.txtMOC, "Moc")
        if not self.pnlHRP.IsValid():
            raise UserWarning, "HRP poisition value is incorrect."
        # self.valueValidate(self.ui.txtHSAL, "Safety Area Length")
        # self.valueValidate(self.ui.txtHSAW, "Safety Area Width")
        # if self.valueValidate(self.ui.txtVSDG, "VSDG") and float(self.ui.txtVSDG.text()) < 5:
        #     raise UserWarning ,Validations.VALUE_CANNOT_BE_SMALLER_THAN%5
        # if (self.ui.cmbSegmentType.SelectedIndex== 1):
        #     self.valueValidate(self.ui.txtTakeOffSurfaceTrack.txtRadialPlan, "TakeOffSurfaceTrack")
        self.valueValidate(self.pnlMCAH.txtMCAH, "Minimum")
        return True

    def method_29(self):
        self.ui.cmbSurface.clear()

    def method_32(self):
        self.ui.cmbDepartureType.Visible = self.ui.cmbSegmentType.SelectedIndex == 1
        self.ui.txtTakeOffSurfaceTrack.Visible = self.ui.cmbSegmentType.SelectedIndex == 1
        self.ui.txtTrackFrom.Visible = self.ui.cmbSegmentType.SelectedIndex == 0
        self.ui.txtMOC.Visible = self.ui.cmbSegmentType.SelectedIndex == 0
        self.ui.frame_Limitation.setVisible(
            self.ui.cmbSegmentType.SelectedIndex == 1)

    def method_33(self):
        turnDirection = []
        try:
            if (self.ui.cmbSegmentType.SelectedIndex == 1):
                point3d = self.pnlIDF.getPoint3D()
                point3d1 = self.pnlHRP.getPoint3D()
                num = Unit.smethod_1(MathHelper.getBearing(point3d, point3d1))
                num1 = self.smethod_17(
                    self.ui.txtTakeOffSurfaceTrack.txtRadialPlan.numberBox)
                MathHelper.smethod_77(num, num1, AngleUnits.Degrees,
                                      turnDirection)

                if (turnDirection[0] == TurnDirection.Left):
                    pass
#                     self.ui.chbLeftTurnProhibited.setVisible(False)
#                     self.ui.chbRightTurnProhibited.setVisible(True)
                elif (turnDirection[0] != TurnDirection.Right):
                    #                     self.ui.chbLeftTurnProhibited.setVisible(True)
                    #                     self.ui.chbRightTurnProhibited.setVisible(True)
                    if (self.ui.chbLeftTurnProhibited.isChecked()
                            and self.ui.chbRightTurnProhibited.isChecked()):
                        self.ui.chbRightTurnProhibited.setChecked(False)
                else:
                    pass
#                     self.ui.chbRightTurnProhibited.setVisible(False)
#                     self.ui.chbLeftTurnProhibited.setVisible(True)
        except:
            pass

    # def method_37(self):
    #     CaptureBearingTrackFrom = CaptureBearingTool(define._canvas, self.ui.txtTrackFrom)
    #     define._canvas.setMapTool(CaptureBearingTrackFrom)
    # def method_39(self):
    #     CaptureBearingSurfaceTrack = CaptureBearingTool(define._canvas, self.ui.txtTakeOffSurfaceTrack)
    #     define._canvas.setMapTool(CaptureBearingSurfaceTrack)
    def chbLeftTurnProhibited_Click(self):
        sender = self.sender()
        if sender == self.ui.cmbSegmentType:
            self.method_32()
        elif (sender == self.pnlIDF.txtPointX
              or sender == self.pnlIDF.txtPointY):
            self.method_33()
        elif (sender == self.pnlHRP.txtPointX
              or sender == self.pnlHRP.txtPointY
              or sender == self.pnlHRP.txtAltitudeM):
            self.method_33()
        elif (sender == self.ui.txtTakeOffSurfaceTrack):
            self.method_33()
        elif ((sender == self.ui.chbLeftTurnProhibited
               or sender == self.ui.chbRightTurnProhibited)
              and self.ui.cmbSegmentType.SelectedIndex == 1):
            if (sender == self.ui.chbLeftTurnProhibited):
                if (self.ui.chbRightTurnProhibited.isVisible()):
                    self.ui.chbRightTurnProhibited.setChecked(False)
            elif (sender == self.ui.chbRightTurnProhibited
                  and self.ui.chbLeftTurnProhibited.isVisible()):
                self.ui.chbLeftTurnProhibited.setChecked(False)
        self.method_29()

    def smethod_17(self, txtBox):
        try:
            value1 = float(txtBox.text())
            return value1
        except:
            return 0

    def btnConstruct_Click(self):
        flag = FlightPlanBaseDlg.btnConstruct_Click(self)
        if not flag:
            return
        try:
            self.method_27(True)
            if (self.ui.cmbSegmentType.SelectedIndex != 0):
                self.pinSVisualSegmentDepManouvering = PinSVisualSegmentDepManouvering(
                    self)
            else:
                self.pinSVisualSegmentDepManouvering = PinSVisualSegmentDepDirect(
                    self)

            layersList = []
            if self.ui.cmbConstructionType.SelectedItem != ConstructionType.Construct2D:
                self.pinSVisualSegmentDepManouvering.imethod_2(layersList)
            else:
                self.pinSVisualSegmentDepManouvering.imethod_1(layersList)

            QgisHelper.appendToCanvas(define._canvas, layersList,
                                      SurfaceTypes.PinSVisualSegmentDep)
            QgisHelper.zoomToLayers(layersList)
            self.resultLayerList = layersList
            self.ui.btnEvaluate.setEnabled(True)
        except UserWarning as e:
            QMessageBox.warning(self, "Error", e.message)

    def valueValidate(self, txtBox, title):
        try:
            value = float(txtBox.text())
            return True
        except ValueError:
            raise UserWarning, "%s Value is not correct " % title

    def exportResult(self):
        result, resultHideColumnNames = FlightPlanBaseDlg.exportResult(self)
        if not result:
            return

        filePathDir = QFileDialog.getSaveFileName(
            self, "Export Obstacle Data",
            QCoreApplication.applicationDirPath(),
            "ExportObstaclefiles(*.xml)")
        if filePathDir == "":
            return
        if self.ui.cmbSegmentType.SelectedIndex != 0:
            self.filterList = [
                "", PinsSurfaceType.PinsSurfaceType_LevelOIS,
                PinsSurfaceType.PinsSurfaceType_OCS
            ]
        else:
            self.filterList = ["", PinsSurfaceType.PinsSurfaceType_OIS]
#         self.ui.btnExportResult.setEnabled(True)

        parameterList = self.getParameterList()
        DataHelper.saveExportResult(filePathDir,
                                    "PinS Visual Segment for Departures",
                                    self.ui.tblObstacles, self.filterList,
                                    parameterList, resultHideColumnNames)
        self.obstaclesModel.setFilterFixedString(
            self.filterList[self.ui.cmbSurface.currentIndex()])


#         FlightPlanBaseDlg.exportResult()

    def getParameterList(self):
        parameterList = []
        parameterList.append(("general", "group"))
        parameterList.append(("Parameters", "group"))
        parameterList.append(
            ("Visual Segment Type", self.ui.cmbSegmentType.SelectedItem))
        parameterList.append(
            ("VSDG", str(self.ui.txtVSDG.Value.Percent) + " %"))
        parameterList.append(
            ("Minimum(%s)" % self.pnlMCAH.cmbMCAH.currentText(),
             self.pnlMCAH.txtMCAH.text() + " ft"))
        parameterList.append(
            ("Construction Type", self.ui.cmbConstructionType.SelectedItem))
        if self.ui.cmbSegmentType.SelectedIndex != 0:
            parameterList.append(
                ("Departure Type", self.ui.cmbDepartureType.SelectedItem))
            parameterList.append(
                ("Out-bound Take-off Surface Track",
                 "Plan : " + str(self.parametersPanel.txtTakeOffSurfaceTrack.
                                 txtRadialPlan.Value) + define._degreeStr))
            parameterList.append(
                ("", "Geodetic : " +
                 str(self.parametersPanel.txtTakeOffSurfaceTrack.
                     txtRadialGeodetic.Value) + define._degreeStr))

            # parameterList.append(("Out-bound Take-off Surface Track", self.ui.txtTakeOffSurfaceTrack.Value + unicode(" °", "utf-8")))
            if self.ui.chbRightTurnProhibited.isChecked():
                parameterList.append(("Limitation", "Right turn prohibited"))
            else:
                parameterList.append(("Limitation", "Left turn prohibited"))
        else:
            parameterList.append(
                ("MOC", str(self.ui.txtMOC.Value.Metres) + " m"))
            parameterList.append(("", str(self.ui.txtMOC.Value.Feet) + " ft"))

        parameterList.append(("Initial Departure Fix (IDF)", "group"))
        #         parameterList.append(("X", self.pnlIDF.txtPointX.text()))
        #         parameterList.append(("Y", self.pnlIDF.txtPointY.text()))
        DataHelper.pnlPositionParameter(self.pnlIDF, parameterList)
        if self.ui.cmbSegmentType.SelectedIndex == 0:
            parameterList.append(
                ("Track From",
                 "Plan : " + str(self.ui.txtTrackFrom.txtRadialPlan.Value) +
                 define._degreeStr))
            parameterList.append(
                ("", "Geodetic : " +
                 str(self.ui.txtTrackFrom.txtRadialGeodetic.Value) +
                 define._degreeStr))

            # parameterList.append(("Track From", self.ui.txtTrackFrom.Value + unicode(" °", "utf-8")))

        parameterList.append(("Heliport", "group"))
        DataHelper.pnlPositionParameter(self.pnlHRP, parameterList)
        parameterList.append(
            ("Safety Area Length", str(self.ui.txtHSAL.Value.Metres) + " m"))
        parameterList.append(
            ("Safety Area Width", str(self.ui.txtHSAW.Value.Metres) + " m"))

        parameterList.append(("Results / Checked Obstacles", "group"))

        parameterList.append(("Checked Obstacles", "group"))

        for strFilter in self.filterList:
            self.obstaclesModel.setFilterFixedString(strFilter)
            c = self.obstaclesModel.rowCount()
            parameterList.append(
                ("Number of Checked Obstacles(%s)" % strFilter, str(c)))
        return parameterList