PureBasic

Использование внешних инструментов

Среда разработки (IDE) PureBasic позволяет вам настраивать вызов внешних программ прямо из IDE, посредством меню, горячих клавиш, панели инструментов, или по особым "триггерам" ("triggers"). Смысл этого в том, чтобы сделать любую другую программу, которую вы используете при программировании, легко доступной.

Также вы можете написать на PureBasic ваши собственные небольшие инструменты, которые будут выполнять определённые действия над исходным кодом, который вы просматриваете в данный момент, тем самым автоматизируя типичные задачи. Кроме того, вы можете настроить инструменты просмотра внешних файлов, которые заменят внутренний Просмотр Файлов среды разработки, для конкретного типа файлов или для всех файлов.

С помощью команды "Настройка инструментов" ("Config tools") в меню Инструменты (Tools), вы можете настраивать такие внешние инструменты. Список, который вы увидите, отображает все настроенные инструменты в том порядке, в котором они появляются в меню Инструменты (Tools) (если не скрыты). Здесь вы можете добавить и удалить инструменты, или изменить их порядок, кликнув "Передвинуть Вверх"/"Передвинуть вниз" ("Move Up"/"Move Down ") после выбора элемента.

Любой инструмент можно быстро разрешить или запретить в окне "Настройка инструментов" ("Config tools") с помощью чекбокса перед каждым пунктом инструмента. Отмеченный чекбокс означает, что инструмент разрешён, неотмеченный означает, что он в данный момент запрещён.

Настройка инструмента

Основное, что вам нужно задать, это командная строка для запуска программы, и имя для неё в списке/меню Инструментов (Tools). Всё остальное не обязательно.

Командная строка (Commandline)
Здесь выбирается имя программы для запуска.

Параметры (Arguments)
Поместите здесь аргументы командной строки, которые будут переданы программе. Вы можете поместить неизменные опции, а также особые обозначения, которые будут заменены при запуске программы:

%PATH : будет заменено на путь к текущему исходному коду. Остаётся пустым, если исходник не был сохранён.
%FILE : имя файла текущего исходного кода. Остаётся пустым, если он ещё не был сохранён. Если вы настроили инструмент для замены просмотра файлов, это обозначение представляет открываемый файл.
%TEMPFILE : Когда эта опция задана, текущий исходный код сохраняется во временный файл, а сюда вставляется имя файла. Вы можете изменить или удалить файл по желанию.
%COMPILEFILE : Это обозначение корректно только для триггеров компиляции (смотрите ниже). Оно заменяется на временный файл, который отправляется компилятору для компиляции. Изменив этот файл, вы можете изменить то, что будет компилироваться.
%EXECUTABLE : Заменяется на имя исполняемого файла, который был создан при последней операции "Создать исполняемый файл" ("Create Executable"). В триггере "После Компилировать/Запуск" ("After Compile/Run") это заменяется на имя временного исполняемого файла, созданного компилятором.
%CURSOR : заменяется на текущую позицию курсора. В виде СТРОКАxКОЛОНКА.
%SELECTION : заменяется на текущую выделенную область в виде СТРОКА_НАЧxКОЛОНКА_НАЧxСТРОКА_КОНxКОЛОНКА_КОН. Это можно использовать вместе с %TEMPFILE, если вы хотите, чтобы ваш инструмент выполнил какое-то действие с использованием выделенной области текста.
%WORD : содержит слово, которое в данный момент под курсором.
%PROJECT: полный путь к каталогу, содержащему файл проекта, если проект открыт.
%HOME: полный путь к каталогу, в который установлен purebasic

Примечание: для любых обозначений имени файла или пути, хорошей идеей будет поместить их в "" (т.е. "%TEMPFILE"), чтобы гарантировать, что пути с пробелами тоже передаются инструменту корректно. Эти обозначения и описания можно также посмотреть, если кликнуть кнопку "Инфо" ("Info") рядом с полем Параметры (Arguments).

Рабочая директория (Working Directory)
Выбрать директорию, в которой запускать этот инструмент. Если здесь не указать никакой директории, инструмент запускается в директории открытого в данный момент исходного кода.

Имя (Name)
Выбрать имя для инструмента. Это имя будет отображаться в списке инструментов, и если инструмент не скрыт от меню, также и в меню Инструменты (Tools).

Событие, запускающее инструмент

Здесь вы можете выбрать, когда следует запускать инструмент. Любое количество инструментов может иметь один и тот же триггер, они все будут запущены когда произойдёт событие триггера. Порядок их запуска зависит от порядка, в котором они появляются в списке инструментов.

Меню или горячие клавиши (Menu Or Shortcut)
Инструмент не будет запускаться автоматически. Он будет запускаться по горячим клавишам или из Меню. Примечание: чтобы запустить инструмент из панели инструментов, вы должны добавить для него кнопку в разделе настроек панели инструментов в Настройках IDE.

