Refactor to make QSettings more python friendly

This commit is contained in:
Kovid Goyal 2008-03-19 03:37:51 +00:00
parent 6663154e16
commit e6b649d8a0
12 changed files with 86 additions and 50 deletions

View File

@ -19,7 +19,7 @@ __author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
__appname__ = 'libprs500' __appname__ = 'libprs500'
import sys, os, logging, mechanize, locale, copy, cStringIO, re, subprocess, \ import sys, os, logging, mechanize, locale, copy, cStringIO, re, subprocess, \
textwrap, atexit textwrap, atexit, cPickle
from gettext import GNUTranslations from gettext import GNUTranslations
from math import floor from math import floor
from optparse import OptionParser as _OptionParser from optparse import OptionParser as _OptionParser
@ -27,6 +27,7 @@ from optparse import IndentedHelpFormatter
from logging import Formatter from logging import Formatter
from ttfquery import findsystem, describe from ttfquery import findsystem, describe
from PyQt4.QtCore import QSettings, QVariant
from libprs500.translations.msgfmt import make from libprs500.translations.msgfmt import make
from libprs500.ebooks.chardet import detect from libprs500.ebooks.chardet import detect
@ -307,6 +308,10 @@ def get_font_families(cached=None):
else: else:
zlist = [] zlist = []
for ff in ffiles: for ff in ffiles:
if 'Optane' in str(ff):
font = describe.openFont(ff)
wt, italic = describe.modifiers(font)
print ff, wt, italic
try: try:
font = describe.openFont(ff) font = describe.openFont(ff)
except: # Some font files cause ttfquery to raise an exception, in which case they are ignored except: # Some font files cause ttfquery to raise an exception, in which case they are ignored
@ -450,3 +455,32 @@ def singleinstance(name):
return False return False
return False return False
class Settings(QSettings):
def __init__(self):
QSettings.__init__(self, QSettings.IniFormat, QSettings.UserScope,
'kovidgoyal.net', 'calibre')
def migrate(self, settings):
for key in settings.allKeys():
self.setValue(key, settings.value(key, QVariant()))
def get(self, key, default=None):
key = str(key)
if not self.contains(key):
return default
val = str(self.value(key, QVariant()).toString())
if not val:
return None
return cPickle.loads(val)
def set(self, key, val):
val = cPickle.dumps(val, -1)
self.setValue(str(key), QVariant(val))
_settings = Settings()
if not _settings.get('migrated from QSettings'):
_settings.migrate(QSettings('KovidsBrain', 'libprs500'))
_settings.set('migrated from QSettings', True)
_settings.sync()

View File

