mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix Book details popup window not being updated when editing metadata in the main window
This commit is contained in:
parent
f1c3e38dc9
commit
8e202e4e2b
@ -79,7 +79,7 @@ class BookInfo(QDialog):
|
|||||||
self.view = view
|
self.view = view
|
||||||
self.current_row = None
|
self.current_row = None
|
||||||
self.refresh(row)
|
self.refresh(row)
|
||||||
self.view.selectionModel().currentChanged.connect(self.slave)
|
self.view.model().new_bookdisplay_data.connect(self.slave)
|
||||||
self.fit_cover.stateChanged.connect(self.toggle_cover_fit)
|
self.fit_cover.stateChanged.connect(self.toggle_cover_fit)
|
||||||
self.ns = QShortcut(QKeySequence('Alt+Right'), self)
|
self.ns = QShortcut(QKeySequence('Alt+Right'), self)
|
||||||
self.ns.activated.connect(self.next)
|
self.ns.activated.connect(self.next)
|
||||||
@ -110,7 +110,7 @@ class BookInfo(QDialog):
|
|||||||
saved_layout = (bytearray(self.saveGeometry()), bytearray(self.splitter.saveState()))
|
saved_layout = (bytearray(self.saveGeometry()), bytearray(self.splitter.saveState()))
|
||||||
gprefs.set('book_info_dialog_layout', saved_layout)
|
gprefs.set('book_info_dialog_layout', saved_layout)
|
||||||
ret = QDialog.done(self, r)
|
ret = QDialog.done(self, r)
|
||||||
self.view.selectionModel().currentChanged.disconnect(self.slave)
|
self.view.model().new_bookdisplay_data.disconnect(self.slave)
|
||||||
self.view = self.link_delegate = self.gui = None
|
self.view = self.link_delegate = self.gui = None
|
||||||
self.closed.emit(self)
|
self.closed.emit(self)
|
||||||
return ret
|
return ret
|
||||||
@ -124,10 +124,6 @@ class BookInfo(QDialog):
|
|||||||
ci = self.view.currentIndex()
|
ci = self.view.currentIndex()
|
||||||
if ci.isValid():
|
if ci.isValid():
|
||||||
self.view.model().current_changed(ci, ci)
|
self.view.model().current_changed(ci, ci)
|
||||||
self.cover_pixmap = QPixmap()
|
|
||||||
self.cover_pixmap.loadFromData(data)
|
|
||||||
if self.fit_cover.isChecked():
|
|
||||||
self.resize_cover()
|
|
||||||
|
|
||||||
def details_size_hint(self):
|
def details_size_hint(self):
|
||||||
return QSize(350, 550)
|
return QSize(350, 550)
|
||||||
@ -139,25 +135,18 @@ class BookInfo(QDialog):
|
|||||||
def cover_view_resized(self, event):
|
def cover_view_resized(self, event):
|
||||||
QTimer.singleShot(1, self.resize_cover)
|
QTimer.singleShot(1, self.resize_cover)
|
||||||
|
|
||||||
def slave(self, current, previous):
|
def slave(self, mi):
|
||||||
if current.row() != previous.row():
|
self.refresh(mi.row_number, mi)
|
||||||
row = current.row()
|
|
||||||
self.refresh(row)
|
|
||||||
|
|
||||||
def move(self, delta=1):
|
def move(self, delta=1):
|
||||||
self.view.selectionModel().currentChanged.disconnect(self.slave)
|
|
||||||
try:
|
|
||||||
idx = self.view.currentIndex()
|
idx = self.view.currentIndex()
|
||||||
if idx.isValid():
|
if idx.isValid():
|
||||||
m = self.view.model()
|
m = self.view.model()
|
||||||
ni = m.index(idx.row() + delta, idx.column())
|
ni = m.index(idx.row() + delta, idx.column())
|
||||||
if ni.isValid():
|
if ni.isValid():
|
||||||
self.view.setCurrentIndex(ni)
|
|
||||||
self.refresh(ni.row())
|
|
||||||
if self.view.isVisible():
|
if self.view.isVisible():
|
||||||
self.view.scrollTo(ni)
|
self.view.scrollTo(ni)
|
||||||
finally:
|
self.view.setCurrentIndex(ni)
|
||||||
self.view.selectionModel().currentChanged.connect(self.slave)
|
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
self.move()
|
self.move()
|
||||||
@ -190,12 +179,12 @@ class BookInfo(QDialog):
|
|||||||
tt += _('Cover size: %(width)d x %(height)d')%dict(width=sz.width(), height=sz.height())
|
tt += _('Cover size: %(width)d x %(height)d')%dict(width=sz.width(), height=sz.height())
|
||||||
self.cover.setToolTip(tt)
|
self.cover.setToolTip(tt)
|
||||||
|
|
||||||
def refresh(self, row):
|
def refresh(self, row, mi=None):
|
||||||
if isinstance(row, QModelIndex):
|
if isinstance(row, QModelIndex):
|
||||||
row = row.row()
|
row = row.row()
|
||||||
if row == self.current_row:
|
if row == self.current_row and mi is None:
|
||||||
return
|
return
|
||||||
mi = self.view.model().get_book_display_info(row)
|
mi = self.view.model().get_book_display_info(row) if mi is None else mi
|
||||||
if mi is None:
|
if mi is None:
|
||||||
# Indicates books was deleted from library, or row numbers have
|
# Indicates books was deleted from library, or row numbers have
|
||||||
# changed
|
# changed
|
||||||
|
@ -494,6 +494,7 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
mi.field_metadata = self.db.field_metadata
|
mi.field_metadata = self.db.field_metadata
|
||||||
mi.path = self.db.abspath(idx, create_dirs=False)
|
mi.path = self.db.abspath(idx, create_dirs=False)
|
||||||
mi.format_files = self.db.new_api.format_files(self.db.data.index_to_id(idx))
|
mi.format_files = self.db.new_api.format_files(self.db.data.index_to_id(idx))
|
||||||
|
mi.row_number = idx
|
||||||
try:
|
try:
|
||||||
mi.marked = self.db.data.get_marked(idx, index_is_id=False)
|
mi.marked = self.db.data.get_marked(idx, index_is_id=False)
|
||||||
except:
|
except:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user