Remember voice table column state

This commit is contained in:
Kovid Goyal 2020-12-11 08:22:56 +05:30
parent 9f2bf5482b
commit 8babb23858
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 42 additions and 7 deletions

View File

@ -4,8 +4,9 @@
from contextlib import suppress from contextlib import suppress
from PyQt5.Qt import ( from PyQt5.Qt import (
QAbstractItemView, QAbstractTableModel, QComboBox, QFontMetrics, QFormLayout, QAbstractItemView, QAbstractTableModel, QByteArray, QComboBox, QFontMetrics,
QItemSelectionModel, QSortFilterProxyModel, QSlider, Qt, QTableView, QWidget QFormLayout, QItemSelectionModel, QSlider, QSortFilterProxyModel, Qt, QTableView,
QWidget
) )
from calibre.gui2.preferences.look_feel import BusyCursor from calibre.gui2.preferences.look_feel import BusyCursor
@ -100,7 +101,8 @@ class Widget(QWidget):
v.setModel(p) v.setModel(p)
v.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) v.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
v.setSortingEnabled(True) v.setSortingEnabled(True)
v.horizontalHeader().resizeSection(0, QFontMetrics(self.font()).averageCharWidth() * 30) h = v.horizontalHeader()
h.resizeSection(0, QFontMetrics(self.font()).averageCharWidth() * 30)
v.verticalHeader().close() v.verticalHeader().close()
v.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection) v.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)
v.sortByColumn(0, Qt.SortOrder.AscendingOrder) v.sortByColumn(0, Qt.SortOrder.AscendingOrder)
@ -109,6 +111,15 @@ class Widget(QWidget):
self.backend_settings = initial_backend_settings or {} self.backend_settings = initial_backend_settings or {}
def restore_state(self, prefs):
data = prefs.get(f'{self.tts_client.name}-voice-table-state')
if data is not None:
self.voices.horizontalHeader().restoreState(QByteArray(data))
def save_state(self, prefs):
data = bytearray(self.voices.horizontalHeader().saveState())
prefs.set(f'{self.tts_client.name}-voice-table-state', data)
def restore_to_defaults(self): def restore_to_defaults(self):
self.backend_settings = {} self.backend_settings = {}

View File

@ -4,8 +4,8 @@
from contextlib import suppress from contextlib import suppress
from PyQt5.Qt import ( from PyQt5.Qt import (
QAbstractItemView, QAbstractTableModel, QFontMetrics, QFormLayout, QAbstractItemView, QAbstractTableModel, QByteArray, QFontMetrics, QFormLayout,
QItemSelectionModel, QSortFilterProxyModel, QSlider, Qt, QTableView, QWidget QItemSelectionModel, QSlider, QSortFilterProxyModel, Qt, QTableView, QWidget
) )
from calibre.gui2.preferences.look_feel import BusyCursor from calibre.gui2.preferences.look_feel import BusyCursor
@ -105,6 +105,15 @@ class Widget(QWidget):
self.backend_settings = initial_backend_settings or {} self.backend_settings = initial_backend_settings or {}
def restore_state(self, prefs):
data = prefs.get(f'{self.tts_client.name}-voice-table-state')
if data is not None:
self.voices.horizontalHeader().restoreState(QByteArray(data))
def save_state(self, prefs):
data = bytearray(self.voices.horizontalHeader().saveState())
prefs.set(f'{self.tts_client.name}-voice-table-state', data)
def restore_to_defaults(self): def restore_to_defaults(self):
self.backend_settings = {} self.backend_settings = {}

View File

@ -4,8 +4,9 @@
from contextlib import suppress from contextlib import suppress
from PyQt5.Qt import ( from PyQt5.Qt import (
QAbstractItemView, QAbstractTableModel, QComboBox, QFontMetrics, QFormLayout, QAbstractItemView, QAbstractTableModel, QByteArray, QComboBox, QFontMetrics,
QItemSelectionModel, QSlider, QSortFilterProxyModel, Qt, QTableView, QWidget QFormLayout, QItemSelectionModel, QSlider, QSortFilterProxyModel, Qt, QTableView,
QWidget
) )
from calibre.gui2.preferences.look_feel import BusyCursor from calibre.gui2.preferences.look_feel import BusyCursor
@ -108,6 +109,15 @@ class Widget(QWidget):
self.backend_settings = initial_backend_settings or {} self.backend_settings = initial_backend_settings or {}
def restore_state(self, prefs):
data = prefs.get(f'{self.tts_client.name}-voice-table-state')
if data is not None:
self.voices.horizontalHeader().restoreState(QByteArray(data))
def save_state(self, prefs):
data = bytearray(self.voices.horizontalHeader().saveState())
prefs.set(f'{self.tts_client.name}-voice-table-state', data)
def restore_to_defaults(self): def restore_to_defaults(self):
self.backend_settings = {} self.backend_settings = {}

View File

@ -25,6 +25,10 @@ class Config(Dialog):
self.config_widget.restore_to_defaults self.config_widget.restore_to_defaults
b = self.bb.addButton(QDialogButtonBox.StandardButton.RestoreDefaults) b = self.bb.addButton(QDialogButtonBox.StandardButton.RestoreDefaults)
b.clicked.connect(self.restore_to_defaults) b.clicked.connect(self.restore_to_defaults)
self.config_widget.restore_state(vprefs)
def save_state(self):
self.config_widget.save_state(vprefs)
def restore_to_defaults(self): def restore_to_defaults(self):
self.config_widget.restore_to_defaults() self.config_widget.restore_to_defaults()
@ -135,6 +139,7 @@ class TTS(QObject):
self.settings_changed.emit(d.ui_settings) self.settings_changed.emit(d.ui_settings)
else: else:
self.settings_changed.emit(None) self.settings_changed.emit(None)
d.save_state()
def slower(self, data): def slower(self, data):
settings = self.tts_client.change_rate(steps=-1) settings = self.tts_client.change_rate(steps=-1)