mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
ToC Editor: Ignore in succession clicks on the OK and Cancel buttons to avoid accidentally closing the window when finishing creating a new entry
This commit is contained in:
parent
016a62b95e
commit
fad59ba7c7
@ -16,6 +16,7 @@ from qt.core import (
|
|||||||
QWidget, pyqtSignal
|
QWidget, pyqtSignal
|
||||||
)
|
)
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
from time import monotonic
|
||||||
|
|
||||||
from calibre.constants import TOC_DIALOG_APP_UID, islinux, iswindows
|
from calibre.constants import TOC_DIALOG_APP_UID, islinux, iswindows
|
||||||
from calibre.ebooks.oeb.polish.container import AZW3Container, get_container
|
from calibre.ebooks.oeb.polish.container import AZW3Container, get_container
|
||||||
@ -988,6 +989,7 @@ class TOCEditor(QDialog): # {{{
|
|||||||
|
|
||||||
def __init__(self, pathtobook, title=None, parent=None, prefs=None, write_result_to=None):
|
def __init__(self, pathtobook, title=None, parent=None, prefs=None, write_result_to=None):
|
||||||
QDialog.__init__(self, parent)
|
QDialog.__init__(self, parent)
|
||||||
|
self.last_reject_at = self.last_accept_at = -1000
|
||||||
self.write_result_to = write_result_to
|
self.write_result_to = write_result_to
|
||||||
self.prefs = prefs or te_prefs
|
self.prefs = prefs or te_prefs
|
||||||
self.pathtobook = pathtobook
|
self.pathtobook = pathtobook
|
||||||
@ -1052,6 +1054,9 @@ class TOCEditor(QDialog): # {{{
|
|||||||
self.stacks.setCurrentIndex(2)
|
self.stacks.setCurrentIndex(2)
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
|
if monotonic() - self.last_accept_at < 1:
|
||||||
|
return
|
||||||
|
self.last_accept_at = monotonic()
|
||||||
if self.stacks.currentIndex() == 2:
|
if self.stacks.currentIndex() == 2:
|
||||||
self.toc_view.update_item(*self.item_edit.result)
|
self.toc_view.update_item(*self.item_edit.result)
|
||||||
self.prefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
self.prefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
||||||
@ -1079,6 +1084,9 @@ class TOCEditor(QDialog): # {{{
|
|||||||
def reject(self):
|
def reject(self):
|
||||||
if not self.bb.isEnabled():
|
if not self.bb.isEnabled():
|
||||||
return
|
return
|
||||||
|
if monotonic() - self.last_reject_at < 1:
|
||||||
|
return
|
||||||
|
self.last_reject_at = monotonic()
|
||||||
if self.stacks.currentIndex() == 2:
|
if self.stacks.currentIndex() == 2:
|
||||||
self.prefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
self.prefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
||||||
self.stacks.setCurrentIndex(1)
|
self.stacks.setCurrentIndex(1)
|
||||||
|
@ -10,6 +10,7 @@ from qt.core import (
|
|||||||
QSize, QStackedWidget, QStyledItemDelegate, Qt, QTimer, QTreeWidget,
|
QSize, QStackedWidget, QStyledItemDelegate, Qt, QTimer, QTreeWidget,
|
||||||
QTreeWidgetItem, QVBoxLayout, QWidget, pyqtSignal
|
QTreeWidgetItem, QVBoxLayout, QWidget, pyqtSignal
|
||||||
)
|
)
|
||||||
|
from time import monotonic
|
||||||
|
|
||||||
from calibre.ebooks.oeb.polish.toc import commit_toc, get_toc
|
from calibre.ebooks.oeb.polish.toc import commit_toc, get_toc
|
||||||
from calibre.gui2 import error_dialog, make_view_use_window_background
|
from calibre.gui2 import error_dialog, make_view_use_window_background
|
||||||
@ -26,6 +27,7 @@ class TOCEditor(QDialog):
|
|||||||
|
|
||||||
def __init__(self, title=None, parent=None):
|
def __init__(self, title=None, parent=None):
|
||||||
QDialog.__init__(self, parent)
|
QDialog.__init__(self, parent)
|
||||||
|
self.last_reject_at = self.last_accept_at = -1000
|
||||||
|
|
||||||
t = title or current_container().mi.title
|
t = title or current_container().mi.title
|
||||||
self.book_title = t
|
self.book_title = t
|
||||||
@ -64,6 +66,9 @@ class TOCEditor(QDialog):
|
|||||||
self.stacks.setCurrentIndex(1)
|
self.stacks.setCurrentIndex(1)
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
|
if monotonic() - self.last_accept_at < 1:
|
||||||
|
return
|
||||||
|
self.last_accept_at = monotonic()
|
||||||
if self.stacks.currentIndex() == 1:
|
if self.stacks.currentIndex() == 1:
|
||||||
self.toc_view.update_item(*self.item_edit.result)
|
self.toc_view.update_item(*self.item_edit.result)
|
||||||
tprefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
tprefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
||||||
@ -87,6 +92,9 @@ class TOCEditor(QDialog):
|
|||||||
def reject(self):
|
def reject(self):
|
||||||
if not self.bb.isEnabled():
|
if not self.bb.isEnabled():
|
||||||
return
|
return
|
||||||
|
if monotonic() - self.last_reject_at < 1:
|
||||||
|
return
|
||||||
|
self.last_reject_at = monotonic()
|
||||||
if self.stacks.currentIndex() == 1:
|
if self.stacks.currentIndex() == 1:
|
||||||
tprefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
tprefs['toc_edit_splitter_state'] = bytearray(self.item_edit.splitter.saveState())
|
||||||
self.stacks.setCurrentIndex(0)
|
self.stacks.setCurrentIndex(0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user