mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 03:00:24 +02:00
MG: fixed method search diff proc, fixed synedit insert in empty line, small fixes, started define editor
git-svn-id: trunk@1468 -
This commit is contained in:
parent
9891d77a52
commit
69a28ff329
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -116,6 +116,7 @@ examples/toolbar.pp svneol=native#text/pascal
|
|||||||
examples/trackbar.pp svneol=native#text/pascal
|
examples/trackbar.pp svneol=native#text/pascal
|
||||||
ide/buildlazdialog.pas svneol=native#text/pascal
|
ide/buildlazdialog.pas svneol=native#text/pascal
|
||||||
ide/codetemplatedialog.pp svneol=native#text/pascal
|
ide/codetemplatedialog.pp svneol=native#text/pascal
|
||||||
|
ide/codetoolsdefines.pas svneol=native#text/pascal
|
||||||
ide/codetoolsoptions.pas svneol=native#text/pascal
|
ide/codetoolsoptions.pas svneol=native#text/pascal
|
||||||
ide/compiler.pp svneol=native#text/pascal
|
ide/compiler.pp svneol=native#text/pascal
|
||||||
ide/compileroptions.pp svneol=native#text/pascal
|
ide/compileroptions.pp svneol=native#text/pascal
|
||||||
|
@ -1421,32 +1421,32 @@ begin
|
|||||||
if FCurCodeTool<>nil then begin
|
if FCurCodeTool<>nil then begin
|
||||||
Result:=FCurCodeTool.ConsistencyCheck;
|
Result:=FCurCodeTool.ConsistencyCheck;
|
||||||
if Result<>0 then begin
|
if Result<>0 then begin
|
||||||
dec(Result,1000); exit;
|
dec(Result,10000); exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Result:=DefinePool.ConsistencyCheck;
|
Result:=DefinePool.ConsistencyCheck;
|
||||||
if Result<>0 then begin
|
if Result<>0 then begin
|
||||||
dec(Result,2000); exit;
|
dec(Result,20000); exit;
|
||||||
end;
|
end;
|
||||||
Result:=DefineTree.ConsistencyCheck;
|
Result:=DefineTree.ConsistencyCheck;
|
||||||
if Result<>0 then begin
|
if Result<>0 then begin
|
||||||
dec(Result,3000); exit;
|
dec(Result,30000); exit;
|
||||||
end;
|
end;
|
||||||
Result:=SourceCache.ConsistencyCheck;
|
Result:=SourceCache.ConsistencyCheck;
|
||||||
if Result<>0 then begin
|
if Result<>0 then begin
|
||||||
dec(Result,4000); exit;
|
dec(Result,40000); exit;
|
||||||
end;
|
end;
|
||||||
Result:=GlobalValues.ConsistencyCheck;
|
Result:=GlobalValues.ConsistencyCheck;
|
||||||
if Result<>0 then begin
|
if Result<>0 then begin
|
||||||
dec(Result,5000); exit;
|
dec(Result,50000); exit;
|
||||||
end;
|
end;
|
||||||
Result:=SourceChangeCache.ConsistencyCheck;
|
Result:=SourceChangeCache.ConsistencyCheck;
|
||||||
if Result<>0 then begin
|
if Result<>0 then begin
|
||||||
dec(Result,6000); exit;
|
dec(Result,60000); exit;
|
||||||
end;
|
end;
|
||||||
Result:=FSourceTools.ConsistencyCheck;
|
Result:=FSourceTools.ConsistencyCheck;
|
||||||
if Result<>0 then begin
|
if Result<>0 then begin
|
||||||
dec(Result,7000); exit;
|
dec(Result,70000); exit;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
if (Result<>0) and (FCatchExceptions=false) then
|
if (Result<>0) and (FCatchExceptions=false) then
|
||||||
|
@ -118,16 +118,17 @@ type
|
|||||||
property LastChild: TDefineTemplate read FLastChild;
|
property LastChild: TDefineTemplate read FLastChild;
|
||||||
procedure AddChild(ADefineTemplate: TDefineTemplate);
|
procedure AddChild(ADefineTemplate: TDefineTemplate);
|
||||||
procedure InsertAfter(APrior: TDefineTemplate);
|
procedure InsertAfter(APrior: TDefineTemplate);
|
||||||
procedure Assign(ADefineTemplate: TDefineTemplate); virtual;
|
procedure Assign(ADefineTemplate: TDefineTemplate;
|
||||||
|
WithSubNodes, WithNextSiblings: boolean); virtual;
|
||||||
function IsEqual(ADefineTemplate: TDefineTemplate;
|
function IsEqual(ADefineTemplate: TDefineTemplate;
|
||||||
CheckSubNodes: boolean): boolean;
|
CheckSubNodes, CheckNextSiblings: boolean): boolean;
|
||||||
function FindChildByName(const AName: string): TDefineTemplate;
|
function FindChildByName(const AName: string): TDefineTemplate;
|
||||||
function LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
function LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
||||||
const Path: string): boolean;
|
const Path: string): boolean;
|
||||||
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string);
|
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string);
|
||||||
function CreateCopy: TDefineTemplate;
|
function CreateCopy: TDefineTemplate;
|
||||||
function SelfOrParentContainsFlag(AFlag: TDefineTemplateFlag): boolean;
|
function SelfOrParentContainsFlag(AFlag: TDefineTemplateFlag): boolean;
|
||||||
function IsAutoGenerated: boolean;
|
function IsAutoGenerated: boolean;
|
||||||
procedure Unbind;
|
procedure Unbind;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
constructor Create;
|
constructor Create;
|
||||||
@ -183,6 +184,8 @@ type
|
|||||||
const Path: string): boolean;
|
const Path: string): boolean;
|
||||||
procedure ClearCache;
|
procedure ClearCache;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
|
function IsEqual(SrcDefineTree: TDefineTree): boolean;
|
||||||
|
procedure Assign(SrcDefineTree: TDefineTree);
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
function ConsistencyCheck: integer; // 0 = ok
|
function ConsistencyCheck: integer; // 0 = ok
|
||||||
@ -379,45 +382,78 @@ procedure TDefineTemplate.AddChild(ADefineTemplate: TDefineTemplate);
|
|||||||
// add as last child
|
// add as last child
|
||||||
begin
|
begin
|
||||||
if ADefineTemplate=nil then exit;
|
if ADefineTemplate=nil then exit;
|
||||||
ADefineTemplate.FPrior:=FLastChild;
|
if LastChild=nil then begin
|
||||||
FLastChild:=ADefineTemplate;
|
while ADefineTemplate<>nil do begin
|
||||||
if FFirstChild=nil then FFirstChild:=ADefineTemplate;
|
ADefineTemplate.fParent:=Self;
|
||||||
if ADefineTemplate.FPrior<>nil then
|
if ADefineTemplate.Prior=nil then FFirstChild:=ADefineTemplate;
|
||||||
ADefineTemplate.FPrior.FNext:=ADefineTemplate;
|
if ADefineTemplate.Next=nil then FLastChild:=ADefineTemplate;
|
||||||
while ADefineTemplate<>nil do begin
|
inc(FChildCount);
|
||||||
ADefineTemplate.FParent:=Self;
|
ADefineTemplate:=ADefineTemplate.Next;
|
||||||
inc(FChildCount);
|
end;
|
||||||
ADefineTemplate:=ADefineTemplate.FNext;
|
end else begin
|
||||||
|
ADefineTemplate.InsertAfter(LastChild);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDefineTemplate.InsertAfter(APrior: TDefineTemplate);
|
procedure TDefineTemplate.InsertAfter(APrior: TDefineTemplate);
|
||||||
|
var ANode, LastSibling: TDefineTemplate;
|
||||||
begin
|
begin
|
||||||
if APrior=nil then exit;
|
if APrior=nil then exit;
|
||||||
|
if FParent<>nil then begin
|
||||||
|
ANode:=Self;
|
||||||
|
while ANode<>nil do begin
|
||||||
|
dec(ANode.Parent.FChildCount);
|
||||||
|
ANode.FParent:=nil;
|
||||||
|
ANode:=ANode.Next;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
LastSibling:=Self;
|
||||||
|
while LastSibling.Next<>nil do LastSibling:=LastSibling.Next;
|
||||||
FPrior:=APrior;
|
FPrior:=APrior;
|
||||||
FNext:=APrior.Next;
|
LastSibling.FNext:=APrior.Next;
|
||||||
APrior.FNext:=Self;
|
APrior.FNext:=Self;
|
||||||
if FNext<>nil then FNext.FPrior:=Self;
|
if LastSibling.Next<>nil then LastSibling.Next.FPrior:=LastSibling;
|
||||||
FParent:=APrior.FParent;
|
FParent:=APrior.Parent;
|
||||||
|
if Parent<>nil then begin
|
||||||
|
ANode:=Self;
|
||||||
|
while ANode<>nil do begin
|
||||||
|
ANode.FParent:=Parent;
|
||||||
|
inc(ANode.Parent.FChildCount);
|
||||||
|
ANode:=ANode.Next;
|
||||||
|
end;
|
||||||
|
if Parent.LastChild=APrior then Parent.FLastChild:=LastSibling;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDefineTemplate.Assign(ADefineTemplate: TDefineTemplate);
|
procedure TDefineTemplate.Assign(ADefineTemplate: TDefineTemplate;
|
||||||
var ChildTemplate, CopyTemplate: TDefineTemplate;
|
WithSubNodes, WithNextSiblings: boolean);
|
||||||
|
var ChildTemplate, CopyTemplate, NextTemplate: TDefineTemplate;
|
||||||
begin
|
begin
|
||||||
|
if IsEqual(ADefineTemplate,WithSubNodes,WithNextSiblings) then exit;
|
||||||
Clear;
|
Clear;
|
||||||
if ADefineTemplate=nil then exit;
|
if ADefineTemplate=nil then exit;
|
||||||
ChildTemplate:=ADefineTemplate.FirstChild;
|
|
||||||
while ChildTemplate<>nil do begin
|
|
||||||
CopyTemplate:=ChildTemplate.CreateCopy;
|
|
||||||
AddChild(CopyTemplate);
|
|
||||||
ChildTemplate:=ChildTemplate.Next;
|
|
||||||
end;
|
|
||||||
Name:=ADefineTemplate.Name;
|
Name:=ADefineTemplate.Name;
|
||||||
Description:=ADefineTemplate.Description;
|
Description:=ADefineTemplate.Description;
|
||||||
Variable:=ADefineTemplate.Variable;
|
Variable:=ADefineTemplate.Variable;
|
||||||
Value:=ADefineTemplate.Value;
|
Value:=ADefineTemplate.Value;
|
||||||
Action:=ADefineTemplate.Action;
|
Action:=ADefineTemplate.Action;
|
||||||
Flags:=ADefineTemplate.Flags;
|
Flags:=ADefineTemplate.Flags;
|
||||||
|
if WithSubNodes then begin
|
||||||
|
ChildTemplate:=ADefineTemplate.FirstChild;
|
||||||
|
if ChildTemplate<>nil then begin
|
||||||
|
CopyTemplate:=TDefineTemplate.Create;
|
||||||
|
AddChild(CopyTemplate);
|
||||||
|
CopyTemplate.Assign(ChildTemplate,true,true);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if WithNextSiblings then begin
|
||||||
|
NextTemplate:=ADefineTemplate.FirstChild;
|
||||||
|
if NextTemplate<>nil then begin
|
||||||
|
CopyTemplate:=TDefineTemplate.Create;
|
||||||
|
CopyTemplate.InsertAfter(Self);
|
||||||
|
CopyTemplate.Assign(NextTemplate,WithSubNodes,true);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDefineTemplate.Unbind;
|
procedure TDefineTemplate.Unbind;
|
||||||
@ -463,8 +499,10 @@ end;
|
|||||||
|
|
||||||
function TDefineTemplate.CreateCopy: TDefineTemplate;
|
function TDefineTemplate.CreateCopy: TDefineTemplate;
|
||||||
begin
|
begin
|
||||||
|
writeln('TDefineTemplate.CreateCopy A ',ConsistencyCheck);
|
||||||
Result:=TDefineTemplate.Create;
|
Result:=TDefineTemplate.Create;
|
||||||
Result.Assign(Self);
|
Result.Assign(Self,true,false);
|
||||||
|
writeln('TDefineTemplate.CreateCopy B ',ConsistencyCheck);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TDefineTemplate.Destroy;
|
destructor TDefineTemplate.Destroy;
|
||||||
@ -623,6 +661,14 @@ begin
|
|||||||
inc(RealChildCount);
|
inc(RealChildCount);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
if (Parent<>nil) then begin
|
||||||
|
if (Prior=nil) and (Parent.FirstChild<>Self) then begin
|
||||||
|
Result:=-6; exit;
|
||||||
|
end;
|
||||||
|
if (Next=nil) and (Parent.LastChild<>Self) then begin
|
||||||
|
Result:=-7; exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
if RealChildCount<>FChildCount then begin
|
if RealChildCount<>FChildCount then begin
|
||||||
Result:=-1; exit;
|
Result:=-1; exit;
|
||||||
end;
|
end;
|
||||||
@ -667,7 +713,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TDefineTemplate.IsEqual(ADefineTemplate: TDefineTemplate;
|
function TDefineTemplate.IsEqual(ADefineTemplate: TDefineTemplate;
|
||||||
CheckSubNodes: boolean): boolean;
|
CheckSubNodes, CheckNextSiblings: boolean): boolean;
|
||||||
var SrcNode, DestNode: TDefineTemplate;
|
var SrcNode, DestNode: TDefineTemplate;
|
||||||
begin
|
begin
|
||||||
Result:=(ADefineTemplate<>nil)
|
Result:=(ADefineTemplate<>nil)
|
||||||
@ -681,12 +727,14 @@ begin
|
|||||||
if Result and CheckSubNodes then begin
|
if Result and CheckSubNodes then begin
|
||||||
SrcNode:=FirstChild;
|
SrcNode:=FirstChild;
|
||||||
DestNode:=ADefineTemplate.FirstChild;
|
DestNode:=ADefineTemplate.FirstChild;
|
||||||
while SrcNode<>nil do begin
|
if SrcNode<>nil then
|
||||||
Result:=SrcNode.IsEqual(DestNode,true);
|
Result:=SrcNode.IsEqual(DestNode,CheckSubNodes,true);
|
||||||
if not Result then exit;
|
end;
|
||||||
SrcNode:=SrcNode.Next;
|
if Result and CheckNextSiblings then begin
|
||||||
DestNode:=DestNode.Next;
|
SrcNode:=Next;
|
||||||
end;
|
DestNode:=ADefineTemplate.Next;
|
||||||
|
if SrcNode<>nil then
|
||||||
|
Result:=SrcNode.IsEqual(DestNode,CheckSubNodes,CheckNextSiblings);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -745,6 +793,25 @@ begin
|
|||||||
ClearCache;
|
ClearCache;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TDefineTree.IsEqual(SrcDefineTree: TDefineTree): boolean;
|
||||||
|
begin
|
||||||
|
Result:=false;
|
||||||
|
if (FFirstDefineTemplate=nil) xor (SrcDefineTree.FFirstDefineTemplate=nil)
|
||||||
|
then exit;
|
||||||
|
if (FFirstDefineTemplate<>nil)
|
||||||
|
and (not FFirstDefineTemplate.IsEqual(
|
||||||
|
SrcDefineTree.FFirstDefineTemplate,true,true))
|
||||||
|
then exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDefineTree.Assign(SrcDefineTree: TDefineTree);
|
||||||
|
begin
|
||||||
|
if IsEqual(SrcDefineTree) then exit;
|
||||||
|
Clear;
|
||||||
|
FFirstDefineTemplate:=TDefineTemplate.Create;
|
||||||
|
FFirstDefineTemplate.Assign(SrcDefineTree.FFirstDefineTemplate,true,true);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TDefineTree.ClearCache;
|
procedure TDefineTree.ClearCache;
|
||||||
begin
|
begin
|
||||||
FCache.FreeAndClear;
|
FCache.FreeAndClear;
|
||||||
@ -1121,7 +1188,7 @@ begin
|
|||||||
if (ADefineTemplate=nil) then exit;
|
if (ADefineTemplate=nil) then exit;
|
||||||
OldDefineTemplate:=FindDefineTemplateByName(ADefineTemplate.Name);
|
OldDefineTemplate:=FindDefineTemplateByName(ADefineTemplate.Name);
|
||||||
if OldDefineTemplate<>nil then begin
|
if OldDefineTemplate<>nil then begin
|
||||||
if not OldDefineTemplate.IsEqual(ADefineTemplate,true) then begin
|
if not OldDefineTemplate.IsEqual(ADefineTemplate,true,false) then begin
|
||||||
ClearCache;
|
ClearCache;
|
||||||
end;
|
end;
|
||||||
ADefineTemplate.InsertAfter(OldDefineTemplate);
|
ADefineTemplate.InsertAfter(OldDefineTemplate);
|
||||||
@ -1139,7 +1206,7 @@ begin
|
|||||||
if ADefineTemplate=nil then exit;
|
if ADefineTemplate=nil then exit;
|
||||||
OldDefineTemplate:=FindDefineTemplateByName(ADefineTemplate.Name);
|
OldDefineTemplate:=FindDefineTemplateByName(ADefineTemplate.Name);
|
||||||
if OldDefineTemplate<>nil then begin
|
if OldDefineTemplate<>nil then begin
|
||||||
if not OldDefineTemplate.IsEqual(ADefineTemplate,true) then begin
|
if not OldDefineTemplate.IsEqual(ADefineTemplate,true,false) then begin
|
||||||
ClearCache;
|
ClearCache;
|
||||||
end;
|
end;
|
||||||
ADefineTemplate.InsertAfter(OldDefineTemplate);
|
ADefineTemplate.InsertAfter(OldDefineTemplate);
|
||||||
|
@ -80,8 +80,8 @@ function TMethodJumpingCodeTool.FindJumpPoint(CursorPos: TCodeXYPosition;
|
|||||||
var NewPos: TCodeXYPosition; var NewTopLine: integer): boolean;
|
var NewPos: TCodeXYPosition; var NewTopLine: integer): boolean;
|
||||||
|
|
||||||
const
|
const
|
||||||
JumpToProcAttr = [phpInUpperCase,phpTrimSpace,phpWithoutClassName,
|
JumpToProcAttr = [phpInUpperCase,phpWithoutClassName,phpWithVarModifiers,
|
||||||
phpWithVarModifiers,phpWithParameterNames,phpWithResultType];
|
phpWithParameterNames,phpWithResultType];
|
||||||
|
|
||||||
function JumpToProc(
|
function JumpToProc(
|
||||||
FromProcNode: TCodeTreeNode; FromProcAttr: TProcHeadAttributes;
|
FromProcNode: TCodeTreeNode; FromProcAttr: TProcHeadAttributes;
|
||||||
@ -254,7 +254,7 @@ writeln('TMethodJumpingCodeTool.FindJumpPoint D ',CleanCursorPos,', |',copy(Src,
|
|||||||
if (CursorNode=nil)
|
if (CursorNode=nil)
|
||||||
or (not (CursorNode.Desc in [ctnProcedureHead,ctnProcedure])) then
|
or (not (CursorNode.Desc in [ctnProcedureHead,ctnProcedure])) then
|
||||||
exit;
|
exit;
|
||||||
// build the method name + parameter list (without default values)
|
// search corresponding proc node
|
||||||
Result:=FindBestProcNode(CursorNode,[phpAddClassName,phpInUpperCase],
|
Result:=FindBestProcNode(CursorNode,[phpAddClassName,phpInUpperCase],
|
||||||
TypeSectionNode,[phpIgnoreForwards,phpInUpperCase]);
|
TypeSectionNode,[phpIgnoreForwards,phpInUpperCase]);
|
||||||
{$IFDEF CTDEBUG}
|
{$IFDEF CTDEBUG}
|
||||||
@ -538,6 +538,7 @@ end;
|
|||||||
function TMethodJumpingCodeTool.FindFirstDifferenceNode(
|
function TMethodJumpingCodeTool.FindFirstDifferenceNode(
|
||||||
SearchForNodes, SearchInNodes: TAVLTree;
|
SearchForNodes, SearchInNodes: TAVLTree;
|
||||||
var DiffTxtPos: integer): TAVLTreeNode;
|
var DiffTxtPos: integer): TAVLTreeNode;
|
||||||
|
// search the first AVL node in SearchForNodes, that is not in SearchInNodes
|
||||||
var SearchInNode: TAVLTreeNode;
|
var SearchInNode: TAVLTreeNode;
|
||||||
cmp: integer;
|
cmp: integer;
|
||||||
NodeTxt1, NodeTxt2: string;
|
NodeTxt1, NodeTxt2: string;
|
||||||
@ -553,9 +554,9 @@ begin
|
|||||||
//writeln('[TMethodJumpingCodeTool.FindFirstDifferenceNode] B ',SearchInNode<>nil);
|
//writeln('[TMethodJumpingCodeTool.FindFirstDifferenceNode] B ',SearchInNode<>nil);
|
||||||
cmp:=CompareCodeTreeNodeExt(Result.Data,SearchInNode.Data);
|
cmp:=CompareCodeTreeNodeExt(Result.Data,SearchInNode.Data);
|
||||||
|
|
||||||
//NodeTxt1:=TCodeTreeNodeExtension(Result.Data).Txt;
|
NodeTxt1:=TCodeTreeNodeExtension(Result.Data).Txt;
|
||||||
//NodeTxt2:=TCodeTreeNodeExtension(SearchInNode.Data).Txt;
|
NodeTxt2:=TCodeTreeNodeExtension(SearchInNode.Data).Txt;
|
||||||
//writeln('[TMethodJumpingCodeTool.FindFirstDifferenceNode] ',NodeTxt1,' ?',cmp,'= ',NodeTxt2);
|
writeln('[TMethodJumpingCodeTool.FindFirstDifferenceNode] ',NodeTxt1,' ?',cmp,'= ',NodeTxt2);
|
||||||
|
|
||||||
if cmp<0 then begin
|
if cmp<0 then begin
|
||||||
// result node not found in SearchInNodes
|
// result node not found in SearchInNodes
|
||||||
@ -592,11 +593,11 @@ begin
|
|||||||
SearchInNode:=SearchInNodes.FindSuccessor(SearchInNode);
|
SearchInNode:=SearchInNodes.FindSuccessor(SearchInNode);
|
||||||
if (Result=nil) or (SearchInNode=nil) then exit;
|
if (Result=nil) or (SearchInNode=nil) then exit;
|
||||||
end else begin
|
end else begin
|
||||||
// search in successor
|
// node in SearchInNodes does not exists in SearchForNodes
|
||||||
|
// -> ignore and search next
|
||||||
SearchInNode:=SearchInNodes.FindSuccessor(SearchInNode);
|
SearchInNode:=SearchInNodes.FindSuccessor(SearchInNode);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Result:=nil;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TMethodJumpingCodeTool.JumpToNode(ANode: TCodeTreeNode;
|
function TMethodJumpingCodeTool.JumpToNode(ANode: TCodeTreeNode;
|
||||||
|
@ -84,7 +84,7 @@ type
|
|||||||
phpWithOfObject, // extract 'of object'
|
phpWithOfObject, // extract 'of object'
|
||||||
phpWithComments, // extract comments
|
phpWithComments, // extract comments
|
||||||
phpInUpperCase, // turn to uppercase
|
phpInUpperCase, // turn to uppercase
|
||||||
phpTrimSpace, // skip unneeded spaces
|
phpCommentsToSpace, // replace comments with a single space
|
||||||
phpWithoutBrackets, // skip start- and end-bracket of parameter list
|
phpWithoutBrackets, // skip start- and end-bracket of parameter list
|
||||||
phpIgnoreForwards, // skip forward procs
|
phpIgnoreForwards, // skip forward procs
|
||||||
phpIgnoreProcsWithBody,// skip procs with begin..end
|
phpIgnoreProcsWithBody,// skip procs with begin..end
|
||||||
@ -2878,7 +2878,7 @@ begin
|
|||||||
end else if (CurPos.StartPos>LastAtomEndPos)
|
end else if (CurPos.StartPos>LastAtomEndPos)
|
||||||
and (ExtractMemStream.Position>0) then begin
|
and (ExtractMemStream.Position>0) then begin
|
||||||
// some code was skipped
|
// some code was skipped
|
||||||
if (not (phpTrimSpace in Attr))
|
if (phpCommentsToSpace in Attr)
|
||||||
or ((CurPos.StartPos<=SrcLen) and (IsIdentStartChar[Src[CurPos.StartPos]])
|
or ((CurPos.StartPos<=SrcLen) and (IsIdentStartChar[Src[CurPos.StartPos]])
|
||||||
and (IsIdentChar[Src[LastAtomEndPos-1]]))
|
and (IsIdentChar[Src[LastAtomEndPos-1]]))
|
||||||
then begin
|
then begin
|
||||||
|
@ -2840,7 +2840,6 @@ begin
|
|||||||
else
|
else
|
||||||
fUndoList.AddChange(crPaste, Point(1, StartOfBlock.y),
|
fUndoList.AddChange(crPaste, Point(1, StartOfBlock.y),
|
||||||
EndOfBlock, SelText, smNormal);
|
EndOfBlock, SelText, smNormal);
|
||||||
|
|
||||||
if PasteMode = smColumn then
|
if PasteMode = smColumn then
|
||||||
CaretXY := Point(Min(StartOfBlock.X, EndOfBlock.X),
|
CaretXY := Point(Min(StartOfBlock.X, EndOfBlock.X),
|
||||||
Max(StartOfBlock.Y, EndOfBlock.Y) + 1);
|
Max(StartOfBlock.Y, EndOfBlock.Y) + 1);
|
||||||
@ -3264,6 +3263,8 @@ var
|
|||||||
CaretX - 1 - Length(sLeftSide));
|
CaretX - 1 - Length(sLeftSide));
|
||||||
end;
|
end;
|
||||||
sRightSide := Copy(LineText, CaretX, Length(LineText) - (CaretX - 1));
|
sRightSide := Copy(LineText, CaretX, Length(LineText) - (CaretX - 1));
|
||||||
|
if eoTrimTrailingSpaces in Options then
|
||||||
|
sRightSide := TrimRight(sRightSide);
|
||||||
// step1: insert the first line of Value into current line
|
// step1: insert the first line of Value into current line
|
||||||
Start := PChar(Value);
|
Start := PChar(Value);
|
||||||
P := GetEOL(Start);
|
P := GetEOL(Start);
|
||||||
|
452
ide/codetoolsdefines.pas
Normal file
452
ide/codetoolsdefines.pas
Normal file
@ -0,0 +1,452 @@
|
|||||||
|
{ /***************************************************************************
|
||||||
|
codetoolsoptions.pas - Lazarus IDE unit
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* This program 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
Author: Mattias Gaertner
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
- TCodeToolsDefinesEditor
|
||||||
|
}
|
||||||
|
unit CodeToolsDefines;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, LCLLinux, Forms, Controls, Buttons, StdCtrls, ComCtrls,
|
||||||
|
ExtCtrls, Menus, LResources, SynEdit, DefineTemplates, CodeToolManager,
|
||||||
|
CodeToolsOptions;
|
||||||
|
|
||||||
|
type
|
||||||
|
TCodeToolsDefinesEditor = class(TForm)
|
||||||
|
TheImageList: TImageList;
|
||||||
|
MainMenu: TMainMenu;
|
||||||
|
|
||||||
|
// exit menu
|
||||||
|
ExitMenuItem: TMenuItem;
|
||||||
|
SaveAndExitMenuItem: TMenuItem;
|
||||||
|
DontSaveAndExitMenuItem: TMenuItem;
|
||||||
|
|
||||||
|
// edit nodes
|
||||||
|
EditMenuItem: TMenuItem;
|
||||||
|
MoveNodeUpMenuItem: TMenuItem;
|
||||||
|
MoveNodeDownMenuItem: TMenuItem;
|
||||||
|
InsertDefineMenuItem: TMenuItem;
|
||||||
|
InsertDefineAllMenuItem: TMenuItem;
|
||||||
|
InsertUndefineMenuItem: TMenuItem;
|
||||||
|
InsertBlockMenuItem: TMenuItem;
|
||||||
|
InsertDirectoryMenuItem: TMenuItem;
|
||||||
|
InsertIfMenuItem: TMenuItem;
|
||||||
|
InsertIfDefMenuItem: TMenuItem;
|
||||||
|
InsertElseMenuItem: TMenuItem;
|
||||||
|
InsertEndIfMenuItem: TMenuItem;
|
||||||
|
DeleteNodeMenuItem: TMenuItem;
|
||||||
|
CopyToClipbrdMenuItem: TMenuItem;
|
||||||
|
PasteFromClipbrdMenuItem: TMenuItem;
|
||||||
|
|
||||||
|
// tools
|
||||||
|
ToolsMenuItem: TMenuItem;
|
||||||
|
OpenPreviewMenuItem: TMenuItem;
|
||||||
|
ShowMacroListMenuItem: TMenuItem;
|
||||||
|
|
||||||
|
// templates
|
||||||
|
InsertTemplateMenuItem: TMenuItem;
|
||||||
|
|
||||||
|
// define tree
|
||||||
|
DefineTreeView: TTreeView;
|
||||||
|
|
||||||
|
// selected item
|
||||||
|
SelectedItemGroupBox: TGroupBox;
|
||||||
|
TypeLabel: TLabel;
|
||||||
|
ProjectSpecificCheckBox: TCheckBox;
|
||||||
|
NameLabel: Tlabel;
|
||||||
|
NameEdit: TEdit;
|
||||||
|
DescriptionLabel: TLabel;
|
||||||
|
DescriptionEdit: TEdit;
|
||||||
|
VariableLabel: TLabel;
|
||||||
|
VariableEdit: TEdit;
|
||||||
|
ValueNoteBook: TNoteBook;
|
||||||
|
ValueAsTextSynEdit: TSynEdit;
|
||||||
|
ValueAsFilePathsSynEdit: TSynEdit;
|
||||||
|
MoveFilePathUpBitBtn: TBitBtn;
|
||||||
|
MoveFilePathDownBitBtn: TBitBtn;
|
||||||
|
DeleteFilePathBitBtn: TBitBtn;
|
||||||
|
InsertFilePathBitBtn: TBitBtn;
|
||||||
|
|
||||||
|
procedure SaveAndExitMenuItemClick(Sender: TObject);
|
||||||
|
procedure DontSaveAndExitMenuItemClick(Sender: TObject);
|
||||||
|
procedure FormResize(Sender: TObject);
|
||||||
|
private
|
||||||
|
FDefineTree: TDefineTree;
|
||||||
|
procedure CreateComponents;
|
||||||
|
function CreateSeperator : TMenuItem;
|
||||||
|
procedure RebuildDefineTreeView;
|
||||||
|
procedure AddDefineNodes(ANode, AParent: TDefineTemplate;
|
||||||
|
WithChilds,WithNextSiblings: boolean);
|
||||||
|
public
|
||||||
|
procedure Assign(ACodeToolBoss: TCodeToolManager;
|
||||||
|
Options: TCodeToolsOptions);
|
||||||
|
constructor Create(TheOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
property DefineTree: TDefineTree read FDefineTree;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ShowCodeToolsDefinesEditor(ACodeToolBoss: TCodeToolManager;
|
||||||
|
Options: TCodeToolsOptions): TModalResult;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
|
||||||
|
type
|
||||||
|
TWinControlClass = class of TWinControl;
|
||||||
|
|
||||||
|
function ShowCodeToolsDefinesEditor(ACodeToolBoss: TCodeToolManager;
|
||||||
|
Options: TCodeToolsOptions): TModalResult;
|
||||||
|
var CodeToolsDefinesEditor: TCodeToolsDefinesEditor;
|
||||||
|
begin
|
||||||
|
CodeToolsDefinesEditor:=TCodeToolsDefinesEditor.Create(Application);
|
||||||
|
CodeToolsDefinesEditor.Assign(ACodeToolBoss,Options);
|
||||||
|
Result:=CodeToolsDefinesEditor.ShowModal;
|
||||||
|
CodeToolsDefinesEditor.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TCodeToolsDefinesEditor }
|
||||||
|
|
||||||
|
procedure TCodeToolsDefinesEditor.SaveAndExitMenuItemClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ModalResult:=mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCodeToolsDefinesEditor.DontSaveAndExitMenuItemClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ModalResult:=mrCancel;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCodeToolsDefinesEditor.FormResize(Sender: TObject);
|
||||||
|
var MaxX, MaxY, SelGrpBoxTop, SelItemMaxX, SelItemMaxY,
|
||||||
|
ValNoteBookMaxX, ValNoteBookMaxY: integer;
|
||||||
|
begin
|
||||||
|
MaxX:=ClientWidth-2;
|
||||||
|
MaxY:=ClientHeight-2;
|
||||||
|
SelGrpBoxTop:=MaxY-300;
|
||||||
|
|
||||||
|
// define tree ---------------------------------------------------------------
|
||||||
|
with DefineTreeView do begin
|
||||||
|
Left:=3;
|
||||||
|
Top:=3;
|
||||||
|
Width:=MaxX-2*Left;
|
||||||
|
Height:=SelGrpBoxTop-2*Top;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// selected item -------------------------------------------------------------
|
||||||
|
with SelectedItemGroupBox do begin
|
||||||
|
Left:=DefineTreeView.Left;
|
||||||
|
Top:=SelGrpBoxTop;
|
||||||
|
Width:=MaxX-2*Left;
|
||||||
|
Height:=MaxY-Top-30;
|
||||||
|
end;
|
||||||
|
SelItemMaxX:=SelectedItemGroupBox.ClientWidth-8;
|
||||||
|
SelItemMaxY:=SelectedItemGroupBox.ClientHeight-18;
|
||||||
|
with TypeLabel do begin
|
||||||
|
Left:=5;
|
||||||
|
Top:=3;
|
||||||
|
Width:=SelItemMaxX-2*Left;
|
||||||
|
end;
|
||||||
|
with ProjectSpecificCheckBox do begin
|
||||||
|
Left:=TypeLabel.Left;
|
||||||
|
Top:=TypeLabel.Top+TypeLabel.Height+5;
|
||||||
|
Width:=SelItemMaxX-2*Left;
|
||||||
|
end;
|
||||||
|
with DescriptionLabel do begin
|
||||||
|
Left:=ProjectSpecificCheckBox.Left;
|
||||||
|
Top:=ProjectSpecificCheckBox.Top+ProjectSpecificCheckBox.Height+5;
|
||||||
|
Width:=70;
|
||||||
|
end;
|
||||||
|
with DescriptionEdit do begin
|
||||||
|
Left:=DescriptionLabel.Left+DescriptionLabel.Width+5;
|
||||||
|
Top:=DescriptionLabel.Top;
|
||||||
|
Width:=SelItemMaxX-Left-5;
|
||||||
|
end;
|
||||||
|
with NameLabel do begin
|
||||||
|
Left:=DescriptionLabel.Left;
|
||||||
|
Top:=DescriptionLabel.Top+DescriptionLabel.Height+5;
|
||||||
|
Width:=70;
|
||||||
|
end;
|
||||||
|
with NameEdit do begin
|
||||||
|
Left:=NameLabel.Left+NameLabel.Width+5;
|
||||||
|
Top:=NameLabel.Top;
|
||||||
|
Width:=150;
|
||||||
|
end;
|
||||||
|
with VariableLabel do begin
|
||||||
|
Left:=NameEdit.Left+NameEdit.Width+30;
|
||||||
|
Top:=NameLabel.Top;
|
||||||
|
Width:=70;
|
||||||
|
end;
|
||||||
|
with VariableEdit do begin
|
||||||
|
Left:=VariableLabel.Left+VariableLabel.Width+5;
|
||||||
|
Top:=VariableLabel.Top;
|
||||||
|
Width:=SelItemMaxX-Left-5;
|
||||||
|
end;
|
||||||
|
with ValueNoteBook do begin
|
||||||
|
Left:=0;
|
||||||
|
Top:=VariableLabel.Top+VariableLabel.Height+8;
|
||||||
|
Width:=SelItemMaxX;
|
||||||
|
Height:=SelItemMaxY-Top-5;
|
||||||
|
end;
|
||||||
|
ValNoteBookMaxX:=ValueNoteBook.ClientWidth-7;//ValueAsTextSynEdit.Parent.ClientWidth;
|
||||||
|
ValNoteBookMaxY:=ValueNoteBook.ClientHeight-32;//ValueAsTextSynEdit.Parent.ClientHeight;
|
||||||
|
with ValueAsTextSynEdit do begin
|
||||||
|
Left:=0;
|
||||||
|
Top:=0;
|
||||||
|
Width:=ValNoteBookMaxX;
|
||||||
|
Height:=ValNoteBookMaxY;
|
||||||
|
end;
|
||||||
|
with ValueAsFilePathsSynEdit do begin
|
||||||
|
Left:=0;
|
||||||
|
Top:=0;
|
||||||
|
Width:=ValNoteBookMaxX-80;
|
||||||
|
Height:=ValNoteBookMaxY;
|
||||||
|
end;
|
||||||
|
with MoveFilePathUpBitBtn do begin
|
||||||
|
Left:=ValNoteBookMaxX-75;
|
||||||
|
Top:=5;
|
||||||
|
Width:=ValNoteBookMaxX-Left-5;
|
||||||
|
end;
|
||||||
|
with MoveFilePathDownBitBtn do begin
|
||||||
|
Left:=MoveFilePathUpBitBtn.Left;
|
||||||
|
Top:=MoveFilePathUpBitBtn.Top+MoveFilePathUpBitBtn.Height+5;
|
||||||
|
Width:=MoveFilePathUpBitBtn.Width;
|
||||||
|
end;
|
||||||
|
with DeleteFilePathBitBtn do begin
|
||||||
|
Left:=MoveFilePathUpBitBtn.Left;
|
||||||
|
Top:=MoveFilePathDownBitBtn.Top+MoveFilePathDownBitBtn.Height+5;
|
||||||
|
Width:=MoveFilePathUpBitBtn.Width;
|
||||||
|
end;
|
||||||
|
with InsertFilePathBitBtn do begin
|
||||||
|
Left:=MoveFilePathUpBitBtn.Left;
|
||||||
|
Top:=DeleteFilePathBitBtn.Top+DeleteFilePathBitBtn.Height+5;
|
||||||
|
Width:=MoveFilePathUpBitBtn.Width;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCodeToolsDefinesEditor.CreateComponents;
|
||||||
|
|
||||||
|
procedure CreateWinControl(var AWinControl: TWinControl;
|
||||||
|
AWinControlClass: TWinControlClass; const AName: string;
|
||||||
|
AParent: TWinControl);
|
||||||
|
begin
|
||||||
|
AWinControl:=AWinControlClass.Create(Self);
|
||||||
|
with AWinControl do begin
|
||||||
|
Name:=AName;
|
||||||
|
Parent:=AParent;
|
||||||
|
Visible:=true;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddMenuItem(var AMenuItem: TMenuItem; const AName, ACaption: string;
|
||||||
|
AParent: TMenuItem);
|
||||||
|
begin
|
||||||
|
AMenuItem:=TMenuItem.Create(nil);
|
||||||
|
AMenuItem.Name:=AName;
|
||||||
|
AMenuItem.Caption:=ACaption;
|
||||||
|
if AParent=nil then
|
||||||
|
MainMenu.Items.Add(AMenuItem)
|
||||||
|
else
|
||||||
|
AParent.Add(AMenuItem);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
TheImageList:=TImageList.Create(Self);
|
||||||
|
with TheImageList do begin
|
||||||
|
Name:='TheImageList';
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Main Menu -----------------------------------------------------------------
|
||||||
|
MainMenu := TMainMenu.Create(Self);
|
||||||
|
MainMenu.Name:='MainMenu';
|
||||||
|
Menu := MainMenu;
|
||||||
|
|
||||||
|
// exit menu
|
||||||
|
AddMenuItem(ExitMenuItem,'ExitMenuItem','Exit',nil);
|
||||||
|
AddMenuItem(SaveAndExitMenuItem,'SaveAndExitMenuItem','Save and Exit',
|
||||||
|
ExitMenuItem);
|
||||||
|
SaveAndExitMenuItem.OnClick:=@SaveAndExitMenuItemClick;
|
||||||
|
ExitMenuItem.Add(CreateSeperator);
|
||||||
|
AddMenuItem(DontSaveAndExitMenuItem,'DontSaveAndExitMenuItem',
|
||||||
|
'Exit without Save',ExitMenuItem);
|
||||||
|
DontSaveAndExitMenuItem.OnClick:=@DontSaveAndExitMenuItemClick;
|
||||||
|
|
||||||
|
// edit nodes
|
||||||
|
AddMenuItem(EditMenuItem,'EditMenuItem','Edit',nil);
|
||||||
|
AddMenuItem(MoveNodeUpMenuItem,'MoveNodeUpMenuItem','Move node up',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(MoveNodeDownMenuItem,'MoveNodeDownMenuItem','Move node down',
|
||||||
|
EditMenuItem);
|
||||||
|
EditMenuItem.Add(CreateSeperator);
|
||||||
|
AddMenuItem(InsertDefineMenuItem,'InsertDefineMenuItem','Insert Define',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertDefineAllMenuItem,'InsertDefineAllMenuItem','Insert Define All',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertUndefineMenuItem,'InsertUndefineMenuItem','Insert Undefine',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertBlockMenuItem,'InsertBlockMenuItem','Insert Block',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertDirectoryMenuItem,'InsertDirectoryMenuItem','Insert Directory',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertIfMenuItem,'InsertIfMenuItem','Insert If',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertIfDefMenuItem,'InsertIfDefMenuItem','Insert IfDef',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertElseMenuItem,'InsertElseMenuItem','Insert Else',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(InsertEndIfMenuItem,'InsertEndIfMenuItem','Insert EndIf',
|
||||||
|
EditMenuItem);
|
||||||
|
EditMenuItem.Add(CreateSeperator);
|
||||||
|
AddMenuItem(DeleteNodeMenuItem,'DeleteNodeMenuItem','Delete node',
|
||||||
|
EditMenuItem);
|
||||||
|
EditMenuItem.Add(CreateSeperator);
|
||||||
|
AddMenuItem(CopyToClipbrdMenuItem,'CopyToClipbrdMenuItem','Copy to clipboard',
|
||||||
|
EditMenuItem);
|
||||||
|
AddMenuItem(PasteFromClipbrdMenuItem,'PasteFromClipbrdMenuItem',
|
||||||
|
'Paste from clipboard',EditMenuItem);
|
||||||
|
|
||||||
|
// tools
|
||||||
|
AddMenuItem(ToolsMenuItem,'ToolsMenuItem','Tools',nil);
|
||||||
|
AddMenuItem(OpenPreviewMenuItem,'OpenPreviewMenuItem','Open Preview',
|
||||||
|
ToolsMenuItem);
|
||||||
|
AddMenuItem(ShowMacroListMenuItem,'ShowMacroListMenuItem','Show Macros',
|
||||||
|
ToolsMenuItem);
|
||||||
|
|
||||||
|
// templates
|
||||||
|
AddMenuItem(InsertTemplateMenuItem,'InsertTemplateMenuItem',
|
||||||
|
'Insert Template',nil);
|
||||||
|
|
||||||
|
|
||||||
|
// define tree----------------------------------------------------------------
|
||||||
|
CreateWinControl(DefineTreeView,TTreeView,'DefineTreeView',Self);
|
||||||
|
with DefineTreeView do begin
|
||||||
|
Images:=TheImageList;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// selected item
|
||||||
|
CreateWinControl(SelectedItemGroupBox,TGroupBox,'SelectedItemGroupBox',Self);
|
||||||
|
SelectedItemGroupBox.Caption:='Selected Node:';
|
||||||
|
|
||||||
|
CreateWinControl(TypeLabel,TLabel,'TypeLabel',SelectedItemGroupBox);
|
||||||
|
|
||||||
|
CreateWinControl(ProjectSpecificCheckBox,TCheckBox,'ProjectSpecificCheckBox',
|
||||||
|
SelectedItemGroupBox);
|
||||||
|
ProjectSpecificCheckBox.Caption:=
|
||||||
|
'Node and its children are only valid for this project';
|
||||||
|
|
||||||
|
CreateWinControl(NameLabel,TLabel,'NameLabel',SelectedItemGroupBox);
|
||||||
|
NameLabel.Caption:='Name:';
|
||||||
|
|
||||||
|
CreateWinControl(NameEdit,TEdit,'NameEdit',SelectedItemGroupBox);
|
||||||
|
|
||||||
|
CreateWinControl(DescriptionLabel,TLabel,'DescriptionLabel',
|
||||||
|
SelectedItemGroupBox);
|
||||||
|
DescriptionLabel.Caption:='Description:';
|
||||||
|
|
||||||
|
CreateWinControl(DescriptionEdit,TEdit,'DescriptionEdit',
|
||||||
|
SelectedItemGroupBox);
|
||||||
|
|
||||||
|
CreateWinControl(VariableLabel,TLabel,'VariableLabel',SelectedItemGroupBox);
|
||||||
|
VariableLabel.Caption:='Variable:';
|
||||||
|
|
||||||
|
CreateWinControl(VariableEdit,TEdit,'VariableEdit',SelectedItemGroupBox);
|
||||||
|
|
||||||
|
CreateWinControl(ValueNoteBook,TNoteBook,'ValueNoteBook',
|
||||||
|
SelectedItemGroupBox);
|
||||||
|
with ValueNoteBook do begin
|
||||||
|
Pages[0]:='Value as Text';
|
||||||
|
Pages.Add('Value as File Paths');
|
||||||
|
end;
|
||||||
|
|
||||||
|
CreateWinControl(ValueAsTextSynEdit,TSynEdit,'ValueAsTextSynEdit',
|
||||||
|
ValueNoteBook.Page[0]);
|
||||||
|
|
||||||
|
CreateWinControl(ValueAsFilePathsSynEdit,TSynEdit,'ValueAsFilePathsSynEdit',
|
||||||
|
ValueNoteBook.Page[1]);
|
||||||
|
|
||||||
|
CreateWinControl(MoveFilePathUpBitBtn,TBitBtn,'MoveFilePathUpBitBtn',
|
||||||
|
ValueNoteBook.Page[1]);
|
||||||
|
MoveFilePathUpBitBtn.Caption:='Move path up';
|
||||||
|
|
||||||
|
CreateWinControl(MoveFilePathDownBitBtn,TBitBtn,'MoveFilePathDownBitBtn',
|
||||||
|
ValueNoteBook.Page[1]);
|
||||||
|
MoveFilePathDownBitBtn.Caption:='Move path down';
|
||||||
|
|
||||||
|
CreateWinControl(DeleteFilePathBitBtn,TBitBtn,'DeleteFilePathBitBtn',
|
||||||
|
ValueNoteBook.Page[1]);
|
||||||
|
DeleteFilePathBitBtn.Caption:='Delete path';
|
||||||
|
|
||||||
|
CreateWinControl(InsertFilePathBitBtn,TBitBtn,'InsertFilePathBitBtn',
|
||||||
|
ValueNoteBook.Page[1]);
|
||||||
|
InsertFilePathBitBtn.Caption:='Insert path';
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCodeToolsDefinesEditor.CreateSeperator : TMenuItem;
|
||||||
|
begin
|
||||||
|
Result := TMenuItem.Create(Self);
|
||||||
|
Result.Caption := '-';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCodeToolsDefinesEditor.RebuildDefineTreeView;
|
||||||
|
begin
|
||||||
|
DefineTreeView.Items.BeginUpdate;
|
||||||
|
DefineTreeView.Items.Clear;
|
||||||
|
AddDefineNodes(FDefineTree.RootTemplate,nil,true,true);
|
||||||
|
DefineTreeView.Items.EndUpdate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCodeToolsDefinesEditor.AddDefineNodes(
|
||||||
|
ANode, AParent: TDefineTemplate;
|
||||||
|
WithChilds, WithNextSiblings: boolean);
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCodeToolsDefinesEditor.Assign(ACodeToolBoss: TCodeToolManager;
|
||||||
|
Options: TCodeToolsOptions);
|
||||||
|
begin
|
||||||
|
FDefineTree.Assign(ACodeToolBoss.DefineTree);
|
||||||
|
RebuildDefineTreeView;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TCodeToolsDefinesEditor.Create(TheOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(TheOwner);
|
||||||
|
if LazarusResources.Find(ClassName)=nil then begin
|
||||||
|
SetBounds((Screen.Width-480) div 2,(Screen.Height-430) div 2, 485, 435);
|
||||||
|
Caption:='CodeTools Defines Editor';
|
||||||
|
OnResize:=@FormResize;
|
||||||
|
|
||||||
|
CreateComponents;
|
||||||
|
end;
|
||||||
|
FDefineTree:=TDefineTree.Create;
|
||||||
|
Resize;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TCodeToolsDefinesEditor.Destroy;
|
||||||
|
begin
|
||||||
|
FDefineTree.Free;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -117,6 +117,7 @@ const
|
|||||||
ecEnvironmentOptions = ecUserFirst + 804;
|
ecEnvironmentOptions = ecUserFirst + 804;
|
||||||
ecEditorOptions = ecUserFirst + 805;
|
ecEditorOptions = ecUserFirst + 805;
|
||||||
ecCodeToolsOptions = ecUserFirst + 806;
|
ecCodeToolsOptions = ecUserFirst + 806;
|
||||||
|
ecCodeToolsDefinesEd = ecUserFirst + 807;
|
||||||
|
|
||||||
ecAboutLazarus = ecUserFirst + 900;
|
ecAboutLazarus = ecUserFirst + 900;
|
||||||
|
|
||||||
@ -473,6 +474,7 @@ begin
|
|||||||
ecFindBlockOtherEnd: Result:='find block other end';
|
ecFindBlockOtherEnd: Result:='find block other end';
|
||||||
ecFindBlockStart: Result:='find block start';
|
ecFindBlockStart: Result:='find block start';
|
||||||
|
|
||||||
|
// run menu
|
||||||
ecBuild: Result:= 'build program/project';
|
ecBuild: Result:= 'build program/project';
|
||||||
ecBuildAll: Result:= 'build all files of program/project';
|
ecBuildAll: Result:= 'build all files of program/project';
|
||||||
ecRun: Result:= 'run program';
|
ecRun: Result:= 'run program';
|
||||||
@ -481,22 +483,25 @@ begin
|
|||||||
ecStepOver: Result:= 'step over';
|
ecStepOver: Result:= 'step over';
|
||||||
ecRunToCursor: Result:= 'run to cursor';
|
ecRunToCursor: Result:= 'run to cursor';
|
||||||
ecStopProgram: Result:= 'stop program';
|
ecStopProgram: Result:= 'stop program';
|
||||||
|
|
||||||
ecRunParameters: Result:= 'run parameters';
|
ecRunParameters: Result:= 'run parameters';
|
||||||
ecCompilerOptions: Result:= 'compiler options';
|
ecCompilerOptions: Result:= 'compiler options';
|
||||||
|
|
||||||
|
// tools menu
|
||||||
ecExtToolSettings: Result:= 'external tools settings';
|
ecExtToolSettings: Result:= 'external tools settings';
|
||||||
ecConfigBuildLazarus: Result:= 'configure build-lazarus';
|
ecConfigBuildLazarus: Result:= 'configure build-lazarus';
|
||||||
ecEnvironmentOptions: Result:= 'environment options';
|
|
||||||
ecEditorOptions: Result:= 'editor options';
|
|
||||||
ecCodeToolsOptions: Result:= 'codetools options';
|
|
||||||
|
|
||||||
// help menu
|
|
||||||
ecAboutLazarus: Result:= 'about lazarus';
|
|
||||||
|
|
||||||
ecBuildLazarus: Result:= 'build lazarus';
|
ecBuildLazarus: Result:= 'build lazarus';
|
||||||
ecExtToolFirst..ecExtToolLast:
|
ecExtToolFirst..ecExtToolLast:
|
||||||
Result:='external tool '+IntToStr(cmd-ecExtToolFirst+1);
|
Result:='external tool '+IntToStr(cmd-ecExtToolFirst+1);
|
||||||
|
|
||||||
|
// environment menu
|
||||||
|
ecEnvironmentOptions: Result:= 'environment options';
|
||||||
|
ecEditorOptions: Result:= 'editor options';
|
||||||
|
ecCodeToolsOptions: Result:= 'codetools options';
|
||||||
|
ecCodeToolsDefinesEd: Result:= 'codetools defines editor';
|
||||||
|
|
||||||
|
// help menu
|
||||||
|
ecAboutLazarus: Result:= 'about lazarus';
|
||||||
|
|
||||||
else
|
else
|
||||||
Result:='unknown editor command';
|
Result:='unknown editor command';
|
||||||
end;
|
end;
|
||||||
@ -1196,6 +1201,7 @@ begin
|
|||||||
Add(C,'General environment options',ecEnvironmentOptions,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
Add(C,'General environment options',ecEnvironmentOptions,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
Add(C,'Editor options',ecEditorOptions,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
Add(C,'Editor options',ecEditorOptions,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
Add(C,'CodeTools options',ecCodeToolsOptions,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
Add(C,'CodeTools options',ecCodeToolsOptions,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
|
Add(C,'CodeTools defines editor',ecCodeToolsDefinesEd,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
// help menu
|
// help menu
|
||||||
C:=Categories[AddCategory('HelpMenu','Help menu commands')];
|
C:=Categories[AddCategory('HelpMenu','Help menu commands')];
|
||||||
|
35
ide/main.pp
35
ide/main.pp
@ -42,7 +42,7 @@ uses
|
|||||||
Debugger, DBGOutputForm, GDBDebugger, RunParamsOpts, ExtToolDialog,
|
Debugger, DBGOutputForm, GDBDebugger, RunParamsOpts, ExtToolDialog,
|
||||||
MacroPromptDlg, LMessages, ProjectDefs, Watchesdlg, BreakPointsdlg, ColumnDlg,
|
MacroPromptDlg, LMessages, ProjectDefs, Watchesdlg, BreakPointsdlg, ColumnDlg,
|
||||||
OutputFilter, BuildLazDialog, MiscOptions, EditDefineTree, CodeToolsOptions,
|
OutputFilter, BuildLazDialog, MiscOptions, EditDefineTree, CodeToolsOptions,
|
||||||
TypInfo, IDEOptionDefs{, CodeToolsDefines};
|
TypInfo, IDEOptionDefs, CodeToolsDefines;
|
||||||
|
|
||||||
const
|
const
|
||||||
Version_String = '0.8.2 alpha';
|
Version_String = '0.8.2 alpha';
|
||||||
@ -166,6 +166,7 @@ type
|
|||||||
itmEnvGeneralOptions: TMenuItem;
|
itmEnvGeneralOptions: TMenuItem;
|
||||||
itmEnvEditorOptions: TMenuItem;
|
itmEnvEditorOptions: TMenuItem;
|
||||||
itmEnvCodeToolsOptions: TMenuItem;
|
itmEnvCodeToolsOptions: TMenuItem;
|
||||||
|
itmEnvCodeToolsDefinesEditor: TMenuItem;
|
||||||
|
|
||||||
itmHelpAboutLazarus: TMenuItem;
|
itmHelpAboutLazarus: TMenuItem;
|
||||||
|
|
||||||
@ -175,10 +176,10 @@ type
|
|||||||
HintWindow1 : THintWindow;
|
HintWindow1 : THintWindow;
|
||||||
|
|
||||||
// event handlers
|
// event handlers
|
||||||
procedure FormShow(Sender : TObject);
|
//procedure FormShow(Sender : TObject);
|
||||||
procedure FormClose(Sender : TObject; var Action: TCloseAction);
|
procedure FormClose(Sender : TObject; var Action: TCloseAction);
|
||||||
procedure FormCloseQuery(Sender : TObject; var CanClose: boolean);
|
procedure FormCloseQuery(Sender : TObject; var CanClose: boolean);
|
||||||
procedure FormPaint(Sender : TObject);
|
//procedure FormPaint(Sender : TObject);
|
||||||
procedure MainMouseMoved(Sender: TObject; Shift: TShiftState; X,Y: Integer);
|
procedure MainMouseMoved(Sender: TObject; Shift: TShiftState; X,Y: Integer);
|
||||||
procedure MainMouseDown(Sender: TObject; Button: TMouseButton;
|
procedure MainMouseDown(Sender: TObject; Button: TMouseButton;
|
||||||
Shift: TShiftState; X,Y: Integer);
|
Shift: TShiftState; X,Y: Integer);
|
||||||
@ -257,6 +258,7 @@ type
|
|||||||
procedure mnuEnvGeneralOptionsClicked(Sender : TObject);
|
procedure mnuEnvGeneralOptionsClicked(Sender : TObject);
|
||||||
procedure mnuEnvEditorOptionsClicked(Sender : TObject);
|
procedure mnuEnvEditorOptionsClicked(Sender : TObject);
|
||||||
procedure mnuEnvCodeToolsOptionsClicked(Sender : TObject);
|
procedure mnuEnvCodeToolsOptionsClicked(Sender : TObject);
|
||||||
|
procedure mnuEnvCodeToolsDefinesEditorClicked(Sender : TObject);
|
||||||
|
|
||||||
// help menu
|
// help menu
|
||||||
procedure mnuHelpAboutLazarusClicked(Sender : TObject);
|
procedure mnuHelpAboutLazarusClicked(Sender : TObject);
|
||||||
@ -715,7 +717,7 @@ begin
|
|||||||
HintWindow1.AutoHide := False;
|
HintWindow1.AutoHide := False;
|
||||||
|
|
||||||
// MainIDE form events
|
// MainIDE form events
|
||||||
OnShow := @FormShow;
|
//OnShow := @FormShow;
|
||||||
OnClose := @FormClose;
|
OnClose := @FormClose;
|
||||||
OnCloseQuery := @FormCloseQuery;
|
OnCloseQuery := @FormCloseQuery;
|
||||||
|
|
||||||
@ -952,17 +954,7 @@ Begin
|
|||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TMainIDE.FormPaint(Sender : TObject);
|
|
||||||
begin
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
{------------------------------------------------------------------------------}
|
{------------------------------------------------------------------------------}
|
||||||
procedure TMainIDE.FormShow(Sender : TObject);
|
|
||||||
Begin
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainIDE.FormClose(Sender : TObject; var Action: TCloseAction);
|
procedure TMainIDE.FormClose(Sender : TObject; var Action: TCloseAction);
|
||||||
begin
|
begin
|
||||||
SaveEnvironment;
|
SaveEnvironment;
|
||||||
@ -1625,6 +1617,12 @@ begin
|
|||||||
itmEnvCodeToolsOptions.OnCLick := @mnuEnvCodeToolsOptionsClicked;
|
itmEnvCodeToolsOptions.OnCLick := @mnuEnvCodeToolsOptionsClicked;
|
||||||
mnuEnvironment.Add(itmEnvCodeToolsOptions);
|
mnuEnvironment.Add(itmEnvCodeToolsOptions);
|
||||||
|
|
||||||
|
itmEnvCodeToolsDefinesEditor := TMenuItem.Create(nil);
|
||||||
|
itmEnvCodeToolsDefinesEditor.Name:='itmEnvCodeToolsDefinesEditor';
|
||||||
|
itmEnvCodeToolsDefinesEditor.Caption := 'CodeTools defines editor';
|
||||||
|
itmEnvCodeToolsDefinesEditor.OnCLick := @mnuEnvCodeToolsDefinesEditorClicked;
|
||||||
|
mnuEnvironment.Add(itmEnvCodeToolsDefinesEditor);
|
||||||
|
|
||||||
//--------------
|
//--------------
|
||||||
// Help
|
// Help
|
||||||
//--------------
|
//--------------
|
||||||
@ -2357,6 +2355,11 @@ begin
|
|||||||
ShowCodeToolsOptions(CodeToolsOpts,@SourceNoteBook.GetSynEditPreviewSettings);
|
ShowCodeToolsOptions(CodeToolsOpts,@SourceNoteBook.GetSynEditPreviewSettings);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMainIDE.mnuEnvCodeToolsDefinesEditorClicked(Sender : TObject);
|
||||||
|
begin
|
||||||
|
ShowCodeToolsDefinesEditor(CodeToolBoss,CodeToolsOpts);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.SaveEnvironment;
|
procedure TMainIDE.SaveEnvironment;
|
||||||
begin
|
begin
|
||||||
SaveDesktopSettings(EnvironmentOptions);
|
SaveDesktopSettings(EnvironmentOptions);
|
||||||
@ -6173,6 +6176,7 @@ begin
|
|||||||
itmEnvGeneralOptions.ShortCut:=CommandToShortCut(ecEnvironmentOptions);
|
itmEnvGeneralOptions.ShortCut:=CommandToShortCut(ecEnvironmentOptions);
|
||||||
itmEnvEditorOptions.ShortCut:=CommandToShortCut(ecEditorOptions);
|
itmEnvEditorOptions.ShortCut:=CommandToShortCut(ecEditorOptions);
|
||||||
itmEnvCodeToolsOptions.ShortCut:=CommandToShortCut(ecCodeToolsOptions);
|
itmEnvCodeToolsOptions.ShortCut:=CommandToShortCut(ecCodeToolsOptions);
|
||||||
|
itmEnvCodeToolsDefinesEditor.ShortCut:=CommandToShortCut(ecCodeToolsDefinesEd);
|
||||||
|
|
||||||
itmHelpAboutLazarus.ShortCut:=CommandToShortCut(ecAboutLazarus);
|
itmHelpAboutLazarus.ShortCut:=CommandToShortCut(ecAboutLazarus);
|
||||||
end;
|
end;
|
||||||
@ -6212,6 +6216,9 @@ end.
|
|||||||
|
|
||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.238 2002/03/02 11:08:36 lazarus
|
||||||
|
MG: fixed method search diff proc, fixed synedit insert in empty line, small fixes, started define editor
|
||||||
|
|
||||||
Revision 1.237 2002/03/01 15:51:06 lazarus
|
Revision 1.237 2002/03/01 15:51:06 lazarus
|
||||||
MG: added selection keys and nil operand
|
MG: added selection keys and nil operand
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user