class Wizard(QWizard): def __init__(self, parent=None): super(Wizard, self).__init__(parent) self.project = newproject.NewProject() self.project.countyCode, self.project.stateCode, self.project.stateAbb = self.countyDicts() self.setFixedSize(QSize(950,500)) self.setWizardStyle(QWizard.ClassicStyle) self.setPixmap(QWizard.WatermarkPixmap, QPixmap("./images/banner.png")) self.selectedCounties = None self.page1 = IntroPage() self.addPage(self.page1) self.page2 = ResolutionPage() self.addPage(self.page2) self.page3 = SampleDataPage() self.addPage(self.page3) self.page4 = ControlDataPage() self.addPage(self.page4) self.page5 = DBConnectionPage() self.addPage(self.page5) self.page6 = SummaryPage() self.addPage(self.page6) self.setWindowTitle("Project Setup Wizard") self.connect(self.button(QWizard.CancelButton), SIGNAL("pressed()"), self.reject) self.connect(self, SIGNAL("currentIdChanged(int)"), self.update) def countyDicts(self): file = QFile("./data/counties.csv") if not file.open(QIODevice.ReadOnly): raise IOError, unicode(file.errorString()) stateAbb = {} stateCode = {} countyCode = {} while not file.atEnd(): a = file.readLine() a = a.split(",") stateAbb[a[1]] = a[4][:-2] stcode = '%s'%a[0] stcode = stcode.rjust(2, '0') stateCode[a[1]] = stcode uniquecounty = '%s' %a[3] +","+ '%s' %a[1] countycode = '%s'%a[2] countycode = countycode.rjust(3, '0') countyCode[uniquecounty] = countycode file.close() return countyCode, stateCode, stateAbb def reject(self): reply = QMessageBox.warning(None, "Project Setup Wizard", QString("Would you like to continue?"), QMessageBox.Yes| QMessageBox.No) if reply == QMessageBox.Yes: QWizard.reject(self) def update(self, id): if id > 1: resolutionText = self.page2.resolutionComboBox.currentText() if resolutionText == "Census Tract": resolution = 'Tract' elif resolutionText == "Census Blockgroup": resolution = 'Blockgroup' elif resolutionText == 'Traffic Analysis Zone (TAZ)': resolution = 'TAZ' else: resolution = 'County' if id == 2: self.page3.emit(SIGNAL("resolutionChanged"), resolution) if id == 3: self.page4.emit(SIGNAL("resolutionChanged"), resolution) if id == 4: self.page5.hostnameLineEdit.emit(SIGNAL("editingFinished()")) if id == 5: geocorrLocation = self.page2.geocorrLocationComboBox.currentText() geocorrUserProv = newproject.Geocorr(self.page2.geocorrUserProvRadio.isChecked(), geocorrLocation) sampleHHLocation = self.page3.sampleHHLocationComboBox.currentText() sampleGQLocation = self.page3.sampleGQLocationComboBox.currentText() samplePersonLocation = self.page3.samplePersonLocationComboBox.currentText() sampleUserProv = newproject.Sample(self.page3.sampleUserProvRadio.isChecked(), self.page3.sourceComboBox.currentText(), sampleHHLocation, sampleGQLocation, samplePersonLocation) controlHHLocation = self.page4.controlHHLocationComboBox.currentText() controlGQLocation = self.page4.controlGQLocationComboBox.currentText() controlPersonLocation = self.page4.controlPersonLocationComboBox.currentText() controlUserProv = newproject.Control(self.page4.controlUserProvRadio.isChecked(), self.page4.sourceComboBox.currentText(), controlHHLocation, controlGQLocation, controlPersonLocation) db = newproject.DBInfo(self.page5.hostnameLineEdit.text(), self.page5.usernameLineEdit.text(), self.page5.passwordLineEdit.text(), "QMYSQL") self.project.name = self.page1.nameLineEdit.text() self.project.filename = self.page1.nameLineEdit.text() self.project.filename = self.project.name self.project.location = self.page1.locationComboBox.currentText() self.project.description = self.page1.descTextEdit.toPlainText() self.project.region = self.page1.selectedCounties self.project.state = self.page1.selectedCounties.values()[0] self.project.resolution = resolution self.project.geocorrUserProv = geocorrUserProv self.project.sampleUserProv = sampleUserProv self.project.controlUserProv = controlUserProv self.project.db = db self.page6.fillPage(self.project) self.page6.checkProjectLocation(self.project.location, self.project.name) self.page6.checkProjectDatabase(self.project.db, self.project.name) def accept(self): for i in range(5): self.project.scenario = i + 1 self.project.save() self.project.scenario = 1 QWizard.accept(self)