mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-03 01:58:14 +02:00
IDE: Move BeginCodeTool to MainBase.
git-svn-id: trunk@38768 -
This commit is contained in:
parent
08589a996b
commit
fdb25262a7
116
ide/main.pp
116
ide/main.pp
@ -593,7 +593,6 @@ type
|
||||
procedure OnAfterCodeToolBossApplyChanges(Manager: TCodeToolManager);
|
||||
function OnCodeToolBossSearchUsedUnit(const SrcFilename: string;
|
||||
const TheUnitName, TheUnitInFilename: string): TCodeBuffer;
|
||||
function OnCodeToolBossCheckAbort: boolean;
|
||||
procedure CodeToolBossGetVirtualDirectoryAlias(Sender: TObject;
|
||||
var RealDir: string);
|
||||
procedure CodeToolBossGetVirtualDirectoryDefines(DefTree: TDefineTree;
|
||||
@ -903,10 +902,6 @@ type
|
||||
procedure AbortBuild; override;
|
||||
|
||||
// useful frontend methods
|
||||
procedure DoSwitchToFormSrc(var ActiveSourceEditor:TSourceEditor;
|
||||
var ActiveUnitInfo:TUnitInfo);
|
||||
procedure DoSwitchToFormSrc(ADesigner: TDesigner;
|
||||
var ActiveSourceEditor:TSourceEditor; var ActiveUnitInfo:TUnitInfo);
|
||||
procedure UpdateCaption; override;
|
||||
procedure HideIDE; override;
|
||||
procedure HideUnmodifiedDesigners;
|
||||
@ -914,15 +909,7 @@ type
|
||||
|
||||
// methods for codetools
|
||||
function InitCodeToolBoss: boolean;
|
||||
procedure ActivateCodeToolAbortableMode;
|
||||
function BeginCodeTools: boolean; override;
|
||||
function BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
|
||||
out ActiveUnitInfo: TUnitInfo;
|
||||
Flags: TCodeToolsFlags): boolean;
|
||||
function BeginCodeTool(ADesigner: TDesigner;
|
||||
var ActiveSrcEdit: TSourceEditor;
|
||||
out ActiveUnitInfo: TUnitInfo;
|
||||
Flags: TCodeToolsFlags): boolean;
|
||||
function DoJumpToSourcePosition(const Filename: string;
|
||||
NewX, NewY, NewTopLine: integer;
|
||||
Flags: TJumpToCodePosFlags = [jfFocusEditor]): TModalResult; override;
|
||||
@ -10364,15 +10351,6 @@ begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TMainIDE.ActivateCodeToolAbortableMode;
|
||||
begin
|
||||
if ToolStatus=itNone then
|
||||
RaiseException('TMainIDE.ActivateCodeToolAbortableMode Error 1');
|
||||
ToolStatus:=itCodeTools;
|
||||
CodeToolBoss.OnCheckAbort:=@OnCodeToolBossCheckAbort;
|
||||
CodeToolBoss.Abortable:=true;
|
||||
end;
|
||||
|
||||
function TMainIDE.BeginCodeTools: boolean;
|
||||
var
|
||||
ActiveSrcEdit: TSourceEditor;
|
||||
@ -10464,14 +10442,6 @@ begin
|
||||
Result:=AnUnitInfo.Source;
|
||||
end;
|
||||
|
||||
function TMainIDE.OnCodeToolBossCheckAbort: boolean;
|
||||
begin
|
||||
Result:=true;
|
||||
if ToolStatus<>itCodeTools then exit;
|
||||
Application.ProcessMessages;
|
||||
Result:=ToolStatus<>itCodeTools;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.CodeToolBossGetVirtualDirectoryAlias(Sender: TObject;
|
||||
var RealDir: string);
|
||||
begin
|
||||
@ -10699,67 +10669,6 @@ begin
|
||||
Result:=SourceFileMgr.SaveSourceEditorChangesToCodeCache(AEditor);
|
||||
end;
|
||||
|
||||
function TMainIDE.BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
|
||||
out ActiveUnitInfo: TUnitInfo; Flags: TCodeToolsFlags): boolean;
|
||||
begin
|
||||
Result:=BeginCodeTool(nil,ActiveSrcEdit,ActiveUnitInfo,Flags);
|
||||
end;
|
||||
|
||||
function TMainIDE.BeginCodeTool(ADesigner: TDesigner;
|
||||
var ActiveSrcEdit: TSourceEditor; out ActiveUnitInfo: TUnitInfo;
|
||||
Flags: TCodeToolsFlags): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
if (ctfUseGivenSourceEditor in Flags) and (Project1<>nil) then begin
|
||||
ActiveUnitInfo := Project1.EditorInfoWithEditorComponent(ActiveSrcEdit).UnitInfo;
|
||||
end
|
||||
else begin
|
||||
ActiveSrcEdit:=nil;
|
||||
ActiveUnitInfo:=nil;
|
||||
end;
|
||||
|
||||
// check global stati
|
||||
if (ToolStatus in [itCodeTools,itCodeToolAborting]) then begin
|
||||
debugln('TMainIDE.BeginCodeTool impossible ',dbgs(ord(ToolStatus)));
|
||||
exit;
|
||||
end;
|
||||
if (not (ctfSourceEditorNotNeeded in Flags)) and (SourceEditorManager.SourceEditorCount=0)
|
||||
then begin
|
||||
DebugLn('TMainIDE.BeginCodeTool no source editor');
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check source editor
|
||||
if not (ctfUseGivenSourceEditor in Flags) then begin
|
||||
if ctfSwitchToFormSource in Flags then
|
||||
DoSwitchToFormSrc(ADesigner,ActiveSrcEdit,ActiveUnitInfo)
|
||||
else if ADesigner<>nil then
|
||||
GetDesignerUnit(ADesigner,ActiveSrcEdit,ActiveUnitInfo)
|
||||
else
|
||||
GetCurrentUnit(ActiveSrcEdit,ActiveUnitInfo);
|
||||
end;
|
||||
if (not (ctfSourceEditorNotNeeded in Flags)) and
|
||||
((ActiveSrcEdit=nil) or (ActiveUnitInfo=nil))
|
||||
then exit;
|
||||
|
||||
// init codetools
|
||||
SaveSourceEditorChangesToCodeCache(nil);
|
||||
if ActiveSrcEdit<>nil then begin
|
||||
CodeToolBoss.VisibleEditorLines:=ActiveSrcEdit.EditorComponent.LinesInWindow;
|
||||
CodeToolBoss.TabWidth:=ActiveSrcEdit.EditorComponent.TabWidth;
|
||||
CodeToolBoss.IndentSize:=ActiveSrcEdit.EditorComponent.BlockIndent;
|
||||
end else begin
|
||||
CodeToolBoss.VisibleEditorLines:=25;
|
||||
CodeToolBoss.TabWidth:=EditorOpts.TabWidth;
|
||||
CodeToolBoss.IndentSize:=EditorOpts.BlockIndent;
|
||||
end;
|
||||
|
||||
if ctfActivateAbortMode in Flags then
|
||||
ActivateCodeToolAbortableMode;
|
||||
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function TMainIDE.DoJumpToSourcePosition(const Filename: string; NewX, NewY,
|
||||
NewTopLine: integer; Flags: TJumpToCodePosFlags = [jfFocusEditor]): TModalResult;
|
||||
var
|
||||
@ -13434,31 +13343,6 @@ begin
|
||||
Result := FOIHelpProvider;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.DoSwitchToFormSrc(var ActiveSourceEditor: TSourceEditor;
|
||||
var ActiveUnitInfo: TUnitInfo);
|
||||
begin
|
||||
DoSwitchToFormSrc(nil,ActiveSourceEditor,ActiveUnitInfo);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.DoSwitchToFormSrc(ADesigner: TDesigner;
|
||||
var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo);
|
||||
begin
|
||||
ActiveSourceEditor:=nil;
|
||||
ActiveUnitInfo:=nil;
|
||||
if (ADesigner<>nil) then
|
||||
ActiveUnitInfo:=Project1.UnitWithComponent(ADesigner.LookupRoot)
|
||||
else if (GlobalDesignHook.LookupRoot<>nil)
|
||||
and (GlobalDesignHook.LookupRoot is TComponent) then
|
||||
ActiveUnitInfo:=Project1.UnitWithComponent(TComponent(GlobalDesignHook.LookupRoot))
|
||||
else
|
||||
ActiveUnitInfo:=nil;
|
||||
if (ActiveUnitInfo<>nil) and (ActiveUnitInfo.OpenEditorInfoCount > 0) then begin
|
||||
ActiveSourceEditor := TSourceEditor(ActiveUnitInfo.OpenEditorInfo[0].EditorComponent);
|
||||
SourceEditorManagerIntf.ActiveEditor := ActiveSourceEditor;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TMainIDE.GetDesignerFormOfSource(AnUnitInfo: TUnitInfo; LoadForm: boolean
|
||||
): TCustomForm;
|
||||
begin
|
||||
|
118
ide/mainbase.pas
118
ide/mainbase.pas
@ -142,11 +142,24 @@ type
|
||||
function GetMainBar: TComponent; override;
|
||||
procedure SetRecentProjectFilesMenu;
|
||||
procedure SetRecentFilesMenu;
|
||||
function BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
|
||||
out ActiveUnitInfo: TUnitInfo;
|
||||
Flags: TCodeToolsFlags): boolean;
|
||||
function BeginCodeTool(ADesigner: TDesigner;
|
||||
var ActiveSrcEdit: TSourceEditor;
|
||||
out ActiveUnitInfo: TUnitInfo;
|
||||
Flags: TCodeToolsFlags): boolean;
|
||||
procedure ActivateCodeToolAbortableMode;
|
||||
function OnCodeToolBossCheckAbort: boolean;
|
||||
|
||||
procedure DoSwitchToFormSrc(var ActiveSourceEditor:TSourceEditor;
|
||||
var ActiveUnitInfo:TUnitInfo);
|
||||
procedure DoSwitchToFormSrc(ADesigner: TDesigner;
|
||||
var ActiveSourceEditor:TSourceEditor; var ActiveUnitInfo:TUnitInfo);
|
||||
|
||||
procedure GetUnitInfoForDesigner(ADesigner: TIDesigner;
|
||||
out ActiveSourceEditor: TSourceEditorInterface;
|
||||
out ActiveUnitInfo: TUnitInfo); override;
|
||||
|
||||
procedure GetCurrentUnitInfo(out ActiveSourceEditor: TSourceEditorInterface;
|
||||
out ActiveUnitInfo: TUnitInfo); override;
|
||||
procedure GetCurrentUnit(out ActiveSourceEditor: TSourceEditor;
|
||||
@ -304,6 +317,109 @@ begin
|
||||
@mnuOpenRecentClicked);
|
||||
end;
|
||||
|
||||
function TMainIDEBase.BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
|
||||
out ActiveUnitInfo: TUnitInfo; Flags: TCodeToolsFlags): boolean;
|
||||
begin
|
||||
Result:=BeginCodeTool(nil,ActiveSrcEdit,ActiveUnitInfo,Flags);
|
||||
end;
|
||||
|
||||
function TMainIDEBase.BeginCodeTool(ADesigner: TDesigner;
|
||||
var ActiveSrcEdit: TSourceEditor; out ActiveUnitInfo: TUnitInfo;
|
||||
Flags: TCodeToolsFlags): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
if (ctfUseGivenSourceEditor in Flags) and (Project1<>nil) then begin
|
||||
ActiveUnitInfo := Project1.EditorInfoWithEditorComponent(ActiveSrcEdit).UnitInfo;
|
||||
end
|
||||
else begin
|
||||
ActiveSrcEdit:=nil;
|
||||
ActiveUnitInfo:=nil;
|
||||
end;
|
||||
|
||||
// check global stati
|
||||
if (ToolStatus in [itCodeTools,itCodeToolAborting]) then begin
|
||||
debugln('TMainIDE.BeginCodeTool impossible ',dbgs(ord(ToolStatus)));
|
||||
exit;
|
||||
end;
|
||||
if (not (ctfSourceEditorNotNeeded in Flags)) and (SourceEditorManager.SourceEditorCount=0)
|
||||
then begin
|
||||
DebugLn('TMainIDE.BeginCodeTool no source editor');
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check source editor
|
||||
if not (ctfUseGivenSourceEditor in Flags) then begin
|
||||
if ctfSwitchToFormSource in Flags then
|
||||
DoSwitchToFormSrc(ADesigner,ActiveSrcEdit,ActiveUnitInfo)
|
||||
else if ADesigner<>nil then
|
||||
GetDesignerUnit(ADesigner,ActiveSrcEdit,ActiveUnitInfo)
|
||||
else
|
||||
GetCurrentUnit(ActiveSrcEdit,ActiveUnitInfo);
|
||||
end;
|
||||
if (not (ctfSourceEditorNotNeeded in Flags)) and
|
||||
((ActiveSrcEdit=nil) or (ActiveUnitInfo=nil))
|
||||
then exit;
|
||||
|
||||
// init codetools
|
||||
SaveSourceEditorChangesToCodeCache(nil);
|
||||
if ActiveSrcEdit<>nil then begin
|
||||
CodeToolBoss.VisibleEditorLines:=ActiveSrcEdit.EditorComponent.LinesInWindow;
|
||||
CodeToolBoss.TabWidth:=ActiveSrcEdit.EditorComponent.TabWidth;
|
||||
CodeToolBoss.IndentSize:=ActiveSrcEdit.EditorComponent.BlockIndent;
|
||||
end else begin
|
||||
CodeToolBoss.VisibleEditorLines:=25;
|
||||
CodeToolBoss.TabWidth:=EditorOpts.TabWidth;
|
||||
CodeToolBoss.IndentSize:=EditorOpts.BlockIndent;
|
||||
end;
|
||||
|
||||
if ctfActivateAbortMode in Flags then
|
||||
ActivateCodeToolAbortableMode;
|
||||
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
procedure TMainIDEBase.ActivateCodeToolAbortableMode;
|
||||
begin
|
||||
if ToolStatus=itNone then
|
||||
RaiseException('TMainIDEBase.ActivateCodeToolAbortableMode Error 1');
|
||||
ToolStatus:=itCodeTools;
|
||||
CodeToolBoss.OnCheckAbort:=@OnCodeToolBossCheckAbort;
|
||||
CodeToolBoss.Abortable:=true;
|
||||
end;
|
||||
|
||||
function TMainIDEBase.OnCodeToolBossCheckAbort: boolean;
|
||||
begin
|
||||
Result:=true;
|
||||
if ToolStatus<>itCodeTools then exit;
|
||||
Application.ProcessMessages;
|
||||
Result:=ToolStatus<>itCodeTools;
|
||||
end;
|
||||
|
||||
procedure TMainIDEBase.DoSwitchToFormSrc(var ActiveSourceEditor: TSourceEditor;
|
||||
var ActiveUnitInfo: TUnitInfo);
|
||||
begin
|
||||
DoSwitchToFormSrc(nil,ActiveSourceEditor,ActiveUnitInfo);
|
||||
end;
|
||||
|
||||
procedure TMainIDEBase.DoSwitchToFormSrc(ADesigner: TDesigner;
|
||||
var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo);
|
||||
begin
|
||||
ActiveSourceEditor:=nil;
|
||||
ActiveUnitInfo:=nil;
|
||||
if (ADesigner<>nil) then
|
||||
ActiveUnitInfo:=Project1.UnitWithComponent(ADesigner.LookupRoot)
|
||||
else if (GlobalDesignHook.LookupRoot<>nil)
|
||||
and (GlobalDesignHook.LookupRoot is TComponent) then
|
||||
ActiveUnitInfo:=Project1.UnitWithComponent(TComponent(GlobalDesignHook.LookupRoot))
|
||||
else
|
||||
ActiveUnitInfo:=nil;
|
||||
if (ActiveUnitInfo<>nil) and (ActiveUnitInfo.OpenEditorInfoCount > 0) then begin
|
||||
ActiveSourceEditor := TSourceEditor(ActiveUnitInfo.OpenEditorInfo[0].EditorComponent);
|
||||
SourceEditorManagerIntf.ActiveEditor := ActiveSourceEditor;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainIDEBase.DoMnuWindowClicked(Sender: TObject);
|
||||
begin
|
||||
UpdateWindowMenu(True);
|
||||
|
@ -1903,7 +1903,8 @@ begin
|
||||
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TLazSourceFileManager.CloseProject B');{$ENDIF}
|
||||
IncreaseCompilerParseStamp;
|
||||
// close Project
|
||||
if ProjInspector<>nil then ProjInspector.LazProject:=nil;
|
||||
if ProjInspector<>nil then
|
||||
ProjInspector.LazProject:=nil;
|
||||
FreeThenNil(Project1);
|
||||
if IDEMessagesWindow<>nil then IDEMessagesWindow.Clear;
|
||||
|
||||
@ -2857,7 +2858,7 @@ var
|
||||
begin
|
||||
Result:=mrOk;
|
||||
if (AnUnitInfo.Component=nil) then exit;
|
||||
if not TMainIDE(MainIDE).BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[]) then exit;
|
||||
if not MainIDE.BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[]) then exit;
|
||||
// unselect methods in ObjectInspector1
|
||||
if (ObjectInspector1<>nil)
|
||||
and (ObjectInspector1.PropertyEditorHook.LookupRoot=AnUnitInfo.Component) then
|
||||
@ -4962,7 +4963,7 @@ begin
|
||||
// set new project filename
|
||||
Project1.ProjectInfoFile:=NewLPIFilename;
|
||||
EnvironmentOptions.AddToRecentProjectFiles(NewLPIFilename);
|
||||
TMainIDE(MainIDE).SetRecentProjectFilesMenu;
|
||||
MainIDE.SetRecentProjectFilesMenu;
|
||||
|
||||
// change main source
|
||||
if (Project1.MainUnitID >= 0) then
|
||||
|
Loading…
Reference in New Issue
Block a user