OutWiker 1.9.0.768 (unstable) и новая версия плагина ExternalTools

OutWiker 1.9.0.768 (unstable) и новая версия плагина ExternalTools

Выход очередной нестабильной версии OutWiker (1.9.0.768) немного затянулся, но это не значит, что я ничего не делал все это время. В данной версии основная работа была направлена на расширение возможностей для плагинов. Например, теперь плагины имеют больше точек подключения для изменения создаваемого кода HTML, который видят пользователи. Кроме того, была добавлена возможность перехвата плагинами клика по ссылкам на страницах, таким образом появилась возможность с помощью плагинов добавлять ссылки произвольного типа (с произвольным протоколом, которые будут особым образом обрабатываться плагинами). Основные силы в последний месяц были направлены на то, чтобы в полной мере использовать эту возможность.

В ранних комментариях просили добавить возможность, чтобы при клике по ссылке запускалась указанная программа с передачей ей параметров. Эта задача хорошо вписывалась в ту возможность, которую я описал выше, и более того, уже есть плагин ExternalTools, который мог бы включать в себя не только открытие текста страницы во внешнем редакторе, но и запуск программ с викистраниц. Новые возможности ExternalTools, которые описаны ниже, будут работать только с OutWiker 1.9.0.768 (и, разумеется, с последующими версиями). Для пользователей предыдущих версий ничего не изменится, плагин продолжит работать.

Итак, что добавилось в ExternalTools 1.3? Теперь этот плагин добавляет команду (:exec:), которая в режиме «Просмотр» преобразуется в ссылку, при клике на которую запускается одна или несколько программ.

Простейший способ использования команды (:exec:) выглядит так:

(:exec:)notepad.exe(:execend:)

В окне просмотра появится ссылка:

externaltools_05

В итоге будет создана ссылка, которая под Windows будет запускать Блокнот. Запускаемому приложению можно передать параметры. Например:

(:exec:)notepad.exe myfile.txt(:execend:)

Если в параметрах есть пробелы, то такой параметр нужно заключать в кавычки:

(:exec:)notepad.exe "D:\Мои документы\myfile.txt"(:execend:)

Но этим новые возможности не исчерпываются. Команда (:exec:) может последовательно запускать несколько приложений, для этого каждое приложение должно быть записано на отдельной строке. Например, следующий пример создает ссылку для запуска Блокнота и Калькулятора:

(:exec:)
notepad.exe "D:\Мои документы\myfile.txt"
calc.exe
(:execend:)

