Панель для розмітки елементів html-тексту

Макрос з цього прикладу може стати в пригоді колегам-блогерам та вебмайстрам для форматування та верстки сторінок своїх блогів чи сайтів. Коли мова йде про написання якогось тексту, то набір його разом з html-тегами незручний, оскільки теги ускладнюють візуальне сприйняття змісту написаного. З іншого боку, дописування тегів до готового тексту є доволі марудною справою, яку можна полегшити, створивши набір макросів, які для виділеного фрагменту тексту задаватимуть вказані відкриваючий та закриваючий html-теги.


Наприклад, для форматування матеріалів цього блогу використано набір CSS-стилів, зокрема, форматована стрічка коду макроса
k = k + 1
містить чотири пари тегів &#60span&#62 трьох різних класів.

Почнемо створення макроса з коду, який вміє зчитати виділений фрагмент тексту. Документи OpenOffice підтримують метод getCurrentSelection() для звертання до виділеного діапазону, наприклад, інструкція
MySelection = ThisComponent.getCurrentSelection()
записує об’єкт, породжений виділеним фрагментом тексту в об’єктну змінну MySelection. Однак цей об’єкт не володіє властивістю String і спроба отримати виділений текст за допомогою інструкції:
MsgBox ThisComponent.getCurrentSelection().getString()
призведе до помилки. Для дослідження можливостей отриманого об’єкта скористаємося макросом

Sub SpanSample1()
MsgBox ThisComponent.getCurrentSelection().dbg_Methods
End Sub

Серед нечисленного набору методів знаходимо метод getByIndex(), який вказує, що отримуваний об’єкт підтримує інтерфейс com.sun.star.container.XIndexAccess, тобто є набором пронумерованих елементів. Очевидно, якщо йдеться про окремий виділений фрагмент, то він є першим в цьому наборі і має номер 0. Справді, макрос

Sub SpanSample2()
MsgBox ThisComponent.getCurrentSelection().getByIndex(0).String
End Sub

виводить вікно повідомлення з текстом виділеного у документі фрагмета. Для макроса зі вставки тегів цього цілком достатньо — далі можна приєднати до отриманого тесту теги і знову присвоїти цій же властивості String:

Sub SpanSample2()
ThisComponent.getCurrentSelection().GetByIndex(0).String = “&#60span class=” _
& Chr(34) & “code1” & Chr(34) & ” &#62″ & ThisComponent.getCurrentSelection(). _
GetByIndex(0).String & “&#60/span&#62”
End Sub

Єдина проблема у створенні цього макроса в одну стрічку — записати в текстову змінну подвійні лапки. Символ ” безпосередньо писати не можна, бо він розпочинає або завершує константні фрагменти тексту в коді макроса, тому слід скористатися Unicode-кодом цього символа та функцією Chr().

Наступний етап не менш важливий, ніж написання коду макроса — налаштування його використання на практиці. Будемо використовувати для форматування html-текстів спаціально створену панель інструментів.

Макроси розмістимо в окремій бібліотеці, але оскільки вони будуть потрібні для різних документів, то бібліотеку створимо в контейнері “Мої макроси” (про створення бібліотеки див. тут.). Для кожного класу тегу &#60span&#62 створимо окремий макрос з власною назвою. Наприклад, текст червого кольру назвемо “codered”, задаватимемо його тегом &#60span class=”codered”&#62 макрос, який його встановлює також назвемо CodeRed.

Ще одна зміна, яку необхідно внести в код макроса — спосіб звертання до документа. Оскільки макрос буде міститися в загальному контейнері макросів, то з об’єктом ThisComponent макрос працювати не буде. Макрос повинен працювати з текстом документа відкритого на екрані, до якго слід звертатися StarDesktop.CurrentComponent.

Макрос для встановлення тегу &#60span class=”codered”&#62 набуде вигляду

Sub SpanRed()
ThisComponent.getCurrentSelection().GetByIndex(0).String = “&#60span class=” _
& Chr(34) & “codered” & Chr(34) & ” &#62″ & ThisComponent.getCurrentSelection(). _
GetByIndex(0).String & “&#60/span&#62”
End Sub

Створюємо потрібну кількість копій цього макроса, змінюючи відповідним чином назви макроса та класу тега і переходимо до налаштування панелі інструментів. Команда Вид=>Панелі інструментів => Настройка з меню OpenOffice.org Writer виводить на екран вікно “Настройка”, у якому переходимо на вкладку “Панелі інструментів”. Навпроти списку “Панель інструментів” натискаємо кнопку “Створити” і задаємо назву нової панелі інструментів. Далі додаємо кнопки створених макросів — натискаємо кнопку “Додати” навпроти списку команд панелі інструментів, в полі “Категорія” знаходимо список “Макроси OpenOffice”, в ньому – ”Мої макроси”, в ньому — сворену бібліотеку і модуль з макросами. Додаємо кнопки для всіх створених макросів, закриваємо всі відкриті вікна налаштувань і переходимо до використання створеного додаткового інструмента.

Залишити відповідь