Esempio n. 1
0
 def __init__(self, parent, buttonText, triggeredEvent, sortedColumn=None, ascending=True, placeholderText="", useTextEdit=False, sortingEnabled=True):
     super(TableWidget, self).__init__(parent)
     
     self.externalEvent = triggeredEvent
     
     # create HBox in VBox for each table
     # Create message table
     bottomWidget = QWidget(self)
     tableBottomLayout = QHBoxLayout(bottomWidget)
     if getPlatform() == PLATFORM_MAC:
         tableBottomLayout.setContentsMargins(10, 0, 10, 0)
     else:
         tableBottomLayout.setContentsMargins(10, 0, 10, 5)
     
     self.table = QTreeView(self)
     self.table.setSortingEnabled(sortingEnabled)
     self.table.setHeaderHidden(False)
     self.table.setAlternatingRowColors(True)
     self.table.setIndentation(0)
     self.table.setUniformRowHeights(True)
     self.table.setObjectName(self._TABLE_OBJ_NAME)
     
     self.table.setFrameShape(QFrame.StyledPanel)
     if getPlatform() == PLATFORM_MAC:
         self.table.setStyleSheet("QFrame#%s{border-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-color:palette(mid)}" % self._TABLE_OBJ_NAME);
     if sortedColumn != None:
         self.table.sortByColumn(sortedColumn, Qt.AscendingOrder if ascending else Qt.DescendingOrder)
     
     if useTextEdit:
         self.entry = HistoryTextEdit(self)
     else:
         self.entry = HistoryLineEdit(self, placeholderText)
     tableBottomLayout.addWidget(self.entry)
     button = QPushButton(buttonText, self)
     button.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.MinimumExpanding)
     tableBottomLayout.addWidget(button, 0, Qt.AlignBottom if useTextEdit else Qt.AlignCenter)
     
     tableLayout = QVBoxLayout(self)
     tableLayout.setSpacing(5)
     tableLayout.setContentsMargins(0, 0, 0, 0)
     tableLayout.addWidget(self.table)
     tableLayout.addWidget(bottomWidget)
     
     self.entry.returnPressed.connect(self.eventTriggered)
     button.clicked.connect(self.eventTriggered)
     
     self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.MinimumExpanding)
Esempio n. 2
0
class TableWidget(QWidget):
    PREFERRED_WIDTH = 400
    
    _TABLE_OBJ_NAME = u"__table_widget_table"
    
    def __init__(self, parent, buttonText, triggeredEvent, sortedColumn=None, ascending=True, placeholderText="", useTextEdit=False, sortingEnabled=True):
        super(TableWidget, self).__init__(parent)
        
        self.externalEvent = triggeredEvent
        
        # create HBox in VBox for each table
        # Create message table
        bottomWidget = QWidget(self)
        tableBottomLayout = QHBoxLayout(bottomWidget)
        if getPlatform() == PLATFORM_MAC:
            tableBottomLayout.setContentsMargins(10, 0, 10, 0)
        else:
            tableBottomLayout.setContentsMargins(10, 0, 10, 5)
        
        self.table = QTreeView(self)
        self.table.setSortingEnabled(sortingEnabled)
        self.table.setHeaderHidden(False)
        self.table.setAlternatingRowColors(True)
        self.table.setIndentation(0)
        self.table.setUniformRowHeights(True)
        self.table.setObjectName(self._TABLE_OBJ_NAME)
        
        self.table.setFrameShape(QFrame.StyledPanel)
        if getPlatform() == PLATFORM_MAC:
            self.table.setStyleSheet("QFrame#%s{border-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-color:palette(mid)}" % self._TABLE_OBJ_NAME);
        if sortedColumn != None:
            self.table.sortByColumn(sortedColumn, Qt.AscendingOrder if ascending else Qt.DescendingOrder)
        
        if useTextEdit:
            self.entry = HistoryTextEdit(self)
        else:
            self.entry = HistoryLineEdit(self, placeholderText)
        tableBottomLayout.addWidget(self.entry)
        button = QPushButton(buttonText, self)
        button.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.MinimumExpanding)
        tableBottomLayout.addWidget(button, 0, Qt.AlignBottom if useTextEdit else Qt.AlignCenter)
        
        tableLayout = QVBoxLayout(self)
        tableLayout.setSpacing(5)
        tableLayout.setContentsMargins(0, 0, 0, 0)
        tableLayout.addWidget(self.table)
        tableLayout.addWidget(bottomWidget)
        
        self.entry.returnPressed.connect(self.eventTriggered)
        button.clicked.connect(self.eventTriggered)
        
        self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.MinimumExpanding)
        
    @loggingSlot()
    def eventTriggered(self):
        text = convert_string(self.entry.text())
        ret_val = self.externalEvent(text)
        if ret_val != False:
            self.entry.clear()
    
    def sizeHint(self):
        sizeHint = QWidget.sizeHint(self)
        return QSize(self.PREFERRED_WIDTH, sizeHint.height())
        
    def setModel(self, model):
        self.table.setModel(model)
        
    def setColumnWidth(self, column, width):
        self.table.setColumnWidth(column, width)
        
    def getTable(self):
        return self.table
    
    def clearHistory(self):
        self.entry.clearHistory()
    
    def addToHistory(self, l):
        for e in l:
            self.entry.appendHistory(e)