@ -14,7 +14,7 @@
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
""" The GUI """ """ The GUI """
import sys, os, re, StringIO, traceback import sys, os, re, StringIO, traceback
from PyQt4.QtCore import QVariant, QSettings, QFileInfo, QObject, SIGNAL, QBuffer, \ from PyQt4.QtCore import QVariant, QFileInfo, QObject, SIGNAL, QBuffer, \
QByteArray, QLocale, QTranslator, QUrl QByteArray, QLocale, QTranslator, QUrl
from PyQt4.QtGui import QFileDialog, QMessageBox, QPixmap, QFileIconProvider, \ from PyQt4.QtGui import QFileDialog, QMessageBox, QPixmap, QFileIconProvider, \
QIcon, QTableView QIcon, QTableView
@ -85,14 +85,14 @@ class TableView(QTableView):
def read_settings(self): def read_settings(self):
self.cw = str(QSettings().value(self.__class__.__name__ + ' column widths', QVariant('')).toString()) self.cw = str(Settings().value(self.__class__.__name__ + ' column widths', QVariant('')).toString())
try: try:
self.cw = tuple(int(i) for i in self.cw.split(',')) self.cw = tuple(int(i) for i in self.cw.split(','))
except ValueError: except ValueError:
self.cw = None self.cw = None
def write_settings(self): def write_settings(self):
settings = QSettings() settings = Settings()
settings.setValue(self.__class__.__name__ + ' column widths', settings.setValue(self.__class__.__name__ + ' column widths',
QVariant(','.join(str(self.columnWidth(i)) QVariant(','.join(str(self.columnWidth(i))
for i in range(self.model().columnCount(None))))) for i in range(self.model().columnCount(None)))))
@ -109,10 +109,10 @@ class TableView(QTableView):
is hidden, if True it is shown. is hidden, if True it is shown.
''' '''
if cols: if cols:
QSettings().setValue(self.__class__.__name__ + ' visible columns', Settings().setValue(self.__class__.__name__ + ' visible columns',
QVariant(repr(cols))) QVariant(repr(cols)))
else: else:
cols = qstring_to_unicode(QSettings().value(self.__class__.__name__ + ' visible columns', cols = qstring_to_unicode(Settings().value(self.__class__.__name__ + ' visible columns',
QVariant('')).toString()) QVariant('')).toString())
if cols: if cols:
cols = eval(cols) cols = eval(cols)
@ -219,7 +219,7 @@ _sidebar_directories = []
def set_sidebar_directories(dirs): def set_sidebar_directories(dirs):
global _sidebar_directories global _sidebar_directories
if dirs is None: if dirs is None:
dirs = QSettings().value('frequently used directories', QVariant([])).toStringList() dirs = Settings().value('frequently used directories', QVariant([])).toStringList()
_sidebar_directories = [QUrl.fromLocalFile(i) for i in dirs] _sidebar_directories = [QUrl.fromLocalFile(i) for i in dirs]
class FileDialog(QObject): class FileDialog(QObject):
@ -242,7 +242,7 @@ class FileDialog(QObject):
if add_all_files_filter or not ftext: if add_all_files_filter or not ftext:
ftext += 'All files (*)' ftext += 'All files (*)'
settings = QSettings() settings = Settings()
self.dialog_name = name if name else 'dialog_' + title self.dialog_name = name if name else 'dialog_' + title
self.selected_files = None self.selected_files = None
self.fd = None self.fd = None
@ -298,7 +298,7 @@ class FileDialog(QObject):
def save_dir(self): def save_dir(self):
if self.fd: if self.fd:
settings = QSettings() settings = Settings()
settings.setValue(self.dialog_name, QVariant(self.fd.saveState())) settings.setValue(self.dialog_name, QVariant(self.fd.saveState()))

View File

@ -15,9 +15,9 @@
import os import os
from PyQt4.QtGui import QDialog, QMessageBox, QListWidgetItem, QVBoxLayout from PyQt4.QtGui import QDialog, QMessageBox, QListWidgetItem, QVBoxLayout
from PyQt4.QtCore import QSettings, QVariant, SIGNAL, QStringList, QTimer, Qt from PyQt4.QtCore import QVariant, SIGNAL, QStringList, QTimer, Qt
from libprs500 import islinux from libprs500 import islinux, Settings
from libprs500.gui2.dialogs.config_ui import Ui_Dialog from libprs500.gui2.dialogs.config_ui import Ui_Dialog
from libprs500.gui2 import qstring_to_unicode, choose_dir, error_dialog from libprs500.gui2 import qstring_to_unicode, choose_dir, error_dialog
from libprs500.gui2.widgets import FilenamePattern from libprs500.gui2.widgets import FilenamePattern
@ -31,7 +31,7 @@ class ConfigDialog(QDialog, Ui_Dialog):
self.db = db self.db = db
self.current_cols = columns self.current_cols = columns
settings = QSettings() settings = Settings()
path = qstring_to_unicode(\ path = qstring_to_unicode(\
settings.value("database path", settings.value("database path",
QVariant(os.path.join(os.path.expanduser('~'),'library1.db'))).toString()) QVariant(os.path.join(os.path.expanduser('~'),'library1.db'))).toString())
@ -89,7 +89,7 @@ class ConfigDialog(QDialog, Ui_Dialog):
self.directory_list.takeItem(idx) self.directory_list.takeItem(idx)
def accept(self): def accept(self):
settings = QSettings() settings = Settings()
settings.setValue('use roman numerals for series number', QVariant(self.roman_numerals.isChecked())) settings.setValue('use roman numerals for series number', QVariant(self.roman_numerals.isChecked()))
settings.setValue('network timeout', QVariant(self.timeout.value())) settings.setValue('network timeout', QVariant(self.timeout.value()))
path = qstring_to_unicode(self.location.text()) path = qstring_to_unicode(self.location.text())
@ -121,4 +121,4 @@ class Vacuum(QMessageBox):
def vacuum(self): def vacuum(self):
self.db.vacuum() self.db.vacuum()
self.accept() self.accept()

