def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle('Simple FFT Analyzer')
        self.resize(*self.__default_window_size)

        self.main_frame = QtGui.QWidget()
        plot_widget = Qwt.QwtPlot(self)
        plot_widget.setCanvasBackground(QtCore.Qt.white)


        curve = Qwt.QwtPlotCurve('SimpleFFT data')
        pen = QtGui.QPen(QtCore.Qt.red)
        pen.setWidth(2)
        curve.setPen(pen)
        curve.setData(np.arange(100), np.arange(100))
        curve.attach(plot_widget)

        self.button_widget = QtGui.QPushButton()
        self.button_widget.setText('start')
        self.button_widget.clicked.connect(self.onClick)
        self.analyzer_state = self.__WAIT


        self.power_spectrum_widget = PowerSpectrumScope()
        tab_widget = QtGui.QTabWidget()
        tab_widget.addTab(self.power_spectrum_widget, 'Power')
        tab_widget.addTab(plot_widget, 'Phase difference')

        layout = QtGui.QVBoxLayout()
        layout.addWidget(tab_widget)
        #layout.addWidget(plot_widget)
        layout.addWidget(self.button_widget)

        self.file_menu = self.menuBar().addMenu('&File')
        self.file_menu.addAction('Open...', self.openFile)

        self.stateus = self.statusBar().showMessage('hoge hoge hoge')

        self.main_frame.setLayout(layout)
        self.setCentralWidget(self.main_frame)
        self.update_ui()
        self.on_show()
class MainWindow(QtGui.QMainWindow):
    __default_window_size = (600, 400)
    __WAIT = 'wait'
    __PROCESS = 'process'

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle('Simple FFT Analyzer')
        self.resize(*self.__default_window_size)

        self.main_frame = QtGui.QWidget()
        plot_widget = Qwt.QwtPlot(self)
        plot_widget.setCanvasBackground(QtCore.Qt.white)


        curve = Qwt.QwtPlotCurve('SimpleFFT data')
        pen = QtGui.QPen(QtCore.Qt.red)
        pen.setWidth(2)
        curve.setPen(pen)
        curve.setData(np.arange(100), np.arange(100))
        curve.attach(plot_widget)

        self.button_widget = QtGui.QPushButton()
        self.button_widget.setText('start')
        self.button_widget.clicked.connect(self.onClick)
        self.analyzer_state = self.__WAIT


        self.power_spectrum_widget = PowerSpectrumScope()
        tab_widget = QtGui.QTabWidget()
        tab_widget.addTab(self.power_spectrum_widget, 'Power')
        tab_widget.addTab(plot_widget, 'Phase difference')

        layout = QtGui.QVBoxLayout()
        layout.addWidget(tab_widget)
        #layout.addWidget(plot_widget)
        layout.addWidget(self.button_widget)

        self.file_menu = self.menuBar().addMenu('&File')
        self.file_menu.addAction('Open...', self.openFile)

        self.stateus = self.statusBar().showMessage('hoge hoge hoge')

        self.main_frame.setLayout(layout)
        self.setCentralWidget(self.main_frame)
        self.update_ui()
        self.on_show()

    def update_ui(self):
        pass

    def on_show(self):
        pass

    def onClick(self):
        print('click')
        if self.analyzer_state == self.__WAIT:
            try:
                self.power_spectrum_widget.startPlot()
            except Exception as err:
                print(err)
                return
            self.button_widget.setText('stop')
            self.analyzer_state = self.__PROCESS

        elif self.analyzer_state == self.__PROCESS:
            try:
                self.power_spectrum_widget.stopPlot()
            except Exception as err:
                print(err)
                return
            self.button_widget.setText('start')
            self.analyzer_state = self.__WAIT


    def openFile(self):
        fn = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '')
        print(fn)

        fn = str(fn)
        from os.path import splitext
        if splitext(fn)[1] != '.wav':
            print('not wav')
        fs, data = wavefile.read(fn)
        self.power_spectrum_widget.fs = fs
        self.power_spectrum_widget.data = data.astype(np.float32)/(2**15)
        self.power_spectrum_widget.cur_idx = 0
        self.power_spectrum_widget.fft_analyzer = FFTAnalyzer(fs=fs)
        self.power_spectrum_widget.startPlot()
        self.analyzer_state = self.__PROCESS
        self.button_widget.setText('stop')