Инструменты пользователя

Инструменты сайта


developers:tutorial:cmdattribute

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
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>​
developers/tutorial/cmdattribute.1549199165.txt.gz · Последние изменения: 2021/07/22 14:28 (внешнее изменение)