Стартовый пул

This commit is contained in:
2024-04-02 08:46:59 +03:00
parent fd57fffd3a
commit 3bb34d000b
5591 changed files with 3291734 additions and 0 deletions

View File

@@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="demo"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
</General>
<i18n>
<EnableI18N LFM="False"/>
</i18n>
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<RequiredPackages Count="2">
<Item1>
<PackageName Value="econtrol_package"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="11">
<Unit0>
<Filename Value="demo.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="fmMain"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
</Unit1>
<Unit2>
<Filename Value="..\..\atsynedit\atsynedit_adapter_econtrol.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ATSynEdit_Adapter_EControl"/>
</Unit2>
<Unit3>
<Filename Value="..\..\atsynedit\atsynedit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ATSynEdit"/>
</Unit3>
<Unit4>
<Filename Value="..\..\atsynedit\atsynedit_canvasproc.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ATSynEdit_CanvasProc"/>
</Unit4>
<Unit5>
<Filename Value="..\..\atsynedit\atsynedit_adapters.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ATSynEdit_Adapters"/>
</Unit5>
<Unit6>
<Filename Value="..\..\atsynedit\atstringproc.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ATStringProc"/>
</Unit6>
<Unit7>
<Filename Value="..\..\atsynedit\atstringproc_textbuffer.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ATStringProc_TextBuffer"/>
</Unit7>
<Unit8>
<Filename Value="..\..\atsynedit\atsynedit_fold.inc"/>
<IsPartOfProject Value="True"/>
</Unit8>
<Unit9>
<Filename Value="..\..\atsynedit\atsynedit_ranges.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ATSynEdit_Ranges"/>
</Unit9>
<Unit10>
<Filename Value="..\..\atsynedit\atsynedit_hilite.inc"/>
<IsPartOfProject Value="True"/>
</Unit10>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="demo"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir);..\..\atsynedit"/>
<OtherUnitFiles Value="..\..\atsynedit;..\..\proc_lexer"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<IncludeAssertionCode Value="True"/>
</SyntaxOptions>
</Parsing>
<CodeGeneration>
<Checks>
<RangeChecks Value="True"/>
<OverflowChecks Value="True"/>
<StackChecks Value="True"/>
</Checks>
</CodeGeneration>
<Linking>
<Debugging>
<UseExternalDbgSyms Value="True"/>
</Debugging>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@@ -0,0 +1,22 @@
program demo;
{$mode objfpc}{$H+}
uses
//heaptrc,
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1, ATSynEdit, atsynedit_adapters, ATSynEdit_CanvasProc,
ATStringProc_TextBuffer, ATSynEdit_Ranges, ecLists, ecStrUtils;
{$R *.res}
begin
RequireDerivedFormResource:= True;
Application.Initialize;
Application.CreateForm(TfmMain, fmMain);
Application.Run;
end.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,452 @@
object fmMain: TfmMain
Left = 391
Height = 578
Top = 237
Width = 889
Caption = 'Demo'
ClientHeight = 578
ClientWidth = 889
OnCreate = FormCreate
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '1.5'
object Panel1: TPanel
Left = 0
Height = 218
Top = 360
Width = 889
Align = alBottom
BevelOuter = bvNone
ClientHeight = 218
ClientWidth = 889
TabOrder = 0
object chkWrap: TCheckBox
Left = 9
Height = 24
Top = 8
Width = 98
Caption = 'word wrap'
OnChange = chkWrapChange
TabOrder = 0
end
object edLexer: TComboBox
Left = 9
Height = 31
Top = 120
Width = 176
DropDownCount = 24
ItemHeight = 0
OnChange = edLexerChange
Style = csDropDownList
TabOrder = 5
end
object files: TShellListView
Left = 352
Height = 208
Top = 3
Width = 528
Anchors = [akTop, akLeft, akBottom]
Color = clDefault
HideSelection = False
ReadOnly = True
ShowColumnHeaders = False
SortType = stText
TabOrder = 12
ToolTips = False
ViewStyle = vsSmallIcon
OnClick = filesClick
ObjectTypes = [otNonFolders]
end
object chkFullSel: TCheckBox
Left = 9
Height = 24
Top = 48
Width = 129
Caption = 'show full sel-bg'
OnChange = chkFullSelChange
TabOrder = 2
end
object chkFullHilite: TCheckBox
Left = 9
Height = 24
Top = 68
Width = 154
Caption = 'show full syntax-bg'
OnChange = chkFullHiliteChange
TabOrder = 3
end
object bOpen: TButton
Left = 192
Height = 25
Top = 8
Width = 152
Caption = 'open...'
OnClick = bOpenClick
TabOrder = 8
end
object chkUnpri: TCheckBox
Left = 9
Height = 24
Top = 28
Width = 130
Caption = 'show unprinted'
OnChange = chkUnpriChange
TabOrder = 1
end
object chkShowCur: TCheckBox
Left = 9
Height = 24
Top = 88
Width = 132
Caption = 'show cur line bg'
OnChange = chkShowCurChange
TabOrder = 4
end
object chkLexer: TCheckBox
Left = 9
Height = 24
Top = 152
Width = 108
Caption = 'enable lexer'
Checked = True
OnChange = chkLexerChange
State = cbChecked
TabOrder = 6
end
object chkDyn: TCheckBox
Left = 9
Height = 24
Top = 176
Width = 119
Caption = 'dynamic hilite'
OnChange = chkDynChange
TabOrder = 7
end
object bComment: TButton
Left = 192
Height = 25
Top = 40
Width = 152
Caption = 'comment sel'
OnClick = bCommentClick
TabOrder = 9
end
object bUncomment: TButton
Left = 192
Height = 25
Top = 72
Width = 152
Caption = 'uncomment sel'
OnClick = bUncommentClick
TabOrder = 10
end
object bExport: TButton
Left = 192
Height = 25
Top = 104
Width = 152
Caption = 'export html'
OnClick = bExportClick
TabOrder = 11
end
end
object Tree: TTreeView
Left = 0
Height = 360
Top = 0
Width = 240
Align = alLeft
HideSelection = False
Images = ImageListTree
ReadOnly = True
RightClickSelect = True
RowSelect = True
TabOrder = 1
OnClick = TreeClick
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips]
end
object PanelText: TPanel
Left = 245
Height = 360
Top = 0
Width = 644
Align = alClient
BevelOuter = bvNone
Caption = 'PanelText'
TabOrder = 2
end
object Splitter1: TSplitter
Left = 240
Height = 360
Top = 0
Width = 5
end
object OpenDialog1: TOpenDialog
left = 264
top = 176
end
object ImageListTree: TImageList
AllocBy = 10
left = 368
top = 176
Bitmap = {
4C69080000001000000010000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000848484FF848484FF8484
84FF848484FF848484FF00000000000000000000000000000000000000000000
000000000000000000000000000000000000848484FFC6C6C6FF00FFFFFFC6C6
C6FF00FFFFFFC6C6C6FF848484FF000000000000000000000000000000000000
0000000000000000000000000000848484FFC6C6C6FF00FFFFFFC6C6C6FF00FF
FFFFC6C6C6FF00FFFFFFC6C6C6FF848484FF848484FF848484FF848484FF8484
84FF848484FF0000000000000000848484FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFF848484FF000000FF00000000848484FFFFFFFFFF00FFFFFFC6C6C6FF00FF
FFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FF
FFFF848484FF000000FF00000000848484FFFFFFFFFFC6C6C6FF00FFFFFFC6C6
C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6
C6FF848484FF000000FF00000000848484FFFFFFFFFF00FFFFFFC6C6C6FF00FF
FFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FF
FFFF848484FF000000FF00000000848484FFFFFFFFFFC6C6C6FF00FFFFFFC6C6
C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6
C6FF848484FF000000FF00000000848484FFFFFFFFFF00FFFFFFC6C6C6FF00FF
FFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FF
FFFF848484FF000000FF00000000848484FFFFFFFFFFC6C6C6FF00FFFFFFC6C6
C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6
C6FF848484FF000000FF00000000848484FFFFFFFFFF00FFFFFFC6C6C6FF00FF
FFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FFFFFFC6C6C6FF00FF
FFFF848484FF000000FF00000000848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF000000FF0000000000000000000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF0000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000848400FF848400FFFF0000FFFF0000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
000000000000FFFF00FFFFFFFFFFFF0000FFFF0000FFFF0000FF000000FF8484
84FF000000000000000000000000000000000000000000000000000000000000
00000000000000000000848400FF848400FFFF0000FFFF0000FF000000FF8484
84FF000000000000000000000000000000000000000000000000000000000000
000000000000FFFF00FFFFFFFFFFFF0000FFFF0000FFFF0000FF000000FF8484
84FF0000000000000000000000000000FFFF000084FF00000000000000000000
0000848484FFFFFFFFFFFF0000FF848400FFFF0000FFFF0000FF000000FF8484
84FF0000000000000000000000000000FFFF0000FFFF000084FF000084FF0000
000000000000848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF0000000000000000000000000000FFFF0000FFFF000084FF000084FF0000
84FF000084FFFFFFFFFFFFFFFFFFFFFFFFFF008484FF008484FF008484FF0000
00000000000000000000000000000000FFFF0000FFFF0000FFFF000084FF0000
84FF000084FF000000FFFFFFFFFF848484FF00FFFFFF00FFFFFF008484FF0084
84FF0000000000000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000
00FF000000FF848484FF008484FF00FFFFFF00FFFFFF008484FF008484FF0084
84FF008484FF00000000000000000000FFFF0000FFFF0000FFFF000000FF8484
84FF848484FF848484FF008484FF00FFFFFF008484FF008484FF008484FF0084
84FF008484FF00000000000000000000FFFF000000FF000000FF848484FF8484
84FF848484FF848484FF008484FF008484FF008484FF008484FF008484FF0084
84FF000000FF848484FF000000000000000000000000848484FF848484FF8484
84FF000000000000000000000000008484FF008484FF008484FF008484FF0084
84FF000000FF848484FF00000000000000000000000000000000848484FF0000
0000000000000000000000000000848484FF008484FF008484FF008484FF0000
00FF848484FF848484FF00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF8484
84FF848484FF0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000848484FF848484FF8484
84FF000000000000000000000000000000000000000000000000000000000000
000000000000FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF0000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FF848484FF848484FF848484FF848484FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000FFFF00FF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF8484
84FF000000000000000000000000000000000000000000000000000000000000
000000000000848484FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF8484
84FF000000000000000000000000000000000000000000000000000000000000
0000FFFF00FF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF8484
84FF0000000000000000000000000000FFFF000084FF00000000000000000000
0000848484FF848484FFFF0000FF848400FFFF0000FFFF0000FF000000FF8484
84FF0000000000000000000000000000FFFF848484FF000084FF000084FF0000
000000000000848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF0000000000000000000000000000FFFF848484FF848484FF848484FF0000
84FF000084FFFFFFFFFFFFFFFFFFFFFFFFFF008484FF008484FF008484FF0000
00000000000000000000000000000000FFFF848484FFFFFFFFFFFFFFFFFF8484
84FF848484FF000000FFFFFFFFFFFFFFFFFF00FFFFFF848484FF848484FF0084
84FF0000000000000000000000000000FFFF848484FFFFFFFFFF0000FFFF0000
00FF000000FF848484FF008484FF00FFFFFF848484FF848484FFFFFFFFFFFFFF
FFFF008484FF00000000000000000000FFFF848484FF0000FFFF000000FF8484
84FF848484FF848484FF008484FF848484FF848484FFFFFFFFFFFFFFFFFFFFFF
FFFF008484FF848484FF000000000000FFFF000000FF000000FF848484FF8484
84FF848484FF848484FF008484FF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFF000000FF848484FF000000000000000000000000848484FF848484FF8484
84FF000000000000000000000000008484FF848484FFFFFFFFFFFFFFFFFF0084
84FF000000FF848484FF00000000000000000000000000000000848484FF0000
0000000000000000000000000000848484FF008484FF848484FF008484FF0000
00FF848484FF0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF8484
84FF848484FF0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000848484FF848484FF8484
84FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000848484FF0000
000000000000848484FF0000000000000000848484FF00000000000000008484
84FF000000000000000000000000000000000000000000000000848484FF0000
000000000000848484FF848400FF848400FFFF0000FF840000FF000000008484
84FF00000000000000000000000000000000848484FF848484FF000000FF8484
84FF848484FF000000FF848484FFFF0000FFFF0000FF000000FF848484FF0000
00FF848484FF848484FF00000000000000000000000000000000848484FFFFFF
FFFFFFFFFFFF848484FF848400FF848400FFFF0000FF000000FF848484FF8484
84FF00000000000000000000000000000000000000000000FFFF000084FFFFFF
FFFFFFFFFFFF848484FFFF0000FF848400FFFF0000FF000000FF848484FF8484
84FF00000000000000000000000000000000848484FF0000FFFF0000FFFF0000
84FF848484FF000000FF848484FF848484FF848484FF848484FF848484FF0000
00FF848484FF848484FF0000000000000000000000000000FFFF0000FFFF0000
84FF000084FF000084FFFFFFFFFFFFFFFFFF008484FF008484FFFFFFFFFF8484
84FF00000000000000000000000000000000000000000000FFFF0000FFFF0000
FFFF000000FF000000FF008484FF00FFFFFF00FFFFFF008484FF008484FF0084
84FF00000000000000000000000000000000848484FF0000FFFF0000FFFF0000
00FF848484FF848484FF008484FF00FFFFFF008484FF008484FF008484FF0084
84FF848484FF848484FF0000000000000000000000000000FFFF000000FF8484
84FF848484FF848484FF008484FF008484FF008484FF008484FF008484FF0000
00FF000000000000000000000000000000000000000000000000848484FF8484
84FFFFFFFFFF848484FFFFFFFFFF848484FF008484FF008484FF000000FF8484
84FF00000000000000000000000000000000848484FF848484FF000000FF8484
84FF848484FF000000FF848484FF848484FF000000FF000000FF848484FF8484
84FF848484FF848484FF00000000000000000000000000000000848484FF0000
000000000000848484FF0000000000000000848484FF848484FF848484FF8484
84FF000000000000000000000000000000000000000000000000848484FF0000
000000000000848484FF0000000000000000848484FF00000000000000008484
84FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FF848484FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000848484FFC6C6C6FFC6C6C6FF848484FF848484FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000008484
84FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FF848484FF848484FF0000
0000000000000000000000000000000000000000000000000000848484FFC6C6
C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FF8484
84FF848484FF00000000000000000000000000000000848484FFC6C6C6FFC6C6
C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FF848484FF8484
84FF000000FF00000000000000000000000000000000848484FFC6C6C6FFC6C6
C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FF848484FF8484
84FF000000FF00000000000000000000000000000000848484FFFFFFFFFFC6C6
C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FF848484FF848484FF8484
84FF000000FF00000000000000000000000000000000848484FFC6C6C6FFFFFF
FFFFFFFFFFFFC6C6C6FFC6C6C6FFC6C6C6FF848484FF848484FF848484FF8484
84FF000000FF00000000000000000000000000000000848484FFFFFFFFFFC6C6
C6FFFFFFFFFFC6C6C6FFFFFFFFFFC6C6C6FF848484FF848484FF848484FF8484
84FF000000FF00000000000000000000000000000000848484FFC6C6C6FFFFFF
FFFFC6C6C6FFFFFFFFFFC6C6C6FFC6C6C6FF848484FF848484FF848484FF0000
00FF000000000000000000000000000000000000000000000000848484FF8484
84FFFFFFFFFFC6C6C6FFFFFFFFFFC6C6C6FF848484FF848484FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000848484FF848484FF848484FFC6C6C6FF848484FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000848484FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000005A5A5AFF292929FF4A4A4AFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000292929FF313131FF00000000212121FF424242FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000004A4A4AFF4A4A4AFF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000001810
18FF101010FF181818FF080808FF000000FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000292921FF000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000292121FF212121FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF181818FF212121FF0000000000000000313131FF313131FF000000000000
00FF181818FF0000000000000000000000000000000000000000000000000808
08FF101010FF00000000000000000000000000000000393939FF080808FF3131
31FF000000000000000000000000000000000000000000000000000000000808
08FF313131FF000000000000000000000000000000FF101010FF212121FF0000
0000000000000000000000000000000000000000000000000000000000000808
08FF000000000000000000000000000000FF101010FF00000000212121FF2121
21FF000000000000000000000000000000000000000000000000313131FF2121
21FF000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000848484FF00FF00FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FF00FF00FF00FF00FF00FF00FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FF008400FF00FF00FF00FF00FF00FF00FF000000000000
0000000000000000000000000000000000000000000000000000000000008484
84FF00000000848484FF008400FF008400FF00FF00FF00FF00FF00FF00FF0000
000000FF00FF0000000000000000000000000000000000000000848484FF00FF
00FF848484FF848484FF008400FF008400FF008400FF00FF00FF00FF00FF00FF
00FF00FF00FF848484FF000000000000000000000000848484FF00FF00FF00FF
00FF00FF00FF848484FF008400FF000000FF000000FF000000FF00FF00FF00FF
00FF00FF00FF848484FF00000000000000000000000000000000000000FF00FF
00FF00FF00FF00FF00FF008400FF000000FF848484FF008400FF00FF00FF00FF
00FF00FF00FF848484FF00000000000000000000000000000000000000000000
00FF00FF00FF00FF00FF008400FF000000FF848484FF00FF00FF00FF00FF00FF
00FF00FF00FF848484FF00000000000000000000000000000000000000000000
0000000000FF000000FF000000FF848484FF848484FF00000000848484FF8484
84FF848484FF848484FF00000000000000000000000000000000000000000000
000000000000848484FF848484FF848484FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000848484FF00FFFFFF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FF008484FF00FFFFFF00FFFFFF00FFFFFF000000000000
0000000000000000000000000000000000000000000000000000000000008484
84FF00000000848484FF008484FF008484FF00FFFFFF00FFFFFF00FFFFFF0000
000000FFFFFF0000000000000000000000000000000000000000848484FF00FF
FFFF848484FF848484FF008484FF008484FF008484FF00FFFFFF00FFFFFF00FF
FFFF00FFFFFF848484FF000000000000000000000000848484FF00FFFFFF00FF
FFFF00FFFFFF848484FF008484FF000000FF000000FF000000FF00FFFFFF00FF
FFFF00FFFFFF848484FF00000000000000000000000000000000000000FF00FF
FFFF00FFFFFF00FFFFFF008484FF000000FF848484FF008484FF00FFFFFF00FF
FFFF00FFFFFF848484FF00000000000000000000000000000000000000000000
00FF00FFFFFF00FFFFFF008484FF000000FF848484FF00FFFFFF00FFFFFF00FF
FFFF00FFFFFF848484FF00000000000000000000000000000000000000000000
0000000000FF000000FF000000FF848484FF848484FF00000000848484FF8484
84FF848484FF848484FF00000000000000000000000000000000000000000000
000000000000848484FF848484FF848484FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
}
end
end

