IDE: started code browser

git-svn-id: trunk@10598 -
This commit is contained in:
mattias 2007-02-07 01:19:00 +00:00
parent 6737a6ef3d
commit e35dc827ab
28 changed files with 1532 additions and 244 deletions

19
.gitattributes vendored
View File

@ -1331,6 +1331,9 @@ ide/cleandirdlg.lfm svneol=native#text/plain
ide/cleandirdlg.lrs svneol=native#text/pascal
ide/cleandirdlg.pas svneol=native#text/pascal
ide/clipboardhistory.pas svneol=native#text/pascal
ide/codebrowser.lfm svneol=native#text/plain
ide/codebrowser.lrs svneol=native#text/plain
ide/codebrowser.pas svneol=native#text/plain
ide/codecontextform.pas svneol=native#text/plain
ide/codeexplopts.lfm svneol=native#text/plain
ide/codeexplopts.lrs svneol=native#text/pascal
@ -1723,6 +1726,14 @@ images/LazarusProject.ico -text svneol=unset#image/x-icon
images/LazarusSource.bmp -text svneol=unset#image/bmp
images/LazarusSource.ico -text svneol=unset#image/x-icon
images/README.txt svneol=native#text/plain
images/arrow_down.ico -text svneol=unset#image/x-icon
images/arrow_down.xpm -text svneol=native#image/x-xpixmap
images/arrow_left.ico -text svneol=unset#image/x-icon
images/arrow_left.xpm -text svneol=native#image/x-xpixmap
images/arrow_right.ico -text svneol=unset#image/x-icon
images/arrow_right.xpm -text svneol=native#image/x-xpixmap
images/arrow_up.ico -text svneol=unset#image/x-icon
images/arrow_up.xpm -text svneol=native#image/x-xpixmap
images/bookmark.lrs svneol=native#text/pascal
images/btn_downarrow.ico -text svneol=unset#image/x-icon
images/btn_downarrow.xpm -text svneol=native#image/x-xpixmap
@ -1949,8 +1960,6 @@ images/designer/anchorrightright.xpm -text svneol=native#image/x-xpixmap
images/designer/anchortopbottom.xpm -text svneol=native#image/x-xpixmap
images/designer/anchortoptop.xpm -text svneol=native#image/x-xpixmap
images/down.xpm svneol=native#text/plain
images/downarrow.ico -text svneol=unset#image/x-icon
images/downarrow.xpm -text svneol=native#image/x-xpixmap
images/fonts.ico -text svneol=unset#image/x-icon
images/fonts.xpm -text svneol=native#image/x-xpixmap
images/formatbold.bmp -text
@ -1971,8 +1980,6 @@ images/lazarus64.ico -text svneol=unset#image/x-icon
images/lazarus64.xpm -text svneol=native#image/x-xpixmap
images/lazarus_about_logo.xpm -text svneol=native#image/x-xpixmap
images/lazaruspackage.ico -text svneol=unset#image/x-icon
images/leftarrow.ico -text svneol=unset#image/x-icon
images/leftarrow.xpm -text svneol=native#image/x-xpixmap
images/lprfile.ico -text svneol=unset#image/x-icon
images/mainicon.ico -text svneol=unset#image/x-icon
images/mainicon.lrs svneol=native#text/pascal
@ -2037,8 +2044,6 @@ images/pkg_removedrequired.xpm -text svneol=native#image/x-xpixmap
images/pkg_required.xpm -text svneol=native#image/x-xpixmap
images/pkg_text.xpm -text svneol=native#image/x-xpixmap
images/pkg_unit.xpm -text svneol=native#image/x-xpixmap
images/rightarrow.ico -text svneol=unset#image/x-icon
images/rightarrow.xpm -text svneol=native#image/x-xpixmap
images/sourceeditor/ActiveBreakPoint.ico -text svneol=unset#image/x-icon
images/sourceeditor/ActiveBreakPoint.xpm -text svneol=native#image/x-xpixmap
images/sourceeditor/InactiveBreakPoint.ico -text svneol=unset#image/x-icon
@ -2083,8 +2088,6 @@ images/unitdependencies/srctype_program_22x22.xpm -text svneol=native#image/x-xp
images/unitdependencies/srctype_unit_22x22.xpm -text svneol=native#image/x-xpixmap
images/unitdependencies/srctype_unknown_22x22.xpm -text svneol=native#image/x-xpixmap
images/up.xpm svneol=native#text/plain
images/uparrow.ico -text svneol=unset#image/x-icon
images/uparrow.xpm -text svneol=native#image/x-xpixmap
images/vase_trans.xpm -text svneol=native#image/x-xpixmap
install/lazarus.desktop svneol=native#text/plain
languages/README.txt svneol=native#text/plain

View File

@ -120,10 +120,11 @@ type
private
FLastProgressPos: integer;
FLastScannerChangeStep: integer;
FScanner: TLinkScanner;
FOnGetGlobalWriteLockInfo: TOnGetWriteLockInfo;
FOnParserProgress: TOnParserProgress;
FOnSetGlobalWriteLock: TOnSetWriteLock;
FScanner: TLinkScanner;
FTreeChangeStep: integer;
protected
FIgnoreErrorAfter: TCodePosition;
KeyWordFuncList: TKeyWordFunctionList;
@ -138,6 +139,7 @@ type
procedure RaiseBracketCloseExpectedButAtomFound;
procedure RaiseUndoImpossible;
procedure SetIgnoreErrorAfter(const AValue: TCodePosition); virtual;
procedure IncreaseTreeChangeStep;
protected
LastErrorMessage: string;
LastErrorCurPos: TAtomPosition;
@ -176,6 +178,7 @@ type
property Scanner: TLinkScanner read FScanner write SetScanner;
function MainFilename: string;
property TreeChangeStep: integer read FTreeChangeStep;
function FindDeepestNodeAtPos(P: integer;
ExceptionOnNotFound: boolean): TCodeTreeNode; inline;
@ -339,11 +342,10 @@ end;
destructor TCustomCodeTool.Destroy;
begin
Clear;
LastAtoms.Free;
Tree.Free;
KeyWordFuncList.Free;
DirtySrc.Free;
DirtySrc:=nil;
FreeAndNil(LastAtoms);
FreeAndNil(Tree);
FreeAndNil(KeyWordFuncList);
FreeAndNil(DirtySrc);
inherited Destroy;
end;
@ -1899,6 +1901,14 @@ begin
Scanner.SetIgnoreErrorAfter(IgnoreErrorAfter.P,IgnoreErrorAfter.Code);
end;
procedure TCustomCodeTool.IncreaseTreeChangeStep;
begin
if FTreeChangeStep=High(integer) then
FTreeChangeStep:=Low(integer)
else
inc(FTreeChangeStep);
end;
procedure TCustomCodeTool.RaiseExceptionInstance(TheException: ECodeToolError);
var CaretXY: TCodeXYPosition;
CursorPos: integer;
@ -2384,6 +2394,7 @@ end;
procedure TCustomCodeTool.DoDeleteNodes;
begin
Tree.Clear;
IncreaseTreeChangeStep;
end;
procedure TCustomCodeTool.RaiseIdentExpectedButAtomFound;

View File

