Делалось достаточно давно еще когда работал на прежнем месте работы изначально под 3.0, потом переделывал под 4.0. Для работы необходим Tabax. Инструкцию, иконки и сам проект прикладываю в архиве (пока к сожалению версия только под 4).
Единственное что требуется для вмешательство в систему дописать в Editor один метод и дополнить один существующий. Свой исключил из проекта, поскольку у нас много мусора в нем.
Создаем
PHP код:
void DevelopersComment(Editor e)
{
int startLine = e.selectionStartLine();
int endLine = e.selectionEndLine();
int startCol;
str startStr;
// >> GEV() 25 Авг 2009 GEV_NewProjectWithComment Создание новых проектов
boolean header = startLine == 1 && endLine == 1 && e.selectionStartCol() == e.selectionEndCol();
;
if (header)
{
DEV_Scripts::commentCreateMethod(e);
}
else
{
DEV_Scripts::commentChangeMethod(e);
}
}
Исправляем getApplicableScripts и добавляем то что стоит между тегами
PHP код:
// >> GEV() 29 Сен 2009
...
// << GEV() 29 Сен 2009
В итоге должно получиться что то вроде такого кода.
PHP код:
// Use this method to control what scripts are shown on the scripts popup menu in the editor
container getApplicableScripts(Editor e)
{
classId id = classnum(EditorScripts);
TreeNode AOTNode = EditorScripts::getVersionControllableNode(e);
DictClass dc = new DictClass(id);
int i;
container scripts;
str methodName;
boolean applicableMethod (int offset)
{
DictMethod mi = dc.objectMethodObject(offset);
if (mi.noParms() != 2)
return false;
if (mi.name() == methodstr(EditorScripts, showScripts))
return false;
if ((mi.name() == methodstr(EditorScripts, versionControl_checkOut) ||
mi.name() == methodstr(EditorScripts, versionControl_getLatest)) &&
(!versioncontrol.parmSysVersionControlSystem() || !AOTNode ||
versioncontrol.allowEdit(AOTNode)))
return false;
if ((mi.name() == methodstr(EditorScripts, versionControl_undoCheckOut) ||
mi.name() == methodstr(EditorScripts, versionControl_checkIn)) &&
(!versioncontrol.parmSysVersionControlSystem() || !AOTNode ||
!versioncontrol.allowEdit(AOTNode)))
return false;
if (mi.parameterType(1) == Types::Class)
return mi.returnType() == Types::void;
return false;
}
// >> GEV() 29 Сен 2009
;
// > AxAssist, 10.10.2007
if(DEV_AxAssistSingleton::getThisClass().parmAltMEmulate())
{
DEV_AxAssistSingleton::getThisClass().parmEditor(e);
DEV_AxAssistSingleton::getThisClass().parmAltMEmulate(false);
return connull();
}
// < AxAssist, 10.10.2007
// << GEV() 29 Сен 2009
// Insert menu items.
for (i = 1; i <= dc.objectMethodCnt(); i++)
{
if (applicableMethod (i))
{
methodName = dc.objectMethodObject(i).name();
scripts += methodName;
}
}
return scripts;
}
Ну а дальше читаем инструкцию и пользуемся). Будут проблемы пишите постараюсь помочь.