Outwiker 3.0.0.874 unstable

Outwiker 3.0.0.874 unstable

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

Большинство проблем, о которых пойдет речь далее, связаны с упаковкой OutWiker в snap-пакет под Linux и не касаются пользователей Windows. После очередного обновления в инструментах для сборки snap-пакетов почему-то в контейнере перестала собираться из исходников библиотека wxPython. Для OutWiker это критично, потому что по непонятной причине бинарная сборка библиотеки для той версии, которая используется в OutWiker (wxPython 4.0.7), почему-то собрана под старую версию движка WebKit. Ошибка при сборке возникала очень загадочная, на этапе, когда библиотека уже скомпилировалась и полученные файлы раскидывались по папкам. Раньше никогда с такой проблемой не сталкивался, до сих пор библиотека компилировалась достаточно легко, хоть и долго (на моем стареньком i7-3770 сборка занимает чуть меньше часа). А этот процесс приходилось повторять не один раз, перебирая способы сборки и пытаясь угадать, что же пошло не так. Даже на форум snapcraft-еров написал, вдруг кто с таким сталкивался, wxPython — все-таки известная библиотека.

Как потом оказалось, эта проблема была описана в багтрекере wxPython и уже исправлена в следующей версии wxPython 4.1, но переходить на новую версию я пока не готов, потому что там многое может сломаться, а мне сейчас хочется довести OutWiker до релиза. К счастью, проблема решается добавлением нескольких строк в скрипт сборки wxPython. Пришлось сделать свой форк wxPython 4.0.7 и внести туда нужные исправления. После чего для ускорения сборки snap собрал wheel-пакет из wxPython и закачал его себе на сайт, а при сборке snap библиотека теперь устанавливается не из PyPi, а качается с этого сайта. Как временный костыль, пока не перейду на wxPython 4.1, сойдет.

Затем в процессе обновления справки заметил, что в ней не работают некоторые ссылки, и с этим были связаны две другие проблемы, о которых сейчас расскажу. Как вы, наверное, знаете, в OutWiker на страницы можно ссылаться двумя способами: через их идентификатор (что-то вроде page://__550a383e-0e52-40e9-b23d-6fbd769751f0) или по пути: /Страница 1/Страница 2/… Лучше использовать первый способ, потому что тогда даже если вы переименуете страницу, на которую ссылаетесь, или перенесете ее в другую родительскую заметку, ссылки останутся рабочими. Проблемы были связаны со вторым типом ссылок, когда на страницу ссылаются по именам.

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

Вторая проблема объединяла в себе ссылки по путям и сборку под Linux. Оказалось, что такие ссылки принципиально отказывались работать в OutWiker, который был запущен из snap-пакета. В приложение просто не приходило сообщение о том, что пользователь щелкнул на такую ссылку. Причем, если запускать из исходников, то все работает, а в snap — нет. Я сначала винил в этом библиотеку WebKitGTK, думал, что такая проблема возникает из-за того, что у меня в системе стоит более новая версия WebKitGTK, а в snap попадает более старая. Несколько дней потратил на то, чтобы компилировать из исходников WebKitGTK при сборке snap-пакетов. Там тоже были свои особенности, но которые в итоге удалось преодолеть. Правда, оказалось, что это все было зря — даже с последней версией WebKitGTK проблема оставалась.

Тогда решил подойти к этой проблеме с другой стороны и изменить формат ссылок в создаваемом HTML-файле. Если раньше ссылки на страницы выглядели как <a href=»/Страница 1/Страница 2/»>…</a>, то теперь они будут выглядеть так: <a href=»page://Страница 1/Страница 2/«>…</a>. С точки зрения пользователя ничего не поменялось, изменилось только внутреннее представление ссылок. Причем с удивлением узнал, что оказывается, когда-то я уже сделал, чтобы OutWiker понимал ссылки вида page://Страница 1/Страница 2. Наверное, я собирался уже давно сделать что-то подобное, но потом почему-то переключился на другие задачи.

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

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

OutWiker с социальных сетях:

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

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

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

Leave a comment

Subscribe without commenting