@ -151,6 +151,22 @@ type
function Execute(aText: TIDETextConverter): TModalResult; override;
end;
{ TH2PasFileCInclude }
TH2PasFileCInclude = class
private
FFilename: string;
FSrcFilename: string;
FSrcPos: TPoint;
procedure SetFilename(const AValue: string);
procedure SetSrcFilename(const AValue: string);
procedure SetSrcPos(const AValue: TPoint);
public
property SrcFilename: string read FSrcFilename write SetSrcFilename;
property SrcPos: TPoint read FSrcPos write SetSrcPos;
property Filename: string read FFilename write SetFilename;
end;
TH2PasProject = class;
TH2PasConverter = class;
@ -158,14 +174,20 @@ type
TH2PasFile = class(TPersistent)
private
FCIncludes: TFPList; // list of TH2PasFileCInclude
FCIncludesValid: boolean;
FCIncludesFileAge: TDateTime;
FEnabled: boolean;
FFilename: string;
FModified: boolean;
FProject: TH2PasProject;
function GetCIncludeCount: integer;
function GetCIncludes(Index: integer): TH2PasFileCInclude;
procedure SetEnabled(const AValue: boolean);
procedure SetFilename(const AValue: string);
procedure SetModified(const AValue: boolean);
procedure SetProject(const AValue: TH2PasProject);
procedure SearchCIncFilenames;
public
constructor Create;
destructor Destroy; override;
@ -178,11 +200,15 @@ type
function GetOutputDirectory: string;
function GetOutputExtension: string;
function GetH2PasParameters(const InputFilename: string = ''): string;
function ReadCIncludes(ForceUpdate: boolean): TModalResult;
function CIncludesValid: boolean;
public
property Project: TH2PasProject read FProject write SetProject;
property Filename: string read FFilename write SetFilename;
property Enabled: boolean read FEnabled write SetEnabled;
property Modified: boolean read FModified write SetModified;
property CIncludeCount: integer read GetCIncludeCount;
property CIncludes[Index: integer]: TH2PasFileCInclude read GetCIncludes;
end;
{ TH2PasProject }
@ -263,6 +289,8 @@ type
function HasEnabledFiles: boolean;
procedure AddDefaultPreH2PasTools;
procedure AddDefaultPostH2PasTools;
function SearchIncludedCHeaderFile(aFile: TH2PasFile;
const SrcFilename: string): string;
public
property CHeaderFileCount: integer read GetCHeaderFileCount;
property CHeaderFiles[Index: integer]: TH2PasFile read GetCHeaderFiles;
@ -372,6 +400,7 @@ begin
NewValue:=TrimFilename(AValue);
if FFilename=NewValue then exit;
FFilename:=NewValue;
FCIncludesValid:=false;
Modified:=true;
end;
@ -382,6 +411,19 @@ begin
Modified:=true;
end;
function TH2PasFile.GetCIncludeCount: integer;
begin
if (FCIncludes=nil) or (not FCIncludesValid) then
Result:=0
else
Result:=FCIncludes.Count;
end;
function TH2PasFile.GetCIncludes(Index: integer): TH2PasFileCInclude;
begin
Result:=TH2PasFileCInclude(FCIncludes[Index]);
end;
procedure TH2PasFile.SetModified(const AValue: boolean);
begin
if FModified=AValue then exit;
@ -393,6 +435,7 @@ end;
procedure TH2PasFile.SetProject(const AValue: TH2PasProject);
begin
if FProject=AValue then exit;
FCIncludesValid:=false;
if FProject<>nil then begin
FProject.InternalRemoveCHeaderFile(Self);
end;
@ -403,6 +446,20 @@ begin
Modified:=true;
end;
procedure TH2PasFile.SearchCIncFilenames;
var
i: Integer;
IncFile: TH2PasFileCInclude;
begin
if FCIncludes=nil then exit;
if Project=nil then exit;
for i:=0 to FCIncludes.Count-1 do begin
IncFile:=CIncludes[i];
IncFile.Filename:=
Project.SearchIncludedCHeaderFile(Self,IncFile.SrcFilename);
end;
end;
constructor TH2PasFile.Create;
begin
Clear;
@ -422,6 +479,8 @@ begin
FEnabled:=true;
FFilename:='';
FModified:=false;
FCIncludesValid:=false;
FreeAndNil(FCIncludes);
end;
procedure TH2PasFile.Assign(Source: TPersistent);
@ -433,6 +492,7 @@ begin
if not IsEqual(Src) then begin
FEnabled:=Src.FEnabled;
FFilename:=Src.FFilename;
FCIncludesValid:=false;
Modified:=true;
end;
end else begin
@ -452,6 +512,7 @@ begin
FFilename:=Config.GetValue('Filename/Value','');
if Project<>nil then
FFilename:=Project.NormalizeFilename(FFilename);
FCIncludesValid:=false;
FModified:=false;
end;
@ -519,6 +580,58 @@ begin
Add(Filename);
end;
function TH2PasFile.ReadCIncludes(ForceUpdate: boolean): TModalResult;
var
sl: TStringList;
i: Integer;
SrcFilename: String;
Item: TH2PasFileCInclude;
begin
if (not ForceUpdate) and CIncludesValid then exit(mrOk);
Result:=mrCancel;
if not FileExistsCached(Filename) then exit;
FCIncludesFileAge:=FileAge(Filename);
FCIncludesValid:=true;
DebugLn(['TH2PasFile.ReadCIncludes Filename="',Filename,'"']);
try
sl:=TStringList.Create;
try
sl.LoadFromFile(Filename);
for i:=0 to sl.Count-1 do begin
if not REMatches(sl[i],'^#include "(.+)"') then continue;
SrcFilename:=Trim(REVar(1));
if SrcFilename='' then continue;
// add new include
if FCIncludes=nil then FCIncludes:=TFPList.Create;
Item:=TH2PasFileCInclude.Create;
Item.SrcFilename:=SrcFilename;
Item.SrcPos:=Point(1,i);
FCIncludes.Add(Item);
end;
finally
sl.Free;
end;
SearchCIncFilenames;
Result:=mrOk;
except
on e: Exception do begin
DebugLn(['TH2PasFile.ReadCIncludes File="',Filename,'" Msg=',E.Message]);
end;
end;
end;
function TH2PasFile.CIncludesValid: boolean;
begin
Result:=false;
if not FCIncludesValid then exit;
FCIncludesValid:=false;
if Project=nil then exit;
if (not FileExistsCached(Filename)) then exit;
if FileAge(Filename)>FCIncludesFileAge then exit;
FCIncludesValid:=true;
Result:=true;
end;
{ TH2PasProject }
function TH2PasProject.GetCHeaderFileCount: integer;
@ -1122,6 +1235,32 @@ begin
AddNewTextConverterTool(FPostH2PasTools,TFixArrayOfParameterType);
end;
function TH2PasProject.SearchIncludedCHeaderFile(aFile: TH2PasFile;
const SrcFilename: string): string;
var
AFilename: String;
i: Integer;
CurFile: TH2PasFile;
begin
AFilename:=SetDirSeparators(SrcFilename);
if System.Pos(PathDelim,AFilename)>0 then begin
// with sub path -> only search relative to AFile
Result:=TrimFilename(ExtractFilePath(aFile.Filename)+AFilename);
if FileExistsCached(Result) then exit;
end else begin
// search relative to AFile
Result:=TrimFilename(ExtractFilePath(aFile.Filename)+AFilename);
if FileExistsCached(Result) then exit;
// search relative to all other .h files
for i:=0 to CHeaderFileCount-1 do begin
CurFile:=CHeaderFiles[i];
Result:=TrimFilename(ExtractFilePath(CurFile.Filename)+AFilename);
if FileExistsCached(Result) then exit;
end;
end;
Result:='';
end;
{ TH2PasConverter }
procedure TH2PasConverter.OnParseH2PasLine(Sender: TObject;
@ -2615,4 +2754,24 @@ begin
Result:=mrOk;
end;
{ TH2PasFileCInclude }
procedure TH2PasFileCInclude.SetFilename(const AValue: string);
begin
if FFilename=AValue then exit;
FFilename:=AValue;
end;
procedure TH2PasFileCInclude.SetSrcFilename(const AValue: string);
begin
if FSrcFilename=AValue then exit;
FSrcFilename:=AValue;
FFilename:='';
end;
procedure TH2PasFileCInclude.SetSrcPos(const AValue: TPoint);
begin
FSrcPos:=AValue;
end;
end.

View File

@ -15,8 +15,9 @@ object H2PasDialog: TH2PasDialog
Position = poDesktopCenter
object MainPageControl: TPageControl
AnchorSideBottom.Control = OpenSettingsButton
Height = 461
Height = 465
Width = 785
TabStop = True
ActivePage = FilesTabSheet
Align = alTop
Anchors = [akTop, akLeft, akRight, akBottom]
@ -25,10 +26,10 @@ object H2PasDialog: TH2PasDialog
object FilesTabSheet: TTabSheet
Caption = 'FilesTabSheet'
object CHeaderFilesCheckTreeView: TTreeView
Height = 427
Height = 435
Width = 255
Align = alLeft
DefaultItemHeight = 18
DefaultItemHeight = 16
StateImages = FileStateImageList
TabOrder = 0
OnMouseDown = CHeaderFilesCheckTreeViewMouseDown
@ -89,7 +90,7 @@ object H2PasDialog: TH2PasDialog
end
object CHeaderFilesSplitter1: TSplitter
Left = 255
Height = 427
Height = 435
Width = 5
Beveled = True
end
@ -101,7 +102,7 @@ object H2PasDialog: TH2PasDialog
AnchorSideBottom.Control = FilesTabSheet
AnchorSideBottom.Side = asrBottom
Left = 260
Height = 219
Height = 227
Top = 208
Width = 521
Anchors = [akTop, akLeft, akRight, akBottom]
@ -109,13 +110,28 @@ object H2PasDialog: TH2PasDialog
TabOrder = 5
object FileInfoLabel: TLabel
Left = 8
Height = 17
Height = 13
Top = 1
Width = 92
Width = 73
Caption = 'FileInfoLabel'
Color = clNone
ParentColor = False
end
object AddIncludedCHeaderFilesButton: TButton
AnchorSideBottom.Control = FileInfoGroupBox
AnchorSideBottom.Side = asrBottom
Left = 8
Height = 26
Top = 178
Width = 197
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Around = 6
BorderSpacing.InnerBorder = 4
Caption = 'AddIncludedCHeaderFilesButton'
OnClick = AddIncludedCHeaderFilesButtonClick
TabOrder = 0
end
end
object MoveFileUpButton: TButton
AnchorSideLeft.Control = AddCHeaderFilesButton
@ -155,7 +171,7 @@ object H2PasDialog: TH2PasDialog
object PreH2PasTabSheet: TTabSheet
Caption = 'PreH2PasTabSheet'
object PreH2PasGroupBox: TGroupBox
Height = 427
Height = 435
Width = 781
Align = alClient
Caption = 'PreH2PasGroupBox'
@ -280,7 +296,7 @@ object H2PasDialog: TH2PasDialog
object PostH2PasTabSheet: TTabSheet
Caption = 'PostH2PasTabSheet'
object PostH2PasGroupBox: TGroupBox
Height = 427
Height = 435
Width = 781
Align = alClient
Caption = 'PostH2PasGroupBox'
@ -367,9 +383,9 @@ object H2PasDialog: TH2PasDialog
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 5
Height = 30
Top = 466
Width = 161
Height = 26
Top = 470
Width = 124
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Around = 5
@ -383,10 +399,10 @@ object H2PasDialog: TH2PasDialog
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 171
Height = 30
Top = 466
Width = 158
Left = 134
Height = 26
Top = 470
Width = 122
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Around = 5
@ -399,10 +415,10 @@ object H2PasDialog: TH2PasDialog
AnchorSideLeft.Control = SaveSettingsButton
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = OpenSettingsButton
Left = 344
Height = 30
Top = 466
Width = 119
Left = 271
Height = 26
Top = 470
Width = 93
AutoSize = True
BorderSpacing.Left = 15
BorderSpacing.InnerBorder = 4
@ -415,10 +431,10 @@ object H2PasDialog: TH2PasDialog
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 677
Height = 30
Top = 466
Width = 103
Left = 699
Height = 26
Top = 470
Width = 81
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Around = 5
@ -431,10 +447,10 @@ object H2PasDialog: TH2PasDialog
AnchorSideLeft.Control = ConvertButton
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = OpenSettingsButton
Left = 469
Height = 30
Top = 466
Width = 183
Left = 370
Height = 26
Top = 470
Width = 144
AutoSize = True
BorderSpacing.Left = 6
BorderSpacing.InnerBorder = 4

View File

@ -7,175 +7,181 @@ LazarusResources.Add('TH2PasDialog','FORMDATA',[
+'alog'#10'KeyPreview'#9#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7
+#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#9'OnKeyDown'#7#11'FormKeyDown'
+#8'Position'#7#15'poDesktopCenter'#0#12'TPageControl'#15'MainPageControl'#24
+'AnchorSideBottom.Control'#7#18'OpenSettingsButton'#6'Height'#3#205#1#5'Widt'
+'h'#3#17#3#10'ActivePage'#7#13'FilesTabSheet'#5'Align'#7#5'alTop'#7'Anchors'
+#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'TabIndex'#2#0#8'TabOrder'#2
+#4#0#9'TTabSheet'#13'FilesTabSheet'#7'Caption'#6#13'FilesTabSheet'#0#9'TTree'
+'View'#25'CHeaderFilesCheckTreeView'#6'Height'#3#171#1#5'Width'#3#255#0#5'Al'
+'ign'#7#6'alLeft'#17'DefaultItemHeight'#2#18#11'StateImages'#7#18'FileStateI'
+'mageList'#8'TabOrder'#2#0#11'OnMouseDown'#7'"CHeaderFilesCheckTreeViewMouse'
+'Down'#18'OnSelectionChanged'#7')CHeaderFilesCheckTreeViewSelectionChanged'#7
+'Options'#11#19'tvoAllowMultiselect'#17'tvoAutoItemHeight'#16'tvoHideSelecti'
+'on'#21'tvoKeepCollapsedNodes'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoSho'
+'wRoot'#11'tvoToolTips'#0#0#0#7'TButton'#21'AddCHeaderFilesButton'#22'Anchor'
+'SideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'a'
+'srBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2#12#5'Width'#3#185#0#18'Bor'
+'derSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#21'AddC'
+'HeaderFilesButton'#7'OnClick'#7#26'AddCHeaderFilesButtonClick'#8'TabOrder'#2
+#1#0#0#7'TButton'#24'DeleteCHeaderFilesButton'#22'AnchorSideLeft.Control'#7
+#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3
+#10#1#6'Height'#2#25#3'Top'#2'('#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#24'DeleteCHeaderFilesButton'
+#7'OnClick'#7#29'DeleteCHeaderFilesButtonClick'#8'TabOrder'#2#2#0#0#7'TButto'
+'n'#27'EnableAllCHeaderFilesButton'#22'AnchorSideLeft.Control'#7#21'CHeaderF'
+'ilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Heig'
+'ht'#2#25#3'Top'#2'H'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'BorderS'
+'pacing.InnerBorder'#2#4#7'Caption'#6#27'EnableAllCHeaderFilesButton'#7'OnCl'
+'ick'#7' EnableAllCHeaderFilesButtonClick'#8'TabOrder'#2#3#0#0#7'TButton'#28
+'DisableAllCHeaderFilesButton'#22'AnchorSideLeft.Control'#7#21'CHeaderFilesS'
+'plitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2
+#25#3'Top'#2'h'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpacing'
+'.InnerBorder'#2#4#7'Caption'#6#28'DisableAllCHeaderFilesButton'#7'OnClick'#7
+'!DisableAllCHeaderFilesButtonClick'#8'TabOrder'#2#4#0#0#9'TSplitter'#21'CHe'
+'aderFilesSplitter1'#4'Left'#3#255#0#6'Height'#3#171#1#5'Width'#2#5#7'Bevele'
+'d'#9#0#0#9'TGroupBox'#16'FileInfoGroupBox'#22'AnchorSideLeft.Control'#7#21
+'AnchorSideBottom.Control'#7#18'OpenSettingsButton'#6'Height'#3#209#1#5'Widt'
+'h'#3#17#3#7'TabStop'#9#10'ActivePage'#7#13'FilesTabSheet'#5'Align'#7#5'alTo'
+'p'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'TabIndex'#2#0
+#8'TabOrder'#2#4#0#9'TTabSheet'#13'FilesTabSheet'#7'Caption'#6#13'FilesTabSh'
+'eet'#0#9'TTreeView'#25'CHeaderFilesCheckTreeView'#6'Height'#3#179#1#5'Width'
+#3#255#0#5'Align'#7#6'alLeft'#17'DefaultItemHeight'#2#16#11'StateImages'#7#18
+'FileStateImageList'#8'TabOrder'#2#0#11'OnMouseDown'#7'"CHeaderFilesCheckTre'
+'eViewMouseDown'#18'OnSelectionChanged'#7')CHeaderFilesCheckTreeViewSelectio'
+'nChanged'#7'Options'#11#19'tvoAllowMultiselect'#17'tvoAutoItemHeight'#16'tv'
+'oHideSelection'#21'tvoKeepCollapsedNodes'#14'tvoShowButtons'#12'tvoShowLine'
+'s'#11'tvoShowRoot'#11'tvoToolTips'#0#0#0#7'TButton'#21'AddCHeaderFilesButto'
+'n'#22'AnchorSideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft'
+'.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2#12#5'Width'#3
+#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Captio'
+'n'#6#21'AddCHeaderFilesButton'#7'OnClick'#7#26'AddCHeaderFilesButtonClick'#8
+'TabOrder'#2#1#0#0#7'TButton'#24'DeleteCHeaderFilesButton'#22'AnchorSideLeft'
+'.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'
+#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'('#5'Width'#3#185#0#18'BorderSpacing'
+'.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#24'DeleteCHeaderF'
+'ilesButton'#7'OnClick'#7#29'DeleteCHeaderFilesButtonClick'#8'TabOrder'#2#2#0
+#0#7'TButton'#27'EnableAllCHeaderFilesButton'#22'AnchorSideLeft.Control'#7#21
+'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1
+#6'Height'#2#25#3'Top'#2'H'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'B'
+'orderSpacing.InnerBorder'#2#4#7'Caption'#6#27'EnableAllCHeaderFilesButton'#7
+'OnClick'#7' EnableAllCHeaderFilesButtonClick'#8'TabOrder'#2#3#0#0#7'TButton'
+#28'DisableAllCHeaderFilesButton'#22'AnchorSideLeft.Control'#7#21'CHeaderFil'
+'esSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'
+#2#25#3'Top'#2'h'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpaci'
+'ng.InnerBorder'#2#4#7'Caption'#6#28'DisableAllCHeaderFilesButton'#7'OnClick'
+#7'!DisableAllCHeaderFilesButtonClick'#8'TabOrder'#2#4#0#0#9'TSplitter'#21'C'
+'HeaderFilesSplitter1'#4'Left'#3#255#0#6'Height'#3#179#1#5'Width'#2#5#7'Beve'
+'led'#9#0#0#9'TGroupBox'#16'FileInfoGroupBox'#22'AnchorSideLeft.Control'#7#21
+'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'AnchorSide'
+'Right.Control'#7#13'FilesTabSheet'#20'AnchorSideRight.Side'#7#9'asrBottom'
+#24'AnchorSideBottom.Control'#7#13'FilesTabSheet'#21'AnchorSideBottom.Side'#7
+#9'asrBottom'#4'Left'#3#4#1#6'Height'#3#219#0#3'Top'#3#208#0#5'Width'#3#9#2#7
+#9'asrBottom'#4'Left'#3#4#1#6'Height'#3#227#0#3'Top'#3#208#0#5'Width'#3#9#2#7
+'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6#16'Fil'
+'eInfoGroupBox'#8'TabOrder'#2#5#0#6'TLabel'#13'FileInfoLabel'#4'Left'#2#8#6
+'Height'#2#17#3'Top'#2#1#5'Width'#2'\'#7'Caption'#6#13'FileInfoLabel'#5'Colo'
+'r'#7#6'clNone'#11'ParentColor'#8#0#0#0#7'TButton'#16'MoveFileUpButton'#22'A'
+'nchorSideLeft.Control'#7#21'AddCHeaderFilesButton'#21'AnchorSideTop.Control'
+#7#28'DisableAllCHeaderFilesButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23
+'AnchorSideRight.Control'#7#21'AddCHeaderFilesButton'#20'AnchorSideRight.Sid'
+'e'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#135#0#5'Width'#3
+#185#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2
+#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#16'MoveFileUpButton'#7'OnC'
+'lick'#7#21'MoveFileUpButtonClick'#8'TabOrder'#2#6#0#0#7'TButton'#18'MoveFil'
+'eDownButton'#22'AnchorSideLeft.Control'#7#21'AddCHeaderFilesButton'#21'Anch'
+'orSideTop.Control'#7#16'MoveFileUpButton'#18'AnchorSideTop.Side'#7#9'asrBot'
+'tom'#23'AnchorSideRight.Control'#7#21'AddCHeaderFilesButton'#20'AnchorSideR'
+'ight.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#166#0#5'Wi'
+'dth'#3#185#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing'
+'.Top'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18'MoveFileDownBut'
+'ton'#7'OnClick'#7#23'MoveFileDownButtonClick'#8'TabOrder'#2#7#0#0#0#9'TTabS'
+'heet'#16'PreH2PasTabSheet'#7'Caption'#6#16'PreH2PasTabSheet'#0#9'TGroupBox'
+#16'PreH2PasGroupBox'#6'Height'#3#171#1#5'Width'#3#13#3#5'Align'#7#8'alClien'
+'t'#7'Caption'#6#16'PreH2PasGroupBox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#20
+'h2pasOptionsTabSheet'#7'Caption'#6#20'h2pasOptionsTabSheet'#0#6'TLabel'#12
,'LibNameLabel'#21'AnchorSideTop.Control'#7#11'LibnameEdit'#18'AnchorSideTop.'
+'Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#13#3'Top'#3#25#1#5'Width'#2'Q'
+#17'BorderSpacing.Top'#2#10#7'Caption'#6#12'LibNameLabel'#5'Color'#7#6'clNon'
+'e'#11'ParentColor'#8#0#0#6'TLabel'#14'OutputExtLabel'#21'AnchorSideTop.Cont'
+'rol'#7#13'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6
+'Height'#2#13#3'Top'#3'9'#1#5'Width'#2'V'#7'Caption'#6#14'OutputExtLabel'#5
+'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#14'OutputDirLabel'#21'An'
+'chorSideTop.Control'#7#13'OutputDirEdit'#18'AnchorSideTop.Side'#7#9'asrCent'
+'er'#4'Left'#2#6#6'Height'#2#13#3'Top'#3'V'#1#5'Width'#2'U'#7'Caption'#6#14
+'OutputDirLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#11'Libn'
+'ameEdit'#22'AnchorSideLeft.Control'#7#12'LibNameLabel'#19'AnchorSideLeft.Si'
+'de'#7#9'asrBottom'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2']'#6'Hei'
+'ght'#2#23#3'Top'#3#20#1#5'Width'#2'q'#18'BorderSpacing.Left'#2#6#17'BorderS'
+'pacing.Top'#2#6#13'OnEditingDone'#7#22'LibnameEditEditingDone'#8'TabOrder'#2
+#0#4'Text'#6#11'LibnameEdit'#0#0#5'TEdit'#13'OutputExtEdit'#22'AnchorSideLef'
+'t.Control'#7#14'OutputExtLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#18'A'
+'nchorSideTop.Side'#7#9'asrBottom'#4'Left'#2'b'#6'Height'#2#23#3'Top'#3'4'#1
+#5'Width'#2'P'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEdi'
+'tingDone'#7#24'OutputExtEditEditingDone'#8'TabOrder'#2#1#4'Text'#6#13'Outpu'
+'tExtEdit'#0#0#5'TEdit'#13'OutputDirEdit'#22'AnchorSideLeft.Control'#7#14'Ou'
+'tputDirLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contr'
+'ol'#7#13'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2'a'#6
+'Height'#2#23#3'Top'#3'Q'#1#5'Width'#3#141#1#18'BorderSpacing.Left'#2#6#17'B'
+'orderSpacing.Top'#2#6#13'OnEditingDone'#7#24'OutputDirEditEditingDone'#8'Ta'
+'bOrder'#2#2#4'Text'#6#13'OutputDirEdit'#0#0#7'TButton'#21'OutputDirBrowseBu'
+'tton'#22'AnchorSideLeft.Control'#7#13'OutputDirEdit'#19'AnchorSideLeft.Side'
+#7#9'asrBottom'#21'AnchorSideTop.Control'#7#13'OutputDirEdit'#24'AnchorSideB'
+'ottom.Control'#7#13'OutputDirEdit'#21'AnchorSideBottom.Side'#7#9'asrBottom'
+#4'Left'#3#238#1#6'Height'#2#23#3'Top'#3'Q'#1#5'Width'#2' '#7'Anchors'#11#5
+'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'
+#6#3'...'#7'OnClick'#7#26'OutputDirBrowseButtonClick'#8'TabOrder'#2#3#0#0#11
+'TCheckGroup'#22'h2pasOptionsCheckGroup'#4'Left'#2#6#6'Height'#3#8#1#3'Top'#2
+#4#5'Width'#3#0#3#8'AutoFill'#9#7'Caption'#6#22'h2pasOptionsCheckGroup'#28'C'
+'hildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'Ch'
+'ildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.'
+'EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizo'
+'ntal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChil'
+'ds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizi'
+'ng.ControlsPerLine'#2#2#7'Columns'#2#2#11'OnItemClick'#7#31'h2pasOptionsChe'
+'ckGroupItemClick'#8'TabOrder'#2#4#0#0#0#9'TTabSheet'#17'PostH2PasTabSheet'#7
+'Caption'#6#17'PostH2PasTabSheet'#0#9'TGroupBox'#17'PostH2PasGroupBox'#6'Hei'
+'ght'#3#171#1#5'Width'#3#13#3#5'Align'#7#8'alClient'#7'Caption'#6#17'PostH2P'
+'asGroupBox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#16'SettingsTabSheet'#7'Capti'
+'on'#6#16'SettingsTabSheet'#0#6'TLabel'#18'H2PasFilenameLabel'#21'AnchorSide'
+'Top.Control'#7#17'H2PasFilenameEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4
+'Left'#2#6#6'Height'#2#17#3'Top'#2#7#5'Width'#3#155#0#7'Caption'#6#18'H2PasF'
+'ilenameLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#9'TCheckBox'#30'Op'
+'enLastProjectOnStartCheckBox'#4'Left'#2#6#6'Height'#2#24#3'Top'#2'*'#5'Widt'
+'h'#3#21#1#7'Caption'#6#30'OpenLastProjectOnStartCheckBox'#8'OnChange'#7'$Op'
+'enLastProjectOnStartCheckBoxChange'#8'TabOrder'#2#0#0#0#7'TButton'#20'SaveS'
+'ettingsAsButton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'R'#5'Width'#3#177#0#8
+'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#20'SaveSettingsA'
+'sButton'#7'OnClick'#7#25'SaveSettingsAsButtonClick'#8'TabOrder'#2#1#0#0#5'T'
+'Edit'#17'H2PasFilenameEdit'#22'AnchorSideLeft.Control'#7#18'H2PasFilenameLa'
+'bel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#167#0#6'Height'#2#23#3
+'Top'#2#4#5'Width'#3'`'#1#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2
+#6#13'OnEditingDone'#7#28'H2PasFilenameEditEditingDone'#8'TabOrder'#2#2#4'Te'
+'xt'#6#17'H2PasFilenameEdit'#0#0#7'TButton'#25'h2pasFilenameBrowseButton'#22
+'AnchorSideLeft.Control'#7#17'H2PasFilenameEdit'#19'AnchorSideLeft.Side'#7#9
+'asrBottom'#21'AnchorSideTop.Control'#7#17'H2PasFilenameEdit'#24'AnchorSideB'
+'ottom.Control'#7#17'H2PasFilenameEdit'#21'AnchorSideBottom.Side'#7#9'asrBot'
+'tom'#4'Left'#3#7#2#6'Height'#2#23#3'Top'#2#4#5'Width'#2'#'#7'Anchors'#11#5
+'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'
+#6#3'...'#7'OnClick'#7#30'h2pasFilenameBrowseButtonClick'#8'TabOrder'#2#3#0#0
,#7'TButton'#17'NewSettingsButton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'|'#5'W'
+'idth'#3#154#0#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
+#17'NewSettingsButton'#7'OnClick'#7#22'NewSettingsButtonClick'#8'TabOrder'#2
+#4#0#0#0#0#7'TButton'#18'OpenSettingsButton'#22'AnchorSideLeft.Control'#7#5
+'Owner'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9
+'asrBottom'#4'Left'#2#5#6'Height'#2#30#3'Top'#3#210#1#5'Width'#3#161#0#7'Anc'
+'Height'#2#13#3'Top'#2#1#5'Width'#2'I'#7'Caption'#6#13'FileInfoLabel'#5'Colo'
+'r'#7#6'clNone'#11'ParentColor'#8#0#0#7'TButton'#29'AddIncludedCHeaderFilesB'
+'utton'#24'AnchorSideBottom.Control'#7#16'FileInfoGroupBox'#21'AnchorSideBot'
+'tom.Side'#7#9'asrBottom'#4'Left'#2#8#6'Height'#2#26#3'Top'#3#178#0#5'Width'
+#3#197#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacin'
+'g.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#29'AddIncluded'
+'CHeaderFilesButton'#7'OnClick'#7'"AddIncludedCHeaderFilesButtonClick'#8'Tab'
+'Order'#2#0#0#0#0#7'TButton'#16'MoveFileUpButton'#22'AnchorSideLeft.Control'
+#7#21'AddCHeaderFilesButton'#21'AnchorSideTop.Control'#7#28'DisableAllCHeade'
+'rFilesButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Cont'
+'rol'#7#21'AddCHeaderFilesButton'#20'AnchorSideRight.Side'#7#9'asrBottom'#4
+'Left'#3#10#1#6'Height'#2#25#3'Top'#3#135#0#5'Width'#3#185#0#7'Anchors'#11#5
+'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSpacing.In'
+'nerBorder'#2#4#7'Caption'#6#16'MoveFileUpButton'#7'OnClick'#7#21'MoveFileUp'
+'ButtonClick'#8'TabOrder'#2#6#0#0#7'TButton'#18'MoveFileDownButton'#22'Ancho'
+'rSideLeft.Control'#7#21'AddCHeaderFilesButton'#21'AnchorSideTop.Control'#7
+#16'MoveFileUpButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRig'
+'ht.Control'#7#21'AddCHeaderFilesButton'#20'AnchorSideRight.Side'#7#9'asrBot'
+'tom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#166#0#5'Width'#3#185#0#7'Anchor'
+'s'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSp'
,'acing.InnerBorder'#2#4#7'Caption'#6#18'MoveFileDownButton'#7'OnClick'#7#23
+'MoveFileDownButtonClick'#8'TabOrder'#2#7#0#0#0#9'TTabSheet'#16'PreH2PasTabS'
+'heet'#7'Caption'#6#16'PreH2PasTabSheet'#0#9'TGroupBox'#16'PreH2PasGroupBox'
+#6'Height'#3#179#1#5'Width'#3#13#3#5'Align'#7#8'alClient'#7'Caption'#6#16'Pr'
+'eH2PasGroupBox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#20'h2pasOptionsTabSheet'
+#7'Caption'#6#20'h2pasOptionsTabSheet'#0#6'TLabel'#12'LibNameLabel'#21'Ancho'
+'rSideTop.Control'#7#11'LibnameEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4
+'Left'#2#6#6'Height'#2#13#3'Top'#3#25#1#5'Width'#2'Q'#17'BorderSpacing.Top'#2
+#10#7'Caption'#6#12'LibNameLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0
+#6'TLabel'#14'OutputExtLabel'#21'AnchorSideTop.Control'#7#13'OutputExtEdit'
+#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#13#3'Top'#3'9'
+#1#5'Width'#2'V'#7'Caption'#6#14'OutputExtLabel'#5'Color'#7#6'clNone'#11'Par'
+'entColor'#8#0#0#6'TLabel'#14'OutputDirLabel'#21'AnchorSideTop.Control'#7#13
+'OutputDirEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2
+#13#3'Top'#3'V'#1#5'Width'#2'U'#7'Caption'#6#14'OutputDirLabel'#5'Color'#7#6
+'clNone'#11'ParentColor'#8#0#0#5'TEdit'#11'LibnameEdit'#22'AnchorSideLeft.Co'
+'ntrol'#7#12'LibNameLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#18'AnchorS'
+'ideTop.Side'#7#9'asrBottom'#4'Left'#2']'#6'Height'#2#23#3'Top'#3#20#1#5'Wid'
+'th'#2'q'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingD'
+'one'#7#22'LibnameEditEditingDone'#8'TabOrder'#2#0#4'Text'#6#11'LibnameEdit'
+#0#0#5'TEdit'#13'OutputExtEdit'#22'AnchorSideLeft.Control'#7#14'OutputExtLab'
+'el'#19'AnchorSideLeft.Side'#7#9'asrBottom'#18'AnchorSideTop.Side'#7#9'asrBo'
+'ttom'#4'Left'#2'b'#6'Height'#2#23#3'Top'#3'4'#1#5'Width'#2'P'#18'BorderSpac'
+'ing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#24'OutputExtEdi'
+'tEditingDone'#8'TabOrder'#2#1#4'Text'#6#13'OutputExtEdit'#0#0#5'TEdit'#13'O'
+'utputDirEdit'#22'AnchorSideLeft.Control'#7#14'OutputDirLabel'#19'AnchorSide'
+'Left.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#13'OutputExtEdit'#18
+'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2'a'#6'Height'#2#23#3'Top'#3'Q'#1
+#5'Width'#3#141#1#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'On'
+'EditingDone'#7#24'OutputDirEditEditingDone'#8'TabOrder'#2#2#4'Text'#6#13'Ou'
+'tputDirEdit'#0#0#7'TButton'#21'OutputDirBrowseButton'#22'AnchorSideLeft.Con'
+'trol'#7#13'OutputDirEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorS'
+'ideTop.Control'#7#13'OutputDirEdit'#24'AnchorSideBottom.Control'#7#13'Outpu'
+'tDirEdit'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#238#1#6'Height'
+#2#23#3'Top'#3'Q'#1#5'Width'#2' '#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBotto'
+'m'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'...'#7'OnClick'#7#26
+'OutputDirBrowseButtonClick'#8'TabOrder'#2#3#0#0#11'TCheckGroup'#22'h2pasOpt'
+'ionsCheckGroup'#4'Left'#2#6#6'Height'#3#8#1#3'Top'#2#4#5'Width'#3#0#3#8'Aut'
+'oFill'#9#7'Caption'#6#22'h2pasOptionsCheckGroup'#28'ChildSizing.LeftRightSp'
+'acing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHoriz'
+'ontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24
+'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChi'
+'lds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Lay'
+'out'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#2
+#7'Columns'#2#2#11'OnItemClick'#7#31'h2pasOptionsCheckGroupItemClick'#8'TabO'
+'rder'#2#4#0#0#0#9'TTabSheet'#17'PostH2PasTabSheet'#7'Caption'#6#17'PostH2Pa'
+'sTabSheet'#0#9'TGroupBox'#17'PostH2PasGroupBox'#6'Height'#3#179#1#5'Width'#3
+#13#3#5'Align'#7#8'alClient'#7'Caption'#6#17'PostH2PasGroupBox'#8'TabOrder'#2
+#0#0#0#0#9'TTabSheet'#16'SettingsTabSheet'#7'Caption'#6#16'SettingsTabSheet'
+#0#6'TLabel'#18'H2PasFilenameLabel'#21'AnchorSideTop.Control'#7#17'H2PasFile'
+'nameEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3
+'Top'#2#7#5'Width'#3#155#0#7'Caption'#6#18'H2PasFilenameLabel'#5'Color'#7#6
+'clNone'#11'ParentColor'#8#0#0#9'TCheckBox'#30'OpenLastProjectOnStartCheckBo'
+'x'#4'Left'#2#6#6'Height'#2#24#3'Top'#2'*'#5'Width'#3#21#1#7'Caption'#6#30'O'
+'penLastProjectOnStartCheckBox'#8'OnChange'#7'$OpenLastProjectOnStartCheckBo'
+'xChange'#8'TabOrder'#2#0#0#0#7'TButton'#20'SaveSettingsAsButton'#4'Left'#2#6
+#6'Height'#2#30#3'Top'#2'R'#5'Width'#3#177#0#8'AutoSize'#9#25'BorderSpacing.'
+'InnerBorder'#2#4#7'Caption'#6#20'SaveSettingsAsButton'#7'OnClick'#7#25'Save'
+'SettingsAsButtonClick'#8'TabOrder'#2#1#0#0#5'TEdit'#17'H2PasFilenameEdit'#22
+'AnchorSideLeft.Control'#7#18'H2PasFilenameLabel'#19'AnchorSideLeft.Side'#7#9
+'asrBottom'#4'Left'#3#167#0#6'Height'#2#23#3'Top'#2#4#5'Width'#3'`'#1#18'Bor'
+'derSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#28'H2Pas'
+'FilenameEditEditingDone'#8'TabOrder'#2#2#4'Text'#6#17'H2PasFilenameEdit'#0#0
+#7'TButton'#25'h2pasFilenameBrowseButton'#22'AnchorSideLeft.Control'#7#17'H2'
,'PasFilenameEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Co'
+'ntrol'#7#17'H2PasFilenameEdit'#24'AnchorSideBottom.Control'#7#17'H2PasFilen'
+'ameEdit'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#7#2#6'Height'#2
+#23#3'Top'#2#4#5'Width'#2'#'#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'...'#7'OnClick'#7#30'h2pas'
+'FilenameBrowseButtonClick'#8'TabOrder'#2#3#0#0#7'TButton'#17'NewSettingsBut'
+'ton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'|'#5'Width'#3#154#0#8'AutoSize'#9
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#17'NewSettingsButton'#7'OnCl'
+'ick'#7#22'NewSettingsButtonClick'#8'TabOrder'#2#4#0#0#0#0#7'TButton'#18'Ope'
+'nSettingsButton'#22'AnchorSideLeft.Control'#7#5'Owner'#24'AnchorSideBottom.'
+'Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#5#6
+'Height'#2#26#3'Top'#3#214#1#5'Width'#2'|'#7'Anchors'#11#6'akLeft'#8'akBotto'
+'m'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5#25'BorderSpacing.InnerBorde'
+'r'#2#4#7'Caption'#6#18'OpenSettingsButton'#7'OnClick'#7#23'OpenSettingsButt'
+'onClick'#8'TabOrder'#2#1#0#0#7'TButton'#18'SaveSettingsButton'#22'AnchorSid'
+'eLeft.Control'#7#18'OpenSettingsButton'#19'AnchorSideLeft.Side'#7#9'asrBott'
+'om'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'a'
+'srBottom'#4'Left'#3#134#0#6'Height'#2#26#3'Top'#3#214#1#5'Width'#2'z'#7'Anc'
+'hors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18'OpenSettingsButton'#7'OnC'
+'lick'#7#23'OpenSettingsButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#18'SaveS'
+'ettingsButton'#22'AnchorSideLeft.Control'#7#18'OpenSettingsButton'#19'Ancho'
+'rSideLeft.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'A'
+'nchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#171#0#6'Height'#2#30#3'Top'#3
+#210#1#5'Width'#3#158#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9
+#20'BorderSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
+#18'SaveSettingsButton'#7'OnClick'#7#23'SaveSettingsButtonClick'#8'TabOrder'
+#2#2#0#0#7'TButton'#13'ConvertButton'#22'AnchorSideLeft.Control'#7#18'SaveSe'
+'ttingsButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contr'
+'ol'#7#18'OpenSettingsButton'#4'Left'#3'X'#1#6'Height'#2#30#3'Top'#3#210#1#5
+'Width'#2'w'#8'AutoSize'#9#18'BorderSpacing.Left'#2#15#25'BorderSpacing.Inne'
+'rBorder'#2#4#7'Caption'#6#13'ConvertButton'#7'OnClick'#7#18'ConvertButtonCl'
+'ick'#8'TabOrder'#2#0#0#0#7'TButton'#11'CloseButton'#23'AnchorSideRight.Cont'
+'rol'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom'
+'.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#165
+#2#6'Height'#2#30#3'Top'#3#210#1#5'Width'#2'g'#7'Anchors'#11#7'akRight'#8'ak'
+'Bottom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5#25'BorderSpacing.Inner'
+'Border'#2#4#7'Caption'#6#11'CloseButton'#7'OnClick'#7#16'CloseButtonClick'#8
+'TabOrder'#2#3#0#0#7'TButton'#21'ConvertAndBuildButton'#22'AnchorSideLeft.Co'
+'ntrol'#7#13'ConvertButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'Anchor'
+'SideTop.Control'#7#18'OpenSettingsButton'#4'Left'#3#213#1#6'Height'#2#30#3
+'Top'#3#210#1#5'Width'#3#183#0#8'AutoSize'#9#18'BorderSpacing.Left'#2#6#25'B'
+'orderSpacing.InnerBorder'#2#4#7'Caption'#6#21'ConvertAndBuildButton'#7'OnCl'
+'ick'#7#26'ConvertAndBuildButtonClick'#8'TabOrder'#2#5#0#0#10'TImageList'#18
+'FileStateImageList'#4'left'#3#136#0#3'top'#2'^'#6'Bitmap'#10'}'#3#0#0'li'#2
+#0#0#0#16#0#0#0#16#0#0#0#191#1#0#0'/* XPM */'#10'static char * pkg_removedfi'
+'les_xpm[] = {'#10'"14 13 10 1",'#10'" '#9'c None",'#10'".'#9'c #000044",'#10
+'"+'#9'c #000055",'#10'"@'#9'c #FF1414",'#10'"#'#9'c #000084",'#10'"$'#9'c #'
+'000033",'#10'"%'#9'c #FFFFFF",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #CBCBCB",'
+#10'"='#9'c #000000",'#10'" ..++.... ",'#10'" .@@####. @@ ",'#10'" $%@'
+'@%%&.@@ ",'#10'" $*%@@..@@.. ",'#10'" =%%.@@@@... ",'#10'"...++$%@@%%&=%'
+'",'#10'".....$@@@@&&=%",'#10'".%*%%@@%%@@&=%",'#10'".*%%@@%&&&@@=%",'#10'".'
+'%%@@======@@%",'#10'".%@@&&&=%%%%@%",'#10'".@@=====% ",'#10'" %%%%%%%% '
+' "};'#10#168#1#0#0'/* XPM */'#10'static char * pkg_files_xpm[] = {'#10'"'
+'14 13 9 1",'#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #000055",'
+#10'"@'#9'c #000084",'#10'"#'#9'c #000033",'#10'"$'#9'c #FFFFFF",'#10'"%'#9
+'c #CBCBCB",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #000000",'#10'" ..++.... '
+'",'#10'" .@@@@@@. ",'#10'" #$%$$$&.$ ",'#10'" #%$........ ",'#10'" '
+' *$$........ ",'#10'"...++#$%$$$&*$",'#10'".....#%$$$&&*$",'#10'".$%$$*$$$&'
+'$&*$",'#10'".%$$$*$&&&&&*$",'#10'".$$$$********$",'#10'".$&&&&&*$$$$$$",'#10
+'".*******$ ",'#10'" $$$$$$$$ "};'#10#0#0#0
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18'SaveSettingsButton'#7'OnC'
+'lick'#7#23'SaveSettingsButtonClick'#8'TabOrder'#2#2#0#0#7'TButton'#13'Conve'
+'rtButton'#22'AnchorSideLeft.Control'#7#18'SaveSettingsButton'#19'AnchorSide'
+'Left.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#18'OpenSettingsButton'
+#4'Left'#3#15#1#6'Height'#2#26#3'Top'#3#214#1#5'Width'#2']'#8'AutoSize'#9#18
+'BorderSpacing.Left'#2#15#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#13
+'ConvertButton'#7'OnClick'#7#18'ConvertButtonClick'#8'TabOrder'#2#0#0#0#7'TB'
+'utton'#11'CloseButton'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSide'
+'Right.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'Ancho'
+'rSideBottom.Side'#7#9'asrBottom'#4'Left'#3#187#2#6'Height'#2#26#3'Top'#3#214
+#1#5'Width'#2'Q'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#20'Bor'
+'derSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#11'Cl'
+'oseButton'#7'OnClick'#7#16'CloseButtonClick'#8'TabOrder'#2#3#0#0#7'TButton'
+#21'ConvertAndBuildButton'#22'AnchorSideLeft.Control'#7#13'ConvertButton'#19
+'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#18'OpenSett'
+'ingsButton'#4'Left'#3'r'#1#6'Height'#2#26#3'Top'#3#214#1#5'Width'#3#144#0#8
+'AutoSize'#9#18'BorderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7
+'Caption'#6#21'ConvertAndBuildButton'#7'OnClick'#7#26'ConvertAndBuildButtonC'
+'lick'#8'TabOrder'#2#5#0#0#10'TImageList'#18'FileStateImageList'#4'left'#3
+#136#0#3'top'#2'^'#6'Bitmap'#10'}'#3#0#0'li'#2#0#0#0#16#0#0#0#16#0#0#0#191#1
+#0#0'/* XPM */'#10'static char * pkg_removedfiles_xpm[] = {'#10'"14 13 10 1"'
+','#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #000055",'#10'"@'#9
+'c #FF1414",'#10'"#'#9'c #000084",'#10'"$'#9'c #000033",'#10'"%'#9'c #FFFFFF'
+'",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #CBCBCB",'#10'"='#9'c #000000",'#10'" '
+' ..++.... ",'#10'" .@@####. @@ ",'#10'" $%@@%%&.@@ ",'#10'" $*%@@..@'
+'@.. ",'#10'" =%%.@@@@... ",'#10'"...++$%@@%%&=%",'#10'".....$@@@@&&=%",'#10
+'".%*%%@@%%@@&=%",'#10'".*%%@@%&&&@@=%",'#10'".%%@@======@@%",'#10'".%@@&&&='
+'%%%%@%",'#10'".@@=====% ",'#10'" %%%%%%%% "};'#10#168#1#0#0'/* XPM '
+'*/'#10'static char * pkg_files_xpm[] = {'#10'"14 13 9 1",'#10'" '#9'c None"'
+','#10'".'#9'c #000044",'#10'"+'#9'c #000055",'#10'"@'#9'c #000084",'#10'"#'
+#9'c #000033",'#10'"$'#9'c #FFFFFF",'#10'"%'#9'c #CBCBCB",'#10'"&'#9'c #D5D5'
+'EF",'#10'"*'#9'c #000000",'#10'" ..++.... ",'#10'" .@@@@@@. ",'#10
+'" #$%$$$&.$ ",'#10'" #%$........ ",'#10'" *$$........ ",'#10'"...++#$%'
+'$$$&*$",'#10'".....#%$$$&&*$",'#10'".$%$$*$$$&$&*$",'#10'".%$$$*$&&&&&*$",'
+#10'".$$$$********$",'#10'".$&&&&&*$$$$$$",'#10'".*******$ ",'#10'" $$$$'
+'$$$$ "};'#10#0#0#0
]);

View File

@ -43,6 +43,7 @@ type
FileInfoGroupBox: TGroupBox;
FileInfoLabel: TLabel;
MainPageControl: TPageControl;
AddIncludedCHeaderFilesButton: TButton;
// c header files
FilesTabSheet: TTabSheet;
@ -90,6 +91,7 @@ type
CloseButton: TButton;
procedure AddCHeaderFilesButtonClick(Sender: TObject);
procedure AddIncludedCHeaderFilesButtonClick(Sender: TObject);
procedure CHeaderFilesCheckTreeViewMouseDown(Sender: TOBject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure CHeaderFilesCheckTreeViewSelectionChanged(Sender: TObject);
@ -225,6 +227,7 @@ begin
MoveFileDownButton.Caption:='Move file down';
MoveFileUpButton.Caption:='Move file up';
FileInfoGroupBox.Caption:='File information';
AddIncludedCHeaderFilesButton.Caption:='Add included .h files';
h2pasOptionsTabSheet.Caption:='h2pas Options';
h2pasOptionsCheckGroup.Caption:='Options';
with h2pasOptionsCheckGroup.Items do begin
@ -410,6 +413,54 @@ begin
end;
end;
procedure TH2PasDialog.AddIncludedCHeaderFilesButtonClick(Sender: TObject);
var
AFile: TH2PasFile;
sl: TStringList;
i: Integer;
IncFile: TH2PasFileCInclude;
CurFilename: String;
j: Integer;
s: String;
begin
AFile:=GetCurrentCHeaderFile;
if AFile=nil then exit;
AFile.ReadCIncludes(false);
sl:=TStringList.Create;
try
for i:=0 to AFile.CIncludeCount-1 do begin
IncFile:=AFile.CIncludes[i];
CurFilename:=IncFile.Filename;
if CurFilename='' then continue;
// .h file found in include directories
if Project.CHeaderFileWithFilename(CurFilename)<>nil then continue;
// .h file not yet in project
j:=sl.Count-1;
while (j>=0) and (CompareFilenames(CurFilename,sl[j])<>0) do dec(j);
if j>=0 then continue;
// .h file not yet in list
sl.Add(CurFilename);
end;
if sl.Count>0 then begin
s:='';
for i:=0 to sl.Count-1 do begin
CurFilename:=Project.ShortenFilename(sl[i]);
s:=s+#13+CurFilename;
end;
if QuestionDlg('Add .h files?',
'Add these .h files to h2pas project:'#13#13
+s+#13+'?',
mtConfirmation,[mbYes,mbNo],0)=mrYes
then begin
Project.AddFiles(sl);
UpdateFilesPage;
end;
end;
finally
sl.Free;
end;
end;
procedure TH2PasDialog.CHeaderFilesCheckTreeViewSelectionChanged(Sender: TObject
);
begin
@ -678,6 +729,8 @@ var
s: String;
Filename: String;
OutputFilename: String;
i: Integer;
IncFile: TH2PasFileCInclude;
begin
AFile:=GetCurrentCHeaderFile;
if AFile<>nil then begin
@ -687,9 +740,23 @@ begin
s:=s+#13+'ERROR: file not found';
OutputFilename:=AFile.GetOutputFilename;
s:=s+#13+'Output: '+OutputFilename;
AFile.ReadCIncludes(false);
if AFile.CIncludeCount>0 then begin
s:=s+#13#13+'Includes:';
for i:=0 to AFile.CIncludeCount-1 do begin
IncFile:=AFile.CIncludes[i];
s:=s+#13+IncFile.SrcFilename+':'+IntToStr(IncFile.SrcPos.Y);
end;
AddIncludedCHeaderFilesButton.Visible:=true;
end else begin
AddIncludedCHeaderFilesButton.Visible:=false;
end;
FileInfoLabel.Caption:=s;
end else begin
FileInfoLabel.Caption:='No file selected.';
AddIncludedCHeaderFilesButton.Visible:=false;
end;
end;

View File

@ -23,18 +23,22 @@
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="3">
<RequiredPackages Count="4">
<Item1>
<PackageName Value="SimpleIDEIntf"/>
<MinVersion Valid="True"/>
</Item1>
<Item2>
<PackageName Value="H2PasWizard"/>
<MinVersion Valid="True"/>
<PackageName Value="LCL"/>
<MinVersion Major="1" Valid="True"/>
</Item2>
<Item3>
<PackageName Value="CodeTools"/>
<PackageName Value="H2PasWizard"/>
<MinVersion Valid="True"/>
</Item3>
<Item4>
<PackageName Value="CodeTools"/>
</Item4>
</RequiredPackages>
<Units Count="1">
<Unit0>

View File

@ -53,32 +53,6 @@ begin
end;
end;
procedure TestTFixArrayOfParameterType(Converter: TIDETextConverter);
var
Tool: TFixArrayOfParameterType;
begin
Tool:=nil;
try
Tool:=TFixArrayOfParameterType.Create(nil);
Tool.Execute(Converter);
finally
Tool.Free;
end;
end;
procedure TestTFixArrayOfParameterType(Converter: TIDETextConverter);
var
Tool: TFixArrayOfParameterType;
begin
Tool:=nil;
try
Tool:=TFixArrayOfParameterType.Create(nil);
Tool.Execute(Converter);
finally
Tool.Free;
end;
end;
var
Filename: String;
Converter: TIDETextConverter;

164
ide/codebrowser.lfm Normal file
View File

@ -0,0 +1,164 @@
object CodeBrowserView: TCodeBrowserView
Left = 290
Height = 564
Top = 189
Width = 634
HorzScrollBar.Page = 633
VertScrollBar.Page = 563
ActiveControl = ScopeComboBox
Caption = 'CodeBrowserView'
OnClose = FormClose
OnCreate = FormCreate
OnDestroy = FormDestroy
object ScopeGroupBox: TGroupBox
Left = 6
Height = 50
Top = 6
Width = 622
Align = alTop
BorderSpacing.Around = 6
Caption = 'ScopeGroupBox'
TabOrder = 0
object ScopeComboBox: TComboBox
Left = 3
Height = 25
Width = 315
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
MaxLength = 0
OnDropDown = ScopeComboBoxDropDown
TabOrder = 0
Text = 'ScopeComboBox'
end
object ScopeWithRequiredPackagesCheckBox: TCheckBox
Left = 328
Height = 20
Top = 3
Width = 249
Caption = 'ScopeWithRequiredPackagesCheckBox'
TabOrder = 1
end
end
object LevelsCheckGroup: TCheckGroup
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = ScopeGroupBox
AnchorSideTop.Side = asrBottom
Left = 6
Height = 135
Top = 62
Width = 185
AutoFill = True
BorderSpacing.Around = 6
Caption = 'LevelsCheckGroup'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
Items.Strings = (
'Packages'
'Units'
'Classes'
'Sections'
)
TabOrder = 1
Data = {
0400000002020202
}
end
object SortGroupBox: TGroupBox
AnchorSideLeft.Control = LevelsCheckGroup
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ScopeGroupBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 197
Height = 135
Top = 62
Width = 431
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
Caption = 'SortGroupBox'
TabOrder = 2
object SortUpSpeedButton: TSpeedButton
Left = 168
Height = 22
Top = 55
Width = 23
Color = clBtnFace
NumGlyphs = 0
OnClick = SortUpSpeedButtonClick
ShowHint = True
ParentShowHint = False
end
object SortDownSpeedButton: TSpeedButton
Left = 168
Height = 22
Top = 80
Width = 23
Color = clBtnFace
NumGlyphs = 0
OnClick = SortDownSpeedButtonClick
ShowHint = True
ParentShowHint = False
end
object SortAddSpeedButton: TSpeedButton
Left = 193
Height = 22
Top = 14
Width = 23
Color = clBtnFace
NumGlyphs = 0
OnClick = SortAddSpeedButtonClick
ShowHint = True
ParentShowHint = False
end
object SortRemoveSpeedButton: TSpeedButton
Left = 223
Height = 22
Top = 14
Width = 23
Color = clBtnFace
NumGlyphs = 0
OnClick = SortRemoveSpeedButtonClick
ShowHint = True
ParentShowHint = False
end
object SortListBox: TListBox
Height = 118
Width = 163
Align = alLeft
TabOrder = 0
TopIndex = -1
end
object SortAddsListBox: TListBox
Left = 258
Height = 118
Width = 169
Align = alRight
Anchors = [akTop, akLeft, akRight, akBottom]
TabOrder = 1
TopIndex = -1
end
end
object BrowseTreeView: TTreeView
AnchorSideTop.Control = LevelsCheckGroup
AnchorSideTop.Side = asrBottom
Height = 341
Top = 203
Width = 634
Align = alBottom
Anchors = [akTop, akLeft, akRight, akBottom]
DefaultItemHeight = 14
TabOrder = 3
end
object StatusBar1: TStatusBar
Height = 20
Top = 544
Width = 634
Panels = <>
end
end

55
ide/codebrowser.lrs Normal file
View File

@ -0,0 +1,55 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TCodeBrowserView','FORMDATA',[
'TPF0'#16'TCodeBrowserView'#15'CodeBrowserView'#4'Left'#3'"'#1#6'Height'#3'4'
+#2#3'Top'#3#189#0#5'Width'#3'z'#2#18'HorzScrollBar.Page'#3'y'#2#18'VertScrol'
+'lBar.Page'#3'3'#2#13'ActiveControl'#7#13'ScopeComboBox'#7'Caption'#6#15'Cod'
+'eBrowserView'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9'OnDe'
+'stroy'#7#11'FormDestroy'#0#9'TGroupBox'#13'ScopeGroupBox'#4'Left'#2#6#6'Hei'
+'ght'#2'2'#3'Top'#2#6#5'Width'#3'n'#2#5'Align'#7#5'alTop'#20'BorderSpacing.A'
+'round'#2#6#7'Caption'#6#13'ScopeGroupBox'#8'TabOrder'#2#0#0#9'TComboBox'#13
+'ScopeComboBox'#4'Left'#2#3#6'Height'#2#25#5'Width'#3';'#1#16'AutoCompleteTe'
+'xt'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9'MaxLength'#2
+#0#10'OnDropDown'#7#21'ScopeComboBoxDropDown'#8'TabOrder'#2#0#4'Text'#6#13'S'
+'copeComboBox'#0#0#9'TCheckBox!ScopeWithRequiredPackagesCheckBox'#4'Left'#3
+'H'#1#6'Height'#2#20#3'Top'#2#3#5'Width'#3#249#0#7'Caption'#6'!ScopeWithRequ'
+'iredPackagesCheckBox'#8'TabOrder'#2#1#0#0#0#11'TCheckGroup'#16'LevelsCheckG'
+'roup'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#13
+'ScopeGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#3
+#135#0#3'Top'#2'>'#5'Width'#3#185#0#8'AutoFill'#9#20'BorderSpacing.Around'#2
+#6#7'Caption'#6#16'LevelsCheckGroup'#28'ChildSizing.LeftRightSpacing'#2#6#28
+'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'cr'
+'sHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousC'
+'hildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildS'
+'izing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclL'
+'eftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#13'Items.Str'
+'ings'#1#6#8'Packages'#6#5'Units'#6#7'Classes'#6#8'Sections'#0#8'TabOrder'#2
+#1#4'Data'#10#8#0#0#0#4#0#0#0#2#2#2#2#0#0#9'TGroupBox'#12'SortGroupBox'#22'A'
+'nchorSideLeft.Control'#7#16'LevelsCheckGroup'#19'AnchorSideLeft.Side'#7#9'a'
+'srBottom'#21'AnchorSideTop.Control'#7#13'ScopeGroupBox'#18'AnchorSideTop.Si'
+'de'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRigh'
+'t.Side'#7#9'asrBottom'#4'Left'#3#197#0#6'Height'#3#135#0#3'Top'#2'>'#5'Widt'
+'h'#3#175#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#20'BorderSpacing.A'
+'round'#2#6#7'Caption'#6#12'SortGroupBox'#8'TabOrder'#2#2#0#12'TSpeedButton'
+#17'SortUpSpeedButton'#4'Left'#3#168#0#6'Height'#2#22#3'Top'#2'7'#5'Width'#2
+#23#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#22'SortUpSpeedButt'
+'onClick'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#19'SortDow'
+'nSpeedButton'#4'Left'#3#168#0#6'Height'#2#22#3'Top'#2'P'#5'Width'#2#23#5'Co'
+'lor'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#24'SortDownSpeedButtonCli'
+'ck'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#18'SortAddSpeed'
+'Button'#4'Left'#3#193#0#6'Height'#2#22#3'Top'#2#14#5'Width'#2#23#5'Color'#7
+#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#23'SortAddSpeedButtonClick'#8'Sh'
+'owHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#21'SortRemoveSpeedButto'
+'n'#4'Left'#3#223#0#6'Height'#2#22#3'Top'#2#14#5'Width'#2#23#5'Color'#7#9'cl'
+'BtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7#26'SortRemoveSpeedButtonClick'#8'Sho'
+'wHint'#9#14'ParentShowHint'#8#0#0#8'TListBox'#11'SortListBox'#6'Height'#2'v'
+#5'Width'#3#163#0#5'Align'#7#6'alLeft'#8'TabOrder'#2#0#8'TopIndex'#2#255#0#0
+#8'TListBox'#15'SortAddsListBox'#4'Left'#3#2#1#6'Height'#2'v'#5'Width'#3#169
+#0#5'Align'#7#7'alRight'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBot'
+'tom'#0#8'TabOrder'#2#1#8'TopIndex'#2#255#0#0#0#9'TTreeView'#14'BrowseTreeVi'
+'ew'#21'AnchorSideTop.Control'#7#16'LevelsCheckGroup'#18'AnchorSideTop.Side'
+#7#9'asrBottom'#6'Height'#3'U'#1#3'Top'#3#203#0#5'Width'#3'z'#2#5'Align'#7#8
+'alBottom'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'Defa'
+'ultItemHeight'#2#14#8'TabOrder'#2#3#0#0#10'TStatusBar'#10'StatusBar1'#6'Hei'
+'ght'#2#20#3'Top'#3' '#2#5'Width'#3'z'#2#6'Panels'#14#0#0#0#0
]);

