class MapScalePanel(QWidget):
    def __init__(self, parent, mapScaleDropDownType):
        QWidget.__init__(self, parent)
        while not isinstance(parent, QDialog):
            parent = parent.parent()
        self.setObjectName("DistanceBoxPanel" +
                           str(len(parent.findChildren(MapScalePanel))))

        self.hLayoutBoxPanel = QHBoxLayout(self)
        self.hLayoutBoxPanel.setSpacing(0)
        self.hLayoutBoxPanel.setContentsMargins(0, 0, 0, 0)
        self.hLayoutBoxPanel.setObjectName(("hLayoutBoxPanel"))
        self.frameBoxPanel = QFrame(self)
        sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.frameBoxPanel.sizePolicy().hasHeightForWidth())
        self.frameBoxPanel.setSizePolicy(sizePolicy)
        self.frameBoxPanel.setFrameShape(QFrame.NoFrame)
        self.frameBoxPanel.setFrameShadow(QFrame.Raised)
        self.frameBoxPanel.setObjectName(("frameBoxPanel"))
        self.hLayoutframeBoxPanel = QHBoxLayout(self.frameBoxPanel)
        self.hLayoutframeBoxPanel.setSpacing(0)
        self.hLayoutframeBoxPanel.setMargin(0)
        self.hLayoutframeBoxPanel.setObjectName(("hLayoutframeBoxPanel"))
        self.captionLabel = QLabel(self.frameBoxPanel)
        sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.captionLabel.sizePolicy().hasHeightForWidth())
        self.captionLabel.setSizePolicy(sizePolicy)
        self.captionLabel.setMinimumSize(QSize(200, 0))
        self.captionLabel.setMaximumSize(QSize(200, 16777215))
        font = QFont()
        font.setBold(False)
        font.setWeight(50)
        self.captionLabel.setFont(font)
        self.captionLabel.setObjectName(("captionLabel"))
        self.hLayoutframeBoxPanel.addWidget(self.captionLabel)

        self.frameBoxPanelIn = QFrame(self.frameBoxPanel)
        self.frameBoxPanelIn.setFrameShape(QFrame.StyledPanel)
        self.frameBoxPanelIn.setFrameShadow(QFrame.Raised)
        self.frameBoxPanelIn.setObjectName(("frameBoxPanelIn"))
        self.hLayoutframeBoxPanelIn = QHBoxLayout(self.frameBoxPanelIn)
        self.hLayoutframeBoxPanelIn.setSpacing(0)
        self.hLayoutframeBoxPanelIn.setMargin(0)
        self.hLayoutframeBoxPanelIn.setObjectName(("hLayoutframeBoxPanelIn"))

        self.comboBox = ComboBoxPanel(self.frameBoxPanelIn)
        self.comboBox.Caption = "1"
        self.comboBox.LabelWidth = 20
        self.hLayoutframeBoxPanelIn.addWidget(self.comboBox)
        # self.txtDistance = QLineEdit(self.frameBoxPanelIn)
        # self.txtDistance.setEnabled(True)
        # font = QFont()
        # font.setBold(False)
        # font.setWeight(50)
        # self.txtDistance.setFont(font)
        # self.txtDistance.setObjectName(("txtDistance"))
        # self.txtDistance.setText("0.0")
        # self.txtDistance.setMinimumWidth(70)
        # self.txtDistance.setMaximumWidth(70)
        # self.hLayoutframeBoxPanelIn.addWidget(self.txtDistance)

        self.imageButton = QToolButton(self.frameBoxPanelIn)
        self.imageButton.setText((""))
        icon = QIcon()
        icon.addPixmap(QPixmap(("Resource/coordinate_capture.png")),
                       QIcon.Normal, QIcon.Off)
        self.imageButton.setIcon(icon)
        self.imageButton.setObjectName(("btnDegreeBoxPanel"))
        self.hLayoutframeBoxPanelIn.addWidget(self.imageButton)

        self.hLayoutframeBoxPanel.addWidget(self.frameBoxPanelIn)
        self.hLayoutBoxPanel.addWidget(self.frameBoxPanel)

        spacerItem = QSpacerItem(10, 10, QSizePolicy.Expanding,
                                 QSizePolicy.Minimum)
        self.hLayoutBoxPanel.addItem(spacerItem)

        self.imageButton.clicked.connect(self.imageButtonClicked)
        define._canvas.renderComplete.connect(self.canvas_renderComplete)
        self.connect(self.comboBox, SIGNAL("Event_0"), self.comboBox_Event_0)
        self.flag = 0
        self.dropDownType = mapScaleDropDownType
        self.method_5()
        self.imageButton.setVisible(False)

    def comboBox_Event_0(self):
        define._canvas.zoomScale(float(self.comboBox.SelectedItem))

    def canvas_renderComplete(self):
        self.comboBox.comboBox.setEditText(str(int(define._canvas.scale())))

    def method_4(self, mapScaleDropDownType_0):
        return (self.dropDownType
                & mapScaleDropDownType_0) == mapScaleDropDownType_0

    def method_5(self):
        self.comboBox.Clear()
        if (self.method_4(MapScaleDropDownType.Aerodrome)):
            for i in range(2, 7):
                num = i * 5000
                self.comboBox.Add(str(num))
        if (self.method_4(MapScaleDropDownType.Approach)):
            for j in range(4, 20):
                num1 = j * 50000
                self.comboBox.Add(str(num1))
        if (self.method_4(MapScaleDropDownType.Enroute)):
            for k in range(2, 21):
                num2 = k * 500000
                self.comboBox.Add(str(num2))

    # def method_6(self, string_0):
    #     value = None
    #     if self.distanceUnit == DistanceUnits.NM:
    #         value = self.txtDistance.text() + "nm"
    #     elif self.distanceUnit == DistanceUnits.M:
    #         value = self.txtDistance.text() + "m"
    #     elif self.distanceUnit == DistanceUnits.KM:
    #         value = self.txtDistance.text() + "km"
    #     elif self.distanceUnit == DistanceUnits.FT:
    #         value = self.txtDistance.text() + "ft"
    #     elif self.distanceUnit == DistanceUnits.MM:
    #         value = self.txtDistance.text() + "mm"
    #     else:
    #         value = ""
    #
    #
    #     return "%s%s\t%s"%(string_0, self.Caption, value);
    def txtDistanceChanged(self):
        try:
            test = float(self.txtDistance.text())
            self.emit(SIGNAL("Event_0"), self)
        except:
            str0 = "You must input the float type in \"%s\"." % (self.Caption)
            QMessageBox.warning(self, "Warning", str0)
            self.txtDistance.setText("0.0")

    def imageButtonClicked(self):
        measureDistanceTool = MeasureTool(define._canvas, self.txtDistance,
                                          self.distanceUnit)
        define._canvas.setMapTool(measureDistanceTool)
        self.emit(SIGNAL("Event_1"), self)

    def get_CaptionUnits(self):
        return self.distanceUnit

    def set_CaptionUnits(self, distanceUnit):
        self.distanceUnit = distanceUnit

    CaptionUnits = property(get_CaptionUnits, set_CaptionUnits, None, None)

    def get_Caption(self):
        caption = self.captionLabel.text()
        findIndex = caption.indexOf("(")
        if findIndex > 0:
            val = caption.left(findIndex)
            return val
        return caption

    def set_Caption(self, captionStr):
        # if self.distanceUnit == DistanceUnits.NM:
        #     value = captionStr + "(nm)"
        # elif self.distanceUnit == DistanceUnits.M:
        #     value = captionStr + "(m)"
        # elif self.distanceUnit == DistanceUnits.KM:
        #     value = captionStr + "(km)"
        # elif self.distanceUnit == DistanceUnits.FT:
        #     value = captionStr + "(ft)"
        # elif self.distanceUnit == DistanceUnits.MM:
        #     value = captionStr + "(mm)"
        # else:
        #     value = ""
        self.captionLabel.setText(captionStr + ":")

    Caption = property(get_Caption, set_Caption, None, None)

    def get_dropDownType(self):
        return self.dropDownType

    def set_dropDownType(self, val):
        self.dropDownType = val

    DropDownType = property(get_dropDownType, set_dropDownType, None, None)

    def get_Value(self):
        try:
            return self.comboBox.SelectedItem
        except:
            return ""

    # def set_Value(self, value):

    Value = property(get_Value, None, None, None)

    # def get_IsEmpty(self):
    #     return self.txtDistance.text() == "" or self.txtDistance.text() == None
    # IsEmpty = property(get_IsEmpty, None, None, None)

    def set_LabelWidth(self, width):
        self.captionLabel.setMinimumSize(QSize(width, 0))
        self.captionLabel.setMaximumSize(QSize(width, 16777215))

    LabelWidth = property(None, set_LabelWidth, None, None)

    def get_ReadOnly(self):
        return self.comboBox.isReadOnly()

    def set_ReadOnly(self, bool):
        self.comboBox.setReadOnly(bool)

    ReadOnly = property(get_ReadOnly, set_ReadOnly, None, None)

    def get_Enabled(self):
        return self.comboBox.Enabled

    def set_Enabled(self, bool):
        self.comboBox.Enabled = bool
        self.imageButton.setEnabled(bool)

    Enabled = property(get_Enabled, set_Enabled, None, None)

    def get_Visible(self):
        return self.isVisible()

    def set_Visible(self, bool):
        self.setVisible(bool)

    Visible = property(get_Visible, set_Visible, None, None)

    def set_Button(self, imageName):
        if imageName == None or imageName == "":
            self.imageButton.setVisible(False)
            return
        icon = QIcon()
        icon.addPixmap(QPixmap(("Resource/" + imageName)), QIcon.Normal,
                       QIcon.Off)
        self.imageButton.setIcon(icon)
        self.imageButton.setVisible(True)

    Button = property(None, set_Button, None, None)
