Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Текстовый редактор — Microsoft Word

Описание проекта

В рамках лабораторной работы выполняется имитация разработки кроссплатформенного текстового процессора, аналогичного Microsoft Word. Основная цель — получить навыки планирования архитектуры программного продукта и работы с системой контроля версий. Проект разбит на логические модули, каждый из которых отвечает за конкретную функциональность. Ниже представлен подробный план разработки.


План разработки (модули проекта)

1. Главное окно и ленточный интерфейс (Ribbon UI)

Разработка основного окна приложения. Главный элемент — это «лента» с вкладками («Главная», «Вставка», «Разметка страницы» и т.д.), как в современном Word. На ленте размещаются кнопки, выпадающие списки и галереи стилей. Ниже ленты — рабочая область с линейками и самим документом. Задача модуля — отрисовать этот интерфейс и реагировать на нажатия пользователя (например, при нажатии «Копировать» — передать команду модулю редактирования). Интерфейс должен быть интуитивно понятным и масштабируемым под разные разрешения экрана.

2. Область документа и базовая работа с текстом

Это сердце редактора. Модуль отвечает за отображение текста на экране, управление курсором (мигающий, меняет форму при выделении), обработку ввода с клавиатуры. Сюда же входит базовая логика выделения текста мышью или клавиатурой, а также операции «Вырезать/Копировать/Вставить» и, конечно, система отмены действий (Undo/Redo), без которой редактор не имеет смысла. Модель документа должна храниться в памяти в виде структуры, позволяющей быстро выполнять эти операции.

3. Форматирование символов и абзацев

Модуль инструментов для изменения внешнего вида текста. Сюда относится:

  • Шрифты: выбор гарнитуры, размера, цвета, начертания (жирный, курсив, подчёркнутый).
  • Абзацы: выравнивание (слева, по центру, по ширине, справа), отступы слева и справа, отступ первой строки, междустрочный интервал.
  • Заливка и границы абзацев: возможность задать фон абзаца и обрамление. Когда пользователь меняет настройки в интерфейсе (пункт 1), этот модуль применяет их к текущему выделению или ко всему документу.

4. Стили оформления

Более умная версия форматирования. Разработка механизма стилей (например, «Заголовок 1», «Обычный текст»). Стиль — это набор настроек шрифта и абзаца, сохраненный под одним именем. Модуль должен позволять пользователю применять стиль к абзацу, изменять существующие стили и создавать новые. Изменение стиля должно автоматически обновлять весь текст, к которому он применён. Это основа для создания структурированных документов (оглавлений, списков).

5. Работа с изображениями и фигурами

Возможность вставить в текст картинку (с диска или через буфер обмена). После вставки картинку нужно уметь выделять, менять её размер (перетаскивая углы) и примерно позиционировать относительно текста (например, «обтекание сверху и снизу» или «по контуру»). В упрощенном варианте — также поддержка вставки простых геометрических фигур (прямоугольник, линия, овал) с возможностью изменения цвета заливки и контура.

6. Сохранение, открытие и экспорт файлов

Модуль, отвечающий за то, чтобы наши документы можно было сохранить и потом открыть. Основная задача — поддержка собственного упрощенного формата (например, на основе ZIP и XML, как настоящий .docx).
Важное расширение — совместимость с другими офисными приложениями: необходимо реализовать импорт/экспорт в форматы .doc (бинарный формат старых версий Word), .odt (OpenDocument) и .rtf (Rich Text Format).
Также добавляется возможность сохранять документ как обычный текст (.txt) и экспортировать его в PDF (для этого можно использовать готовые библиотеки).
Поддержка HTML: модуль должен обеспечивать корректное отображение и импорт HTML-содержимого: при вставке HTML из буфера обмена или открытии HTML-файла форматирование (заголовки, списки, таблицы) должно преобразовываться во внутреннее представление документа и наоборот — при сохранении в HTML структура и стили должны максимально сохраняться.
Модуль должен корректно обрабатывать ошибки (повреждённый файл, отсутствие прав доступа).

7. Предпечатная подготовка

Модуль, который позволяет увидеть, как документ будет выглядеть на бумаге. Нужно реализовать:

  • Настройки страницы: размер бумаги (A4, A5, Letter), ориентация (книжная/альбомная), поля (верхнее, нижнее, левое, правое).
  • Режим предварительного просмотра: отдельное окно, где документ отображается постранично с учётом настроек страницы.
  • Диалог печати: вызов системного окна печати с выбором принтера, количества копий и диапазона страниц.

8. Поиск и замена

Разработка диалогового окна «Найти и заменить». Пользователь вводит слово, программа находит все его вхождения в документе и подсвечивает их. В режиме «Заменить» — находит слово и заменяет его на другое. Базовые опции: учёт регистра, поиск только целого слова, направление поиска (вперёд/назад). Для навигации нужны кнопки «Найти далее» и «Найти ранее», а также возможность заменить сразу все вхождения.

9. Проверка правописания, грамматики и семантики (тезаурус)

В современном редакторе обязательна не только орфографическая проверка. Модуль выполняет:

  • Орфографию: сверку слов со встроенным словарём (первая версия — только русский язык). Незнакомые слова подчёркиваются красной волнистой линией, по клику правой кнопкой предлагаются варианты замены.
  • Грамматику и стилистику: анализ согласования слов, падежей, времён; выявление тяжёлых для восприятия конструкций (например, слишком длинных предложений).
  • Семантический анализ и тезаурус: проверка смысловой связности текста, обнаружение повторяющихся слов, неоднозначных формулировок. Тезаурус предоставляет пользователю списки синонимов и антонимов для выделенного слова, помогая улучшить стиль и точность выражений (аналог функции «Тезаурус» в Microsoft Word). В дальнейшем планируется подключение облачных сервисов для более глубокого анализа.

10. Таблицы

Реализация одного из самых сложных, но нужных элементов. Модуль должен позволять вставлять таблицу с заданным количеством строк и столбцов. Внутри таблицы должен работать ввод текста и базовое форматирование. Также нужны базовые операции с таблицей:

  • добавить или удалить строку/столбец;
  • объединить ячейки;
  • изменить ширину столбцов и высоту строк (перетаскиванием границ);
  • применить границы и заливку к ячейкам.

11. Настройки и темы оформления

Интерфейс должен быть настраиваемым. Модуль отвечает за:

  • Смену цветовой темы: светлая/тёмная (возможно, ещё контрастная).
  • Настройку панели быстрого доступа: пользователь сам решает, какие кнопки у него всегда перед глазами.
  • Единицы измерения на линейках: сантиметры, дюймы, пункты.
  • Язык интерфейса (локализация): переключение между русским и английским языками с возможностью добавления других языков через файлы ресурсов.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages