0.1.10.0: Exception handling for Load + Save (minesadorada)

Error check for duplicate lpk entries (minesadorada)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5408 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
gbamber
2016-12-04 18:05:35 +00:00
parent c0c7cae9ae
commit 1e944a1c58
4 changed files with 73 additions and 65 deletions

View File

@ -24,7 +24,7 @@
<UseVersionInfo Value="True"/> <UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/> <AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="1"/> <MinorVersionNr Value="1"/>
<RevisionNr Value="9"/> <RevisionNr Value="10"/>
<StringTable Comments="Buld configured for Win Linux and Darwin" FileDescription="An editor for OnlinePackageManager update JSON files" InternalName="jsoneditor" LegalCopyright="(c)2016 usernames lainz and minesadorada @ forum.lazarus.freepascal.org" LegalTrademarks="GPL code" OriginalFilename="jsoneditor" ProductName="Lazarus and Freepascal" ProductVersion="1.x and 3.x"/> <StringTable Comments="Buld configured for Win Linux and Darwin" FileDescription="An editor for OnlinePackageManager update JSON files" InternalName="jsoneditor" LegalCopyright="(c)2016 usernames lainz and minesadorada @ forum.lazarus.freepascal.org" LegalTrademarks="GPL code" OriginalFilename="jsoneditor" ProductName="Lazarus and Freepascal" ProductVersion="1.x and 3.x"/>
</VersionInfo> </VersionInfo>
<BuildModes Count="5"> <BuildModes Count="5">

View File

@ -20,11 +20,12 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/> <IsVisibleTab Value="True"/>
<TopLine Value="790"/> <TopLine Value="13"/>
<CursorPos X="23" Y="811"/> <CursorPos X="62" Y="28"/>
<UsageCount Value="56"/> <UsageCount Value="56"/>
<Bookmarks Count="1"> <Bookmarks Count="2">
<Item0 Y="465" ID="1"/> <Item0 Y="468" ID="1"/>
<Item1 X="8" Y="737"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
@ -103,9 +104,6 @@
<TopLine Value="10428"/> <TopLine Value="10428"/>
<CursorPos X="29" Y="10452"/> <CursorPos X="29" Y="10452"/>
<UsageCount Value="11"/> <UsageCount Value="11"/>
<Bookmarks Count="1">
<Item0 X="86" Y="1718"/>
</Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit11> </Unit11>
<Unit12> <Unit12>
@ -119,124 +117,124 @@
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="umain.pas"/> <Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="748" Column="47" TopLine="747"/> <Caret Line="1395" Column="21" TopLine="1371"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/> <Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="456" Column="14" TopLine="456"/> <Caret Line="745" Column="27" TopLine="709"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/> <Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/>
<Caret Line="1721" Column="21" TopLine="1694"/> <Caret Line="114" Column="3" TopLine="76"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/> <Filename Value="umain.pas"/>
<Caret Line="1395" Column="21" TopLine="1371"/> <Caret Line="155" TopLine="134"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/> <Filename Value="umain.pas"/>
<Caret Line="745" Column="27" TopLine="709"/> <Caret Line="308" Column="3" TopLine="306"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\grids.pas"/> <Filename Value="umain.pas"/>
<Caret Line="114" Column="3" TopLine="76"/> <Caret Line="796" Column="19" TopLine="766"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="155" TopLine="134"/> <Caret Line="46" Column="40" TopLine="31"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="umain.pas"/> <Filename Value="C:\NewPascalDarwin\fpc\rtl\objpas\classes\classesh.inc"/>
<Caret Line="308" Column="3" TopLine="306"/> <Caret Line="498" Column="37" TopLine="465"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="796" Column="19" TopLine="766"/> <Caret Line="450" Column="47" TopLine="426"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="46" Column="40" TopLine="31"/> <Caret Line="298" Column="27" TopLine="285"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="C:\NewPascalDarwin\fpc\rtl\objpas\classes\classesh.inc"/> <Filename Value="umain.pas"/>
<Caret Line="498" Column="37" TopLine="465"/> <Caret Line="313" Column="46" TopLine="290"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="450" Column="47" TopLine="426"/> <Caret Line="316" Column="65" TopLine="293"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="298" Column="27" TopLine="285"/> <Caret Line="313" Column="46" TopLine="289"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="313" Column="46" TopLine="290"/> <Caret Line="320" TopLine="296"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="316" Column="65" TopLine="293"/> <Caret Line="310" Column="29" TopLine="295"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="313" Column="46" TopLine="289"/> <Caret Line="672" Column="56" TopLine="635"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="320" TopLine="296"/> <Caret Line="810" Column="41" TopLine="787"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="310" Column="29" TopLine="295"/> <Caret Line="812" Column="36" TopLine="786"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="672" Column="56" TopLine="635"/> <Caret Line="813" Column="5" TopLine="790"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="810" Column="41" TopLine="787"/> <Caret Line="811" TopLine="787"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="812" Column="36" TopLine="786"/> <Caret Line="814" Column="5" TopLine="787"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="813" Column="5" TopLine="790"/> <Caret Line="812" Column="24" TopLine="784"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="811" TopLine="787"/> <Caret Line="811" Column="11" TopLine="788"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="814" Column="5" TopLine="787"/> <Caret Line="813" Column="6" TopLine="789"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="812" Column="24" TopLine="784"/> <Caret Line="489" TopLine="481"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="811" Column="11" TopLine="788"/> <Caret Line="819" TopLine="789"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="813" Column="6" TopLine="789"/> <Caret Line="813" TopLine="789"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="489" TopLine="481"/> <Caret Line="79" Column="26" TopLine="50"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="819" TopLine="789"/> <Caret Line="812" TopLine="795"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="umain.pas"/> <Filename Value="umain.pas"/>
<Caret Line="813" TopLine="789"/> <Caret Line="735" Column="33" TopLine="720"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectSession> </ProjectSession>

