From 92636156158cea253959c38efe589b0fd4f64808 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 6 May 2010 08:26:11 -0600 Subject: [PATCH 1/4] Add option to bulk metadata edit to remove stored conversion settings --- src/calibre/gui2/dialogs/metadata_bulk.py | 3 +++ src/calibre/gui2/dialogs/metadata_bulk.ui | 14 +++++++++++++- src/calibre/gui2/library.py | 4 ++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 788c8681a6..2a7db38ee9 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -151,6 +151,9 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): new_authors = string_to_authors(title) self.db.set_authors(id, new_authors, notify=False) + if self.remove_conversion_settings.isChecked(): + self.db.delete_conversion_options(id, 'PIPE') + self.changed = True for w in getattr(self, 'custom_column_widgets', []): w.commit(self.ids) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.ui b/src/calibre/gui2/dialogs/metadata_bulk.ui index a69c02dbc4..f5084fd883 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.ui +++ b/src/calibre/gui2/dialogs/metadata_bulk.ui @@ -253,7 +253,7 @@ - + &Swap title and author @@ -273,6 +273,18 @@ Book A will have series number 1 and Book B series number 2. + + + + Remove stored conversion settings for the selected books. + +Future conversion of these books will use the default settings. + + + Remove &stored conversion settings for the selected books + + + diff --git a/src/calibre/gui2/library.py b/src/calibre/gui2/library.py index 9ba58963c4..896624c966 100644 --- a/src/calibre/gui2/library.py +++ b/src/calibre/gui2/library.py @@ -11,8 +11,8 @@ from PyQt4.QtGui import QTableView, QAbstractItemView, QColor, \ QPainterPath, QLinearGradient, QBrush, \ QPen, QStyle, QPainter, QStyleOptionViewItemV4, \ QIcon, QImage, QMenu, QSpinBox, QDoubleSpinBox, \ - QStyledItemDelegate, QCompleter, QIntValidator, \ - QDoubleValidator, QComboBox + QStyledItemDelegate, QCompleter, \ + QComboBox from PyQt4.QtCore import QAbstractTableModel, QVariant, Qt, pyqtSignal, \ SIGNAL, QObject, QSize, QModelIndex, QDate From 887ee0b32c5640948b0572e896ae6d19c0d56e0b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 6 May 2010 09:19:06 -0600 Subject: [PATCH 2/4] Optional views remember their sizes when closed and re-opened --- src/calibre/gui2/sidebar.py | 13 +++++++++++-- src/calibre/gui2/widgets.py | 18 +++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/sidebar.py b/src/calibre/gui2/sidebar.py index 375aafbaa2..d6b58f165d 100644 --- a/src/calibre/gui2/sidebar.py +++ b/src/calibre/gui2/sidebar.py @@ -147,12 +147,21 @@ class SideBar(QToolBar): tb_state = dynamic.get('tag_browser_state', None) if tb_state is not None: self.horizontal_splitter.restoreState(tb_state) + tb_last_open_state = dynamic.get('tag_browser_last_open_state', None) + if tb_last_open_state is not None and \ + not self.horizontal_splitter.is_side_index_hidden: + self.horizontal_splitter.restoreState(tb_last_open_state) bi_state = dynamic.get('book_info_state', None) if bi_state is not None: self.vertical_splitter.restoreState(bi_state) - self.horizontal_splitter.initialize() - self.vertical_splitter.initialize() + bi_last_open_state = dynamic.get('book_info_last_open_state', None) + if bi_last_open_state is not None and \ + not self.vertical_splitter.is_side_index_hidden: + self.vertical_splitter.restoreState(bi_last_open_state) + + self.horizontal_splitter.initialize(name='tag_browser') + self.vertical_splitter.initialize(name='book_info') self.view_status_changed('book_info', not self.vertical_splitter.is_side_index_hidden) self.view_status_changed('tag_browser', not diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py index 33fff1bfcb..4b61677b12 100644 --- a/src/calibre/gui2/widgets.py +++ b/src/calibre/gui2/widgets.py @@ -14,7 +14,7 @@ from PyQt4.Qt import QListView, QIcon, QFont, QLabel, QListWidget, \ QMenu, QStringListModel, QCompleter, QStringList from calibre.gui2 import human_readable, NONE, TableView, \ - error_dialog, pixmap_to_data + error_dialog, pixmap_to_data, dynamic from calibre.gui2.dialogs.job_view_ui import Ui_Dialog from calibre.gui2.filename_pattern_ui import Ui_Form from calibre import fit_image @@ -991,7 +991,9 @@ class Splitter(QSplitter): def createHandle(self): return SplitterHandle(self.orientation(), self) - def initialize(self): + def initialize(self, name=None): + if name is not None: + self._name = name for i in range(self.count()): h = self.handle(i) if h is not None: @@ -1014,13 +1016,23 @@ class Splitter(QSplitter): self.double_clicked(None) def double_clicked(self, handle): + visible = not self.is_side_index_hidden sizes = list(self.sizes()) if 0 in sizes: idx = sizes.index(0) sizes[idx] = 80 else: sizes[self.side_index] = 0 - self.setSizes(sizes) + + if visible: + dynamic.set(self._name + '_last_open_state', str(self.saveState())) + self.setSizes(sizes) + else: + state = dynamic.get(self._name+ '_last_open_state', None) + if state is not None: + self.restoreState(state) + else: + self.setSizes(sizes) self.initialize() From 1d2043815b63c31ff407079fe5fb48e819658310 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 6 May 2010 09:27:23 -0600 Subject: [PATCH 3/4] Fix #5408 (allow customization of the view command) --- src/calibre/gui2/ui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 392e6428eb..62178c4fc4 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -355,7 +355,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.view_menu = QMenu() self.view_menu.addAction(_('View')) ac = self.view_menu.addAction(_('View specific format')) - ac.setShortcut(Qt.AltModifier+Qt.Key_V) + ac.setShortcut((Qt.ControlModifier if isosx else Qt.AltModifier)+Qt.Key_V) self.action_view.setMenu(self.view_menu) self.delete_menu = QMenu() From 440eb3f438940fdd0c3733cf04e0dc4bd79865d6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 6 May 2010 09:47:42 -0600 Subject: [PATCH 4/4] Make 0.6.x work with db and settings from 0.7.x --- src/calibre/gui2/library.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/calibre/gui2/library.py b/src/calibre/gui2/library.py index 3fe1cbc908..da6b03737d 100644 --- a/src/calibre/gui2/library.py +++ b/src/calibre/gui2/library.py @@ -186,6 +186,7 @@ class BooksModel(QAbstractTableModel): QAbstractTableModel.__init__(self, parent) self.db = None self.column_map = config['column_map'] + self.column_map = [x for x in self.column_map if x in self.headers] self.editable_cols = ['title', 'authors', 'rating', 'publisher', 'tags', 'series', 'timestamp', 'pubdate'] self.default_image = QImage(I('book.svg')) @@ -202,6 +203,7 @@ class BooksModel(QAbstractTableModel): def read_config(self): self.use_roman_numbers = config['use_roman_numerals_for_series_number'] cols = config['column_map'] + cols = [x for x in cols if x in self.headers] if cols != self.column_map: self.column_map = cols self.reset()