def __init__(self, title, parent=None):
        super(ProgressPage, self).__init__(parent)
        self.setTitle(title)
        self.parent = parent
        
        self.label = QtGui.QLabel("Extracting references...")

        # Set progress bar
        self.max = 30
        self.progressBar = QtGui.QProgressBar(self)
        self.progressBar.setFormat('%v/%m')
        self.progressBar.setMaximum(self.max)
        self.progressBar.setProperty("value", 30)
        self.progressBar.setObjectName("progressBar")

        # Show logs
        self.logsLabel = QtGui.QLabel(self)
        self.logsLabel.setText('Status:')
        
        self.guihandler = GUIHandler()
        self.logs = LogsTextEdit(self)
        self.guihandler.messageLogged.connect(self.logs.updateText)

        # Register an empty label so next button is disabled
        self.empty_edit = QtGui.QLineEdit(self)
        self.empty_edit.setVisible(False)
        self.registerField('completed*', self.empty_edit)

        # Add Widgets to layout
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.progressBar)
        layout.addWidget(self.logsLabel)
        layout.addWidget(self.logs)
        self.setLayout(layout)
class ProgressPage(QtGui.QWizardPage):
    def __init__(self, title, parent=None):
        super(ProgressPage, self).__init__(parent)
        self.setTitle(title)
        self.parent = parent
        
        self.label = QtGui.QLabel("Extracting references...")

        # Set progress bar
        self.max = 30
        self.progressBar = QtGui.QProgressBar(self)
        self.progressBar.setFormat('%v/%m')
        self.progressBar.setMaximum(self.max)
        self.progressBar.setProperty("value", 30)
        self.progressBar.setObjectName("progressBar")

        # Show logs
        self.logsLabel = QtGui.QLabel(self)
        self.logsLabel.setText('Status:')
        
        self.guihandler = GUIHandler()
        self.logs = LogsTextEdit(self)
        self.guihandler.messageLogged.connect(self.logs.updateText)

        # Register an empty label so next button is disabled
        self.empty_edit = QtGui.QLineEdit(self)
        self.empty_edit.setVisible(False)
        self.registerField('completed*', self.empty_edit)

        # Add Widgets to layout
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.progressBar)
        layout.addWidget(self.logsLabel)
        layout.addWidget(self.logs)
        self.setLayout(layout)
        
    def initializePage(self):
        log.addHandler(self.guihandler) #@UndefinedVariable

        path = self.field('filePath').toPyObject()
        self.parent.index_maker.set_path(str(path))
        
        self.logs.setText('')
        
        n_files = self.parent.index_maker.get_n_files()
        
        self.progressBar.setMaximum(n_files)
        self.progressBar.setValue(0)
        
        # This thread will update the GUI
        self.thread = ReferenceExtractionThread(self, self.parent.index_maker,
                                                n_files)

        # Connect thread signals
        self.connect(self.thread, QtCore.SIGNAL("finished()"),
                     self.finish)
        self.connect(self.thread, QtCore.SIGNAL("terminated()"),
                     self.finish)
        self.connect(self.thread, QtCore.SIGNAL("output(int)"),
                     self.updateProgressBar)
        
        self.thread.start()
        
        # Start making the index
        self.parent.index_maker.make_index()
        
    def updateProgressBar(self, value=0):
        self.progressBar.setValue(value)

    def finish(self):
        log.info('Finished extracting. Results can be found in the Manage ' #@UndefinedVariable
                 'page') 
        # Stop the thread before jumping to next page
        self.thread.exiting = True        
        log.removeHandler(self.guihandler) #@UndefinedVariable
        self.empty_edit.setText('Done!')