anki/qt/aqt/forms
RumovZ 6da5e5b042
CSV import/export fixes and features (#1898)
* Fix footer moving upwards

* Fix column detection

Was broken because escaped line breaks were not considered.
Also removes delimiter detection on `#columns:` line. User must use tabs
or set delimiter beforehand.

* Add CSV preview

* Parse `#tags column:`

* Optionally export deck and notetype with CSV

* Avoid clones in CSV export

* Prevent bottom of page appearing under footer (dae)

* Increase padding to 1em (dae)

With 0.5em, when a vertical scrollbar is shown, it sits right next to
the right edge of the content, making it look like there's no right
margin.

* Experimental changes to make table fit+scroll (dae)

- limit individual cells to 15em, and show ellipses when truncated
- limit total table width to body width, so that inner table is shown
with scrollbar
- use class rather than id - ids are bad practice in Svelte components,
as more than one may be displayed on a single page

* Skip importing foreign notes with filtered decks

Were implicitly imported into the default deck before.
Also some refactoring to fetch deck ids and names beforehand.

* Hide spacer below hidden field mapping

* Fix guid being replaced when updating note

* Fix dupe identity check

Canonify tags before checking if dupe is identical, but only add update
tags later if appropriate.

* Fix deck export for notes with missing card 1

* Fix note lines starting with `#`

csv crate doesn't support escaping a leading comment char. :(

* Support import/export of guids

* Strip HTML from preview rows

* Fix initially set deck if current is filtered

* Make isHtml toggle reactive

* Fix `html_to_text_line()` stripping sound names

* Tweak export option labels

* Switch to patched rust-csv fork

Fixes writing lines starting with `#`, so revert 5ece10ad05f331.

* List column options with first column field

* Fix flag for exports with HTML stripped
2022-06-09 10:28:01 +10:00
..
__init__.py Optionally restore original position and reset counts when forgetting (#1714) 2022-03-09 16:51:41 +10:00
about_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
about.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
about.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
addcards_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
addcards.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
addcards.ui Remove unused actions from ui files (#1655) 2022-02-11 10:15:36 +10:00
addfield_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
addfield.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
addfield.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
addmodel_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
addmodel.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
addmodel.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
addonconf_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
addonconf.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
addonconf.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
addons_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
addons.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
addons.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
browser_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
browser.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
browser.ui View menu (#1668) 2022-02-17 16:31:46 +10:00
browserdisp_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
browserdisp.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
browserdisp.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
browseropts_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
browseropts.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
browseropts.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
build_ui_qt5.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
build_ui_qt6.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
build_ui.py remove a few unnecessary PyQt workarounds 2021-10-24 14:24:35 +10:00
BUILD.bazel improve PyQt install 2021-10-23 10:56:17 +10:00
changemap_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
changemap.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
changemap.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
changemodel_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
changemodel.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
changemodel.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
clayout_top_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
clayout_top.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
clayout_top.ui Add minimumContentsLength property to templatesBox (#1781) 2022-04-09 13:55:03 +10:00
compile.bzl build all the UI files in one go 2021-10-16 09:20:20 +10:00
customstudy_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
customstudy.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
customstudy.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
dconf_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
dconf.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
dconf.ui split deck description into separate screen linked from overview 2021-04-22 21:03:16 +10:00
debug_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
debug.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
debug.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
editaddon_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
editaddon.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
editaddon.ui update designer references 2020-11-17 19:55:18 +10:00
editcurrent_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
editcurrent.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
editcurrent.ui update designer references 2020-11-17 19:55:18 +10:00
edithtml_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
edithtml.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
edithtml.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
emptycards_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
emptycards.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
emptycards.ui update designer references 2020-11-17 19:55:18 +10:00
exporting_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
exporting.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
exporting.ui CSV import/export fixes and features (#1898) 2022-06-09 10:28:01 +10:00
fields_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
fields_web_qt6.py Add a flag to allow loading the fields dialog in a web view (#1706) 2022-03-03 22:45:26 +10:00
fields_web.py Add a flag to allow loading the fields dialog in a web view (#1706) 2022-03-03 22:45:26 +10:00
fields_web.ui Add a flag to allow loading the fields dialog in a web view (#1706) 2022-03-03 22:45:26 +10:00
fields.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
fields.ui Editor Field Descriptions (#1476) 2021-11-06 09:42:48 +10:00
filtered_deck_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
filtered_deck.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
filtered_deck.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
finddupes_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
finddupes.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
finddupes.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
findreplace_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
findreplace.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
findreplace.ui switch to new-style PyQt scoped enums and Qt6 2021-10-15 12:57:19 +10:00
forget_qt6.py Optionally restore original position and reset counts when forgetting (#1714) 2022-03-09 16:51:41 +10:00
forget.py Optionally restore original position and reset counts when forgetting (#1714) 2022-03-09 16:51:41 +10:00
forget.ui Optionally restore original position and reset counts when forgetting (#1714) 2022-03-09 16:51:41 +10:00
getaddons_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
getaddons.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
getaddons.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
icons.qrc fix generated code symlinks again 2022-01-24 16:59:37 +10:00
importing_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
importing.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
importing.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
main_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
main.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
main.ui Backup improvements (#1728) 2022-03-21 19:40:42 +10:00
modelopts_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
modelopts.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
modelopts.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
models_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
models.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
models.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
preferences_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
preferences.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
preferences.ui Expose new import/export code via prefs checkbox 2022-06-02 16:50:32 +10:00
preview_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
preview.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
preview.ui initial Bazel conversion 2020-11-01 14:26:58 +10:00
profiles_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
profiles.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
profiles.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
progress_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
progress.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
progress.ui update designer references 2020-11-17 19:55:18 +10:00
reposition_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
reposition.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
reposition.ui require reposition to start at 0; cap maximum 2021-06-01 10:09:24 +10:00
setgroup_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
setgroup.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
setgroup.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
setlang_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
setlang.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
setlang.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
stats_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
stats.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
stats.ui update designer references 2020-11-17 19:55:18 +10:00
studydeck_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
studydeck.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
studydeck.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
synclog_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
synclog.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
synclog.ui initial Bazel conversion 2020-11-01 14:26:58 +10:00
taglimit_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
taglimit.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
taglimit.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00
template_qt6.py fix generated code symlinks again 2022-01-24 16:59:37 +10:00
template.py generate pyqt6 forms 2021-10-15 12:57:19 +10:00
template.ui update TR references in .ui files 2021-03-26 15:03:51 +10:00