View File

@ -18,13 +18,14 @@ GUI for fetching metadata from servers.
import logging, cStringIO import logging, cStringIO
from PyQt4.QtCore import Qt, QObject, SIGNAL, QSettings, QVariant, \ from PyQt4.QtCore import Qt, QObject, SIGNAL, QVariant, \
QAbstractTableModel, QCoreApplication QAbstractTableModel, QCoreApplication
from PyQt4.QtGui import QDialog, QItemSelectionModel from PyQt4.QtGui import QDialog, QItemSelectionModel
from libprs500.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata from libprs500.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata
from libprs500.gui2 import error_dialog, NONE from libprs500.gui2 import error_dialog, NONE
from libprs500.ebooks.metadata.isbndb import create_books, option_parser from libprs500.ebooks.metadata.isbndb import create_books, option_parser
from libprs500 import Settings
class Matches(QAbstractTableModel): class Matches(QAbstractTableModel):
@ -87,7 +88,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata):
self.timeout = timeout self.timeout = timeout
QObject.connect(self.fetch, SIGNAL('clicked()'), self.fetch_metadata) QObject.connect(self.fetch, SIGNAL('clicked()'), self.fetch_metadata)
self.key.setText(QSettings().value('isbndb.com key', QVariant('')).toString()) self.key.setText(Settings().value('isbndb.com key', QVariant('')).toString())
self.setWindowTitle(title if title else 'Unknown') self.setWindowTitle(title if title else 'Unknown')
self.tlabel.setText(self.tlabel.text().arg(title if title else 'Unknown')) self.tlabel.setText(self.tlabel.text().arg(title if title else 'Unknown'))
@ -113,7 +114,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata):
_('You must specify a valid access key for isbndb.com')) _('You must specify a valid access key for isbndb.com'))
return return
else: else:
QSettings().setValue('isbndb.com key', QVariant(self.key.text())) Settings().setValue('isbndb.com key', QVariant(self.key.text()))
args = ['isbndb'] args = ['isbndb']
if self.isbn: if self.isbn:

View File

@ -14,7 +14,7 @@
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os, cPickle, codecs import os, cPickle, codecs
from PyQt4.QtCore import QObject, SIGNAL, Qt, QSettings, QVariant, QByteArray from PyQt4.QtCore import QObject, SIGNAL, Qt, QVariant, QByteArray
from PyQt4.QtGui import QAbstractSpinBox, QLineEdit, QCheckBox, QDialog, \ from PyQt4.QtGui import QAbstractSpinBox, QLineEdit, QCheckBox, QDialog, \
QPixmap, QTextEdit QPixmap, QTextEdit
@ -25,7 +25,7 @@ from libprs500.gui2 import qstring_to_unicode, error_dialog, \
from libprs500.gui2.widgets import FontFamilyModel from libprs500.gui2.widgets import FontFamilyModel
from libprs500.ebooks.lrf import option_parser from libprs500.ebooks.lrf import option_parser
from libprs500.ptempfile import PersistentTemporaryFile from libprs500.ptempfile import PersistentTemporaryFile
from libprs500 import __appname__ from libprs500 import __appname__, Settings
font_family_model = None font_family_model = None
@ -110,7 +110,7 @@ class LRFSingleDialog(QDialog, Ui_LRFSingleDialog):
def load_saved_global_defaults(self): def load_saved_global_defaults(self):
cmdline = QSettings().value('LRF conversion defaults', QVariant(QByteArray(''))).toByteArray().data() cmdline = Settings().value('LRF conversion defaults', QVariant(QByteArray(''))).toByteArray().data()
if cmdline: if cmdline:
cmdline = cPickle.loads(cmdline) cmdline = cPickle.loads(cmdline)
self.set_options_from_cmdline(cmdline) self.set_options_from_cmdline(cmdline)
@ -390,7 +390,7 @@ class LRFSingleDialog(QDialog, Ui_LRFSingleDialog):
cmdline.extend([u'--cover', self.cover_file.name]) cmdline.extend([u'--cover', self.cover_file.name])
self.cmdline = [unicode(i) for i in cmdline] self.cmdline = [unicode(i) for i in cmdline]
else: else:
QSettings().setValue('LRF conversion defaults', QVariant(QByteArray(cPickle.dumps(cmdline)))) Settings().setValue('LRF conversion defaults', QVariant(QByteArray(cPickle.dumps(cmdline))))
QDialog.accept(self) QDialog.accept(self)
class LRFBulkDialog(LRFSingleDialog): class LRFBulkDialog(LRFSingleDialog):
@ -411,4 +411,4 @@ class LRFBulkDialog(LRFSingleDialog):
self.cmdline = self.cmdline = [unicode(i) for i in self.build_commandline()] self.cmdline = self.cmdline = [unicode(i) for i in self.build_commandline()]
self.cover_file = None self.cover_file = None
QDialog.accept(self) QDialog.accept(self)

