powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как создать пользовательское контекстное меню без использования системы контроля версии?
14 сообщений из 14, страница 1 из 1
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763181
MyasnikovIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Уважаемые коллеги подскажите, пожалуйста, как можно создать пользовательское контекстное меню в CacheStudio без использования системы контроля версии.



Немного о назначении:
Я написал программу (плагин) для создания отчетов с помощью FastReport. Плагин вызывается через контекстное меню в CacheStudio, с применением системы контроля версии. Хотелось бы уйти от такой завязки, так как класс обработки SourceContro может быть один активным.
Для большей наглядности проект выложен: https://github.com/MyasnikovIA/CacheFastReport
Инструкция по развертыванию там же...
Заранее благодарю за любую помощь по озвученной теме.
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763264
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему мы код классов не выложить там же в репозитории?
пока вообще не понятно, зачем нужен класс контроля версий, чтобы запустить exe?
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763764
MyasnikovIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,
В прицепе вы правы контекстное меню необходимо для запуска файла EXE с входными параметрами для подключения (имя, пароль, область имен, и класс редактирования, и другие параметры).

Динамическое создание классов реализовано для простоты инсталляции. А так же при генерации классов создаются параметры с именем и паролем для подключения программы в фоновом режиме. Имя и пароль прописываются те, под которым произошло подключение

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
Class %ZFastReport.page Extends %CSP.Page [ Not ProcedureBlock ]
{
****
/// Имя пользователя от которого будет подключатся программа
Parameter UserName = "_SYSTEM";
/// Пароль пользователя от которого будет подключатся программа
Parameter UserPass = "SYS";
******


Спасибо за указание недочета, я добавил github: https://github.com/MyasnikovIA/CacheFastReport/tree/master/cls

Немного уточню задачу над которой я пытаюсь найти решение:
Задача стоит в запуске сторонней программы с параметрами с параметрами на подключение и именем объекта , который будет редактироваться. Для наглядности запуск хотелось бы производить из студии (Через контекстное меню)
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763900
MyasnikovIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небольшое дополнение о способе генерации класса из программы.
В ниже переведенном скриншето наглядно показан принцип генерации класса из кода (это так для общего развития)
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763907
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyasnikovIA,

Один из вариантов - создать шаблон https://docs.intersystems.com/ens201513/csp/docbook/DocBook.UI.Page.cls?KEY=GSTD_Templates#GSTD_Templates_Custom и в нем сделать $zf(-1) или $zf(100) для вызова EXE
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763915
MyasnikovIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
logist,
Идея хорошая, но “FastReportPlayer.exe” включает в себя визуальный редактор отчета.
Плюс к тому же после создания формы отчета, при нажатии на кнопку “Save to cls”, происходит вычитывание структуры макета и на основании этой структуры генерируется класс с методами (макет отчета тоже помещается внутри генерируемого класса). Если поместить класс в шаблон, то не будет возможности визуального редактирования макета отчета.
Но идея в действительности интересная, но возникает проблемка с вызовом редактирования ранее написанного класса.
С другой стороны, я не знал способа создания шаблонов и использую в другом проекте.
Спасибо.
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763947
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyasnikovIA,

Ну а через класс контроля версий оно же тоже через $zf вызывается? Или там как то именно на клиенте можно что то запустить?
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763960
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logistMyasnikovIA,

Ну а через класс контроля версий оно же тоже через $zf вызывается? Или там как то именно на клиенте можно что то запустить?в классе контроля версий вызывается самой студией. Без $zf, там просто в одном из методов нужно ответить что нужно запустить команду и путь к команде
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39763990
MyasnikovIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
logist,
В классе контроля версий есть метод “UserAction”
Среди входных аргументов есть переменная “Target” и “Action”
Target – указывает команду для запуска из студии
Action – указывает тип запускаемой команды

Action=2 - Запуск окна с WebView (IE на стороне клиента)
Action=3 - Запуск внешней программы на стороне клиента




Увидев это я предположил, что должен быть отдельный класс для обработки вызова контекстного меню в студии, что и породило эту тему на форуме.
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39764011
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyasnikovIA,

OK, у меня просто весь контроль версий на стороне сервера через $zf - я даже не знал что на клиенте можно делать

Тогда сложнее конечно - может быть IE & ActiveX?
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39764094
MyasnikovIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
logist,
Я уточню вопрос и конечную цель:
Хотелось бы узнать имя класса Cache', который отвечает за вызов контекстного меню в CacheStudio

Запуск EXE файла можно производить разными способами. Один из реализованных решений это система контроля версий, в который встроен механизм контекстного меню. Там же можно добавлять пункты в верхнее меню. Главной проблемой такого подхода, это то, что класс обработчик системы контроля версий может быть только один. И если ранее была установлена какая-то версия , тогда установив в качестве обработчика "%ZFastReport.SourceControl" я переопределю старый обработчик.
По этому необходимо найти иной способ вызова из студии.

В принципе FastReportPlayer.exe может запускаться как автономное приложении, но при этом каждый раз нужно будет указывать параметры для подключения к БД и имя класса для редактирования(Если класса нет, то он будет сгенерирован).

Если получится найти решение, то в дальнейшем будет написан инсталлятор к этой программе, которая после установке допишет свой запуск в контекстное меню. Все это позволит расширять возможности CacheStudio, через инсталляцию плагинов

IE & ActiveX не решат проблему вызова из CacheStudio.
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39764230
vcoshak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В классе контроля версий состав меню (в т.ч. контекстного) определяется блоком XData Menu.
Может быть возможно при инициализации класса при помощи %Dictionary.XDataDefinition изменять XData и динамически добавлять требуемые пункты меню?
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39764340
MyasnikovIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vcoshak,

Если не получится локализовать класс отвечающий отдельно за контекстное меню в CacheStudio, тогда так и придется сделать:
1) Определить активную систему контроля версии.
2) Если её нет, тогда сделать активной “ZFastReport.SourceControl”.
3) Если она есть, тогда парсить структуру класса, выбранного как контроллер версий, и добавлять в неё свои изменения.
Конечно сложная, но вполне реализуемая задача (средствами Cache конечно).
Спасибо за идею.
...
Рейтинг: 0 / 0
Как создать пользовательское контекстное меню без использования системы контроля версии?
    #39764671
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyasnikovIAЯ уточню вопрос и конечную цель:
Хотелось бы узнать имя класса Cache', который отвечает за вызов контекстного меню в CacheStudioОн настраивается. Администрирование -> Конфигурация -> Дополнительные настройки

MyasnikovIAИ если ранее была установлена какая-то версия , тогда установив в качестве обработчика
"%ZFastReport.SourceControl" я переопределю старый обработчик. Ну допиши в старый, тоже мне проблема.

MyasnikovIAЕсли получится найти решение, то в дальнейшем будет написан инсталлятор к этой программе, которая после установке допишет свой запуск в контекстное меню. Все это позволит расширять возможности CacheStudio, через инсталляцию плагиновДолжна появиться необходимость в массовом изменении систем контроля версий для такой доработки. Слабо в это верится.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как создать пользовательское контекстное меню без использования системы контроля версии?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]