From 784cb53b1e045ea150af55e985a377145b37d4d2 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 13 Feb 2018 15:05:04 +0700 Subject: [PATCH] Add rtl property to keyboard info in package.json --- .../TIKE/child/UfrmPackageEditor.dfm | 57 ++++++++++++------- .../TIKE/child/UfrmPackageEditor.pas | 7 +++ .../src/global/delphi/general/PackageInfo.pas | 12 ++++ ...man.System.PackageInfoRefreshKeyboards.pas | 3 + 4 files changed, 60 insertions(+), 19 deletions(-) diff --git a/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm b/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm index 149a4eb442..9db05652b7 100644 --- a/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm +++ b/windows/src/developer/TIKE/child/UfrmPackageEditor.dfm @@ -181,7 +181,7 @@ inherited frmPackageEditor: TfrmPackageEditor Top = 0 Width = 681 Height = 447 - ActivePage = pageDetails + ActivePage = pageKeyboards Align = alClient Images = modActionsMain.ilEditorPages MultiLine = True @@ -387,7 +387,7 @@ inherited frmPackageEditor: TfrmPackageEditor end object lblKeyboardFiles: TLabel Left = 15 - Top = 365 + Top = 341 Width = 26 Height = 13 Anchors = [akLeft, akBottom] @@ -395,7 +395,7 @@ inherited frmPackageEditor: TfrmPackageEditor end object lblKeyboardDescription: TLabel Left = 15 - Top = 338 + Top = 314 Width = 62 Height = 13 Anchors = [akLeft, akBottom] @@ -403,7 +403,7 @@ inherited frmPackageEditor: TfrmPackageEditor end object lblKeyboardVersion: TLabel Left = 15 - Top = 417 + Top = 393 Width = 41 Height = 13 Anchors = [akLeft, akBottom] @@ -430,20 +430,28 @@ inherited frmPackageEditor: TfrmPackageEditor Height = 13 Caption = 'Languages' end + object lblKeyboardRTL: TLabel + Left = 15 + Top = 420 + Width = 75 + Height = 13 + Anchors = [akLeft, akBottom] + Caption = 'Is right-to-left:' + end object lbKeyboards: TListBox Left = 15 Top = 72 Width = 229 - Height = 249 + Height = 233 Anchors = [akLeft, akTop, akBottom] ItemHeight = 13 TabOrder = 0 OnClick = lbKeyboardsClick end object editKeyboardDescription: TEdit - Left = 87 - Top = 335 - Width = 157 + Left = 96 + Top = 311 + Width = 148 Height = 21 TabStop = False Anchors = [akLeft, akBottom] @@ -452,9 +460,9 @@ inherited frmPackageEditor: TfrmPackageEditor TabOrder = 1 end object memoKeyboardFiles: TMemo - Left = 87 - Top = 362 - Width = 157 + Left = 96 + Top = 338 + Width = 148 Height = 46 TabStop = False Anchors = [akLeft, akBottom] @@ -463,9 +471,9 @@ inherited frmPackageEditor: TfrmPackageEditor TabOrder = 2 end object editKeyboardVersion: TEdit - Left = 87 - Top = 414 - Width = 157 + Left = 96 + Top = 390 + Width = 148 Height = 21 TabStop = False Anchors = [akLeft, akBottom] @@ -479,7 +487,7 @@ inherited frmPackageEditor: TfrmPackageEditor Width = 230 Height = 21 Style = csDropDownList - TabOrder = 4 + TabOrder = 5 OnClick = cbKeyboardOSKFontClick end object cbKeyboardDisplayFont: TComboBox @@ -488,7 +496,7 @@ inherited frmPackageEditor: TfrmPackageEditor Width = 230 Height = 21 Style = csDropDownList - TabOrder = 5 + TabOrder = 6 OnClick = cbKeyboardDisplayFontClick end object gridKeyboardLanguages: TStringGrid @@ -502,7 +510,7 @@ inherited frmPackageEditor: TfrmPackageEditor FixedCols = 0 RowCount = 9 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goTabs] - TabOrder = 6 + TabOrder = 7 OnClick = gridKeyboardLanguagesClick OnSetEditText = gridKeyboardLanguagesSetEditText ColWidths = ( @@ -516,7 +524,7 @@ inherited frmPackageEditor: TfrmPackageEditor Height = 25 Anchors = [akLeft, akBottom] Caption = '&Add...' - TabOrder = 7 + TabOrder = 8 OnClick = cmdKeyboardAddLanguageClick end object cmdKeyboardRemoveLanguage: TButton @@ -526,9 +534,20 @@ inherited frmPackageEditor: TfrmPackageEditor Height = 25 Anchors = [akLeft, akBottom] Caption = '&Remove' - TabOrder = 8 + TabOrder = 9 OnClick = cmdKeyboardRemoveLanguageClick end + object editKeyboardRTL: TEdit + Left = 96 + Top = 417 + Width = 148 + Height = 21 + TabStop = False + Anchors = [akLeft, akBottom] + ParentColor = True + ReadOnly = True + TabOrder = 4 + end end end object pageDetails: TTabSheet diff --git a/windows/src/developer/TIKE/child/UfrmPackageEditor.pas b/windows/src/developer/TIKE/child/UfrmPackageEditor.pas index cf2d25be92..84ef14921f 100644 --- a/windows/src/developer/TIKE/child/UfrmPackageEditor.pas +++ b/windows/src/developer/TIKE/child/UfrmPackageEditor.pas @@ -167,6 +167,8 @@ type cmdKeyboardAddLanguage: TButton; cmdKeyboardRemoveLanguage: TButton; chkFollowKeyboardVersion: TCheckBox; + lblKeyboardRTL: TLabel; + editKeyboardRTL: TEdit; procedure cmdCloseClick(Sender: TObject); procedure cmdAddFileClick(Sender: TObject); procedure cmdRemoveFileClick(Sender: TObject); @@ -1323,6 +1325,7 @@ begin editKeyboardDescription.Text := ''; editKeyboardVersion.Text := ''; memoKeyboardFiles.Text := ''; + editKeyboardRTL.Text := ''; cbKeyboardOSKFont.ItemIndex := -1; cbKeyboardDisplayFont.ItemIndex := -1; gridKeyboardLanguages.RowCount := 1; @@ -1336,6 +1339,10 @@ begin editKeyboardDescription.Text := k.Name; editKeyboardVersion.Text := k.Version; + if k.RTL + then editKeyboardRTL.Text := 'True' + else editKeyboardRTL.Text := 'False (or not .js format)'; + for i := 0 to pack.Files.Count - 1 do if SameText(TKeyboardUtils.KeyboardFileNameToID(pack.Files[i].FileName), k.ID) then begin diff --git a/windows/src/global/delphi/general/PackageInfo.pas b/windows/src/global/delphi/general/PackageInfo.pas index ccccd59555..f5f5f5b6be 100644 --- a/windows/src/global/delphi/general/PackageInfo.pas +++ b/windows/src/global/delphi/general/PackageInfo.pas @@ -288,6 +288,7 @@ type FName: string; FOSKFont: TPackageContentFile; FID: string; + FRTL: Boolean; FDisplayFont: TPackageContentFile; FLanguages: TPackageKeyboardLanguageList; FVersion: string; @@ -303,6 +304,7 @@ type procedure Assign(Source: TPackageKeyboard); virtual; property Name: string read FName write FName; property ID: string read FID write FID; + property RTL: Boolean read FRTL write FRTL; property Version: string read FVersion write FVersion; property Languages: TPackageKeyboardLanguageList read FLanguages; property OSKFont: TPackageContentFile read FOSKFont write SetOSKFont; @@ -404,6 +406,7 @@ const SXML_PackageKeyboard_Name = 'Name'; SXML_PackageKeyboard_ID = 'ID'; SXML_PackageKeyboard_Version = 'Version'; + SXML_PackageKeyboard_RTL = 'RTL'; SXML_PackageKeyboard_OSKFont = 'OSKFont'; SXML_PackageKeyboard_DisplayFont = 'DisplayFont'; SXML_PackageKeyboard_Languages = 'Languages'; @@ -460,6 +463,7 @@ const SJSON_Keyboards = 'keyboards'; SJSON_Keyboard_Name = 'name'; SJSON_Keyboard_ID = 'id'; + SJSON_Keyboard_RTL = 'rtl'; SJSON_Keyboard_Version = 'version'; SJSON_Keyboard_OSKFont = 'oskFont'; SJSON_Keyboard_DisplayFont = 'displayFont'; @@ -1726,6 +1730,7 @@ begin FName := Source.Name; FID := Source.ID; FVersion := Source.Version; + FRTL := Source.RTL; if Assigned(Source.OSKFont) then FOSKFont := Package.Files.FromFileNameEx(Source.OSKFont.FileName) else FOSKFont := nil; @@ -1841,6 +1846,7 @@ begin keyboard.Name := AIni.ReadString(FSectionName, SXML_PackageKeyboard_Name, ''); keyboard.ID := AIni.ReadString(FSectionName, SXML_PackageKeyboard_ID, ''); keyboard.Version := AIni.ReadString(FSectionName, SXML_PackageKeyboard_Version, '1.0'); + keyboard.RTL := AIni.ReadBool(FSectionName, SXML_PackageKeyboard_RTL, False); keyboard.OSKFont := Package.Files.FromFileNameEx(AIni.ReadString(FSectionName, SXML_PackageKeyboard_OSKFont, '')); keyboard.DisplayFont := Package.Files.FromFileNameEx(AIni.ReadString(FSectionName, SXML_PackageKeyboard_DisplayFont, '')); @@ -1884,6 +1890,7 @@ begin keyboard.Name := GetJsonValueString(AKeyboard, SJSON_Keyboard_Name); keyboard.ID := GetJsonValueString(AKeyboard,SJSON_Keyboard_ID); keyboard.Version := GetJsonValueString(AKeyboard, SJSON_Keyboard_Version); + keyboard.RTL := GetJsonValueBool(AKeyboard, SJSON_Keyboard_RTL); keyboard.OSKFont := Package.Files.FromFileNameEx(GetJsonValueString(AKeyboard, SJSON_Keyboard_OSKFont)); keyboard.DisplayFont := Package.Files.FromFileNameEx(GetJsonValueString(AKeyboard, SJSON_Keyboard_DisplayFont)); @@ -1923,6 +1930,7 @@ begin keyboard.Name := XmlVarToStr(AKeyboard.ChildValues[SXML_PackageKeyboard_Name]); keyboard.ID := XmlVarToStr(AKeyboard.ChildValues[SXML_PackageKeyboard_ID]); keyboard.Version := XmlVarToStr(AKeyboard.ChildValues[SXML_PackageKeyboard_Version]); + keyboard.RTL := ANode.ChildNodes.IndexOf(SXML_PackageKeyboard_RTL) >= 0; keyboard.OSKFont := Package.Files.FromFileNameEx(XmlVarToStr(AKeyboard.ChildValues[SXML_PackageKeyboard_OSKFont])); keyboard.DisplayFont := Package.Files.FromFileNameEx(XmlVarToStr(AKeyboard.ChildValues[SXML_PackageKeyboard_DisplayFont])); @@ -1955,6 +1963,7 @@ begin AIni.WriteString(FSectionName, SXML_PackageKeyboard_Name, Items[i].Name); AIni.WriteString(FSectionName, SXML_PackageKeyboard_ID, Items[i].ID); AIni.WriteString(FSectionName, SXML_PackageKeyboard_Version, Items[i].Version); + if Items[i].RTL then AIni.WriteBool(FSectionName, SXML_PackageKeyboard_RTL, True); if Assigned(Items[i].OSKFont) then AIni.WriteString(FSectionName, SXML_PackageKeyboard_OSKFont, Items[i].OSKFont.RelativeFileName); if Assigned(Items[i].DisplayFont) then @@ -1987,6 +1996,7 @@ begin AKeyboard.AddPair(SJSON_Keyboard_Name, Items[i].Name); AKeyboard.AddPair(SJSON_Keyboard_ID, Items[i].ID); AKeyboard.AddPair(SJSON_Keyboard_Version, Items[i].Version); + if Items[i].RTL then AKeyboard.AddPair(SJSON_Keyboard_RTL, TJSONTrue.Create); if Assigned(Items[i].OSKFont) then AKeyboard.AddPair(SJSON_Keyboard_OSKFont, Items[i].OSKFont.RelativeFileName); if Assigned(Items[i].DisplayFont) then @@ -2018,6 +2028,8 @@ begin AKeyboard.ChildNodes[SXML_PackageKeyboard_Name].NodeValue := Items[i].Name; AKeyboard.ChildNodes[SXML_PackageKeyboard_ID].NodeValue := Items[i].ID; AKeyboard.ChildNodes[SXML_PackageKeyboard_Version].NodeValue := Items[i].Version; + if Items[i].RTL then + AKeyboard.ChildNodes[SXML_PackageKeyboard_RTL].NodeValue := True; if Assigned(Items[i].OSKFont) then AKeyboard.ChildNodes[SXML_PackageKeyboard_OSKFont].NodeValue := Items[i].OSKFont.RelativeFileName; if Assigned(Items[i].DisplayFont) then diff --git a/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshKeyboards.pas b/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshKeyboards.pas index 561e793ab1..32a8931173 100644 --- a/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshKeyboards.pas +++ b/windows/src/global/delphi/packages/Keyman.System.PackageInfoRefreshKeyboards.pas @@ -26,6 +26,7 @@ type public type TPackageKeyboardInfo = record Name, ID, Version: string; + RTL: Boolean; end; class function FillKeyboardDetails(f: TPackageContentFile; @@ -114,6 +115,7 @@ begin k.Name := pki.Name; k.ID := pki.ID; k.Version := pki.Version; + k.RTL := pki.RTL; end; end; end; @@ -244,6 +246,7 @@ begin try pki.Name := Name; pki.Version := Version; + pki.RTL := RTL; finally Free; end;