Exemple #1
0
class MainWindow(QMainWindow):
    constcheck = {}

    def __init__(self):
        QMainWindow.__init__(self)
        self.__config = ConfigObj("./config/seasnake.conf")
        self.setMinimumSize(
            QSize(int(self.__config['general']['win_width']),
                  int(self.__config['general']['win_height'])))
        self.dateutil = DateUtility()
        #print self.dateutil.todate(self.dateutil.currentepoch()), self.dateutil.currentepoch()
        self.plugins = []
        self.plot = Plotter()
        self.plot.setMinimumHeight(600)
        self.linelist = LineFeather(self)
        self.todaymark = InfiniteLine(angle=90,
                                      movable=False,
                                      pos=(self.dateutil.currentepoch()),
                                      name="Now",
                                      pen="g")
        self.todaymark.setFocus()
        self.plot._plt.addItem(self.todaymark, ignoreBounds=True)
        self.plot.region.setRegion([
            int(self.dateutil.currentepoch() - 7200),
            int(self.dateutil.currentepoch() + 36000)
        ])
        self.timer = QTimer()
        self.timer.timeout.connect(self.updateUI)
        self.timer.setInterval(10)
        self.timer.start(50)
        self.status = StatusBar()
        self.setStatusBar(self.status)
        self.statuslayout = QHBoxLayout()
        self.__maindisplay = QGroupBox()
        self.mainlayout = QFormLayout()
        self.mainlayout.expandingDirections()
        self.__maindisplay.setLayout(self.mainlayout)
        self.mainlayout.addRow(self.linelist, self.plot)
        self.mainlayout.addRow(self.linelist.chkplot,
                               self.linelist.chkfpredict)
        self.datapanel = QFormLayout()
        self.dslayout = QVBoxLayout()
        self.importerlayout = QVBoxLayout()
        self.importerlayout.setAlignment(Qt.AlignTop)
        self.importerdock = self.__build_dock
        self.importerdock.setLayout(self.importerlayout)

        self.progressbar = QProgressBar()
        self.progressbar.setMaximumWidth(100)
        self.progressbar.setMaximum(100)
        self.status.addPermanentWidget(self.progressbar)

        self.btntrigger = QPushButton("Start Prediction")
        self.btntrigger.clicked.connect(self.btntrigger_click)
        self.constituent_opts = QComboBox()

        self.datasource = DataSourceController(self)

        for k, v in self.__config['constituent'].items():
            self.constituent_opts.addItem(k)
            self.constcheck[k] = QCheckBox(k)
            self.constcheck[k].toggled.connect(self.btntrigger_click)

        self.dock = self.__dock
        self.dock.setWindowTitle("Options")
        self.tab = QTabWidget()
        self.tab.addTab(self.importerdock, "Importer")
        self.tab.addTab(self.__build_dspanel, "Datasource")
        self.tab.addTab(self.__build_dock, "Utilities")
        self.tab.addTab(self.__build_dock, "About")
        self.tab.setCurrentIndex(1)
        self.dock.setWidget(self.tab)
        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock)
        self.setCentralWidget(self.__maindisplay)

    def updateUI(self):
        self.todaymark.setPos(self.dateutil.currentepoch())
        #print self.todaymark.getPos()
    @property
    def xaxis(self):
        ax = DateAxis(orientation='bottom')
        return ax

    def setPlugins(self, pluginarray=[]):
        self.plugins = pluginarray

    def btntrigger_click(self):
        self.datasource.selected.constituent = {}
        self.datasource.clearplot()
        for k, v in self.constcheck.items():
            if self.constcheck[k].isChecked():
                self.datasource.selected.constituent[k] = self.__config[
                    'constituent'][str(v.text())]

        if len(self.datasource.selected.constituent.keys()) != 0:
            self.datasource.selected.bootup()

    @property
    def __build_dspanel(self):
        gb = QGroupBox()
        gb.setAlignment(Qt.AlignCenter)
        gblayout = QVBoxLayout()
        gblayout.addWidget(self.datasource.dscheckbox)
        for i in self.constcheck.values():
            gblayout.addWidget(i)
        gblayout.addWidget(self.datasource.paramgb)
        gblayout.addWidget(self.btntrigger)
        gb.setLayout(gblayout)
        return gb

    @property
    def __build_dock(self):
        gb = QGroupBox()
        return gb

    @property
    def __dock(self):
        dock = QDockWidget(self)
        dock.setMinimumWidth(300)
        dock.setMinimumHeight(100)
        dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)

        return dock

    @property
    def menubar(self):
        return self.menuBar()

    @property
    def toolbar(self):
        return self.toolButtonStyle()