From 11ae17c7c07eefe2b7bfa99afaf20dfcc3d5652b Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 25 Nov 2023 16:14:14 +1000 Subject: [PATCH] chore(developer): require project file to exist Reverts some of the version 2.0 project functionality, as there are a number of challenges around populating files for folders that don't have project definitions, particularly if user attempts to load a folder that is not a project folder after all but happens, e.g. to have a source folder in it. --- developer/src/tike/actions/dmActionsMain.dfm | 12 +----------- developer/src/tike/actions/dmActionsMain.pas | 11 +---------- developer/src/tike/main/UfrmMain.dfm | 3 --- developer/src/tike/main/UfrmMain.pas | 1 - ...eyman.Developer.System.Project.ProjectFile.pas | 3 --- ...man.Developer.System.Project.ProjectLoader.pas | 15 +-------------- ...yman.Developer.System.Project.ProjectSaver.pas | 7 ------- .../Keyman.Developer.UI.Project.UfrmProject.pas | 2 -- developer/src/tike/xml/project/globalwelcome.xsl | 4 ---- 9 files changed, 3 insertions(+), 55 deletions(-) diff --git a/developer/src/tike/actions/dmActionsMain.dfm b/developer/src/tike/actions/dmActionsMain.dfm index 09890f9061..ac5546a95d 100644 --- a/developer/src/tike/actions/dmActionsMain.dfm +++ b/developer/src/tike/actions/dmActionsMain.dfm @@ -32,17 +32,6 @@ object modActionsMain: TmodActionsMain OnExecute = actViewCharacterIdentifierExecute OnUpdate = actViewCharacterIdentifierUpdate end - object actProjectOpenFolder: TBrowseForFolder - Category = 'Project' - Caption = 'Open Project Folder...' - DialogCaption = 'Open Project Folder' - BrowseOptions = [] - BrowseOptionsEx = [] - Hint = 'Open Project Folder|Opens an existing project folder' - ShortCut = 24655 - UseFileDialog = True - OnAccept = actProjectOpenFolderAccept - end object actFileOpen: TFileOpen Category = 'File' Caption = '&Open...' @@ -259,6 +248,7 @@ object modActionsMain: TmodActionsMain Dialog.Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] Hint = 'Open Project|Opens an existing project' ImageIndex = 28 + ShortCut = 24655 OnAccept = actProjectOpenAccept end object actProjectAddCurrentEditorFile: TAction diff --git a/developer/src/tike/actions/dmActionsMain.pas b/developer/src/tike/actions/dmActionsMain.pas index 2230d89c58..5b0b16c418 100644 --- a/developer/src/tike/actions/dmActionsMain.pas +++ b/developer/src/tike/actions/dmActionsMain.pas @@ -138,7 +138,6 @@ type actToolsWebConfigure: TAction; actToolsWebStartServer: TAction; actToolsWebStopServer: TAction; - actProjectOpenFolder: TBrowseForFolder; procedure actFileNewExecute(Sender: TObject); procedure DataModuleCreate(Sender: TObject); procedure actFileOpenAccept(Sender: TObject); @@ -238,7 +237,6 @@ type procedure actToolsWebStartServerUpdate(Sender: TObject); procedure actToolsWebStopServerExecute(Sender: TObject); procedure actToolsWebStopServerUpdate(Sender: TObject); - procedure actProjectOpenFolderAccept(Sender: TObject); private function CheckFilenameConventions(FileName: string): Boolean; function SaveAndCloseAllFiles: Boolean; @@ -593,17 +591,10 @@ begin OpenProject(actProjectOpen.Dialog.FileName); end; -procedure TmodActionsMain.actProjectOpenFolderAccept(Sender: TObject); -begin - if not frmKeymanDeveloper.BeforeOpenProject then - Exit; - OpenProject(actProjectOpenFolder.Folder); -end; - procedure TmodActionsMain.OpenProject(FileName: WideString); begin FileName := ExpandUNCFileName(FileName); - if (FileName <> '') and not FileExists(FileName) and not DirectoryExists(FileName) then + if (FileName <> '') and not FileExists(FileName) then begin ShowMessage('The project '+FileName+' does not exist.'); Exit; diff --git a/developer/src/tike/main/UfrmMain.dfm b/developer/src/tike/main/UfrmMain.dfm index 311c1fd67d..6b331d1e96 100644 --- a/developer/src/tike/main/UfrmMain.dfm +++ b/developer/src/tike/main/UfrmMain.dfm @@ -2935,9 +2935,6 @@ inherited frmKeymanDeveloper: TfrmKeymanDeveloper object OpenProject1: TMenuItem Action = modActionsMain.actProjectOpen end - object OpenProjectFolder1: TMenuItem - Action = modActionsMain.actProjectOpenFolder - end object CloseProject1: TMenuItem Action = modActionsMain.actProjectClose end diff --git a/developer/src/tike/main/UfrmMain.pas b/developer/src/tike/main/UfrmMain.pas index b8b8d526ab..0c3f160a70 100644 --- a/developer/src/tike/main/UfrmMain.pas +++ b/developer/src/tike/main/UfrmMain.pas @@ -314,7 +314,6 @@ type Stopserver1: TMenuItem; ToolButton13: TToolButton; ToolButton16: TToolButton; - OpenProjectFolder1: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure mnuFileClick(Sender: TObject); diff --git a/developer/src/tike/project/Keyman.Developer.System.Project.ProjectFile.pas b/developer/src/tike/project/Keyman.Developer.System.Project.ProjectFile.pas index a5f55a0470..3f3fd0e311 100644 --- a/developer/src/tike/project/Keyman.Developer.System.Project.ProjectFile.pas +++ b/developer/src/tike/project/Keyman.Developer.System.Project.ProjectFile.pas @@ -845,9 +845,6 @@ begin then Result := LoadFromXML(FileName) else Result := ImportFromIni(FileName); end - else if DirectoryExists(ExtractFilePath(FileName)) then - // This will fall back to a 2.0 folder load - Result := LoadFromXML(FileName) else begin Result := False; diff --git a/developer/src/tike/project/Keyman.Developer.System.Project.ProjectLoader.pas b/developer/src/tike/project/Keyman.Developer.System.Project.ProjectLoader.pas index 1c8d0c425d..b31240631b 100644 --- a/developer/src/tike/project/Keyman.Developer.System.Project.ProjectLoader.pas +++ b/developer/src/tike/project/Keyman.Developer.System.Project.ProjectLoader.pas @@ -48,7 +48,6 @@ type FFileName: string; FProject: TProject; procedure LoadUser; - procedure LoadDefaultProjectFromFolder; procedure LoadProjectFromFile; // I4698 public constructor Create(AProject: TProject; AFileName: string); @@ -80,21 +79,9 @@ end; procedure TProjectLoader.Execute; // I4698 begin - if FileExists(FFileName) or (FFileName = '') - then LoadProjectFromFile - else LoadDefaultProjectFromFolder; + LoadProjectFromFile; end; -procedure TProjectLoader.LoadDefaultProjectFromFolder; -begin - FProject.Options.Assign(DefaultProjectOptions[pv20]); - if not FProject.PopulateFiles then - // TODO: This seems somewhat arbitrary and troublesome. Better to load the - // folder and give warnings about file layout - raise EProjectLoader.Create('Not a Keyman Developer project folder'); -end; - - procedure TProjectLoader.LoadProjectFromFile; var n, i: Integer; diff --git a/developer/src/tike/project/Keyman.Developer.System.Project.ProjectSaver.pas b/developer/src/tike/project/Keyman.Developer.System.Project.ProjectSaver.pas index 20b85e3cfd..40d8b30191 100644 --- a/developer/src/tike/project/Keyman.Developer.System.Project.ProjectSaver.pas +++ b/developer/src/tike/project/Keyman.Developer.System.Project.ProjectSaver.pas @@ -86,13 +86,6 @@ var filenode, node, root: IXMLNode; defopts: TProjectOptionsRecord; begin - if FProject.IsDefaultProject(pv20) and (FFileName <> '') then - begin - if FileExists(FFileName) then - System.SysUtils.DeleteFile(FFileName); - Exit; - end; - defopts := DefaultProjectOptions[FProject.Options.Version]; doc := NewXMLDocument(); diff --git a/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas b/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas index ba73eaf68c..7a8605040c 100644 --- a/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas +++ b/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas @@ -349,8 +349,6 @@ begin modActionsMain.actProjectNew.Execute else if Command = 'openproject' then modActionsMain.actProjectOpen.Execute - else if Command = 'openprojectfolder' then - modActionsMain.actProjectOpenFolder.Execute else if Command = 'editfile' then // MRU begin if SelectedMRUFileName <> '' then diff --git a/developer/src/tike/xml/project/globalwelcome.xsl b/developer/src/tike/xml/project/globalwelcome.xsl index 6f956bd233..aecd70d90f 100644 --- a/developer/src/tike/xml/project/globalwelcome.xsl +++ b/developer/src/tike/xml/project/globalwelcome.xsl @@ -57,10 +57,6 @@ Open Existing Project... keyman:openproject - - Open Existing Project Folder... - keyman:openprojectfolder -