class PlaylistsTable(QTableWidget): switch_to_this_playlist_signal = pyqtSignal(int) add_a_playlist_signal = pyqtSignal() rename_a_playlist_signal = pyqtSignal(int) delete_a_playlist_signal = pyqtSignal(int) def __init__(self, parent=None): super(PlaylistsTable, self).__init__(parent) self.set_attritutes() self.playlistOperator = PlaylistOperator(self) self.playlistOperator.setGeometry(0, 40, 270, 40) self.create_connections() def set_attritutes(self): self.setMouseTracking(True) self.horizontalHeader().setVisible(False) self.verticalHeader().setVisible(False) self.setShowGrid(False) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setRowCount(0) self.setColumnCount(1) self.setColumnWidth(0, 270) def create_connections(self): self.cellEntered.connect(self.cell_entered) self.playlistOperator.clicked_signal.connect(self.switch_to_this_playlist_signal.emit) self.playlistOperator.add_button_clicked_signal.connect(self.add_a_playlist_signal.emit) self.playlistOperator.rename_button_clicked_signal.connect(self.rename_a_playlist_signal.emit) self.playlistOperator.delete_button_clicked_signal.connect(self.delete_a_playlist_signal.emit) self.playlistOperator.wheel_event_triggered_signal.connect(self.wheelEvent) def cell_entered(self, row, column): self.playlistOperator.set_row(row) scrollBar = self.verticalScrollBar() scrolledValue = scrollBar.value() # if scrolledValue and scrolledValue == scrollBar.maximum(): # scrolledValue -= 1 self.playlistOperator.setGeometry(0, (row - scrolledValue)*self.rowHeight(row), 270, 40) def add_item(self, playlistName): countRow = self.rowCount() playlistItem = QTableWidgetItem(QIcon(IconsHub.PlaylistFold), playlistName) self.insertRow(countRow) self.setRowHeight(countRow, 40) self.setItem(countRow, 0, playlistItem) def get_name_at(self, row): return self.item(row, 0).text() def rename_an_item(self, row, newName): self.item(row, 0).setText(newName) def remove_item_at(self, row): if row == self.rowCount() - 1: self.cell_entered(row - 1, 0) self.removeRow(row)
def __init__(self, parent=None): super(PlaylistsTable, self).__init__(parent) self.set_attritutes() self.playlistOperator = PlaylistOperator(self) self.playlistOperator.setGeometry(0, 40, 270, 40) self.create_connections()
class PlaylistsTable(QTableWidget): switch_to_this_playlist_signal = pyqtSignal(int) add_a_playlist_signal = pyqtSignal() rename_a_playlist_signal = pyqtSignal(int) delete_a_playlist_signal = pyqtSignal(int) def __init__(self, parent=None): super(PlaylistsTable, self).__init__(parent) self.set_attritutes() self.playlistOperator = PlaylistOperator(self) self.playlistOperator.setGeometry(0, 40, 270, 40) self.create_connections() def set_attritutes(self): self.setMouseTracking(True) self.horizontalHeader().setVisible(False) self.verticalHeader().setVisible(False) self.setShowGrid(False) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setRowCount(0) self.setColumnCount(1) self.setColumnWidth(0, 270) def create_connections(self): self.cellEntered.connect(self.cell_entered) self.playlistOperator.clicked_signal.connect( self.switch_to_this_playlist_signal.emit) self.playlistOperator.add_button_clicked_signal.connect( self.add_a_playlist_signal.emit) self.playlistOperator.rename_button_clicked_signal.connect( self.rename_a_playlist_signal.emit) self.playlistOperator.delete_button_clicked_signal.connect( self.delete_a_playlist_signal.emit) self.playlistOperator.wheel_event_triggered_signal.connect( self.wheelEvent) def cell_entered(self, row, column): self.playlistOperator.set_row(row) scrollBar = self.verticalScrollBar() scrolledValue = scrollBar.value() # if scrolledValue and scrolledValue == scrollBar.maximum(): # scrolledValue -= 1 self.playlistOperator.setGeometry(0, (row - scrolledValue) * self.rowHeight(row), 270, 40) def add_item(self, playlistName): countRow = self.rowCount() playlistItem = QTableWidgetItem(QIcon(IconsHub.PlaylistFold), playlistName) self.insertRow(countRow) self.setRowHeight(countRow, 40) self.setItem(countRow, 0, playlistItem) def get_name_at(self, row): return self.item(row, 0).text() def rename_an_item(self, row, newName): self.item(row, 0).setText(newName) def remove_item_at(self, row): if row == self.rowCount() - 1: self.cell_entered(row - 1, 0) self.removeRow(row)