|
![]() |
#1 |
Участник
|
Но тогда с Табаксом пришлось бы параллельно распространять класс базовый. Чего и хочется избежать
Цитата:
Сообщение от belugin
Требования
Tabax должен состоянть из одной формы и больше из ничего |
|
![]() |
#2 |
Участник
|
Цитата:
Imho по-любому дожен быть 1) формализованный интерфейс для плагина с поддержкой версионности; 2) формализованный интерфейс для Табакса и его сервисных функций, предоставляемых плагину, с поддержкой версионности. Посмотрите на Far Manager plugin API, посмотрите на Winamp plugin API, посмотрите на COM-интерфейсы, в конце концов... |
|
![]() |
#3 |
Участник
|
Цитата:
Пока в аксапте нет пакетов, внутренних классов или делегатов я постараюсь сделать чтобы табакс было сложно случайно испортить и чтобы он занимал поменьше визуального пространства в АОТ. Я в курсе насчет плагинов в фаре, эклипсе, Trac и ... У аксапты свои ограничения, свои традиции и своя область использования и стоит это учитывать. |
|
![]() |
#4 |
Участник
|
И еще где-то кешировать найденные плагины т.к. насколько я помню по игрищам с документооборотом extendedBy() довольно медленная штуковина
|
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Как типичный случай рассматривается когда табакс стоит без плагинов. Для этой ситуации все оптимизируется. Табакс должен состоять из одной части: собственно форма чтобы можно было легко поставить и снести и сложно снести частично.
Специфика состоит в том, что в отличие от фара табакс стоит внутри приложения, которое используется и разрабатывается многими людьми. Представь себе что куча людей вставит сносит плагины в твой фар, при этом в папке плагинов нельзя делать подпапки - какая вероятность, что во первых, кто то снесет полплагина; во-вторых, кто-то увидит что в папке стало очень много файлов и прицепится к тебе чтоб тыэто снес? В-общем хочется чтобы табакс был маленькой утилитой, которая легко ставится и сносится. PS Кроме статических языков есть еще динамические языки в которых вообще нет контроля типов при компиляции и многие считают чтоэто хорошо PPS Правда другие считают что это type inferrence для бедных |
|
![]() |
#7 |
Участник
|
Цитата:
![]() А лучшей иллюстрацией для авторов плагинов к Tabax было бы вынесение в плагины части его функций... Цитата:
Табакс должен состоять из одной части: собственно форма чтобы можно было легко поставить и снести и сложно снести частично.
Цитата:
Специфика состоит в том, что в отличие от фара табакс стоит внутри приложения, которое используется и разрабатывается многими людьми. Представь себе что куча людей вставит сносит плагины в твой фар, при этом в папке плагинов нельзя делать подпапки - какая вероятность, что во первых, кто то снесет полплагина
![]() Цитата:
во-вторых, кто-то увидит что в папке стало очень много файлов и прицепится к тебе чтоб ты это снес?
![]() Цитата:
В-общем хочется чтобы табакс был маленькой утилитой, которая легко ставится и сносится.
Цитата:
Кроме статических языков есть еще динамические языки в которых вообще нет контроля типов при компиляции
![]() |
|
![]() |
#8 |
Участник
|
|
|
![]() |
#9 |
Участник
|
Цитата:
X++: class test { } void test1(int _a) {; info(int2str(_a)); } void test2() {; this.test1('Гадость'); } |
|
![]() |
#10 |
Участник
|
Я свои аргументы изложил, агрументы gl00mie мне понятны, но кажутся менее сущетвенными
|
|
![]() |
#11 |
Участник
|
|
|
![]() |
#12 |
Участник
|
Можно попрбовать сделать чтобы и овцы сыты и и волки целы. см раздел SDK:
http://erpkb.com/Axapta/Tabax/Plaginy |
|
![]() |
#13 |
Участник
|
Цитата:
![]() X++: class TabaxPlugin_CopyWindowHwnd { Object tabax; int action; Hwnd hwnd; Object tabax(Object _value=tabax) { tabax=_value; if (!prmIsDefault(tabax) && tabax) { tabax.subscribe(methodStr(TabaxPlugin_CopyWindowHwnd, BeforeWindowContextMenu), this); tabax.subscribe(methodStr(TabaxPlugin_CopyWindowHwnd, AfterWindowContextMenu), this); } return tabax; } // ... } ![]() |
|
![]() |
#14 |
Участник
|
|
|
![]() |
#15 |
Участник
|
|
|
![]() |
#16 |
Участник
|
Первый реальный плагин на основе нового SDK
Плагин - открывает объект в АОТ
(функционал взят из http://www.axaptapedia.com/Editor_scripts_OpenInAOT) Для использования в поле для ввода пишем, к примеру X++: go InventTable |
|
![]() |
#17 |
Участник
|
Может кто-нибудь проверить на медленной машине, тормозит ли
X++: static void Job25(Args _args) { SysDictClass plug = new SysDictClass(classNum(TabaxPluginBase)); ; info(int2str(plug.extendedBy().elements())); } |
|
![]() |
#18 |
Участник
|
Цитата:
Этот - ну, секунды 4 выполнялся, хотя машинка моя не такая уж и медленная. |
|
|
За это сообщение автора поблагодарили: belugin (15). |
![]() |
#19 |
Участник
|
Я по-прежнему не понимаю зачем тебе extendedBy.
Поскольку вики-движок неадекватно относится к конструкции ++, привожу кусок кода здесь X++: static void Test_PluginLoad(Args _args) { Object element; TabaxPlugin plugin; int i; DictClass tabaxPluginClass = new DictClass(classnum(TabaxPlugin)); for( i=0; i<tabaxPluginClass.implementsCnt(); ++i ) { plugin = new SysDictClass(tabaxPluginClass.implements(i)).makeObject(); plugin.tabax(element); } } |
|
![]() |
#20 |
Участник
|
|
|
Теги |
tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами |
|
|