вторник, 3 декабря 2019 г.

Разделы в текстовом документе LibreOffice Writer. Скрытие раздела по условию

О том, что такое разделы, как их создавать и редактировать, я коротко писал в этом посте.
У разделов есть чудесная возможность, которая может помочь автоматизировать всякие хитрые документы (у меня это договоры), в которых некоторый текст может меняться в зависимости от ключевых условий. Например, в договорах обычно прописывают порядок оплат. И аванс по договору может выплачиваться, а может и НЕ выплачиваться. Соответственно условия оплаты в этих двух случаях отличаются.
Что хотелось бы автоматизировать в данном случае: чтобы в шаблоне договора можно было в определённом месте написать ключевое слово "выплачивается"/"не выплачивается", в соответствии с чем определённый кусок текста в договоре становился бы таким, каким надо для каждого случая.
Давайте сделаем это в Writer! Система немного запутанная, но нужно просто понять логику и всё становится просто.
Завязан нужный нам функционал на такой штуке, как переменная, которая и будет управлять скрытием наших разделов с кусками нужного текста. Переменная - это термин из области программирования. Означает он (в нашем случае) - "имя, с которым может быть связано значение". Переменная эта создаётся внутри документа Writer и существует только и исключительно внутри конкретно этого документа Writer!
Чтобы создать переменную, установим курсор в тексте в нужное место и откроем диалог "Поля", используя пункт меню Вставка->Поле->Ещё поля или сочетание клавиш Ctrl+F2. На вкладке "Переменная" слева в списке "Тип" выделите "Задать переменную". В нижней части диалога в поле "Имя" задайте имя переменной (я задал слово аванс) и в поле "Значение" нужное первоначальное значение (я задал слово выплачивается). А теперь ВАЖНЫЙ нюанс! Если вы хотите работать со словами, то в правой части диалога в списке "Формат" вид переменной ДОЛЖЕН быть "Текст"!
Нажмите кнопку "Вставить". В тексте появится слово "выплачивается" подсвеченное, как и все поля, серым цветом.
Далее нам нужно настроить наши разделы так, чтобы они скрывались/отображались в зависимости от того, какое текущее слово-значение у нашей переменной "аванс".
Так как у нас два варианта текста, то и разделов с соответствующим текстом должно быть два. Тут однако есть нюанс! Когда раздел скрыт на его месте остается пустая строка-знак абзаца! Это неудобно: пустая строка в договорах не приветствуется, да и удалить эту псевдо-пустую строку можно легко. Причем эта пустая строка будет прыгать в зависимости от того, какой раздел скрыт.
Внимание! Скрытый раздел НИКАК в тексте не выделяется, вы должны помнить о том, что он существует!
Обойти это можно путем создания одного родительского раздела, внутри которого и разместить оба наших раздела с текстом.
Вставляем раздел, используя пункт меню Вставка->Раздел. Назовём его "основной". Жмём ОК.
Затем пишем текст, который относится к варианту "выплачивается" внутри раздела "основной". Вставляем две пустых строки после текста (нужно для удобства последующих манипуляций). Выделяем текст (без пустой строки после текста!) и опять выбираем пункт меню Вставка->Раздел. Задаём имя раздела "выплачивается". Жмём ОК. Вставится раздел внутри раздела.
Ставим курсор на вторую пустую строку после раздела "выплачивается" и пишем текст для варианта "не выплачивается". Опять вставляем две пустых строки после текста (нужно для удобства последующих манипуляций). Выделяем текст (без пустой строки после текста!) и опять выбираем пункт меню Вставка->Раздел. Задаём имя раздела "не выплачивается". Жмём ОК. Вставится второй раздел внутри раздела.
На скриншоте ниже красной рамкой показан раздел "основной", а цветами выделены разделы внутри раздела "основной". Как видно, в документе не очень-то очевидна структура этих разделов-внутри-раздела, ибо тоненькие серые линии сливаются по границам разделов.