Example #2
0
class ProcedureMngForm(QDialog):
    def __init__(self, parent=None):
        QDialog.__init__(self)

        self.setObjectName(("ui_ProcedureMngForm"))
        self.resize(200, 200)
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.setFont(font)

        self.vlForm = QVBoxLayout(self)
        self.vlForm.setObjectName(("vl_ProceduretMngForm"))
        self.vlForm.setSpacing(9)
        self.vlForm.setMargin(9)

        self.basicFrame = Frame(self)
        self.vlForm.addWidget(self.basicFrame)

        self.frameName = Frame(self.basicFrame, "HL")
        self.basicFrame.Add = self.frameName

        self.frame = Frame(self.frameName)
        self.frameName.Add = self.frame

        self.comboProjectProcedure = ComboBoxPanel(self.frame)
        self.comboProjectProcedure.Caption = "Project"
        self.comboProjectProcedure.LabelWidth = 120
        self.frame.Add = self.comboProjectProcedure

        self.comboSubProjectProcedure = ComboBoxPanel(self.frame)
        self.comboSubProjectProcedure.Caption = "Sub-Project"
        self.comboSubProjectProcedure.LabelWidth = 120
        self.frame.Add = self.comboSubProjectProcedure

        self.comboWorkspaceProcedure = ComboBoxPanel(self.frame)
        self.comboWorkspaceProcedure.Caption = "Workspace"
        self.comboWorkspaceProcedure.LabelWidth = 120
        self.frame.Add = self.comboWorkspaceProcedure

        self.textNameProcedure = TextBoxPanel(self.frame)
        self.textNameProcedure.Caption = "Procedure Name"
        self.textNameProcedure.LabelWidth = 120
        self.textNameProcedure.Width = 120
        self.frame.Add = self.textNameProcedure

        self.groubox = GroupBox(self.frameName)
        self.groubox.Caption = "Procedures"
        self.frameName.Add = self.groubox

        self.listBoxProcedure = ListBox(self.groubox)
        self.groubox.Add = self.listBoxProcedure

        self.textPathProcedure = TextBoxPanel(self.basicFrame)
        self.textPathProcedure.Caption = "Procedure Path"
        self.textPathProcedure.imageButton.setIcon(QIcon())
        self.textPathProcedure.Button = "opens.png"
        self.textPathProcedure.LabelWidth = 120
        self.textPathProcedure.textBox.setMaximumWidth(10000)
        self.textPathProcedure.textBox.setMinimumWidth(100)
        self.basicFrame.Add = self.textPathProcedure

        self.btnFrame = Frame(self.basicFrame, "HL")
        self.basicFrame.Add = self.btnFrame

        self.buttonAddProcedure = QPushButton(self.btnFrame)
        self.buttonAddProcedure.setObjectName("buttonAddProcedure")
        self.buttonAddProcedure.setText("Add")
        self.btnFrame.Add = self.buttonAddProcedure

        self.buttonModifyProcedure = QPushButton(self.btnFrame)
        self.buttonModifyProcedure.setObjectName("buttonModifyProcedure")
        self.buttonModifyProcedure.setText("Modify")
        self.btnFrame.Add = self.buttonModifyProcedure

        self.buttonDeleteProcedure = QPushButton(self.btnFrame)
        self.buttonDeleteProcedure.setObjectName("buttonDeleteProcedure")
        self.buttonDeleteProcedure.setText("Delete")
        self.btnFrame.Add = self.buttonDeleteProcedure

        self.buttonSaveProcedure = QPushButton(self.btnFrame)
        self.buttonSaveProcedure.setObjectName("buttonSaveProcedure")
        self.buttonSaveProcedure.setText("Save")
        self.btnFrame.Add = self.buttonSaveProcedure

        self.buttonCloseProcedure = QPushButton(self.btnFrame)
        self.buttonCloseProcedure.setObjectName("buttonCloseProcedure")
        self.buttonCloseProcedure.setText("Close")
        self.btnFrame.Add = self.buttonCloseProcedure

        self.connect(self.listBoxProcedure, SIGNAL("Event_0"),
                     self.listBoxProcedure_SelectedIndexChanged)
        self.connect(self.comboProjectProcedure, SIGNAL("Event_0"),
                     self.comboProjectProcedure_SelectedIndexChanged)
        self.connect(self.comboSubProjectProcedure, SIGNAL("Event_0"),
                     self.comboSubProjectProcedure_SelectedIndexChanged)
        self.connect(self.textPathProcedure, SIGNAL("Event_1"),
                     self.buttonBrowseWorkspace_Click)

        self.buttonCloseProcedure.clicked.connect(
            self.buttonCloseProcedure_Click)
        self.buttonSaveProcedure.clicked.connect(
            self.buttonSaveProcedure_Click)
        self.buttonDeleteProcedure.clicked.connect(
            self.buttonDeleteProcedure_Click)
        self.buttonModifyProcedure.clicked.connect(
            self.buttonModifyProcedure_Click)
        self.buttonAddProcedure.clicked.connect(self.buttonAddProcedure_Click)

        for pi in AirCraftOperation.g_projectList.ProjectsList:
            if (pi.Pt == enumProjectType.ptFile):
                self.listBoxProcedure.Add(pi.Name)
            elif (pi.Pt == enumProjectType.ptProject):
                self.comboProjectProcedure.Add(pi.Name)
            elif (pi.Pt == enumProjectType.ptSubProject):
                self.comboSubProjectProcedure.Add(pi.Name)
            elif (pi.Pt == enumProjectType.ptWorkspace):
                self.comboWorkspaceProcedure.Add(pi.Name)
        self.comboProjectProcedure_SelectedIndexChanged()
        self.comboSubProjectProcedure_SelectedIndexChanged()

    def CheckInputValues(self):
        if (self.textNameProcedure.Text == None
                or self.textNameProcedure.Text == ""):
            QMessageBox.warning(self, "Warning", "Please input project name!")
            return False
        if (self.textPathProcedure.Text == None
                or self.textPathProcedure.Text == ""):
            QMessageBox.warning(self, "Warning", "Please input project path!")
            return False
        if (self.comboProjectProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning", "Please select an Project!")
            return False
        if (self.comboSubProjectProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning",
                                "Please select an Sub-Project!")
            return False
        if (self.comboWorkspaceProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning", "Please select an Workspace!")
            return
        directory = QDir(self.textPathProcedure.Text)
        if (not directory.exists()):
            if (QMessageBox.question(
                    self, "Question",
                    "Procedure path dose not exist! Do you create the directory?",
                    QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes):
                directory.mkpath(self.textPathProcedure.Text)
            else:
                return False
        return True

    # private void WorkspaceMngForm_Load(object sender, EventArgs e)
    # {
    #     try
    #     {
    #         foreach (ProjectInfo pi in AirCraftOperation.g_projectList.ProjectsList)
    #         {
    #             if (pi.Pt == enumProjectType.ptFile)
    #             {
    #                 self.listBoxProcedure.Items.Add(pi.Name)
    #             }
    #             else if (pi.Pt == enumProjectType.ptProject)
    #             {
    #                 self.comboProjectProcedure.Items.Add(pi.Name)
    #             }
    #             else if (pi.Pt == enumProjectType.ptSubProject)
    #             {
    #                 self.comboSubProjectProcedure.Items.Add(pi.Name)
    #             }
    #             else if (pi.Pt == enumProjectType.ptWorkspace)
    #             {
    #                 self.comboWorkspaceProcedure.Items.Add(pi.Name)
    #             }
    #         }
    #     }
    #     catch (System.Exception ex)
    #     {
    #         MessageBox.Show(ex.Message)
    #     }
    # }

    def listBoxProcedure_SelectedIndexChanged(self):
        if (self.listBoxProcedure.SelectedIndex < 0):
            return
        pi = AirCraftOperation.g_projectList.Find(
            self.listBoxProcedure.Items[self.listBoxProcedure.SelectedIndex])
        self.textNameProcedure.Text = AirCraftOperation.g_projectList.ProjectsList[
            pi].Name
        self.textPathProcedure.Text = AirCraftOperation.g_projectList.ProjectsList[
            pi].Path
        self.comboProjectProcedure.SelectedIndex = self.comboProjectProcedure.IndexOf(
            AirCraftOperation.g_projectList.ProjectsList[pi].ProjName)
        self.comboSubProjectProcedure.SelectedIndex = self.comboSubProjectProcedure.IndexOf(
            AirCraftOperation.g_projectList.ProjectsList[pi].SubProjName)
        self.comboWorkspaceProcedure.SelectedIndex = self.comboWorkspaceProcedure.IndexOf(
            AirCraftOperation.g_projectList.ProjectsList[pi].WorkspaceName)

    def buttonBrowseWorkspace_Click(self):
        folderPath = QFileDialog.getExistingDirectory(self,
                                                      "Open Project Path")
        if (folderPath != None and folderPath != ""):
            self.textPathProcedure.Value = folderPath

    def buttonSaveProcedure_Click(self):
        res = QMessageBox.question(self, "Question",
                                   "Save changes to project information?",
                                   QMessageBox.Yes | QMessageBox.No)
        if (res == QMessageBox.Yes):
            AirCraftOperation.g_projectList.WriteProjectInfoXml()
            self.buttonSaveProcedure.setEnabled(False)

    def buttonCloseProcedure_Click(self):
        # if (self.buttonSaveProcedure.isEnabled() == True):
        #     DialogResult res = MessageBox.Show("Save changes to project information?", "Alert", MessageBoxButtons.YesNoCancel)
        #     if (res == DialogResult.Yes)
        #     {
        #         self.buttonSaveWorkspace_Click(sender, e)
        #     }
        #     else if (res == DialogResult.No)
        #     {
        #     }
        #     else if (res == DialogResult.Cancel)
        #     {
        #         self.DialogResult = DialogResult.None
        #         return
        #     }
        # }
        self.accept()

    def buttonAddProcedure_Click(self):
        if (not self.CheckInputValues()):
            return

        if (AirCraftOperation.g_projectList.Find(self.textNameProcedure.Text)
                != None):
            QMessageBox.warning(self, "Warning", "The same name exist!")
            return
        pi = ProjectInfo()
        pi.Pt = enumProjectType.ptFile
        pi.Name = self.textNameProcedure.Text
        pi.Path = self.textPathProcedure.Text
        pi.ProjName = self.comboProjectProcedure.SelectedItem
        pi.SubProjName = self.comboSubProjectProcedure.SelectedItem
        pi.WorkspaceName = self.comboWorkspaceProcedure.SelectedItem
        pi.UserName = AirCraftOperation.g_loginedUser.Name

        AirCraftOperation.g_projectList.Add(pi)

        nIndex = self.listBoxProcedure.Add(pi.Name)
        self.listBoxProcedure.SelectedIndex = nIndex
        self.buttonSaveProcedure.setEnabled(True)

    def buttonModifyProcedure_Click(self):
        if (self.listBoxProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning",
                                "Please select project in the projects list!")
            return
        if (not self.CheckInputValues()):
            return
        index = AirCraftOperation.g_projectList.Find(
            self.listBoxProcedure.Items[self.listBoxProcedure.SelectedIndex])
        AirCraftOperation.g_projectList.ProjectsList[
            index].Pt = enumProjectType.ptFile
        AirCraftOperation.g_projectList.ProjectsList[
            index].Name = self.textNameProcedure.Text
        AirCraftOperation.g_projectList.ProjectsList[
            index].Path = self.textPathProcedure.Text
        AirCraftOperation.g_projectList.ProjectsList[
            index].ProjName = self.comboProjectProcedure.SelectedItem
        AirCraftOperation.g_projectList.ProjectsList[
            index].SubProjName = self.comboSubProjectProcedure.SelectedItem
        AirCraftOperation.g_projectList.ProjectsList[
            index].WorkspaceName = self.comboWorkspaceProcedure.SelectedItem
        AirCraftOperation.g_projectList.ProjectsList[
            index].UserName = AirCraftOperation.g_loginedUser.Name

        self.listBoxProcedure.Clear()
        for pi in AirCraftOperation.g_projectList.ProjectsList:
            if (pi.Pt == enumProjectType.ptFile):
                self.listBoxProcedure.Add(pi.Name)

        # AirCraftOperation.g_projectList.Remove(pi)
        #
        # AirCraftOperation.g_projectList.Add(pi)
        self.buttonSaveProcedure.setEnabled(True)

    def buttonDeleteProcedure_Click(self):
        if (self.listBoxProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning",
                                "Please select project in the projects list!")
            return

        if (QMessageBox.question(
                self, "Question",
                "Are you sure to delete " + self.listBoxProcedure.Items[
                    self.listBoxProcedure.SelectedIndex] + "?",
                QMessageBox.Yes | QMessageBox.No) == QMessageBox.No):
            return
        AirCraftOperation.g_projectList.Remove(
            self.listBoxProcedure.Items[self.listBoxProcedure.SelectedIndex],
            enumProjectType.ptFile)
        self.buttonSaveProcedure.setEnabled(True)
        self.listBoxProcedure.Clear()
        for pi in AirCraftOperation.g_projectList.ProjectsList:
            if (pi.Pt == enumProjectType.ptFile):
                self.listBoxProcedure.Add(pi.Name)

    def comboProjectProcedure_SelectedIndexChanged(self):
        listSubprojects = AirCraftOperation.g_projectList.GetLinkedProjects(
            self.comboProjectProcedure.SelectedItem, enumProjectType.ptProject,
            enumProjectType.ptSubProject)
        self.comboSubProjectProcedure.Clear()
        if (listSubprojects != None and len(listSubprojects) > 0):

            self.comboSubProjectProcedure.Items = listSubprojects
            self.comboSubProjectProcedure.SelectedIndex = 0
        self.comboSubProjectProcedure_SelectedIndexChanged()

    def comboSubProjectProcedure_SelectedIndexChanged(self):
        listWorkspace = AirCraftOperation.g_projectList.GetLinkedProjects(
            self.comboSubProjectProcedure.SelectedItem,
            enumProjectType.ptSubProject, enumProjectType.ptWorkspace)
        self.comboWorkspaceProcedure.Clear()
        if (listWorkspace != None and len(listWorkspace) > 0):

            self.comboWorkspaceProcedure.Items = listWorkspace
            self.comboWorkspaceProcedure.SelectedIndex = 0
class SelectProcedureForm(QDialog):
    def __init__(self, parent=None):
        QDialog.__init__(self)

        self.setObjectName(("ui_ProjectMngForm"))
        self.resize(200, 200)
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.setFont(font)

        self.setWindowTitle("Open Procedure")

        self.vlForm = QVBoxLayout(self)
        self.vlForm.setObjectName(("vl_ProjectMngForm"))
        self.vlForm.setSpacing(9)
        self.vlForm.setMargin(9)

        self.basicFrame = Frame(self)
        self.vlForm.addWidget(self.basicFrame)

        self.comboUser = ComboBoxPanel(self.basicFrame)
        self.comboUser.Caption = "Select User"
        self.comboUser.LabelWidth = 120
        self.comboUser.Width = 200
        self.basicFrame.Add = self.comboUser

        self.comboAIP = ComboBoxPanel(self.basicFrame)
        self.comboAIP.Caption = "AIP Chart"
        self.comboAIP.LabelWidth = 120
        self.comboAIP.Width = 200
        self.basicFrame.Add = self.comboAIP

        self.comboProject = ComboBoxPanel(self.basicFrame)
        self.comboProject.Caption = "Project"
        self.comboProject.LabelWidth = 120
        self.comboProject.Width = 200
        self.basicFrame.Add = self.comboProject

        self.comboSubproject = ComboBoxPanel(self.basicFrame)
        self.comboSubproject.Caption = "Sub-Project"
        self.comboSubproject.LabelWidth = 120
        self.comboSubproject.Width = 200
        self.basicFrame.Add = self.comboSubproject

        self.comboWorkspace = ComboBoxPanel(self.basicFrame)
        self.comboWorkspace.Caption = "Workspace"
        self.comboWorkspace.LabelWidth = 120
        self.comboWorkspace.Width = 200
        self.basicFrame.Add = self.comboWorkspace

        self.comboProcedure = ComboBoxPanel(self.basicFrame)
        self.comboProcedure.Caption = "Procedure"
        self.comboProcedure.LabelWidth = 120
        self.comboProcedure.Width = 200
        self.basicFrame.Add = self.comboProcedure

        self.btnFrame = Frame(self.basicFrame, "HL")
        self.basicFrame.Add = self.btnFrame

        self.buttonStart = QPushButton(self.btnFrame)
        self.buttonStart.setObjectName("buttonStart")
        self.buttonStart.setText("Start")
        self.btnFrame.Add = self.buttonStart

        self.buttonCalcel = QPushButton(self.btnFrame)
        self.buttonCalcel.setObjectName("buttonCalcel")
        self.buttonCalcel.setText("Cancel")
        self.btnFrame.Add = self.buttonCalcel

        self.connect(self.comboProject, SIGNAL("Event_0"),
                     self.comboProject_SelectedIndexChanged)
        self.connect(self.comboSubproject, SIGNAL("Event_0"),
                     self.comboSubproject_SelectedIndexChanged)
        self.connect(self.comboWorkspace, SIGNAL("Event_0"),
                     self.comboWorkspace_SelectedIndexChanged)

        self.buttonStart.clicked.connect(self.buttonStart_Click)
        self.buttonCalcel.clicked.connect(self.buttonCalcel_Click)

        for ui in AirCraftOperation.g_userList.ListUserInfo:
            self.comboUser.Add(ui.Name)

        for pi in AirCraftOperation.g_projectList.ProjectsList:
            if (pi.Pt == enumProjectType.ptAipChart):
                self.comboAIP.Add(pi.Name)
            elif (pi.Pt == enumProjectType.ptProject):
                self.comboProject.Add(pi.Name)
        self.comboUser.SelectedIndex = 0
        self.comboAIP.SelectedIndex = 0
        self.comboProject.SelectedIndex = 0

    def comboUser_SelectedIndexChanged(self):
        pass

    def buttonCalcel_Click(self):
        self.reject()

    def buttonStart_Click(self):
        index = AirCraftOperation.g_projectList.FindByName(
            self.comboAIP.SelectedItem, enumProjectType.ptAipChart)
        if index != None:
            AirCraftOperation.g_currentAIP = AirCraftOperation.g_projectList.ProjectsList[
                index]
            if (not QFile.exists(AirCraftOperation.g_currentAIP.Path)):
                QMessageBox.warning(self, "Warning", "Invalid AIPChart!")
                return

        index = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptFile, self.comboProject.SelectedItem,
            self.comboSubproject.SelectedItem,
            self.comboWorkspace.SelectedItem, self.comboProcedure.SelectedItem)
        if index != None:
            AirCraftOperation.g_currentProcedure = AirCraftOperation.g_projectList.ProjectsList[
                index]
        else:
            QMessageBox.warning(
                self, "Warning",
                "Invalid Procedure!\nPlease create or modify a procedure!")
            self.reject()
        # IWorkspaceFactory ipWSF = new ShapefileWorkspaceFactoryClass()
        # IWorkspace ipWS = ipWSF.OpenFromFile(AirCraftOperation.g_currentProcedure.Path, 0)
        # if (ipWS == null)
        # {
        #     throw new Exception("Failed in opening the procedure path!")
        # }

        index = AirCraftOperation.g_projectList.Find(
            self.comboProject.SelectedItem, enumProjectType.ptProject)
        if index != None:
            AirCraftOperation.g_currentProject = AirCraftOperation.g_projectList.ProjectsList[
                index]
        else:
            QMessageBox.warning(
                self, "Warning",
                "Invalid Project!\nPlease create or modify a project!")
            self.reject()

        index = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptSubProject, self.comboProject.SelectedItem,
            self.comboSubproject.SelectedItem)
        if index != None:
            AirCraftOperation.g_currentSubproject = AirCraftOperation.g_projectList.ProjectsList[
                index]
        else:
            QMessageBox.warning(
                self, "Warning",
                "Invalid Sub-Project!\nPlease create or modify a sub-project!")
            self.reject()

        index = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptWorkspace, self.comboProject.SelectedItem,
            self.comboSubproject.SelectedItem,
            self.comboWorkspace.SelectedItem)
        if index != None:
            AirCraftOperation.g_currentWorkspace = AirCraftOperation.g_projectList.ProjectsList[
                index]
        else:
            QMessageBox.warning(
                self, "Warning",
                "Invalid Workspace!\nPlease create or modify a Workspace!")
            self.reject()

        self.accept()

    def comboProject_SelectedIndexChanged(self):
        listSubprojects = AirCraftOperation.g_projectList.GetLinkedProjects(
            self.comboProject.SelectedItem, enumProjectType.ptProject,
            enumProjectType.ptSubProject)
        self.comboSubproject.Clear()
        if (listSubprojects != None and len(listSubprojects) > 0):

            self.comboSubproject.Items = listSubprojects
            self.comboSubproject.SelectedIndex = 0

    def comboSubproject_SelectedIndexChanged(self):
        listWorkspace = AirCraftOperation.g_projectList.GetLinkedProjects(
            self.comboSubproject.SelectedItem, enumProjectType.ptSubProject,
            enumProjectType.ptWorkspace)
        self.comboWorkspace.Clear()
        if (listWorkspace != None and len(listWorkspace) > 0):

            self.comboWorkspace.Items = listWorkspace
            self.comboWorkspace.SelectedIndex = 0

    def comboWorkspace_SelectedIndexChanged(self):
        listProcedures = AirCraftOperation.g_projectList.GetLinkedProjects(
            self.comboWorkspace.SelectedItem, enumProjectType.ptWorkspace,
            enumProjectType.ptFile)
        self.comboProcedure.Clear()
        if (listProcedures != None and len(listProcedures) > 0):

            self.comboProcedure.Items = listProcedures
            self.comboProcedure.SelectedIndex = 0