View File

@@ -0,0 +1,360 @@
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, ShellCtrls, ComCtrls,
LclIntf, LclType,
ATSynEdit,
ATStringProc,
ATSynEdit_Adapter_EControl,
ATSynEdit_Carets,
ATSynEdit_Export_HTML,
ecSyntAnal,
proc_lexer;
type
{ TfmMain }
TfmMain = class(TForm)
bOpen: TButton;
bComment: TButton;
bUncomment: TButton;
bExport: TButton;
chkDyn: TCheckBox;
chkFullHilite: TCheckBox;
chkFullSel: TCheckBox;
chkLexer: TCheckBox;
chkShowCur: TCheckBox;
chkUnpri: TCheckBox;
chkWrap: TCheckBox;
edLexer: TComboBox;
files: TShellListView;
ImageListTree: TImageList;
OpenDialog1: TOpenDialog;
Panel1: TPanel;
PanelText: TPanel;
Splitter1: TSplitter;
Tree: TTreeView;
procedure AdapterParseBegin(Sender: TObject);
procedure AdapterParseDone(Sender: TObject);
procedure bCommentClick(Sender: TObject);
procedure bExportClick(Sender: TObject);
procedure bOpenClick(Sender: TObject);
procedure bUncommentClick(Sender: TObject);
procedure chkDynChange(Sender: TObject);
procedure chkFullHiliteChange(Sender: TObject);
procedure chkFullSelChange(Sender: TObject);
procedure chkLexerChange(Sender: TObject);
procedure chkShowCurChange(Sender: TObject);
procedure chkUnpriChange(Sender: TObject);
procedure chkWrapChange(Sender: TObject);
procedure EditorChangeCaretPos(Sender: TObject);
procedure edLexerChange(Sender: TObject);
procedure filesClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TreeClick(Sender: TObject);
private
{ private declarations }
ed: TATSynEdit;
FDir: string;
FFilename: string;
procedure DoCommentAct(Act: TATCommentAction);
procedure DoLexer(const aname: string);
procedure DoOpenFile(const fn: string);
procedure EditCalcStaple(Sender: TObject; ALine, AIndent: integer; var AColor: TColor);
procedure EditClickGutter(Sender: TObject; ABand: integer; ALine: integer);
function GetComment: string;
procedure UpdateLexList;
public
{ public declarations }
end;
var
fmMain: TfmMain;
implementation
{$R *.lfm}
var
manager: TecSyntaxManager;
adapter: TATAdapterEControl;
{ TfmMain }
procedure TfmMain.UpdateLexList;
var
i: integer;
sl: tstringlist;
begin
sl:= tstringlist.create;
try
for i:= 0 to manager.AnalyzerCount-1 do
sl.Add(manager.Analyzers[i].LexerName);
sl.sort;
edLexer.Items.AddStrings(sl);
finally
sl.free;
end;
end;
procedure TfmMain.DoOpenFile(const fn: string);
var
an: TecSyntAnalyzer;
begin
FFilename:= fn;
adapter.Lexer:= nil;
Tree.Items.Clear;
ed.LoadFromFile(fn);
ed.SetFocus;
an:= DoFindLexerForFilename(manager, fn);
adapter.Lexer:= an;
if Assigned(an) then
edLexer.ItemIndex:= edLexer.Items.IndexOf(an.LexerName);
end;
procedure TfmMain.FormCreate(Sender: TObject);
var
fname_lxl: string;
begin
FDir:= ExtractFileDir(ExtractFileDir(ExtractFileDir(Application.ExeName)))+'/test_syntax_files/';
fname_lxl:= ExtractFilePath(Application.ExeName)+'lib.lxl';
manager:= TecSyntaxManager.Create(Self);
manager.LoadFromFile(fname_lxl);
UpdateLexList;
ed:= TATSynEdit.Create(Self);
ed.Font.Name:= 'Courier New';
ed.Parent:= PanelText;
ed.Align:= alClient;
ed.OptUnprintedVisible:= false;
ed.OptRulerVisible:= false;
ed.Colors.TextBG:= $e0f0f0;
ed.Colors.CurrentLineBG:= clTeal;
ed.Gutter[ed.GutterBandNum].Visible:= false;
ed.Gutter.Update;
ed.OnClickGutter:= @EditClickGutter;
ed.OnCalcStaple:= @EditCalcStaple;
ed.OnChangeCaretPos:=@EditorChangeCaretPos;
adapter:= TATAdapterEControl.Create(Self);
adapter.OnParseBegin:=@AdapterParseBegin;
adapter.OnParseDone:=@AdapterParseDone;
ed.AdapterHilite:= adapter;
chkWrap.Checked:= ed.OptWrapMode=cWrapOn;
chkFullSel.Checked:= ed.OptShowFullSel;
chkFullHilite.Checked:= ed.OptShowFullHilite;
chkUnpri.Checked:= ed.OptUnprintedVisible;
chkShowCur.Checked:= ed.OptShowCurLine;
chkDyn.Checked:= adapter.DynamicHiliteEnabled;
end;
procedure TfmMain.FormShow(Sender: TObject);
begin
if DirectoryExists(FDir) then
files.Root:= FDir;
end;
procedure TfmMain.TreeClick(Sender: TObject);
var
R: TecTextRange;
P: TPoint;
begin
if adapter.TreeBusy then exit;
if Tree.Selected=nil then exit;
if Tree.Selected.Data=nil then exit;
R:= TecTextRange(Tree.Selected.Data);
P:= adapter.TreeGetPositionOfRange(R);
ed.DoGotoPos_AndUnfold(P, 5, 5);
ed.SetFocus;
end;
procedure TfmMain.chkWrapChange(Sender: TObject);
begin
if chkWrap.checked then
ed.OptWrapMode:= cWrapOn
else
ed.OptWrapMode:= cWrapOff;
end;
procedure TfmMain.EditorChangeCaretPos(Sender: TObject);
begin
adapter.TreeShowItemForCaret(Tree, Point(ed.Carets[0].PosX, ed.Carets[0].PosY));
end;
procedure TfmMain.chkFullSelChange(Sender: TObject);
begin
ed.OptShowFullSel:= chkFullSel.Checked;
ed.Update;
end;
procedure TfmMain.chkLexerChange(Sender: TObject);
begin
adapter.Lexer:= nil;
ed.Fold.Clear;
if chkLexer.Checked then
adapter.Lexer:= DoFindLexerForFilename(manager, FFilename);
ed.Update;
end;
procedure TfmMain.chkShowCurChange(Sender: TObject);
begin
ed.OptShowCurLine:= chkShowCur.Checked;
ed.Update;
end;
procedure TfmMain.chkUnpriChange(Sender: TObject);
begin
ed.OptUnprintedVisible:= chkUnpri.Checked;
ed.Update;
end;
procedure TfmMain.chkFullHiliteChange(Sender: TObject);
begin
ed.OptShowFullHilite:= chkFullHilite.Checked;
ed.Update;
end;
procedure TfmMain.bOpenClick(Sender: TObject);
begin
with OpenDialog1 do
begin
Filename:= '';
InitialDir:= FDir;
if not Execute then exit;
DoOpenFile(Filename);
end;
end;
function TfmMain.GetComment: string;
var
an: TecSyntAnalyzer;
begin
Result:= '';
an:= adapter.Lexer;
if Assigned(an) then
Result:= an.LineComment;
end;
procedure TfmMain.DoCommentAct(Act: TATCommentAction);
var
Str: string;
begin
Str:= GetComment;
if Str='' then
Showmessage('No line comment defined for lexer')
else
Ed.DoCommentSelectionLines(Act, Str);
end;
procedure TfmMain.bCommentClick(Sender: TObject);
begin
DoCommentAct(cCommentAdd_AtNonespace_IfNone);
end;
procedure TfmMain.bExportClick(Sender: TObject);
var
fn: string;
begin
fn:= GetTempDir+DirectorySeparator+'_export.html';
DoEditorExportToHTML(Ed, fn, 'Export test',
'Courier New', 12, false,
clWhite, clMedGray);
if FileExists(fn) then
OpenDocument(fn);
end;
procedure TfmMain.AdapterParseDone(Sender: TObject);
begin
adapter.TreeFill(Tree);
EditorChangeCaretPos(Self);
end;
procedure TfmMain.AdapterParseBegin(Sender: TObject);
begin
Tree.Items.Clear;
end;
procedure TfmMain.bUncommentClick(Sender: TObject);
begin
DoCommentAct(cCommentRemove);
end;
procedure TfmMain.chkDynChange(Sender: TObject);
begin
adapter.DynamicHiliteEnabled:= chkDyn.Checked;
Ed.Update;
end;
procedure TfmMain.DoLexer(const aname: string);
begin
adapter.Lexer:= manager.FindAnalyzer(aname);
ed.Update;
end;
procedure TfmMain.edLexerChange(Sender: TObject);
begin
DoLexer(edLexer.Text);
end;
procedure TfmMain.filesClick(Sender: TObject);
var
fn: string;
begin
if files.Selected=nil then exit;
//while adapter.TreeBusy do Application.ProcessMessages;
fn:= files.GetPathFromItem(files.Selected);
if FileExistsUTF8(fn) then
DoOpenFile(fn);
end;
procedure TfmMain.EditClickGutter(Sender: TObject; ABand: integer; ALine: integer);
begin
if ABand=ed.GutterBandBm then
begin
if ed.Strings.LinesBm[ALine]<>0 then
ed.Strings.LinesBm[ALine]:= 0
else
ed.Strings.LinesBm[ALine]:= 1;
ed.Update;
end;
end;
procedure TfmMain.EditCalcStaple(Sender: TObject; ALine, AIndent: integer; var AColor: TColor);
const
nColors = 10;
cl: array[0..nColors-1] of TColor = (
clGray,
clBlue,
clRed,
clGreen,
clOlive,
clMaroon,
clLime,
clMoneyGreen,
clNavy,
clTeal
);
begin
AColor:= cl[AIndent div 2 mod nColors];
end;
end.