import sys

from PyQt4 import QtGui

import numpy as np
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import (
    FigureCanvasQTAgg as FigureCanvas,
    NavigationToolbar2QT as NavigationToolbar)

from window import Ui_MainWindow

        
class Main(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self, ):
        super(Main, self).__init__()
        self.setupUi(self)
        self.mplvl = QtGui.QVBoxLayout(self.mplwindow)
        self.mplfigs.itemClicked.connect(self.changefig)
        fig = Figure()
        self.addmpl(fig)

    def addfigs(self, fig_dict):
        self.fig_dict = fig_dict
        names = list(fig_dict.keys())
        self.mplfigs.addItems(names)

    def addmpl(self, fig):
        self.canvas = FigureCanvas(fig)
        self.mplvl.addWidget(self.canvas)
        self.canvas.draw()
        self.toolbar = NavigationToolbar(self.canvas, 
                self, coordinates=True)
        self.mplvl.addWidget(self.toolbar)
        #self.addToolBar(self.toolbar)

    def rmmpl(self,):
        self.mplvl.removeWidget(self.canvas)
        self.canvas.close()
        self.mplvl.removeWidget(self.toolbar)
        self.toolbar.close()

    def changefig(self, item):
        text = item.text()
        self.rmmpl()
        self.addmpl(self.fig_dict[text])


if __name__ == '__main__':
    figs = {}
    fig1 = Figure()
    ax1f1 = fig1.add_subplot(111)
    ax1f1.plot(np.random.rand(5))
    figs['One Plot'] = fig1

    fig2 = Figure()
    ax1f2 = fig2.add_subplot(121)
    ax1f2.plot(np.random.rand(5))
    ax2f2 = fig2.add_subplot(122)
    ax2f2.plot(np.random.rand(10))
    figs['Two Plots'] = fig2

    app = QtGui.QApplication([])
    main = Main()
    main.addfigs(figs)
    main.show()
    sys.exit(app.exec_())

