Зачетное задание
Написать редактор шестнадцатеричного представления файлов, основанный на утилите xxd (входит в состав vim, например; в linux — ставится вместе с vim по зависимостям).
Правила сдачи
В качестве отчёта принимается ссылка на индивидуальный git-репозиторий (порядок коммитов произвольный) в виде комментария тут
- Время сдачи определяется по времени коммита
- В течение двух часов необходимо сделать минимальное задание.
- Если вы сделали только минимальное задание, оно проверяется на копиасту
- Главный предмет оценки — полнота выполнения задания и качество кода
- Если вы не успели сделать задание за два часа, или вам просто интересно ☺, можно делать его дальше, добавляя опции из необязательного задания
Указать в REDME.md (цитируя дословно) список опций, который вы реализовали дополнительно
- Расширенное задание оценивается по тем же принципам из расчёта +1 опция в час
- Последний срок коммитов — +9 часов со времени старта зачёта
Начало: 12:12 0606/2020, окончание — 21:12 0606/2020
Минимальное задание
В программе должны присутствовать:
- Кнопка open + файловый диалог
- Название файла (где-то на поверхности окна) ☺
- редактируемое окно с xxd-кодом (используется xxd -g1), в которое помещается код без переносов
- Кнопка save (используется xxd -r )
- Определение ошибок при открытии/сохранении
Hint: потестируйте на файлах, недоступных для записи, и на недоступных для чтения тоже
Допустимо использовать не xxd, а hexdump
- при условии, что проверяются ошибки обратного преобразования при сохранении
Примерный вид окна минимального задания (цвет воспроизводить не надо ☺):
Документация по tkinter.Text:
Опции
- Используется не tkinter (curses/pygtk/pyqt/wxpython)
- Скролл-бар + Кнопка save as
- Обработка параметров командной строки: ничего, входной файл, входной и выходной файл.
- Undo/Redo + две кнопки
- Поиск по тексту с полем ввода поискового запроса
- Выделение найденного текста
- Поиск с заменой (спрашивается подтверждение)
- Открытие не всего файла (указание диапазона)
- Выделение изменённого текста
- Раскраска текста (адреса-значения-комментарии)
Выбор формата представления (минимум три варианта из того что поддерживает xxd)
Автоматическое переформатирование текста после выбора формата (например, с помощью .OptionMenu; должно работать, если текста ещё нет)
- Выделение синтаксических ошибок (не-цифр, удаление цифр, порчи пробелов и т. п.)
- Ввод только шестнадцатеричных цифр
- Запрет изменения не-цифровых полей
- Обновление посимвольной части справа при редактировании
- Возможность ввести символ справа и обновление чисел