555
ide/codebrowser.pas Normal file
View File

@ -0,0 +1,555 @@
{
***************************************************************************
* *
* This source is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This code is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* A copy of the GNU General Public License is available on the World *
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
***************************************************************************
Author: Mattias Gaertner
Abstract:
Browser for packages, classes, methods, functions.
Scope:
Browse units of IDE, or a project or a package.
Browse with required packages or without.
Sort:
Owner, unit, class, visibility, type (procedure, var, const, ...), identifier
Notes:
The codetools provides TCodeTree of every unit.
}
unit CodeBrowser;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs,
AvgLvlTree, StdCtrls,
CodeTree, CodeCache, CodeToolManager, LazConfigStorage, PackageSystem,
LazarusIDEStrConsts, IDEOptionDefs, EnvironmentOpts, ExtCtrls, ComCtrls,
Buttons;
type
TCodeBrowserUnit = class;
TCodeBrowserUnitList = class;
{ TCodeBrowserNode }
TCodeBrowserNode = class
private
FCBUnit: TCodeBrowserUnit;
FChildNodes: TAvgLvlTree;
FNode: TCodeTreeNode;
FParentNode: TCodeBrowserNode;
public
constructor Create(TheUnit: TCodeBrowserUnit; TheNode: TCodeTreeNode;
TheParent: TCodeBrowserNode);
destructor Destroy; override;
procedure Clear;
property CBUnit: TCodeBrowserUnit read FCBUnit;
property Node: TCodeTreeNode read FNode;
property ParentNode: TCodeBrowserNode read FParentNode;
property ChildNodes: TAvgLvlTree read FChildNodes;
end;
{ TCodeBrowserUnit }
TCodeBrowserUnit = class
private
FChildNodes: TAvgLvlTree;
FCodeTool: TCodeTool;
FCodeTreeChangeStep: integer;
FFilename: string;
FUnitList: TCodeBrowserUnitList;
public
constructor Create(const TheFilename: string);
destructor Destroy; override;
procedure Clear;
property Filename: string read FFilename;
property CodeTool: TCodeTool read FCodeTool;
property CodeTreeChangeStep: integer read FCodeTreeChangeStep;
property UnitList: TCodeBrowserUnitList read FUnitList;
property ChildNodes: TAvgLvlTree read FChildNodes;
end;
{ TCodeBrowserUnitList }
TCodeBrowserUnitList = class
private
FOwner: TObject;
FParentList: TCodeBrowserUnitList;
FUnits: TAvgLvlTree;
public
constructor Create(TheOwner: TObject; TheParent: TCodeBrowserUnitList);
destructor Destroy; override;
procedure Clear;
property Owner: TObject read FOwner;// IDE, project, package
property ParentList: TCodeBrowserUnitList read FParentList;
property Units: TAvgLvlTree read FUnits;
end;
{ TCodeBrowserViewOptions }
TCodeBrowserViewOptions = class
private
FModified: boolean;
FScope: string;
FLevels: TStrings;
FSortItems: TStrings;
FWithRequiredPackages: boolean;
procedure SetModified(const AValue: boolean);
procedure SetScope(const AValue: string);
procedure SetLevels(const AValue: TStrings);
procedure SetSortItems(const AValue: TStrings);
procedure SetWithRequiredPackages(const AValue: boolean);
public
constructor Create;
destructor Destroy; override;
procedure Clear;
procedure LoadFromConfig(ConfigStore: TConfigStorage; const Path: string);
procedure SaveToConfig(ConfigStore: TConfigStorage; const Path: string);
property Scope: string read FScope write SetScope;
property WithRequiredPackages: boolean read FWithRequiredPackages write SetWithRequiredPackages;
property Levels: TStrings read FLevels write SetLevels;
property SortItems: TStrings read FSortItems write SetSortItems;
property Modified: boolean read FModified write SetModified;
end;
{ TCodeBrowserView }
TCodeBrowserView = class(TForm)
SortAddsListBox: TListBox;
SortListBox: TListBox;
SortGroupBox: TGroupBox;
LevelsCheckGroup: TCheckGroup;
ScopeWithRequiredPackagesCheckBox: TCheckBox;
ScopeComboBox: TComboBox;
ScopeGroupBox: TGroupBox;
SortUpSpeedButton: TSpeedButton;
SortDownSpeedButton: TSpeedButton;
SortAddSpeedButton: TSpeedButton;
SortRemoveSpeedButton: TSpeedButton;
BrowseTreeView: TTreeView;
StatusBar1: TStatusBar;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ScopeComboBoxDropDown(Sender: TObject);
procedure SortAddSpeedButtonClick(Sender: TObject);
procedure SortDownSpeedButtonClick(Sender: TObject);
procedure SortRemoveSpeedButtonClick(Sender: TObject);
procedure SortUpSpeedButtonClick(Sender: TObject);
private
FIDEAlias: string;
fLocalizedSortItems: TStrings;
FOptions: TCodeBrowserViewOptions;
FProjectAlias: string;
FUnitList: TCodeBrowserUnitList;
fUpdateCount: integer;
procedure LoadOptions;
procedure LoadLevelsCheckGroup;
procedure LoadSortListBoxes;
procedure MoveSortItem(Offset: integer);
procedure AddSortItem;
procedure RemoveSortItem;
procedure FillScopeComboBox;
public
procedure BeginUpdate;
procedure EndUpdate;
property UnitList: TCodeBrowserUnitList read FUnitList;
property Options: TCodeBrowserViewOptions read FOptions;
property IDEAlias: string read FIDEAlias;
property ProjectAlias: string read FProjectAlias;
end;
var
CodeBrowserView: TCodeBrowserView = nil;
implementation
{ TCodeBrowserView }
procedure TCodeBrowserView.FormCreate(Sender: TObject);
begin
FOptions:=TCodeBrowserViewOptions.Create;
FIDEAlias:='Lazarus IDE';
FProjectAlias:='Project';
fLocalizedSortItems:=TStringList.Create;
fLocalizedSortItems.Values['Packages']:='Packages';
fLocalizedSortItems.Values['Units']:='Units';
fLocalizedSortItems.Values['Classes']:='Classes';
fLocalizedSortItems.Values['Sections']:='Sections';
fLocalizedSortItems.Values['Alphabetically']:='Alphabetically';
Name:=NonModalIDEWindowNames[nmiwCodeBrowser];
Caption := 'Code browser';
EnvironmentOptions.IDEWindowLayoutList.Apply(Self,Name);
ScopeGroupBox.Caption:='Scope';
ScopeWithRequiredPackagesCheckBox.Caption:='With required packages';
LevelsCheckGroup.Caption:='Levels';
LevelsCheckGroup.Items[0]:='Packages';
LevelsCheckGroup.Items[1]:='Units';
LevelsCheckGroup.Items[2]:='Classes';
LevelsCheckGroup.Items[3]:='Sections';
SortGroupBox.Caption:='Sort';
SortUpSpeedButton.Hint:='Move up';
DebugLn(['TCodeBrowserView.FormCreate ',LazarusResources.Find('arrow_up')<>nil]);
SortUpSpeedButton.Glyph.LoadFromLazarusResource('arrow_up');
SortDownSpeedButton.Hint:='Move down';
SortDownSpeedButton.Glyph.LoadFromLazarusResource('arrow_down');
SortAddSpeedButton.Hint:='Add';
SortAddSpeedButton.Glyph.LoadFromLazarusResource('arrow_left');
SortRemoveSpeedButton.Hint:='Remove';
SortRemoveSpeedButton.Glyph.LoadFromLazarusResource('arrow_right');
LoadOptions;
end;
procedure TCodeBrowserView.FormDestroy(Sender: TObject);
begin
FreeAndNil(FOptions);
end;
procedure TCodeBrowserView.ScopeComboBoxDropDown(Sender: TObject);
begin
FillScopeComboBox;
end;
procedure TCodeBrowserView.SortAddSpeedButtonClick(Sender: TObject);
begin
AddSortItem;
end;
procedure TCodeBrowserView.SortDownSpeedButtonClick(Sender: TObject);
begin
MoveSortItem(+1);
end;
procedure TCodeBrowserView.SortRemoveSpeedButtonClick(Sender: TObject);
begin
RemoveSortItem;
end;
procedure TCodeBrowserView.SortUpSpeedButtonClick(Sender: TObject);
begin
MoveSortItem(-1);
end;
procedure TCodeBrowserView.LoadOptions;
begin
BeginUpdate;
ScopeWithRequiredPackagesCheckBox.Checked:=Options.WithRequiredPackages;
ScopeComboBox.Text:=Options.Scope;
LoadLevelsCheckGroup;
LoadSortListBoxes;
EndUpdate;
end;
procedure TCodeBrowserView.LoadLevelsCheckGroup;
begin
LevelsCheckGroup.Checked[0]:=Options.Levels.IndexOf('Packages')>=0;
LevelsCheckGroup.Checked[1]:=Options.Levels.IndexOf('Units')>=0;
LevelsCheckGroup.Checked[2]:=Options.Levels.IndexOf('Classes')>=0;
LevelsCheckGroup.Checked[3]:=Options.Levels.IndexOf('Sections')>=0;
end;
procedure TCodeBrowserView.LoadSortListBoxes;
var
i: Integer;
sl: TStringList;
CurItem: string;
begin
BeginUpdate;
sl:=TStringList.Create;
// SortListBox
for i:=0 to Options.SortItems.Count-1 do begin
CurItem:=fLocalizedSortItems.Values[Options.SortItems[i]];
if CurItem='' then continue;
sl.Add(CurItem);
end;
if SortListBox.ItemIndex>=0 then
CurItem:=SortListBox.Items[SortListBox.ItemIndex]
else
CurItem:='';
SortListBox.Items.Assign(sl);
if CurItem<>'' then
SortListBox.ItemIndex:=sl.IndexOf(CurItem);
// SortAddsListBox
sl.Clear;
for i:=0 to fLocalizedSortItems.Count-1 do begin
CurItem:=fLocalizedSortItems.Names[i];
if Options.SortItems.IndexOf(CurItem)<0 then
sl.Add(fLocalizedSortItems.ValueFromIndex[i]);
end;
if SortAddsListBox.ItemIndex>=0 then
CurItem:=SortAddsListBox.Items[SortAddsListBox.ItemIndex]
else
CurItem:='';
SortAddsListBox.Items.Assign(sl);
if CurItem<>'' then
SortAddsListBox.ItemIndex:=sl.IndexOf(CurItem);
sl.Free;
EndUpdate;
end;
procedure TCodeBrowserView.MoveSortItem(Offset: integer);
var
i: LongInt;
begin
if Offset=0 then exit;
i:=SortListBox.ItemIndex;
if i<0 then exit;
if (i+Offset)<0 then exit;
if (i+Offset)>=SortListBox.Items.Count then exit;
SortListBox.Items.Move(i,i+Offset);
end;
procedure TCodeBrowserView.AddSortItem;
var
i: LongInt;
NewItem: string;
begin
i:=SortAddsListBox.ItemIndex;
if i<0 then exit;
NewItem:=SortAddsListBox.Items[i];
SortAddsListBox.Items.Delete(i);
i:=SortListBox.ItemIndex;
if i<0 then i:=SortListBox.Items.Count;
SortListBox.Items.Insert(i,NewItem);
end;
procedure TCodeBrowserView.RemoveSortItem;
var
i: LongInt;
NewItem: string;
begin
i:=SortListBox.ItemIndex;
if i<0 then exit;
NewItem:=SortListBox.Items[i];
SortListBox.Items.Delete(i);
i:=SortAddsListBox.ItemIndex;
if i<0 then i:=SortAddsListBox.Items.Count;
SortAddsListBox.Items.Insert(i,NewItem);
end;
procedure TCodeBrowserView.FillScopeComboBox;
var
sl: TStringList;
i: Integer;
begin
sl:=TStringList.Create;
if PackageGraph<>nil then begin
for i:=0 to PackageGraph.Count-1 do
sl.Add(PackageGraph.Packages[i].Name);
end;
sl.Sort;
sl.Insert(0,IDEAlias);
sl.Insert(1,ProjectAlias);
ScopeComboBox.Items.Assign(sl);
sl.Free;
end;
procedure TCodeBrowserView.BeginUpdate;
begin
inc(fUpdateCount);
end;
procedure TCodeBrowserView.EndUpdate;
begin
dec(fUpdateCount);
end;
procedure TCodeBrowserView.FormClose(Sender: TObject;
var CloseAction: TCloseAction);
begin
end;
{ TCodeBrowserNode }
constructor TCodeBrowserNode.Create(TheUnit: TCodeBrowserUnit;
TheNode: TCodeTreeNode; TheParent: TCodeBrowserNode);
begin
FCBUnit:=TheUnit;
FNode:=TheNode;
FParentNode:=TheParent;
end;
destructor TCodeBrowserNode.Destroy;
begin
Clear;
inherited Destroy;
end;
procedure TCodeBrowserNode.Clear;
begin
if FChildNodes<>nil then
FChildNodes.FreeAndClear;
FreeAndNil(FChildNodes);
end;
{ TCodeBrowserUnit }
constructor TCodeBrowserUnit.Create(const TheFilename: string);
begin
FFilename:=TheFilename;
end;
destructor TCodeBrowserUnit.Destroy;
begin
Clear;
inherited Destroy;
end;
procedure TCodeBrowserUnit.Clear;
begin
if FChildNodes<>nil then
FChildNodes.FreeAndClear;
FreeAndNil(FChildNodes);
end;
{ TCodeBrowserUnitList }
constructor TCodeBrowserUnitList.Create(TheOwner: TObject;
TheParent: TCodeBrowserUnitList);
begin
FOwner:=TheOwner;
FParentList:=TheParent;
end;
destructor TCodeBrowserUnitList.Destroy;
begin
Clear;
inherited Destroy;
end;
procedure TCodeBrowserUnitList.Clear;
begin
if FUnits<>nil then
FUnits.FreeAndClear;
FreeAndNil(FUnits);
end;
{ TCodeBrowserViewOptions }
procedure TCodeBrowserViewOptions.SetModified(const AValue: boolean);
begin
if FModified=AValue then exit;
FModified:=AValue;
end;
procedure TCodeBrowserViewOptions.SetScope(const AValue: string);
begin
if FScope=AValue then exit;
FScope:=AValue;
Modified:=true;
end;
procedure TCodeBrowserViewOptions.SetLevels(const AValue: TStrings);
begin
if FLevels=AValue then exit;
if FLevels.Text=AValue.Text then exit;
FLevels.Assign(AValue);
Modified:=true;
end;
procedure TCodeBrowserViewOptions.SetSortItems(const AValue: TStrings);
begin
if FSortItems=AValue then exit;
if FSortItems.Text=AValue.Text then exit;
FSortItems.Assign(AValue);
Modified:=true;
end;
procedure TCodeBrowserViewOptions.SetWithRequiredPackages(const AValue: boolean
);
begin
if FWithRequiredPackages=AValue then exit;
FWithRequiredPackages:=AValue;
Modified:=true;
end;
constructor TCodeBrowserViewOptions.Create;
begin
FSortItems:=TStringList.Create;
FLevels:=TStringList.Create;
Clear;
end;
destructor TCodeBrowserViewOptions.Destroy;
begin
FreeAndNil(FSortItems);
FreeAndNil(FLevels);
inherited Destroy;
end;
procedure TCodeBrowserViewOptions.Clear;
begin
FLevels.Clear;
FSortItems.Text:='Alphabetically';
FLevels.Text:='Packages'#13
+'Units'#13
+'Classes'#13
+'Sections';
WithRequiredPackages:=false;
Scope:='Project';
Modified:=false;
end;
procedure TCodeBrowserViewOptions.LoadFromConfig(ConfigStore: TConfigStorage;
const Path: string);
begin
Clear;
WithRequiredPackages:=
ConfigStore.GetValue(Path+'WithRequiredPackages/Value',false);
Scope:=ConfigStore.GetValue(Path+'Scope/Value','Project');
ConfigStore.GetValue(Path+'SortItems/',fSortItems);
ConfigStore.GetValue(Path+'Levels/',FLevels);
Modified:=false;
end;
procedure TCodeBrowserViewOptions.SaveToConfig(ConfigStore: TConfigStorage;
const Path: string);
begin
ConfigStore.SetDeleteValue(Path+'WithRequiredPackages/Value',
WithRequiredPackages,false);
ConfigStore.SetDeleteValue(Path+'Scope/Value',Scope,'Project');
ConfigStore.SetValue(Path+'SortItems/',fSortItems);
ConfigStore.SetValue(Path+'Levels/',FLevels);
Modified:=false;
end;
initialization
{$I codebrowser.lrs}
end.