View File

@ -18,7 +18,7 @@ add/remove formats
''' '''
import os import os
from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication, Qt, QVariant, QSettings from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication, Qt, QVariant
from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog
@ -30,6 +30,7 @@ from libprs500.gui2.dialogs.tag_editor import TagEditor
from libprs500.gui2.dialogs.password import PasswordDialog from libprs500.gui2.dialogs.password import PasswordDialog
from libprs500.ebooks import BOOK_EXTENSIONS from libprs500.ebooks import BOOK_EXTENSIONS
from libprs500.ebooks.metadata.library_thing import login, cover_from_isbn, LibraryThingError from libprs500.ebooks.metadata.library_thing import login, cover_from_isbn, LibraryThingError
from libprs500 import Settings
class Format(QListWidgetItem): class Format(QListWidgetItem):
def __init__(self, parent, ext, size, path=None): def __init__(self, parent, ext, size, path=None):
@ -154,7 +155,7 @@ class MetadataSingleDialog(QDialog, Ui_MetadataSingleDialog):
self.edit_tags) self.edit_tags)
QObject.connect(self.remove_series_button, SIGNAL('clicked()'), QObject.connect(self.remove_series_button, SIGNAL('clicked()'),
self.remove_unused_series) self.remove_unused_series)
self.timeout = float(QSettings().value('network timeout', QVariant(5)).toInt()[0]) self.timeout = float(Settings().value('network timeout', QVariant(5)).toInt()[0])
self.title.setText(db.title(row)) self.title.setText(db.title(row))
isbn = db.isbn(self.id, index_is_id=True) isbn = db.isbn(self.id, index_is_id=True)
if not isbn: if not isbn:
@ -332,4 +333,4 @@ class MetadataSingleDialog(QDialog, Ui_MetadataSingleDialog):
self.db.set_cover(self.id, pixmap_to_data(self.cover.pixmap())) self.db.set_cover(self.id, pixmap_to_data(self.cover.pixmap()))
self.changed = True self.changed = True
QDialog.accept(self) QDialog.accept(self)

View File

