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