Поскольку все эти команды в итоге преобразуются в ссылки (например, последний пример создаст ссылку вида <a href=»exec://exec/?com1=notepad.exe&com1=D%3A%5C%D0%9C%D0%BE%D0%B8+%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B%5Cmyfile.txt&com2=calc.exe&title=notepad.exe…» class=»extools-execlink»>notepad.exe…</a>), то, возможно, есть ограничение на количество запускаемых команд. Формально длина URL не должна превышать 4 кБ, как ведут себя Internet Explorer и WebKit при обработке более длинных ссылок (путь даже с нестандартным протоколом), я еще не проверял. В принципе, есть идеи, как избавиться от такого ограничения, но пока я этим заниматься не стал.

Если у вас есть какая-то длинная команда, то ее можно разбить на две и более строк, поставив в конце каждой строки, у которой есть продолжение, символ \:

(:exec:)
notepad.exe \
"D:\Мои документы\myfile.txt"
(:execend:)

И можно даже писать комментарии. Строка с комментарием должна начинаться с символа # (при этом перед # не должно быть никаких других символов, даже пробелов):

(:exec:)
# Комментарий о том, что эта команда запускает Блокнот и Калькулятор
notepad.exe "D:\Мои документы\myfile.txt"
calc.exe
(:execend:)

В процессе написания плагина, возникла мысль, что ссылки — не очень удачный формат для запуска чего-либо, логичнее было бы вместо ссылок сделать кнопки. Так появился параметр format. Если он равен значению «button», то команда (:exec:) вместо ссылки создаст кнопку:

(:exec format="button":)
notepad.exe "D:\Мои документы\myfile.txt"
calc.exe
(:execend:)

externaltools_06

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

(:exec format="button" title="Запуск Блокнота и Калькулятора":)
notepad.exe "D:\Мои документы\myfile.txt"
calc.exe
(:execend:)

Но и это еще не все. Подумав, что раз программы запускаются из OutWiker, да еще и с какой-то страницы, наверняка может пригодиться возможность легкой передачи в программу ссылок на прикрепленные файлы или пути до текста страницы или папки страницы. Так появились макросы.

На данный момент существует 4 макроса:

  • %page%. Этот макрос будет заменен на полный путь до файла с текстом страницы (файла __page.text).
  • %html%. Этот макрос будет заменен на полный путь до HTML-файла страницы (файла __content.html).
  • %folder%. Этот путь будет заменен на полный путь до папки страницы.
  • %attach%. Этот макрос будет заменен на полный путь до папки с прикрепленными файлами без слеша на конце.

Кроме того, можно использовать привычную нотацию с использованием Attach:.

Например, можно сделать аналог команды «Открыть файл с текстом заметки в…» или «Открыть HTML-файл в…» с использованием команды (:exec:).

(:exec format="button" title="Открыть файл с текстом заметки в Блокноте":)
notepad.exe %page%
(:execend:)


(:exec format="button" title="Открыть HTML-файл в Блокноте":)
notepad.exe %html%
(:execend:)

Или запустить прикрепленный к заметке запускаемый файл, передав ему в качестве параметра другой прикрепленный файл:

(:exec format="button" title="Использование ссылок на прикрепленные файлы":)
Attach:my_application.exe Atatch:my_file.txt
(:execend:)

Если какой-то программе нужно передать путь до прикрепленных файлов (например, чтобы программа там создала файлы), то можно воспользоваться макросом %attach%:

(:exec format="button":)
my_application.exe -o %attach%
(:execend:)

И, разумеется, все эти параметры и макросы запоминать не обязательно. В меню «Вики» было добавлено подменю «ExternalTools», с помощью которого можно вставить команду (:exec:) и все макросы.

externaltools_02

При выборе пункта меню «Запуск приложения (:exec:)» будет показан диалог, в котором можно выбрать формат: кнопка или ссылка, а также задать заголовок этой самой кнопки или ссылки.

externaltools_01

Поскольку запуск приложений — штука не безопасная (особенно, если у вас в качестве команды запуска записан format c: или вы запускаете приложение со страницы, которую делали не вы), то по умолчанию перед запуском программ с помощью команды (:exec:) выводится предупреждение:

externaltools_03

Если вы уверены в надежности и безопасности всех запускаемых вами приложений, то можете отключить это предупреждение в окне настроек плагина ExternalTools:

externaltools_04

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

Еще раз напомню, что новые возможности в ExternalTools работают только в OutWiker, начиная с той версии, которую выложил сегодня (1.9.0.768).

PS. Кроме всего вышеописанного, выложил новую версию плагина Statistics с исправлением ошибок. Новая версия имеет номер 1.0.2.

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

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

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

комментария 4

  1. Serghei:

    А предупреждения о том, что это может быть опасно выключить можно?

  2. Jenyay:

    Да, в настройках плагина (см. последний скриншот 🙂 )

  3. fuzzy16:

    Не совсем понятно с макросами. Например такая ситуация.
    Страницы А, B и С. В attache страницы А лежит editor.exe; в attache страницы В — letter.txt. Я сейчас нахожусь на странице С и хочу, находясь там, запустить editor.exe с параметром letter.txt . Похоже, макросы такую задачу не решают…

    Возможно, было бы интересно, если бы на некоторой странице всего Outwikera (или в каком-нибудь файте… возможно, подойдёт даже __page.opt, тот который в самом корне) определялись бы некоторые константы (назовём их так). Я бы мог прописать там Х1= «(полный абсолютный путь к editor.exe)»; X2=»(полный абсолютный путь к letter.txt)» . И надо чтобы Outwiker помнил эти константы на всех своих страницах.
    Тогда на странице С я мог бы сказать (:exec:)X1 X2(:execend:) И вообще мог бы быстро наорганизовывать каких угодно кнопок-открывалок… А ведь это реально, что с контентом страницы С удобно работать, используя хранящееся в attachах страниц А и В 🙂

    Чем это ещё было бы классно: Допустим Windows слетел. Переставляем операционку. А она иначе переназывает диски… Заходим на страницу (или в файл) с константами и быстро корректируем все пути.

  4. Jenyay:

    Идея интересная. Такие переменные можно хранить в настройках программы и редактировать через диалог настроек.

    Но Ваш комментарий навел на другую мысль, что можно было бы сделать, чтобы можно было использовать ссылки на другие страницы и внутри существующих макросов, например, чтобы макрос вида %attach:page://__3a5fae2f-f374-4994-a331-98426c5bc470% ссылался бы на папку с вложениями страницы с идентификатором page://__3a5fae2f-f374-4994-a331-98426c5bc470. Аналогично можно сделать и для других макросов.

Leave a comment

Subscribe without commenting