def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.firstStep = FirstStepWidget()
        self.secondStep = SecondStepWidget()
        self.secondAndHalfStep = SecondAndHalfStepWidget()
        self.thirdStep = ThirdStepWidget()
        self.setCentralWidget(self.firstStep)

        self.connect(self.firstStep, QtCore.SIGNAL("nextStep()"),
                     self.showSecondStepAfterFirst)
        self.connect(self.secondStep, QtCore.SIGNAL("previousStep()"),
                     self.showFirstStep)
        self.connect(self.secondStep, QtCore.SIGNAL("nextStep()"),
                     self.showStepAfterSecond)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("previousStep()"),
                     self.showSecondStepAfterSecondAndHalf)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("nextStep()"),
                     self.showThirdStep)
        self.connect(self.thirdStep, QtCore.SIGNAL("previousStep()"),
                     self.showStepBeforeThird)
        self.connect(self.thirdStep, QtCore.SIGNAL("loadDevices()"),
                     self.loadDevices)
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.firstStep = FirstStepWidget()
        self.secondStep = SecondStepWidget()
        self.secondAndHalfStep = SecondAndHalfStepWidget()
        self.thirdStep = ThirdStepWidget()
        self.setCentralWidget(self.firstStep)

        self.connect(self.firstStep, QtCore.SIGNAL("nextStep()"), self.showSecondStepAfterFirst)
        self.connect(self.secondStep, QtCore.SIGNAL("previousStep()"), self.showFirstStep)
        self.connect(self.secondStep, QtCore.SIGNAL("nextStep()"), self.showStepAfterSecond)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("previousStep()"), self.showSecondStepAfterSecondAndHalf)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("nextStep()"), self.showThirdStep)
        self.connect(self.thirdStep, QtCore.SIGNAL("previousStep()"), self.showStepBeforeThird)
        self.connect(self.thirdStep, QtCore.SIGNAL("loadDevices()"), self.loadDevices)
class mainApp(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.firstStep = FirstStepWidget()
        self.secondStep = SecondStepWidget()
        self.secondAndHalfStep = SecondAndHalfStepWidget()
        self.thirdStep = ThirdStepWidget()
        self.setCentralWidget(self.firstStep)

        self.connect(self.firstStep, QtCore.SIGNAL("nextStep()"), self.showSecondStepAfterFirst)
        self.connect(self.secondStep, QtCore.SIGNAL("previousStep()"), self.showFirstStep)
        self.connect(self.secondStep, QtCore.SIGNAL("nextStep()"), self.showStepAfterSecond)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("previousStep()"), self.showSecondStepAfterSecondAndHalf)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("nextStep()"), self.showThirdStep)
        self.connect(self.thirdStep, QtCore.SIGNAL("previousStep()"), self.showStepBeforeThird)
        self.connect(self.thirdStep, QtCore.SIGNAL("loadDevices()"), self.loadDevices)

    def showSecondStepAfterFirst(self):
        self.firstStep.setParent(None)
        self.updateDefaultParameters()
        self.setCentralWidget(self.secondStep)

    def showFirstStep(self):
        self.secondStep.setParent(None)
        self.setCentralWidget(self.firstStep)

    def updateDefaultParameters(self):
        self.firstStep.saveSettings()

    def showStepAfterSecond(self):
        self.secondStep.setParent(None)
        if SettingsCloud.getParameter("parameterFromDb"):
            self.setCentralWidget(self.thirdStep)
        else:
            self.setCentralWidget(self.secondAndHalfStep)
            linacData = self.secondStep.getLinacData()
            ringData = self.secondStep.getRingData()
            self.secondAndHalfStep.setSectionsData(linacData, ringData)
            self.secondAndHalfStep.createDeviceWidgets()

    def showSecondStepAfterSecondAndHalf(self):
        self.secondAndHalfStep.setParent(None)
        self.setCentralWidget(self.secondStep)

    def showThirdStep(self):
        self.secondAndHalfStep.setParent(None)
        self.setCentralWidget(self.thirdStep)

    def showStepBeforeThird(self):
        self.thirdStep.setParent(None)
        if SettingsCloud.getParameter("parameterFromDb"):
            self.setCentralWidget(self.secondStep)
        else:
            self.setCentralWidget(self.secondAndHalfStep)

    def loadDevices(self):
        svgDrawer = SvgDrawer()
        svgDrawer.loadSvg(self.getBaseSvgPath())

        self.processSectionsData(svgDrawer)

        svgDrawer.drawAll()

        destinationFile = self.thirdStep.getFilePath()
        svgDrawer.saveSvg(destinationFile)

    def getBaseSvgPath(self):
        currentFilePath = path.realpath(__file__)
        currentDirPath = path.dirname(currentFilePath)
        baseSvgPath = currentDirPath + "/../src/blank.svg"
        return baseSvgPath

    def processSectionsData(self, svgDrawer):
        dataProcessor = SectionsDataProcesssor(svgDrawer)
        linacSectionsData = self.secondStep.getLinacData()
        ringSectionsData = self.secondStep.getRingData()
        dataProcessor.processLinacSections(linacSectionsData)
        dataProcessor.processRingSections(ringSectionsData)
        dataProcessor.drawLastSectionIfNecessary()
