/
MadDAD
/
alterplast
Обзор
Документация
Войти
/
MadDAD
/
alterplast
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
OpenConf_Scripts/ShowClassInfo.js
202 строки
4 KB
trdm
24 мар 2017, 12:42
24 мар 2017, 12:42
988c847
Код
Авторство
О чём код?
var Vis1CPP; var CommonScripts; // ���������� ������ ��� ������� ��� ��������. � �������� ����� ������ ��������, ���������� ��������� �������, � // ������������ ��������� � Delimiters function GetObjectName(Line, CursorPos) { var Delimiters = "\t ,;:|#=+-*/%?<>\\()[]{}!~@$^&'\""; var Col1, Col2, TextLen; ObjectName = ""; TextLen = Line.length; Col1 = CursorPos; while( Col1 > 0 ) { if( Delimiters.indexOf(Line.substr(Col1-1, 1)) > 0 ) { Col1++; break } Col1--; } if( Col1 == 0 ) Col1 = 1; Col2 = Col1; while( Col2 <= TextLen ) { if( Delimiters.indexOf(Line.substr(Col2-1, 1)) > 0 ) { Col2--; break; } Col2++; } if( Col2 > TextLen ) Col2 = TextLen; //Message "" & Col1 & ":" & Col2, mNone return Line.substr(Col1-1, Col2 - Col1 + 1); //Message GetObjectName, mNone } function GetWordUnderCursor(_) { CommonScripts.SetConfig(Configurator); var doc = CommonScripts.GetTextDocIfOpened(false, true); if( doc == null ) return ""; Line = doc.SelStartLine; Col = doc.SelStartCol; return GetObjectName(doc.Range(Line), Col); } function ShowBase(Name, Offset, ClassList) { var Classes = Vis1CPP.GetClasses(); var Class = Classes.Item(Name); for( i = 0; i < Class.BaseClasses.Count; i++ ) { BaseClass = Class.BaseClasses.Item(i); if( ClassList == null ) { Message(Offset + BaseClass.Name); } else { ClassList.List += '\n' + BaseClass.Name; //Message('-'+ClassList); } ShowBase(BaseClass.Name, Offset + " ", ClassList); } } function TList(_) { this.List = ''; } function BaseClasses() { var ClassName = GetWordUnderCursor(); if( ClassName == '' ) return; var Classes = Vis1CPP.GetClasses(); var Class = Classes.Item(ClassName); Message(Class.Name); ShowBase(Class.Name, " "); } function GoBaseClasses() { var ClassName = GetWordUnderCursor(); if( ClassName == '' ) return; var Classes = Vis1CPP.GetClasses(); var Class = Classes.Item(ClassName); var ClassList = new TList(); ShowBase(Class.Name, " ", ClassList); name = CommonScripts.SelectValue(ClassList.List); if( name != '' ) { var NavScript = Scripts('���������'); NavScript.TryToOpenClass(name); } } function IsDerived(BaseName, Class, Path) { var i; Path.Add(Path.Count, ""+Class.Name); for( i = 0; i < Class.BaseClasses.Count; i++ ) { var BaseClass = Class.BaseClasses.Item(i); if( BaseClass.Name == BaseName ) { return true; } else { if( IsDerived(BaseName, BaseClass, Path) ) { return true; } } } return false; } function ShowPath(Path) { var i = Path.Count-1; strPath = " "; while( i >= 0 ) { var Class = Path.Item(i); strPath += Class; if( i > 0 ) strPath += " --> "; i--; } Message(strPath); } function _DerivedClasses(ClassList) { var BaseName = GetWordUnderCursor(); if( BaseName == '' ) return; if( ClassList == null ) Message(BaseName); var Classes = Vis1CPP.GetClasses(); var i; for( i = 0; i < Classes.Count; i++ ) { var Class = Classes.Item(i); var Path = new ActiveXObject("Scripting.Dictionary"); if( IsDerived(BaseName, Class, Path) ) { if( ClassList == null ) { ShowPath(Path); } else { ClassList.List += '\n' + Path.Item(0); } } } } function DerivedClasses() { _DerivedClasses(); } function GoDerivedClasses() { var ClassList = new TList(); _DerivedClasses(ClassList); name = CommonScripts.SelectValue(ClassList.List); if( name != '' ) { var NavScript = Scripts('���������'); NavScript.TryToOpenClass(name); } } function Init(_) // ��������� ��������, ����� ��������� �� �������� � ������� { Vis1CPP = Plugins("Visual1Cpp"); CommonScripts = new ActiveXObject("OpenConf.CommonServices"); } Init();