@ -14,10 +14,11 @@
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
from PyQt4.QtGui import QDialog, QLineEdit from PyQt4.QtGui import QDialog, QLineEdit
from PyQt4.QtCore import QSettings, QVariant, SIGNAL, Qt from PyQt4.QtCore import QVariant, SIGNAL, Qt
from libprs500.gui2.dialogs.password_ui import Ui_Dialog from libprs500.gui2.dialogs.password_ui import Ui_Dialog
from libprs500.gui2 import qstring_to_unicode from libprs500.gui2 import qstring_to_unicode
from libprs500 import Settings
class PasswordDialog(QDialog, Ui_Dialog): class PasswordDialog(QDialog, Ui_Dialog):
@ -26,7 +27,7 @@ class PasswordDialog(QDialog, Ui_Dialog):
Ui_Dialog.__init__(self) Ui_Dialog.__init__(self)
self.setupUi(self) self.setupUi(self)
settings = QSettings() settings = Settings()
un = settings.value(name+': un', QVariant('')).toString() un = settings.value(name+': un', QVariant('')).toString()
pw = settings.value(name+': pw', QVariant('')).toString() pw = settings.value(name+': pw', QVariant('')).toString()
self.gui_username.setText(un) self.gui_username.setText(un)
@ -48,7 +49,7 @@ class PasswordDialog(QDialog, Ui_Dialog):
return qstring_to_unicode(self.gui_password.text()) return qstring_to_unicode(self.gui_password.text())
def accept(self): def accept(self):
settings = QSettings() settings = Settings()
settings.setValue(self.sname+': un', QVariant(self.gui_username.text())) settings.setValue(self.sname+': un', QVariant(self.gui_username.text()))
settings.setValue(self.sname+': pw', QVariant(self.gui_password.text())) settings.setValue(self.sname+': pw', QVariant(self.gui_password.text()))
QDialog.accept(self) QDialog.accept(self)

View File

@ -15,10 +15,10 @@
import traceback, logging, collections, time import traceback, logging, collections, time
from PyQt4.QtCore import QAbstractTableModel, QMutex, QObject, SIGNAL, Qt, \ from PyQt4.QtCore import QAbstractTableModel, QMutex, QObject, SIGNAL, Qt, \
QVariant, QThread, QSettings QVariant, QThread
from PyQt4.QtGui import QIcon, QDialog from PyQt4.QtGui import QIcon, QDialog
from libprs500 import detect_ncpus from libprs500 import detect_ncpus, Settings
from libprs500.gui2 import NONE, error_dialog from libprs500.gui2 import NONE, error_dialog
from libprs500.parallel import Server from libprs500.parallel import Server
from libprs500.gui2.dialogs.job_view_ui import Ui_Dialog from libprs500.gui2.dialogs.job_view_ui import Ui_Dialog
@ -258,7 +258,7 @@ class JobManager(QAbstractTableModel):
desc = kwargs.pop('job_description', '') desc = kwargs.pop('job_description', '')
if args and hasattr(args[0], 'append') and '--verbose' not in args[0]: if args and hasattr(args[0], 'append') and '--verbose' not in args[0]:
args[0].append('--verbose') args[0].append('--verbose')
priority = self.PRIORITY[str(QSettings().value('conversion job priority', priority = self.PRIORITY[str(Settings().value('conversion job priority',
QVariant('Normal')).toString())] QVariant('Normal')).toString())]
job = self.create_job(ConversionJob, desc, slot, priority, job = self.create_job(ConversionJob, desc, slot, priority,
callable, *args, **kwargs) callable, *args, **kwargs)

View File

@ -21,10 +21,9 @@ from PyQt4.QtGui import QTableView, QProgressDialog, QAbstractItemView, QColor,
QPen, QStyle, QPainter, QLineEdit, QApplication, \ QPen, QStyle, QPainter, QLineEdit, QApplication, \
QPalette QPalette
from PyQt4.QtCore import QAbstractTableModel, QVariant, Qt, QString, \ from PyQt4.QtCore import QAbstractTableModel, QVariant, Qt, QString, \
QCoreApplication, SIGNAL, QObject, QSize, QModelIndex, \ QCoreApplication, SIGNAL, QObject, QSize, QModelIndex
QSettings
from libprs500 import iswindows from libprs500 import iswindows, Settings
from libprs500.ptempfile import PersistentTemporaryFile from libprs500.ptempfile import PersistentTemporaryFile
from libprs500.library.database import LibraryDatabase, SearchToken from libprs500.library.database import LibraryDatabase, SearchToken
from libprs500.gui2 import NONE, TableView, qstring_to_unicode from libprs500.gui2 import NONE, TableView, qstring_to_unicode
@ -115,7 +114,7 @@ class BooksModel(QAbstractTableModel):
self.read_config() self.read_config()
def read_config(self): def read_config(self):
self.use_roman_numbers = bool(QSettings().value('use roman numerals for series number', self.use_roman_numbers = bool(Settings().value('use roman numerals for series number',
QVariant(True)).toBool()) QVariant(True)).toBool())
@ -800,4 +799,4 @@ class SearchBox(QLineEdit):
self.setText(txt) self.setText(txt)
self.emit(SIGNAL('search(PyQt_PyObject, PyQt_PyObject)'), txt, False) self.emit(SIGNAL('search(PyQt_PyObject, PyQt_PyObject)'), txt, False)
self.end(False) self.end(False)
self.initial_state = False self.initial_state = False

