Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
developers:tutorial:cmdattribute [2019/02/03 13:06] vasya создано |
developers:tutorial:cmdattribute [2022/03/15 19:10] (текущий) proxor |
||
---|---|---|---|
Строка 6: | Строка 6: | ||
* Внутри файла [[developers:references:core.plugin|.plugin]] в секции [[developers:references:core.plugin:actions|actions]] описываются параметры команды | * Внутри файла [[developers:references:core.plugin|.plugin]] в секции [[developers:references:core.plugin:actions|actions]] описываются параметры команды | ||
- | <note>Можно отметить, что функции помеченные атрибутом "cmd" могут быть доступны для вызова внутри самых разных параметров файла [[developers:references:core.plugin|.plugin]] с использованием системного вызова $(<имя команды>). Например в значениях для секции [[developers:references:core.plugin:variables|variables]].</note> | + | <note>Функции помеченные атрибутом "cmd" доступны для вызова внутри самых разных параметров файла [[developers:references:core.plugin|.plugin]] с использованием системного вызова $(<имя команды>). Например в значениях для секции [[developers:references:core.plugin:variables|variables]].</note> |
После этого полученную команду можно использовать, например в секции [[developers:references:core.plugin:menubars|menubars]], тогда она появится в главном меню. Аналогичным образом можно добавить команду в контекстное меню, на панель инструментов и ленту - просто прописав её в соответствующей секции файла [[developers:references:core.plugin|.plugin]]. | После этого полученную команду можно использовать, например в секции [[developers:references:core.plugin:menubars|menubars]], тогда она появится в главном меню. Аналогичным образом можно добавить команду в контекстное меню, на панель инструментов и ленту - просто прописав её в соответствующей секции файла [[developers:references:core.plugin|.plugin]]. | ||
Строка 25: | Строка 25: | ||
public bool IsVisible(string prms) | public bool IsVisible(string prms) | ||
{ | { | ||
- | return !prms.Equals("Скрыть"); | + | return !prms.Equals("Выключить"); |
} | } | ||
} | } | ||
</code> | </code> | ||
- | Задача команды "test_cmd" при вызове вывести на экран параметр, который в неё приходит, а команды "test_flags_cmd" вернуть true если параметр который в неё пришел не равен слову "Скрыть". | + | Задача команды "test_cmd" при вызове вывести на экран параметр, который в неё приходит, а команды "test_flags_cmd" определить, соответствует ли параметр слову "Выключить". |
<note>Если Вам необходимо вызвать какую-либо команду из другого модуля, то можно воспользоваться методом Execute из свойства Plugins синглтона ApplicationHost.Current. Например ApplicationHost.Current.Plugins.Execute("test_cmd", new object[] { "Параметр" }) вызовет команду "test_cmd" с параметром "Параметр"</note> | <note>Если Вам необходимо вызвать какую-либо команду из другого модуля, то можно воспользоваться методом Execute из свойства Plugins синглтона ApplicationHost.Current. Например ApplicationHost.Current.Plugins.Execute("test_cmd", new object[] { "Параметр" }) вызовет команду "test_cmd" с параметром "Параметр"</note> | ||
Строка 53: | Строка 53: | ||
"id_test_cmd3": { | "id_test_cmd3": { | ||
"cmd": "test_cmd \"%0\"", | "cmd": "test_cmd \"%0\"", | ||
- | "title": "Выключеный элемент", | + | "title": "Выключенный элемент", |
"flags": "$(if, $(test_flags_cmd,Скрыть), 0, 1)" | "flags": "$(if, $(test_flags_cmd,Скрыть), 0, 1)" | ||
} | } | ||
Строка 77: | Строка 77: | ||
</code> | </code> | ||
+ | В секции [[developers:references:core.plugin:actions|actions]] мы описали три наших команды и все три связали с одной функцией из модуля, объявленой при помощи атрибута "cmd". | ||
+ | |||
+ | <code javascript> | ||
+ | { | ||
+ | ... | ||
+ | "actions": { | ||
+ | "id_test_cmd1": { | ||
+ | "cmd": "test_cmd \"Параметр внутри команды\"", | ||
+ | "title": "Параметр внутри команды 1" | ||
+ | }, | ||
+ | "id_test_cmd2": { | ||
+ | "cmd": "test_cmd \"%0\"", | ||
+ | "title": "Параметр снаружи из меню" | ||
+ | }, | ||
+ | "id_test_cmd3": { | ||
+ | "cmd": "test_cmd \"%0\"", | ||
+ | "title": "Выключенный элемент", | ||
+ | "flags": "$(if, $(test_flags_cmd,Выключить), 0, 1)" | ||
+ | } | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Отличие состоит в том, что команда "id_test_cmd1" передает в нашу функцию параметр самостоятельно, команда "id_test_cmd2" получает этот параметр снаружи, а команда id_test_cmd2 отображается как выключенная, потому что мы используем нашу функцию "test_flags_cmd" для установки флагов этой команды. | ||
+ | |||
+ | В секции [[developers:references:core.plugin:menubars|menubars]] мы для стандартного проекта [[http://www.topomatic.ru|Топоматик Робур]] в главном меню определяем пункт Примеры, в котором описываем положение наших команд из секции actions. | ||
+ | <code javascript> | ||
+ | { | ||
+ | ... | ||
+ | "menubars": { | ||
+ | "rbproj": { | ||
+ | "items": [ | ||
+ | { | ||
+ | "id": "test_menu", | ||
+ | "title": "Примеры" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "rbproj.test_menu": { | ||
+ | "items": [ | ||
+ | "id_test_cmd1", | ||
+ | "id_test_cmd2 \"Параметр из меню\"", | ||
+ | "id_test_cmd3" | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Для этого мы объявляем секцию "rbproj" - которая определяет что меню будет использоваться для проектов [[http://www.topomatic.ru|Топоматик Робур]] и в её элементах описываем меню с ключом "test_menu". После этого объявляем секцию "rbproj.test_menu" и в ней размещаем наши команды из секции [[developers:references:core.plugin:actions|actions]]. При этом для команды "id_test_cmd2" в качестве параметра передаем строчку "Параметр из меню". | ||
+ | |||
+ | Результатом запуска проекта будет появления в главном меню пункта "Примеры", с подпунктами, которые будут показаны и работать в соответствии с описанным выше алгоритмом. | ||
+ | {{ :developers:tutorial:cmdattribute:tutorial2_menu.png?direct&400 |}} | ||
+ | |||
+ | <note>[[developers:tutorial:tutorialcode|Исходный код]] примера расположен в проекте **"tutorial2"**.</note> |