mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-23 20:50:40 +02:00
implemented open package
git-svn-id: trunk@4027 -
This commit is contained in:
parent
1f9e1181b0
commit
d2685ce21a
@ -1976,7 +1976,7 @@ begin
|
|||||||
try
|
try
|
||||||
XMLConfig:=GetXMLCfg;
|
XMLConfig:=GetXMLCfg;
|
||||||
|
|
||||||
XMLConfig.SetValue('ObjectInspectorOptions/Bounds/Valid',FSaveBounds);
|
XMLConfig.SetDeleteValue('ObjectInspectorOptions/Bounds/Valid',FSaveBounds,true);
|
||||||
if FSaveBounds then begin
|
if FSaveBounds then begin
|
||||||
XMLConfig.SetValue('ObjectInspectorOptions/Bounds/Left',FLeft);
|
XMLConfig.SetValue('ObjectInspectorOptions/Bounds/Left',FLeft);
|
||||||
XMLConfig.SetValue('ObjectInspectorOptions/Bounds/Top',FTop);
|
XMLConfig.SetValue('ObjectInspectorOptions/Bounds/Top',FTop);
|
||||||
@ -1989,12 +1989,12 @@ begin
|
|||||||
XMLConfig.SetValue(
|
XMLConfig.SetValue(
|
||||||
'ObjectInspectorOptions/Bounds/EventGridSplitterX'
|
'ObjectInspectorOptions/Bounds/EventGridSplitterX'
|
||||||
,FEventGridSplitterX);
|
,FEventGridSplitterX);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'ObjectInspectorOptions/Bounds/DefaultItemHeight',FDefaultItemHeight);
|
'ObjectInspectorOptions/Bounds/DefaultItemHeight',FDefaultItemHeight,20);
|
||||||
|
|
||||||
XMLConfig.SetValue('ObjectInspectorOptions/GridBackgroundColor'
|
XMLConfig.SetDeleteValue('ObjectInspectorOptions/GridBackgroundColor'
|
||||||
,FGridBackgroundColor);
|
,FGridBackgroundColor,clBackground);
|
||||||
XMLConfig.SetValue('ObjectInspectorOptions/ShowHints',FShowHints);
|
XMLConfig.SetDeleteValue('ObjectInspectorOptions/ShowHints',FShowHints,true);
|
||||||
|
|
||||||
if XMLConfig<>CustomXMLCfg then XMLConfig.Flush;
|
if XMLConfig<>CustomXMLCfg then XMLConfig.Flush;
|
||||||
except
|
except
|
||||||
|
@ -191,6 +191,8 @@ type
|
|||||||
FMaxRecentOpenFiles: integer;
|
FMaxRecentOpenFiles: integer;
|
||||||
FRecentProjectFiles: TStringList;
|
FRecentProjectFiles: TStringList;
|
||||||
FMaxRecentProjectFiles: integer;
|
FMaxRecentProjectFiles: integer;
|
||||||
|
FRecentPackageFiles: TStringList;
|
||||||
|
FMaxRecentPackageFiles: integer;
|
||||||
FOpenLastProjectAtStart: boolean;
|
FOpenLastProjectAtStart: boolean;
|
||||||
|
|
||||||
// backup
|
// backup
|
||||||
@ -326,6 +328,10 @@ type
|
|||||||
write FMaxRecentProjectFiles;
|
write FMaxRecentProjectFiles;
|
||||||
procedure AddToRecentProjectFiles(const AFilename: string);
|
procedure AddToRecentProjectFiles(const AFilename: string);
|
||||||
procedure RemoveFromRecentProjectFiles(const AFilename: string);
|
procedure RemoveFromRecentProjectFiles(const AFilename: string);
|
||||||
|
property RecentPackageFiles: TStringList read FRecentPackageFiles
|
||||||
|
write FRecentPackageFiles;
|
||||||
|
property MaxRecentPackageFiles: integer read FMaxRecentPackageFiles
|
||||||
|
write FMaxRecentPackageFiles;
|
||||||
property LastSavedProjectFile: string read FLastSavedProjectFile
|
property LastSavedProjectFile: string read FLastSavedProjectFile
|
||||||
write FLastSavedProjectFile;
|
write FLastSavedProjectFile;
|
||||||
property OpenLastProjectAtStart: boolean read FOpenLastProjectAtStart
|
property OpenLastProjectAtStart: boolean read FOpenLastProjectAtStart
|
||||||
@ -679,6 +685,8 @@ begin
|
|||||||
FMaxRecentOpenFiles:=10;
|
FMaxRecentOpenFiles:=10;
|
||||||
FRecentProjectFiles:=TStringList.Create;
|
FRecentProjectFiles:=TStringList.Create;
|
||||||
FMaxRecentProjectFiles:=5;
|
FMaxRecentProjectFiles:=5;
|
||||||
|
FRecentPackageFiles:=TStringList.Create;
|
||||||
|
FMaxRecentPackageFiles:=10;
|
||||||
FOpenLastProjectAtStart:=true;
|
FOpenLastProjectAtStart:=true;
|
||||||
|
|
||||||
// backup
|
// backup
|
||||||
@ -708,6 +716,7 @@ begin
|
|||||||
fExternalTools.Free;
|
fExternalTools.Free;
|
||||||
FRecentOpenFiles.Free;
|
FRecentOpenFiles.Free;
|
||||||
FRecentProjectFiles.Free;
|
FRecentProjectFiles.Free;
|
||||||
|
FRecentPackageFiles.Free;
|
||||||
FObjectInspectorOptions.Free;
|
FObjectInspectorOptions.Free;
|
||||||
FLazarusDirsHistory.Free;
|
FLazarusDirsHistory.Free;
|
||||||
FCompilerFileHistory.Free;
|
FCompilerFileHistory.Free;
|
||||||
@ -815,16 +824,15 @@ begin
|
|||||||
|
|
||||||
// auto save
|
// auto save
|
||||||
FAutoSaveEditorFiles:=XMLConfig.GetValue(
|
FAutoSaveEditorFiles:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/AutoSave/EditorFiles',FAutoSaveEditorFiles);
|
'EnvironmentOptions/AutoSave/EditorFiles',true);
|
||||||
FAutoSaveProject:=XMLConfig.GetValue(
|
FAutoSaveProject:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/AutoSave/Project',FAutoSaveProject);
|
'EnvironmentOptions/AutoSave/Project',true);
|
||||||
FAutoSaveIntervalInSecs:=XMLConfig.GetValue(
|
FAutoSaveIntervalInSecs:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/AutoSave/IntervalInSecs',FAutoSaveIntervalInSecs);
|
'EnvironmentOptions/AutoSave/IntervalInSecs',600);
|
||||||
FLastSavedProjectFile:=XMLConfig.GetValue(
|
FLastSavedProjectFile:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/AutoSave/LastSavedProjectFile',FLastSavedProjectFile);
|
'EnvironmentOptions/AutoSave/LastSavedProjectFile','');
|
||||||
FOpenLastProjectAtStart:=XMLConfig.GetValue(
|
FOpenLastProjectAtStart:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/AutoSave/OpenLastProjectAtStart',
|
'EnvironmentOptions/AutoSave/OpenLastProjectAtStart',true);
|
||||||
FOpenLastProjectAtStart);
|
|
||||||
|
|
||||||
// windows
|
// windows
|
||||||
FIDEWindowLayoutList.LoadFromXMLConfig(XMLConfig,
|
FIDEWindowLayoutList.LoadFromXMLConfig(XMLConfig,
|
||||||
@ -832,24 +840,23 @@ begin
|
|||||||
FIDEDialogLayoutList.LoadFromXMLConfig(XMLConfig,
|
FIDEDialogLayoutList.LoadFromXMLConfig(XMLConfig,
|
||||||
'EnvironmentOptions/Desktop/Dialogs');
|
'EnvironmentOptions/Desktop/Dialogs');
|
||||||
FMinimizeAllOnMinimizeMain:=XMLConfig.GetValue(
|
FMinimizeAllOnMinimizeMain:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/Desktop/MinimizeAllOnMinimizeMain/Value',
|
'EnvironmentOptions/Desktop/MinimizeAllOnMinimizeMain/Value',true);
|
||||||
FMinimizeAllOnMinimizeMain);
|
|
||||||
|
|
||||||
// form editor
|
// form editor
|
||||||
FShowGrid:=XMLConfig.GetValue(
|
FShowGrid:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/ShowGrid',FShowGrid);
|
'EnvironmentOptions/FormEditor/ShowGrid',true);
|
||||||
FGridColor:=XMLConfig.GetValue(
|
FGridColor:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/GridColor',FGridColor);
|
'EnvironmentOptions/FormEditor/GridColor',FGridColor);
|
||||||
FSnapToGrid:=XMLConfig.GetValue(
|
FSnapToGrid:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/SnapToGrid',FSnapToGrid);
|
'EnvironmentOptions/FormEditor/SnapToGrid',true);
|
||||||
FGridSizeX:=XMLConfig.GetValue(
|
FGridSizeX:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/GridSizeX',FGridSizeX);
|
'EnvironmentOptions/FormEditor/GridSizeX',8);
|
||||||
FGridSizeY:=XMLConfig.GetValue(
|
FGridSizeY:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/GridSizeY',FGridSizeY);
|
'EnvironmentOptions/FormEditor/GridSizeY',8);
|
||||||
FShowGuideLines:=XMLConfig.GetValue(
|
FShowGuideLines:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/ShowGuideLines',FShowGuideLines);
|
'EnvironmentOptions/FormEditor/ShowGuideLines',true);
|
||||||
FSnapToGuideLines:=XMLConfig.GetValue(
|
FSnapToGuideLines:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/SnapToGuideLines',FSnapToGuideLines);
|
'EnvironmentOptions/FormEditor/SnapToGuideLines',true);
|
||||||
FGuideLineColorLeftTop:=XMLConfig.GetValue(
|
FGuideLineColorLeftTop:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/GuideLineColorLeftTop',
|
'EnvironmentOptions/FormEditor/GuideLineColorLeftTop',
|
||||||
FGuideLineColorLeftTop);
|
FGuideLineColorLeftTop);
|
||||||
@ -857,11 +864,11 @@ begin
|
|||||||
'EnvironmentOptions/FormEditor/GuideLineColorRightBottom',
|
'EnvironmentOptions/FormEditor/GuideLineColorRightBottom',
|
||||||
FGuideLineColorRightBottom);
|
FGuideLineColorRightBottom);
|
||||||
FShowComponentCaptions:=XMLConfig.GetValue(
|
FShowComponentCaptions:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/ShowComponentCaptions',FShowComponentCaptions);
|
'EnvironmentOptions/FormEditor/ShowComponentCaptions',true);
|
||||||
FShowEditorHints:=XMLConfig.GetValue(
|
FShowEditorHints:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/ShowEditorHints',FShowEditorHints);
|
'EnvironmentOptions/FormEditor/ShowEditorHints',true);
|
||||||
FAutoCreateFormsOnOpen:=XMLConfig.GetValue(
|
FAutoCreateFormsOnOpen:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/AutoCreateFormsOnOpen',FAutoCreateFormsOnOpen);
|
'EnvironmentOptions/FormEditor/AutoCreateFormsOnOpen',true);
|
||||||
FGrabberColor:=XMLConfig.GetValue(
|
FGrabberColor:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/GrabberColor/Value',FGrabberColor);
|
'EnvironmentOptions/FormEditor/GrabberColor/Value',FGrabberColor);
|
||||||
FMarkerColor:=XMLConfig.GetValue(
|
FMarkerColor:=XMLConfig.GetValue(
|
||||||
@ -874,7 +881,7 @@ begin
|
|||||||
FRubberbandCreationColor);
|
FRubberbandCreationColor);
|
||||||
FRubberbandSelectsGrandChilds:=XMLConfig.GetValue(
|
FRubberbandSelectsGrandChilds:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/FormEditor/Rubberband/SelectsGrandChilds/Value',
|
'EnvironmentOptions/FormEditor/Rubberband/SelectsGrandChilds/Value',
|
||||||
FRubberbandSelectsGrandChilds);
|
false);
|
||||||
|
|
||||||
if not OnlyDesktop then begin
|
if not OnlyDesktop then begin
|
||||||
// files
|
// files
|
||||||
@ -937,11 +944,9 @@ begin
|
|||||||
|
|
||||||
// hints
|
// hints
|
||||||
FShowHintsForComponentPalette:=XMLConfig.GetValue(
|
FShowHintsForComponentPalette:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/ShowHintsForComponentPalette/Value',
|
'EnvironmentOptions/ShowHintsForComponentPalette/Value',true);
|
||||||
FShowHintsForComponentPalette);
|
|
||||||
FShowHintsForMainSpeedButtons:=XMLConfig.GetValue(
|
FShowHintsForMainSpeedButtons:=XMLConfig.GetValue(
|
||||||
'EnvironmentOptions/ShowHintsForMainSpeedButtons/Value',
|
'EnvironmentOptions/ShowHintsForMainSpeedButtons/Value',true);
|
||||||
FShowHintsForMainSpeedButtons);
|
|
||||||
|
|
||||||
// recent files and directories
|
// recent files and directories
|
||||||
FMaxRecentOpenFiles:=XMLConfig.GetValue(
|
FMaxRecentOpenFiles:=XMLConfig.GetValue(
|
||||||
@ -952,6 +957,10 @@ begin
|
|||||||
'EnvironmentOptions/Recent/ProjectFiles/Max',FMaxRecentProjectFiles);
|
'EnvironmentOptions/Recent/ProjectFiles/Max',FMaxRecentProjectFiles);
|
||||||
LoadRecentList(XMLConfig,FRecentProjectFiles,
|
LoadRecentList(XMLConfig,FRecentProjectFiles,
|
||||||
'EnvironmentOptions/Recent/ProjectFiles/');
|
'EnvironmentOptions/Recent/ProjectFiles/');
|
||||||
|
FMaxRecentPackageFiles:=XMLConfig.GetValue(
|
||||||
|
'EnvironmentOptions/Recent/PackageFiles/Max',FMaxRecentOpenFiles);
|
||||||
|
LoadRecentList(XMLConfig,FRecentPackageFiles,
|
||||||
|
'EnvironmentOptions/Recent/PackageFiles/');
|
||||||
|
|
||||||
// external tools
|
// external tools
|
||||||
fExternalTools.Load(XMLConfig,'EnvironmentOptions/ExternalTools/');
|
fExternalTools.Load(XMLConfig,'EnvironmentOptions/ExternalTools/');
|
||||||
@ -994,10 +1003,10 @@ var XMLConfig: TXMLConfig;
|
|||||||
else
|
else
|
||||||
i:=5; // bakUserDefinedAddExt;
|
i:=5; // bakUserDefinedAddExt;
|
||||||
end;
|
end;
|
||||||
XMLConfig.SetValue(Path+'Type',i);
|
XMLConfig.SetDeleteValue(Path+'Type',i,5);
|
||||||
XMLConfig.SetValue(Path+'AdditionalExtension',AdditionalExtension);
|
XMLConfig.SetDeleteValue(Path+'AdditionalExtension',AdditionalExtension,'.bak');
|
||||||
XMLConfig.SetValue(Path+'MaxCounter',MaxCounter);
|
XMLConfig.SetDeleteValue(Path+'MaxCounter',MaxCounter,10);
|
||||||
XMLConfig.SetValue(Path+'SubDirectory',SubDirectory);
|
XMLConfig.SetDeleteValue(Path+'SubDirectory',SubDirectory,'backup');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1008,7 +1017,7 @@ var XMLConfig: TXMLConfig;
|
|||||||
dtNone: i:=0;
|
dtNone: i:=0;
|
||||||
dtGnuDebugger: i:=1;
|
dtGnuDebugger: i:=1;
|
||||||
end;
|
end;
|
||||||
XMLConfig.SetValue(Path+'DebuggerType/Value',i);
|
XMLConfig.SetDeleteValue(Path+'DebuggerType/Value',i,1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1018,79 +1027,81 @@ begin
|
|||||||
XMLConfig.SetValue('EnvironmentOptions/Version/Value',EnvOptsVersion);
|
XMLConfig.SetValue('EnvironmentOptions/Version/Value',EnvOptsVersion);
|
||||||
|
|
||||||
// language
|
// language
|
||||||
XMLConfig.SetValue('EnvironmentOptions/Language/ID'
|
XMLConfig.SetDeleteValue('EnvironmentOptions/Language/ID'
|
||||||
,LazarusLanguageIDs[fLanguage]);
|
,LazarusLanguageIDs[fLanguage],LazarusLanguageIDs[llAutomatic]);
|
||||||
|
|
||||||
// auto save
|
// auto save
|
||||||
XMLConfig.SetValue('EnvironmentOptions/AutoSave/EditorFiles'
|
XMLConfig.SetDeleteValue('EnvironmentOptions/AutoSave/EditorFiles'
|
||||||
,FAutoSaveEditorFiles);
|
,FAutoSaveEditorFiles,true);
|
||||||
XMLConfig.SetValue('EnvironmentOptions/AutoSave/Project',FAutoSaveProject);
|
XMLConfig.SetDeleteValue('EnvironmentOptions/AutoSave/Project',
|
||||||
XMLConfig.SetValue('EnvironmentOptions/AutoSave/IntervalInSecs'
|
FAutoSaveProject,true);
|
||||||
,FAutoSaveIntervalInSecs);
|
XMLConfig.SetDeleteValue('EnvironmentOptions/AutoSave/IntervalInSecs'
|
||||||
XMLConfig.SetValue('EnvironmentOptions/AutoSave/LastSavedProjectFile'
|
,FAutoSaveIntervalInSecs,600);
|
||||||
,FLastSavedProjectFile);
|
XMLConfig.SetDeleteValue('EnvironmentOptions/AutoSave/LastSavedProjectFile'
|
||||||
XMLConfig.SetValue(
|
,FLastSavedProjectFile,'');
|
||||||
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/AutoSave/OpenLastProjectAtStart',
|
'EnvironmentOptions/AutoSave/OpenLastProjectAtStart',
|
||||||
FOpenLastProjectAtStart);
|
FOpenLastProjectAtStart,true);
|
||||||
|
|
||||||
// windows
|
// windows
|
||||||
FIDEWindowLayoutList.SaveToXMLConfig(XMLConfig,
|
FIDEWindowLayoutList.SaveToXMLConfig(XMLConfig,
|
||||||
'EnvironmentOptions/Desktop/');
|
'EnvironmentOptions/Desktop/');
|
||||||
FIDEDialogLayoutList.SaveToXMLConfig(XMLConfig,
|
FIDEDialogLayoutList.SaveToXMLConfig(XMLConfig,
|
||||||
'EnvironmentOptions/Desktop/Dialogs');
|
'EnvironmentOptions/Desktop/Dialogs');
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/Desktop/MinimizeAllOnMinimizeMain/Value',
|
'EnvironmentOptions/Desktop/MinimizeAllOnMinimizeMain/Value',
|
||||||
FMinimizeAllOnMinimizeMain);
|
FMinimizeAllOnMinimizeMain,true);
|
||||||
|
|
||||||
// form editor
|
// form editor
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/ShowGrid',FShowGrid);
|
'EnvironmentOptions/FormEditor/ShowGrid',FShowGrid,true);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/GridColor',FGridColor);
|
'EnvironmentOptions/FormEditor/GridColor',FGridColor,clBlack);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/SnapToGrid',FSnapToGrid);
|
'EnvironmentOptions/FormEditor/SnapToGrid',FSnapToGrid,true);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/GridSizeX',FGridSizeX);
|
'EnvironmentOptions/FormEditor/GridSizeX',FGridSizeX,8);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/GridSizeY',FGridSizeY);
|
'EnvironmentOptions/FormEditor/GridSizeY',FGridSizeY,8);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/ShowGuideLines',FShowGuideLines);
|
'EnvironmentOptions/FormEditor/ShowGuideLines',FShowGuideLines,true);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/SnapToGuideLines',FSnapToGuideLines);
|
'EnvironmentOptions/FormEditor/SnapToGuideLines',FSnapToGuideLines,true);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/GuideLineColorLeftTop',
|
'EnvironmentOptions/FormEditor/GuideLineColorLeftTop',
|
||||||
FGuideLineColorLeftTop);
|
FGuideLineColorLeftTop,clGreen);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/GuideLineColorRightBottom',
|
'EnvironmentOptions/FormEditor/GuideLineColorRightBottom',
|
||||||
FGuideLineColorRightBottom);
|
FGuideLineColorRightBottom,clBlue);
|
||||||
XMLConfig.SetValue('EnvironmentOptions/FormEditor/ShowComponentCaptions',
|
XMLConfig.SetDeleteValue('EnvironmentOptions/FormEditor/ShowComponentCaptions',
|
||||||
FShowComponentCaptions);
|
FShowComponentCaptions,true);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/ShowEditorHints',FShowEditorHints);
|
'EnvironmentOptions/FormEditor/ShowEditorHints',FShowEditorHints,true);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/AutoCreateFormsOnOpen',FAutoCreateFormsOnOpen);
|
'EnvironmentOptions/FormEditor/AutoCreateFormsOnOpen',
|
||||||
XMLConfig.SetValue(
|
FAutoCreateFormsOnOpen,true);
|
||||||
'EnvironmentOptions/FormEditor/GrabberColor/Value',FGrabberColor);
|
XMLConfig.SetDeleteValue(
|
||||||
XMLConfig.SetValue(
|
'EnvironmentOptions/FormEditor/GrabberColor/Value',FGrabberColor,clBlack);
|
||||||
'EnvironmentOptions/FormEditor/MarkerColor/Value',FMarkerColor);
|
XMLConfig.SetDeleteValue(
|
||||||
XMLConfig.SetValue(
|
'EnvironmentOptions/FormEditor/MarkerColor/Value',FMarkerColor,clDkGray);
|
||||||
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/Rubberband/SelectionColor/Value',
|
'EnvironmentOptions/FormEditor/Rubberband/SelectionColor/Value',
|
||||||
FRubberbandSelectionColor);
|
FRubberbandSelectionColor,clBlack);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/Rubberband/CreationColor/Value',
|
'EnvironmentOptions/FormEditor/Rubberband/CreationColor/Value',
|
||||||
FRubberbandCreationColor);
|
FRubberbandCreationColor,clRed);
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/FormEditor/Rubberband/SelectsGrandChilds/Value',
|
'EnvironmentOptions/FormEditor/Rubberband/SelectsGrandChilds/Value',
|
||||||
FRubberbandSelectsGrandChilds);
|
FRubberbandSelectsGrandChilds,false);
|
||||||
|
|
||||||
if not OnlyDesktop then begin
|
if not OnlyDesktop then begin
|
||||||
// files
|
// files
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/LazarusDirectory/Value',FLazarusDirectory);
|
'EnvironmentOptions/LazarusDirectory/Value',FLazarusDirectory,'');
|
||||||
SaveRecentList(XMLConfig,FLazarusDirsHistory,
|
SaveRecentList(XMLConfig,FLazarusDirsHistory,
|
||||||
'EnvironmentOptions/LazarusDirectory/History/');
|
'EnvironmentOptions/LazarusDirectory/History/');
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetDeleteValue(
|
||||||
'EnvironmentOptions/CompilerFilename/Value',FCompilerFilename);
|
'EnvironmentOptions/CompilerFilename/Value',FCompilerFilename,'');
|
||||||
SaveRecentList(XMLConfig,FCompilerFileHistory,
|
SaveRecentList(XMLConfig,FCompilerFileHistory,
|
||||||
'EnvironmentOptions/CompilerFilename/History/');
|
'EnvironmentOptions/CompilerFilename/History/');
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetValue(
|
||||||
@ -1115,10 +1126,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// hints
|
// hints
|
||||||
XMLConfig.SetValue('EnvironmentOptions/ShowHintsForComponentPalette/Value',
|
XMLConfig.SetDeleteValue('EnvironmentOptions/ShowHintsForComponentPalette/Value',
|
||||||
FShowHintsForComponentPalette);
|
FShowHintsForComponentPalette,true);
|
||||||
XMLConfig.SetValue('EnvironmentOptions/ShowHintsForMainSpeedButtons/Value',
|
XMLConfig.SetDeleteValue('EnvironmentOptions/ShowHintsForMainSpeedButtons/Value',
|
||||||
FShowHintsForMainSpeedButtons);
|
FShowHintsForMainSpeedButtons,true);
|
||||||
|
|
||||||
// recent files and directories
|
// recent files and directories
|
||||||
XMLConfig.SetValue(
|
XMLConfig.SetValue(
|
||||||
@ -1129,19 +1140,24 @@ begin
|
|||||||
'EnvironmentOptions/Recent/ProjectFiles/Max',FMaxRecentProjectFiles);
|
'EnvironmentOptions/Recent/ProjectFiles/Max',FMaxRecentProjectFiles);
|
||||||
SaveRecentList(XMLConfig,FRecentProjectFiles,
|
SaveRecentList(XMLConfig,FRecentProjectFiles,
|
||||||
'EnvironmentOptions/Recent/ProjectFiles/');
|
'EnvironmentOptions/Recent/ProjectFiles/');
|
||||||
|
XMLConfig.SetValue(
|
||||||
|
'EnvironmentOptions/Recent/PackageFiles/Max',FMaxRecentPackageFiles);
|
||||||
|
SaveRecentList(XMLConfig,FRecentPackageFiles,
|
||||||
|
'EnvironmentOptions/Recent/PackageFiles/');
|
||||||
|
|
||||||
// external tools
|
// external tools
|
||||||
fExternalTools.Save(XMLConfig,'EnvironmentOptions/ExternalTools/');
|
fExternalTools.Save(XMLConfig,'EnvironmentOptions/ExternalTools/');
|
||||||
|
|
||||||
// naming
|
// naming
|
||||||
XMLConfig.SetValue('EnvironmentOptions/Naming/PascalFileExtension',
|
XMLConfig.SetDeleteValue('EnvironmentOptions/Naming/PascalFileExtension',
|
||||||
PascalExtension[fPascalFileExtension]);
|
PascalExtension[fPascalFileExtension],'.pas');
|
||||||
XMLConfig.SetValue('EnvironmentOptions/PascalFileAutoLowerCase/Value',
|
XMLConfig.SetDeleteValue('EnvironmentOptions/PascalFileAutoLowerCase/Value',
|
||||||
fPascalFileAutoLowerCase);
|
fPascalFileAutoLowerCase,false);
|
||||||
XMLConfig.SetValue('EnvironmentOptions/PascalFileAskLowerCase/Value',
|
XMLConfig.SetDeleteValue('EnvironmentOptions/PascalFileAskLowerCase/Value',
|
||||||
fPascalFileAskLowerCase);
|
fPascalFileAskLowerCase,true);
|
||||||
XMLConfig.SetValue('EnvironmentOptions/AutoDeleteAmbigiousSources/Value',
|
XMLConfig.SetDeleteValue('EnvironmentOptions/AutoDeleteAmbigiousSources/Value',
|
||||||
AmbigiousFileActionNames[fAmbigiousFileAction]);
|
AmbigiousFileActionNames[fAmbigiousFileAction],
|
||||||
|
AmbigiousFileActionNames[afaAsk]);
|
||||||
|
|
||||||
// object inspector
|
// object inspector
|
||||||
FObjectInspectorOptions.SaveBounds:=false;
|
FObjectInspectorOptions.SaveBounds:=false;
|
||||||
@ -1150,8 +1166,10 @@ begin
|
|||||||
XMLConfig.Flush;
|
XMLConfig.Flush;
|
||||||
FileUpdated;
|
FileUpdated;
|
||||||
except
|
except
|
||||||
// ToDo
|
on E: Exception do begin
|
||||||
writeln('[TEnvironmentOptions.Save] error writing "',Filename,'"');
|
// ToDo
|
||||||
|
writeln('[TEnvironmentOptions.Save] error writing "',Filename,'": ',E.Message);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -416,20 +416,21 @@ begin
|
|||||||
if P='' then exit;
|
if P='' then exit;
|
||||||
P:=Path+P+'/';
|
P:=Path+P+'/';
|
||||||
// placement
|
// placement
|
||||||
XMLConfig.SetValue(P+'WindowPlacement/Value',
|
XMLConfig.SetDeleteValue(P+'WindowPlacement/Value',
|
||||||
IDEWindowPlacementNames[fWindowPlacement]);
|
IDEWindowPlacementNames[fWindowPlacement],
|
||||||
|
IDEWindowPlacementNames[iwpRestoreWindowSize]);
|
||||||
// custom position
|
// custom position
|
||||||
XMLConfig.SetValue(P+'CustomPosition/Left',fLeft);
|
XMLConfig.SetDeleteValue(P+'CustomPosition/Left',fLeft,0);
|
||||||
XMLConfig.SetValue(P+'CustomPosition/Top',fTop);
|
XMLConfig.SetDeleteValue(P+'CustomPosition/Top',fTop,0);
|
||||||
XMLConfig.SetValue(P+'CustomPosition/Width',fWidth);
|
XMLConfig.SetDeleteValue(P+'CustomPosition/Width',fWidth,0);
|
||||||
XMLConfig.SetValue(P+'CustomPosition/Height',fHeight);
|
XMLConfig.SetDeleteValue(P+'CustomPosition/Height',fHeight,0);
|
||||||
// state
|
// state
|
||||||
XMLConfig.SetValue(P+'WindowState/Value',IDEWindowStateNames[fWindowState]);
|
XMLConfig.SetValue(P+'WindowState/Value',IDEWindowStateNames[fWindowState]);
|
||||||
// docking
|
// docking
|
||||||
XMLConfig.SetValue(P+'Docking/Parent',fDockParent);
|
XMLConfig.SetDeleteValue(P+'Docking/Parent',fDockParent,'');
|
||||||
XMLConfig.SetValue(P+'Docking/ChildCount',fDockChilds.Count);
|
XMLConfig.SetDeleteValue(P+'Docking/ChildCount',fDockChilds.Count,0);
|
||||||
for i:=0 to fDockChilds.Count-1 do begin
|
for i:=0 to fDockChilds.Count-1 do begin
|
||||||
XMLConfig.SetValue(P+'Docking/Child'+IntToStr(i),fDockChilds[i]);
|
XMLConfig.SetDeleteValue(P+'Docking/Child'+IntToStr(i),fDockChilds[i],'');
|
||||||
end;
|
end;
|
||||||
XMLConfig.SetValue(P+'DockMode/Value',IDEWindowDockModeNames[fDockMode]);
|
XMLConfig.SetValue(P+'DockMode/Value',IDEWindowDockModeNames[fDockMode]);
|
||||||
end;
|
end;
|
||||||
@ -1109,7 +1110,7 @@ procedure TIDEDialogLayoutList.SaveToXMLConfig(XMLConfig: TXMLConfig;
|
|||||||
const Path: string);
|
const Path: string);
|
||||||
var i: integer;
|
var i: integer;
|
||||||
begin
|
begin
|
||||||
XMLConfig.SetValue(Path+'/Count',Count);
|
XMLConfig.SetDeleteValue(Path+'/Count',Count,0);
|
||||||
for i:=0 to Count-1 do
|
for i:=0 to Count-1 do
|
||||||
Items[i].SaveToXMLConfig(XMLConfig,Path+'/Dialog'+IntToStr(i+1));
|
Items[i].SaveToXMLConfig(XMLConfig,Path+'/Dialog'+IntToStr(i+1));
|
||||||
end;
|
end;
|
||||||
|
@ -207,6 +207,7 @@ resourcestring
|
|||||||
|
|
||||||
lisMenuConfigCustomComps = 'Configure custom components';
|
lisMenuConfigCustomComps = 'Configure custom components';
|
||||||
lisMenuOpenInstalledPkg = 'Open installed package';
|
lisMenuOpenInstalledPkg = 'Open installed package';
|
||||||
|
lisMenuOpenRecentPkg = 'Open recent package';
|
||||||
|
|
||||||
lisMenuSettings = 'Configure custom tools ...';
|
lisMenuSettings = 'Configure custom tools ...';
|
||||||
lisMenuQuickSyntaxCheck = 'Quick syntax check';
|
lisMenuQuickSyntaxCheck = 'Quick syntax check';
|
||||||
|
@ -281,7 +281,8 @@ type
|
|||||||
|
|
||||||
// components menu
|
// components menu
|
||||||
itmCompsConfigCustomComps: TMenuItem;
|
itmCompsConfigCustomComps: TMenuItem;
|
||||||
itmOpenInstalledPkg: TMenuItem;
|
itmPkgOpenInstalled: TMenuItem;
|
||||||
|
itmPkgOpenRecent: TMenuItem;
|
||||||
|
|
||||||
// tools menu
|
// tools menu
|
||||||
itmToolConfigure: TMenuItem;
|
itmToolConfigure: TMenuItem;
|
||||||
@ -355,8 +356,13 @@ type
|
|||||||
function DoCheckFilesOnDisk: TModalResult; virtual; abstract;
|
function DoCheckFilesOnDisk: TModalResult; virtual; abstract;
|
||||||
function DoCheckAmbigiousSources(const AFilename: string;
|
function DoCheckAmbigiousSources(const AFilename: string;
|
||||||
Compiling: boolean): TModalResult;
|
Compiling: boolean): TModalResult;
|
||||||
|
function DoBackupFile(const Filename:string;
|
||||||
|
IsPartOfProject:boolean): TModalResult; virtual; abstract;
|
||||||
|
|
||||||
procedure UpdateWindowsMenu; virtual;
|
procedure UpdateWindowsMenu; virtual;
|
||||||
|
procedure SaveEnvironment; virtual; abstract;
|
||||||
|
procedure SetRecentSubMenu(ParentMenuItem: TMenuItem; FileList: TStringList;
|
||||||
|
OnClickEvent: TNotifyEvent); virtual;
|
||||||
procedure SaveSourceEditorChangesToCodeCache(PageIndex: integer); virtual; abstract;
|
procedure SaveSourceEditorChangesToCodeCache(PageIndex: integer); virtual; abstract;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1074,11 +1080,18 @@ begin
|
|||||||
mnuComponents.Add(CreateMenuSeparator);
|
mnuComponents.Add(CreateMenuSeparator);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
itmOpenInstalledPkg := TMenuItem.Create(Self);
|
itmPkgOpenInstalled := TMenuItem.Create(Self);
|
||||||
itmOpenInstalledPkg.Name:='itmOpenInstalledPkg';
|
itmPkgOpenInstalled.Name:='itmPkgOpenInstalled';
|
||||||
itmOpenInstalledPkg.Caption := lisMenuOpenInstalledPkg;
|
itmPkgOpenInstalled.Caption := lisMenuOpenInstalledPkg;
|
||||||
{$IFDEF EnablePkgs}
|
{$IFDEF EnablePkgs}
|
||||||
mnuComponents.Add(itmOpenInstalledPkg);
|
mnuComponents.Add(itmPkgOpenInstalled);
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
itmPkgOpenRecent := TMenuItem.Create(Self);
|
||||||
|
itmPkgOpenRecent.Name:='itmPkgOpenRecent';
|
||||||
|
itmPkgOpenRecent.Caption := lisMenuOpenRecentPkg;
|
||||||
|
{$IFDEF EnablePkgs}
|
||||||
|
mnuComponents.Add(itmPkgOpenRecent);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1261,7 +1274,6 @@ begin
|
|||||||
itmProjectNew.ShortCut:=CommandToShortCut(ecNewProject);
|
itmProjectNew.ShortCut:=CommandToShortCut(ecNewProject);
|
||||||
itmProjectNewFromFile.ShortCut:=CommandToShortCut(ecNewProjectFromFile);
|
itmProjectNewFromFile.ShortCut:=CommandToShortCut(ecNewProjectFromFile);
|
||||||
itmProjectOpen.ShortCut:=CommandToShortCut(ecOpenProject);
|
itmProjectOpen.ShortCut:=CommandToShortCut(ecOpenProject);
|
||||||
//itmProjectRecentOpen.ShortCut:=CommandToShortCut(ec);
|
|
||||||
itmProjectSave.ShortCut:=CommandToShortCut(ecSaveProject);
|
itmProjectSave.ShortCut:=CommandToShortCut(ecSaveProject);
|
||||||
itmProjectSaveAs.ShortCut:=CommandToShortCut(ecSaveProjectAs);
|
itmProjectSaveAs.ShortCut:=CommandToShortCut(ecSaveProjectAs);
|
||||||
itmProjectPublish.ShortCut:=CommandToShortCut(ecPublishProject);
|
itmProjectPublish.ShortCut:=CommandToShortCut(ecPublishProject);
|
||||||
@ -1284,7 +1296,7 @@ begin
|
|||||||
|
|
||||||
// components menu
|
// components menu
|
||||||
itmCompsConfigCustomComps.ShortCut:=CommandToShortCut(ecConfigCustomComps);
|
itmCompsConfigCustomComps.ShortCut:=CommandToShortCut(ecConfigCustomComps);
|
||||||
itmOpenInstalledPkg.ShortCut:=CommandToShortCut(ecOpenInstalledPkg);
|
itmPkgOpenInstalled.ShortCut:=CommandToShortCut(ecOpenInstalledPkg);
|
||||||
|
|
||||||
// tools menu
|
// tools menu
|
||||||
itmToolConfigure.ShortCut:=CommandToShortCut(ecExtToolSettings);
|
itmToolConfigure.ShortCut:=CommandToShortCut(ecExtToolSettings);
|
||||||
@ -1460,6 +1472,29 @@ begin
|
|||||||
WindowsList.Free;
|
WindowsList.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMainIDEBar.SetRecentSubMenu(ParentMenuItem: TMenuItem;
|
||||||
|
FileList: TStringList; OnClickEvent: TNotifyEvent);
|
||||||
|
var i: integer;
|
||||||
|
AMenuItem: TMenuItem;
|
||||||
|
begin
|
||||||
|
// create enough menuitems
|
||||||
|
while ParentMenuItem.Count<FileList.Count do begin
|
||||||
|
AMenuItem:=TMenuItem.Create(Self);
|
||||||
|
AMenuItem.Name:=
|
||||||
|
ParentMenuItem.Name+'Recent'+IntToStr(ParentMenuItem.Count);
|
||||||
|
ParentMenuItem.Add(AMenuItem);
|
||||||
|
end;
|
||||||
|
// delete unused menuitems
|
||||||
|
while ParentMenuItem.Count>FileList.Count do
|
||||||
|
ParentMenuItem.Items[ParentMenuItem.Count-1].Free;
|
||||||
|
// set captions and event
|
||||||
|
for i:=0 to FileList.Count-1 do begin
|
||||||
|
AMenuItem:=ParentMenuItem.Items[i];
|
||||||
|
AMenuItem.Caption := FileList[i];
|
||||||
|
AMenuItem.OnClick := OnClickEvent;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -51,21 +51,29 @@ type
|
|||||||
psfSaveAs
|
psfSaveAs
|
||||||
);
|
);
|
||||||
TPkgSaveFlags = set of TPkgSaveFlag;
|
TPkgSaveFlags = set of TPkgSaveFlag;
|
||||||
|
|
||||||
|
TPkgOpenFlag = (
|
||||||
|
pofAddToRecent
|
||||||
|
);
|
||||||
|
TPkgOpenFlags = set of TPkgOpenFlag;
|
||||||
|
|
||||||
TBasePkgManager = class(TComponent)
|
TBasePkgManager = class(TComponent)
|
||||||
public
|
public
|
||||||
procedure ConnectMainBarEvents; virtual; abstract;
|
procedure ConnectMainBarEvents; virtual; abstract;
|
||||||
procedure ConnectSourceNotebookEvents; virtual; abstract;
|
procedure ConnectSourceNotebookEvents; virtual; abstract;
|
||||||
procedure SetupMainBarShortCuts; virtual; abstract;
|
procedure SetupMainBarShortCuts; virtual; abstract;
|
||||||
|
procedure SetRecentPackagesMenu; virtual; abstract;
|
||||||
|
|
||||||
procedure LoadInstalledPackages; virtual; abstract;
|
procedure LoadInstalledPackages; virtual; abstract;
|
||||||
|
|
||||||
function ShowConfigureCustomComponents: TModalResult; virtual; abstract;
|
function ShowConfigureCustomComponents: TModalResult; virtual; abstract;
|
||||||
function DoNewPackage: TModalResult; virtual; abstract;
|
function DoNewPackage: TModalResult; virtual; abstract;
|
||||||
function DoShowOpenInstalledPckDlg: TModalResult; virtual; abstract;
|
function DoShowOpenInstalledPckDlg: TModalResult; virtual; abstract;
|
||||||
function DoOpenPackage(APackage: TLazPackage): TModalResult; virtual; abstract;
|
function DoOpenPackage(APackage: TLazPackage): TModalResult; virtual; abstract;
|
||||||
|
function DoOpenPackageFile(AFilename: string;
|
||||||
|
Flags: TPkgOpenFlags): TModalResult; virtual; abstract;
|
||||||
function DoSavePackage(APackage: TLazPackage;
|
function DoSavePackage(APackage: TLazPackage;
|
||||||
Flags: TPkgSaveFlags): TModalResult; virtual; abstract;
|
Flags: TPkgSaveFlags): TModalResult; virtual; abstract;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
|
@ -316,6 +316,7 @@ type
|
|||||||
procedure CheckInnerDependencies;
|
procedure CheckInnerDependencies;
|
||||||
procedure ShortenFilename(var ExpandedFilename: string);
|
procedure ShortenFilename(var ExpandedFilename: string);
|
||||||
procedure LongenFilename(var AFilename: string);
|
procedure LongenFilename(var AFilename: string);
|
||||||
|
function GetResolvedFilename: string;
|
||||||
procedure IterateComponentClasses(Event: TIterateComponentClassesEvent;
|
procedure IterateComponentClasses(Event: TIterateComponentClassesEvent;
|
||||||
WithUsedPackages: boolean);
|
WithUsedPackages: boolean);
|
||||||
procedure ConsistencyCheck;
|
procedure ConsistencyCheck;
|
||||||
@ -1298,6 +1299,12 @@ begin
|
|||||||
AFilename:=TrimFilename(Directory+AFilename);
|
AFilename:=TrimFilename(Directory+AFilename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TLazPackage.GetResolvedFilename: string;
|
||||||
|
begin
|
||||||
|
Result:=ReadAllLinks(FFilename,false);
|
||||||
|
if Result='' then Result:=FFilename;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TLazPackage.IterateComponentClasses(
|
procedure TLazPackage.IterateComponentClasses(
|
||||||
Event: TIterateComponentClassesEvent;
|
Event: TIterateComponentClassesEvent;
|
||||||
WithUsedPackages: boolean);
|
WithUsedPackages: boolean);
|
||||||
|
@ -104,6 +104,8 @@ type
|
|||||||
function FindUnitInAllPackages(const TheUnitName: string): TPkgFile;
|
function FindUnitInAllPackages(const TheUnitName: string): TPkgFile;
|
||||||
function FindFileInAllPackages(const TheFilename: string;
|
function FindFileInAllPackages(const TheFilename: string;
|
||||||
ResolveLinks: boolean): TPkgFile;
|
ResolveLinks: boolean): TPkgFile;
|
||||||
|
function FindPackageWithFilename(const TheFilename: string;
|
||||||
|
ResolveLinks: boolean): TLazPackage;
|
||||||
function CreateUniqueUnitName(const Prefix: string): string;
|
function CreateUniqueUnitName(const Prefix: string): string;
|
||||||
function PackageNameExists(const PkgName: string;
|
function PackageNameExists(const PkgName: string;
|
||||||
IgnorePackage: TLazPackage): boolean;
|
IgnorePackage: TLazPackage): boolean;
|
||||||
@ -348,6 +350,33 @@ begin
|
|||||||
Result:=nil;
|
Result:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TLazPackageGraph.FindPackageWithFilename(const TheFilename: string;
|
||||||
|
ResolveLinks: boolean): TLazPackage;
|
||||||
|
var
|
||||||
|
Cnt: Integer;
|
||||||
|
i: Integer;
|
||||||
|
AFilename: string;
|
||||||
|
begin
|
||||||
|
Cnt:=Count;
|
||||||
|
AFilename:=TheFilename;
|
||||||
|
if ResolveLinks then begin
|
||||||
|
AFilename:=ReadAllLinks(TheFilename,false);
|
||||||
|
if AFilename='' then AFilename:=TheFilename;
|
||||||
|
end;
|
||||||
|
for i:=0 to Cnt-1 do begin
|
||||||
|
Result:=Packages[i];
|
||||||
|
if Result.IsVirtual then continue;
|
||||||
|
if ResolveLinks then begin
|
||||||
|
if CompareFilenames(TheFilename,Result.GetResolvedFilename)=0 then
|
||||||
|
exit;
|
||||||
|
end else begin
|
||||||
|
if CompareFilenames(TheFilename,Result.Filename)=0 then
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result:=nil;
|
||||||
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.CreateUniqueUnitName(const Prefix: string): string;
|
function TLazPackageGraph.CreateUniqueUnitName(const Prefix: string): string;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
@ -44,7 +44,7 @@ uses
|
|||||||
{$IFDEF IDE_MEM_CHECK}
|
{$IFDEF IDE_MEM_CHECK}
|
||||||
MemCheck,
|
MemCheck,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Classes, SysUtils, LCLProc, Forms, Controls, FileCtrl, Dialogs,
|
Classes, SysUtils, LCLProc, Forms, Controls, FileCtrl, Dialogs, Menus,
|
||||||
CodeToolManager, CodeCache, Laz_XMLCfg,
|
CodeToolManager, CodeCache, Laz_XMLCfg,
|
||||||
KeyMapping, EnvironmentOpts, IDEProcs, ProjectDefs, InputHistory,
|
KeyMapping, EnvironmentOpts, IDEProcs, ProjectDefs, InputHistory,
|
||||||
IDEDefs, UComponentManMain, PackageEditor, AddToPackageDlg, PackageDefs,
|
IDEDefs, UComponentManMain, PackageEditor, AddToPackageDlg, PackageDefs,
|
||||||
@ -63,6 +63,7 @@ type
|
|||||||
procedure OnPackageEditorSavePackage(Sender: TObject);
|
procedure OnPackageEditorSavePackage(Sender: TObject);
|
||||||
procedure mnuConfigCustomCompsClicked(Sender: TObject);
|
procedure mnuConfigCustomCompsClicked(Sender: TObject);
|
||||||
procedure mnuOpenInstalledPckClicked(Sender: TObject);
|
procedure mnuOpenInstalledPckClicked(Sender: TObject);
|
||||||
|
procedure mnuOpenRecentPackageClicked(Sender: TObject);
|
||||||
private
|
private
|
||||||
function DoShowSavePackageAsDialog(APackage: TLazPackage): TModalResult;
|
function DoShowSavePackageAsDialog(APackage: TLazPackage): TModalResult;
|
||||||
public
|
public
|
||||||
@ -72,13 +73,18 @@ type
|
|||||||
procedure ConnectMainBarEvents; override;
|
procedure ConnectMainBarEvents; override;
|
||||||
procedure ConnectSourceNotebookEvents; override;
|
procedure ConnectSourceNotebookEvents; override;
|
||||||
procedure SetupMainBarShortCuts; override;
|
procedure SetupMainBarShortCuts; override;
|
||||||
|
procedure SetRecentPackagesMenu; override;
|
||||||
|
procedure AddFileToRecentPackages(const Filename: string);
|
||||||
|
|
||||||
procedure LoadInstalledPackages; override;
|
procedure LoadInstalledPackages; override;
|
||||||
|
function AddPackageToGraph(APackage: TLazPackage): TModalResult;
|
||||||
|
|
||||||
function ShowConfigureCustomComponents: TModalResult; override;
|
function ShowConfigureCustomComponents: TModalResult; override;
|
||||||
function DoNewPackage: TModalResult; override;
|
function DoNewPackage: TModalResult; override;
|
||||||
function DoShowOpenInstalledPckDlg: TModalResult; override;
|
function DoShowOpenInstalledPckDlg: TModalResult; override;
|
||||||
function DoOpenPackage(APackage: TLazPackage): TModalResult; override;
|
function DoOpenPackage(APackage: TLazPackage): TModalResult; override;
|
||||||
|
function DoOpenPackageFile(AFilename: string;
|
||||||
|
Flags: TPkgOpenFlags): TModalResult; override;
|
||||||
function DoSavePackage(APackage: TLazPackage;
|
function DoSavePackage(APackage: TLazPackage;
|
||||||
Flags: TPkgSaveFlags): TModalResult; override;
|
Flags: TPkgSaveFlags): TModalResult; override;
|
||||||
end;
|
end;
|
||||||
@ -180,6 +186,30 @@ begin
|
|||||||
DoShowOpenInstalledPckDlg;
|
DoShowOpenInstalledPckDlg;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPkgManager.mnuOpenRecentPackageClicked(Sender: TObject);
|
||||||
|
|
||||||
|
procedure UpdateEnvironment;
|
||||||
|
begin
|
||||||
|
SetRecentPackagesMenu;
|
||||||
|
MainIDE.SaveEnvironment;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
AFilename: string;
|
||||||
|
begin
|
||||||
|
AFileName:=ExpandFilename(TMenuItem(Sender).Caption);
|
||||||
|
if DoOpenPackageFile(AFilename,[pofAddToRecent])=mrOk then begin
|
||||||
|
UpdateEnvironment;
|
||||||
|
end else begin
|
||||||
|
// open failed
|
||||||
|
if not FileExists(AFilename) then begin
|
||||||
|
// file does not exist -> delete it from recent file list
|
||||||
|
RemoveFromRecentList(AFilename,EnvironmentOptions.RecentPackageFiles);
|
||||||
|
UpdateEnvironment;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TPkgManager.DoShowSavePackageAsDialog(
|
function TPkgManager.DoShowSavePackageAsDialog(
|
||||||
APackage: TLazPackage): TModalResult;
|
APackage: TLazPackage): TModalResult;
|
||||||
var
|
var
|
||||||
@ -272,11 +302,20 @@ begin
|
|||||||
'The file name "'+NewFilename+'" is used by'#13
|
'The file name "'+NewFilename+'" is used by'#13
|
||||||
+'the package "'+PkgFile.LazPackage.IDAsString+'"'#13
|
+'the package "'+PkgFile.LazPackage.IDAsString+'"'#13
|
||||||
+'in file "'+PkgFile.LazPackage.Filename+'".',
|
+'in file "'+PkgFile.LazPackage.Filename+'".',
|
||||||
mtInformation,[mbRetry,mbAbort],0);
|
mtWarning,[mbRetry,mbAbort],0);
|
||||||
if Result=mrAbort then exit;
|
if Result=mrAbort then exit;
|
||||||
continue; // try again
|
continue; // try again
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// check existing file
|
||||||
|
if (CompareFilenames(NewFileName,OldPkgFilename)<>0)
|
||||||
|
and FileExists(NewFileName) then begin
|
||||||
|
Result:=MessageDlg('Replace File',
|
||||||
|
'Replace existing file "'+NewFilename+'"?',
|
||||||
|
mtConfirmation,[mbOk,mbCancel],0);
|
||||||
|
if Result<>mrOk then exit;
|
||||||
|
end;
|
||||||
|
|
||||||
until Result<>mrRetry;
|
until Result<>mrRetry;
|
||||||
finally
|
finally
|
||||||
InputHistories.StoreFileDialogSettings(SaveDialog);
|
InputHistories.StoreFileDialogSettings(SaveDialog);
|
||||||
@ -303,7 +342,10 @@ begin
|
|||||||
'Delete old package file "'+OldPkgFilename+'"?',
|
'Delete old package file "'+OldPkgFilename+'"?',
|
||||||
mtConfirmation,[mbOk,mbCancel],0)=mrOk
|
mtConfirmation,[mbOk,mbCancel],0)=mrOk
|
||||||
then begin
|
then begin
|
||||||
if not DeleteFile(OldPkgFilename) then begin
|
if DeleteFile(OldPkgFilename) then begin
|
||||||
|
RemoveFromRecentList(OldPkgFilename,
|
||||||
|
EnvironmentOptions.RecentPackageFiles);
|
||||||
|
end else begin
|
||||||
MessageDlg('Delete failed',
|
MessageDlg('Delete failed',
|
||||||
'Deleting of file "'+OldPkgFilename+'"'
|
'Deleting of file "'+OldPkgFilename+'"'
|
||||||
+' failed.',mtError,[mbOk],0);
|
+' failed.',mtError,[mbOk],0);
|
||||||
@ -346,7 +388,7 @@ procedure TPkgManager.ConnectMainBarEvents;
|
|||||||
begin
|
begin
|
||||||
with MainIDE do begin
|
with MainIDE do begin
|
||||||
itmCompsConfigCustomComps.OnClick :=@mnuConfigCustomCompsClicked;
|
itmCompsConfigCustomComps.OnClick :=@mnuConfigCustomCompsClicked;
|
||||||
itmOpenInstalledPkg.OnClick :=@mnuOpenInstalledPckClicked;
|
itmPkgOpenInstalled.OnClick :=@mnuOpenInstalledPckClicked;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -360,6 +402,21 @@ begin
|
|||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPkgManager.SetRecentPackagesMenu;
|
||||||
|
begin
|
||||||
|
writeln('TPkgManager.SetRecentPackagesMenu ',EnvironmentOptions.RecentPackageFiles.Count);
|
||||||
|
MainIDE.SetRecentSubMenu(MainIDE.itmPkgOpenRecent,
|
||||||
|
EnvironmentOptions.RecentPackageFiles,@mnuOpenRecentPackageClicked);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPkgManager.AddFileToRecentPackages(const Filename: string);
|
||||||
|
begin
|
||||||
|
AddToRecentList(Filename,EnvironmentOptions.RecentPackageFiles,
|
||||||
|
EnvironmentOptions.MaxRecentPackageFiles);
|
||||||
|
SetRecentPackagesMenu;
|
||||||
|
MainIDE.SaveEnvironment;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPkgManager.LoadInstalledPackages;
|
procedure TPkgManager.LoadInstalledPackages;
|
||||||
begin
|
begin
|
||||||
// base packages
|
// base packages
|
||||||
@ -370,6 +427,36 @@ begin
|
|||||||
// ToDo
|
// ToDo
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPkgManager.AddPackageToGraph(APackage: TLazPackage
|
||||||
|
): TModalResult;
|
||||||
|
var
|
||||||
|
ConflictPkg: TLazPackage;
|
||||||
|
begin
|
||||||
|
// check Package Name
|
||||||
|
if not IsValidIdent(APackage.Name) then begin
|
||||||
|
Result:=MessageDlg('Invalid Package Name',
|
||||||
|
'The package name "'+APackage.Name+'" of'#13
|
||||||
|
+'the file "'+APackage.Filename+'" is invalid.',
|
||||||
|
mtError,[mbCancel,mbAbort],0);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// check if Package with same name is already loaded
|
||||||
|
ConflictPkg:=PackageGraph.FindAPackageWithName(APackage.Name,nil);
|
||||||
|
if ConflictPkg<>nil then begin
|
||||||
|
Result:=MessageDlg('Package Name already loaded',
|
||||||
|
'There is already a package with the name "'+APackage.Name+'" loaded'#13
|
||||||
|
+'from file "'+ConflictPkg.Filename+'".',
|
||||||
|
mtError,[mbCancel,mbAbort],0);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// add to graph
|
||||||
|
PackageGraph.AddPackage(APackage);
|
||||||
|
|
||||||
|
Result:=mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
function TPkgManager.ShowConfigureCustomComponents: TModalResult;
|
function TPkgManager.ShowConfigureCustomComponents: TModalResult;
|
||||||
begin
|
begin
|
||||||
Result:=ShowConfigureCustomComponentDlg(EnvironmentOptions.LazarusDirectory);
|
Result:=ShowConfigureCustomComponentDlg(EnvironmentOptions.LazarusDirectory);
|
||||||
@ -410,6 +497,50 @@ begin
|
|||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPkgManager.DoOpenPackageFile(AFilename: string; Flags: TPkgOpenFlags
|
||||||
|
): TModalResult;
|
||||||
|
var
|
||||||
|
APackage: TLazPackage;
|
||||||
|
XMLConfig: TXMLConfig;
|
||||||
|
begin
|
||||||
|
AFilename:=CleanAndExpandFilename(AFilename);
|
||||||
|
|
||||||
|
// check if package is already loaded
|
||||||
|
APackage:=PackageGraph.FindPackageWithFilename(AFilename,true);
|
||||||
|
if APackage=nil then begin
|
||||||
|
// package not yet loaded
|
||||||
|
|
||||||
|
// create a new package
|
||||||
|
Result:=mrCancel;
|
||||||
|
APackage:=TLazPackage.Create;
|
||||||
|
try
|
||||||
|
// load the package file
|
||||||
|
APackage.Filename:=AFilename;
|
||||||
|
try
|
||||||
|
XMLConfig:=TXMLConfig.Create(AFilename);
|
||||||
|
try
|
||||||
|
APackage.LoadFromXMLConfig(XMLConfig,'Package/');
|
||||||
|
finally
|
||||||
|
XMLConfig.Free;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on E: Exception do begin
|
||||||
|
Result:=MessageDlg('Error Reading Package',
|
||||||
|
'Unable to read package file "'+APackage.Filename+'".',
|
||||||
|
mtError,[mbAbort,mbCancel],0);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result:=AddPackageToGraph(APackage);
|
||||||
|
finally
|
||||||
|
if Result<>mrOk then APackage.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result:=DoOpenPackage(APackage);
|
||||||
|
end;
|
||||||
|
|
||||||
function TPkgManager.DoSavePackage(APackage: TLazPackage;
|
function TPkgManager.DoSavePackage(APackage: TLazPackage;
|
||||||
Flags: TPkgSaveFlags): TModalResult;
|
Flags: TPkgSaveFlags): TModalResult;
|
||||||
var
|
var
|
||||||
@ -438,13 +569,18 @@ begin
|
|||||||
if Result<>mrOk then exit;
|
if Result<>mrOk then exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Result:=MainIDE.DoBackupFile(APackage.Filename,false);
|
||||||
|
if Result=mrAbort then exit;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
Result:=mrCancel;
|
|
||||||
try
|
try
|
||||||
XMLConfig:=TXMLConfig.Create(APackage.Filename);
|
XMLConfig:=TXMLConfig.Create(APackage.Filename);
|
||||||
APackage.SaveToXMLConfig(XMLConfig,'Package/');
|
try
|
||||||
XMLConfig.Flush;
|
APackage.SaveToXMLConfig(XMLConfig,'Package/');
|
||||||
XMLConfig.Free;
|
XMLConfig.Flush;
|
||||||
|
finally
|
||||||
|
XMLConfig.Free;
|
||||||
|
end;
|
||||||
except
|
except
|
||||||
on E: Exception do begin
|
on E: Exception do begin
|
||||||
Result:=MessageDlg('Error Writing Package',
|
Result:=MessageDlg('Error Writing Package',
|
||||||
@ -457,6 +593,11 @@ begin
|
|||||||
|
|
||||||
// success
|
// success
|
||||||
APackage.Modified:=false;
|
APackage.Modified:=false;
|
||||||
|
// add to recent
|
||||||
|
if (psfSaveAs in Flags) then begin
|
||||||
|
AddFileToRecentPackages(APackage.Filename);
|
||||||
|
end;
|
||||||
|
|
||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user