mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #8672 (Converted format disappears while adding a new format)
This commit is contained in:
parent
360fd374c7
commit
5d4c738862
@ -429,10 +429,12 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
||||
old_extensions.add(ext)
|
||||
for ext in new_extensions:
|
||||
self.db.add_format(self.row, ext, open(paths[ext], 'rb'), notify=False)
|
||||
db_extensions = set([f.lower() for f in self.db.formats(self.row).split(',')])
|
||||
dbfmts = self.db.formats(self.row)
|
||||
db_extensions = set([f.lower() for f in (dbfmts.split(',') if dbfmts
|
||||
else [])])
|
||||
extensions = new_extensions.union(old_extensions)
|
||||
for ext in db_extensions:
|
||||
if ext not in extensions:
|
||||
if ext not in extensions and ext in self.original_formats:
|
||||
self.db.remove_format(self.row, ext, notify=False)
|
||||
|
||||
def show_format(self, item, *args):
|
||||
@ -576,6 +578,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
||||
self.orig_date = qt_to_dt(self.date.date())
|
||||
|
||||
exts = self.db.formats(row)
|
||||
self.original_formats = []
|
||||
if exts:
|
||||
exts = exts.split(',')
|
||||
for ext in exts:
|
||||
@ -586,6 +589,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
||||
if size is None:
|
||||
continue
|
||||
Format(self.formats, ext, size, timestamp=timestamp)
|
||||
self.original_formats.append(ext.lower())
|
||||
|
||||
|
||||
self.initialize_combos()
|
||||
|
@ -472,6 +472,7 @@ class FormatsManager(QWidget): # {{{
|
||||
def initialize(self, db, id_):
|
||||
self.changed = False
|
||||
exts = db.formats(id_, index_is_id=True)
|
||||
self.original_val = set([])
|
||||
if exts:
|
||||
exts = exts.split(',')
|
||||
for ext in exts:
|
||||
@ -482,6 +483,7 @@ class FormatsManager(QWidget): # {{{
|
||||
if size is None:
|
||||
continue
|
||||
Format(self.formats, ext, size, timestamp=timestamp)
|
||||
self.original_val.add(ext.lower())
|
||||
|
||||
def commit(self, db, id_):
|
||||
if not self.changed:
|
||||
@ -500,11 +502,12 @@ class FormatsManager(QWidget): # {{{
|
||||
for ext in new_extensions:
|
||||
db.add_format(id_, ext, open(paths[ext], 'rb'), notify=False,
|
||||
index_is_id=True)
|
||||
db_extensions = set([f.lower() for f in db.formats(id_,
|
||||
index_is_id=True).split(',')])
|
||||
dbfmts = db.formats(id_, index_is_id=True)
|
||||
db_extensions = set([f.lower() for f in (dbfmts.split(',') if dbfmts
|
||||
else [])])
|
||||
extensions = new_extensions.union(old_extensions)
|
||||
for ext in db_extensions:
|
||||
if ext not in extensions:
|
||||
if ext not in extensions and ext in self.original_val:
|
||||
db.remove_format(id_, ext, notify=False, index_is_id=True)
|
||||
|
||||
self.changed = False
|
||||
|
Loading…
x
Reference in New Issue
Block a user