diff --git a/developer/js/source/package-compiler/kmp-compiler.ts b/developer/js/source/package-compiler/kmp-compiler.ts index a744ae03bf..1aaa3f7098 100644 --- a/developer/js/source/package-compiler/kmp-compiler.ts +++ b/developer/js/source/package-compiler/kmp-compiler.ts @@ -91,7 +91,7 @@ export default class KmpCompiler { if(kps.lexicalModels && kps.lexicalModels.lexicalModel) { kmp.lexicalModels = arrayWrap(kps.lexicalModels.lexicalModel).map((model: KpsFileLexicalModel) => { - return { name:model.name, id:model.iD, version:model.version, languages: kpsLanguagesToKmpLanguages(arrayWrap(model.languages.language) as KpsFileLanguage[]) } + return { name:model.name, id:model.iD, languages: kpsLanguagesToKmpLanguages(arrayWrap(model.languages.language) as KpsFileLanguage[]) } }); } diff --git a/developer/js/source/package-compiler/kmp-json-file.ts b/developer/js/source/package-compiler/kmp-json-file.ts index d84dda7adf..da47567dfb 100644 --- a/developer/js/source/package-compiler/kmp-json-file.ts +++ b/developer/js/source/package-compiler/kmp-json-file.ts @@ -45,7 +45,6 @@ interface KmpJsonFileContentFile { interface KmpJsonFileLexicalModel { name: string; id: string; - version: string; languages: KmpJsonFileLanguage[]; } @@ -67,7 +66,7 @@ interface KmpJsonFileKeyboard { interface KmpJsonFileStartMenu { folder?: string; addUninstallEntry?: boolean; - items?: KmpJsonFileStartMenuItem[]; + items?: KmpJsonFileStartMenuItem[]; } interface KmpJsonFileStartMenuItem { diff --git a/developer/js/source/package-compiler/kps-file.ts b/developer/js/source/package-compiler/kps-file.ts index b178e60e81..91b8d04727 100644 --- a/developer/js/source/package-compiler/kps-file.ts +++ b/developer/js/source/package-compiler/kps-file.ts @@ -1,5 +1,5 @@ // -// The interfaces in this file are designed with reference to the +// The interfaces in this file are designed with reference to the // mapped structures produced by xml2js when passed a .kps file. // // A few notes: @@ -8,7 +8,7 @@ // mixed up beastie). // * Arrays are buried a layer too deep (e.g. // leads to KpsFiles.KpsFile[] -// * Properties such as used in Info Items use `_` and `$` and must be +// * Properties such as used in Info Items use `_` and `$` and must be // extracted. // * Strings element is not yet checked to be correct // @@ -65,7 +65,6 @@ interface KpsFileContentFile { interface KpsFileLexicalModel { name: string; iD: string; - version: string; languages: KpsFileLanguages; } @@ -99,7 +98,7 @@ interface KpsFileKeyboards { interface KpsFileStartMenu { folder?: string; addUninstallEntry?: string; - items?: KpsFileStartMenuItems; + items?: KpsFileStartMenuItems; } interface KpsFileStartMenuItem { diff --git a/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json b/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json index fdb19c1abd..903b1d9023 100644 --- a/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json +++ b/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json @@ -33,7 +33,6 @@ { "name": "SENĆOŦEN dictionary", "id": "example.qaa.sencoten", - "version": "1.0.3", "languages": [ { "name": "North Straits Salish", diff --git a/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm b/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm index 71c86d5063..e2561dce1f 100644 --- a/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm +++ b/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm @@ -618,13 +618,6 @@ inherited frmPackageEditor: TfrmPackageEditor Height = 13 Caption = 'Description:' end - object lblLexicalModelVersion: TLabel - Left = 261 - Top = 129 - Width = 41 - Height = 13 - Caption = 'Version:' - end object lblLexicalModelLanguages: TLabel Left = 260 Top = 181 @@ -651,15 +644,6 @@ inherited frmPackageEditor: TfrmPackageEditor TabOrder = 1 OnChange = editLexicalModelDescriptionChange end - object editLexicalModelVersion: TEdit - Left = 342 - Top = 126 - Width = 148 - Height = 21 - TabStop = False - TabOrder = 2 - OnChange = editLexicalModelVersionChange - end object gridLexicalModelLanguages: TStringGrid Left = 260 Top = 200 @@ -671,7 +655,7 @@ inherited frmPackageEditor: TfrmPackageEditor FixedCols = 0 RowCount = 9 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goRowSelect] - TabOrder = 3 + TabOrder = 2 OnClick = gridLexicalModelLanguagesClick OnDblClick = gridLexicalModelLanguagesDblClick ColWidths = ( @@ -685,7 +669,7 @@ inherited frmPackageEditor: TfrmPackageEditor Height = 25 Anchors = [akLeft, akBottom] Caption = '&Add...' - TabOrder = 4 + TabOrder = 3 OnClick = cmdLexicalModelLanguageAddClick end object cmdLexicalModelLanguageRemove: TButton @@ -695,7 +679,7 @@ inherited frmPackageEditor: TfrmPackageEditor Height = 25 Anchors = [akLeft, akBottom] Caption = '&Remove' - TabOrder = 5 + TabOrder = 4 OnClick = cmdLexicalModelLanguageRemoveClick end object cmdLexicalModelLanguageEdit: TButton @@ -705,16 +689,16 @@ inherited frmPackageEditor: TfrmPackageEditor Height = 25 Anchors = [akLeft, akBottom] Caption = 'Ed&it...' - TabOrder = 6 + TabOrder = 5 OnClick = cmdLexicalModelLanguageEditClick end object chkLexicalModelRTL: TCheckBox Left = 342 - Top = 153 + Top = 126 Width = 97 Height = 17 Caption = 'Is Right-to-left' - TabOrder = 7 + TabOrder = 6 OnClick = chkLexicalModelRTLClick end object editLexicalModelFilename: TEdit @@ -725,7 +709,7 @@ inherited frmPackageEditor: TfrmPackageEditor TabStop = False ParentColor = True ReadOnly = True - TabOrder = 8 + TabOrder = 7 end end end diff --git a/windows/src/developer/TIKE/child/UfrmPackageEditor.pas b/windows/src/developer/TIKE/child/UfrmPackageEditor.pas index 48b1af0521..b956540872 100644 --- a/windows/src/developer/TIKE/child/UfrmPackageEditor.pas +++ b/windows/src/developer/TIKE/child/UfrmPackageEditor.pas @@ -188,11 +188,9 @@ type lblLexicalModelsSubtitle: TLabel; lblLexicalModelFilename: TLabel; lblLexicalModelDescription: TLabel; - lblLexicalModelVersion: TLabel; lblLexicalModelLanguages: TLabel; lbLexicalModels: TListBox; editLexicalModelDescription: TEdit; - editLexicalModelVersion: TEdit; gridLexicalModelLanguages: TStringGrid; cmdLexicalModelLanguageAdd: TButton; cmdLexicalModelLanguageRemove: TButton; @@ -256,7 +254,6 @@ type procedure cmdLexicalModelLanguageRemoveClick(Sender: TObject); procedure chkLexicalModelRTLClick(Sender: TObject); procedure editLexicalModelDescriptionChange(Sender: TObject); - procedure editLexicalModelVersionChange(Sender: TObject); private pack: TKPSFile; FSetup: Integer; @@ -1837,7 +1834,6 @@ begin if not Assigned(lm) then begin editLexicalModelDescription.Text := ''; - editLexicalModelVersion.Text := ''; editLexicalModelFilename.Text := ''; chkLexicalModelRTL.Checked := False; gridLexicalModelLanguages.RowCount := 1; @@ -1848,7 +1844,6 @@ begin // Details editLexicalModelDescription.Text := lm.Name; - editLexicalModelVersion.Text := lm.Version; chkLexicalModelRTL.Checked := lm.RTL; for i := 0 to pack.Files.Count - 1 do @@ -1876,8 +1871,6 @@ begin editLexicalModelDescription.Enabled := e; lblLexicalModelFilename.Enabled := e; editLexicalModelFilename.Enabled := e; - lblLexicalModelVersion.Enabled := e; - editLexicalModelVersion.Enabled := e; lblLexicalModelLanguages.Enabled := e; cmdLexicalModelLanguageAdd.Enabled := e; chkLexicalModelRTL.Enabled := e; @@ -1953,18 +1946,6 @@ begin Modified := True; end; -procedure TfrmPackageEditor.editLexicalModelVersionChange(Sender: TObject); -var - lm: TPackageLexicalModel; -begin - if FSetup > 0 then - Exit; - lm := SelectedLexicalModel; - Assert(Assigned(lm)); - lm.Version := editLexicalModelVersion.Text; - Modified := True; -end; - procedure TfrmPackageEditor.chkLexicalModelRTLClick(Sender: TObject); var lm: TPackageLexicalModel; diff --git a/windows/src/developer/history.md b/windows/src/developer/history.md index c4e794d682..d63f3be418 100644 --- a/windows/src/developer/history.md +++ b/windows/src/developer/history.md @@ -3,7 +3,11 @@ ## 13.0 alpha * Start version 13.0 -## 2019-07-30 12.0.41 beta +## 2019-10-04 12.0.44 beta +* Package Editor: Lexical models do not have embedded version numbers, so remove this from the user interface. (#2164) +* Touch Layout Editor: Dropping character from Character Map onto Touch Layout Editor now saves the change. (#2163) + +## 2019-09-30 12.0.41 beta * General: Keyman Desktop 11 would crash if installed together with Keyman Developer 12. (#2148) ## 2019-09-29 12.0.40 beta diff --git a/windows/src/developer/kmconvert/Keyman.Developer.System.ModelProjectTemplate.pas b/windows/src/developer/kmconvert/Keyman.Developer.System.ModelProjectTemplate.pas index 5cefd688fe..4b29380d63 100644 --- a/windows/src/developer/kmconvert/Keyman.Developer.System.ModelProjectTemplate.pas +++ b/windows/src/developer/kmconvert/Keyman.Developer.System.ModelProjectTemplate.pas @@ -161,7 +161,7 @@ begin kps.Info.Desc[PackageInfo_Name] := Name; kps.Info.Desc[PackageInfo_Copyright] := Copyright; kps.Info.Desc[PackageInfo_Author] := Author; - kps.KPSOptions.FollowKeyboardVersion := True; + kps.Info.Desc[PackageInfo_Version] := Version; kps.FileName := GetPackageFilename; // Add model.js @@ -184,7 +184,6 @@ begin plm := TPackageLexicalModel.Create(kps); plm.Name := Name; plm.ID := ID; - plm.Version := Version; kps.LexicalModels.Add(plm); SetPackageLanguageMetadata(kps, plm.Languages); diff --git a/windows/src/global/delphi/general/CompilePackage.pas b/windows/src/global/delphi/general/CompilePackage.pas index f87447c4f4..c8afca63a2 100644 --- a/windows/src/global/delphi/general/CompilePackage.pas +++ b/windows/src/global/delphi/general/CompilePackage.pas @@ -262,36 +262,21 @@ begin if pack.KPSOptions.FollowKeyboardVersion then begin - if (kmpinf.Keyboards.Count = 0) and (kmpinf.LexicalModels.Count = 0) then + if kmpinf.Keyboards.Count = 0 then begin - FatalMessage('The option "Follow Keyboard Version" is set but there are no keyboards (or lexical models) in the package.'); + FatalMessage('The option "Follow Keyboard Version" is set but there are no keyboards in the package.'); Exit; end; - if kmpinf.Keyboards.Count > 0 then - begin - FPackageVersion := kmpinf.Keyboards[0].Version; - for i := 1 to kmpinf.Keyboards.Count - 1 do - if kmpinf.Keyboards[i].Version <> FPackageVersion then - begin - FatalMessage( - 'The option "Follow Keyboard Version" is set but the package contains more than one keyboard, '+ - 'and the keyboards have mismatching versions.'); - Exit; - end; - end - else - begin - FPackageVersion := kmpinf.LexicalModels[0].Version; - for i := 1 to kmpinf.LexicalModels.Count - 1 do - if kmpinf.LexicalModels[i].Version <> FPackageVersion then - begin - FatalMessage( - 'The option "Follow Keyboard Version" is set but the package contains more than one lexical model, '+ - 'and the models have mismatching versions.'); - Exit; - end; - end; + FPackageVersion := kmpinf.Keyboards[0].Version; + for i := 1 to kmpinf.Keyboards.Count - 1 do + if kmpinf.Keyboards[i].Version <> FPackageVersion then + begin + FatalMessage( + 'The option "Follow Keyboard Version" is set but the package contains more than one keyboard, '+ + 'and the keyboards have mismatching versions.'); + Exit; + end; kmpinf.Info.Desc[PackageInfo_Version] := FPackageVersion; end; diff --git a/windows/src/global/delphi/general/PackageInfo.pas b/windows/src/global/delphi/general/PackageInfo.pas index 453111294d..d7be267fc5 100644 --- a/windows/src/global/delphi/general/PackageInfo.pas +++ b/windows/src/global/delphi/general/PackageInfo.pas @@ -338,7 +338,6 @@ type TPackageLexicalModel = class(TPackageBaseObject) private - FVersion: string; FName: string; FID: string; FLanguages: TPackageKeyboardLanguageList; @@ -349,7 +348,6 @@ type procedure Assign(Source: TPackageLexicalModel); virtual; property Name: string read FName write FName; property ID: string read FID write FID; - property Version: string read FVersion write FVersion; property RTL: Boolean read FRTL write FRTL; property Languages: TPackageKeyboardLanguageList read FLanguages; end; @@ -518,7 +516,6 @@ const SJSON_LexicalModels = 'lexicalModels'; SJSON_LexicalModel_Name = 'name'; SJSON_LexicalModel_ID = 'id'; - SJSON_LexicalModel_Version = 'version'; SJSON_LexicalModel_RTL = 'rtl'; SJSON_LexicalModel_Languages = 'languages'; @@ -2096,7 +2093,6 @@ var begin FName := Source.Name; FID := Source.ID; - FVersion := Source.Version; FRTL := Source.RTL; FLanguages.Clear; for i := 0 to Source.Languages.Count - 1 do @@ -2164,7 +2160,6 @@ begin lexicalModel := TPackageLexicalModel.Create(Package); lexicalModel.Name := GetJsonValueString(ALexicalModel, SJSON_LexicalModel_Name); lexicalModel.ID := GetJsonValueString(ALexicalModel,SJSON_LexicalModel_ID); - lexicalModel.Version := GetJsonValueString(ALexicalModel, SJSON_LexicalModel_Version); lexicalModel.RTL := GetJsonValueBool(ALexicalModel, SJSON_LexicalModel_RTL); lexicalModel.Languages.LoadJSON(ALexicalModel); @@ -2188,7 +2183,6 @@ begin lexicalModel := TPackageLexicalModel.Create(Package); lexicalModel.Name := XmlVarToStr(ALexicalModel.ChildValues[SXML_PackageLexicalModel_Name]); lexicalModel.ID := XmlVarToStr(ALexicalModel.ChildValues[SXML_PackageLexicalModel_ID]); - lexicalModel.Version := XmlVarToStr(ALexicalModel.ChildValues[SXML_PackageLexicalModel_Version]); lexicalModel.RTL := ANode.ChildNodes.IndexOf(SXML_PackageLexicalModel_RTL) >= 0; lexicalModel.Languages.LoadXML(ALexicalModel); Add(lexicalModel); @@ -2214,7 +2208,6 @@ begin ALexicalModel.AddPair(SJSON_LexicalModel_Name, Items[i].Name); ALexicalModel.AddPair(SJSON_LexicalModel_ID, Items[i].ID); - ALexicalModel.AddPair(SJSON_LexicalModel_Version, Items[i].Version); if Items[i].RTL then ALexicalModel.AddPair(SJSON_LexicalModel_RTL, TJSONTrue.Create); Items[i].Languages.SaveJSON(ALexicalModel); end; @@ -2232,7 +2225,6 @@ begin ALexicalModel.ChildNodes[SXML_PackageLexicalModel_Name].NodeValue := Items[i].Name; ALexicalModel.ChildNodes[SXML_PackageLexicalModel_ID].NodeValue := Items[i].ID; - ALexicalModel.ChildNodes[SXML_PackageLexicalModel_Version].NodeValue := Items[i].Version; if Items[i].RTL then ALexicalModel.ChildNodes[SXML_PackageLexicalModel_RTL].NodeValue := True; diff --git a/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshLexicalModels.pas b/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshLexicalModels.pas index a5ab614ece..b9f0636614 100644 --- a/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshLexicalModels.pas +++ b/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshLexicalModels.pas @@ -17,7 +17,6 @@ type procedure DoError(msg: string; State: TProjectLogState); function CheckLexicalModelLanguages: Boolean; - function CheckLexicalModelVersions: Boolean; function DoesFileMatchLexicalModelID(f: TPackageContentFile; const id: string): Boolean; function FindLexicalModelByFileName(const name: string): TPackageLexicalModel; @@ -94,25 +93,7 @@ begin end; end; - Result := CheckLexicalModelVersions; - Result := CheckLexicalModelLanguages and Result; // Always check all for comprehensive error messagess -end; - -function TPackageInfoRefreshLexicalModels.CheckLexicalModelVersions: Boolean; -var - lm: TPackageLexicalModel; -begin - // Test that each model has a version string - for lm in pack.LexicalModels do - begin - if lm.Version = '' then - begin - DoError(Format(SError_LexicalModelMustHaveAVersion, [lm.ID]), plsError); - Exit(False); - end; - end; - - Result := True; + Result := CheckLexicalModelLanguages; // Always check all for comprehensive error messagess end; function TPackageInfoRefreshLexicalModels.CheckLexicalModelLanguages: Boolean;