Аккуратно удаляем все ненужные теперь пустые строки внутри раздела "основной".
Явно структуру разделов видно в диалоге "Редактирование разделов" из меню Формат->Разделы:
Следующий шаг - это настройка условия для отображения/скрытия наших внутренних разделов.
Вспоминаем, что у нас есть переменная с именем аванс. Далее в диалоге "Редактирование разделов" выбираем раздел "выплачивается", отмечаем флажком опцию "Скрыть" и в поле "При условии" пишем при каком собственно условии данный раздел будет скрыт: аванс!="выплачивается"
Выбираем второй раздел - "не выплачивается", аналогично отмечаем опцию "Скрыть", аналогично пишем условие для скрытия: аванс!="не выплачивается".
Обратите внимание на кавычки, которыми обрамляются наши ключевые слова - значения. Так как тип переменной у нас текст, то кавычки обязательны в данном случае. А сочетание != означает "НЕ РАВНО".
Жмём ОК. Смотрим на результат. Так как у нас переменная аванс при создании имела некое значение, а именно слово выплачивается, то раздел "не выплачивается у нас скрыт в соответствии с заданным ему условием! Дважды щёлкаем мышью на переменной в тексте, откроется диалог "Редактирование полей". В нём, в нижней части, в поле "Значение" пишем "не выплачивается". Жмём ОК и смотрим на результат. Виден стал раздел с именем "не выплачивается", а раздел "выплачивается" скрыт! Работает!
Что мне не нравится в этом варианте: я не могу создать вместо простой переменной список значений, от выбора значений в котором и менялось бы отображение/скрытие разделов. Вернее я могу создать список, вот только этот элемент документа не будет переменной, а условия можно задавать только переменным =(
Однако, это всё равно лучше, чем каждый раз руками переписывать шаблон или иметь кучу шаблонов на все варианты оплат. Можно иметь один универсальный шаблон, в котором задать столько вариантов тех же оплат, сколько нужно (а вариантов, к сожалению может быть вагон и тележка).

среда, 27 ноября 2019 г.

Замена cairo на skia в LibreOffice. Свершилось

Ну собственно, сегодня Luboš Luňák замержил сотню патчей, которые добавляют skia в LibreOffice. Надеюсь, что будет какое-то официальное сообщение или пост в блоге об этом событии. Все же это достаточно серьезное изменение.
Update: 
1. skia по умолчанию выключена. Включить можно в диалоге Tools->Options->LibreOffice->View рядом с включением OpenGL
2. skia доступна пока только для windows и голого Х11 в линукс.

воскресенье, 17 ноября 2019 г.

Выпуск LibreOffice 6.4 Beta 1

Стали доступны для скачивания сборки первого бета выпуска в ветке 6.4 - LibreOffice 6.4 beta 1. Скачать их можно для всех платформ в вариантах 64 бит. Для Windows также доступна 32 битная сборка. Выпуск предназначен в первую очередь для тестирования всеми желающими.
Ссылки для скачивания:
Исходный код
Описание исправленных ошибок в LibreOffice 6.4 beta 1 относительно LibreOffice 6.4 alpha 1 доступны по ссылке.
Обо всех найденных ошибках пишите в багзиллу проекта.

суббота, 9 ноября 2019 г.

Альтернативное получение исходного кода LibreOffice

Я писал ранее про то, как делать свою сборку LibreOffice. Там для получения исходного кода использовалась команда git clone. Это очень долгий процесс и, если у вас проблемы с интернетом, то возможны самые разные проблемы.
Есть оказывается и иной вариант.
1. Скачайте по ссылке https://dev-www.libreoffice.org/bundles/libreoffice-core.tar.bz2 архив
2. Распакуйте его куда-нибудь, должен появится каталог libo
3. Переходим в этот каталог libo
4. Даем команду git checkout -f
5. Даем команду git pull -r
Далее всё, то же самое, как и в первом посте на тему.

четверг, 7 ноября 2019 г.

Отчет QA в LibreOffice за октябрь 2019

Xisco Fauli, QA инженер из The Document Foundation опубликовал ежемесячный отчёт о работе QA в октябре 2019 года. По ссылке доступно много самой разной текстовой информации и графиков.
Немного о самом главном в октябре:
Подано отчетов об ошибках - 622, из которых 99 - это запросы на улучшение
Обработано отчетов - 664
Найдено регрессий - 103, из которых для 71 нашли причину
Закрыто (по разным причинам) - 618, в том числе исправлено 37 критических ошибок, приводивших к аварийному завершению работы LibreOffice.
В отчёте Xisco сделал прекрасную диаграмму, иллюстрирующую эти причины:
Немного поясню:
FIXED - это ошибки, которые были явно исправлены разработчиками, и в отчете есть прямая ссылка на патч.
DUPLICATE - это ошибки, по которым уже есть информация в багзилле.
WORKSFORME - обычно это старая ошибка, которая в текущей версии LibreOffice не воспроизводится. Значит, кто-то что-то где-то исправил, ошибка не воспроизводится сейчас, а кто и что исправил мы не знаем и ставим такой статус.
NOTABUG - это когда кто-то, не разобравшись в функционале LibreOffice, пишет отчет об ошибке, а оказалось, что такое поведение программы - это так и задумано.
NOTOURBUG - ошибка есть, но это ошибка не в самом LibreOffice, а либо в сторонней библиотеке, либо в стороннем софте/дистрибутиве Линукс.
INSUFFICIENTDATA - ошибка закрывается с таким статусом (недостаточно данных), если она находилась в статусе NEEDINFO (требуется информация) более, чем 6 месяцев. То есть, у баг репортера запросили уточняющую информацию по ошибке и он такую информацию не предоставил.
WONTFIX - это ошибки, которые либо вовсе не ошибки, либо предложения, которые были отвергнуты разработчиками по обоснованным причинам.
OTHERS - это Xisco объединил все остальные причины =)
Хорошая работа QA в октябре! =)

