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)
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()