Команды модуля

Команды модуля – операции, выполняемые модулем, которые вызываются посредством пользовательского интерфейса ZuluGIS. Для задания команды требуется указать мнемоническое имя, полное название и соответствующий метод модуля:

<plugin id="myplugin" name="My Plugin">
    <commands>
        <command id="имя_команды" 
                 name="полное_название_команды"
                 desc="краткое_описание_команды">
            <method>имя_метода</method>
        </command>
    </commands>
...
имя_команды мнемоническое имя команды;
имя_метода имя метода модуля, соответствующего данной команде.

[Примечание]Примечание

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

Команда без метода

В том случае, когда команда модуля отвечает лишь за отображение окна модуля (например команда, указанная в showhidecommand у окна модуля), и не предполагает выполнение какого-либо кода, то метод команды можно не указывать.

Простой метод команды

Простой метод модуля для команды должен иметь следующий синтаксис:

Для обычной DLL:

extern “C” __declspec(dllexport) BOOL __stdcall SomeCommandMethod(DWORD_PTR dwCookie);

Для COM-объекта и ActiveX элемента:

//IDL:
[id(dispid)] HRESULT SomeCommandMethod([out, retval] BOOL *pRetVal);
'Visual Basic:
Public Function SomeCommandMethod() as Boolean

В случае экспортируемой функции, имя метода, указываемое в реестре для Microsoft Visual C++ будет _SomeCommandMethod@4, для других сред разработки возможно иное. Пример:

<plugin id="myplugin" name="My Plugin">
    <commands>
        <command id="command1" name="My Command 1">
            <method name="_SomeCommandMethod@4"/>
        </command>
    </commands>
...

В случае COM-объекта имя метода указывается без изменения - SomeCommandMethod:

<plugin id="myplugin" name="My Plugin">
    <commands>
        <command id="command1" name="My Command 1">
            <method name="SomeCommandMethod"/>
        </command>
    </commands>
...

Метод команды с параметром

Кроме простого метода, ZuluGIS допускает вызов параметризованного метода для команды модуля. В качестве параметра передается строка, указываемая с помощью дополнительного атрибута cmdline:

<plugin id="myplugin" name="My Plugin">
    <commands>
        <command id="command1" name="My Command 1">
            <method name="SomeCommandMethod" cmdline="строка-параметр"/>
        </command>
    </commands>
...

Метод модуля с параметром в этом случае имеет вид:

Для обычной DLL:

extern “C” __declspec(dllexport) BOOL __stdcall SomeCommandMethod(DWORD dwCookie, LPCSTR lpCmdLine);

Для COM-объекта и ActiveX элемента:

//IDL:
[id(dispid)] HRESULT SomeCommandMethod([in] BSTR CmdLine, [out, retval] BOOL *pRetVal);
'Visual Basic:
Public Function SomeCommandMethod(CmdLine As String) as Boolean

В случае экспортируемой функции, имя метода, указываемое в реестре для Microsoft Visual C++ будет _SomeCommandMethod@8, для других сред разработки возможно иное.

В случае COM-объекта имя метода указывается без изменения - SomeCommandMethod.

Вызов команды модуля

Вызвать команду модуля расширения можно через меню Сервис|Выполнить. Нужная команда выбирается в панели главного меню Сервис|Выполнить во вкладке Команды.

Вкладка Команды - в ней выполняются команды модулей ZuluGIS:

Команду модуля можно включить в раздел меню Задачи. Для этого в описание команды нужно включить категорию task:

<command id="command1" name="My Command 1">
    <categories>task</categories>
</command>
...

Кроме это для вызова команд модуля, модуль может предоставить произвольные меню и панели инструментов, которые будут внедрены в пользовательский интерфейс ZuluGIS.