mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-15 06:09:30 +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
|
||||
ide/buildlazdialog.pas 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/compiler.pp svneol=native#text/pascal
|
||||
ide/compileroptions.pp svneol=native#text/pascal
|
||||
|
@ -1421,32 +1421,32 @@ begin
|
||||
if FCurCodeTool<>nil then begin
|
||||
Result:=FCurCodeTool.ConsistencyCheck;
|
||||
if Result<>0 then begin
|
||||
dec(Result,1000); exit;
|
||||
dec(Result,10000); exit;
|
||||
end;
|
||||
end;
|
||||
Result:=DefinePool.ConsistencyCheck;
|
||||
if Result<>0 then begin
|
||||
dec(Result,2000); exit;
|
||||
dec(Result,20000); exit;
|
||||
end;
|
||||
Result:=DefineTree.ConsistencyCheck;
|
||||
if Result<>0 then begin
|
||||
dec(Result,3000); exit;
|
||||
dec(Result,30000); exit;
|
||||
end;
|
||||
Result:=SourceCache.ConsistencyCheck;
|
||||
if Result<>0 then begin
|
||||
dec(Result,4000); exit;
|
||||
dec(Result,40000); exit;
|
||||
end;
|
||||
Result:=GlobalValues.ConsistencyCheck;
|
||||
if Result<>0 then begin
|
||||
dec(Result,5000); exit;
|
||||
dec(Result,50000); exit;
|
||||
end;
|
||||
Result:=SourceChangeCache.ConsistencyCheck;
|
||||
if Result<>0 then begin
|
||||
dec(Result,6000); exit;
|
||||
dec(Result,60000); exit;
|
||||
end;
|
||||
Result:=FSourceTools.ConsistencyCheck;
|
||||
if Result<>0 then begin
|
||||
dec(Result,7000); exit;
|
||||
dec(Result,70000); exit;
|
||||
end;
|
||||
finally
|
||||
if (Result<>0) and (FCatchExceptions=false) then
|
||||
|
@ -118,16 +118,17 @@ type
|
||||
property LastChild: TDefineTemplate read FLastChild;
|
||||
procedure AddChild(ADefineTemplate: TDefineTemplate);
|
||||
procedure InsertAfter(APrior: TDefineTemplate);
|
||||
procedure Assign(ADefineTemplate: TDefineTemplate); virtual;
|
||||
procedure Assign(ADefineTemplate: TDefineTemplate;
|
||||
WithSubNodes, WithNextSiblings: boolean); virtual;
|
||||
function IsEqual(ADefineTemplate: TDefineTemplate;
|
||||
CheckSubNodes: boolean): boolean;
|
||||
function FindChildByName(const AName: string): TDefineTemplate;
|
||||
function LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
||||
const Path: string): boolean;
|
||||
CheckSubNodes, CheckNextSiblings: boolean): boolean;
|
||||
function FindChildByName(const AName: string): TDefineTemplate;
|
||||
function LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
||||
const Path: string): boolean;
|
||||
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string);
|
||||
function CreateCopy: TDefineTemplate;
|
||||
function SelfOrParentContainsFlag(AFlag: TDefineTemplateFlag): boolean;
|
||||
function IsAutoGenerated: boolean;
|
||||
function CreateCopy: TDefineTemplate;
|
||||
function SelfOrParentContainsFlag(AFlag: TDefineTemplateFlag): boolean;
|
||||
function IsAutoGenerated: boolean;
|
||||
procedure Unbind;
|
||||
procedure Clear;
|
||||
constructor Create;
|
||||
@ -183,6 +184,8 @@ type
|
||||
const Path: string): boolean;
|
||||
procedure ClearCache;
|
||||
procedure Clear;
|
||||
function IsEqual(SrcDefineTree: TDefineTree): boolean;
|
||||
procedure Assign(SrcDefineTree: TDefineTree);
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
function ConsistencyCheck: integer; // 0 = ok
|
||||
@ -379,45 +382,78 @@ procedure TDefineTemplate.AddChild(ADefineTemplate: TDefineTemplate);
|
||||
// add as last child
|
||||
begin
|
||||
if ADefineTemplate=nil then exit;
|
||||
ADefineTemplate.FPrior:=FLastChild;
|
||||
FLastChild:=ADefineTemplate;
|
||||
if FFirstChild=nil then FFirstChild:=ADefineTemplate;
|
||||
if ADefineTemplate.FPrior<>nil then
|
||||
ADefineTemplate.FPrior.FNext:=ADefineTemplate;
|
||||
while ADefineTemplate<>nil do begin
|
||||
ADefineTemplate.FParent:=Self;
|
||||
inc(FChildCount);
|
||||
ADefineTemplate:=ADefineTemplate.FNext;
|
||||
if LastChild=nil then begin
|
||||
while ADefineTemplate<>nil do begin
|
||||
ADefineTemplate.fParent:=Self;
|
||||
if ADefineTemplate.Prior=nil then FFirstChild:=ADefineTemplate;
|
||||
if ADefineTemplate.Next=nil then FLastChild:=ADefineTemplate;
|
||||
inc(FChildCount);
|
||||
ADefineTemplate:=ADefineTemplate.Next;
|
||||
end;
|
||||
end else begin
|
||||
ADefineTemplate.InsertAfter(LastChild);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDefineTemplate.InsertAfter(APrior: TDefineTemplate);
|
||||
var ANode, LastSibling: TDefineTemplate;
|
||||
begin
|
||||
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;
|
||||
FNext:=APrior.Next;
|
||||
LastSibling.FNext:=APrior.Next;
|
||||
APrior.FNext:=Self;
|
||||
if FNext<>nil then FNext.FPrior:=Self;
|
||||
FParent:=APrior.FParent;
|
||||
if LastSibling.Next<>nil then LastSibling.Next.FPrior:=LastSibling;
|
||||
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;
|
||||
|
||||
procedure TDefineTemplate.Assign(ADefineTemplate: TDefineTemplate);
|
||||
var ChildTemplate, CopyTemplate: TDefineTemplate;
|
||||
procedure TDefineTemplate.Assign(ADefineTemplate: TDefineTemplate;
|
||||
WithSubNodes, WithNextSiblings: boolean);
|
||||
var ChildTemplate, CopyTemplate, NextTemplate: TDefineTemplate;
|
||||
begin
|
||||
if IsEqual(ADefineTemplate,WithSubNodes,WithNextSiblings) then exit;
|
||||
Clear;
|
||||
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;
|
||||
Description:=ADefineTemplate.Description;
|
||||
Variable:=ADefineTemplate.Variable;
|
||||
Value:=ADefineTemplate.Value;
|
||||
Action:=ADefineTemplate.Action;
|
||||
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;
|
||||
|
||||
procedure TDefineTemplate.Unbind;
|
||||
@ -463,8 +499,10 @@ end;
|
||||
|
||||
function TDefineTemplate.CreateCopy: TDefineTemplate;
|
||||
begin
|
||||
writeln('TDefineTemplate.CreateCopy A ',ConsistencyCheck);
|
||||
Result:=TDefineTemplate.Create;
|
||||
Result.Assign(Self);
|
||||
Result.Assign(Self,true,false);
|
||||
writeln('TDefineTemplate.CreateCopy B ',ConsistencyCheck);
|
||||
end;
|
||||
|
||||
destructor TDefineTemplate.Destroy;
|
||||
@ -623,6 +661,14 @@ begin
|
||||
inc(RealChildCount);
|
||||
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
|
||||
Result:=-1; exit;
|
||||
end;
|
||||
@ -667,7 +713,7 @@ begin
|
||||
end;
|
||||
|
||||
function TDefineTemplate.IsEqual(ADefineTemplate: TDefineTemplate;
|
||||
CheckSubNodes: boolean): boolean;
|
||||
CheckSubNodes, CheckNextSiblings: boolean): boolean;
|
||||
var SrcNode, DestNode: TDefineTemplate;
|
||||
begin
|
||||
Result:=(ADefineTemplate<>nil)
|
||||
@ -681,12 +727,14 @@ begin
|
||||
if Result and CheckSubNodes then begin
|
||||
SrcNode:=FirstChild;
|
||||
DestNode:=ADefineTemplate.FirstChild;
|
||||
while SrcNode<>nil do begin
|
||||
Result:=SrcNode.IsEqual(DestNode,true);
|
||||
if not Result then exit;
|
||||
SrcNode:=SrcNode.Next;
|
||||
DestNode:=DestNode.Next;
|
||||
end;
|
||||
if SrcNode<>nil then
|
||||
Result:=SrcNode.IsEqual(DestNode,CheckSubNodes,true);
|
||||
end;
|
||||
if Result and CheckNextSiblings then begin
|
||||
SrcNode:=Next;
|
||||
DestNode:=ADefineTemplate.Next;
|
||||
if SrcNode<>nil then
|
||||
Result:=SrcNode.IsEqual(DestNode,CheckSubNodes,CheckNextSiblings);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -745,6 +793,25 @@ begin
|
||||
ClearCache;
|
||||
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;
|
||||
begin
|
||||
FCache.FreeAndClear;
|
||||
@ -1121,7 +1188,7 @@ begin
|
||||
if (ADefineTemplate=nil) then exit;
|
||||
OldDefineTemplate:=FindDefineTemplateByName(ADefineTemplate.Name);
|
||||
if OldDefineTemplate<>nil then begin
|
||||
if not OldDefineTemplate.IsEqual(ADefineTemplate,true) then begin
|
||||
if not OldDefineTemplate.IsEqual(ADefineTemplate,true,false) then begin
|
||||
ClearCache;
|
||||
end;
|
||||
ADefineTemplate.InsertAfter(OldDefineTemplate);
|
||||
@ -1139,7 +1206,7 @@ begin
|
||||
if ADefineTemplate=nil then exit;
|
||||
OldDefineTemplate:=FindDefineTemplateByName(ADefineTemplate.Name);
|
||||
if OldDefineTemplate<>nil then begin
|
||||
if not OldDefineTemplate.IsEqual(ADefineTemplate,true) then begin
|
||||
if not OldDefineTemplate.IsEqual(ADefineTemplate,true,false) then begin
|
||||
ClearCache;
|
||||
end;
|
||||
ADefineTemplate.InsertAfter(OldDefineTemplate);
|
||||
|
@ -80,8 +80,8 @@ function TMethodJumpingCodeTool.FindJumpPoint(CursorPos: TCodeXYPosition;
|
||||
var NewPos: TCodeXYPosition; var NewTopLine: integer): boolean;
|
||||
|
||||
const
|
||||
JumpToProcAttr = [phpInUpperCase,phpTrimSpace,phpWithoutClassName,
|
||||
phpWithVarModifiers,phpWithParameterNames,phpWithResultType];
|
||||
JumpToProcAttr = [phpInUpperCase,phpWithoutClassName,phpWithVarModifiers,
|
||||
phpWithParameterNames,phpWithResultType];
|
||||
|
||||
function JumpToProc(
|
||||
FromProcNode: TCodeTreeNode; FromProcAttr: TProcHeadAttributes;
|
||||
@ -254,7 +254,7 @@ writeln('TMethodJumpingCodeTool.FindJumpPoint D ',CleanCursorPos,', |',copy(Src,
|
||||
if (CursorNode=nil)
|
||||
or (not (CursorNode.Desc in [ctnProcedureHead,ctnProcedure])) then
|
||||
exit;
|
||||
// build the method name + parameter list (without default values)
|
||||
// search corresponding proc node
|
||||
Result:=FindBestProcNode(CursorNode,[phpAddClassName,phpInUpperCase],
|
||||
TypeSectionNode,[phpIgnoreForwards,phpInUpperCase]);
|
||||
{$IFDEF CTDEBUG}
|
||||
@ -538,6 +538,7 @@ end;
|
||||
function TMethodJumpingCodeTool.FindFirstDifferenceNode(
|
||||
SearchForNodes, SearchInNodes: TAVLTree;
|
||||
var DiffTxtPos: integer): TAVLTreeNode;
|
||||
// search the first AVL node in SearchForNodes, that is not in SearchInNodes
|
||||
var SearchInNode: TAVLTreeNode;
|
||||
cmp: integer;
|
||||
NodeTxt1, NodeTxt2: string;
|
||||
@ -553,9 +554,9 @@ begin
|
||||
//writeln('[TMethodJumpingCodeTool.FindFirstDifferenceNode] B ',SearchInNode<>nil);
|
||||
cmp:=CompareCodeTreeNodeExt(Result.Data,SearchInNode.Data);
|
||||
|
||||
//NodeTxt1:=TCodeTreeNodeExtension(Result.Data).Txt;
|
||||
//NodeTxt2:=TCodeTreeNodeExtension(SearchInNode.Data).Txt;
|
||||
//writeln('[TMethodJumpingCodeTool.FindFirstDifferenceNode] ',NodeTxt1,' ?',cmp,'= ',NodeTxt2);
|
||||
NodeTxt1:=TCodeTreeNodeExtension(Result.Data).Txt;
|
||||
NodeTxt2:=TCodeTreeNodeExtension(SearchInNode.Data).Txt;
|
||||
writeln('[TMethodJumpingCodeTool.FindFirstDifferenceNode] ',NodeTxt1,' ?',cmp,'= ',NodeTxt2);
|
||||
|
||||
if cmp<0 then begin
|
||||
// result node not found in SearchInNodes
|
||||
@ -592,11 +593,11 @@ begin
|
||||
SearchInNode:=SearchInNodes.FindSuccessor(SearchInNode);
|
||||
if (Result=nil) or (SearchInNode=nil) then exit;
|
||||
end else begin
|
||||
// search in successor
|
||||
// node in SearchInNodes does not exists in SearchForNodes
|
||||
// -> ignore and search next
|
||||
SearchInNode:=SearchInNodes.FindSuccessor(SearchInNode);
|
||||
end;
|
||||
end;
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
function TMethodJumpingCodeTool.JumpToNode(ANode: TCodeTreeNode;
|
||||
|
@ -84,7 +84,7 @@ type
|
||||
phpWithOfObject, // extract 'of object'
|
||||
phpWithComments, // extract comments
|
||||
phpInUpperCase, // turn to uppercase
|
||||
phpTrimSpace, // skip unneeded spaces
|
||||
phpCommentsToSpace, // replace comments with a single space
|
||||
phpWithoutBrackets, // skip start- and end-bracket of parameter list
|
||||
phpIgnoreForwards, // skip forward procs
|
||||
phpIgnoreProcsWithBody,// skip procs with begin..end
|
||||
@ -2878,7 +2878,7 @@ begin
|
||||
end else if (CurPos.StartPos>LastAtomEndPos)
|
||||
and (ExtractMemStream.Position>0) then begin
|
||||
// some code was skipped
|
||||
if (not (phpTrimSpace in Attr))
|
||||
if (phpCommentsToSpace in Attr)
|
||||
or ((CurPos.StartPos<=SrcLen) and (IsIdentStartChar[Src[CurPos.StartPos]])
|
||||
and (IsIdentChar[Src[LastAtomEndPos-1]]))
|
||||
then begin
|
||||
|
@ -2840,7 +2840,6 @@ begin
|
||||
else
|
||||
fUndoList.AddChange(crPaste, Point(1, StartOfBlock.y),
|
||||
EndOfBlock, SelText, smNormal);
|
||||
|
||||
if PasteMode = smColumn then
|
||||
CaretXY := Point(Min(StartOfBlock.X, EndOfBlock.X),
|
||||
Max(StartOfBlock.Y, EndOfBlock.Y) + 1);
|
||||
@ -3264,6 +3263,8 @@ var
|
||||
CaretX - 1 - Length(sLeftSide));
|
||||
end;
|
||||
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
|
||||
Start := PChar(Value);
|
||||
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;
|
||||
ecEditorOptions = ecUserFirst + 805;
|
||||
ecCodeToolsOptions = ecUserFirst + 806;
|
||||
ecCodeToolsDefinesEd = ecUserFirst + 807;
|
||||
|
||||
ecAboutLazarus = ecUserFirst + 900;
|
||||
|
||||
@ -473,6 +474,7 @@ begin
|
||||
ecFindBlockOtherEnd: Result:='find block other end';
|
||||
ecFindBlockStart: Result:='find block start';
|
||||
|
||||
// run menu
|
||||
ecBuild: Result:= 'build program/project';
|
||||
ecBuildAll: Result:= 'build all files of program/project';
|
||||
ecRun: Result:= 'run program';
|
||||
@ -481,22 +483,25 @@ begin
|
||||
ecStepOver: Result:= 'step over';
|
||||
ecRunToCursor: Result:= 'run to cursor';
|
||||
ecStopProgram: Result:= 'stop program';
|
||||
|
||||
ecRunParameters: Result:= 'run parameters';
|
||||
ecCompilerOptions: Result:= 'compiler options';
|
||||
|
||||
// tools menu
|
||||
ecExtToolSettings: Result:= 'external tools settings';
|
||||
ecConfigBuildLazarus: Result:= 'configure build-lazarus';
|
||||
ecBuildLazarus: Result:= 'build lazarus';
|
||||
ecExtToolFirst..ecExtToolLast:
|
||||
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';
|
||||
|
||||
ecBuildLazarus: Result:= 'build lazarus';
|
||||
ecExtToolFirst..ecExtToolLast:
|
||||
Result:='external tool '+IntToStr(cmd-ecExtToolFirst+1);
|
||||
|
||||
else
|
||||
Result:='unknown editor command';
|
||||
end;
|
||||
@ -1196,6 +1201,7 @@ begin
|
||||
Add(C,'General environment options',ecEnvironmentOptions,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 defines editor',ecCodeToolsDefinesEd,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
|
||||
// help menu
|
||||
C:=Categories[AddCategory('HelpMenu','Help menu commands')];
|
||||
|
43
ide/main.pp
43
ide/main.pp
@ -42,7 +42,7 @@ uses
|
||||
Debugger, DBGOutputForm, GDBDebugger, RunParamsOpts, ExtToolDialog,
|
||||
MacroPromptDlg, LMessages, ProjectDefs, Watchesdlg, BreakPointsdlg, ColumnDlg,
|
||||
OutputFilter, BuildLazDialog, MiscOptions, EditDefineTree, CodeToolsOptions,
|
||||
TypInfo, IDEOptionDefs{, CodeToolsDefines};
|
||||
TypInfo, IDEOptionDefs, CodeToolsDefines;
|
||||
|
||||
const
|
||||
Version_String = '0.8.2 alpha';
|
||||
@ -166,6 +166,7 @@ type
|
||||
itmEnvGeneralOptions: TMenuItem;
|
||||
itmEnvEditorOptions: TMenuItem;
|
||||
itmEnvCodeToolsOptions: TMenuItem;
|
||||
itmEnvCodeToolsDefinesEditor: TMenuItem;
|
||||
|
||||
itmHelpAboutLazarus: TMenuItem;
|
||||
|
||||
@ -175,10 +176,10 @@ type
|
||||
HintWindow1 : THintWindow;
|
||||
|
||||
// event handlers
|
||||
procedure FormShow(Sender : TObject);
|
||||
//procedure FormShow(Sender : TObject);
|
||||
procedure FormClose(Sender : TObject; var Action: TCloseAction);
|
||||
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 MainMouseDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X,Y: Integer);
|
||||
@ -257,6 +258,7 @@ type
|
||||
procedure mnuEnvGeneralOptionsClicked(Sender : TObject);
|
||||
procedure mnuEnvEditorOptionsClicked(Sender : TObject);
|
||||
procedure mnuEnvCodeToolsOptionsClicked(Sender : TObject);
|
||||
procedure mnuEnvCodeToolsDefinesEditorClicked(Sender : TObject);
|
||||
|
||||
// help menu
|
||||
procedure mnuHelpAboutLazarusClicked(Sender : TObject);
|
||||
@ -715,7 +717,7 @@ begin
|
||||
HintWindow1.AutoHide := False;
|
||||
|
||||
// MainIDE form events
|
||||
OnShow := @FormShow;
|
||||
//OnShow := @FormShow;
|
||||
OnClose := @FormClose;
|
||||
OnCloseQuery := @FormCloseQuery;
|
||||
|
||||
@ -952,17 +954,7 @@ Begin
|
||||
|
||||
end;
|
||||
|
||||
Procedure TMainIDE.FormPaint(Sender : TObject);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------}
|
||||
procedure TMainIDE.FormShow(Sender : TObject);
|
||||
Begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TMainIDE.FormClose(Sender : TObject; var Action: TCloseAction);
|
||||
begin
|
||||
SaveEnvironment;
|
||||
@ -1625,6 +1617,12 @@ begin
|
||||
itmEnvCodeToolsOptions.OnCLick := @mnuEnvCodeToolsOptionsClicked;
|
||||
mnuEnvironment.Add(itmEnvCodeToolsOptions);
|
||||
|
||||
itmEnvCodeToolsDefinesEditor := TMenuItem.Create(nil);
|
||||
itmEnvCodeToolsDefinesEditor.Name:='itmEnvCodeToolsDefinesEditor';
|
||||
itmEnvCodeToolsDefinesEditor.Caption := 'CodeTools defines editor';
|
||||
itmEnvCodeToolsDefinesEditor.OnCLick := @mnuEnvCodeToolsDefinesEditorClicked;
|
||||
mnuEnvironment.Add(itmEnvCodeToolsDefinesEditor);
|
||||
|
||||
//--------------
|
||||
// Help
|
||||
//--------------
|
||||
@ -2357,6 +2355,11 @@ begin
|
||||
ShowCodeToolsOptions(CodeToolsOpts,@SourceNoteBook.GetSynEditPreviewSettings);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuEnvCodeToolsDefinesEditorClicked(Sender : TObject);
|
||||
begin
|
||||
ShowCodeToolsDefinesEditor(CodeToolBoss,CodeToolsOpts);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.SaveEnvironment;
|
||||
begin
|
||||
SaveDesktopSettings(EnvironmentOptions);
|
||||
@ -4425,7 +4428,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.GetUnitWithPageIndex(PageIndex:integer;
|
||||
procedure TMainIDE.GetUnitWithPageIndex(PageIndex:integer;
|
||||
var ActiveSourceEditor:TSourceEditor; var ActiveUnitInfo:TUnitInfo);
|
||||
begin
|
||||
if SourceNoteBook.NoteBook=nil then begin
|
||||
@ -5143,7 +5146,7 @@ begin
|
||||
FOpenEditorsOnCodeToolChange:=false;
|
||||
|
||||
CodeToolsOpts.AssignTo(CodeToolBoss);
|
||||
|
||||
|
||||
if (not FileExists(EnvironmentOptions.CompilerFilename)) then begin
|
||||
writeln('');
|
||||
writeln('NOTE: Compiler Filename not set! (see Environment Options)');
|
||||
@ -5184,13 +5187,13 @@ begin
|
||||
AddTemplate(ADefTempl,false,
|
||||
'NOTE: Could not create Define Template for Free Pascal Sources');
|
||||
|
||||
// create compiler macros for the lazarus sources
|
||||
// create compiler macros for the lazarus sources
|
||||
ADefTempl:=CreateLazarusSrcTemplate(
|
||||
'$('+ExternalMacroStart+'LazarusDir)',
|
||||
'$('+ExternalMacroStart+'LCLWidgetType)');
|
||||
AddTemplate(ADefTempl,true,
|
||||
'NOTE: Could not create Define Template for Lazarus Sources');
|
||||
end;
|
||||
end;
|
||||
// build define tree
|
||||
c:=CodeToolBoss.ConsistencyCheck;
|
||||
if c<>0 then begin
|
||||
@ -6173,6 +6176,7 @@ begin
|
||||
itmEnvGeneralOptions.ShortCut:=CommandToShortCut(ecEnvironmentOptions);
|
||||
itmEnvEditorOptions.ShortCut:=CommandToShortCut(ecEditorOptions);
|
||||
itmEnvCodeToolsOptions.ShortCut:=CommandToShortCut(ecCodeToolsOptions);
|
||||
itmEnvCodeToolsDefinesEditor.ShortCut:=CommandToShortCut(ecCodeToolsDefinesEd);
|
||||
|
||||
itmHelpAboutLazarus.ShortCut:=CommandToShortCut(ecAboutLazarus);
|
||||
end;
|
||||
@ -6212,6 +6216,9 @@ end.
|
||||
|
||||
{ =============================================================================
|
||||
$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
|
||||
MG: added selection keys and nil operand
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user