[Developer] Fixup persistence of untitled project state

This commit is contained in:
Marc Durdin 2018-09-05 09:53:53 +10:00
parent bff538f23f
commit b82cae2b8c
2 changed files with 48 additions and 16 deletions

View file

@ -111,7 +111,7 @@ procedure TAppHttpResponder.RespondProject(doc: string; AContext: TIdContext;
end;
// Transform the .kpj
with TProject.Create(path) do
with TProject.Create(path, (path='')) do
try
AResponseInfo.ContentType := 'text/html; charset=UTF-8';
AResponseInfo.ContentText := Render;
@ -196,16 +196,10 @@ procedure TAppHttpResponder.RespondProject(doc: string; AContext: TIdContext;
Exit;
end;
FProject := TProject.Create(path, False);
FProject := TProject.Create(path, (path = ''));
try
FProject.DisplayState := displayState;
//TODO: file in-use conflicts
with TProjectSaver.Create(FProject, path) do
try
SaveUser;
finally
Free;
end;
FProject.SaveUser;
finally
FProject.Free;
end;

View file

@ -122,12 +122,13 @@ type
procedure MRUChange(Sender: TObject);
procedure UpdateFileParameters;
procedure LoadPersistedUntitledProject;
procedure PersistUntitledProjectUser;
protected
procedure DoRefresh; virtual;
procedure DoRefreshCaption; virtual;
property SavedFileName: string read GetSavedFileName;
property State: TProjectState read FState;
property SavedFileName: string read GetSavedFileName;
public
procedure Log(AState: TProjectLogState; Filename, Msg: string); virtual;
@ -143,6 +144,7 @@ type
function Load: Boolean; virtual; // I4694
function Save: Boolean; virtual; // I4694
function SaveUser: Boolean; virtual; // I4694
class function StandardTemplatePath: string;
class function StringsTemplatePath: string;
@ -813,6 +815,22 @@ begin
FState := psReady;
end;
procedure TProject.PersistUntitledProjectUser;
var
path: string;
begin
path := GetFolderPath(CSIDL_APPDATA) + SFolderKeymanDeveloper + '\Untitled.kps';
FState := psSaving;
with TProjectSaver.Create(Self, path) do
try
SaveUser;
finally
Free;
end;
FState := psReady;
end;
procedure TProject.Refresh; // I4687
begin
DoRefresh;
@ -940,16 +958,36 @@ end;
function TProject.Save: Boolean;
begin
FState := psSaving;
//Result := False;
with TProjectSaver.Create(Self, SavedFileName) do
try
Execute;
with TProjectSaver.Create(Self, SavedFileName) do
try
Execute;
finally
Free;
end;
finally
Free;
FState := psReady;
end;
FState := psReady;
Result := True;
end;
function TProject.SaveUser: Boolean;
begin
FState := psSaving;
try
if FFilename = '' then
PersistUntitledProjectUser
else
with TProjectSaver.Create(Self, SavedFileName) do
try
SaveUser;
finally
Free;
end;
finally
FState := psReady;
end;
Result := True;
end;