started project inspector

git-svn-id: trunk@4079 -
This commit is contained in:
mattias 2003-04-19 16:55:38 +00:00
parent 4cd04fc129
commit 7f5b8c7441
8 changed files with 100 additions and 15 deletions

View File

@ -45,7 +45,8 @@ type
nmiwUnitDependenciesName, nmiwUnitDependenciesName,
nmiwCodeExplorerName, nmiwCodeExplorerName,
nmiwClipbrdHistoryName, nmiwClipbrdHistoryName,
nmiwPkgGraphExplorer nmiwPkgGraphExplorer,
nmiwProjectInspector
); );
// form names for non modal IDE windows: // form names for non modal IDE windows:
@ -58,7 +59,8 @@ const
'UnitDependencies', 'UnitDependencies',
'CodeExplorer', 'CodeExplorer',
'ClipBrdHistory', 'ClipBrdHistory',
'PkgGraphExplorer' 'PkgGraphExplorer',
'ProjectInspector'
); );
type type

View File

@ -177,11 +177,12 @@ const
ecSaveProject = ecUserFirst + 703; ecSaveProject = ecUserFirst + 703;
ecSaveProjectAs = ecUserFirst + 704; ecSaveProjectAs = ecUserFirst + 704;
ecPublishProject = ecUserFirst + 705; ecPublishProject = ecUserFirst + 705;
ecAddCurUnitToProj = ecUserFirst + 706; ecProjectInspector = ecUserFirst + 706;
ecRemoveFromProj = ecUserFirst + 707; ecAddCurUnitToProj = ecUserFirst + 707;
ecViewProjectSource = ecUserFirst + 708; ecRemoveFromProj = ecUserFirst + 708;
ecViewProjectTodos = ecUserFirst + 709; ecViewProjectSource = ecUserFirst + 709;
ecProjectOptions = ecUserFirst + 710; ecViewProjectTodos = ecUserFirst + 710;
ecProjectOptions = ecUserFirst + 711;
// option commmands // option commmands
ecRunParameters = ecUserFirst + 800; ecRunParameters = ecUserFirst + 800;
@ -609,6 +610,7 @@ begin
ecSaveProject : Result:= lisMenuSaveProject; ecSaveProject : Result:= lisMenuSaveProject;
ecSaveProjectAs : Result:= lisMenuSaveProjectAs; ecSaveProjectAs : Result:= lisMenuSaveProjectAs;
ecPublishProject : Result:= lisMenuPublishProject; ecPublishProject : Result:= lisMenuPublishProject;
ecProjectInspector : Result:= lisMenuProjectInspector;
ecAddCurUnitToProj : Result:= lisMenuAddUnitToProject; ecAddCurUnitToProj : Result:= lisMenuAddUnitToProject;
ecRemoveFromProj : Result:= lisMenuRemoveUnitFromProject; ecRemoveFromProj : Result:= lisMenuRemoveUnitFromProject;
ecViewProjectSource : Result:= lisMenuViewSource; ecViewProjectSource : Result:= lisMenuViewSource;
@ -1445,6 +1447,7 @@ begin
Add(C,'Save project',ecSaveProject,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Save project',ecSaveProject,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Save project as',ecSaveProjectAs,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Save project as',ecSaveProjectAs,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Publish project',ecPublishProject,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Publish project',ecPublishProject,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Project Inspector',ecProjectInspector,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Add active unit to project',ecAddCurUnitToProj,VK_F11,[ssShift],VK_UNKNOWN,[]); Add(C,'Add active unit to project',ecAddCurUnitToProj,VK_F11,[ssShift],VK_UNKNOWN,[]);
Add(C,'Remove active unit from project',ecRemoveFromProj,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Remove active unit from project',ecRemoveFromProj,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'View project source',ecViewProjectSource,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'View project source',ecViewProjectSource,VK_UNKNOWN,[],VK_UNKNOWN,[]);

View File

@ -188,6 +188,7 @@ resourcestring
lisMenuSaveProject = 'Save Project'; lisMenuSaveProject = 'Save Project';
lisMenuSaveProjectAs = 'Save Project As...'; lisMenuSaveProjectAs = 'Save Project As...';
lisMenuPublishProject = 'Publish Project'; lisMenuPublishProject = 'Publish Project';
lisMenuProjectInspector = 'Project Inspector';
lisMenuAddUnitToProject = 'Add active unit to Project'; lisMenuAddUnitToProject = 'Add active unit to Project';
lisMenuRemoveUnitFromProject = 'Remove from Project'; lisMenuRemoveUnitFromProject = 'Remove from Project';
lisMenuViewSource = 'View Source'; lisMenuViewSource = 'View Source';

View File

@ -262,6 +262,7 @@ type
itmProjectSave: TMenuItem; itmProjectSave: TMenuItem;
itmProjectSaveAs: TMenuItem; itmProjectSaveAs: TMenuItem;
itmProjectPublish: TMenuItem; itmProjectPublish: TMenuItem;
itmProjectInspector: TMenuItem;
itmProjectAddTo: TMenuItem; itmProjectAddTo: TMenuItem;
itmProjectRemoveFrom: TMenuItem; itmProjectRemoveFrom: TMenuItem;
itmProjectViewSource: TMenuItem; itmProjectViewSource: TMenuItem;
@ -986,6 +987,14 @@ begin
mnuProject.Add(CreateMenuSeparator); mnuProject.Add(CreateMenuSeparator);
itmProjectInspector := TMenuItem.Create(Self);
itmProjectInspector.Name:='itmProjectInspector';
itmProjectInspector.Caption := lisMenuProjectInspector;
itmProjectInspector.Graphic:=LoadPixmap('menu_projectinspector');
{$IFDEF EnablePkgs}
mnuProject.Add(itmProjectInspector);
{$ENDIF}
itmProjectAddTo := TMenuItem.Create(Self); itmProjectAddTo := TMenuItem.Create(Self);
itmProjectAddTo.Name:='itmProjectAddTo'; itmProjectAddTo.Name:='itmProjectAddTo';
itmProjectAddTo.Caption := lisMenuAddUnitToProject; itmProjectAddTo.Caption := lisMenuAddUnitToProject;
@ -1095,6 +1104,7 @@ begin
itmPkgOpenPackage := TMenuItem.Create(Self); itmPkgOpenPackage := TMenuItem.Create(Self);
itmPkgOpenPackage.Name:='itmPkgOpenPackage'; itmPkgOpenPackage.Name:='itmPkgOpenPackage';
itmPkgOpenPackage.Caption := lisMenuOpenPackage; itmPkgOpenPackage.Caption := lisMenuOpenPackage;
itmPkgOpenPackage.Graphic:=LoadPixmap('pkg_package');
{$IFDEF EnablePkgs} {$IFDEF EnablePkgs}
mnuComponents.Add(itmPkgOpenPackage); mnuComponents.Add(itmPkgOpenPackage);
{$ENDIF} {$ENDIF}
@ -1102,6 +1112,7 @@ begin
itmPkgOpenPackageFile := TMenuItem.Create(Self); itmPkgOpenPackageFile := TMenuItem.Create(Self);
itmPkgOpenPackageFile.Name:='itmPkgOpenPackageFile'; itmPkgOpenPackageFile.Name:='itmPkgOpenPackageFile';
itmPkgOpenPackageFile.Caption := lisMenuOpenPackageFile; itmPkgOpenPackageFile.Caption := lisMenuOpenPackageFile;
itmPkgOpenPackageFile.Graphic:=LoadPixmap('pkg_package');
{$IFDEF EnablePkgs} {$IFDEF EnablePkgs}
mnuComponents.Add(itmPkgOpenPackageFile); mnuComponents.Add(itmPkgOpenPackageFile);
{$ENDIF} {$ENDIF}
@ -1109,6 +1120,7 @@ begin
itmPkgOpenRecent := TMenuItem.Create(Self); itmPkgOpenRecent := TMenuItem.Create(Self);
itmPkgOpenRecent.Name:='itmPkgOpenRecent'; itmPkgOpenRecent.Name:='itmPkgOpenRecent';
itmPkgOpenRecent.Caption := lisMenuOpenRecentPkg; itmPkgOpenRecent.Caption := lisMenuOpenRecentPkg;
itmPkgOpenRecent.Graphic:=LoadPixmap('pkg_package');
{$IFDEF EnablePkgs} {$IFDEF EnablePkgs}
mnuComponents.Add(itmPkgOpenRecent); mnuComponents.Add(itmPkgOpenRecent);
{$ENDIF} {$ENDIF}
@ -1120,6 +1132,7 @@ begin
itmPkgPkgGraph := TMenuItem.Create(Self); itmPkgPkgGraph := TMenuItem.Create(Self);
itmPkgPkgGraph.Name:='itmPkgPkgGraph'; itmPkgPkgGraph.Name:='itmPkgPkgGraph';
itmPkgPkgGraph.Caption := lisMenuPackageGraph; itmPkgPkgGraph.Caption := lisMenuPackageGraph;
itmPkgPkgGraph.Graphic:=LoadPixmap('pkg_packagegraph');
{$IFDEF EnablePkgs} {$IFDEF EnablePkgs}
mnuComponents.Add(itmPkgPkgGraph); mnuComponents.Add(itmPkgPkgGraph);
{$ENDIF} {$ENDIF}
@ -1307,6 +1320,7 @@ begin
itmProjectSave.ShortCut:=CommandToShortCut(ecSaveProject); itmProjectSave.ShortCut:=CommandToShortCut(ecSaveProject);
itmProjectSaveAs.ShortCut:=CommandToShortCut(ecSaveProjectAs); itmProjectSaveAs.ShortCut:=CommandToShortCut(ecSaveProjectAs);
itmProjectPublish.ShortCut:=CommandToShortCut(ecPublishProject); itmProjectPublish.ShortCut:=CommandToShortCut(ecPublishProject);
itmProjectInspector.ShortCut:=CommandToShortCut(ecProjectInspector);
itmProjectAddTo.ShortCut:=CommandToShortCut(ecAddCurUnitToProj); itmProjectAddTo.ShortCut:=CommandToShortCut(ecAddCurUnitToProj);
itmProjectRemoveFrom.ShortCut:=CommandToShortCut(ecRemoveFromProj); itmProjectRemoveFrom.ShortCut:=CommandToShortCut(ecRemoveFromProj);
itmProjectViewSource.ShortCut:=CommandToShortCut(ecViewProjectSource); itmProjectViewSource.ShortCut:=CommandToShortCut(ecViewProjectSource);

View File

@ -73,6 +73,8 @@ type
procedure SetupMainBarShortCuts; virtual; abstract; procedure SetupMainBarShortCuts; virtual; abstract;
procedure SetRecentPackagesMenu; virtual; abstract; procedure SetRecentPackagesMenu; virtual; abstract;
function GetDefaultSaveDirectoryForFile(const Filename: string): string; virtual; abstract;
procedure LoadInstalledPackages; virtual; abstract; procedure LoadInstalledPackages; virtual; abstract;
function ShowConfigureCustomComponents: TModalResult; virtual; abstract; function ShowConfigureCustomComponents: TModalResult; virtual; abstract;
@ -91,6 +93,8 @@ type
Flags: TPkgCompileFlags): TModalResult; virtual; abstract; Flags: TPkgCompileFlags): TModalResult; virtual; abstract;
function DoSavePackageMainSource(APackage: TLazPackage; function DoSavePackageMainSource(APackage: TLazPackage;
Flags: TPkgCompileFlags): TModalResult; virtual; abstract; Flags: TPkgCompileFlags): TModalResult; virtual; abstract;
function OnRenameFile(const OldFilename,
NewFilename: string): TModalResult; virtual; abstract;
end; end;
var var

