Ejemplo n.º 1
0
    def __init__(self, plugins):
        
        QtGui.QMainWindow.__init__(self)
        
        self.logViewer = LogViewer(otherStdout=sys.stdout,otherStderr=sys.stderr)
        #self.logViewer.connectToStdout()
        #self.logViewer.connectToStderr()
        
        self.plugin = plugins
        self.resize(1000, 600)
        self.setWindowTitle('Report generator (v1.1)')

        # ---Create non layout widgets
        self.tabDataSource = QtGui.QTableWidget(20,7)
        self.tabDataSource.setHorizontalHeaderLabels([' ','ODT template','Data source 1','Data dource 2','ODT report folder','ODT report name','DES file'])
        self.buttFillCellsChoice = QtGui.QPushButton('Fill from tree...') 
        self.buttFillCellsRepDir = QtGui.QPushButton('Choose report folder...') 
        self.buttFillTemplates = QtGui.QPushButton('Fill template for checked rows') 
        self.progGenOp = QtGui.QProgressBar()
        self.progGenOp.setMinimum(0)
        self.progGenOp.setMaximum(100)
        self.labGenOp = QtGui.QLabel('')
        self.progFillTemplates = QtGui.QProgressBar()
        self.progFillTemplates.setMinimum(0)
        self.progFillTemplates.setMaximum(100)       
        self.labFillTemplates = QtGui.QLabel('')
        
        self.menuBar = self.menuBar()
        
        self.menuView = self.menuBar.addMenu('&View')
        self.actShowHideLogViewer = QtGui.QAction("Log console", self)
        self.actShowHideLogViewer.setShortcut("Ctrl+L")
        self.menuView.addAction(self.actShowHideLogViewer)
        
        self.menuTools = self.menuBar.addMenu('&Tools')
        self.actShowDescriptorsEditor = QtGui.QAction("Descriptors Editor...", self)
        self.actShowDescriptorsEditor.setShortcut("Ctrl+D")
        self.menuTools.addAction(self.actShowDescriptorsEditor)

        # ---Create layout widgets
        self.hBox = QtGui.QHBoxLayout()
        self.vBox = QtGui.QVBoxLayout()
        self.vBoxControl1 = QtGui.QVBoxLayout()
        self.gridControl = QtGui.QGridLayout()
        self.gridControl.setColumnMinimumWidth(0, 160)
        self.gridRun = QtGui.QGridLayout()
        self.cWidget = QtGui.QWidget(self)  
        
        # ---Organize non-layout widgets
        self.hBox.addLayout(self.gridControl, 0)
        self.hBox.addLayout(self.vBox, 1)
        self.vBox.addLayout(self.gridRun, 0)
        self.vBox.addWidget(self.tabDataSource, 1)
        self.vBoxControl1.addStretch(1)
        self.vBoxControl1.addWidget(self.buttFillCellsChoice, 0)
        self.vBoxControl1.addWidget(self.buttFillCellsRepDir, 1)
        self.vBoxControl1.addWidget(self.buttFillTemplates, 2)
        self.vBoxControl1.addStretch(1)
        self.gridControl.addLayout(self.vBoxControl1, 0, 0)            
        self.gridRun.addWidget(self.labGenOp, 0, 0)
        self.gridRun.addWidget(self.progGenOp, 2, 0)
        self.gridRun.addWidget(self.labFillTemplates, 3, 0)
        self.gridRun.addWidget(self.progFillTemplates, 4, 0)
        self.cWidget.setLayout(self.hBox)
        self.setCentralWidget(self.cWidget)
    
        # ---Initialize data source table
        for r in xrange(self.tabDataSource.rowCount()):
            # Set processing column
            self.tabDataSource.setCellWidget(r, 0, CheckboxCell(checked=False))
            if r == 0:
                self.tabDataSource.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Fixed)
                self.tabDataSource.setColumnWidth(0, 32)
            # Set data source column
            for c in [1,2,3,6]:
                self.tabDataSource.setCellWidget(r, c, ComboCell([' ']))
                if r == 0:
                    self.tabDataSource.setColumnWidth(c, 160)
            # Set report folder column
            cell = QtGui.QTableWidgetItem('')
            self.tabDataSource.setItem(r, 4, cell)
            self.tabDataSource.setColumnWidth(4, 160)
            # Set report name column
            cell = QtGui.QTableWidgetItem('')
            self.tabDataSource.setItem(r, 5, cell)
            self.tabDataSource.setColumnWidth(5, 160)
        self.tabDataSource.resizeRowsToContents()