Если задан этот триггер, опция "Горячие клавиши" ("Shortcut") ниже становится разрешена и позволяет вам указать сочетание горячих клавиш, которое запускает этот инструмент.

Запуск Редактора (Editor Startup)
Инструмент запускается сразу после того, как среда разработки полностью запустилась.

Завершение Редактора (Editor End)
Инструмент запускается точно перед тем, как среда разработки завершит работу. Учтите, что все открытые исходники к этому моменту уже закрыты.

Перед компиляцией/Запуском (Before Compile/Run)
Инструмент запускается точно перед тем, как будет вызван компилятор для компиляции исходного кода. Используя обозначение %COMPILEFILE, вы можете получить предназначенный к компиляции код и изменить его. Это делает возможным написание небольшого препроцессора для исходного кода. Учтите, что вам следует разрешить опцию "Ждать окончания работы инструмента" ("Wait until tool quits"), если вы хотите, чтобы ваши изменения были переданы компилятору.

После компиляции/Запуска (After Compile/Run)
Инструмент запускается сразу после завершения компиляции, но перед тем, как исполняемый файл запускается для тестирования. Используя обозначение %EXECUTABLE, вы можете получить доступ к файл, который был только что создан. Учтите, что вы можете изменить файл, но не удаляйте его, так как это приведёт к сообщению об ошибке, когда среда разработки попытается запустить этот файл.

При запуске скомпилированной программы (Run compiled Program)
Инструмент запускается, когда пользователь выберет команду "Запуск" ("Run") из меню компилятора. Инструмент запускается перед запуском исполняемого файла. Обозначение %EXECUTABLE здесь тоже корректно.

Перед созданием приложения (Before create Executable)
То же, что для триггера "Перед Компилировать/Запуск" ("Before Compile/Run") применимо также и здесь, разница только в том, что запускающее событие когда пользователь создаёт итоговый исполняемый файл.

После создания Исполняемого файла (After create Executable)
Инструмент запускается после завершения компиляции и создания итогового исполняемого файла. Воспользуйтесь обозначением %EXECUTABLE чтобы получить имя созданного файла и выполнить над ним любые дальнейшие действия.

При загрузке исходного кода (Sourcecode loaded)
Инструмент запускается после того, как исходный код был загружен в среду разработки. Обозначения %FILE и %PATH здесь всегда корректны, так как файл был только что загружен с диска.

При сохранении исходного кода (Sourcecode saved)
Инструмент запускается после того, как исходный код в среде разработки был успешно сохранён. Обозначения %FILE и %PATH здесь всегда корректны, так как файл был только что сохранён на диск.

При закрытии исходного кода (Sourcecode closed)
Инструмент запускается каждый раз, когда исходный файл закрывается. В этот момент файл всё ещё открыт, так что вы ещё можете получить его содержимое с помощью обозначения %TEMPFILE. Обозначение %FILE будет пусто, если файл не сохранялся.

Просмотр Файлов - Все Файлы (File Viewer тАУ All Files)
Инструмент полностью заменит внутренний просмотр файлов. Если в среде разработки делается попытка открыть файл, который невозможно загрузить в область редактирования, среда разработки сначала попробует задействовать инструменты, у которых триггер настроен для конкретного типа файлов, и если такие не найдены, файл будет направлен этому инструменту. Используйте обозначение %FILE чтобы получить имя открываемого файла.

Примечание: Этот триггер может быть только у одного инструмента. Любые другие инструменты с этим триггером игнорируются.

Просмотр Файлов - Неизвестный файл (File Viewer тАУ Unknown file)
Этот инструмент заменяет Шестнадцатеричный просмотр, который обычно используется для отображения файлов неизвестных типов. Он запускается, когда расширение файла неизвестно среде разработки и никакой другой внешний инструмент не настроен для обработки этого файла. (Если настроен инструмент с триггером "Просмотр Файлов - Все Файлы" ("File Viewer тАУ All Files"), то этот инструмент не вызывается никогда.)

Примечание: Этот триггер может быть задан только у одного инструмента.

Просмотр Файлов - Особый файл (File Viewer тАУ Special file)
Настраивает инструмент для обработки конкретных расширений файлов. Имеет более высокий приоритет, чем триггеры "Просмотр Файлов - Все Файлы" ("File Viewer тАУ All files") или "Просмотр Файлов - Неизвестный файл" ("File Viewer тАУ Unknown file"), а также выше, чем сам внутренний просмотр файлов. Укажите расширения файлов, которые должен обрабатывать инструмент, в окошке редактирования справа. Можно задать несколько расширений.

Типичное применение этого триггера - это например настроить программу Acrobat Reader для обработки расширения "pdf", что позволяет вам легко открывать файлы pdf из Проводника, Просмотра Файлов, или по двойному клику на операторе Includebinary в исходнике.