View File

@ -588,6 +588,7 @@ type
TBasePackageEditor = class(TForm) TBasePackageEditor = class(TForm)
public public
procedure UpdateAll; virtual; abstract;
end; end;
@ -2455,6 +2456,7 @@ begin
if UnitOutputDirectory=AValue then exit; if UnitOutputDirectory=AValue then exit;
InvalidateOptions; InvalidateOptions;
inherited SetUnitOutputDir(AValue); inherited SetUnitOutputDir(AValue);
LazPackage.DefineTemplates.OutputDirectoryChanged;
end; end;
constructor TPkgCompilerOptions.Create(ThePackage: TLazPackage); constructor TPkgCompilerOptions.Create(ThePackage: TLazPackage);

View File

@ -128,7 +128,7 @@ type
FPlugins: TStringList; FPlugins: TStringList;
procedure SetLazPackage(const AValue: TLazPackage); procedure SetLazPackage(const AValue: TLazPackage);
procedure SetupComponents; procedure SetupComponents;
procedure UpdateAll; procedure UpdateAll; override;
procedure UpdateTitle; procedure UpdateTitle;
procedure UpdateButtons; procedure UpdateButtons;
procedure UpdateFiles; procedure UpdateFiles;
@ -321,20 +321,26 @@ begin
if CurNode.Parent<>nil then begin if CurNode.Parent<>nil then begin
if CurNode.Parent=FilesNode then begin if CurNode.Parent=FilesNode then begin
AddPopupMenuItem('Open file',@OpenFileMenuItemClick,true); AddPopupMenuItem('Open file',@OpenFileMenuItemClick,true);
AddPopupMenuItem('Remove file',@RemoveBitBtnClick,true); AddPopupMenuItem('Remove file',@RemoveBitBtnClick,
RemoveBitBtn.Enabled);
end else if (CurDependency<>nil) and (not Removed) then begin end else if (CurDependency<>nil) and (not Removed) then begin
AddPopupMenuItem('Open package',@OpenFileMenuItemClick,true); AddPopupMenuItem('Open package',@OpenFileMenuItemClick,true);
AddPopupMenuItem('Remove dependency',@RemoveBitBtnClick,true); AddPopupMenuItem('Remove dependency',@RemoveBitBtnClick,
RemoveBitBtn.Enabled);
AddPopupMenuItem('Move dependency up',@MoveDependencyUpClick, AddPopupMenuItem('Move dependency up',@MoveDependencyUpClick,
CurDependency.PrevRequiresDependency<>nil); (CurDependency.PrevRequiresDependency<>nil)
and (not LazPackage.ReadOnly));
AddPopupMenuItem('Move dependency down',@MoveDependencyDownClick, AddPopupMenuItem('Move dependency down',@MoveDependencyDownClick,
CurDependency.NextRequiresDependency<>nil); (CurDependency.NextRequiresDependency<>nil)
and (not LazPackage.ReadOnly));
end else if (CurNode.Parent=RemovedFilesNode) then begin end else if (CurNode.Parent=RemovedFilesNode) then begin
AddPopupMenuItem('Open file',@OpenFileMenuItemClick,true); AddPopupMenuItem('Open file',@OpenFileMenuItemClick,true);
AddPopupMenuItem('Add file',@ReAddMenuItemClick,true); AddPopupMenuItem('Add file',@ReAddMenuItemClick,
AddBitBtn.Enabled);
end else if (CurNode.Parent=RemovedRequiredNode) then begin end else if (CurNode.Parent=RemovedRequiredNode) then begin
AddPopupMenuItem('Open package',@OpenFileMenuItemClick,true); AddPopupMenuItem('Open package',@OpenFileMenuItemClick,true);
AddPopupMenuItem('Add dependency',@ReAddMenuItemClick,true); AddPopupMenuItem('Add dependency',@ReAddMenuItemClick,
AddBitBtn.Enabled);
end; end;
end; end;
end else begin end else begin
@ -1041,7 +1047,7 @@ begin
and (FilesTreeView.Selected<>nil) and (FilesTreeView.Selected<>nil)
and ((FilesTreeView.Selected.Parent=FilesNode) and ((FilesTreeView.Selected.Parent=FilesNode)
or (FilesTreeView.Selected.Parent=RequiredPackagesNode)); or (FilesTreeView.Selected.Parent=RequiredPackagesNode));
InstallBitBtn.Enabled:=true; InstallBitBtn.Enabled:=(not LazPackage.AutoCreated);
OptionsBitBtn.Enabled:=true; OptionsBitBtn.Enabled:=true;
CompilerOptionsBitBtn.Enabled:=true; CompilerOptionsBitBtn.Enabled:=true;
end; end;