View File

@ -22,9 +22,11 @@ unit umain;
Version History Version History
=============== ===============
0.0.0.0 Original code by lainz 0.0.0.0 Original code by lainz
..to 0.1.6.0 Refactored and updated by minesadorada ..to 0.1.6.0 Refactored and updated (minesadorada)
0.1.7.0: Bugfix by lainz 0.1.7.0: Bugfix (lainz)
0.1.8.0: Config file change by minesadorada 0.1.8.0: Config file change (minesadorada)
0.1.10.0: Exception handling for Load + Save (minesadorada)
Error check for duplicate lpk entries (minesadorada)
} }
{$mode objfpc}{$H+} {$mode objfpc}{$H+}
@ -76,7 +78,7 @@ type
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
procedure LoadFromFile(AFileName: string); function LoadFromFile(AFileName: string):Boolean;
function SaveToFile(AFileName: string): boolean; function SaveToFile(AFileName: string): boolean;
published published
property Package: TPackageData read FPackage write FPackage; property Package: TPackageData read FPackage write FPackage;
@ -461,8 +463,9 @@ begin
sJSONFilePath := FileOpen1.Dialog.Filename; sJSONFilePath := FileOpen1.Dialog.Filename;
CFG.WriteString('Options', 'LastLoadedJSONPath', ExtractFileDir(sJSONFilePath)); CFG.WriteString('Options', 'LastLoadedJSONPath', ExtractFileDir(sJSONFilePath));
JSONPackage := TPackage.Create; JSONPackage := TPackage.Create;
JSONPackage.LoadFromFile(FileOpen1.Dialog.FileName); TRY
if JSONPackage.LoadFromFile(FileOpen1.Dialog.FileName) then
begin
editName.Text := JSONPackage.Package.Name; editName.Text := JSONPackage.Package.Name;
editDownloadURL.Text := JSONPackage.Package.DownloadURL; editDownloadURL.Text := JSONPackage.Package.DownloadURL;
cbForceUpdate.Checked := JSONPackage.Package.ForceUpdate; cbForceUpdate.Checked := JSONPackage.Package.ForceUpdate;
@ -473,9 +476,14 @@ begin
stringPackageFiles.Cells[0, i + 1] := JSONPackage.PackageFiles.Items[i].Name; stringPackageFiles.Cells[0, i + 1] := JSONPackage.PackageFiles.Items[i].Name;
stringPackageFiles.Cells[1, i + 1] := JSONPackage.PackageFiles.Items[i].Version; stringPackageFiles.Cells[1, i + 1] := JSONPackage.PackageFiles.Items[i].Version;
end; end;
end
else
ShowMessageFmt('There was a problem loading "%s" - is it corrupted or in the wrong format?',
[ExtractFilename(FileOpen1.Dialog.FileName)]);
finally
JSONPackage.Free; JSONPackage.Free;
end; end;
end;
end; end;
procedure TfrmMain.mnu_fileNewClick(Sender: TObject); procedure TfrmMain.mnu_fileNewClick(Sender: TObject);
@ -724,7 +732,9 @@ begin
end end
else else
if JSONPackage.SaveToFile(sJSONFilePath) then if JSONPackage.SaveToFile(sJSONFilePath) then
ShowMessage(sJSONFilePath + rsSavedOK); ShowMessage(sJSONFilePath + rsSavedOK)
else
ShowMessage(rsSaveUnsucces);
bDirty := False; bDirty := False;
finally finally
JSONPackage.Free; JSONPackage.Free;
@ -795,11 +805,12 @@ begin
inherited Destroy; inherited Destroy;
end; end;
procedure TPackage.LoadFromFile(AFileName: string); Function TPackage.LoadFromFile(AFileName: string):Boolean;
var var
DeStreamer: TJSONDeStreamer; DeStreamer: TJSONDeStreamer;
s: TStringList; s: TStringList;
begin begin
Result:=TRUE;
s := TStringList.Create; s := TStringList.Create;
TRY TRY
s.LoadFromFile(AFileName); s.LoadFromFile(AFileName);
@ -807,8 +818,7 @@ begin
TRY TRY
DeStreamer.JSONToObject(s.Text, Self); DeStreamer.JSONToObject(s.Text, Self);
EXCEPT EXCEPT
On E:Exception do On E:Exception do Result:=FALSE;
ShowMessage('The json file appears to be corrupted or in the wrong format');
end; end;
Finally Finally
DeStreamer.Free; DeStreamer.Free;
@ -831,7 +841,7 @@ begin
s.SaveToFile(AFileName); s.SaveToFile(AFileName);
Result := True; Result := True;
except except
ShowMessage(rsSaveUnsucces);
end; end;
finally finally
Streamer.Free; Streamer.Free;