Другие опции с правой стороны

Ждать окончания работы инструмента (Wait until tool quits)
Среда разработки (IDE) будет заблокирована для любого ввода и приостановит все свои действия, пока ваш инструмент не завершит выполнение. Эта опция необходима, если вы хотите изменить исходный код и после этого перезагрузить его, или передать его компилятору ради триггеров компиляции.

Запускать скрытым (Run hidden)
Запускает программу в невидимом режиме. Не используйте эту опцию с программой, которая может ожидать пользовательского ввода, так как в этом случае не будет способа завершить её.

Скрыть редактор (Hide editor)
Это возможно только при заданной опции "ждать окончания работы инструмента" ("wait until tool quits"). Скрывает редактор пока инструмент выполняется.

Перезагрузить Исходник после окончания работы инструмента (Reload Source after the tool has quit)
Это возможно только при заданной опции "ждать окончания работы инструмента" ("wait until tool quits") и когда в списке аргументов использовано обозначение %FILE или %TEMPFILE.

После того как ваша программа закончит работу, среда разработки перезагрузит исходник обратно в редактор. Вы можете выбрать, должен ли он заменить прежний код, или быть открыт в новом просмотре кода.

Скрыть Инструмент в Главном меню (Hide Tool from the Main menu)
Скрывает инструмент в меню Инструменты (Tools). Это полезно для инструментов, которые должны запускаться только по специальному триггеру, но не из меню.

Разрешать Инструмент для каждого исходника отдельно (Enable Tool on a per-source basis)
Инструменты, у которых эта опция задана, будут перечислены в списке "Запускать инструменты" ("Execute tools") в параметрах компилятора, и будут запускаться только для исходников, для которых это разрешено. Учтите, что если запретить этот инструмент в помощью чекбокса здесь, в окне "Настройка инструментов" ("Config tools"), он будет повсюду запрещён и не будет запускаться ни для какого исходника, даже если разрешён там.

Эта опция предусмотрена только для следующих триггеров:
- Перед Компилировать/Запуск (Before Compile/Run)
- После Компилировать/Запуск (After Compile/Run)
- Запустить скомпилированную программу (Run compiled Program)
- Перед Создать Исполняемый файл (Before create Executable)
- После Создать Исполняемый файл (After create Executable)
- Исходный код загружен (Sourcecode loaded)
- Исходный код сохранён (Sourcecode saved)
- Исходный код закрыт (Sourcecode closed)

Поддерживаемые расширения Файлов (Supported File extensions)
Только для триггера "Просмотр Файлов - Особый файл" ("File Viewer тАУ Special file"). Введите здесь список обрабатываемых расширений.

Советы по написанию ваших собственных обрабатывающих код инструментов

IDE предоставляет инструментам дополнительную информацию в виде переменных окружения. Их можно легко прочитать изнутри инструмента с помощью команд библиотеки Process.

Это список предоставляемых переменных. Учтите, что те из них, что предоставляют информацию об активном исходнике, не присутствуют в случае запуска инструмента пр старте или завершении среды разработки.
  PB_TOOL_IDE         - Полный путь и имя файла среды разработки
  PB_TOOL_Compiler    - Полный путь и имя файла Компилятора
  PB_TOOL_Preferences - Полный путь и имя файла Настроек среды разработки
  PB_TOOL_Project     - Полный путь и имя файла в настоящее время открытого проекта (если имеются)
  PB_TOOL_Language    - Язык, используемый в данный момент в среде разработки
  PB_TOOL_FileList    - Список всех открытых файлов в среде разработки, разделённый символами Chr(10)  

  PB_TOOL_Debugger    - Эти переменные предоставляют настройки из окна настройки компилятора
  PB_TOOL_InlineASM     для текущего исходника. Они установлены в "1", если опция
  PB_TOOL_Unicode       включена и "0", если нет.
  PB_TOOL_Thread     
  PB_TOOL_XPSkin     
  PB_TOOL_OnError    

  PB_TOOL_SubSystem   - содержимое поля "Subsystem" в опциях компилятора
  PB_TOOL_Executable  - то же, что обозначение %COMPILEFILE для командной строки
  PB_TOOL_Cursor      - то же, что обозначение %CURSOR для командной строки
  PB_TOOL_Selection   - то же, что обозначение %SELECTION для командной строки
  PB_TOOL_Word        - то же, что обозначение %WORD для командной строки

  PB_TOOL_MainWindow  - дескриптор ОС главного окна среды разработки
  PB_TOOL_Scintilla   - дескриптор ОС компонента редактирования Синтила для текущего исходника


Когда используются обозначения %TEMPFILE или %COMPILEFILE, среда разработки добавляет опции компилятора в виде комментариев в конец созданного временного файла, даже если пользователь выбрал не сохранять опции там при сохранении исходного кода.

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