View File

@ -16,9 +16,9 @@ import sys, logging, os, traceback, time, cPickle
from PyQt4.QtGui import QApplication, QKeySequence, QPainter, QDialog from PyQt4.QtGui import QApplication, QKeySequence, QPainter, QDialog
from PyQt4.QtCore import Qt, QObject, SIGNAL, QCoreApplication, QThread, \ from PyQt4.QtCore import Qt, QObject, SIGNAL, QCoreApplication, QThread, \
QSettings, QVariant QVariant
from libprs500 import __appname__, __version__, __author__, setup_cli_handlers, islinux from libprs500 import __appname__, __version__, __author__, setup_cli_handlers, islinux, Settings
from libprs500.ebooks.lrf.parser import LRFDocument from libprs500.ebooks.lrf.parser import LRFDocument
from libprs500.gui2 import ORG_NAME, APP_UID, error_dialog, choose_files from libprs500.gui2 import ORG_NAME, APP_UID, error_dialog, choose_files
@ -112,13 +112,13 @@ class Main(MainWindow, Ui_MainWindow):
def configure(self, triggered): def configure(self, triggered):
opts = cPickle.loads(str(QSettings().value('ebook viewer options', QVariant(cPickle.dumps(self.opts))).toString())) opts = cPickle.loads(str(Settings().value('ebook viewer options', QVariant(cPickle.dumps(self.opts))).toString()))
d = Config(self, opts) d = Config(self, opts)
d.exec_() d.exec_()
if d.result() == QDialog.Accepted: if d.result() == QDialog.Accepted:
opts.white_background = bool(d.white_background.isChecked()) opts.white_background = bool(d.white_background.isChecked())
opts.hyphenate = bool(d.hyphenate.isChecked()) opts.hyphenate = bool(d.hyphenate.isChecked())
QSettings().setValue('ebook viewer options', QVariant(cPickle.dumps(opts))) Settings().setValue('ebook viewer options', QVariant(cPickle.dumps(opts)))
def set_ebook(self, stream): def set_ebook(self, stream):
self.progress_bar.setMinimum(0) self.progress_bar.setMinimum(0)
@ -281,7 +281,7 @@ def option_parser():
return parser return parser
def normalize_settings(parser, opts): def normalize_settings(parser, opts):
settings = QSettings() settings = Settings()
saved_opts = cPickle.loads(str(settings.value('ebook viewer options', QVariant(cPickle.dumps(opts))).toString())) saved_opts = cPickle.loads(str(settings.value('ebook viewer options', QVariant(cPickle.dumps(opts))).toString()))
for opt in parser.option_list: for opt in parser.option_list:
if not opt.dest: if not opt.dest:

View File

