mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 07:59:44 +02:00
IDE: Move adding default initial recent projects out from EnvironmentOptions.
This commit is contained in:
parent
967034aff5
commit
b99f4dc28d
@ -376,7 +376,7 @@ end;
|
||||
|
||||
constructor TBuildManager.Create(AOwner: TComponent);
|
||||
begin
|
||||
EnvironmentOptions := TEnvironmentOptions.Create(Application.ExeName);
|
||||
EnvironmentOptions := TEnvironmentOptions.Create;
|
||||
IDEEnvironmentOptions := EnvironmentOptions;
|
||||
EnvironmentOptions.IsGlobalMode:=@EnvironmentOptionsIsGlobalMode;
|
||||
|
||||
|
@ -286,7 +286,7 @@ begin
|
||||
AFilename:=SaveDialog.Filename;
|
||||
if ExtractFileExt(AFilename)='' then
|
||||
AFilename:=AFilename+'.lds';
|
||||
AnEnvironmentOptions := TEnvironmentOptions.Create(Application.ExeName);
|
||||
AnEnvironmentOptions := TEnvironmentOptions.Create;
|
||||
try
|
||||
AnEnvironmentOptions.Filename := AFilename;
|
||||
DoSaveSettings(AnEnvironmentOptions);
|
||||
@ -323,7 +323,7 @@ begin
|
||||
+'|'+dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask;
|
||||
if OpenDialog.Execute then
|
||||
begin
|
||||
AnEnvironmentOptions := TEnvironmentOptions.Create(Application.ExeName);
|
||||
AnEnvironmentOptions := TEnvironmentOptions.Create;
|
||||
try
|
||||
AnEnvironmentOptions.Filename := OpenDialog.Filename;
|
||||
AnEnvironmentOptions.Load(true);
|
||||
|
@ -1219,6 +1219,7 @@
|
||||
<Unit>
|
||||
<Filename Value="helpoptions.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="HelpOptions"/>
|
||||
</Unit>
|
||||
<Unit>
|
||||
<Filename Value="findinfilesdlg.pas"/>
|
||||
|
@ -1248,8 +1248,9 @@ begin
|
||||
CreateConfig;
|
||||
Load(false);
|
||||
end;
|
||||
AddDefaultRecentProjects; // Add some initial recent projects.
|
||||
|
||||
// read language and lazarusdir paramters, needed for translation
|
||||
// read language and lazarusdir parameters, needed for translation
|
||||
if Application.HasOption('language') then
|
||||
begin
|
||||
debugln('Hint: (lazarus) [TMainIDE.LoadGlobalOptions] overriding language with command line: ',
|
||||
|
@ -247,7 +247,6 @@ type
|
||||
|
||||
TEnvironmentOptions = class(TIDEEnvironmentOptions)
|
||||
private
|
||||
FExePath: string; // ExtractFilePath(Application.ExeName)
|
||||
FFppkgCheck: boolean;
|
||||
fRegisteredSubConfig: TObjectList;
|
||||
// config file
|
||||
@ -307,7 +306,7 @@ type
|
||||
FNewProjectTemplateAtStart: string;
|
||||
FMultipleInstances: TIDEMultipleInstancesOption;
|
||||
// Prevent repopulating Recent project files menu with example projects if it was already cleared up.
|
||||
FAlreadyPopulatedRecentFiles : Boolean;
|
||||
FAlreadyPopulatedRecentFiles: Boolean;
|
||||
//other recent settings
|
||||
FLastEventMethodCCResult: TCodeCreationDlgResult;
|
||||
FLastVariableCCResult: TCodeCreationDlgResult;
|
||||
@ -371,7 +370,7 @@ type
|
||||
function SubConfigCount: integer;
|
||||
property SubConfig[Index: Integer]: TIDESubOptions read GetSubConfig;
|
||||
public
|
||||
constructor Create(AExeName: string);
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
procedure Load(OnlyDesktop: boolean);
|
||||
procedure Save(OnlyDesktop: boolean);
|
||||
@ -477,8 +476,8 @@ type
|
||||
write FNewProjectTemplateAtStart;
|
||||
property MultipleInstances: TIDEMultipleInstancesOption read FMultipleInstances
|
||||
write FMultipleInstances;
|
||||
property FileDialogFilter: string read FFileDialogFilter write FFileDialogFilter;
|
||||
|
||||
property AlreadyPopulatedRecentFiles: Boolean read FAlreadyPopulatedRecentFiles
|
||||
write FAlreadyPopulatedRecentFiles;
|
||||
// other recent settings
|
||||
property LastEventMethodCCResult: TCodeCreationDlgResult
|
||||
read FLastEventMethodCCResult write FLastEventMethodCCResult;
|
||||
@ -516,8 +515,9 @@ type
|
||||
// comboboxes
|
||||
property DropDownCount: Integer read FDropDownCount write FDropDownCount;
|
||||
// default template for each 'new item' category: Name=Path, Value=TemplateName
|
||||
property NewUnitTemplate: string read FNewUnitTemplate write FNewUnitTemplate;
|
||||
property NewFormTemplate: string read FNewFormTemplate write FNewFormTemplate;
|
||||
property NewUnitTemplate: string read FNewUnitTemplate write FNewUnitTemplate;
|
||||
property FileDialogFilter: string read FFileDialogFilter write FFileDialogFilter;
|
||||
end;
|
||||
|
||||
var
|
||||
@ -658,12 +658,11 @@ end;
|
||||
|
||||
{ TEnvironmentOptions }
|
||||
|
||||
constructor TEnvironmentOptions.Create(AExeName: string);
|
||||
constructor TEnvironmentOptions.Create;
|
||||
var
|
||||
o: TEnvOptParseType;
|
||||
begin
|
||||
inherited Create;
|
||||
FExePath := ExtractFilePath(AExeName);
|
||||
fRegisteredSubConfig := TObjectList.Create(False);
|
||||
for o:=low(FParseValues) to high(FParseValues) do
|
||||
FParseValues[o].ParseStamp:=CTInvalidChangeStamp;
|
||||
@ -943,18 +942,6 @@ end;
|
||||
|
||||
procedure TEnvironmentOptions.Load(OnlyDesktop: boolean);
|
||||
|
||||
procedure AddRecentProjectInitial(aProjPath, aProjFile: string);
|
||||
// Add a project to the list of recent projects if the project has write access.
|
||||
// The check can be removed when the IDE allows compiling read-only projects.
|
||||
var
|
||||
WholeFilePath: String;
|
||||
begin
|
||||
aProjPath:=SwitchPathDelims(aProjPath, True);
|
||||
WholeFilePath:=FExePath + aProjPath + aProjFile;
|
||||
if FileIsWritable(aProjPath) and FileIsWritable(WholeFilePath) then
|
||||
AddToRecentList(WholeFilePath,FRecentProjectFiles,FMaxRecentProjectFiles,rltFile);
|
||||
end;
|
||||
|
||||
procedure LoadPascalFileExt(const Path: string);
|
||||
begin
|
||||
fPascalFileExtension:=PascalExtToType(FXMLCfg.GetValue(
|
||||
@ -971,7 +958,7 @@ procedure TEnvironmentOptions.Load(OnlyDesktop: boolean);
|
||||
CCResult.Location:=CreateCodeLocationNameToLocation(FXMLCfg.GetValue(
|
||||
Path+'/Location',CreateCodeLocationNames[cclLocal]));
|
||||
end;
|
||||
|
||||
|
||||
var
|
||||
Path, CurPath: String;
|
||||
i: Integer;
|
||||
@ -1052,16 +1039,6 @@ begin
|
||||
FUseUnitDlgOptions.AllUnits:=FXMLCfg.GetValue(Path+'Recent/UseUnitDlg/AllUnits',False);
|
||||
FUseUnitDlgOptions.AddToImplementation:=FXMLCfg.GetValue(Path+'Recent/UseUnitDlg/AddToImplementation',False);
|
||||
|
||||
// Add example projects to an empty project list if examples have write access
|
||||
if (FRecentProjectFiles.count=0) and (not FAlreadyPopulatedRecentFiles) then begin
|
||||
AddRecentProjectInitial('examples/jpeg/', 'jpegexample.lpi');
|
||||
AddRecentProjectInitial('examples/sprites/', 'spriteexample.lpi');
|
||||
AddRecentProjectInitial('examples/openglcontrol/', 'openglcontrol_demo.lpi');
|
||||
AddRecentProjectInitial('examples/imagelist/', 'project1.lpi');
|
||||
AddRecentProjectInitial('examples/', 'hello.lpi');
|
||||
FAlreadyPopulatedRecentFiles := True;
|
||||
end;
|
||||
|
||||
// external tools
|
||||
if Assigned(fExternalUserTools) then
|
||||
fExternalUserTools.Load(FConfigStore,Path+'ExternalTools/');
|
||||
|
@ -32,7 +32,7 @@ unit SourceFileManager;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, typinfo, math, fpjson, Laz_AVL_Tree,
|
||||
Classes, SysUtils, TypInfo, Math, fpjson, Laz_AVL_Tree,
|
||||
// LCL
|
||||
Controls, Forms, Dialogs, LCLIntf, LCLType, LclStrConsts,
|
||||
LResources, LCLMemManager,
|
||||
@ -52,7 +52,7 @@ uses
|
||||
IdeIntfStrConsts, ObjectInspector, SrcEditorIntf, EditorSyntaxHighlighterDef,
|
||||
UnitResources, ComponentReg, InputHistory,
|
||||
// IdeConfig
|
||||
EnvironmentOpts, SearchPathProcs, TransferMacros,
|
||||
EnvironmentOpts, SearchPathProcs, TransferMacros, RecentListProcs,
|
||||
// IDE
|
||||
IDEProcs, DialogProcs, IDEProtocol, LazarusIDEStrConsts, NewDialog,
|
||||
NewProjectDlg, MainBase, MainBar, MainIntf, Project, ProjectDefs,
|
||||
@ -223,6 +223,7 @@ function FindSourceFileImpl(const AFilename, BaseDirectory: string;
|
||||
function FindUnitsOfOwnerImpl(TheOwner: TObject; Flags: TFindUnitsOfOwnerFlags): TStrings;
|
||||
// project
|
||||
function AddActiveUnitToProject: TModalResult;
|
||||
procedure AddDefaultRecentProjects;
|
||||
function AddUnitToProject(const AEditor: TSourceEditorInterface): TModalResult;
|
||||
function RemoveFromProjectDialog: TModalResult;
|
||||
function InitNewProject(ProjectDesc: TProjectDescriptor): TModalResult;
|
||||
@ -1773,6 +1774,35 @@ begin
|
||||
Result := AddUnitToProject(nil);
|
||||
end;
|
||||
|
||||
procedure AddRecentProject(aProjPath, aProjFile: string);
|
||||
// Add a project to the list of recent projects if the project has write access.
|
||||
// The check can be removed when the IDE allows compiling read-only projects.
|
||||
var
|
||||
WholeFilePath: String;
|
||||
begin
|
||||
aProjPath := SwitchPathDelims(aProjPath, True);
|
||||
WholeFilePath := ExtractFilePath(Application.ExeName) + aProjPath + aProjFile;
|
||||
if FileIsWritable(aProjPath) and FileIsWritable(WholeFilePath) then
|
||||
with EnvironmentOptions do
|
||||
AddToRecentList(WholeFilePath, RecentProjectFiles, MaxRecentProjectFiles, rltFile);
|
||||
end;
|
||||
|
||||
procedure AddDefaultRecentProjects;
|
||||
begin
|
||||
// Add some example projects to an empty project list.
|
||||
with EnvironmentOptions do
|
||||
if (RecentProjectFiles.Count=0) and not AlreadyPopulatedRecentFiles then
|
||||
begin
|
||||
DebugLn('AddDefaultRecentProjects: Adding default projects');
|
||||
AddRecentProject('examples/jpeg/', 'jpegexample.lpi');
|
||||
AddRecentProject('examples/sprites/', 'spriteexample.lpi');
|
||||
AddRecentProject('examples/openglcontrol/', 'openglcontrol_demo.lpi');
|
||||
AddRecentProject('examples/imagelist/', 'project1.lpi');
|
||||
AddRecentProject('examples/', 'hello.lpi');
|
||||
AlreadyPopulatedRecentFiles := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
function AddUnitToProject(const AEditor: TSourceEditorInterface): TModalResult;
|
||||
var
|
||||
ActiveSourceEditor: TSourceEditor;
|
||||
|
Loading…
Reference in New Issue
Block a user