IDE, SourceEditor: clean-up / redirect notebook access through new accessors

git-svn-id: trunk@22571 -
This commit is contained in:
martin 2009-11-13 13:02:52 +00:00
parent d690f24e16
commit beee4cb71e

View File

@ -668,12 +668,12 @@ type
procedure NextEditor; procedure NextEditor;
procedure PrevEditor; procedure PrevEditor;
procedure MoveEditor(OldPageIndex, NewPageIndex: integer); procedure MoveEditor(OldPageIndex, NewPageIndex: integer);
procedure MoveEditorLeft(PageIndex: integer); procedure MoveEditorLeft(CurrentPageIndex: integer);
procedure MoveEditorRight(PageIndex: integer); procedure MoveEditorRight(CurrentPageIndex: integer);
procedure MoveActivePageLeft; procedure MoveActivePageLeft;
procedure MoveActivePageRight; procedure MoveActivePageRight;
procedure MoveEditorFirst(PageIndex: integer); procedure MoveEditorFirst(CurrentPageIndex: integer);
procedure MoveEditorLast(PageIndex: integer); procedure MoveEditorLast(CurrentPageIndex: integer);
procedure MoveActivePageFirst; procedure MoveActivePageFirst;
procedure MoveActivePageLast; procedure MoveActivePageLast;
procedure ProcessParentCommand(Sender: TObject; procedure ProcessParentCommand(Sender: TObject;
@ -715,7 +715,7 @@ type
function Count: integer; override; function Count: integer; override;
function Empty: boolean; function Empty: boolean;
function FindSourceEditorWithPageIndex(PageIndex:integer):TSourceEditor; function FindSourceEditorWithPageIndex(APageIndex:integer):TSourceEditor;
function FindPageWithEditor(ASourceEditor: TSourceEditor):integer; function FindPageWithEditor(ASourceEditor: TSourceEditor):integer;
function FindSourceEditorWithEditorComponent( function FindSourceEditorWithEditorComponent(
EditorComp: TComponent): TSourceEditor; EditorComp: TComponent): TSourceEditor;
@ -729,7 +729,7 @@ type
procedure LockAllEditorsInSourceChangeCache; procedure LockAllEditorsInSourceChangeCache;
procedure UnlockAllEditorsInSourceChangeCache; procedure UnlockAllEditorsInSourceChangeCache;
function GetDiffFiles: TDiffFiles; function GetDiffFiles: TDiffFiles;
procedure GetSourceText(PageIndex: integer; OnlySelection: boolean; procedure GetSourceText(APageIndex: integer; OnlySelection: boolean;
var Source: string); var Source: string);
function ActiveFileName: AnsiString; function ActiveFileName: AnsiString;
@ -795,7 +795,7 @@ type
// new, close, focus // new, close, focus
function NewFile(const NewShortName: String; ASource: TCodeBuffer; function NewFile(const NewShortName: String; ASource: TCodeBuffer;
FocusIt: boolean): TSourceEditor; FocusIt: boolean): TSourceEditor;
procedure CloseFile(PageIndex:integer); procedure CloseFile(APageIndex:integer);
procedure FocusEditor; procedure FocusEditor;
// paste and copy // paste and copy
@ -4531,15 +4531,15 @@ begin
// editor layout // editor layout
SrcEditMenuMoveEditorLeft.MenuItem.Enabled:= SrcEditMenuMoveEditorLeft.MenuItem.Enabled:=
(NoteBook<>nil) and (NoteBook.PageCount>1); (NoteBook<>nil) and (PageCount>1);
SrcEditMenuMoveEditorRight.MenuItem.Enabled:= SrcEditMenuMoveEditorRight.MenuItem.Enabled:=
(NoteBook<>nil) and (NoteBook.PageCount>1); (NoteBook<>nil) and (PageCount>1);
SrcEditMenuMoveEditorFirst.MenuItem.Enabled:= SrcEditMenuMoveEditorFirst.MenuItem.Enabled:=
(NoteBook<>nil) and (NoteBook.PageCount>1) (NoteBook<>nil) and (PageCount>1)
and (NoteBook.PageIndex>0); and (PageIndex>0);
SrcEditMenuMoveEditorLast.MenuItem.Enabled:= SrcEditMenuMoveEditorLast.MenuItem.Enabled:=
(NoteBook<>nil) and (NoteBook.PageCount>1) (NoteBook<>nil) and (PageCount>1)
and (NoteBook.PageIndex<(NoteBook.PageCount-1)); and (PageIndex<(PageCount-1));
EditorPopupPoint:=EditorComp.ScreenToClient(SrcPopUpMenu.PopupPoint); EditorPopupPoint:=EditorComp.ScreenToClient(SrcPopUpMenu.PopupPoint);
if EditorPopupPoint.X>EditorComp.GutterWidth then begin if EditorPopupPoint.X>EditorComp.GutterWidth then begin
@ -4928,18 +4928,18 @@ begin
{$ENDIF} {$ENDIF}
if Pagenum < 0 then begin if Pagenum < 0 then begin
// add a new page right to the current // add a new page right to the current
Pagenum := Notebook.PageIndex+1; Pagenum := PageIndex+1;
Notebook.Pages.Insert(PageNum,FindUniquePageName('',-1)); Notebook.Pages.Insert(PageNum,FindUniquePageName('',-1));
end; end;
{$IFDEF IDE_DEBUG} {$IFDEF IDE_DEBUG}
writeln('TSourceNotebook.NewSE B ',Notebook.PageIndex,',',NoteBook.Pages.Count); writeln('TSourceNotebook.NewSE B ', PageIndex,',',NoteBook.Pages.Count);
{$ENDIF} {$ENDIF}
Result := TSourceEditor.Create(Self,Notebook.Page[PageNum]); Result := TSourceEditor.Create(Self,Notebook.Page[PageNum]);
Result.EditorComponent.BeginUpdate; Result.EditorComponent.BeginUpdate;
FSourceEditorList.Add(Result); FSourceEditorList.Add(Result);
Result.CodeTemplates:=CodeTemplateModul; Result.CodeTemplates:=CodeTemplateModul;
if SwitchToTab then if SwitchToTab then
Notebook.PageIndex := Pagenum; PageIndex := Pagenum;
//debugln(['TSourceNotebook.NewSE C GetActiveSE=Result=',GetActiveSE=Result]); //debugln(['TSourceNotebook.NewSE C GetActiveSE=Result=',GetActiveSE=Result]);
Result.FPageName:=NoteBook.Pages[Pagenum]; Result.FPageName:=NoteBook.Pages[Pagenum];
Result.EditorComponent.BookMarkOptions.BookmarkImages := SourceEditorMarks.ImgList; Result.EditorComponent.BookMarkOptions.BookmarkImages := SourceEditorMarks.ImgList;
@ -4961,16 +4961,15 @@ begin
end; end;
function TSourceNotebook.FindSourceEditorWithPageIndex( function TSourceNotebook.FindSourceEditorWithPageIndex(
PageIndex: integer): TSourceEditor; APageIndex: integer): TSourceEditor;
var I: integer; var I: integer;
TempEditor: TControl; TempEditor: TControl;
begin begin
Result := nil; Result := nil;
if (FSourceEditorList=nil) if (FSourceEditorList=nil)
or (Notebook=nil) or (APageIndex < 0) or (APageIndex >= PageCount) then exit;
or (PageIndex<0) or (PageIndex>=Notebook.PageCount) then exit;
TempEditor:=nil; TempEditor:=nil;
with Notebook.Page[PageIndex] do with Notebook.Page[APageIndex] do
for I := 0 to ControlCount-1 do for I := 0 to ControlCount-1 do
if Controls[I] is TSynEdit then if Controls[I] is TSynEdit then
Begin Begin
@ -4990,8 +4989,8 @@ Function TSourceNotebook.GetActiveSE: TSourceEditor;
Begin Begin
Result := nil; Result := nil;
if (FSourceEditorList=nil) or (FSourceEditorList.Count=0) if (FSourceEditorList=nil) or (FSourceEditorList.Count=0)
or (Notebook=nil) or (Notebook.PageIndex<0) then exit; or (Notebook=nil) or (PageIndex<0) then exit;
Result:=FindSourceEditorWithPageIndex(Notebook.PageIndex); Result:=FindSourceEditorWithPageIndex(PageIndex);
end; end;
procedure TSourceNotebook.SetActiveSE(SrcEdit: TSourceEditor); procedure TSourceNotebook.SetActiveSE(SrcEdit: TSourceEditor);
@ -5000,7 +4999,7 @@ var
begin begin
i:=FindPageWithEditor(SrcEdit); i:=FindPageWithEditor(SrcEdit);
if i>=0 then if i>=0 then
NoteBook.PageIndex:=i; PageIndex:=i;
end; end;
function TSourceNotebook.GetActiveEditor: TSourceEditorInterface; function TSourceNotebook.GetActiveEditor: TSourceEditorInterface;
@ -5063,18 +5062,18 @@ var
begin begin
Result:=TDiffFiles.Create; Result:=TDiffFiles.Create;
if Notebook=nil then exit; if Notebook=nil then exit;
for i:=0 to NoteBook.PageCount-1 do begin for i:=0 to PageCount-1 do begin
SrcEdit:=FindSourceEditorWithPageIndex(i); SrcEdit:=FindSourceEditorWithPageIndex(i);
Result.Add(TDiffFile.Create(NoteBook.Pages[i],i,SrcEdit.SelectionAvailable)); Result.Add(TDiffFile.Create(NoteBook.Pages[i],i,SrcEdit.SelectionAvailable));
end; end;
end; end;
procedure TSourceNotebook.GetSourceText(PageIndex: integer; procedure TSourceNotebook.GetSourceText(APageIndex: integer;
OnlySelection: boolean; var Source: string); OnlySelection: boolean; var Source: string);
var var
SrcEdit: TSourceEditor; SrcEdit: TSourceEditor;
begin begin
SrcEdit:=FindSourceEditorWithPageIndex(PageIndex); SrcEdit:=FindSourceEditorWithPageIndex(APageIndex);
if SrcEdit=nil then if SrcEdit=nil then
Source:='' Source:=''
else else
@ -5083,7 +5082,7 @@ end;
Function TSourceNotebook.Empty: Boolean; Function TSourceNotebook.Empty: Boolean;
Begin Begin
Result := (not assigned(Notebook)) or (Notebook.PageCount = 0); Result := (not assigned(Notebook)) or (PageCount = 0);
end; end;
procedure TSourceNotebook.FindReplaceDlgKey(Sender: TObject; var Key: Word; procedure TSourceNotebook.FindReplaceDlgKey(Sender: TObject; var Key: Word;
@ -5248,86 +5247,86 @@ end;
Procedure TSourceNotebook.NextEditor; Procedure TSourceNotebook.NextEditor;
Begin Begin
if NoteBook=nil then exit; if NoteBook=nil then exit;
if Notebook.PageIndex < Notebook.PageCount-1 then if PageIndex < PageCount-1 then
Notebook.PageIndex := Notebook.PageIndex+1 PageIndex := PageIndex+1
else else
NoteBook.PageIndex := 0; PageIndex := 0;
NotebookPageChanged(Self); NotebookPageChanged(Self);
End; End;
Procedure TSourceNotebook.PrevEditor; Procedure TSourceNotebook.PrevEditor;
Begin Begin
if NoteBook=nil then exit; if NoteBook=nil then exit;
if Notebook.PageIndex > 0 then if PageIndex > 0 then
Notebook.PageIndex := Notebook.PageIndex-1 PageIndex := PageIndex-1
else else
NoteBook.PageIndex := NoteBook.PageCount-1; PageIndex := PageCount-1;
NotebookPageChanged(Self); NotebookPageChanged(Self);
End; End;
procedure TSourceNotebook.MoveEditor(OldPageIndex, NewPageIndex: integer); procedure TSourceNotebook.MoveEditor(OldPageIndex, NewPageIndex: integer);
begin begin
if (NoteBook=nil) or (NoteBook.PageCount<=1) if (NoteBook=nil) or (PageCount<=1)
or (OldPageIndex=NewPageIndex) or (OldPageIndex=NewPageIndex)
or (OldPageIndex<0) or (OldPageIndex>=Notebook.PageCount) or (OldPageIndex<0) or (OldPageIndex>=PageCount)
or (NewPageIndex<0) or (NewPageIndex>=Notebook.PageCount) then exit; or (NewPageIndex<0) or (NewPageIndex>=PageCount) then exit;
if Assigned(OnMovingPage) then if Assigned(OnMovingPage) then
OnMovingPage(Self,OldPageIndex,NewPageIndex); OnMovingPage(Self,OldPageIndex,NewPageIndex);
NoteBook.Pages.Move(OldPageIndex,NewPageIndex); NoteBook.Pages.Move(OldPageIndex,NewPageIndex);
end; end;
procedure TSourceNotebook.MoveEditorLeft(PageIndex: integer); procedure TSourceNotebook.MoveEditorLeft(CurrentPageIndex: integer);
begin begin
if (NoteBook=nil) or (NoteBook.PageCount<=1) then exit; if (PageCount<=1) then exit;
if PageIndex>0 then if CurrentPageIndex>0 then
MoveEditor(PageIndex,PageIndex-1) MoveEditor(CurrentPageIndex, CurrentPageIndex-1)
else else
MoveEditor(PageIndex,NoteBook.PageCount-1); MoveEditor(CurrentPageIndex, PageCount-1);
end; end;
procedure TSourceNotebook.MoveEditorRight(PageIndex: integer); procedure TSourceNotebook.MoveEditorRight(CurrentPageIndex: integer);
begin begin
if (NoteBook=nil) or (NoteBook.PageCount<=1) then exit; if (PageCount<=1) then exit;
if PageIndex<Notebook.PageCount-1 then if CurrentPageIndex < PageCount-1 then
MoveEditor(PageIndex,PageIndex+1) MoveEditor(CurrentPageIndex, CurrentPageIndex+1)
else else
MoveEditor(PageIndex,0); MoveEditor(CurrentPageIndex, 0);
end; end;
procedure TSourceNotebook.MoveEditorFirst(PageIndex: integer); procedure TSourceNotebook.MoveEditorFirst(CurrentPageIndex: integer);
begin begin
if (NoteBook=nil) or (NoteBook.PageCount<=1) then exit; if (PageCount<=1) then exit;
MoveEditor(PageIndex,0) MoveEditor(CurrentPageIndex, 0)
end; end;
procedure TSourceNotebook.MoveEditorLast(PageIndex: integer); procedure TSourceNotebook.MoveEditorLast(CurrentPageIndex: integer);
begin begin
if (NoteBook=nil) or (NoteBook.PageCount<=1) then exit; if (PageCount<=1) then exit;
MoveEditor(PageIndex,NoteBook.PageCount-1); MoveEditor(CurrentPageIndex, PageCount-1);
end; end;
procedure TSourceNotebook.MoveActivePageLeft; procedure TSourceNotebook.MoveActivePageLeft;
begin begin
if (NoteBook=nil) then exit; if (NoteBook=nil) then exit;
MoveEditorLeft(NoteBook.PageIndex); MoveEditorLeft(PageIndex);
end; end;
procedure TSourceNotebook.MoveActivePageRight; procedure TSourceNotebook.MoveActivePageRight;
begin begin
if (NoteBook=nil) then exit; if (NoteBook=nil) then exit;
MoveEditorRight(NoteBook.PageIndex); MoveEditorRight(PageIndex);
end; end;
procedure TSourceNotebook.MoveActivePageFirst; procedure TSourceNotebook.MoveActivePageFirst;
begin begin
if (NoteBook=nil) then exit; if (NoteBook=nil) then exit;
MoveEditorFirst(NoteBook.PageIndex); MoveEditorFirst(PageIndex);
end; end;
procedure TSourceNotebook.MoveActivePageLast; procedure TSourceNotebook.MoveActivePageLast;
begin begin
if (NoteBook=nil) then exit; if (NoteBook=nil) then exit;
MoveEditorLast(NoteBook.PageIndex); MoveEditorLast(PageIndex);
end; end;
Procedure TSourceNotebook.FindClicked(Sender: TObject); Procedure TSourceNotebook.FindClicked(Sender: TObject);
@ -5641,7 +5640,7 @@ begin
OnJumpToHistoryPoint(NewCaretXY,NewTopLine,NewPageIndex,CloseAction); OnJumpToHistoryPoint(NewCaretXY,NewTopLine,NewPageIndex,CloseAction);
SrcEdit:=FindSourceEditorWithPageIndex(NewPageIndex); SrcEdit:=FindSourceEditorWithPageIndex(NewPageIndex);
if SrcEdit<>nil then begin if SrcEdit<>nil then begin
NoteBook.PageIndex:=NewPageIndex; PageIndex:=NewPageIndex;
with SrcEdit.EditorComponent do begin with SrcEdit.EditorComponent do begin
TopLine:=NewTopLine; TopLine:=NewTopLine;
LogicalCaretXY:=NewCaretXY; LogicalCaretXY:=NewCaretXY;
@ -5667,7 +5666,7 @@ begin
SrcEdit:=GetActiveSE; SrcEdit:=GetActiveSE;
if SrcEdit<>nil then begin if SrcEdit<>nil then begin
OnAddJumpPoint(SrcEdit.EditorComponent.LogicalCaretXY, OnAddJumpPoint(SrcEdit.EditorComponent.LogicalCaretXY,
SrcEdit.EditorComponent.TopLine, Notebook.PageIndex, true); SrcEdit.EditorComponent.TopLine, PageIndex, true);
end; end;
end; end;
end; end;
@ -5781,42 +5780,42 @@ end;
procedure TSourceNotebook.OnPopupMenuOpenPasFile(Sender: TObject); procedure TSourceNotebook.OnPopupMenuOpenPasFile(Sender: TObject);
begin begin
MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.pas'), MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.pas'),
Notebook.PageIndex+1, PageIndex+1,
[ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]); [ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]);
end; end;
procedure TSourceNotebook.OnPopupMenuOpenPPFile(Sender: TObject); procedure TSourceNotebook.OnPopupMenuOpenPPFile(Sender: TObject);
begin begin
MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.pp'), MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.pp'),
Notebook.PageIndex+1, PageIndex+1,
[ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]); [ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]);
end; end;
procedure TSourceNotebook.OnPopupMenuOpenPFile(Sender: TObject); procedure TSourceNotebook.OnPopupMenuOpenPFile(Sender: TObject);
begin begin
MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.p'), MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.p'),
Notebook.PageIndex+1, PageIndex+1,
[ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]); [ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]);
end; end;
procedure TSourceNotebook.OnPopupMenuOpenLFMFile(Sender: TObject); procedure TSourceNotebook.OnPopupMenuOpenLFMFile(Sender: TObject);
begin begin
MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.lfm'), MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.lfm'),
Notebook.PageIndex+1, PageIndex+1,
[ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]); [ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]);
end; end;
procedure TSourceNotebook.OnPopupMenuOpenLRSFile(Sender: TObject); procedure TSourceNotebook.OnPopupMenuOpenLRSFile(Sender: TObject);
begin begin
MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.lrs'), MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.lrs'),
Notebook.PageIndex+1, PageIndex+1,
[ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]); [ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]);
end; end;
procedure TSourceNotebook.OnPopupMenuOpenSFile(Sender: TObject); procedure TSourceNotebook.OnPopupMenuOpenSFile(Sender: TObject);
begin begin
MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.s'), MainIDEInterface.DoOpenEditorFile(ChangeFileExt(GetActiveSE.Filename,'.s'),
Notebook.PageIndex+1, PageIndex+1,
[ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]); [ofOnlyIfExists,ofAddToRecent,ofRegularFile,ofUseCache,ofDoNotLoadResource]);
end; end;
@ -6175,11 +6174,11 @@ begin
BestY:=-1; BestY:=-1;
BestPageDistance:=-1; BestPageDistance:=-1;
// where is the cursor // where is the cursor
StartPageIndex:=Notebook.PageIndex; StartPageIndex:=PageIndex;
StartEditorComponent:=SrcEdit.EditorComponent; StartEditorComponent:=SrcEdit.EditorComponent;
StartY:=StartEditorComponent.CaretY; StartY:=StartEditorComponent.CaretY;
// go through all bookmarks // go through all bookmarks
for CurPageIndex:=0 to Notebook.PageCount-1 do begin for CurPageIndex:=0 to PageCount-1 do begin
CurSrcEdit:=FindSourceEditorWithPageIndex(CurPageIndex); CurSrcEdit:=FindSourceEditorWithPageIndex(CurPageIndex);
CurEditorComponent:=CurSrcEdit.EditorComponent; CurEditorComponent:=CurSrcEdit.EditorComponent;
for CurBookmarkID:=0 to 9 do begin for CurBookmarkID:=0 to 9 do begin
@ -6199,13 +6198,13 @@ begin
if PageDistance<0 then if PageDistance<0 then
// for GoForward=true the pages on the left are farer than the pages // for GoForward=true the pages on the left are farer than the pages
// on the right (and vice versus) // on the right (and vice versus)
inc(PageDistance,Notebook.PageCount); inc(PageDistance, PageCount);
if (PageDistance=0) then begin if (PageDistance=0) then begin
// for GoForward=true the lines in front are farer than the pages // for GoForward=true the lines in front are farer than the pages
// on the left side // on the left side
if (GoForward and (y<StartY)) if (GoForward and (y<StartY))
or ((not GoForward) and (y>StartY)) then or ((not GoForward) and (y>StartY)) then
inc(PageDistance,Notebook.PageCount); inc(PageDistance, PageCount);
end; end;
BetterFound:=false; BetterFound:=false;
@ -6247,7 +6246,7 @@ begin
if AnEditor<>nil then begin if AnEditor<>nil then begin
AnEditor.EditorComponent.GotoBookMark(Index); AnEditor.EditorComponent.GotoBookMark(Index);
AnEditor.CenterCursor; AnEditor.CenterCursor;
Notebook.PageIndex:=FindPageWithEditor(AnEditor); PageIndex:=FindPageWithEditor(AnEditor);
end; end;
end; end;
@ -6291,41 +6290,40 @@ Begin
CheckFont; CheckFont;
end; end;
procedure TSourceNotebook.CloseFile(PageIndex:integer); procedure TSourceNotebook.CloseFile(APageIndex:integer);
var var
TempEditor: TSourceEditor; TempEditor: TSourceEditor;
begin begin
{$IFDEF IDE_DEBUG} {$IFDEF IDE_DEBUG}
writeln('TSourceNotebook.CloseFile A PageIndex=',PageIndex); writeln('TSourceNotebook.CloseFile A APageIndex=',APageIndex);
{$ENDIF} {$ENDIF}
TempEditor:=FindSourceEditorWithPageIndex(PageIndex); TempEditor:=FindSourceEditorWithPageIndex(APageIndex);
if TempEditor=nil then exit; if TempEditor=nil then exit;
//debugln(['TSourceNotebook.CloseFile ',TempEditor.FileName,' ',TempEditor.PageIndex]); //debugln(['TSourceNotebook.CloseFile ',TempEditor.FileName,' ',TempEditor.APageIndex]);
Visible:=true; Visible:=true;
EndIncrementalFind; EndIncrementalFind;
TempEditor.Close; TempEditor.Close;
TempEditor.Free; TempEditor.Free;
if Notebook.PageCount>1 then if PageCount>1 then
begin begin
//writeln('TSourceNotebook.CloseFile B PageIndex=',PageIndex,' Notebook.PageIndex=',Notebook.PageIndex); //writeln('TSourceNotebook.CloseFile B APageIndex=',APageIndex,' Notebook.APageIndex=',Notebook.APageIndex);
// if this is the current page, switch to right PageIndex (if possible) // if this is the current page, switch to right APageIndex (if possible)
if (Notebook.PageIndex = PageIndex) then if (PageIndex = APageIndex) then
Notebook.PageIndex := PageIndex + PageIndex := APageIndex + IfThen(APageIndex + 1 < PageCount, 1, -1);
IfThen(PageIndex + 1 < Notebook.PageCount, 1, -1);
// delete the page // delete the page
//writeln('TSourceNotebook.CloseFile C PageIndex=',PageIndex,' Notebook.PageCount=',Notebook.PageCount,' NoteBook.PageIndex=',Notebook.PageIndex); //writeln('TSourceNotebook.CloseFile C APageIndex=',APageIndex,' PageCount=',PageCount,' NoteBook.APageIndex=',Notebook.APageIndex);
Notebook.Pages.Delete(PageIndex); Notebook.Pages.Delete(APageIndex);
//writeln('TSourceNotebook.CloseFile D PageIndex=',PageIndex,' Notebook.PageCount=',Notebook.PageCount,' NoteBook.PageIndex=',Notebook.PageIndex); //writeln('TSourceNotebook.CloseFile D APageIndex=',APageIndex,' PageCount=',PageCount,' NoteBook.APageIndex=',Notebook.APageIndex);
UpdateStatusBar; UpdateStatusBar;
// set focus to new editor // set focus to new editor
TempEditor:=FindSourceEditorWithPageIndex(Notebook.PageIndex); TempEditor:=FindSourceEditorWithPageIndex(PageIndex);
if (TempEditor <> nil) then if (TempEditor <> nil) then
TempEditor.EditorComponent.SetFocus; TempEditor.EditorComponent.SetFocus;
end else end else
begin begin
//writeln('TSourceNotebook.CloseFile E PageIndex=',PageIndex); //writeln('TSourceNotebook.CloseFile E APageIndex=',APageIndex);
Notebook.Free; Notebook.Free;
//writeln('TSourceNotebook.CloseFile F PageIndex=',PageIndex); //writeln('TSourceNotebook.CloseFile F APageIndex=',APageIndex);
Notebook:=nil; Notebook:=nil;
Hide; Hide;
end; end;
@ -6391,7 +6389,7 @@ var I:integer;
begin begin
Result:=false; Result:=false;
if Notebook=nil then exit; if Notebook=nil then exit;
for a:=0 to Notebook.PageCount-1 do begin for a:=0 to PageCount-1 do begin
if (a<>IgnorePageIndex) if (a<>IgnorePageIndex)
and (AnsiCompareText(AName,FindSourceEditorWithPageIndex(a).PageName)=0) and (AnsiCompareText(AName,FindSourceEditorWithPageIndex(a).PageName)=0)
then begin then begin
@ -6540,7 +6538,7 @@ begin
if Notebook=nil then begin if Notebook=nil then begin
Result:=-1; Result:=-1;
end else begin end else begin
Result:=Notebook.PageCount-1; Result:=PageCount-1;
while (Result>=0) do begin while (Result>=0) do begin
with Notebook.Page[Result] do with Notebook.Page[Result] do
for I := 0 to ControlCount-1 do for I := 0 to ControlCount-1 do
@ -6596,7 +6594,7 @@ var TempEditor:TSourceEditor;
Begin Begin
TempEditor:=GetActiveSE; TempEditor:=GetActiveSE;
//writeln('TSourceNotebook.NotebookPageChanged ',Notebook.Pageindex,' ',TempEditor <> nil,' fAutoFocusLock=',fAutoFocusLock); //writeln('TSourceNotebook.NotebookPageChanged ',Pageindex,' ',TempEditor <> nil,' fAutoFocusLock=',fAutoFocusLock);
if TempEditor <> nil then if TempEditor <> nil then
begin begin
if fAutoFocusLock=0 then begin if fAutoFocusLock=0 then begin
@ -6669,8 +6667,8 @@ begin
OpenAtCursorClicked(self); OpenAtCursorClicked(self);
ecGotoEditor1..ecGotoEditor9,ecGotoEditor0: ecGotoEditor1..ecGotoEditor9,ecGotoEditor0:
if Notebook.PageCount>Command-ecGotoEditor1 then if PageCount>Command-ecGotoEditor1 then
Notebook.PageIndex:=Command-ecGotoEditor1; PageIndex:=Command-ecGotoEditor1;
ecToggleFormUnit: ecToggleFormUnit:
ToggleFormUnitClicked(Self); ToggleFormUnitClicked(Self);