class ProcedureMngForm(QDialog):
    def __init__(self, parent=None):
        QDialog.__init__(self)

        self.setObjectName(("ui_ProcedureMngForm"))
        self.resize(200, 200)
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.setFont(font)
        self.setWindowTitle("Procedure Manage Dialog")

        self.vlForm = QVBoxLayout(self)
        self.vlForm.setObjectName(("vl_ProceduretMngForm"))
        self.vlForm.setSpacing(9)
        self.vlForm.setMargin(9)

        self.basicFrame = Frame(self)
        self.vlForm.addWidget(self.basicFrame)

        self.frameName = Frame(self.basicFrame, "HL")
        self.basicFrame.Add = self.frameName

        self.frame = Frame(self.frameName)
        self.frameName.Add = self.frame

        self.comboProjectProcedure = ComboBoxPanel(self.frame)
        self.comboProjectProcedure.Caption = "Project"
        self.comboProjectProcedure.LabelWidth = 120
        self.frame.Add = self.comboProjectProcedure

        self.comboSubProjectProcedure = ComboBoxPanel(self.frame)
        self.comboSubProjectProcedure.Caption = "Sub-Project"
        self.comboSubProjectProcedure.LabelWidth = 120
        self.frame.Add = self.comboSubProjectProcedure

        self.comboWorkspaceProcedure = ComboBoxPanel(self.frame)
        self.comboWorkspaceProcedure.Caption = "Workspace"
        self.comboWorkspaceProcedure.LabelWidth = 120
        self.frame.Add = self.comboWorkspaceProcedure

        self.textNameProcedure = TextBoxPanel(self.frame)
        self.textNameProcedure.Caption = "Procedure Name"
        self.textNameProcedure.LabelWidth = 120
        self.textNameProcedure.Width = 120
        self.frame.Add = self.textNameProcedure

        self.textFullName = TextBoxPanel(self.frame)
        self.textFullName.Caption = "Full Name"
        self.textFullName.LabelWidth = 120
        self.textFullName.Width = 120
        self.textFullName.Visible = False
        self.frame.Add = self.textFullName

        self.groubox = GroupBox(self.frameName)
        self.groubox.Caption = "Procedures"
        self.frameName.Add = self.groubox

        self.listBoxProcedure = ListBox(self.groubox)
        self.groubox.Add = self.listBoxProcedure

        self.textPathProcedure = TextBoxPanel(self.basicFrame)
        self.textPathProcedure.Caption = "Procedure Path"
        self.textPathProcedure.imageButton.setIcon(QIcon())
        self.textPathProcedure.Button = "opens.png"
        self.textPathProcedure.LabelWidth = 120
        self.textPathProcedure.textBox.setMaximumWidth(10000)
        self.textPathProcedure.textBox.setMinimumWidth(100)
        self.basicFrame.Add = self.textPathProcedure

        self.btnFrame = Frame(self.basicFrame, "HL")
        self.basicFrame.Add = self.btnFrame

        self.buttonAddProcedure = QPushButton(self.btnFrame)
        self.buttonAddProcedure.setObjectName("buttonAddProcedure")
        self.buttonAddProcedure.setText("Add")
        self.btnFrame.Add = self.buttonAddProcedure

        self.buttonModifyProcedure = QPushButton(self.btnFrame)
        self.buttonModifyProcedure.setObjectName("buttonModifyProcedure")
        self.buttonModifyProcedure.setText("Modify")
        self.btnFrame.Add = self.buttonModifyProcedure

        self.buttonDeleteProcedure = QPushButton(self.btnFrame)
        self.buttonDeleteProcedure.setObjectName("buttonDeleteProcedure")
        self.buttonDeleteProcedure.setText("Delete")
        self.btnFrame.Add = self.buttonDeleteProcedure

        self.buttonSaveProcedure = QPushButton(self.btnFrame)
        self.buttonSaveProcedure.setObjectName("buttonSaveProcedure")
        self.buttonSaveProcedure.setText("Save")
        self.buttonSaveProcedure.setVisible(False)
        self.btnFrame.Add = self.buttonSaveProcedure

        self.buttonCloseProcedure = QPushButton(self.btnFrame)
        self.buttonCloseProcedure.setObjectName("buttonCloseProcedure")
        self.buttonCloseProcedure.setText("Close")
        self.btnFrame.Add = self.buttonCloseProcedure

        self.connect(self.listBoxProcedure, SIGNAL("Event_0"),
                     self.listBoxProcedure_SelectedIndexChanged)
        self.connect(self.comboProjectProcedure, SIGNAL("Event_0"),
                     self.comboProjectProcedure_SelectedIndexChanged)
        self.connect(self.comboSubProjectProcedure, SIGNAL("Event_0"),
                     self.comboSubProjectProcedure_SelectedIndexChanged)
        self.connect(self.textPathProcedure, SIGNAL("Event_1"),
                     self.buttonBrowseWorkspace_Click)
        self.connect(self.comboWorkspaceProcedure, SIGNAL("Event_0"),
                     self.comboWorkspaceProcedure_SelectedIndexChanged)
        self.connect(self.textNameProcedure, SIGNAL("Event_0"),
                     self.setFullName)

        self.buttonCloseProcedure.clicked.connect(
            self.buttonCloseProcedure_Click)
        self.buttonSaveProcedure.clicked.connect(
            self.buttonSaveProcedure_Click)
        self.buttonDeleteProcedure.clicked.connect(
            self.buttonDeleteProcedure_Click)
        self.buttonModifyProcedure.clicked.connect(
            self.buttonModifyProcedure_Click)
        self.buttonAddProcedure.clicked.connect(self.buttonAddProcedure_Click)
        self.editFlag = True
        for pi in AirCraftOperation.g_projectList.ProjectsList:
            if (pi.Pt == enumProjectType.ptFile):
                self.listBoxProcedure.Add(pi.Name)
            elif (pi.Pt == enumProjectType.ptProject):
                self.comboProjectProcedure.Add(pi.Name)
            elif (pi.Pt == enumProjectType.ptSubProject):
                self.comboSubProjectProcedure.Add(pi.Name)
            elif (pi.Pt == enumProjectType.ptWorkspace):
                self.comboWorkspaceProcedure.Add(pi.Name)
        self.editFlag = False
        self.comboProjectProcedure_SelectedIndexChanged()

    def setFullName(self):
        if self.editFlag:
            return
        self.editFlag = True

        index = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptWorkspace,
            self.comboProjectProcedure.SelectedItem,
            self.comboSubProjectProcedure.SelectedItem,
            self.comboWorkspaceProcedure.SelectedItem)
        if index == None:
            self.editFlag = False
            return
        projPath = AirCraftOperation.g_projectList.ProjectsList[index].Path
        self.textFullName.Value = self.comboProjectProcedure.SelectedItem + "_" + self.comboSubProjectProcedure.SelectedItem + "_" + self.comboWorkspaceProcedure.SelectedItem + "_" + self.textNameProcedure.Text

        self.textPathProcedure.Value = projPath + "/" + self.textNameProcedure.Value

        self.editFlag = False

    def CheckInputValues(self):
        if (self.textNameProcedure.Text == None
                or self.textNameProcedure.Text == ""):
            QMessageBox.warning(self, "Warning", "Please input project name!")
            return False
        if (self.textPathProcedure.Text == None
                or self.textPathProcedure.Text == ""):
            QMessageBox.warning(self, "Warning", "Please input project path!")
            return False
        if (self.comboProjectProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning", "Please select an Project!")
            return False
        if (self.comboSubProjectProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning",
                                "Please select an Sub-Project!")
            return False
        if (self.comboWorkspaceProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning", "Please select an Workspace!")
            return
        directory = QDir(self.textPathProcedure.Text)
        if (not directory.exists()):
            if (QMessageBox.question(
                    self, "Question",
                    "Procedure path dose not exist! Do you create the directory?",
                    QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes):
                directory.mkpath(self.textPathProcedure.Text)
            else:
                return False
        return True

    def listBoxProcedure_SelectedIndexChanged(self):
        if (self.listBoxProcedure.SelectedIndex < 0):
            return
        pi = AirCraftOperation.g_projectList.Find(
            self.listBoxProcedure.Items[self.listBoxProcedure.SelectedIndex])

        pi = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptFile, self.comboProjectProcedure.SelectedItem,
            self.comboSubProjectProcedure.SelectedItem,
            self.comboWorkspaceProcedure.SelectedItem,
            self.listBoxProcedure.Items[self.listBoxProcedure.SelectedIndex])
        if pi == None:
            return
        self.textNameProcedure.Text = AirCraftOperation.g_projectList.ProjectsList[
            pi].Name
        self.textPathProcedure.Text = AirCraftOperation.g_projectList.ProjectsList[
            pi].Path

        self.comboProjectProcedure.SelectedIndex = self.comboProjectProcedure.IndexOf(
            AirCraftOperation.g_projectList.ProjectsList[pi].ProjName)
        self.comboSubProjectProcedure.SelectedIndex = self.comboSubProjectProcedure.IndexOf(
            AirCraftOperation.g_projectList.ProjectsList[pi].SubProjName)
        self.comboWorkspaceProcedure.SelectedIndex = self.comboWorkspaceProcedure.IndexOf(
            AirCraftOperation.g_projectList.ProjectsList[pi].WorkspaceName)

    def buttonBrowseWorkspace_Click(self):
        folderPath = QFileDialog.getExistingDirectory(self,
                                                      "Open Project Path",
                                                      define.projectManageDir)
        if (folderPath != None and folderPath != ""):
            self.textPathProcedure.Value = folderPath
            define.projectManageDir = folderPath

    def buttonSaveProcedure_Click(self):
        res = QMessageBox.question(self, "Question",
                                   "Save changes to project information?",
                                   QMessageBox.Yes | QMessageBox.No)
        if (res == QMessageBox.Yes):
            AirCraftOperation.g_projectList.WriteProjectInfoXml()
            self.buttonSaveProcedure.setEnabled(False)

    def buttonCloseProcedure_Click(self):
        res = QMessageBox.question(self, "Question",
                                   "Save changes to project information?",
                                   QMessageBox.Yes | QMessageBox.No)
        if (res == QMessageBox.Yes):
            AirCraftOperation.g_projectList.WriteProjectInfoXml()
            self.buttonSaveProcedure.setEnabled(False)
        self.accept()

    def buttonAddProcedure_Click(self):
        if (not self.CheckInputValues()):
            return

        index = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptFile, self.comboProjectProcedure.SelectedItem,
            self.comboSubProjectProcedure.SelectedItem,
            self.comboWorkspaceProcedure.SelectedItem,
            self.textNameProcedure.Text)

        if (index != None):
            QMessageBox.warning(self, "Warning", "The same name exist!")
            return
        pi = ProjectInfo()
        pi.Pt = enumProjectType.ptFile
        pi.Name = self.textNameProcedure.Text
        pi.ProcedureName = self.textNameProcedure.Text
        pi.Path = self.textPathProcedure.Text
        pi.ProjName = self.comboProjectProcedure.SelectedItem
        pi.SubProjName = self.comboSubProjectProcedure.SelectedItem
        pi.WorkspaceName = self.comboWorkspaceProcedure.SelectedItem
        pi.FullName = self.textFullName.Text
        pi.UserName = AirCraftOperation.loginedUser.Name

        AirCraftOperation.g_projectList.Add(pi)

        nIndex = self.listBoxProcedure.Add(pi.Name)
        self.listBoxProcedure.SelectedIndex = nIndex
        self.buttonSaveProcedure.setEnabled(True)

    def buttonModifyProcedure_Click(self):
        if (self.listBoxProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning",
                                "Please select project in the projects list!")
            return
        if (not self.CheckInputValues()):
            return
        index = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptFile, self.comboProjectProcedure.SelectedItem,
            self.comboSubProjectProcedure.SelectedItem,
            self.comboWorkspaceProcedure.SelectedItem,
            self.listBoxProcedure.Items[self.listBoxProcedure.SelectedIndex])

        AirCraftOperation.g_projectList.ProjectsList[
            index].Pt = enumProjectType.ptFile
        AirCraftOperation.g_projectList.ProjectsList[
            index].Name = self.textNameProcedure.Text
        AirCraftOperation.g_projectList.ProjectsList[
            index].ProcedureName = self.textNameProcedure.Text
        AirCraftOperation.g_projectList.ProjectsList[
            index].Path = self.textPathProcedure.Text
        AirCraftOperation.g_projectList.ProjectsList[
            index].ProjName = self.comboProjectProcedure.SelectedItem
        AirCraftOperation.g_projectList.ProjectsList[
            index].SubProjName = self.comboSubProjectProcedure.SelectedItem
        AirCraftOperation.g_projectList.ProjectsList[
            index].WorkspaceName = self.comboWorkspaceProcedure.SelectedItem
        AirCraftOperation.g_projectList.ProjectsList[
            index].FullName = self.textFullName.Text
        AirCraftOperation.g_projectList.ProjectsList[
            index].UserName = AirCraftOperation.loginedUser.Name

        self.listBoxProcedure.Clear()
        self.comboProjectProcedure_SelectedIndexChanged()
        # for pi in AirCraftOperation.g_projectList.ProjectsList:
        #     if (pi.Pt == enumProjectType.ptFile):
        #         self.listBoxProcedure.Add(pi.Name)

        # AirCraftOperation.g_projectList.Remove(pi)
        #
        # AirCraftOperation.g_projectList.Add(pi)
        self.buttonSaveProcedure.setEnabled(True)

    def buttonDeleteProcedure_Click(self):
        if (self.listBoxProcedure.SelectedIndex < 0):
            QMessageBox.warning(self, "Warning",
                                "Please select project in the projects list!")
            return

        if (QMessageBox.question(
                self, "Question",
                "Are you sure to delete " + self.listBoxProcedure.Items[
                    self.listBoxProcedure.SelectedIndex] + "?",
                QMessageBox.Yes | QMessageBox.No) == QMessageBox.No):
            return
        index = AirCraftOperation.g_projectList.GetIndexOfWsOrProcedure(
            enumProjectType.ptFile, self.comboProjectProcedure.SelectedItem,
            self.comboSubProjectProcedure.SelectedItem,
            self.comboWorkspaceProcedure.SelectedItem,
            self.listBoxProcedure.Items[self.listBoxProcedure.SelectedIndex])
        AirCraftOperation.g_projectList.Remove(index)
        self.buttonSaveProcedure.setEnabled(True)
        self.listBoxProcedure.Clear()
        self.comboProjectProcedure_SelectedIndexChanged()
        AirCraftOperation.g_projectList.WriteProjectInfoXml()
        # for pi in AirCraftOperation.g_projectList.ProjectsList:
        #     if (pi.Pt == enumProjectType.ptFile):
        #         self.listBoxProcedure.Add(pi.Name)

    def comboProjectProcedure_SelectedIndexChanged(self):
        if self.editFlag:
            return
        listSubprojects = AirCraftOperation.g_projectList.GetLinkedProjects(
            self.comboProjectProcedure.SelectedItem, enumProjectType.ptProject,
            enumProjectType.ptSubProject)
        self.editFlag = True
        self.comboSubProjectProcedure.Clear()
        if (listSubprojects != None and len(listSubprojects) > 0):
            self.comboSubProjectProcedure.Items = listSubprojects
            self.comboSubProjectProcedure.SelectedIndex = 0
        self.editFlag = False
        self.comboSubProjectProcedure_SelectedIndexChanged()

    def comboSubProjectProcedure_SelectedIndexChanged(self):
        if self.editFlag:
            return
        listWorkspaceList = AirCraftOperation.g_projectList.GetListOfWsOrProcedure(
            enumProjectType.ptWorkspace,
            self.comboProjectProcedure.SelectedItem,
            self.comboSubProjectProcedure.SelectedItem)
        self.editFlag = True
        self.comboWorkspaceProcedure.Clear()
        if (listWorkspaceList != None and len(listWorkspaceList) > 0):
            self.comboWorkspaceProcedure.Items = listWorkspaceList
            self.comboWorkspaceProcedure.SelectedIndex = 0
        self.editFlag = False
        self.comboWorkspaceProcedure_SelectedIndexChanged()

    def comboWorkspaceProcedure_SelectedIndexChanged(self):
        if self.editFlag:
            return
        listProcedureList = AirCraftOperation.g_projectList.GetListOfWsOrProcedure(
            enumProjectType.ptFile, self.comboProjectProcedure.SelectedItem,
            self.comboSubProjectProcedure.SelectedItem,
            self.comboWorkspaceProcedure.SelectedItem)
        self.textNameProcedure.Text = ""
        self.listBoxProcedure.Clear()
        self.editFlag = True
        if len(listProcedureList) > 0:
            self.listBoxProcedure.Items = listProcedureList
            self.listBoxProcedure.SelectedIndex = 0
        self.editFlag = False
        self.setFullName()