Ejemplo n.º 2
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self, plugins):
        
        QtGui.QMainWindow.__init__(self)
        
        self.logViewer = LogViewer(otherStdout=sys.stdout,otherStderr=sys.stderr)
        #self.logViewer.connectToStdout()
        #self.logViewer.connectToStderr()
        
        self.plugin = plugins
        self.resize(1000, 600)
        self.setWindowTitle('Report generator (v1.1)')

        # ---Create non layout widgets
        self.tabDataSource = QtGui.QTableWidget(20,7)
        self.tabDataSource.setHorizontalHeaderLabels([' ','ODT template','Data source 1','Data dource 2','ODT report folder','ODT report name','DES file'])
        self.buttFillCellsChoice = QtGui.QPushButton('Fill from tree...') 
        self.buttFillCellsRepDir = QtGui.QPushButton('Choose report folder...') 
        self.buttFillTemplates = QtGui.QPushButton('Fill template for checked rows') 
        self.progGenOp = QtGui.QProgressBar()
        self.progGenOp.setMinimum(0)
        self.progGenOp.setMaximum(100)
        self.labGenOp = QtGui.QLabel('')
        self.progFillTemplates = QtGui.QProgressBar()
        self.progFillTemplates.setMinimum(0)
        self.progFillTemplates.setMaximum(100)       
        self.labFillTemplates = QtGui.QLabel('')
        
        self.menuBar = self.menuBar()
        
        self.menuView = self.menuBar.addMenu('&View')
        self.actShowHideLogViewer = QtGui.QAction("Log console", self)
        self.actShowHideLogViewer.setShortcut("Ctrl+L")
        self.menuView.addAction(self.actShowHideLogViewer)
        
        self.menuTools = self.menuBar.addMenu('&Tools')
        self.actShowDescriptorsEditor = QtGui.QAction("Descriptors Editor...", self)
        self.actShowDescriptorsEditor.setShortcut("Ctrl+D")
        self.menuTools.addAction(self.actShowDescriptorsEditor)

        # ---Create layout widgets
        self.hBox = QtGui.QHBoxLayout()
        self.vBox = QtGui.QVBoxLayout()
        self.vBoxControl1 = QtGui.QVBoxLayout()
        self.gridControl = QtGui.QGridLayout()
        self.gridControl.setColumnMinimumWidth(0, 160)
        self.gridRun = QtGui.QGridLayout()
        self.cWidget = QtGui.QWidget(self)  
        
        # ---Organize non-layout widgets
        self.hBox.addLayout(self.gridControl, 0)
        self.hBox.addLayout(self.vBox, 1)
        self.vBox.addLayout(self.gridRun, 0)
        self.vBox.addWidget(self.tabDataSource, 1)
        self.vBoxControl1.addStretch(1)
        self.vBoxControl1.addWidget(self.buttFillCellsChoice, 0)
        self.vBoxControl1.addWidget(self.buttFillCellsRepDir, 1)
        self.vBoxControl1.addWidget(self.buttFillTemplates, 2)
        self.vBoxControl1.addStretch(1)
        self.gridControl.addLayout(self.vBoxControl1, 0, 0)            
        self.gridRun.addWidget(self.labGenOp, 0, 0)
        self.gridRun.addWidget(self.progGenOp, 2, 0)
        self.gridRun.addWidget(self.labFillTemplates, 3, 0)
        self.gridRun.addWidget(self.progFillTemplates, 4, 0)
        self.cWidget.setLayout(self.hBox)
        self.setCentralWidget(self.cWidget)
    
        # ---Initialize data source table
        for r in xrange(self.tabDataSource.rowCount()):
            # Set processing column
            self.tabDataSource.setCellWidget(r, 0, CheckboxCell(checked=False))
            if r == 0:
                self.tabDataSource.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Fixed)
                self.tabDataSource.setColumnWidth(0, 32)
            # Set data source column
            for c in [1,2,3,6]:
                self.tabDataSource.setCellWidget(r, c, ComboCell([' ']))
                if r == 0:
                    self.tabDataSource.setColumnWidth(c, 160)
            # Set report folder column
            cell = QtGui.QTableWidgetItem('')
            self.tabDataSource.setItem(r, 4, cell)
            self.tabDataSource.setColumnWidth(4, 160)
            # Set report name column
            cell = QtGui.QTableWidgetItem('')
            self.tabDataSource.setItem(r, 5, cell)
            self.tabDataSource.setColumnWidth(5, 160)
        self.tabDataSource.resizeRowsToContents()
        #self.show()
    
    def show(self):
        super(MainWindow, self).show()
        
    
    def setQuitFun(self, quitFun):
        self.quitFun = quitFun
        
    
    def closeEvent(self, event):
        r = self.quitFun()
        if r:
            event.accept()
        else:
            event.ignore()
            
    def setProgGenOpPct(self, pct):
        self.progGenOp.setValue(pct)
            
    def setLabGenOp(self, text):
        self.labGenOp.setText(text)
    
    def setProgFillTemplatesPct(self, pct):
        self.progFillTemplates.setValue(pct)
    
    def setLabFillTemplates(self, text):
        self.labFillTemplates.setText(text)
    
    def getHlCellsCount(self):
        return len(self.tabDataSource.selectedIndexes())
    
    def getColumnCount(self):
        return self.tabDataSource.columnCount()

    def getRowCount(self):
        return self.tabDataSource.rowCount()
    
    def getHlCellsColumns(self):
        columnIdxs = []
        hlIndexes = self.tabDataSource.selectedIndexes()
        for index in hlIndexes:
            c = index.column()
            if c not in columnIdxs:
                columnIdxs.append(c)
        return columnIdxs
    
    def getHlCellsRows(self):
        rowIdxs = []
        hlIndexes = self.tabDataSource.selectedIndexes()
        for index in hlIndexes:
            r = index.row()
            if r not in rowIdxs:
                rowIdxs.append(r)
        return rowIdxs
    
    def getCheckedRows(self):
        rowIdxs = []
        for r in xrange(self.getRowCount()):
            cell = self.tabDataSource.cellWidget(r, 0)
            if cell.isChecked():
                rowIdxs.append(r)
        return rowIdxs
        
    
    def setPossibleChoicesForHlCells(self, l):
        hlIndexes = self.tabDataSource.selectedIndexes()
        for index in hlIndexes:
            cell = self.tabDataSource.cellWidget(index.row(), index.column())
            cell.setPossibleChoices(l)
        
    def setLabelsForHlCells(self, text):
        hlIndexes = self.tabDataSource.selectedIndexes()
        for index in hlIndexes:
            if index.column() < 4 or index.column() == 6:
                cell = self.tabDataSource.cellWidget(index.row(), index.column())
                cell.setLabel(text)
            else:
                cell = QtGui.QTableWidgetItem(text)
                self.tabDataSource.setItem(index.row(), index.column(), cell)
    
    def setCellBackgroundColor(self, r, c, col):
        if c < 4 or c == 6:
            cell = self.tabDataSource.cellWidget(r, c)
            cell.setBackgroundColor(col)
        else:
            item = self.tabDataSource.item(r, c)
            item.setBackgroundColor(QtGui.QColor(col))
    
    def setCellBackground(self, r, c, background):
        if c < 4 or c == 6:
            cell = self.tabDataSource.cellWidget(r, c)
            cell.setBackground(background)
    
    def setRowBackgroundColor(self, r, col):
        for c in xrange(self.getColumnCount()):
            self.setCellBackgroundColor(r, c, col)
    
    def getRowData(self, r):
        data = {'templateFile':None,
                'dataSource1File':None,
                'dataSource2File':None,
                'reportFolder':None,
                'reportName':None,
                'descriptorsFile':None}
        templateFileFolder = self.tabDataSource.cellWidget(r, 1).getLabel()
        templateFileName = self.tabDataSource.cellWidget(r, 1).getChoice()
        data['templateFile'] = os.path.join(templateFileFolder, templateFileName)
        dataSource1FileFolder = self.tabDataSource.cellWidget(r, 2).getLabel()
        dataSource1FileName = self.tabDataSource.cellWidget(r, 2).getChoice()
        data['dataSource1File'] = os.path.join(dataSource1FileFolder, dataSource1FileName)
        dataSource2FileFolder = self.tabDataSource.cellWidget(r, 3).getLabel()
        dataSource2FileName = self.tabDataSource.cellWidget(r, 3).getChoice()
        data['dataSource2File'] = os.path.join(dataSource2FileFolder, dataSource2FileName)
        data['reportFolder'] = str(self.tabDataSource.item(r, 4).text())
        data['reportName'] = str(self.tabDataSource.item(r, 5).text())+'.odt'
        descriptorsFileFolder = self.tabDataSource.cellWidget(r, 6).getLabel()
        descriptorsFileName = self.tabDataSource.cellWidget(r, 6).getChoice()
        data['descriptorsFile'] = os.path.join(descriptorsFileFolder, descriptorsFileName)        
        print data
        return data
    
    def showLogViewer(self):
        self.logViewer.show()
            
    def hideLogViewer(self):
        self.logViewer.hide()
    
    def isLogViewerHidden(self):
        return self.logViewer.isHidden()
        
    def connectLogViewerToStdout(self):
        self.logViewer.connectToStdout()

    def connectLogViewerToStderr(self):
        self.logViewer.connectToStderr()
    
    def writeToLogViewer(self, msg):
        self.logViewer.write(msg)