View File

@ -104,6 +104,8 @@ type
procedure SetupMainBarShortCuts; override; procedure SetupMainBarShortCuts; override;
procedure SetRecentPackagesMenu; override; procedure SetRecentPackagesMenu; override;
procedure AddFileToRecentPackages(const Filename: string); procedure AddFileToRecentPackages(const Filename: string);
function GetDefaultSaveDirectoryForFile(const Filename: string): string; override;
procedure LoadInstalledPackages; override; procedure LoadInstalledPackages; override;
function AddPackageToGraph(APackage: TLazPackage): TModalResult; function AddPackageToGraph(APackage: TLazPackage): TModalResult;
@ -125,6 +127,8 @@ type
Flags: TPkgCompileFlags): TModalResult; override; Flags: TPkgCompileFlags): TModalResult; override;
function DoSavePackageMainSource(APackage: TLazPackage; function DoSavePackageMainSource(APackage: TLazPackage;
Flags: TPkgCompileFlags): TModalResult; override; Flags: TPkgCompileFlags): TModalResult; override;
function OnRenameFile(const OldFilename,
NewFilename: string): TModalResult; override;
end; end;
implementation implementation
@ -918,6 +922,20 @@ begin
MainIDE.SaveEnvironment; MainIDE.SaveEnvironment;
end; end;
function TPkgManager.GetDefaultSaveDirectoryForFile(const Filename: string
): string;
var
APackage: TLazPackage;
PkgFile: TPkgFile;
begin
Result:='';
PkgFile:=PackageGraph.FindFileInAllPackages(Filename,false,true);
if PkgFile=nil then exit;
APackage:=PkgFile.LazPackage;
if APackage.AutoCreated or (not APackage.HasDirectory) then exit;
Result:=APackage.Directory;
end;
procedure TPkgManager.LoadInstalledPackages; procedure TPkgManager.LoadInstalledPackages;
begin begin
// base packages // base packages
@ -1435,6 +1453,41 @@ begin
Result:=mrOk; Result:=mrOk;
end; end;
function TPkgManager.OnRenameFile(const OldFilename, NewFilename: string
): TModalResult;
var
OldPackage: TLazPackage;
OldPkgFile: TPkgFile;
NewPkgFile: TPkgFile;
begin
Result:=mrOk;
if (OldFilename=NewFilename) or (not FilenameIsPascalUnit(NewFilename)) then
exit;
OldPkgFile:=PackageGraph.FindFileInAllPackages(OldFilename,false,true);
if (OldPkgFile=nil) or (OldPkgFile.LazPackage.ReadOnly) then
exit;
OldPackage:=OldPkgFile.LazPackage;
NewPkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,false,true);
if (NewPkgFile<>nil) and (OldPackage<>NewPkgFile.LazPackage) then exit;
Result:=MessageDlg('Rename file in package?',
'The package '+OldPackage.IDAsString+' owns the file'#13
+'"'+OldFilename+'".'#13
+'Should the file be renamed in the package as well?',
mtConfirmation,[mbYes,mbNo,mbAbort],0);
if Result=mrNo then begin
Result:=mrOk;
exit;
end;
if Result<>mrYes then exit;
OldPkgFile.Filename:=NewFilename;
if OldPackage.Editor<>nil then OldPackage.Editor.UpdateAll;
OldPackage.Modified:=true;
Result:=mrOk;
end;
function TPkgManager.DoClosePackageEditor(APackage: TLazPackage): TModalResult; function TPkgManager.DoClosePackageEditor(APackage: TLazPackage): TModalResult;
begin begin
if APackage.Editor<>nil then begin if APackage.Editor<>nil then begin