Merge pull request #2164 from keymanapp/developer-remove-model-version-from-package-metadata

[Developer] Remove model version from package metadata.
This commit is contained in:
Marc Durdin 2019-10-04 06:06:16 +10:00 committed by GitHub
commit 40afdaf2f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 30 additions and 107 deletions

View file

@ -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[]) }
});
}

View file

@ -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 {

View file

@ -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. <Files><File/><File/></Files>
// 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 {

View file

@ -33,7 +33,6 @@
{
"name": "SENĆOŦEN dictionary",
"id": "example.qaa.sencoten",
"version": "1.0.3",
"languages": [
{
"name": "North Straits Salish",

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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;