From b20239aae56745477e5cdfa640545a27a7a77b76 Mon Sep 17 00:00:00 2001 From: gbamber Date: Wed, 7 Dec 2016 11:27:22 +0000 Subject: [PATCH] 0.1.17.0: po files stored in resources Use Project/Options/Resources in Laz 1.7+ Use LazRes to make a file 'translate.lrs' in older Laz (minesadorada) git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5434 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- applications/json_packager/jsonpackage.lpi | 4 + applications/json_packager/jsonpackage.lps | 91 ++++----- applications/json_packager/jsonpackage.res | Bin 120824 -> 139244 bytes applications/json_packager/umain.pas | 210 +++++++++++++-------- 4 files changed, 186 insertions(+), 119 deletions(-) diff --git a/applications/json_packager/jsonpackage.lpi b/applications/json_packager/jsonpackage.lpi index b431722a2..3f5213d56 100644 --- a/applications/json_packager/jsonpackage.lpi +++ b/applications/json_packager/jsonpackage.lpi @@ -15,6 +15,10 @@ + + + + diff --git a/applications/json_packager/jsonpackage.lps b/applications/json_packager/jsonpackage.lps index 6571aa8c4..6b2257e1f 100644 --- a/applications/json_packager/jsonpackage.lps +++ b/applications/json_packager/jsonpackage.lps @@ -4,13 +4,13 @@ - + - + @@ -20,12 +20,12 @@ - - - + + + - - + + @@ -33,7 +33,7 @@ - + @@ -154,9 +154,8 @@ - - + @@ -176,9 +175,9 @@ - - - + + + @@ -186,6 +185,12 @@ + + + + + + @@ -193,123 +198,123 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/applications/json_packager/jsonpackage.res b/applications/json_packager/jsonpackage.res index 121e8418828a171cb476065bd53ef6cf9eb0d34e..bed6f72494608ea6bd01ce527c1c398c8c9879ac 100644 GIT binary patch delta 18583 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 Q&p!B%&p!CG|NO821EO#nd;kCd delta 18 acmaE}pX0}R_6;`N%?82S4T2f>oB;q*y$B)z diff --git a/applications/json_packager/umain.pas b/applications/json_packager/umain.pas index 6345c21d2..17d5720c5 100644 --- a/applications/json_packager/umain.pas +++ b/applications/json_packager/umain.pas @@ -1,6 +1,8 @@ unit umain; -{$DEFINE PO_RESOURCES} - { OnlinePackageManager Update JSON Editor + +{$DEFINE PO_BUILTINRES}// Use built-in resources for .po files + +{ OnlinePackageManager Update JSON Editor Copyright (C)2016 usernames lainz, minesadorada, GetMem @ http://forum.lazarus.freepascal.org/index.php @@ -41,7 +43,9 @@ unit umain; 0.1.15.0: BugFix: File/Save didn't add the '.json' suffix in Linux (minesadorada) Addition: After Loading, run validation tests(minesadorada) 0.1.16.0: Renamed ForceUpdate to ForceNotify (GetMem/minesadorada) - 0.1.17.0: po files stored in resource file as fallback (minesadorada) + 0.1.17.0: po files stored in resources + Use Project/Options/Resources in Laz 1.7+ + Use LazRes to make a file 'translate.lrs' in older Laz (minesadorada) 0.1.18.0: ?? } {$mode objfpc}{$H+} @@ -53,14 +57,14 @@ uses Classes, Forms, Controls, StdCtrls, Menus, ActnList, StdActns, Grids, Graphics, Buttons, fileutil, LazFileUtils, fileinfo, ugenericcollection, fpjsonrtti, Dialogs, LCLTranslator, PopupNotifier, SysUtils, inifiles, - lclintf, lclVersion{$IFDEF PO_RESOURCES},LResources, LazUTF8Classes{$ENDIF}; - -CONST C_DEBUGMESSAGES=FALSE; + lclintf, lclVersion,{$IFDEF PO_BUILTINRES}LResources,LazUTF8Classes{$ENDIF}; +const + C_DEBUGMESSAGES = False; type - + { TUpdatePackageFiles } TUpdatePackageFiles = class(TCollectionItem) @@ -101,8 +105,10 @@ type function LoadFromFile(AFileName: string): boolean; function SaveToFile(AFileName: string): boolean; published - property UpdatePackageData: TUpdatePackageData read FUpdatePackageData write FUpdatePackageData; - property UpdatePackageFiles: TPackageFilesList read FUpdatePackageFiles write FUpdatePackageFiles; + property UpdatePackageData: TUpdatePackageData + read FUpdatePackageData write FUpdatePackageData; + property UpdatePackageFiles: TPackageFilesList + read FUpdatePackageFiles write FUpdatePackageFiles; end; { TfrmMain } @@ -166,24 +172,27 @@ type sUpdateDirectory, sZipDirectory: string; slErrorList: TStrings; CFG: TIniFile; - INIFilePath:String; + INIFilePath: string; function ValidationFailed: boolean; procedure CtrlShowPopup(Sender: TObject); procedure CtrlHidePopup(Sender: TObject); procedure CtrlSetUpPopupHandlers; procedure CtrlMakeDirty(Sender: TObject); function FoundADuplicateLPK: boolean; - Function CreateUniqueINI(var aCount: integer):Boolean; + function CreateUniqueINI(var aCount: integer): boolean; public { public declarations } end; var frmMain: TfrmMain; - {$IFDEF PO_RESOURCES} + sPoPath_en, sPoPath_es: string; +{$IFDEF PO_BUILTINRES} aLRes: TLResource; aSS: TStringListUTF8; - {$ENDIF} + S: TResourceStream; + F: TFileStream; +{$ENDIF} implementation @@ -227,8 +236,8 @@ resourcestring rsLanguageChan = 'Language changed to "%s".'; rsSorryThisLan = 'Sorry, this language is unavailable at this time.'; rsYouMayNeedTo = '(You may need to restart the app to see the change)'; - rsThereAreOneO = '- There are one or more .lpk entries with the same name.%s' - + '- Every .lpk entry must have a unique name.'; + rsThereAreOneO = '- There are one or more .lpk entries with the same name.%s' + + '- Every .lpk entry must have a unique name.'; rsUpdateJsonSF = 'Update file "%s" failed to load correctly.'; { TUpdatePackageData } @@ -387,7 +396,7 @@ end; procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: boolean); begin CanClose := True; - if ((bDirty = True) AND (bDisableWarnings=FALSE)) then + if ((bDirty = True) and (bDisableWarnings = False)) then begin if MessageDlg(rsFileMayBeUns, mtConfirmation, [mbYes, mbNo], 0, mbNo) = mrNo then CanClose := False; @@ -399,18 +408,19 @@ begin CFG.UpdateFile; end; end; -function TfrmMain.CreateUniqueINI(var aCount: integer):Boolean; -// Recursively loop until correct INI found, or new one created + +function TfrmMain.CreateUniqueINI(var aCount: integer): boolean; + // Recursively loop until correct INI found, or new one created begin - Result:=FALSE; + Result := False; INIFilePath := GetAppConfigFile(False) + IntToStr(aCount); CFG := TIniFile.Create(INIFilePath); - CFG.CacheUpdates:=TRUE; + CFG.CacheUpdates := True; if CFG.ReadString('Options', 'AppPath', ProgramDirectory) <> ProgramDirectory then begin FreeAndNil(CFG); // Ditch the old one Inc(aCount); - Result:=TRUE; + Result := True; CreateUniqueINI(aCount); // Make a new one end; end; @@ -418,7 +428,7 @@ end; procedure TfrmMain.FormCreate(Sender: TObject); var sLang: string; - iIniCount:Integer; + iIniCount: integer; begin { Self.AutoAdjustLayout(lapAutoAdjustForDPI, Self.DesignTimeDPI, @@ -449,12 +459,12 @@ begin // Enable options persistence // If program location is different, create a new CFG file // Because each component's location might be different - iIniCount:=0; - If CreateUniqueINI(iIniCount) then + iIniCount := 0; + if CreateUniqueINI(iIniCount) then CFG.WriteString('Options', 'AppPath', ProgramDirectory); CFG.UpdateFile; - If C_DEBUGMESSAGES=TRUE then - ShowMessageFmt('Inifile=%s, Count=%d',[INIFilePath,iIniCount]); + if C_DEBUGMESSAGES = True then + ShowMessageFmt('Inifile=%s, Count=%d', [INIFilePath, iIniCount]); // Pop-up hints (show on first run, then not again unless the user chooses) bIsVirgin := CFG.ReadBool('Options', 'Virgin', True); bShowPopupHints := bIsVirgin; @@ -479,8 +489,8 @@ end; procedure TfrmMain.FormDestroy(Sender: TObject); begin - CFG.Free; - slErrorList.Free; + CFG.Free; + slErrorList.Free; end; procedure TfrmMain.FormShow(Sender: TObject); @@ -509,21 +519,23 @@ begin stringPackageFiles.RowCount := JSONPackage.UpdatePackageFiles.Count + 1; for i := 0 to JSONPackage.UpdatePackageFiles.Count - 1 do begin - stringPackageFiles.Cells[0, i + 1] := JSONPackage.UpdatePackageFiles.Items[i].Name; - stringPackageFiles.Cells[1, i + 1] := JSONPackage.UpdatePackageFiles.Items[i].Version; + stringPackageFiles.Cells[0, i + 1] := + JSONPackage.UpdatePackageFiles.Items[i].Name; + stringPackageFiles.Cells[1, i + 1] := + JSONPackage.UpdatePackageFiles.Items[i].Version; + end; + if ValidationFailed then + begin + if (slErrorList.Count > 1) then + ShowMessage(Format(rsUpdateJsonSF, [ExtractFileName(sJSONFilePath)]) + + LineEnding + LineEnding + rsOneOfTheReqn + LineEnding + + slErrorList.Text + LineEnding + rsFixThenTryAg) + else + ShowMessage(Format(rsUpdateJsonSF, [ExtractFileName(sJSONFilePath)]) + + LineEnding + LineEnding + rsOneOfTheReq1 + LineEnding + + slErrorList.Text + LineEnding + rsFixThenTryAg); + Exit; end; - if ValidationFailed then - begin - if (slErrorList.Count > 1) then - ShowMessage(Format(rsUpdateJsonSF, [ExtractFileName(sJSONFilePath)]) + LineEnding - + LineEnding + rsOneOfTheReqn + LineEnding + slErrorList.Text + - LineEnding + rsFixThenTryAg) - else - ShowMessage(Format(rsUpdateJsonSF,[ExtractFileName(sJSONFilePath)]) + LineEnding - + LineEnding + rsOneOfTheReq1 + LineEnding + slErrorList.Text + - LineEnding + rsFixThenTryAg); - Exit; - end; end else ShowMessageFmt('There was a problem loading "%s" - is it corrupted or in the wrong format?', @@ -573,8 +585,10 @@ begin s += RightStr(VInfo.VersionStrings[1], Length(VInfo.VersionStrings[1]) - EqualsPos) + LineEnding; end; + { s+=Format(rsCompiledWith2, [{$I %FPCVERSION%},lcl_major,lcl_minor,LineEnding,{$I %FPCTARGETCPU%},{$I %FPCTARGETOS%},LineEnding,LineEnding]); + } if VInfo.VersionStrings.Count > 1 then begin EqualsPos := Pos('=', VInfo.VersionStrings[0]); // File Deswcription @@ -614,7 +628,7 @@ begin else begin mnu_lang_en.Checked := False; -// SetDefaultLang(''); // Back to default? + // SetDefaultLang(''); // Back to default? ShowMessage(rsSorryThisLan + LineEnding + rsYouMayNeedTo); end; end; @@ -673,8 +687,8 @@ begin Result := True; end; // A full URL? - if ((Length(editDownloadZipURL.Text) > 0) and (RightStr(editDownloadZipURL.Text, 1) = '/')) - then + if ((Length(editDownloadZipURL.Text) > 0) and + (RightStr(editDownloadZipURL.Text, 1) = '/')) then begin slErrorList.Add(rsDownloadZipURLI2); editDownloadZipURL.Color := clYellow; @@ -752,7 +766,8 @@ begin if bForceSaveAs or (sJSONFilePath = '') then begin FileSaveAs1.Dialog.InitialDir := sUpdateDirectory; - FileSaveAs1.Dialog.FileName := 'update_' + ExtractFilenameOnly(editName.Text) + '.json'; + FileSaveAs1.Dialog.FileName := + 'update_' + ExtractFilenameOnly(editName.Text) + '.json'; if FileSaveAs1.Dialog.Execute then sJSONFilePath := FileSaveAs1.Dialog.FileName else @@ -897,39 +912,82 @@ begin end; end; -{$IFDEF PO_RESOURCES} // Use embedded .po resources if not distributed with executable -Initialization -{$I translate.lrs} -If NOT FileExistsUTF8(ProgramDirectory + 'locale\' + ExtractFilenameOnly(Application.EXEName) + '.es.po') then -BEGIN -aLRes:=LazarusResources.Find('jsoneditor.es'); -if assigned(aLRes) then +initialization + sPoPath_en := ProgramDirectory + 'locale\' + ExtractFilenameOnly( + Application.EXEName) + '.en.po'; + sPoPath_es := ProgramDirectory + 'locale\' + ExtractFilenameOnly( + Application.EXEName) + '.es.po'; + if (lcl_major > 0) and (lcl_minor > 6) then begin - ForceDirectory(ProgramDirectory + 'locale'); - aSS:=TStringListUTF8.Create; - TRY - Ass.Add(aLRes.Value); - aSS.SaveToFile(ProgramDirectory + 'locale\' + ExtractFilenameOnly(Application.EXEName) + '.es.po'); - Finally - aSS.Free; +{$IFDEF PO_BUILTINRES} + // This uses a resource file added via Project/Options + if not FileExistsUTF8(sPoPath_en) then + begin + // create a resource stream which points to the po file + S := TResourceStream.Create(HInstance, 'JSONEDITOR.EN', MakeIntResource(10)); + try + ForceDirectory(ProgramDirectory + 'locale'); + F := TFileStream.Create(sPoPath_en, fmCreate); + try + F.CopyFrom(S, S.Size); // copy data from the resource stream to file stream + finally + F.Free; // destroy the file stream + end; + finally + S.Free; // destroy the resource stream + end; + end; + if not FileExistsUTF8(sPoPath_es) then + begin + S := TResourceStream.Create(HInstance, 'JSONEDITOR.ES', MakeIntResource(10)); + try + ForceDirectory(ProgramDirectory + 'locale'); + F := TFileStream.Create(sPoPath_es, fmCreate); + try + F.CopyFrom(S, S.Size); + finally + F.Free + end; + finally + S.Free; + end; + end; + end + else + begin // Older version of laz + // This uses an lrs file generated from lazres +{$I translate.lrs} + if not FileExistsUTF8(sPoPath_es) then + begin + aLRes := LazarusResources.Find('jsoneditor.es'); + if assigned(aLRes) then + begin + ForceDirectory(ProgramDirectory + 'locale'); + aSS := TStringListUTF8.Create; + try + Ass.Add(aLRes.Value); + aSS.SaveToFile(sPoPath_es); + finally + aSS.Free; + end; + end; + end; + if not FileExistsUTF8(sPoPath_en) then + begin + aLRes := LazarusResources.Find('jsoneditor.en'); + if assigned(aLRes) then + begin + ForceDirectory(ProgramDirectory + 'locale'); + aSS := TStringListUTF8.Create; + try + Ass.Add(aLRes.Value); + aSS.SaveToFile(sPoPath_en); + finally + aSS.Free; + end; + end; end; end; -END; -If NOT FileExistsUTF8(ProgramDirectory + 'locale\' + ExtractFilenameOnly(Application.EXEName) + '.en.po') then -BEGIN -aLRes:=LazarusResources.Find('jsoneditor.en'); -if assigned(aLRes) then - begin - ForceDirectory(ProgramDirectory + 'locale'); - aSS:=TStringListUTF8.Create; - TRY - Ass.Add(aLRes.Value); - aSS.SaveToFile(ProgramDirectory + 'locale\' + ExtractFilenameOnly(Application.EXEName) + '.en.po'); - FINALLY - aSS.Free; - END; - end; -END; {$ENDIF} end.