Команды модуля – операции, выполняемые модулем, которые вызываются посредством пользовательского интерфейса 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.