воскресенье, 3 ноября 2019 г.

Замена cairo на skia не попадет в LibreOffice 6.4

Я тут писал недавно про эксперимент по замене cairo на skia в LibreOffice. Сейчас появилась немного дополнительной информации об этом. Собственно, вот почти дословная цитата с ESC: "Изменения будут влиты в мастер сразу после отделения ветки 6.4". Причём это они надеются, что всё пойдёт хорошо. 
Если мне память не изменяет, то отделение версии от мастера происходит на первом бета релизе. Для 6.4 - это середина ноября. Не так уж и долго ждать.

четверг, 31 октября 2019 г.

Выпуск LibreOffice 6.3.3

The Document Foundation объявил о выпуске третьего корректирующего релиза LibreOffice 6.3. Всем использующим LibreOffice 6.3 советую обновиться.
Списки исправленных ошибок, относительно предыдущего выпуска:
Скачать LibreOffice 6.3.3 можно как всегда со страницы загрузки официального сайта.

среда, 30 октября 2019 г.

LibreOffice и GSoC 2019. Результаты.

В блоге TDF опубликован пост (крайне короткий и невнятный, потому что менторы поленились предоставить информацию по своим проектам), посвящённый результатам GSoC 2019 для LibreOffice. Ранее я писал про задачи, которые студенты должны были выполнить в рамках GSoC 2019.
Итак, результаты:
Shubham Goyal - проект направлен ​​на интеграцию библиотеки для создания QR-кода с LibreOffice и добавления опций для использования QR-кода в приложениях LibreOffice. Результат - диалог, доступный из меню Вставка->Объект->QR-code, который и позволяет вставить в документ QR-код:
Вот ссылка на результат его работы.
Kaishu Sahu - проект направлен на улучшение онлайн-реализации LibreOffice на Android. Результат - в этом году появился новый подход к приложению LibreOffice для Android, использующий код LibreOffice Online. Код этого студента стал важной частью реализации - он реализовал такие функции, как вставка изображений, слайд-шоу, сохранение как, печать, совместное использование документа, затемнение в неактивном состоянии и многое другое. Вот результат его работы.
Rasmus Jonsson - будет делать непонятно что, какой-то программно-аппаратный комплекс для презентаций на основе LibreOffice. Оказывается это было удаленное управление презентациями, используя браузер. Результат - по ссылке. Задача выполнена.
Ahmed Elshreif - проект нацелен на улучшение автоматической системы тестирования UI в LibreOffice. Задача выполнена, результат - по ссылке.
Sumit Chauhan - целью проекта является улучшение UI/UX в Notebookbar. Задача в основном разделена на две части: создание базовой поддержки расширений и реализацию функции настройки для всех вариантов Notebookbar. Результат - теперь можно настраивать эти ваши риббоны (пока только редактировать видимость/скрытие заложенных разработчиками значков), а также в NoreBookBar теперь есть отдельная вкладка, где показываются значки расширений. Вот видео с настройкой:
А по этой ссылке доступны технические детали по отображению расширений.
Gagandeep Singh - реализация стилей диаграмм. Планируется сначала реализовать стили на логическом уровне в модуле chart2, а затем разрешить импорт и экспорт стиля диаграммы в локально сохраненный файл и из него. Кроме того, список для выбора стиля диаграммы должен быть добавлен на Боковую панель. Вот результат его работы.