class mainApp(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.firstStep = FirstStepWidget()
        self.secondStep = SecondStepWidget()
        self.secondAndHalfStep = SecondAndHalfStepWidget()
        self.thirdStep = ThirdStepWidget()
        self.setCentralWidget(self.firstStep)

        self.connect(self.firstStep, QtCore.SIGNAL("nextStep()"),
                     self.showSecondStepAfterFirst)
        self.connect(self.secondStep, QtCore.SIGNAL("previousStep()"),
                     self.showFirstStep)
        self.connect(self.secondStep, QtCore.SIGNAL("nextStep()"),
                     self.showStepAfterSecond)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("previousStep()"),
                     self.showSecondStepAfterSecondAndHalf)
        self.connect(self.secondAndHalfStep, QtCore.SIGNAL("nextStep()"),
                     self.showThirdStep)
        self.connect(self.thirdStep, QtCore.SIGNAL("previousStep()"),
                     self.showStepBeforeThird)
        self.connect(self.thirdStep, QtCore.SIGNAL("loadDevices()"),
                     self.loadDevices)

    def showSecondStepAfterFirst(self):
        self.firstStep.setParent(None)
        self.updateDefaultParameters()
        self.setCentralWidget(self.secondStep)

    def showFirstStep(self):
        self.secondStep.setParent(None)
        self.setCentralWidget(self.firstStep)

    def updateDefaultParameters(self):
        self.firstStep.saveSettings()

    def showStepAfterSecond(self):
        self.secondStep.setParent(None)
        if SettingsCloud.getParameter("parameterFromDb"):
            self.setCentralWidget(self.thirdStep)
        else:
            self.setCentralWidget(self.secondAndHalfStep)
            linacData = self.secondStep.getLinacData()
            ringData = self.secondStep.getRingData()
            self.secondAndHalfStep.setSectionsData(linacData, ringData)
            self.secondAndHalfStep.createDeviceWidgets()

    def showSecondStepAfterSecondAndHalf(self):
        self.secondAndHalfStep.setParent(None)
        self.setCentralWidget(self.secondStep)

    def showThirdStep(self):
        self.secondAndHalfStep.setParent(None)
        self.setCentralWidget(self.thirdStep)

    def showStepBeforeThird(self):
        self.thirdStep.setParent(None)
        if SettingsCloud.getParameter("parameterFromDb"):
            self.setCentralWidget(self.secondStep)
        else:
            self.setCentralWidget(self.secondAndHalfStep)

    def loadDevices(self):
        svgDrawer = SvgDrawer()
        svgDrawer.loadSvg(self.getBaseSvgPath())

        self.processSectionsData(svgDrawer)

        svgDrawer.drawAll()

        destinationFile = self.thirdStep.getFilePath()
        svgDrawer.saveSvg(destinationFile)

    def getBaseSvgPath(self):
        currentFilePath = path.realpath(__file__)
        currentDirPath = path.dirname(currentFilePath)
        baseSvgPath = currentDirPath + "/../src/blank.svg"
        return baseSvgPath

    def processSectionsData(self, svgDrawer):
        dataProcessor = SectionsDataProcesssor(svgDrawer)
        linacSectionsData = self.secondStep.getLinacData()
        ringSectionsData = self.secondStep.getRingData()
        dataProcessor.processLinacSections(linacSectionsData)
        dataProcessor.processRingSections(ringSectionsData)
        dataProcessor.drawLastSectionIfNecessary()