diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index e82ee95c0f..2871c85615 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -55,9 +55,19 @@ class Configure(Dialog): b = self.bb.addButton(_('Restore &defaults'), self.bb.ActionRole) b.clicked.connect(self.restore_defaults) + b = self.bb.addButton(_('Select &all'), self.bb.ActionRole) + b.clicked.connect(self.select_all) + b = self.bb.addButton(_('Select &none'), self.bb.ActionRole) + b.clicked.connect(self.select_none) self.l.addWidget(self.bb) self.setMinimumHeight(500) + def select_all(self): + self.model.toggle_all(True) + + def select_none(self): + self.model.toggle_all(False) + def restore_defaults(self): self.model.initialize(use_defaults=True) diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py index ff93430c19..7a771b3202 100644 --- a/src/calibre/gui2/preferences/look_feel.py +++ b/src/calibre/gui2/preferences/look_feel.py @@ -256,6 +256,12 @@ class DisplayedFields(QAbstractListModel): # {{{ return QIcon(I('column.png')) return None + def toggle_all(self, show=True): + for i in range(self.rowCount()): + idx = self.index(i) + if idx.isValid(): + self.setData(idx, show, Qt.CheckStateRole) + def flags(self, index): ans = QAbstractListModel.flags(self, index) return ans | Qt.ItemIsUserCheckable