понедельник, 28 октября 2019 г.

Вставка таблицы из Calc в Writer

Как пользователи вставляют ячейки, скопированные из MS Excel в MS Word? Просто жмут кнопку "Вставить" и вставляется родная для Word таблица.
Как делают то же самое пользователи LibreOffice для Calc и Writer? Копируют ячейки в Calc и в Writer выбирают "Вставить как..." и затем в отдельном! диалоге выбирают "Форматированный как RTF". Не очень очевидно. При этом, если просто нажать кнопку "Вставить", то в Writer вставится не нативная таблица, а OLE объект с таблицей Calc внутри.
В LibreOffice 6.4 наконец-то изменили поведение при вставке данных для этого случая. Теперь можно просто нажать "Вставить" и по умолчанию будет вставлена нативная таблица Writer. По сути разработчики просто задали для этого случая вставку "Форматированный как RTF" вариантом по умолчанию.
Однако всё равно осталась проблема. При таком варианте вставки в Writer ячейки Calc теряют свое форматирование. Это какая-то ошибка, ну вернее даже не какая-то, а вполне определенная.
И чтобы обойти этот казус и сохранить форматирование ячеек, нужно по прежнему выбирать "Вставить как..." и в диалоге выбрать вариант "HTML". Тогда вставится нативная таблица Writer, которая сохранит все исходное форматирование.
Я предлагал разработчикам сделать этот вариант с HTML вариантом по умолчанию, потому что на мой взгляд он рабочий прямо сейчас, а ошибку с RTF ещё надо кому-то исправить, ответа не получил.

воскресенье, 20 октября 2019 г.

Экспорт всего листа Calc в один большой лист PDF

Muhammet Kara, разработчик LibreOffice из компании Collabora, добавил опцию для экспорта всего, что есть на листе Calc, в один большой лист в формате PDF.
Несколько картинок, в качестве иллюстрации:
Лист в Calc с кучей всего.
Вывод в обычный PDF документ, разбитый на листы в формате А4.
Результат вывода всего листа Calc на один лист PDF.
Я так понял, размер листа PDF вообще не ограничен в данном случае. LibreOffice в принципе имеет там какие-то умозрительные ограничения листа, типа 3 х 3 метра, по-моему.
Конечно такой PDF не предназначен для печати, однако даже А0 никто вам не запретит напечатать на плоттере, так что такая функциональность внезапно и может быть востребована.