View File

@ -91,7 +91,8 @@ type
nmiwEvaluate,
// extra
nmiwSearchResultsViewName,
nmiwAnchorEditor
nmiwAnchorEditor,
nmiwCodeBrowser
);
const
@ -128,7 +129,8 @@ const
'EvaluateModify',
// extra
'SearchResults',
'AnchorEditor'
'AnchorEditor',
'CodeBrowser'
);
type

View File

@ -471,6 +471,7 @@ begin
ecJumpToEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleFormUnit: SetResult(VK_F12,[],VK_UNKNOWN,[]);
ecViewAnchorEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleCodeBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleCompPalette: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleIDESpeedBtns: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -789,6 +790,7 @@ begin
ecJumpToEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleFormUnit: SetResult(VK_F12,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecViewAnchorEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleCodeBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleCompPalette: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecToggleIDESpeedBtns: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -1343,6 +1345,7 @@ begin
ecViewUnitDependencies : Result:= srkmecViewUnitDependencies;
ecViewUnitInfo : Result:= srkmecViewUnitInfo;
ecViewAnchorEditor : Result:= srkmecViewAnchorEditor;
ecToggleCodeBrowser : Result:= srkmecToggleCodeBrowser;
ecToggleCompPalette : Result:= srkmecToggleCompPalette;
ecToggleIDESpeedBtns : Result:= srkmecToggleIDESpeedBtns;

View File

@ -246,6 +246,7 @@ resourcestring
lisMenuViewObjectInspector = 'Object Inspector';
lisMenuViewSourceEditor = 'Source Editor';
lisMenuViewCodeExplorer = 'Code Explorer';
lisMenuViewCodeBrowser = 'Code Browser';
lisMenuJumpTo = 'Jump to';
lisMenuViewUnits = 'Units...';
lisMenuViewForms = 'Forms...';
@ -1657,6 +1658,7 @@ resourcestring
srkmecViewUnitDependencies = 'View unit dependencies';
srkmecViewUnitInfo = 'View unit information';
srkmecViewAnchorEditor = 'View anchor editor';
srkmecToggleCodeBrowser = 'View code browser';
srkmecToggleCompPalette = 'View component palette';
srkmecToggleIDESpeedBtns = 'View IDE speed buttons';

View File

@ -119,7 +119,7 @@ uses
DelphiUnit2Laz, DelphiProject2Laz, LazXMLForms,
// rest of the ide
Splash, IDEDefs, LazarusIDEStrConsts, LazConf, MsgView, SearchResultView,
CodeTemplatesDlg,
CodeTemplatesDlg, CodeBrowser,
PublishModule, EnvironmentOpts, TransferMacros, KeyMapping, IDETranslations,
IDEProcs, ExtToolDialog, ExtToolEditDlg, OutputFilter,
BuildLazDialog, MiscOptions, InputHistory, UnitDependencies, ClipBoardHistory,
@ -229,6 +229,7 @@ type
procedure mnuViewUnitInfoClicked(Sender: TObject);
procedure mnuViewLazDocClicked(Sender: TObject);
procedure mnuViewCodeExplorerClick(Sender: TObject);
procedure mnuViewCodeBrowserClick(Sender: TObject);
procedure mnuViewMessagesClick(Sender: TObject);
procedure mnuViewSearchResultsClick(Sender: TObject);
procedure mnuToggleFormUnitClicked(Sender: TObject);
@ -665,6 +666,7 @@ type
procedure DoViewUnitDependencies;
procedure DoViewUnitInfo;
procedure DoShowCodeExplorer;
procedure DoShowCodeBrowser;
procedure DoShowLazDoc;
function CreateNewUniqueFilename(const Prefix, Ext: string;
NewOwner: TObject; Flags: TSearchIDEFileFlags; TryWithoutNumber: boolean
@ -1158,6 +1160,7 @@ begin
FreeThenNil(ProjInspector);
FreeThenNil(CodeExplorerView);
FreeThenNil(CodeBrowserView);
FreeAndNil(LazFindReplaceDialog);
FreeAndNil(MessagesView);
FreeThenNil(AnchorDesigner);
@ -1749,6 +1752,8 @@ begin
DoViewUnitDependencies;
nmiwProjectInspector:
DoShowProjectInspector;
nmiwCodeBrowser:
DoShowCodeBrowser;
nmiwCodeExplorerName:
DoShowCodeExplorer;
nmiwLazDocName:
@ -1976,6 +1981,8 @@ begin
itmViewInspector.OnClick := @mnuViewInspectorClicked;
itmViewSourceEditor.OnClick := @mnuViewSourceEditorClicked;
itmViewCodeExplorer.OnClick := @mnuViewCodeExplorerClick;
itmViewCodeBrowser.OnClick := @mnuViewCodeBrowserClick;
itmViewCodeBrowser.Visible:=false;
itmViewLazDoc.OnClick := @mnuViewLazDocClicked; //DBlaszijk 5-sep-05
itmViewUnits.OnClick := @mnuViewUnitsClicked;
itmViewForms.OnClick := @mnuViewFormsClicked;
@ -2490,6 +2497,9 @@ begin
ecToggleCodeExpl:
DoShowCodeExplorer;
ecToggleCodeBrowser:
DoShowCodeBrowser;
ecToggleLazDoc:
DoShowLazDoc;
@ -2996,6 +3006,11 @@ begin
DoShowCodeExplorer;
end;
Procedure TMainIDE.mnuViewCodeBrowserClick(Sender: TObject);
begin
DoShowCodeBrowser;
end;
Procedure TMainIDE.mnuViewMessagesClick(Sender: TObject);
begin
// it was already visible, but user does not see it, try to move in view
@ -6801,6 +6816,15 @@ begin
CodeExplorerView.Refresh;
end;
procedure TMainIDE.DoShowCodeBrowser;
begin
if CodeBrowserView=nil then begin
CodeBrowserView:=TCodeBrowserView.Create(OwningComponent);
end;
CodeBrowserView.ShowOnTop;
end;
procedure TMainIDE.DoShowLazDoc;
begin
SourceNotebook.ShowLazDoc;
@ -13100,6 +13124,10 @@ begin
begin
ALayout.Form.SetBounds(Screen.Width-200,130,170,Max(50,Screen.Height-230));
end;
nmiwCodeBrowser:
begin
ALayout.Form.SetBounds(200,100,650,500);
end;
nmiwClipbrdHistoryName:
ALayout.Form.SetBounds(250,Screen.Height-400,400,300);
nmiwPkgGraphExplorer:

View File

@ -179,6 +179,7 @@ type
itmViewSourceEditor: TIDEMenuCommand;
itmViewCodeExplorer: TIDEMenuCommand;
itmViewLazDoc: TIDEMenuCommand;
itmViewCodeBrowser: TIDEMenuCommand;
//itmViewUnitWindows: TIDEMenuSection;
itmViewUnits: TIDEMenuCommand;
itmViewForms: TIDEMenuCommand;

View File

@ -497,6 +497,7 @@ begin
CreateMenuItem(ParentMI,itmViewSourceEditor,'itmViewSourceEditor',lisMenuViewSourceEditor);
CreateMenuItem(ParentMI,itmViewCodeExplorer,'itmViewCodeExplorer',lisMenuViewCodeExplorer);
CreateMenuItem(ParentMI,itmViewLazDoc,'itmViewLazDoc',lisMenuLazDoc); //DBlaszijk 5-sep-05
CreateMenuItem(ParentMI,itmViewCodeBrowser,'itmViewCodeBrowser',lisMenuViewCodeBrowser);
CreateMenuSeparatorSection(mnuView,itmViewUnitWindows,'itmViewUnitWindows');
ParentMI:=itmViewUnitWindows;
@ -846,7 +847,8 @@ begin
itmViewSourceEditor.Command:=GetCommand(ecToggleSourceEditor);
itmViewUnits.Command:=GetCommand(ecViewUnits);
itmViewCodeExplorer.Command:=GetCommand(ecToggleCodeExpl);
//itmViewLazDoc.Command:=GetCommand(ecLazDoc); //DBlaszijk 5-sep-05
itmViewLazDoc.Command:=GetCommand(ecToggleLazDoc);
itmViewCodeBrowser.Command:=GetCommand(ecToggleCodeBrowser);
itmViewUnitDependencies.Command:=GetCommand(ecViewUnitDependencies);
itmViewUnitInfo.Command:=GetCommand(ecViewUnitInfo);
itmViewForms.Command:=GetCommand(ecViewForms);

View File

@ -175,8 +175,9 @@ const
ecToggleCallStack = ecFirstLazarus + 315;
ecToggleSearchResults = ecFirstLazarus + 316;
ecViewAnchorEditor = ecFirstLazarus + 317;
ecToggleCompPalette = ecFirstLazarus + 318;
ecToggleIDESpeedBtns = ecFirstLazarus + 319;
ecToggleCodeBrowser = ecFirstLazarus + 318;
ecToggleCompPalette = ecFirstLazarus + 319;
ecToggleIDESpeedBtns = ecFirstLazarus + 320;
// sourcenotebook commands
ecNextEditor = ecFirstLazarus + 330;

View File

@ -52,7 +52,7 @@ cd <lazarusdir>/images/
6. laz_images.lrs
cd <lazarusdir>/images/
../tools/lazres laz_images.lrs btn_*.xpm pkg_*.xpm menu/menu_*.xpm codeexplorer/*.xpm designer/*.xpm
../tools/lazres laz_images.lrs btn_*.xpm pkg_*.xpm arrow_*.xpm menu/menu_*.xpm codeexplorer/*.xpm designer/*.xpm
rm ../main.ppu

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 358 B

After

Width:  |  Height:  |  Size: 358 B

View File

@ -1161,6 +1161,241 @@ LazarusResources.Add('pkg_unit','XPM',[
+'; ",'#10'" .%%%%%%%%%%%; ",'#10'" .;;;;;;;;;;;, ",'#10'" '
+'"};'#10
]);
LazarusResources.Add('arrow_down','XPM',[
'/* XPM */'#10'static char * unten_xpm[] = {'#10'"25 25 128 2",'#10'" '#9'c '
+'None",'#10'". '#9'c #FFFFFF",'#10'"+ '#9'c #E5E5E5",'#10'"@ '#9'c #E3E3E3",'
+#10'"# '#9'c #BBBBBB",'#10'"$ '#9'c #B2B2B2",'#10'"% '#9'c #D3D3D3",'#10'"& '
+#9'c #5F5F5F",'#10'"* '#9'c #888888",'#10'"= '#9'c #F1F1F1",'#10'"- '#9'c #E'
+'8E8E8",'#10'"; '#9'c #ECECEC",'#10'"> '#9'c #E9E9E9",'#10'", '#9'c #EBEBEB"'
+','#10'"'' '#9'c #E4E4E4",'#10'") '#9'c #E2E2E2",'#10'"! '#9'c #EDEDED",'#10
+'"~ '#9'c #EAEAEA",'#10'"{ '#9'c #F0F0F0",'#10'"] '#9'c #EFEFEF",'#10'"^ '#9
+'c #F9F9F9",'#10'"/ '#9'c #F4F4F4",'#10'"( '#9'c #F8F8F8",'#10'"_ '#9'c #303'
+'030",'#10'": '#9'c #8D8D8D",'#10'"< '#9'c #DFDFDF",'#10'"[ '#9'c #DDDDDD",'
+#10'"} '#9'c #EEEEEE",'#10'"| '#9'c #FAFAFA",'#10'"1 '#9'c #F3F3F3",'#10'"2 '
+#9'c #898989",'#10'"3 '#9'c #2F2F2F",'#10'"4 '#9'c #E6E6E6",'#10'"5 '#9'c #E'
+'1E1E1",'#10'"6 '#9'c #D4D4D4",'#10'"7 '#9'c #ADADAD",'#10'"8 '#9'c #AFAFAF"'
+','#10'"9 '#9'c #AAAAAA",'#10'"0 '#9'c #ABABAB",'#10'"a '#9'c #A6A6A6",'#10
+'"b '#9'c #A1A1A1",'#10'"c '#9'c #A2A2A2",'#10'"d '#9'c #A7A7A7",'#10'"e '#9
+'c #B4B4B4",'#10'"f '#9'c #DCDCDC",'#10'"g '#9'c #F5F5F5",'#10'"h '#9'c #848'
+'484",'#10'"i '#9'c #CFCFCF",'#10'"j '#9'c #747474",'#10'"k '#9'c #535353",'
+#10'"l '#9'c #4A4A4A",'#10'"m '#9'c #494949",'#10'"n '#9'c #454545",'#10'"o '
+#9'c #484848",'#10'"p '#9'c #444444",'#10'"q '#9'c #464646",'#10'"r '#9'c #4'
+'74747",'#10'"s '#9'c #9C9C9C",'#10'"t '#9'c #E0E0E0",'#10'"u '#9'c #313131"'
+','#10'"v '#9'c #818181",'#10'"w '#9'c #DADADA",'#10'"x '#9'c #777777",'#10
+'"y '#9'c #4D4D4D",'#10'"z '#9'c #666666",'#10'"A '#9'c #686868",'#10'"B '#9
+'c #616161",'#10'"C '#9'c #656565",'#10'"D '#9'c #646464",'#10'"E '#9'c #9B9'
+'B9B",'#10'"F '#9'c #323232",'#10'"G '#9'c #8A8A8A",'#10'"H '#9'c #9F9F9F",'
+#10'"I '#9'c #565656",'#10'"J '#9'c #959595",'#10'"K '#9'c #A0A0A0",'#10'"L '
+#9'c #A5A5A5",'#10'"M '#9'c #A4A4A4",'#10'"N '#9'c #B5B5B5",'#10'"O '#9'c #F'
+'6F6F6",'#10'"P '#9'c #8B8B8B",'#10'"Q '#9'c #D0D0D0",'#10'"R '#9'c #676767"'
+','#10'"S '#9'c #7D7D7D",'#10'"T '#9'c #ACACAC",'#10'"U '#9'c #C0C0C0",'#10
+'"V '#9'c #868686",'#10'"W '#9'c #696969",'#10'"X '#9'c #B0B0B0",'#10'"Y '#9
+'c #A9A9A9",'#10'"Z '#9'c #909090",'#10'"` '#9'c #D8D8D8",'#10'" .'#9'c #7B7'
+'B7B",'#10'"..'#9'c #B1B1B1",'#10'"+.'#9'c #AEAEAE",'#10'"@.'#9'c #5C5C5C",'
+#10'"#.'#9'c #B3B3B3",'#10'"$.'#9'c #DEDEDE",'#10'"%.'#9'c #E7E7E7",'#10'"&.'
+#9'c #C5C5C5",'#10'"*.'#9'c #878787",'#10'"=.'#9'c #B6B6B6",'#10'"-.'#9'c #C'
+'7C7C7",'#10'";.'#9'c #858585",'#10'">.'#9'c #8C8C8C",'#10'",.'#9'c #9D9D9D"'
+','#10'"''.'#9'c #828282",'#10'").'#9'c #8E8E8E",'#10'"!.'#9'c #BFBFBF",'#10
+'"~.'#9'c #595959",'#10'"{.'#9'c #CECECE",'#10'"].'#9'c #FDFDFD",'#10'"^.'#9
+'c #838383",'#10'"/.'#9'c #F7F7F7",'#10'"(.'#9'c #707070",'#10'"_.'#9'c #939'
+'393",'#10'":.'#9'c #8F8F8F",'#10'"<.'#9'c #B7B7B7",'#10'"[.'#9'c #FBFBFB",'
+#10'"}.'#9'c #7F7F7F",'#10'"|.'#9'c #2D2D2D",'#10'"1.'#9'c #CACACA",'#10'"2.'
+#9'c #6B6B6B",'#10'"3.'#9'c #585858",'#10'"4.'#9'c #2E2E2E",'#10'"5.'#9'c #3'
+'33333",'#10'"6.'#9'c #383838",'#10'"7.'#9'c #919191",'#10'". . . . . . . . '
+'. . . . . . . . . . . . . . . + @ ",'#10'". . . . . . . . . . . . . . . . .'
+' . . . . . . # $ ",'#10'". . . . . . . . . . . . . . . . . . . . . . % & * '
+'",'#10'". . . = - ; > , ; '' ) ! ~ = , ; ; { ] ^ / ( * _ : ",'#10'". . . < '
+'{ [ ! - , ! - } - = { , ! ~ = ] | 1 2 3 * ",'#10'". . . 4 5 6 7 8 9 0 a 0 b'
+' c d 0 7 e f 4 g ; 2 3 h ",'#10'". . . < ; i j k l m n o p p q r k s t g } '
+'! 2 u v ",'#10'". . . 4 > w x y z A B C D z z B E ( . . ~ 1 * F G ",'#10'".'
+' . . 4 , { H I J d K K L L M N @ . . O @ } G u P ",'#10'". . . + > ] Q R S '
+'T T 0 T 0 0 U ( . . ~ t > V _ : ",'#10'". . . 4 , = ! E W E X 8 T Y # f . .'
+' ] { 4 ! * u Z ",'#10'". . . @ > = { ` D .X ..7 +.U ( . . '' , + ; V u : "'
+','#10'". . . f ) , ; { 2 @.s #...U @ . . - $.4 %.} V _ * ",'#10'". . . [ 5 '
+'~ ~ } &.B *.#.=.-.. . . %.t %.~ = ;._ >.",'#10'". . . 5 4 } ; } ~ * A ,.U @'
+' . . ) 4 $.@ + ~ ''.3 ).",'#10'". . . 5 - { ; ! ! !.~.h {.. . ].'' , @ %.%.'
+'; ^.u * ",'#10'". . . %.4 + , 1 /.4 (._.= . . 5 > w w t - ; V F :.",'#10'".'
+' . . 4 + '' - } > ( <.-.. . . ~ '' %.; @ < %.*.F h ",'#10'". . . + ) '' - ,'
+' ] O ) - . . ] ) + '' %.< $.4 ^._ h ",'#10'". . . @ < @ ~ } 1 { ; { [.g - >'
+' - f [ ) + @ }.3 * ",'#10'". . . ) $.) , { ( { } 1 ] + '' ! 4 5 ~ ! ~ @ }.3'
+' h ",'#10'". . . ) t ) - ; 1 = { { } > + + > ~ { ; , ! ''.|.^.",'#10'". | 1'
+'.''.^.^.^.h ^.2 ).P V ''.^.;.*.;.V ;.*.2 2.u h ",'#10'"= =.3.4._ _ 3 4.u _ '
+'_ u 5.F _ 4._ 3 u u _ 3 F 6.V ",'#10'"t # G 2 V ;.v *.;.P V V ;.h P * P P :'
+' Z 7.: 2 ).X "};'#10
]);
LazarusResources.Add('arrow_left','XPM',[
'/* XPM */'#10'static char * links_xpm[] = {'#10'"25 25 114 2",'#10'" '#9'c '
+'None",'#10'". '#9'c #FFFFFF",'#10'"+ '#9'c #E5E5E5",'#10'"@ '#9'c #E3E3E3",'
+#10'"# '#9'c #BBBBBB",'#10'"$ '#9'c #B2B2B2",'#10'"% '#9'c #D3D3D3",'#10'"& '
+#9'c #5F5F5F",'#10'"* '#9'c #888888",'#10'"= '#9'c #F1F1F1",'#10'"- '#9'c #E'
+'8E8E8",'#10'"; '#9'c #ECECEC",'#10'"> '#9'c #E9E9E9",'#10'", '#9'c #EBEBEB"'
+','#10'"'' '#9'c #E4E4E4",'#10'") '#9'c #E2E2E2",'#10'"! '#9'c #EDEDED",'#10
+'"~ '#9'c #EAEAEA",'#10'"{ '#9'c #F0F0F0",'#10'"] '#9'c #EFEFEF",'#10'"^ '#9
+'c #F9F9F9",'#10'"/ '#9'c #F4F4F4",'#10'"( '#9'c #F8F8F8",'#10'"_ '#9'c #303'
+'030",'#10'": '#9'c #8D8D8D",'#10'"< '#9'c #DFDFDF",'#10'"[ '#9'c #DDDDDD",'
+#10'"} '#9'c #EEEEEE",'#10'"| '#9'c #FAFAFA",'#10'"1 '#9'c #F3F3F3",'#10'"2 '
+#9'c #898989",'#10'"3 '#9'c #2F2F2F",'#10'"4 '#9'c #E6E6E6",'#10'"5 '#9'c #E'
+'1E1E1",'#10'"6 '#9'c #E0E0E0",'#10'"7 '#9'c #B3B3B3",'#10'"8 '#9'c #D6D6D6"'
+','#10'"9 '#9'c #F5F5F5",'#10'"0 '#9'c #848484",'#10'"a '#9'c #DBDBDB",'#10
+'"b '#9'c #CACACA",'#10'"c '#9'c #949494",'#10'"d '#9'c #525252",'#10'"e '#9
+'c #585858",'#10'"f '#9'c #B7B7B7",'#10'"g '#9'c #313131",'#10'"h '#9'c #818'
+'181",'#10'"i '#9'c #E7E7E7",'#10'"j '#9'c #CBCBCB",'#10'"k '#9'c #868686",'
+#10'"l '#9'c #414141",'#10'"m '#9'c #1C1C1C",'#10'"n '#9'c #141414",'#10'"o '
+#9'c #6C6C6C",'#10'"p '#9'c #323232",'#10'"q '#9'c #8A8A8A",'#10'"r '#9'c #B'
+'1B1B1",'#10'"s '#9'c #757575",'#10'"t '#9'c #3C3C3C",'#10'"u '#9'c #161616"'
+','#10'"v '#9'c #2A2A2A",'#10'"w '#9'c #575757",'#10'"x '#9'c #8B8B8B",'#10
+'"y '#9'c #C4C4C4",'#10'"z '#9'c #717171",'#10'"A '#9'c #2E2E2E",'#10'"B '#9
+'c #151515",'#10'"C '#9'c #191919",'#10'"D '#9'c #2D2D2D",'#10'"E '#9'c #8E8'
+'E8E",'#10'"F '#9'c #AAAAAA",'#10'"G '#9'c #A7A7A7",'#10'"H '#9'c #626262",'
+#10'"I '#9'c #3A3A3A",'#10'"J '#9'c #656565",'#10'"K '#9'c #8F8F8F",'#10'"L '
+#9'c #A6A6A6",'#10'"M '#9'c #ADADAD",'#10'"N '#9'c #B0B0B0",'#10'"O '#9'c #9'
+'09090",'#10'"P '#9'c #393939",'#10'"Q '#9'c #282828",'#10'"R '#9'c #6D6D6D"'
+','#10'"S '#9'c #9D9D9D",'#10'"T '#9'c #ABABAB",'#10'"U '#9'c #DCDCDC",'#10
+'"V '#9'c #C5C5C5",'#10'"W '#9'c #A8A8A8",'#10'"X '#9'c #B5B5B5",'#10'"Y '#9
+'c #AEAEAE",'#10'"Z '#9'c #ACACAC",'#10'"` '#9'c #A9A9A9",'#10'" .'#9'c #D2D'
+'2D2",'#10'"..'#9'c #AFAFAF",'#10'"+.'#9'c #858585",'#10'"@.'#9'c #8C8C8C",'
+#10'"#.'#9'c #C0C0C0",'#10'"$.'#9'c #828282",'#10'"%.'#9'c #DADADA",'#10'"&.'
+#9'c #C1C1C1",'#10'"*.'#9'c #838383",'#10'"=.'#9'c #F7F7F7",'#10'"-.'#9'c #D'
+'1D1D1",'#10'";.'#9'c #FDFDFD",'#10'">.'#9'c #878787",'#10'",.'#9'c #F6F6F6"'
+','#10'"''.'#9'c #F2F2F2",'#10'").'#9'c #DEDEDE",'#10'"!.'#9'c #7F7F7F",'#10
+'"~.'#9'c #6B6B6B",'#10'"{.'#9'c #B6B6B6",'#10'"].'#9'c #333333",'#10'"^.'#9
+'c #383838",'#10'"/.'#9'c #919191",'#10'". . . . . . . . . . . . . . . . . .'
+' . . . . . + @ ",'#10'". . . . . . . . . . . . . . . . . . . . . . . # $ ",'
+#10'". . . . . . . . . . . . . . . . . . . . . . % & * ",'#10'". . . = - ; >'
+' , ; '' ) ! ~ = , ; ; { ] ^ / ( * _ : ",'#10'". . . < { [ ! - , ! - } - = {'
+' , ! ~ = ] | 1 2 3 * ",'#10'". . . 4 5 ] 6 = ; ! 4 ! < 6 - ! ) 7 8 @ 9 ; 2 '
+'3 0 ",'#10'". . . < ; > 4 = ; , < > [ a b c d e f = } ! 2 g h ",'#10'". . .'
+' 4 > @ > , ! ! [ i j k l m n o '' . ~ 1 * p q ",'#10'". . . 4 , = ! ] { < r'
+' s t u n v w } . . @ } q g x ",'#10'". . . + > ] ~ 4 y z A B C D w E F . . '
+'. 6 > k _ : ",'#10'". . . 4 , '' G H A B C I J K L M N . . . 4 ! * g O ",'
+#10'". . . @ > [ k P Q t R S M F T M F . . . + ; k g : ",'#10'". . . U ) @ V'
+' 7 $ W X $ r Y Z M ` . . . i } k _ * ",'#10'". . . [ 5 > i i , ! .f $ ..Y '
+'Y M . . . ~ = +._ @.",'#10'". . . 5 4 } ; ! , > ! i #.L Z ..F . . . + ~ $.3'
+' E ",'#10'". . . 5 - { ; ! } ~ '' < %.% &.Z T . . . i ; *.g * ",'#10'". . .'
+' i 4 + , 1 =.} ~ , @ [ < -.7 . . . - ; k p K ",'#10'". . . 4 + '' - } > ^ ;'
+'.] 5 @ 4 '' U . . . < i >.p 0 ",'#10'". . . + ) '' - , ] ,.= + 4 ''.} 6 U .'
+' . . ).4 *._ 0 ",'#10'". . . @ < @ ~ } 1 { ! , ~ > - > i U ( . + @ !.3 * ",'
+#10'". . . ) ).) , { ( { } 1 ] + '' ! 4 5 ~ ! ~ @ !.3 0 ",'#10'". . . ) 6 ) '
+'- ; 1 = { { } > + + > ~ { ; , ! $.D *.",'#10'". | b $.*.*.*.0 *.2 E x k $.*'
+'.+.>.+.k +.>.2 ~.g 0 ",'#10'"= {.e A _ _ 3 A g _ _ g ].p _ A _ 3 g g _ 3 p '
+'^.k ",'#10'"6 # q 2 k +.h >.+.x k k +.0 x * x x : O /.: 2 E N "};'#10
]);
LazarusResources.Add('arrow_right','XPM',[
'/* XPM */'#10'static char * rechts_xpm[] = {'#10'"25 25 109 2",'#10'" '#9'c'
+' None",'#10'". '#9'c #FFFFFF",'#10'"+ '#9'c #E5E5E5",'#10'"@ '#9'c #E3E3E3"'
+','#10'"# '#9'c #BBBBBB",'#10'"$ '#9'c #B2B2B2",'#10'"% '#9'c #D3D3D3",'#10
+'"& '#9'c #5F5F5F",'#10'"* '#9'c #888888",'#10'"= '#9'c #F1F1F1",'#10'"- '#9
+'c #E8E8E8",'#10'"; '#9'c #ECECEC",'#10'"> '#9'c #E9E9E9",'#10'", '#9'c #EBE'
+'BEB",'#10'"'' '#9'c #E4E4E4",'#10'") '#9'c #E2E2E2",'#10'"! '#9'c #EDEDED",'
+#10'"~ '#9'c #EAEAEA",'#10'"{ '#9'c #F0F0F0",'#10'"] '#9'c #EFEFEF",'#10'"^ '
+#9'c #F9F9F9",'#10'"/ '#9'c #F4F4F4",'#10'"( '#9'c #F8F8F8",'#10'"_ '#9'c #3'
+'03030",'#10'": '#9'c #8D8D8D",'#10'"< '#9'c #DFDFDF",'#10'"[ '#9'c #DDDDDD"'
+','#10'"} '#9'c #EEEEEE",'#10'"| '#9'c #FAFAFA",'#10'"1 '#9'c #F3F3F3",'#10
+'"2 '#9'c #898989",'#10'"3 '#9'c #2F2F2F",'#10'"4 '#9'c #E6E6E6",'#10'"5 '#9
+'c #E1E1E1",'#10'"6 '#9'c #BFBFBF",'#10'"7 '#9'c #BDBDBD",'#10'"8 '#9'c #E0E'
+'0E0",'#10'"9 '#9'c #E7E7E7",'#10'"0 '#9'c #F5F5F5",'#10'"a '#9'c #848484",'
+#10'"b '#9'c #939393",'#10'"c '#9'c #575757",'#10'"d '#9'c #747474",'#10'"e '
+#9'c #999999",'#10'"f '#9'c #D1D1D1",'#10'"g '#9'c #DEDEDE",'#10'"h '#9'c #D'
+'BDBDB",'#10'"i '#9'c #313131",'#10'"j '#9'c #818181",'#10'"k '#9'c #363636"'
+','#10'"l '#9'c #5B5B5B",'#10'"m '#9'c #585858",'#10'"n '#9'c #686868",'#10
+'"o '#9'c #8E8E8E",'#10'"p '#9'c #CCCCCC",'#10'"q '#9'c #DCDCDC",'#10'"r '#9
+'c #F2F2F2",'#10'"s '#9'c #323232",'#10'"t '#9'c #8A8A8A",'#10'"u '#9'c #989'
+'898",'#10'"v '#9'c #757575",'#10'"w '#9'c #5E5E5E",'#10'"x '#9'c #808080",'
+#10'"y '#9'c #B8B8B8",'#10'"z '#9'c #8B8B8B",'#10'"A '#9'c #B6B6B6",'#10'"B '
+#9'c #ACACAC",'#10'"C '#9'c #5C5C5C",'#10'"D '#9'c #828282",'#10'"E '#9'c #8'
+'68686",'#10'"F '#9'c #B9B9B9",'#10'"G '#9'c #B5B5B5",'#10'"H '#9'c #B0B0B0"'
+','#10'"I '#9'c #ABABAB",'#10'"J '#9'c #949494",'#10'"K '#9'c #7F7F7F",'#10
+'"L '#9'c #646464",'#10'"M '#9'c #707070",'#10'"N '#9'c #AAAAAA",'#10'"O '#9
+'c #909090",'#10'"P '#9'c #B4B4B4",'#10'"Q '#9'c #B1B1B1",'#10'"R '#9'c #ADA'
+'DAD",'#10'"S '#9'c #A9A9A9",'#10'"T '#9'c #8C8C8C",'#10'"U '#9'c #B3B3B3",'
+#10'"V '#9'c #C0C0C0",'#10'"W '#9'c #CECECE",'#10'"X '#9'c #F7F7F7",'#10'"Y '
+#9'c #C7C7C7",'#10'"Z '#9'c #858585",'#10'"` '#9'c #FCFCFC",'#10'" .'#9'c #F'
+'DFDFD",'#10'"..'#9'c #838383",'#10'"+.'#9'c #393939",'#10'"@.'#9'c #D0D0D0"'
+','#10'"#.'#9'c #DADADA",'#10'"$.'#9'c #8F8F8F",'#10'"%.'#9'c #878787",'#10
+'"&.'#9'c #C3C3C3",'#10'"*.'#9'c #F6F6F6",'#10'"=.'#9'c #FBFBFB",'#10'"-.'#9
+'c #2D2D2D",'#10'";.'#9'c #CACACA",'#10'">.'#9'c #6B6B6B",'#10'",.'#9'c #2E2'
+'E2E",'#10'"''.'#9'c #333333",'#10'").'#9'c #383838",'#10'"!.'#9'c #919191",'
+#10'". . . . . . . . . . . . . . . . . . . . . . . + @ ",'#10'". . . . . . .'
+' . . . . . . . . . . . . . . . . # $ ",'#10'". . . . . . . . . . . . . . . '
+'. . . . . . . % & * ",'#10'". . . = - ; > , ; '' ) ! ~ = , ; ; { ] ^ / ( * '
+'_ : ",'#10'". . . < { [ ! - , ! - } - = { , ! ~ = ] | 1 2 3 * ",'#10'". . .'
+' 4 5 6 7 + , ! 4 ! < 8 - ! ] - ] 9 0 ; 2 3 a ",'#10'". . . < ; b c d e f g '
+'> [ h @ 4 - 9 ~ ~ } ! 2 i j ",'#10'". . . 4 > a k l m n o p @ > ~ [ q + 4 r'
+' ~ 1 * s t ",'#10'". . . 4 , t s 2 u v w l x y h [ ~ + @ ~ @ } t i z ",'#10
+'". . . + > 2 _ * A B b d c C D y 8 + '' ~ 8 > E _ : ",'#10'". . . 4 , t i z'
+' F G H I J K L m M N q ] 4 ! * i O ",'#10'". . . @ > t i : y A P Q R S u a '
+'T 6 9 { + ; E i : ",'#10'". . . q ) E _ z y A G U Q $ V W = . . X 9 } E _ *'
+' ",'#10'". . . [ 5 E _ 2 y G P y V Y @ . . . . 1 ~ = Z _ T ",'#10'". . . 5 '
+'4 * _ 2 A U V V @ . . . . ` g @ + ~ D 3 o ",'#10'". . . 5 - 2 _ 2 V V q ( .'
+' . . .'' , @ 9 9 ; ..i * ",'#10'". . . 9 4 ..+.@.W ( . . . . g 5 > #.#.8 -'
+' ; E s $.",'#10'". . . 4 + O o . . . . . 9 '' > ~ '' 9 ; @ < 9 %.s a ",'#10
+'". . . + ) &.h . . . *.+ 4 r ] ) + '' 9 < g 4 .._ a ",'#10'". . . @ < < =..'
+' . { ! , ~ > - > - q [ ) + @ K 3 * ",'#10'". . . ) g ) , { ( { } 1 ] + '' !'
+' 4 5 ~ ! ~ @ K 3 a ",'#10'". . . ) 8 ) - ; 1 = { { } > + + > ~ { ; , ! D -.'
+'..",'#10'". | ;.D ......a ..2 o z E D ..Z %.Z E Z %.2 >.i a ",'#10'"= A m ,'
+'._ _ 3 ,.i _ _ i ''.s _ ,._ 3 i i _ 3 s ).E ",'#10'"8 # t 2 E Z j %.Z z E E'
+' Z a z * z z : O !.: 2 o H "};'#10
]);
LazarusResources.Add('arrow_up','XPM',[
'/* XPM */'#10'static char * oben_xpm[] = {'#10'"25 25 121 2",'#10'" '#9'c N'
+'one",'#10'". '#9'c #FFFFFF",'#10'"+ '#9'c #E5E5E5",'#10'"@ '#9'c #E3E3E3",'
+#10'"# '#9'c #BBBBBB",'#10'"$ '#9'c #B2B2B2",'#10'"% '#9'c #D3D3D3",'#10'"& '
+#9'c #5F5F5F",'#10'"* '#9'c #888888",'#10'"= '#9'c #F1F1F1",'#10'"- '#9'c #E'
+'8E8E8",'#10'"; '#9'c #ECECEC",'#10'"> '#9'c #E9E9E9",'#10'", '#9'c #EBEBEB"'
+','#10'"'' '#9'c #E4E4E4",'#10'") '#9'c #E2E2E2",'#10'"! '#9'c #EDEDED",'#10
+'"~ '#9'c #EAEAEA",'#10'"{ '#9'c #F0F0F0",'#10'"] '#9'c #EFEFEF",'#10'"^ '#9
+'c #F9F9F9",'#10'"/ '#9'c #F4F4F4",'#10'"( '#9'c #F8F8F8",'#10'"_ '#9'c #303'
+'030",'#10'": '#9'c #8D8D8D",'#10'"< '#9'c #DFDFDF",'#10'"[ '#9'c #DDDDDD",'
+#10'"} '#9'c #EEEEEE",'#10'"| '#9'c #FAFAFA",'#10'"1 '#9'c #F3F3F3",'#10'"2 '
+#9'c #898989",'#10'"3 '#9'c #2F2F2F",'#10'"4 '#9'c #E6E6E6",'#10'"5 '#9'c #E'
+'1E1E1",'#10'"6 '#9'c #E0E0E0",'#10'"7 '#9'c #D9D9D9",'#10'"8 '#9'c #D8D8D8"'
+','#10'"9 '#9'c #E7E7E7",'#10'"0 '#9'c #F5F5F5",'#10'"a '#9'c #848484",'#10
+'"b '#9'c #9C9C9C",'#10'"c '#9'c #838383",'#10'"d '#9'c #B8B8B8",'#10'"e '#9
+'c #313131",'#10'"f '#9'c #818181",'#10'"g '#9'c #5B5B5B",'#10'"h '#9'c #363'
+'636",'#10'"i '#9'c #AAAAAA",'#10'"j '#9'c #DCDCDC",'#10'"k '#9'c #F2F2F2",'
+#10'"l '#9'c #323232",'#10'"m '#9'c #8A8A8A",'#10'"n '#9'c #292929",'#10'"o '
+#9'c #242424",'#10'"p '#9'c #A6A6A6",'#10'"q '#9'c #DEDEDE",'#10'"r '#9'c #8'
+'B8B8B",'#10'"s '#9'c #717171",'#10'"t '#9'c #141414",'#10'"u '#9'c #393939"'
+','#10'"v '#9'c #9E9E9E",'#10'"w '#9'c #868686",'#10'"x '#9'c #C6C6C6",'#10
+'"y '#9'c #191919",'#10'"z '#9'c #696969",'#10'"A '#9'c #ACACAC",'#10'"B '#9
+'c #C7C7C7",'#10'"C '#9'c #909090",'#10'"D '#9'c #161616",'#10'"E '#9'c #3C3'
+'C3C",'#10'"F '#9'c #9D9D9D",'#10'"G '#9'c #ADADAD",'#10'"H '#9'c #D6D6D6",'
+#10'"I '#9'c #414141",'#10'"J '#9'c #1A1A1A",'#10'"K '#9'c #6A6A6A",'#10'"L '
+#9'c #B3B3B3",'#10'"M '#9'c #B1B1B1",'#10'"N '#9'c #AEAEAE",'#10'"O '#9'c #B'
+'EBEBE",'#10'"P '#9'c #181818",'#10'"Q '#9'c #989898",'#10'"R '#9'c #B4B4B4"'
+','#10'"S '#9'c #AFAFAF",'#10'"T '#9'c #A8A8A8",'#10'"U '#9'c #858585",'#10
+'"V '#9'c #8C8C8C",'#10'"W '#9'c #D2D2D2",'#10'"X '#9'c #424242",'#10'"Y '#9
+'c #151515",'#10'"Z '#9'c #B0B0B0",'#10'"` '#9'c #828282",'#10'" .'#9'c #8E8'
+'E8E",'#10'"..'#9'c #1E1E1E",'#10'"+.'#9'c #2E2E2E",'#10'"@.'#9'c #939393",'
+#10'"#.'#9'c #A9A9A9",'#10'"$.'#9'c #A7A7A7",'#10'"%.'#9'c #D4D4D4",'#10'"&.'
+#9'c #535353",'#10'"*.'#9'c #171717",'#10'"=.'#9'c #5C5C5C",'#10'"-.'#9'c #8'
+'F8F8F",'#10'";.'#9'c #484848",'#10'">.'#9'c #575757",'#10'",.'#9'c #CECECE"'
+','#10'"''.'#9'c #878787",'#10'").'#9'c #D5D5D5",'#10'"!.'#9'c #7F7F7F",'#10
+'"~.'#9'c #FCFCFC",'#10'"{.'#9'c #FBFBFB",'#10'"].'#9'c #FDFDFD",'#10'"^.'#9
+'c #FEFEFE",'#10'"/.'#9'c #2D2D2D",'#10'"(.'#9'c #CACACA",'#10'"_.'#9'c #6B6'
+'B6B",'#10'":.'#9'c #B6B6B6",'#10'"<.'#9'c #585858",'#10'"[.'#9'c #333333",'
+#10'"}.'#9'c #383838",'#10'"|.'#9'c #919191",'#10'". . . . . . . . . . . . .'
+' . . . . . . . . . . + @ ",'#10'". . . . . . . . . . . . . . . . . . . . . '
+'. . # $ ",'#10'". . . . . . . . . . . . . . . . . . . . . . % & * ",'#10'".'
+' . . = - ; > , ; '' ) ! ~ = , ; ; { ] ^ / ( * _ : ",'#10'". . . < { [ ! - ,'
+' ! - } - = { , ! ~ = ] | 1 2 3 * ",'#10'". . . 4 5 ] 6 = ; ! 7 7 8 < - ! ] '
+'- ] 9 0 ; 2 3 a ",'#10'". . . < ; > 4 = ; , b c d 7 @ 4 - 9 ~ ~ } ! 2 e f "'
+','#10'". . . 4 > @ > , ! 4 g h i @ > [ j + 4 k ~ 1 * l m ",'#10'". . . 4 , '
+'= ! ] { d n o p j j q ~ + @ ~ @ } m e r ",'#10'". . . + > ] ~ ; ; s t u v <'
+' q ) - 4 '' ~ 6 > w _ : ",'#10'". . . 4 , = } { x e y z A B '' ) ~ , ~ { 4 '
+'! * e C ",'#10'". . . @ > = { / f D E F A G 5 6 6 + '' , + ; w e : ",'#10'"'
+'. . . j ) , ; H I J K L M N O 6 8 ) q 4 9 } w _ * ",'#10'". . . [ 5 ~ ~ 2 P'
+' 3 Q R $ S T j 5 4 6 9 ~ = U _ V ",'#10'". . . 5 4 } W X Y g G Z S A A B @ '
+''' [ @ + ~ ` 3 .",'#10'". . . 5 - { Q ..+.@.S A #.$.#.A %.+ 5 9 9 ; c e * '
+'",'#10'". . . 9 4 8 &.*.=.N Z L $ i $.#.L % W < - ; w l -.",'#10'". . . 4 +'
+' Z ;.>.,.~ ~ ~ ~ ~ ~ ~ ~ . . @ < 9 ''.l a ",'#10'". . . + ) d @.).. . . . .'
+' . . . . . . ( q 4 c _ a ",'#10'". . . @ < %.6 . . . . . . . . . . . . . + '
+'@ !.3 * ",'#10'". . . ) q 5 k . . . . . . ~.{.. ].( . ^.~ @ !.3 a ",'#10'".'
+' . . ) 6 ) - ; 1 = { { } > + + > ~ { ; , ! ` /.c ",'#10'". | (.` c c c a c '
+'2 .r w ` c U ''.U w U ''.2 _.e a ",'#10'"= :.<.+._ _ 3 +.e _ _ e [.l _ +._'
+' 3 e e _ 3 l }.w ",'#10'"6 # m 2 w U f ''.U r w w U a r * r r : C |.: 2 .Z'
+' "};'#10
]);
LazarusResources.Add('menu_breakpoints','XPM',[
'/* XPM */'#10'static char * breakpoints_xpm[] = {'#10'"16 16 232 2",'#10'" '
+#9'c None",'#10'". '#9'c #FFFFFF",'#10'"+ '#9'c #FFFFCC",'#10'"@ '#9'c #FFFF'