Мое решение, которое реализует функционал корзины.
1. Введем понятие "Режим корзины" - это такой режим работы приложения MyTetra, в котором работа происходит с удаленными записями. Вместо них при открытии приложения, в корневой папке находятся 2 ветки с названиями "корзина" и "восстановление".
В ветке "корзина" находятся все записи, которые были удалены. Ветка "Восстановление" изначально пуста. Пользователь должен самостоятельно найти среди удаленных записей те, которые следует восстановить и переместить их в ветку "восстановление". После перемещения этих записей следует произвести экспорт ветки "восстановление" в отдельную папку. Затем следует выйти из программы и сменить "Режим корзины" на "Нормальный". Загрузить программу в "Нормальном режиме" и произвести импорт отобранных для восстановления записей.
2. Для перевода программы в "Режим корзины" следует:
- Заранее создать папку к примеру "Архивные копии". Единоразово.
- В эту папку произвести архивирование следующих файлов:
mytetra.xml (файл основной базы данных)
conf.ini (из каталога программы)
Там будет склад файлов к примеру 18052017204023archive.zip
Перед каждым переводом программы в "Режим корзины" будет создаваться новый архив и добавляться в эту папку. Это действие будет производится автоматически, скриптом.
3. Перед переводом программы в "Режим корзины" рядом с папкой "trash" создается папка "trash_export" (в случае если папка уже существовала, она очищается). В этой папке создаются подпапки "data" "trash". В папке "data" создаются все нужные файлы для работы полноценной базы данных. Для каждой удаленной записи из корзины создаются соответствующие папки в подпапке "base". Данные берутся из файлов *_mytetra.xml и аккумулируются в одном новом файле mytetra.xml.
4. Файл "conf.ini" переименовывается в "conf.ini.tmp". Вместо него создается новый файл, в котором прописаны пути к базе данных "trash_export".
5. Запускается программа. В ней пользователь производит необходимые манипуляции и выгружает восстанавливаемые записи в отдельную папку.
6. После выхода из программы пользователь запускает скрипт перевода программы в "Основной режим". Производится переименование "conf.ini" в "conf.ini.exp.tmp" и файла "conf.ini.tmp" в "conf.ini".
7. Запускается программа и в ней пользователь производит импорт отобранных записей и распределяет их по своим местам.