OutWiker 4.0.0.942. Планы и первая альфа-версия (original) (raw)

После недавнего релиза решил, что пришло время более глобальных изменений, и поэтому следующая версия будет иметь номер 4.0. На данный момент это единственное глобальное изменение, заметное пользователям. 🙂 Но зато это повод не соблюдать обратную совместимость плагинов, обновить внутреннюю версию API для них и заняться подчисткой кода от древних окаменелостей. Именно с этого я и начал. Еще в прошлой версии я начал переделку внутреннего API и пометил код, который надо будет удалить, как только обратная совместимость станет неактуальной. Вот этот код и поудалял.

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

Во-первых, мне очень хочется ускорить открытие дерева заметок. Для начала я залез в дебри кода, которые не менялись, наверное, с первых версий программы. Тогда я немного перемудрил с загрузкой дерева заметок, сейчас все это переделал, и код стал попроще, но на скорость это не должно сказаться. Зато теперь код написан так, что в теории его можно было бы переписать еще раз, чтобы открытие дерева заметок было бы многопоточным. К сожалению, из-за однопоточной природы Python (GIL и все дела) делать это на чистом Python бесполезно. И я задумался, не написать ли мне загрузку страниц, например, на Rust-е. Но там надо будет помучиться с вызовом такого кода из Python-а и сборкой под разные операционки. Как альтернатива, может быть для ускорения тут поможет асинхронщина, надо тоже пробовать.

Второе направление развития — это обновление движка HTML-рендера под Windows. Сейчас используется движок Internet Explorer, но wxPython умеет работать и с более новым движком Edge (на основе Chrome). Я уже попробовал его подключить и получил неожиданную проблему, связанную с тем, что новый движок перехватывает нажатия всех горячих клавиш, и поэтому они перестают работать в основном приложении. Правда, нажатия клавиш можно перехватить в HTML-движке с помощью JavaScript и передать информацию об этом наружу, я уже это попробовал — работает, но только теперь надо научиться информацию об этих горячих клавишах обрабатывать и вызывать тот код, который должен быть вызван. Раньше этим занимался сам wxPython и Windows, а сейчас нужный код придется вызывать самостоятельно. В общем, тут тоже еще нужны эксперименты. Пока изменения с новым HTML-рендером висят в отдельной ветке исходников.

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

Думаю, что в новой версии откажусь от поддержки Windows 7, а то из-за него программа застряла на Python 3.8, и все меньше библиотек его поддерживают. Хотя, с другой стороны, я использую некоторые библиотеки, которые давно заброшены, и неизвестно, насколько их можно будет запустить под более новыми версиями Python. Это тоже элемент исследования. А если отказываться от поддержки Windows 7, то следующим шагом может стать отказ от поддержки 32-битных систем, и начать собирать OutWiker как 64-битное приложение. Пока особых преимуществ для перехода на 64 бита я не вижу кроме того, что для wxPython сейчас есть только 64-битные готовые сборки, а для поддержки 32 бит, его приходится собирать из исходников, но это не такая большая проблема.

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

На данный момент текущая сборка включает в себя почищенный код, новую версию API и плагины, которые могут работать с новой версией. Наверняка совместимость плагинов в рамках разработки версии 4.0 еще буду ломать. Еще поправлен один баг (спасибо Wave_Blessed с форума ru-board.com за его обнаружение). Но в целом новая версия должна работать так же, как и текущая стабильная (даже лучше с учетом исправленного бага), но это не точно :).

Последнюю версию OutWiker как обычно можно скачать на этой странице.

Подписывайтесь на OutWiker в социальных сетях:

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

Загрузка...