@ -15,12 +15,12 @@
import os, sys, textwrap, collections, traceback, shutil, time import os, sys, textwrap, collections, traceback, shutil, time
from PyQt4.QtCore import Qt, SIGNAL, QObject, QCoreApplication, \ from PyQt4.QtCore import Qt, SIGNAL, QObject, QCoreApplication, \
QSettings, QVariant, QThread, QString QVariant, QThread, QString
from PyQt4.QtGui import QPixmap, QColor, QPainter, QMenu, QIcon, QMessageBox, \ from PyQt4.QtGui import QPixmap, QColor, QPainter, QMenu, QIcon, QMessageBox, \
QToolButton, QDialog QToolButton, QDialog
from PyQt4.QtSvg import QSvgRenderer from PyQt4.QtSvg import QSvgRenderer
from libprs500 import __version__, __appname__, islinux, sanitize_file_name, launch from libprs500 import __version__, __appname__, islinux, sanitize_file_name, launch, Settings
from libprs500.ptempfile import PersistentTemporaryFile from libprs500.ptempfile import PersistentTemporaryFile
from libprs500.ebooks.metadata.meta import get_metadata, get_filename_pat, set_filename_pat from libprs500.ebooks.metadata.meta import get_metadata, get_filename_pat, set_filename_pat
from libprs500.devices.errors import FreeSpaceError from libprs500.devices.errors import FreeSpaceError
@ -865,7 +865,7 @@ class Main(MainWindow, Ui_MainWindow):
_('<p>An invalid database already exists at %s, delete it before trying to move the existing database.<br>Error: %s')%(newloc, str(err))) _('<p>An invalid database already exists at %s, delete it before trying to move the existing database.<br>Error: %s')%(newloc, str(err)))
newloc = self.database_path newloc = self.database_path
self.database_path = newloc self.database_path = newloc
settings = QSettings() settings = Settings()
settings.setValue("database path", QVariant(self.database_path)) settings.setValue("database path", QVariant(self.database_path))
os.unlink(src.name) os.unlink(src.name)
except Exception, err: except Exception, err:
@ -952,7 +952,7 @@ class Main(MainWindow, Ui_MainWindow):
def read_settings(self): def read_settings(self):
settings = QSettings() settings = Settings()
settings.beginGroup("Main Window") settings.beginGroup("Main Window")
geometry = settings.value('main window geometry', QVariant()).toByteArray() geometry = settings.value('main window geometry', QVariant()).toByteArray()
self.restoreGeometry(geometry) self.restoreGeometry(geometry)
@ -965,7 +965,7 @@ class Main(MainWindow, Ui_MainWindow):
def write_settings(self): def write_settings(self):
settings = QSettings() settings = Settings()
settings.beginGroup("Main Window") settings.beginGroup("Main Window")
settings.setValue("main window geometry", QVariant(self.saveGeometry())) settings.setValue("main window geometry", QVariant(self.saveGeometry()))
settings.endGroup() settings.endGroup()

View File

@ -20,12 +20,12 @@ from PyQt4.QtGui import QListView, QIcon, QFont, QLabel, QListWidget, \
QListWidgetItem, QTextCharFormat, QApplication, \ QListWidgetItem, QTextCharFormat, QApplication, \
QSyntaxHighlighter, QCursor, QColor, QWidget QSyntaxHighlighter, QCursor, QColor, QWidget
from PyQt4.QtCore import QAbstractListModel, QVariant, Qt, QSize, SIGNAL, \ from PyQt4.QtCore import QAbstractListModel, QVariant, Qt, QSize, SIGNAL, \
QObject, QRegExp, QSettings QObject, QRegExp
from libprs500.gui2.jobs import DetailView from libprs500.gui2.jobs import DetailView
from libprs500.gui2 import human_readable, NONE, TableView, qstring_to_unicode, error_dialog from libprs500.gui2 import human_readable, NONE, TableView, qstring_to_unicode, error_dialog
from libprs500.gui2.filename_pattern_ui import Ui_Form from libprs500.gui2.filename_pattern_ui import Ui_Form
from libprs500 import fit_image, get_font_families from libprs500 import fit_image, get_font_families, Settings
from libprs500.ebooks.metadata.meta import get_filename_pat, metadata_from_filename, \ from libprs500.ebooks.metadata.meta import get_filename_pat, metadata_from_filename, \
set_filename_pat set_filename_pat
@ -303,7 +303,7 @@ class PythonHighlighter(QSyntaxHighlighter):
value = default value = default
Config[name] = value Config[name] = value
settings = QSettings() settings = Settings()
for name in ("window", "shell"): for name in ("window", "shell"):
Config["%swidth" % name] = settings.value("%swidth" % name, Config["%swidth" % name] = settings.value("%swidth" % name,
QVariant(QApplication.desktop() \ QVariant(QApplication.desktop() \