Пример #1
0
class KColumnPanel(QWidget):
   
    def __init__(self, parent = None):
        super(KColumnPanel, self).__init__(parent)
        
        """ model will be set using resetModel() slot when
            a table is selected in the Tables view
        """
        self.kcolumnModel = None
        kcolumnDelegate = KColumnDelegate()
        
        label = QLabel('Columns:')
        self.kcolumnView = QTableView()
        self.kcolumnView.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.kcolumnView.setModel(self.kcolumnModel)
        self.kcolumnView.setItemDelegate(kcolumnDelegate)
        
        self.upButton = QPushButton('Up')
        self.downButton = QPushButton('Down')
        
        self.addButton = QPushButton("Add")
        self.removeButton = QPushButton("Remove")
        
        
        """CONNECTIONS"""
        
        self.connect(self.addButton, SIGNAL("clicked()"), self.addKColumn)
        self.connect(self.removeButton, SIGNAL("clicked()"), self.removeKColumn)
        self.connect(self.upButton, SIGNAL("clicked()"), self.moveUp)
        self.connect(self.downButton, SIGNAL("clicked()"), self.moveDown)
        
        """LAYOUT"""
        
        buttonsLayout = QHBoxLayout()
        buttonsLayout.addStretch()
        buttonsLayout.addWidget(self.addButton)
        buttonsLayout.addWidget(self.removeButton)
        
        upDownLayout = QVBoxLayout()
        upDownLayout.addStretch()
        upDownLayout.addWidget(self.upButton)
        upDownLayout.addWidget(self.downButton)
        upDownLayout.addStretch()

        hLayout = QHBoxLayout()
        hLayout.addWidget(self.kcolumnView)
        hLayout.addLayout(upDownLayout)
        
        layout = QVBoxLayout()
        layout.addWidget(label)
        layout.addLayout(hLayout)
        layout.addLayout(buttonsLayout)
        
        self.setLayout(layout)
        

    def addKColumn(self):
#        print "addColumn"
        if self.kcolumnModel is None:
            return
        row = self.kcolumnModel.rowCount()
        self.kcolumnModel.insertRows(row)
        index = self.kcolumnModel.index(row, 0)
        self.kcolumnView.setFocus()
        self.kcolumnView.setCurrentIndex(index)
        self.kcolumnView.edit(index)
        
        
    def removeKColumn(self):
#        print "removeColumn"
        
        index = self.kcolumnView.currentIndex()
        if not index.isValid():
            return
        
        selectedColumn = self.kcolumnModel.getColumnByIndex(index)
        
        answer = QMessageBox.question(self, self.trUtf8(u'Remove table?'),
                    self.trUtf8(u'Are you sure you want to remove the \'%1\' column?').arg(selectedColumn.label),
                    QMessageBox.Yes | QMessageBox.No,
                    QMessageBox.No)
        
        if answer == QMessageBox.Yes:
            row = index.row()
            self.kcolumnModel.removeRows(row)
            
    def moveUp(self):
        index = self.kcolumnView.currentIndex()
        if not index.isValid():
            return
        row = index.row()
        if row > 0:
            self.moveRow(row, row - 1)
        
    def moveDown(self):
        index = self.kcolumnView.currentIndex()
        if not index.isValid():
            return
        row = index.row()
        if row < self.kcolumnModel.rowCount() - 1:
            self.moveRow(row, row + 1)
        
        
    def moveRow(self, src, dest):
        sourceParent = self.kcolumnModel.index(src, 0)
        destinationParent = self.kcolumnModel.index(dest, 0)
        ok = self.kcolumnModel.beginMoveRows(sourceParent, src, src, destinationParent, dest)
        if ok:
            self.kcolumnModel.moveRow(src, dest)
            self.kcolumnModel.endMoveRows()
            self.kcolumnView.setCurrentIndex(destinationParent)
        
    def resetModel(self, ktable):
#        print "resetModel"
        self.kcolumnModel = KColumnModel(ktable.columns)
        self.kcolumnView.setModel(self.kcolumnModel)
        # select first row
        self.selectRowAtIndex(0)
        
    def selectRowAtIndex(self, rowIndex):
        modelIndex = self.kcolumnModel.index(rowIndex, 0)
        if modelIndex.isValid():
            self.kcolumnView.setCurrentIndex(modelIndex)
Пример #2
0
    def resetModel(self, ktable):
#        print "resetModel"
        self.kcolumnModel = KColumnModel(ktable.columns)
        self.kcolumnView.setModel(self.kcolumnModel)
        # select first row
        self.selectRowAtIndex(0)