-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHISTORY.txt
More file actions
305 lines (245 loc) · 19.8 KB
/
Copy pathHISTORY.txt
File metadata and controls
305 lines (245 loc) · 19.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
v0.1.5
1. Добавлен экспорт в PNG
- Новый пункт меню "File > Save as PNG..." (Ctrl+Shift+P)
- Экспорт в одну длинную картинку шириной формата A4 (1240px при 150 DPI)
- Без разрыва на страницы - весь документ в одном изображении
- Поддержка LaTeX формул и всех элементов Markdown
- Корректная работа с большими документами
--------
v0.1.4
1. Исправление отображения MathJax-формул
- Добавлены CSS-правила для корректного отображения MathJax в обеих темах:
- Прозрачный фон для всех контейнеров (`mjx-container`, `.MathJax` и дочерних элементов).
- Цвет текста в темной теме изменён на `#e0e0e0`.
- Исправлены визуальные артефакты для:
- Векторов (`mjx-stretchy-h`, `mjx-stretchy-v`);
- Корней (`mjx-surd`);
- Рамок/боксов (`mjx-box`, `mjx-mrow`).
- Стили применены глобально ко всем соответствующим элементам MathJax.
2. Выравнивание display-формул
- Формулы в тегах `\[ ... \]` теперь выравниваются по **левому краю**, а не по центру.
- Реализовано в `editor.py` (около строки 790).
3. Стилизация заголовков
- Заголовки (`#`, `##` и т.д.) больше не отображаются синим цветом.
- Их цвет теперь соответствует основному тексту:
- Светлая тема: `#333`;
- Темная тема: `#e0e0e0`.
4. Исправление экспорта PDF в темной теме
- Ранее PDF при экспорте с темной темой содержал смесь темных и светлых фонов, что делало его нечитаемым при печати.
- Добавлен медиа-запрос `@media print`, принудительно применяющий **светлую тему при печати**:
- Белый фон;
- Черный текст;
- Независимо от текущей темы в редакторе.
5. Поддержка локального контента с удалёнными ресурсами (MathJax CDN)
- В упакованной версии (`exe`) QWebEngineView блокировал загрузку MathJax с CDN.
- Включены настройки WebEngine в `editor.py`:
- `LocalContentCanAccessRemoteUrls = True`;
- `JavascriptEnabled = True`;
- `LocalStorageEnabled = True`.
6. Синтаксическая подсветка изображений
- HTML-теги `<img>` и Markdown-изображения `![...]()()` теперь корректно выделяются **синим цветом**.
- Поддержка синтаксиса проверена и подтверждена.
v0.1.2
1. Добавлен пункт меню "Save as PDF..." в меню File с горячей клавишей Ctrl+P
2. Добавлены необходимые импорты:
- QWebEngineSettings для настроек веб-движка
- QMarginsF для отступов страницы
- QPrinter для печати
- QPageLayout, QPageSize для настройки страницы
3. Реализован метод save_as_pdf():
- Предлагает имя файла на основе текущего markdown файла
- Открывает диалог сохранения файла
- Настраивает layout страницы (A4, портретная ориентация, отступы 15мм)
- Использует асинхронный метод printToPdf() с callback
- Обрабатывает ошибки и показывает статус в статус-баре
- Сохраняет PDF со всем содержимым preview (включая LaTeX, изображения, стили)
4. Особенности реализации:
- Асинхронность: printToPdf() работает асинхронно, используется callback для обработки результата
- Полное содержимое: PDF включает все что отображается в preview - LaTeX формулы (отрендеренные MathJax), изображения, таблицы, код с подсветкой
- Настройка страницы: A4 формат с отступами для удобного чтения
- Обработка ошибок: Показывает диалог с ошибкой если что-то пошло не так
5. Как работает:
- Пользователь выбирает File → Save as PDF...
- Открывается диалог выбора места сохранения
- Показывается статус "Exporting to PDF..."
- QWebEngineView рендерит текущее содержимое preview в PDF
- PDF сохраняется в выбранный файл
- Показывается сообщение об успешном сохранении
v0.0.9
--------
1. Локальные изображения теперь отображаются:
- Добавлен базовый URL при загрузке HTML в QWebEngineView
- Если файл открыт - базовый URL = папка с файлом
- Если файл не открыт - базовый URL = текущая рабочая директория
- Поддержка относительных путей: pictures/02.png, ../logo.png
- Поддержка абсолютных путей: C:/path/to/image.png
- Поддержка URL из интернета
2. Контент занимает всю ширину окна:
- Убрано ограничение max-width: 800px
- Изменено margin: 20px auto на margin: 0; padding: 20px
- Добавлен box-sizing: border-box для правильного расчета размеров
- Контент динамически адаптируется при изменении ширины окна
3. Адаптивные изображения:
- max-width: 100% - изображения не шире контейнера
- height: auto - сохранение пропорций
- Автоматическое масштабирование под ширину окна
v0.0.8
--------
1. Добавлены CSS стили для подсветки синтаксиса:
- Светлая тема: стиль Visual Studio (синие ключевые слова, красные строки, зеленые комментарии)
- Темная тема: стиль VS Code Dark+ (светло-синие ключевые слова, оранжевые строки, зеленые комментарии)
2. Настроена конфигурация Markdown:
- guess_lang: True - автоматическое определение языка
- use_pygments: True - использование Pygments для подсветки
- Поддержка всех популярных языков: Python, JavaScript, C++, C, Rust, Go, Pascal и др.
3. Цветовая схема:
- Ключевые слова, функции, типы, переменные, строки, комментарии - все имеют свои цвета
- Цвета адаптируются под текущую тему
v0.0.7
--------
1. Упрощение редактора
- Удалена синтаксическая подсветка Markdown.
- Весь текст отображается моноширинным шрифтом **Consolas 11pt**.
- Внешний вид приведён к стилю обычного блокнота.
2. Синхронизация прокрутки
- Реализована **пропорциональная синхронизация** между редактором (слева) и предпросмотром (справа).
- Добавлена задержка **100 мс** для плавности.
- Используется флаг `sync_scroll_enabled` для предотвращения рекурсии.
- Реализованы методы:
- `sync_editor_to_preview()` — синхронизация из редактора в предпросмотр.
- `sync_preview_to_editor()` — заготовка для обратной синхронизации.
- Используется JavaScript в WebView через `runJavaScript()` для управления прокруткой.
3. Номера строк и улучшенный редактор
- Создан класс `LineNumberArea`:
- Отображает номера строк с помощью `QPainter`.
- Поддерживает светлую и тёмную темы.
- Создан класс `TextEditWithLineNumbers` (на основе `QPlainTextEdit`):
- Автоматически управляет областью номеров строк.
- Подсвечивает текущую строку (цвет зависит от темы).
- Обрабатывает прокрутку и изменение размера.
- Номера строк:
- Выравниваются по правому краю.
- Ширина области адаптируется под количество строк.
- Используется тот же шрифт (`Consolas 11pt`), что и в основном тексте.
4. Стилизация интерфейса под темы
- **Тёмная тема**:
- Меню, выпадающие списки и строка состояния: белый текст на тёмно-сером фоне.
- Цвета палитры (`Light`, `Midlight`, `Dark`, `Mid`, `Shadow`) настроены корректно.
- Исправлен цвет `HighlightedText` (теперь белый).
- **Светлая тема**:
- Чёрный текст на светлых фонах с аккуратными границами.
- Эффекты при наведении и нажатии добавлены для обоих тем.
5. Улучшения отображения блоков кода
- Устранены большие отступы:
- `margin: 20px 0` → `margin: 0`
- `padding: 15px` → `padding: 10px`
- Фоны блоков кода теперь гармонируют с темой:
- **Тёмная тема**: `#1a1a1a` (фон), `#e0e0e0` (текст), inline-код — розовый (`#ff9ea8`).
- **Светлая тема**: `#f0f0f0` (фон).
- Добавлено `!important` ко всем стилям тёмной темы, чтобы избежать перезаписи
v0.0.6
--------
1. Добавлены новые функции для правильного парсинга:
- find_matching_brace() - находит соответствующую закрывающую скобку с учетом вложенности
- extract_latex_commands() - извлекает LaTeX команды с правильной обработкой всех аргументов
2. Улучшена обработка сложных конструкций:
- Теперь корректно обрабатываются вложенные фигурные скобки
- Поддержка опциональных аргументов в квадратных скобках [...]
- Правильная обработка команд с несколькими аргументами
3. Создан файл LATEX_RULES.md с четкими правилами:
- Когда можно использовать команды без обрамления
- Когда обязательно нужно $...$
- Примеры правильного и неправильного использования
v0.0.5
--------
1. Добавлена поддержка всех вариантов LaTeX-синтаксиса:
- \[ ... \] для display формул (стандартный LaTeX)
- \( ... \) для inline формул (стандартный LaTeX)
- Одиночные LaTeX команды без обрамления: \text{см}, \frac{20}, \vec{a}, \implies, \cdot, \uparrow, \overrightarrow{AB}, \boxed{...} и т.д.
2. Расширена конфигурация MathJax:
- Добавлены все математические пакеты (ams, color, cancel, mhchem и др.)
- Настроены макросы для \implies и \iff
- Улучшена обработка HTML-тегов
3. Улучшена предварительная обработка:
- Регулярные выражения теперь распознают более 20 типов LaTeX команд
- Все LaTeX команды защищаются от обработки Markdown
- Поддержка вложенных конструкций
4. Созданы тестовые файлы:
- test_latex_extended.md - с примерами всех вариантов формул
- README_RU.md - документация по использованию на русском
v0.0.4
--------
Что было исправлено:
1. Добавлена предварительная обработка LaTeX формул:
- Формулы защищаются от обработки Markdown с помощью placeholder'ов
- Display формулы: $$...$$ сохраняются как $$$...$$$ для MathJax
- Inline формулы: $...$ остаются как $...$
2. Исправлена конфигурация MathJax:
- inlineMath: [['$', '$']] - для inline формул
- displayMath: [['$$$', '$$$']] - для display формул
- Убраны конфликтующие настройки
3. Упрощен HTML-шаблон:
- Убрано двойное экранирование фигурных скобок
- MathJax загружается асинхронно
- Конфигурация вынесена в отдельный блок перед загрузкой библиотеки
v0.0.3
--------
============================================
ОПИСАНИЕ ВСЕХ ФУНКЦИЙ И ВНЕСЕННЫХ ИЗМЕНЕНИЙ
============================================
1. ИСПРАВЛЕНИЕ ПРОБЛЕМЫ С КОДИРОВКОЙ:
- Добавлено меню "Encoding" с выбором популярных кодировок
- Реализована ручная смена кодировки через меню
- При переключении кодировки файл автоматически перечитывается
- Сохраняется позиция курсора и прокрутки при смене кодировки
- Добавлена статусная метка, отображающая текущую кодировку
- Поддержка основных кодировок для кириллицы: UTF-8, Windows-1251, KOI8-R и др.
- Сохранение выбранной кодировки в настройках приложения
2. РЕАЛИЗАЦИЯ ТЕМНОЙ ТЕМЫ:
- Добавлен переключатель "Dark Mode" в меню View (Ctrl+D)
- Полная настройка цветовой схемы для редактора и превью
- Автоматическое обновление подсветки синтаксиса при переключении темы
- Сохранение состояния темы между сессиями через QSettings
- Специальные цвета для темной темы во всех элементах интерфейса
- Темные стили для превью Markdown (заголовки, код, цитаты и т.д.)
3. УЛУЧШЕНИЕ ПОДСВЕТКИ СИНТАКСИСА:
- Полная реализация подсветки кода
- Добавлено расширение codehilite для правильной обработки блоков кода
- Реализована детальная цветовая схема для всех элементов кода:
* Комментарии, ключевые слова, строки, числа и т.д.
* Поддержка различных языков программирования
- Автоматическое применение темных стилей в темной теме
- Улучшенная подсветка для Markdown-синтаксиса (заголовки, жирный, курсив и т.д.)
4. ИСПРАВЛЕНИЕ ОШИБОК И ПРЕДУПРЕЖДЕНИЙ:
- Добавлено подавление предупреждений DeprecationWarning в начале скрипта
- Исправлены ошибки с экранированием фигурных скобок в HTML-шаблоне
- Улучшена обработка ошибок при открытии и сохранении файлов
- Добавлена обработка ошибок кодировки с пользовательскими сообщениями
- Исправлен импорт QSettings (теперь из PyQt5.QtCore)
5. ДОПОЛНИТЕЛЬНЫЕ УЛУЧШЕНИЯ:
- Сохранение настроек приложения между запусками (тема, кодировка)
- Улучшенный интерфейс с разделением на панели редактора и превью
- Поддержка LaTeX-формул через MathJax в превью
- Все горячие клавиши работают как в стандартных текстовых редакторах
- Возможность скрыть панель превью для большего рабочего пространства
- Статусная строка с информацией о текущих операциях
6. ТЕХНИЧЕСКИЕ УЛУЧШЕНИЯ:
- Использование QSettings для хранения пользовательских настроек
- Добавлен debounce-таймер для оптимизации обновления превью
- Улучшенная обработка ошибок с пользовательскими сообщениями
- Поддержка всех основных операций с файлами (новый, открыть, сохранить)
- Автоматическое определение кодировки при открытии файлов
v 0.0.2
--------
Что изменилось:
- Улучшенное определение кодировки:
- Сначала проверяем наличие BOM (Byte Order Mark) для UTF-8
- Если уверенность chardet ниже 70% или определена ASCII, но файл содержит не-ASCII символы
- Автоматически пробуем распространённые кодировки для кириллицы:
- cp1251 (Windows-1251) - основная кодировка для русского в Windows
- koi8-r - альтернативная кодировка для кириллицы
- utf-8 - как fallback
- latin1 - для общего случая
Безопасное чтение:
- Если ни одна кодировка не подошла, используем errors='replace' чтобы избежать падения программы
- Проверяем первые 1000 байт на наличие не-ASCII символов