The old delimiter is now kept, when cancel button is clicked

This commit is contained in:
Benjamin K 2021-03-04 19:39:43 +01:00
parent 3ba08d1189
commit a066cee326

View file

@ -10,6 +10,8 @@ import zipfile
from concurrent.futures import Future from concurrent.futures import Future
from typing import Any, Dict, Optional from typing import Any, Dict, Optional
from qt.aqt.utils import getText
import anki.importing as importing import anki.importing as importing
import aqt.deckchooser import aqt.deckchooser
import aqt.forms import aqt.forms
@ -82,6 +84,8 @@ class ChangeMap(QDialog):
class ImportDialog(QDialog): class ImportDialog(QDialog):
_DEFAULT_FILE_DELIMITER = "\t"
def __init__(self, mw: AnkiQt, importer: Any) -> None: def __init__(self, mw: AnkiQt, importer: Any) -> None:
QDialog.__init__(self, mw, Qt.Window) QDialog.__init__(self, mw, Qt.Window)
self.mw = mw self.mw = mw
@ -122,16 +126,23 @@ class ImportDialog(QDialog):
self.showMapping() self.showMapping()
def onDelimiter(self) -> None: def onDelimiter(self) -> None:
str = (
getOnlyText( # Open a modal dialog to enter an delimiter
# Todo/Idea Constrain the maximum width, so it doesnt take up that much screen space
delim, ok = getText(
tr(TR.IMPORTING_BY_DEFAULT_ANKI_WILL_DETECT_THE), tr(TR.IMPORTING_BY_DEFAULT_ANKI_WILL_DETECT_THE),
self, self,
help=HelpPage.IMPORTING, help=HelpPage.IMPORTING,
) )
or "\t"
) # If the modal dialog has been confirmed, update the delimiter
str = str.replace("\\t", "\t") if ok:
if len(str) > 1: # Check if the entered value is valid and if not fallback to default
# at the moment every single character entry as well as '\t' is valid
delim = delim if len(delim) > 0 else self._DEFAULT_FILE_DELIMITER
delim = delim.replace("\\t", "\t") # un-escape it
if len(delim) > 1:
showWarning( showWarning(
tr(TR.IMPORTING_MULTICHARACTER_SEPARATORS_ARE_NOT_SUPPORTED_PLEASE) tr(TR.IMPORTING_MULTICHARACTER_SEPARATORS_ARE_NOT_SUPPORTED_PLEASE)
) )
@ -139,11 +150,15 @@ class ImportDialog(QDialog):
self.hideMapping() self.hideMapping()
def updateDelim() -> None: def updateDelim() -> None:
self.importer.delimiter = str self.importer.delimiter = delim
self.importer.updateDelimiter() self.importer.updateDelimiter()
self.updateDelimiterButtonText()
self.showMapping(hook=updateDelim) self.showMapping(hook=updateDelim)
self.updateDelimiterButtonText()
else:
# If the operation has been canceled, do not do anything
pass
def updateDelimiterButtonText(self) -> None: def updateDelimiterButtonText(self) -> None:
if not self.importer.needDelimiter: if not self.importer.needDelimiter: