mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-01 23:40:26 +02:00
SrcEdit: Tab-Menu: group files by package
git-svn-id: trunk@36209 -
This commit is contained in:
parent
de7eaefc28
commit
416d52d6f0
@ -2098,6 +2098,7 @@ begin
|
|||||||
SourceEditorManager.OnViewJumpHistory := @OnSrcNotebookViewJumpHistory;
|
SourceEditorManager.OnViewJumpHistory := @OnSrcNotebookViewJumpHistory;
|
||||||
SourceEditorManager.OnPopupMenu := @OnSrcNoteBookPopupMenu;
|
SourceEditorManager.OnPopupMenu := @OnSrcNoteBookPopupMenu;
|
||||||
SourceEditorManager.OnNoteBookCloseQuery := @OnSrcNoteBookCloseQuery;
|
SourceEditorManager.OnNoteBookCloseQuery := @OnSrcNoteBookCloseQuery;
|
||||||
|
SourceEditorManager.OnPackageForSourceEditor := @PkgBoss.GetPackageOfSourceEditor;
|
||||||
DebugBoss.ConnectSourceNotebookEvents;
|
DebugBoss.ConnectSourceNotebookEvents;
|
||||||
|
|
||||||
OnSearchResultsViewSelectionChanged := @SearchResultsViewSelectionChanged;
|
OnSearchResultsViewSelectionChanged := @SearchResultsViewSelectionChanged;
|
||||||
|
@ -70,6 +70,7 @@ uses
|
|||||||
type
|
type
|
||||||
TSourceNotebook = class;
|
TSourceNotebook = class;
|
||||||
TSourceEditorManager = class;
|
TSourceEditorManager = class;
|
||||||
|
TSourceEditor = class;
|
||||||
|
|
||||||
TNotifyFileEvent = procedure(Sender: TObject; Filename : AnsiString) of object;
|
TNotifyFileEvent = procedure(Sender: TObject; Filename : AnsiString) of object;
|
||||||
|
|
||||||
@ -78,6 +79,9 @@ type
|
|||||||
TOnUserCommandProcessed = procedure(Sender: TObject;
|
TOnUserCommandProcessed = procedure(Sender: TObject;
|
||||||
Command: word; var Handled: boolean) of object;
|
Command: word; var Handled: boolean) of object;
|
||||||
|
|
||||||
|
TPackageForSourceEditorEvent = function(out APackage: TIDEPackage;
|
||||||
|
ASrcEdit: TObject): TLazPackageFile of object;
|
||||||
|
|
||||||
TOnLinesInsertedDeleted = procedure(Sender : TObject;
|
TOnLinesInsertedDeleted = procedure(Sender : TObject;
|
||||||
FirstLine,Count : Integer) of Object;
|
FirstLine,Count : Integer) of Object;
|
||||||
TPlaceBookMarkEvent = procedure(Sender: TObject; var Mark: TSynEditMark) of object;
|
TPlaceBookMarkEvent = procedure(Sender: TObject; var Mark: TSynEditMark) of object;
|
||||||
@ -156,8 +160,6 @@ type
|
|||||||
read FIdentCompletionJumpToError write FIdentCompletionJumpToError;
|
read FIdentCompletionJumpToError write FIdentCompletionJumpToError;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TSourceEditor = class;
|
|
||||||
|
|
||||||
{ TSourceEditorSharedValues }
|
{ TSourceEditorSharedValues }
|
||||||
|
|
||||||
TSourceEditorSharedValues = class(TSourceEditorSharedValuesBase)
|
TSourceEditorSharedValues = class(TSourceEditorSharedValuesBase)
|
||||||
@ -1073,6 +1075,7 @@ type
|
|||||||
FOnMouseLink: TSynMouseLinkEvent;
|
FOnMouseLink: TSynMouseLinkEvent;
|
||||||
FOnNoteBookCloseQuery: TCloseEvent;
|
FOnNoteBookCloseQuery: TCloseEvent;
|
||||||
FOnOpenFileAtCursorClicked: TNotifyEvent;
|
FOnOpenFileAtCursorClicked: TNotifyEvent;
|
||||||
|
FOnPackageForSourceEditor: TPackageForSourceEditorEvent;
|
||||||
FOnPlaceMark: TPlaceBookMarkEvent;
|
FOnPlaceMark: TPlaceBookMarkEvent;
|
||||||
FOnPopupMenu: TSrcEditPopupMenuEvent;
|
FOnPopupMenu: TSrcEditPopupMenuEvent;
|
||||||
FOnProcessUserCommand: TOnProcessUserCommand;
|
FOnProcessUserCommand: TOnProcessUserCommand;
|
||||||
@ -1137,6 +1140,8 @@ type
|
|||||||
property OnPopupMenu: TSrcEditPopupMenuEvent read FOnPopupMenu write FOnPopupMenu;
|
property OnPopupMenu: TSrcEditPopupMenuEvent read FOnPopupMenu write FOnPopupMenu;
|
||||||
property OnNoteBookCloseQuery: TCloseEvent
|
property OnNoteBookCloseQuery: TCloseEvent
|
||||||
read FOnNoteBookCloseQuery write FOnNoteBookCloseQuery;
|
read FOnNoteBookCloseQuery write FOnNoteBookCloseQuery;
|
||||||
|
property OnPackageForSourceEditor: TPackageForSourceEditorEvent
|
||||||
|
read FOnPackageForSourceEditor write FOnPackageForSourceEditor;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function SourceEditorManager: TSourceEditorManager;
|
function SourceEditorManager: TSourceEditorManager;
|
||||||
@ -5392,8 +5397,9 @@ var
|
|||||||
PageI: integer;
|
PageI: integer;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
S: String;
|
S: String;
|
||||||
PageList: TList;
|
|
||||||
EditorCur: TSourceEditor;
|
EditorCur: TSourceEditor;
|
||||||
|
P: TIDEPackage;
|
||||||
|
M: TIDEMenuSection;
|
||||||
begin
|
begin
|
||||||
PopM:=TPopupMenu(Sender);
|
PopM:=TPopupMenu(Sender);
|
||||||
SourceTabMenuRoot.MenuItem:=PopM.Items;
|
SourceTabMenuRoot.MenuItem:=PopM.Items;
|
||||||
@ -5437,15 +5443,25 @@ begin
|
|||||||
|
|
||||||
if SourceEditorManager<>nil then begin
|
if SourceEditorManager<>nil then begin
|
||||||
SrcEditMenuSectionEditors.Clear;
|
SrcEditMenuSectionEditors.Clear;
|
||||||
PageList := TList.Create;
|
|
||||||
|
|
||||||
//first add all pages in the correct order since the editor order can be different from the tab order
|
//first add all pages in the correct order since the editor order can be different from the tab order
|
||||||
for i := 0 to Count - 1 do
|
for i := 0 to EditorCount - 1 do
|
||||||
PageList.Add(FindSourceEditorWithPageIndex(i));
|
|
||||||
|
|
||||||
for i := 0 to PageList.Count - 1 do
|
|
||||||
begin
|
begin
|
||||||
EditorCur := TSourceEditor(PageList[i]);
|
EditorCur := FindSourceEditorWithPageIndex(i);
|
||||||
|
s := lisMEOther;
|
||||||
|
if (EditorCur.GetProjectFile <> nil) and (EditorCur.GetProjectFile.IsPartOfProject) then
|
||||||
|
s := dlgEnvProject
|
||||||
|
else begin
|
||||||
|
Manager.OnPackageForSourceEditor(P, EditorCur);
|
||||||
|
if P <> nil then
|
||||||
|
s := p.Name;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if SrcEditMenuSectionEditors.FindByName(S) is TIDEMenuSection then
|
||||||
|
M := TIDEMenuSection(SrcEditMenuSectionEditors.FindByName(S))
|
||||||
|
else
|
||||||
|
M := RegisterIDESubMenu(SrcEditMenuSectionEditors, S, S);
|
||||||
|
|
||||||
S := ExtractFileName(EditorCur.FileName);
|
S := ExtractFileName(EditorCur.FileName);
|
||||||
// check for modification
|
// check for modification
|
||||||
if EditorCur.Modified then
|
if EditorCur.Modified then
|
||||||
@ -5453,10 +5469,9 @@ begin
|
|||||||
//swap around so file name is first followed by the directory
|
//swap around so file name is first followed by the directory
|
||||||
if S <> EditorCur.FileName then
|
if S <> EditorCur.FileName then
|
||||||
S := S +' in '+ExtractFileDir(EditorCur.FileName);
|
S := S +' in '+ExtractFileDir(EditorCur.FileName);
|
||||||
RegisterIDEMenuCommand(SrcEditMenuSectionEditors, 'File'+IntToStr(i),
|
RegisterIDEMenuCommand(M, 'File'+IntToStr(i),
|
||||||
s, @ExecuteEditorItemClick, nil, nil, '', PtrUInt(EditorCur));
|
s, @ExecuteEditorItemClick, nil, nil, '', PtrUInt(EditorCur));
|
||||||
end;
|
end;
|
||||||
PageList.Free;
|
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
SourceTabMenuRoot.EndUpdate;
|
SourceTabMenuRoot.EndUpdate;
|
||||||
|
@ -232,6 +232,7 @@ type
|
|||||||
function GetSourceFilesOfOwners(OwnerList: TFPList): TStrings; virtual; abstract;
|
function GetSourceFilesOfOwners(OwnerList: TFPList): TStrings; virtual; abstract;
|
||||||
function GetPossibleOwnersOfUnit(const UnitFilename: string;
|
function GetPossibleOwnersOfUnit(const UnitFilename: string;
|
||||||
Flags: TPkgIntfOwnerSearchFlags): TFPList; virtual; abstract;
|
Flags: TPkgIntfOwnerSearchFlags): TFPList; virtual; abstract;
|
||||||
|
function GetPackageOfSourceEditor(out APackage: TIDEPackage; ASrcEdit: TObject): TLazPackageFile; virtual; abstract;
|
||||||
|
|
||||||
function GetPackageCount: integer; virtual; abstract;
|
function GetPackageCount: integer; virtual; abstract;
|
||||||
function GetPackages(Index: integer): TIDEPackage; virtual; abstract;
|
function GetPackages(Index: integer): TIDEPackage; virtual; abstract;
|
||||||
|
@ -216,6 +216,7 @@ type
|
|||||||
function GetPossibleOwnersOfUnit(const UnitFilename: string;
|
function GetPossibleOwnersOfUnit(const UnitFilename: string;
|
||||||
Flags: TPkgIntfOwnerSearchFlags): TFPList; override;
|
Flags: TPkgIntfOwnerSearchFlags): TFPList; override;
|
||||||
function GetPackageOfCurrentSourceEditor(out APackage: TLazPackage): TPkgFile;
|
function GetPackageOfCurrentSourceEditor(out APackage: TLazPackage): TPkgFile;
|
||||||
|
function GetPackageOfSourceEditor(out APackage: TIDEPackage; ASrcEdit: TObject): TLazPackageFile; override;
|
||||||
function IsOwnerDependingOnPkg(AnOwner: TObject; const PkgName: string;
|
function IsOwnerDependingOnPkg(AnOwner: TObject; const PkgName: string;
|
||||||
out DependencyOwner: TObject): boolean; override;
|
out DependencyOwner: TObject): boolean; override;
|
||||||
function AddDependencyToOwners(OwnerList: TFPList; APackage: TIDEPackage;
|
function AddDependencyToOwners(OwnerList: TFPList; APackage: TIDEPackage;
|
||||||
@ -3188,14 +3189,24 @@ function TPkgManager.GetPackageOfCurrentSourceEditor(out APackage: TLazPackage
|
|||||||
): TPkgFile;
|
): TPkgFile;
|
||||||
var
|
var
|
||||||
SrcEdit: TSourceEditor;
|
SrcEdit: TSourceEditor;
|
||||||
Filename: String;
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
Result:=nil;
|
Result:=nil;
|
||||||
APackage:=nil;
|
APackage:=nil;
|
||||||
SrcEdit:=SourceEditorManager.GetActiveSE;
|
SrcEdit:=SourceEditorManager.GetActiveSE;
|
||||||
if SrcEdit=nil then exit;
|
if SrcEdit=nil then exit;
|
||||||
Filename:=SrcEdit.FileName;
|
Result := TPkgFile(GetPackageOfSourceEditor(APackage, SrcEdit));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TPkgManager.GetPackageOfSourceEditor(out APackage: TIDEPackage;
|
||||||
|
ASrcEdit: TObject): TLazPackageFile;
|
||||||
|
var
|
||||||
|
Filename: String;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
Result:=nil;
|
||||||
|
APackage:=nil;
|
||||||
|
if ASrcEdit=nil then exit;
|
||||||
|
Filename:=TSourceEditor(ASrcEdit).FileName;
|
||||||
Result:=SearchFile(Filename,[],nil);
|
Result:=SearchFile(Filename,[],nil);
|
||||||
if Result<>nil then begin
|
if Result<>nil then begin
|
||||||
APackage:=Result.LazPackage;
|
APackage:=Result.LazPackage;
|
||||||
@ -3203,7 +3214,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
for i:=0 to PackageGraph.Count-1 do begin
|
for i:=0 to PackageGraph.Count-1 do begin
|
||||||
APackage:=PackageGraph[i];
|
APackage:=PackageGraph[i];
|
||||||
if CompareFilenames(APackage.GetSrcFilename,SrcEdit.FileName)=0 then
|
if CompareFilenames(TLazPackage(APackage).GetSrcFilename,FileName)=0 then
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
APackage:=nil;
|
APackage:=nil;
|
||||||
|
Loading…
Reference in New Issue
Block a user