OutWiker 3.1.0.894 beta

OutWiker 3.1.0.894 beta

Всем привет!
Пора возвращаться к разработке OutWiker-а, и сегодня я выложил новую бета-версию. Эта версия под номером 3.1.0.894 немного задержалась, потому что тяжело в свободное от основной работы время заниматься несколькими проектами. Я человек однозадачный, и способен сосредоточиться только на одном проекте. Сейчас, пока буду писать этот пост, сам буду вспоминать, что же я там сделал. Дело в том, что основные заметные изменения были сделаны уже давно, а в последнюю неделю я возился с системой сборки, что обычному пользователю не особо интересно.

В этой версии я продолжаю добавлять возможности для работы с прикрепленными файлами. И теперь в OutWiker вложенные файлы можно переименовывать. Это делается с помощью кнопки на панели с вложениями (см. картинку ниже), либо с помощью горячей клавиши F2, если фокус приложения стоит в окне с прикрепленными файлами, либо как в обычном проводнике, когда вы щелкаете на файл дважды, но с небольшой задержкой.

Еще добавил кнопку для выбора всех прикрепленных файлов (это кнопка со звездочкой, которая находится около кнопки для переименования файлов), также все вложения можно выделить с помощью горячей клавиши Ctrl+A.

Тут я должен признаться в одной проблеме, которую мне пока побороть не удалось. Дело в том, что под Linux (в Windows такой проблемы нет) приложение почему-то иногда падает, если после переименования файлов длина файла удлиняется настолько, что панель вынуждена увеличивать ширину столбцов. Падение происходит где-то в недрах библиотеки wx, а не в коде на Python. Я долго пытался локализовать проблему и попытаться ее обойти, но пока безуспешно. В принципе, я готов даже переписать этот компонент самостоятельно, а не пользоваться библиотечным, это может иметь смысл и для некоторых других задумок на будущее, но на этот шаг надо решиться.

Пожалуй, это все изменения, которые должен заметить обычный пользователь.

А теперь расскажу о том, что изменилось в системе сборки OutWiker. Но сначала немного предыстории. Я несколько месяцев не прикасался к коду Outwiker-а, а когда решил, что надо бы выложить новую версию, заметил, что на моем домашнем компе в Manjaro Linux (кстати, очень хороший дистрибутив) уже по умолчанию стоит Python 3.10. Обычно переход на следующую версию Python не вызывает проблем, но не в этот раз. В стандартной библиотеке к этой версии разработчики сделали одно изменение, не совместимое с предыдущими версиями — они перенесли некоторые классы из пакета collections в collections.abc. В принципе, предупреждения об этом были в предыдущих версиях, но в OutWiker используются несколько библиотек, которые давно не обновлялись, и вот они как раз и сломались. Одна библиотека (cacheman) является зависимостью библиотеки CyHunspell для проверки орфографии, а другая библиотека — Fabric3, которую я использую для запуска задач сборки (грубо говоря, альтернатива Makefile). К тому же для вышеупомянутой библиотеки CyHunspell до сих пор нет сборки для Python 3.10 (хотя она собирается под эту версию без проблем).

Настрадавшись (в очередной раз) от сторонних библиотек, я понял, что надо брать инициативу в свои руки, делать форки и править код под себя. В общем, так я и сделал для библиотек CacheMan и CyHunspell. Эти библиотеки теперь подключаются как субмодули git и при использовании Pipenv собираются уже из локальной папки. В CacheMan я поправил несколько строк, чтобы эта библиотека могла работать в Python 3.10 (совместимость с предыдущими версиями Python сохранилась), автору исходной библиотеки тоже отправил pull request, с изменениями, но он пока не отреагировал, хотя теперь меня это мало беспокоит.

Что касается Fabric, то тут пришлось пойти на более радикальный шаг. Дело в том, что в принципе, эта библиотека задач сборки избыточна. Это очень мощная библиотека, которая позволяет не только запускать задачи локально, но и работать с удаленными серверами по SSH (по сути она для этого и создавалась). Некоторое время назад автор выпустил новую версию Fabric, не совместимую по API с предыдущей версией. Новая версия использует другую библиотеку для запуска задач — invoke. А для задач, связанных с OutWiker, возможностей, которые предоставляет голый Invoke, вполне достаточно. В итоге я переписал скрипты сборки, чтобы использовалась библиотека Invoke вместо Fabric.

В результате все хорошо, OutWiker теперь без проблем работает в Python 3.10 и в предыдущих версиях.

В этой версии не стал обновлять библиотеки, используемые в плагинах, хотя некоторые библиотеки там надо бы обновить, но этим я займусь в следующей версии, которая, надеюсь, не так задержится.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 4, средняя оценка: 5,00)
Загрузка...

Leave a comment

Subscribe without commenting