mirror of https://gitlab.com/basile.b/dexed.git
Merge branch 'a12_2_a13'
This commit is contained in:
commit
145b28cf54
|
@ -0,0 +1,205 @@
|
||||||
|
module runnable;
|
||||||
|
|
||||||
|
import std.path, std.file;
|
||||||
|
import std.stdio;
|
||||||
|
import std.d.lexer;
|
||||||
|
import std.d.ast;
|
||||||
|
import std.d.parser;
|
||||||
|
|
||||||
|
|
||||||
|
interface I{}
|
||||||
|
|
||||||
|
class A
|
||||||
|
{
|
||||||
|
class AA
|
||||||
|
{
|
||||||
|
class AA1{}
|
||||||
|
class AA2{}
|
||||||
|
}
|
||||||
|
|
||||||
|
class BB
|
||||||
|
{
|
||||||
|
class BB1{}
|
||||||
|
class BB2{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum SymbolType
|
||||||
|
{
|
||||||
|
_alias,
|
||||||
|
_class, // X
|
||||||
|
_enum, // X
|
||||||
|
_function, // X
|
||||||
|
_interface, // X
|
||||||
|
_import,
|
||||||
|
_mixin,
|
||||||
|
_struct, // X
|
||||||
|
_template, // X
|
||||||
|
_union, // X
|
||||||
|
_variable
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Symbol
|
||||||
|
{
|
||||||
|
uint line;
|
||||||
|
uint col;
|
||||||
|
string name;
|
||||||
|
SymbolType type;
|
||||||
|
Symbol * [] subs;
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(string[] args)
|
||||||
|
{
|
||||||
|
if (args.length < 2) return;
|
||||||
|
auto fname = args[1];
|
||||||
|
if (!fname.exists) return;
|
||||||
|
|
||||||
|
// load and parse the file
|
||||||
|
auto config = LexerConfig(fname, StringBehavior.source, WhitespaceBehavior.include);
|
||||||
|
auto source = cast(ubyte[]) read(fname, size_t.max);
|
||||||
|
auto scache = StringCache(StringCache.defaultBucketCount);
|
||||||
|
auto ast = parseModule(getTokensForParser(source, config, &scache), fname);
|
||||||
|
|
||||||
|
// visit each root member
|
||||||
|
auto slb = new SymbolListBuilder;
|
||||||
|
foreach(Declaration decl; ast.declarations)
|
||||||
|
{
|
||||||
|
slb.resetRoot;
|
||||||
|
slb.visit(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
int level = -1;
|
||||||
|
void print(Symbol * s)
|
||||||
|
{
|
||||||
|
|
||||||
|
foreach(i; 0..level) write(".");
|
||||||
|
level++;
|
||||||
|
write(s.name, '\r');
|
||||||
|
foreach(ss; s.subs)
|
||||||
|
print(ss);
|
||||||
|
|
||||||
|
level--;
|
||||||
|
}
|
||||||
|
|
||||||
|
print(&slb.root);
|
||||||
|
writeln();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class SymbolListBuilder : ASTVisitor
|
||||||
|
{
|
||||||
|
Symbol root;
|
||||||
|
Symbol * parent;
|
||||||
|
|
||||||
|
alias visit = ASTVisitor.visit;
|
||||||
|
|
||||||
|
this(){resetRoot;}
|
||||||
|
|
||||||
|
void resetRoot(){parent = &root;}
|
||||||
|
|
||||||
|
/// returns a new symbol if the declarator is based on a Token named "name".
|
||||||
|
Symbol * addDeclaration(DT)(DT adt)
|
||||||
|
{
|
||||||
|
static if
|
||||||
|
(
|
||||||
|
is(DT == const(ClassDeclaration)) ||
|
||||||
|
is(DT == const(Declarator)) ||
|
||||||
|
is(DT == const(EnumDeclaration)) ||
|
||||||
|
is(DT == const(FunctionDeclaration)) ||
|
||||||
|
is(DT == const(InterfaceDeclaration)) ||
|
||||||
|
is(DT == const(StructDeclaration)) ||
|
||||||
|
is(DT == const(TemplateDeclaration)) ||
|
||||||
|
is(DT == const(UnionDeclaration))
|
||||||
|
|
||||||
|
)
|
||||||
|
{
|
||||||
|
auto result = new Symbol;
|
||||||
|
result.name = adt.name.text;
|
||||||
|
result.line = adt.name.line;
|
||||||
|
result.col = adt.name.column;
|
||||||
|
parent.subs ~= result;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(0, "addDeclaration no implemented for " ~ DT.stringof);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// visitor implementation if the declarator is based on a Token named "name".
|
||||||
|
void namedVisitorImpl(DT, SymbolType st, bool dig = true)(const(DT) dt)
|
||||||
|
{
|
||||||
|
auto newSymbol = addDeclaration(dt);
|
||||||
|
newSymbol.type = st;
|
||||||
|
//
|
||||||
|
auto previousParent = parent;
|
||||||
|
parent = newSymbol;
|
||||||
|
static if (dig) dt.accept(this);
|
||||||
|
parent = previousParent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
final override void visit(const AliasDeclaration aliasDeclaration)
|
||||||
|
{
|
||||||
|
// IdentifierList
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const ClassDeclaration decl)
|
||||||
|
{
|
||||||
|
namedVisitorImpl!(ClassDeclaration, SymbolType._class)(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const EnumDeclaration decl)
|
||||||
|
{
|
||||||
|
namedVisitorImpl!(EnumDeclaration, SymbolType._class)(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const FunctionDeclaration decl)
|
||||||
|
{
|
||||||
|
namedVisitorImpl!(FunctionDeclaration, SymbolType._function)(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const InterfaceDeclaration decl)
|
||||||
|
{
|
||||||
|
namedVisitorImpl!(InterfaceDeclaration, SymbolType._interface)(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const ImportDeclaration decl)
|
||||||
|
{
|
||||||
|
// singlesImp[]
|
||||||
|
|
||||||
|
// singleImport.identifierchain.join
|
||||||
|
|
||||||
|
import std.array;
|
||||||
|
foreach(const(SingleImport) si; decl.singleImports)
|
||||||
|
|
||||||
|
writeln( si.identifierChain.identifiers[0].text );
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const MixinDeclaration decl)
|
||||||
|
{
|
||||||
|
// identifier
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const StructDeclaration decl)
|
||||||
|
{
|
||||||
|
namedVisitorImpl!(StructDeclaration, SymbolType._struct)(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const TemplateDeclaration decl)
|
||||||
|
{
|
||||||
|
namedVisitorImpl!(TemplateDeclaration, SymbolType._function)(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const UnionDeclaration decl)
|
||||||
|
{
|
||||||
|
namedVisitorImpl!(UnionDeclaration, SymbolType._function)(decl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final override void visit(const VariableDeclaration decl)
|
||||||
|
{
|
||||||
|
foreach(elem; decl.declarators)
|
||||||
|
namedVisitorImpl!(Declarator, SymbolType._variable, false)(elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 313 B |
Binary file not shown.
Before Width: | Height: | Size: 509 B |
Binary file not shown.
Before Width: | Height: | Size: 888 B |
|
@ -518,8 +518,10 @@ begin
|
||||||
// block comments 1
|
// block comments 1
|
||||||
if fCurrRange.rangeKinds = [] then if readDelim(reader, fTokStop, '/*') then
|
if fCurrRange.rangeKinds = [] then if readDelim(reader, fTokStop, '/*') then
|
||||||
begin
|
begin
|
||||||
if readDelim(reader, fTokStop, '*') then fTokKind := tkDDocs
|
fTokKind := tkCommt;
|
||||||
else fTokKind := tkCommt;
|
if readDelim(reader, fTokStop, '*') then
|
||||||
|
if readDelim(reader, fTokStop, '/') then exit
|
||||||
|
else fTokKind := tkDDocs;
|
||||||
if readUntil(reader, fTokStop, '*/') then
|
if readUntil(reader, fTokStop, '*/') then
|
||||||
exit;
|
exit;
|
||||||
if fTokKind = tkDDocs then
|
if fTokKind = tkDDocs then
|
||||||
|
@ -527,8 +529,7 @@ begin
|
||||||
else
|
else
|
||||||
fCurrRange.rangeKinds += [rkBlockCom1];
|
fCurrRange.rangeKinds += [rkBlockCom1];
|
||||||
readLine(reader, fTokStop);
|
readLine(reader, fTokStop);
|
||||||
if fkComments1 in fFoldKinds then
|
StartCodeFoldBlock(nil, fkComments1 in fFoldKinds);
|
||||||
StartCodeFoldBlock(nil);
|
|
||||||
exit;
|
exit;
|
||||||
end else readerReset;
|
end else readerReset;
|
||||||
if (rkBlockCom1 in fCurrRange.rangeKinds) or (rkBlockDoc1 in fCurrRange.rangeKinds) then
|
if (rkBlockCom1 in fCurrRange.rangeKinds) or (rkBlockDoc1 in fCurrRange.rangeKinds) then
|
||||||
|
@ -538,8 +539,7 @@ begin
|
||||||
if readUntil(reader, fTokStop, '*/') then
|
if readUntil(reader, fTokStop, '*/') then
|
||||||
begin
|
begin
|
||||||
fCurrRange.rangeKinds -= [rkBlockDoc1, rkBlockCom1];
|
fCurrRange.rangeKinds -= [rkBlockDoc1, rkBlockCom1];
|
||||||
if fkComments1 in fFoldKinds then
|
EndCodeFoldBlock(fkComments1 in fFoldKinds );
|
||||||
EndCodeFoldBlock;
|
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
readLine(reader, fTokStop);
|
readLine(reader, fTokStop);
|
||||||
|
@ -549,19 +549,18 @@ begin
|
||||||
// block comments 2
|
// block comments 2
|
||||||
if fCurrRange.rangeKinds = [] then if readDelim(reader, fTokStop, '/+') then
|
if fCurrRange.rangeKinds = [] then if readDelim(reader, fTokStop, '/+') then
|
||||||
begin
|
begin
|
||||||
|
fTokKind := tkCommt;
|
||||||
|
if readDelim(reader, fTokStop, '+') then
|
||||||
|
if readDelim(reader, fTokStop, '/') then exit
|
||||||
|
else fTokKind := tkDDocs;
|
||||||
|
if readUntil(reader, fTokStop, '+/') then exit;
|
||||||
inc(fCurrRange.nestedCommentsCount);
|
inc(fCurrRange.nestedCommentsCount);
|
||||||
if readDelim(reader, fTokStop, '+') then fTokKind := tkDDocs
|
if fTokKind = tkDDocs then
|
||||||
else fTokKind := tkCommt;
|
fCurrRange.rangeKinds += [rkBlockDoc2]
|
||||||
if readUntil(reader, fTokStop, '+/') then
|
else
|
||||||
begin
|
fCurrRange.rangeKinds += [rkBlockCom2];
|
||||||
dec(fCurrRange.nestedCommentsCount);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if fTokKind = tkDDocs then fCurrRange.rangeKinds += [rkBlockDoc2]
|
|
||||||
else fCurrRange.rangeKinds += [rkBlockCom2];
|
|
||||||
readLine(reader, fTokStop);
|
readLine(reader, fTokStop);
|
||||||
if fkComments2 in fFoldKinds then
|
StartCodeFoldBlock(nil, fkComments2 in fFoldKinds);
|
||||||
StartCodeFoldBlock(nil);
|
|
||||||
exit;
|
exit;
|
||||||
end else readerReset;
|
end else readerReset;
|
||||||
if (rkBlockCom2 in fCurrRange.rangeKinds) or (rkBlockDoc2 in fCurrRange.rangeKinds) then
|
if (rkBlockCom2 in fCurrRange.rangeKinds) or (rkBlockDoc2 in fCurrRange.rangeKinds) then
|
||||||
|
@ -577,8 +576,7 @@ begin
|
||||||
if fCurrRange.nestedCommentsCount <> 0 then
|
if fCurrRange.nestedCommentsCount <> 0 then
|
||||||
exit;
|
exit;
|
||||||
fCurrRange.rangeKinds -= [rkBlockDoc2, rkBlockCom2];
|
fCurrRange.rangeKinds -= [rkBlockDoc2, rkBlockCom2];
|
||||||
if fkComments2 in fFoldKinds then
|
EndCodeFoldBlock(fkComments2 in fFoldKinds);
|
||||||
EndCodeFoldBlock;
|
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
readLine(reader, fTokStop);
|
readLine(reader, fTokStop);
|
||||||
|
@ -618,8 +616,7 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
fCurrRange.rangeKinds += [rkString1];
|
fCurrRange.rangeKinds += [rkString1];
|
||||||
if fkStrings in fFoldKinds then
|
StartCodeFoldBlock(nil, fkStrings in fFoldKinds);
|
||||||
StartCodeFoldBlock(nil);
|
|
||||||
exit;
|
exit;
|
||||||
end else _postString1: readerReset;
|
end else _postString1: readerReset;
|
||||||
if rkString1 in fCurrRange.rangeKinds then
|
if rkString1 in fCurrRange.rangeKinds then
|
||||||
|
@ -640,8 +637,7 @@ begin
|
||||||
fCurrRange.rangeKinds -= [rkString1];
|
fCurrRange.rangeKinds -= [rkString1];
|
||||||
readDelim(reader, fTokStop, stringPostfixes);
|
readDelim(reader, fTokStop, stringPostfixes);
|
||||||
fCurrRange.rString := false;
|
fCurrRange.rString := false;
|
||||||
if fkStrings in fFoldKinds then
|
EndCodeFoldBlock(fkStrings in fFoldKinds);
|
||||||
EndCodeFoldBlock();
|
|
||||||
exit;
|
exit;
|
||||||
end
|
end
|
||||||
else break;
|
else break;
|
||||||
|
@ -661,8 +657,7 @@ begin
|
||||||
end;
|
end;
|
||||||
fCurrRange.rangeKinds += [rkString2];
|
fCurrRange.rangeKinds += [rkString2];
|
||||||
readLine(reader, fTokStop);
|
readLine(reader, fTokStop);
|
||||||
if fkStrings in fFoldKinds then
|
StartCodeFoldBlock(nil, fkStrings in fFoldKinds);
|
||||||
StartCodeFoldBlock(nil);
|
|
||||||
exit;
|
exit;
|
||||||
end else readerReset;
|
end else readerReset;
|
||||||
if rkString2 in fCurrRange.rangeKinds then
|
if rkString2 in fCurrRange.rangeKinds then
|
||||||
|
@ -671,8 +666,7 @@ begin
|
||||||
if readUntil(reader, fTokStop, '`') then
|
if readUntil(reader, fTokStop, '`') then
|
||||||
begin
|
begin
|
||||||
fCurrRange.rangeKinds -= [rkString2];
|
fCurrRange.rangeKinds -= [rkString2];
|
||||||
if fkStrings in fFoldKinds then
|
EndCodeFoldBlock(fkStrings in fFoldKinds);
|
||||||
EndCodeFoldBlock();
|
|
||||||
readDelim(reader, fTokStop, stringPostfixes);
|
readDelim(reader, fTokStop, stringPostfixes);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
@ -686,8 +680,7 @@ begin
|
||||||
fTokKind := tkIdent;
|
fTokKind := tkIdent;
|
||||||
inc(fCurrRange.tokenStringBracketsCount);
|
inc(fCurrRange.tokenStringBracketsCount);
|
||||||
fCurrRange.rangeKinds += [rkTokString];
|
fCurrRange.rangeKinds += [rkTokString];
|
||||||
if (fkBrackets in fFoldKinds) then
|
StartCodeFoldBlock(nil, fkBrackets in fFoldKinds);
|
||||||
StartCodeFoldBlock(nil);
|
|
||||||
exit;
|
exit;
|
||||||
end else readerReset;
|
end else readerReset;
|
||||||
|
|
||||||
|
@ -712,21 +705,6 @@ begin
|
||||||
exit;
|
exit;
|
||||||
end else readerReset;
|
end else readerReset;
|
||||||
|
|
||||||
// hex litterals
|
|
||||||
{if readDelim(reader, fTokStop, '0x') then
|
|
||||||
begin
|
|
||||||
readWhile(reader, fTokStop, hexaChars);
|
|
||||||
if not tryReadDelim(reader, fTokStop, 'Lu') then
|
|
||||||
if not tryReadDelim(reader, fTokStop, 'LU') then
|
|
||||||
if not tryReadDelim(reader, fTokStop, 'uL') then
|
|
||||||
if not tryReadDelim(reader, fTokStop, 'UL') then
|
|
||||||
if not tryReadDelim(reader, fTokStop, 'L') then
|
|
||||||
if not tryReadDelim(reader, fTokStop, 'u') then
|
|
||||||
tryReadDelim(reader, fTokStop, 'U');
|
|
||||||
fTokKind := tkNumbr;
|
|
||||||
exit;
|
|
||||||
end else readerReset;}
|
|
||||||
|
|
||||||
// numbers 1
|
// numbers 1
|
||||||
if (isNumber(reader^)) then
|
if (isNumber(reader^)) then
|
||||||
begin
|
begin
|
||||||
|
@ -740,11 +718,10 @@ begin
|
||||||
begin
|
begin
|
||||||
fTokKind := tkSymbl;
|
fTokKind := tkSymbl;
|
||||||
case reader^ of
|
case reader^ of
|
||||||
'{': if (fkBrackets in fFoldKinds) then StartCodeFoldBlock(nil);
|
'{': StartCodeFoldBlock(nil,fkBrackets in fFoldKinds);
|
||||||
'}':
|
'}':
|
||||||
begin
|
begin
|
||||||
if (fkBrackets in fFoldKinds) then
|
EndCodeFoldBlock(fkBrackets in fFoldKinds);
|
||||||
EndCodeFoldBlock;
|
|
||||||
if (reader^ = '}') and (rkAsm in fCurrRange.rangeKinds) then
|
if (reader^ = '}') and (rkAsm in fCurrRange.rangeKinds) then
|
||||||
fCurrRange.rangeKinds -= [rkAsm]; ;
|
fCurrRange.rangeKinds -= [rkAsm]; ;
|
||||||
if (rkTokString in fCurrRange.rangeKinds) then
|
if (rkTokString in fCurrRange.rangeKinds) then
|
||||||
|
|
|
@ -44,13 +44,6 @@ begin
|
||||||
DragThresholdTrackBar.OnChange := @doChanged;
|
DragThresholdTrackBar.OnChange := @doChanged;
|
||||||
SplitterWidthTrackBar.OnChange := @doChanged;
|
SplitterWidthTrackBar.OnChange := @doChanged;
|
||||||
//
|
//
|
||||||
FlattenHeaders.OnChange := @doChanged;
|
|
||||||
FilledHeaders.OnChange := @doChanged;
|
|
||||||
HideHeaderCaptionForFloatingCheckBox.OnChange := @doChanged;
|
|
||||||
ScaleOnResizeCheckBox.OnChange := @doChanged;
|
|
||||||
ShowHeaderCaptionCheckBox.OnChange := @doChanged;
|
|
||||||
ShowHeaderCheckBox.OnChange := @doChanged;
|
|
||||||
//
|
|
||||||
HeaderStyleComboBox.OnChange:= @doChanged;
|
HeaderStyleComboBox.OnChange:= @doChanged;
|
||||||
//
|
//
|
||||||
EntitiesConnector.addObserver(self);
|
EntitiesConnector.addObserver(self);
|
||||||
|
@ -109,7 +102,11 @@ begin
|
||||||
' ('+IntToStr(HeaderAlignLeftTrackBar.Position) +')';
|
' ('+IntToStr(HeaderAlignLeftTrackBar.Position) +')';
|
||||||
SplitterWidthLabel.Caption:=adrsSplitterWidth +
|
SplitterWidthLabel.Caption:=adrsSplitterWidth +
|
||||||
' ('+IntToStr(SplitterWidthTrackBar.Position) +')';
|
' ('+IntToStr(SplitterWidthTrackBar.Position) +')';
|
||||||
ShowHeaderCheckBox.Visible:=adofShow_ShowHeader in Flags;
|
|
||||||
|
FlattenHeaders.Enabled := adofShow_ShowHeader in Flags;
|
||||||
|
FilledHeaders.Enabled := adofShow_ShowHeader in Flags;
|
||||||
|
ShowHeaderCaptionCheckBox.Enabled := adofShow_ShowHeader in Flags;
|
||||||
|
HideHeaderCaptionForFloatingCheckBox.Enabled := adofShow_ShowHeader in Flags;
|
||||||
//
|
//
|
||||||
SaveToMaster;
|
SaveToMaster;
|
||||||
end;
|
end;
|
||||||
|
|
|
@ -1316,80 +1316,6 @@ LazarusResources.Add('keyboard_pencil','PNG',[
|
||||||
+#140#227'2'#217#189'['#210'K'#229'8v'#158#165#236#7#170'&'#25#255'u'#127#254
|
+#140#227'2'#217#189'['#210'K'#229'8v'#158#165#236#7#170'&'#25#255'u'#127#254
|
||||||
+#8'0'#0#204#231'b U<'#159'Q'#0#0#0#0'IEND'#174'B`'#130
|
+#8'0'#0#204#231'b U<'#159'Q'#0#0#0#0'IEND'#174'B`'#130
|
||||||
]);
|
]);
|
||||||
LazarusResources.Add('link','PNG',[
|
|
||||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
|
||||||
+#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#0#219'IDATx'#218#236
|
|
||||||
+#147'='#11#131'@'#12#134#147'z'#139#160#127#207'I\'#156#236#164#139#142#226
|
|
||||||
+#168'88Huq'#17''''#127#156#224#7#8#130#156#189#208#131#182'h;'#184#149'f'#184
|
|
||||||
+#4#158'7'#31#228#238#144's'#14'g'#236#2''''#237#7#10'0q'#212'u}'#187';'#231
|
|
||||||
+#141#21#150'e]'#191'q,'#203#146#160'i'#154#176#174'+'#17'EQ'#160'i'#26#18'='
|
|
||||||
+#196#135#28#211'4'#229#182'mCUU'#4'5M'#3'UUw'#199#157#231#25#166'i'#162'X'
|
|
||||||
+#230#176'a'#24#160#235':'#16'>'#138'"'#140#227#152'?w'#147'&'#186#230'y'#14
|
|
||||||
+'A'#16'`'#24#134'\'#230#176#190#239#169#170#240#174#235#242'eY'#192#243#188
|
|
||||||
+#253#133'1F'#26#17#203#28'1A'#145'e'#153#227#251'>'#232#186'N'#194'q'#28'!I'
|
|
||||||
+#146#151#29#28'q'#20'O'#217'0'#140#221'-'#183'mK'#183#240#137#227#255'/'#192
|
|
||||||
+'&'#192#0'd'#173#130';*'#219#202#230#0#0#0#0'IEND'#174'B`'#130
|
|
||||||
]);
|
|
||||||
LazarusResources.Add('link_break','PNG',[
|
|
||||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
|
||||||
+#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#1#159'IDATx'#218'|S'
|
|
||||||
+'=K'#3'A'#16#221'|`'#170#211#24'L'#254#132#141'U~'#128'`'#165'XD'#184'J'#175
|
|
||||||
+#137#10'w('#4#14#210#134'TB'#4'9,r'#9'zM'#16#145#128#141#4#180#17',l-'#5#127
|
|
||||||
+#131'J4'#151#131#152'B'#214'7'#155#156#172'k'#238#6'^ff'#223#220#203#236#238
|
|
||||||
+','#227#156#179'('#244#10#218'~'#28'OH'#178#169']'#23#230'S'#192#3#176#18#174
|
|
||||||
+'}q'#214#150#248'"pOuL'#178'_'#129#173'W'#255'{'#196#147''''#192#237'E>+D'#16
|
|
||||||
+#11#14'y'#17'q'#15'8'#166':Y Am'#200'v'#182#180#184#9#231#0#203'So'#3'/'#192
|
|
||||||
+#238#222#251#199#29'Sm'#214#190'Ns'#217#156#146'/D'#157#129#232#160#211#233
|
|
||||||
+'4'#161'e*'#218#174'a'#24'V'#28''''#162'V'#171#213#4'x'#16#4'|0'#24#8'PLk$'
|
|
||||||
+#30#197#209'w'#196#167#177'`'#150#203'e*Tw'#231#210#15'x'#23#220#159#14#168
|
|
||||||
+#222#243'<Z'#179#210#190#239#179'~'#191#207#200#215#235#245#132#170'b'#219'6'
|
|
||||||
+#181'j'#133'y'#173'V'#227'a=Y'#26'm'#209#191'0'#242#149'JE'#190#18#215'q'#28
|
|
||||||
+#11'k'#255#206' '#172#23#2'P'#162'B'#179'Z'#173'2M'#211#196'b&'#147'a'#200'E'
|
|
||||||
+#139#224#205'F'#163#193#198#227#177#224#134#195'!'#163'<'#220#162#184#5']'
|
|
||||||
+#215'g'#158't'#183#219#181#226#184#200'9'#192#27#152'S'#242'|'#236#28#200#134
|
|
||||||
+'Y_'#133';'#159'N'#226#14'p'#9'<'#3#135#24#227#27#245#144#147'r'#130#153'_'
|
|
||||||
+#195#188'_'#1#6#138'G'#240'm'#248#0#190'D1'#248#245'H'#1#188#129#212#136''''
|
|
||||||
+#142#128#210#246#219#231#227#228'1Mn'#21#249#19#226#13#224#128#234'd'#129#31
|
|
||||||
+#1#6#0'aG}'#171'6'#210#147','#0#0#0#0'IEND'#174'B`'#130
|
|
||||||
]);
|
|
||||||
LazarusResources.Add('link_edit','PNG',[
|
|
||||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
|
||||||
+#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#3#26'IDATx'#218'tSk'
|
|
||||||
+'H'#147'Q'#24'~'#190#207'ML*'#11#18'+D"'#10'3'#132#138'}?'#164'{'#127#162#155
|
|
||||||
+#253'h'#20#130#150#154#152'J'#146#149'n'#22#152#174'"/'#133'E'#133'SkVPj'#23
|
|
||||||
+#167'e'#22#210#159#138'R\sl'#179'$'#164#203'*'#203'K'#173#173#230#182#218#229
|
|
||||||
+#219#233#156'Uc'#9'}'#240'r8'#223#251'>'#207'y'#158#247#188#135#211#233#251
|
|
||||||
+#241#191#143#227'8H$'#18'X,'#22#181#201'd. '#129#0#252#162#136#164'E'#139#26
|
|
||||||
+#204#3#3#5'<'#207'C'#242#183#152#16#18#4'L&'#224'y'#174'U'#167#211#167')'#21
|
|
||||||
+#197#24#25#25#133#205'nC{'#199#237'|J'#194#242#5'!'#2#198#22#17#17#17'\'#195
|
|
||||||
+#8#234#155#155'['#210'*'#202#203'p'#162#178#6'D'#244'V'#219#29#206'C'#169#169
|
|
||||||
+#169#184#223#213#149'O'#235#127#19#176#147#24#184#173'M'#27#148#204'1'#18#170
|
|
||||||
+'H'#20#197#252'R'#165#2#149#213'''Qu'#226#152'@K?'#212#214#214#206#244'x<y>'
|
|
||||||
+#209#15#194','#254#235'W'#202'$'#131'i`'#201#0']GG'#199#224#243'zQP'#184#175
|
|
||||||
+#223#229'trz'#163')/6>'#30'.'#175#27#18'"'#5#199#154#200#192'R'#169#20#29#29
|
|
||||||
+'w'#168#18#30'"mV'#128'6'#139'* '#30#10'>^q'#4#153#217'9'#136#138#158#130#245
|
|
||||||
+#155'6b'#213#135#4#136'\'#0'^'#135#157#11'Y'#248#219'H'#22'L~'#128#146'P'#2
|
|
||||||
+#28'W'#149'#cW62'#179#178#224't'#186#240#230#237'+'#172'K^'#142#177#225'qD}'
|
|
||||||
+#247#17#158'yg'#4'4'#212#129#128'H'#252'~?a'''#179#181#226'H'#25'vf'#237#193
|
|
||||||
+#167#177'/'#208'vv'#227#181'e'#24#185'9{pe'#168#5#246#143'6'#248#172#227#192
|
|
||||||
+'-m;'#204#207'_'#180'*'#148#135#136#245#171#141#12#14#190'$'#138#210#195#196
|
|
||||||
+#237'v'#147'm;'#210#169#28#200'X'#152'UK'#200#196#219'N'#162#170'9G'#186#31
|
|
||||||
+'>&'#251#202'J'#131'9'#238#206#221#174#182#158#158'^yI'#241'~'#168#235'/'#128
|
|
||||||
+#2#177'n'#237#26'h'#154'.cx'#228'3'#174'nqp'#14#143#132#8#155'b'#128#247#175
|
|
||||||
+'0'#20#185#27#141'}>'#156#169':*'#24#247'6'#25'x'#221'3'#189'\'#169'(A'#157
|
|
||||||
+#186#17#170#242'2'#193#225#152'@'#211#165'+H'#167#190#23'$'#11'pyx"l'#158'I/'
|
|
||||||
+'p'#20'p'#184#240#236#129'6'#8'.V'#149#27'h'#247#192#179'n'#179#9#251#233'v'
|
|
||||||
+#214'4_'#187'fhP'#159#23'f'#207#141#135'}'#194#7'E'#236'=,'#219'0'#13'x7L'
|
|
||||||
+#193'_'#161'1-'#196#174':'#163#160#172#168'2'#132#6#208'K'#175#201'j'#179'B'
|
|
||||||
+#18#25'EM'#145#146#194#162#131#253#137'I'#201#200#156'q'#22'K'#11#179#129'i'
|
|
||||||
+#171#129'o'#227#208#24#231'#'#247#252'S'#225#230#1#193#128#176#137#231'e2'
|
|
||||||
+#153#246'z'#235#13#164#164#164' zj'#204#169#149'+W'#161#175#183#7'7'#204'q'
|
|
||||||
+#232'~'#228#162'*c'#254#128#159#8'-'#197#203#13#147#158'K'#144'+'#225#162#230
|
|
||||||
+#242'i'#157#174'O'#206'~'#248#253'"f'#197#205#233#140'v'#14'm'#141#244'9'#177
|
|
||||||
+'}q'#20#18#139#218#133#230#131'+'#12'<G'#232#244'y'#161#159'.'#135#136#31#200
|
|
||||||
+#248'2/$&'#129'Fl'#24#177#149#198#172#176#189#225#127'O'#254#151#0#3#0'w'#203
|
|
||||||
+'w'#181#149#171'TX'#0#0#0#0'IEND'#174'B`'#130
|
|
||||||
]);
|
|
||||||
LazarusResources.Add('package_add','PNG',[
|
LazarusResources.Add('package_add','PNG',[
|
||||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
||||||
+#0#0#0#4'gAMA'#0#0#175#200'7'#5#138#233#0#0#0#25'tEXtSoftware'#0'Adobe Image'
|
+#0#0#0#4'gAMA'#0#0#175#200'7'#5#138#233#0#0#0#25'tEXtSoftware'#0'Adobe Image'
|
||||||
|
|
|
@ -8,7 +8,7 @@ uses
|
||||||
Classes, SysUtils, FileUtil, ListFilterEdit, Forms, Controls,
|
Classes, SysUtils, FileUtil, ListFilterEdit, Forms, Controls,
|
||||||
strutils, Graphics, Dialogs, ExtCtrls, Menus, Buttons, ComCtrls,
|
strutils, Graphics, Dialogs, ExtCtrls, Menus, Buttons, ComCtrls,
|
||||||
ce_widget, process, ce_common, ce_interfaces, ce_synmemo,
|
ce_widget, process, ce_common, ce_interfaces, ce_synmemo,
|
||||||
ce_project, ce_symstring, ce_writableComponent, ce_observer, EditBtn;
|
ce_project, ce_symstring, ce_writableComponent, ce_observer;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue