From 2c8ac926b1968d835d1992787ef408d08d1005a9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 13 Jan 2014 11:24:41 +0530 Subject: [PATCH] Refactor dialog base class into its own module for easier re-use --- src/calibre/gui2/tweak_book/char_select.py | 2 +- .../gui2/tweak_book/editor/insert_resource.py | 44 +++-------------- src/calibre/gui2/tweak_book/widgets.py | 48 +++++++++++++++++++ 3 files changed, 55 insertions(+), 39 deletions(-) create mode 100644 src/calibre/gui2/tweak_book/widgets.py diff --git a/src/calibre/gui2/tweak_book/char_select.py b/src/calibre/gui2/tweak_book/char_select.py index 4ce9890c02..5a973efa3e 100644 --- a/src/calibre/gui2/tweak_book/char_select.py +++ b/src/calibre/gui2/tweak_book/char_select.py @@ -21,7 +21,7 @@ from calibre.constants import ispy3, plugins, cache_dir from calibre.gui2 import NONE from calibre.gui2.widgets2 import HistoryLineEdit2 from calibre.gui2.tweak_book import tprefs -from calibre.gui2.tweak_book.editor.insert_resource import Dialog +from calibre.gui2.tweak_book.widgets import Dialog if not ispy3: if sys.maxunicode >= 0x10FFFF: diff --git a/src/calibre/gui2/tweak_book/editor/insert_resource.py b/src/calibre/gui2/tweak_book/editor/insert_resource.py index 855e5ce184..4157183793 100644 --- a/src/calibre/gui2/tweak_book/editor/insert_resource.py +++ b/src/calibre/gui2/tweak_book/editor/insert_resource.py @@ -10,11 +10,11 @@ import sys, os from functools import partial from PyQt4.Qt import ( - QDialog, QGridLayout, QDialogButtonBox, QSize, QListView, QStyledItemDelegate, - QLabel, QPixmap, QApplication, QSizePolicy, QAbstractListModel, QVariant, - Qt, QRect, QPainter, QModelIndex, QSortFilterProxyModel, QLineEdit, - QToolButton, QIcon, QFormLayout, pyqtSignal, QTreeWidget, QTreeWidgetItem, - QVBoxLayout, QMenu, QInputDialog) + QGridLayout, QSize, QListView, QStyledItemDelegate, QLabel, QPixmap, + QApplication, QSizePolicy, QAbstractListModel, QVariant, Qt, QRect, + QPainter, QModelIndex, QSortFilterProxyModel, QLineEdit, QToolButton, + QIcon, QFormLayout, pyqtSignal, QTreeWidget, QTreeWidgetItem, QVBoxLayout, + QMenu, QInputDialog) from calibre import fit_image from calibre.constants import plugins @@ -23,43 +23,11 @@ from calibre.ebooks.metadata.book.base import Metadata from calibre.gui2 import NONE, choose_files, error_dialog from calibre.gui2.languages import LanguagesEdit from calibre.gui2.tweak_book import current_container, tprefs +from calibre.gui2.tweak_book.widgets import Dialog from calibre.gui2.tweak_book.file_list import name_is_ok from calibre.utils.localization import get_lang, canonicalize_lang from calibre.utils.icu import sort_key -class Dialog(QDialog): - - def __init__(self, title, name, parent=None): - QDialog.__init__(self, parent) - self.setWindowTitle(title) - self.name = name - self.bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) - self.bb.accepted.connect(self.accept) - self.bb.rejected.connect(self.reject) - - self.setup_ui() - - self.resize(self.sizeHint()) - geom = tprefs.get(name + '-geometry', None) - if geom is not None: - self.restoreGeometry(geom) - if hasattr(self, 'splitter'): - state = tprefs.get(name + '-splitter-state', None) - if state is not None: - self.splitter.restoreState(state) - - def accept(self): - tprefs.set(self.name + '-geometry', bytearray(self.saveGeometry())) - if hasattr(self, 'splitter'): - tprefs.set(self.name + '-splitter-state', bytearray(self.splitter.saveState())) - QDialog.accept(self) - - def reject(self): - tprefs.set(self.name + '-geometry', bytearray(self.saveGeometry())) - if hasattr(self, 'splitter'): - tprefs.set(self.name + '-splitter-state', bytearray(self.splitter.saveState())) - QDialog.reject(self) - class ChooseName(Dialog): # {{{ ''' Chooses the filename for a newly imported file, with error checking ''' diff --git a/src/calibre/gui2/tweak_book/widgets.py b/src/calibre/gui2/tweak_book/widgets.py new file mode 100644 index 0000000000..606e699bd7 --- /dev/null +++ b/src/calibre/gui2/tweak_book/widgets.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2014, Kovid Goyal ' + +from PyQt4.Qt import (QDialog, QDialogButtonBox) + +from calibre.gui2.tweak_book import tprefs + +class Dialog(QDialog): + + def __init__(self, title, name, parent=None): + QDialog.__init__(self, parent) + self.setWindowTitle(title) + self.name = name + self.bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + self.bb.accepted.connect(self.accept) + self.bb.rejected.connect(self.reject) + + self.setup_ui() + + self.resize(self.sizeHint()) + geom = tprefs.get(name + '-geometry', None) + if geom is not None: + self.restoreGeometry(geom) + if hasattr(self, 'splitter'): + state = tprefs.get(name + '-splitter-state', None) + if state is not None: + self.splitter.restoreState(state) + + def accept(self): + tprefs.set(self.name + '-geometry', bytearray(self.saveGeometry())) + if hasattr(self, 'splitter'): + tprefs.set(self.name + '-splitter-state', bytearray(self.splitter.saveState())) + QDialog.accept(self) + + def reject(self): + tprefs.set(self.name + '-geometry', bytearray(self.saveGeometry())) + if hasattr(self, 'splitter'): + tprefs.set(self.name + '-splitter-state', bytearray(self.splitter.saveState())) + QDialog.reject(self) + + def setup_ui(self): + raise NotImplementedError('You must implement this method in Dialog subclasses') +