0.2.6.0: Added feature - Help menu/AutoLoad Last File

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5507 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
gbamber
2016-12-15 18:43:36 +00:00
parent 77fd6e5a30
commit 2b35678018
13 changed files with 147 additions and 75 deletions

View File

@ -1,6 +1,6 @@
[Setup]
AppName=External OPM JSON package Editor
AppVersion=0.2.5.0
AppVersion=0.2.6.0
DefaultDirName={pf}\OPMUtilities
DefaultGroupName=OPM
UninstallDisplayIcon={app}\jsoneditor.exe

View File

@ -144,6 +144,10 @@ msgstr "&Help"
msgid "About.."
msgstr "About.."
#: tfrmmain.mnu_helpautoloadlastfile.caption
msgid "Auto-load last saved file"
msgstr ""
#: tfrmmain.mnu_helpdisablewarnings.caption
msgid "Disable warnings"
msgstr "Disable warnings"

View File

@ -145,6 +145,10 @@ msgstr "&Ayuda"
msgid "About.."
msgstr "Acerca de.."
#: tfrmmain.mnu_helpautoloadlastfile.caption
msgid "Auto-load last saved file"
msgstr "Carga automática último archivo guardado"
#: tfrmmain.mnu_helpdisablewarnings.caption
msgid "Disable warnings"
msgstr "Deshabilitar advertencias"
@ -376,4 +380,3 @@ msgstr "¿Quieres copiar %s a la carpeta %s?"
#: umain.rsyoumayneedto
msgid "(You may need to restart the app to see the change)"
msgstr "(Quizás necesites reiniciar la aplicación para ver los cambios)"

View File

@ -28,8 +28,7 @@
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="2"/>
<RevisionNr Value="5"/>
<BuildNr Value="1"/>
<RevisionNr Value="6"/>
<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>
<BuildModes Count="6">

View File

@ -3,14 +3,14 @@
<ProjectSession>
<PathDelim Value="\"/>
<Version Value="10"/>
<BuildModes Active="DEBUG Win64"/>
<Units Count="47">
<BuildModes Active="Win64"/>
<Units Count="49">
<Unit0>
<Filename Value="jsonpackage.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="3"/>
<EditorIndex Value="2"/>
<CursorPos X="15" Y="19"/>
<UsageCount Value="164"/>
<UsageCount Value="165"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -20,8 +20,8 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="67"/>
<CursorPos X="58" Y="66"/>
<TopLine Value="54"/>
<CursorPos X="44" Y="80"/>
<ExtraEditorCount Value="1"/>
<ExtraEditor1>
<EditorIndex Value="-1"/>
@ -29,11 +29,11 @@
<TopLine Value="311"/>
<CursorPos Y="498"/>
</ExtraEditor1>
<UsageCount Value="164"/>
<UsageCount Value="165"/>
<Bookmarks Count="3">
<Item0 Y="880" ID="1"/>
<Item1 Y="818"/>
<Item2 Y="661" ID="2"/>
<Item0 Y="892" ID="1"/>
<Item1 Y="666" ID="2"/>
<Item2 X="56" Y="1211"/>
</Bookmarks>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -41,7 +41,7 @@
<Unit2>
<Filename Value="ugenericcollection.pas"/>
<IsPartOfProject Value="True"/>
<UsageCount Value="164"/>
<UsageCount Value="165"/>
</Unit2>
<Unit3>
<Filename Value="C:\NewPascal\projects\MDSUM\CryptINI\lockini.pas"/>
@ -49,7 +49,7 @@
<UnitName Value="LockIni"/>
<EditorIndex Value="-1"/>
<CursorPos X="40" Y="9"/>
<UsageCount Value="82"/>
<UsageCount Value="83"/>
</Unit3>
<Unit4>
<Filename Value="D:\Lazarusprojects\golfml\egacalculator\source\umainform.pas"/>
@ -155,9 +155,9 @@
<Filename Value="C:\NewPascalDarwin\lazarus\ide\lazarus.pp"/>
<UnitName Value="Lazarus"/>
<EditorIndex Value="-1"/>
<TopLine Value="63"/>
<CursorPos X="21" Y="94"/>
<UsageCount Value="9"/>
<TopLine Value="108"/>
<CursorPos Y="154"/>
<UsageCount Value="10"/>
</Unit17>
<Unit18>
<Filename Value="D:\lazarustrunk\common_components\kcontrols_1.7\source\kmemo.pas"/>
@ -352,20 +352,32 @@
</Unit44>
<Unit45>
<Filename Value="C:\trunklatest\lazarus\lcl\include\customform.inc"/>
<EditorIndex Value="1"/>
<EditorIndex Value="-1"/>
<TopLine Value="910"/>
<CursorPos Y="932"/>
<UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit45>
<Unit46>
<Filename Value="C:\trunklatest\fpc\packages\fcl-base\src\fileinfo.pp"/>
<EditorIndex Value="2"/>
<EditorIndex Value="1"/>
<TopLine Value="88"/>
<CursorPos X="26" Y="110"/>
<UsageCount Value="29"/>
<UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit46>
<Unit47>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\interfaces\fpgui\fpguiint.pp"/>
<EditorIndex Value="-1"/>
<TopLine Value="9"/>
<CursorPos X="39" Y="35"/>
<UsageCount Value="10"/>
</Unit47>
<Unit48>
<Filename Value="C:\NewPascalDarwin\lazarus\lcl\interfaces\fpgui\fpguiwsprivate.pp"/>
<EditorIndex Value="-1"/>
<CursorPos X="29" Y="1099"/>
<UsageCount Value="10"/>
</Unit48>
</Units>
<OtherDefines Count="1">
<Define0 Value="IGNOREPICTURE"/>
@ -373,123 +385,123 @@
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="umain.pas"/>
<Caret Line="774" TopLine="753"/>
<Caret Line="778" TopLine="766"/>
</Position1>
<Position2>
<Filename Value="umain.pas"/>
<Caret Line="775" Column="44" TopLine="753"/>
<Caret Line="779" TopLine="766"/>
</Position2>
<Position3>
<Filename Value="umain.pas"/>
<Caret Line="815" TopLine="778"/>
<Caret Line="780" TopLine="766"/>
</Position3>
<Position4>
<Filename Value="umain.pas"/>
<Caret Line="813" TopLine="781"/>
<Caret Line="770" TopLine="762"/>
</Position4>
<Position5>
<Filename Value="umain.pas"/>
<Caret Line="777" TopLine="755"/>
<Caret Line="771" TopLine="762"/>
</Position5>
<Position6>
<Filename Value="umain.pas"/>
<Caret Line="805" Column="17" TopLine="779"/>
<Caret Line="772" TopLine="762"/>
</Position6>
<Position7>
<Filename Value="umain.pas"/>
<Caret Line="777" Column="5" TopLine="755"/>
<Caret Line="793" Column="10" TopLine="762"/>
</Position7>
<Position8>
<Filename Value="umain.pas"/>
<Caret Line="813" TopLine="792"/>
<Caret Line="840" Column="27" TopLine="779"/>
</Position8>
<Position9>
<Filename Value="umain.pas"/>
<Caret Line="794" Column="7" TopLine="773"/>
<Caret Line="226" TopLine="193"/>
</Position9>
<Position10>
<Filename Value="umain.pas"/>
<Caret Line="813" TopLine="776"/>
<Caret Line="1266" Column="35" TopLine="1186"/>
</Position10>
<Position11>
<Filename Value="umain.pas"/>
<Caret Line="814" TopLine="777"/>
<Caret Line="1000" TopLine="975"/>
</Position11>
<Position12>
<Filename Value="umain.pas"/>
<Caret Line="804" Column="34" TopLine="783"/>
<Caret Line="771" Column="29" TopLine="745"/>
</Position12>
<Position13>
<Filename Value="umain.pas"/>
<Caret Line="813" TopLine="783"/>
<Caret Line="66" Column="58" TopLine="91"/>
</Position13>
<Position14>
<Filename Value="umain.pas"/>
<Caret Line="814" TopLine="783"/>
<Caret Line="194" Column="59" TopLine="666"/>
</Position14>
<Position15>
<Filename Value="umain.pas"/>
<Caret Line="772" Column="14" TopLine="759"/>
<Caret Line="196" Column="27" TopLine="186"/>
</Position15>
<Position16>
<Filename Value="umain.pas"/>
<Caret Line="821" TopLine="760"/>
<Caret Line="1190" Column="24" TopLine="1167"/>
</Position16>
<Position17>
<Filename Value="umain.pas"/>
<Caret Line="772" TopLine="760"/>
<Caret Line="878" TopLine="847"/>
</Position17>
<Position18>
<Filename Value="umain.pas"/>
<Caret Line="777" TopLine="766"/>
<Caret Line="910" Column="48" TopLine="888"/>
</Position18>
<Position19>
<Filename Value="umain.pas"/>
<Caret Line="778" TopLine="766"/>
<Caret Line="877" Column="12" TopLine="851"/>
</Position19>
<Position20>
<Filename Value="umain.pas"/>
<Caret Line="779" TopLine="766"/>
<Caret Line="215" Column="15" TopLine="515"/>
</Position20>
<Position21>
<Filename Value="umain.pas"/>
<Caret Line="780" TopLine="766"/>
<Caret Line="1182" Column="3" TopLine="1141"/>
</Position21>
<Position22>
<Filename Value="umain.pas"/>
<Caret Line="770" TopLine="762"/>
<Caret Line="856" Column="71" TopLine="855"/>
</Position22>
<Position23>
<Filename Value="umain.pas"/>
<Caret Line="771" TopLine="762"/>
<Caret Line="1232" Column="13" TopLine="1208"/>
</Position23>
<Position24>
<Filename Value="umain.pas"/>
<Caret Line="772" TopLine="762"/>
<Caret Line="1032" Column="23" TopLine="1030"/>
</Position24>
<Position25>
<Filename Value="umain.pas"/>
<Caret Line="793" Column="10" TopLine="762"/>
<Caret Line="855" Column="68" TopLine="826"/>
</Position25>
<Position26>
<Filename Value="umain.pas"/>
<Caret Line="840" Column="27" TopLine="779"/>
<Caret Line="1050" Column="4" TopLine="1025"/>
</Position26>
<Position27>
<Filename Value="umain.pas"/>
<Caret Line="226" TopLine="193"/>
<Caret Line="857" Column="58" TopLine="841"/>
</Position27>
<Position28>
<Filename Value="umain.pas"/>
<Caret Line="1266" Column="35" TopLine="1186"/>
<Caret Line="1230" Column="15" TopLine="1214"/>
</Position28>
<Position29>
<Filename Value="umain.pas"/>
<Caret Line="1000" TopLine="975"/>
<Caret Line="877" TopLine="853"/>
</Position29>
<Position30>
<Filename Value="umain.pas"/>
<Caret Line="771" Column="29" TopLine="745"/>
<Caret Line="898" Column="17" TopLine="887"/>
</Position30>
</JumpHistory>
</ProjectSession>

View File

@ -144,6 +144,10 @@ msgstr "&Help"
msgid "About.."
msgstr "About.."
#: tfrmmain.mnu_helpautoloadlastfile.caption
msgid "Auto-load last saved file"
msgstr ""
#: tfrmmain.mnu_helpdisablewarnings.caption
msgid "Disable warnings"
msgstr "Disable warnings"

View File

@ -145,6 +145,10 @@ msgstr "&Ayuda"
msgid "About.."
msgstr "Acerca de.."
#: tfrmmain.mnu_helpautoloadlastfile.caption
msgid "Auto-load last saved file"
msgstr "Carga automática último archivo guardado"
#: tfrmmain.mnu_helpdisablewarnings.caption
msgid "Disable warnings"
msgstr "Deshabilitar advertencias"
@ -376,4 +380,3 @@ msgstr "¿Quieres copiar %s a la carpeta %s?"
#: umain.rsyoumayneedto
msgid "(You may need to restart the app to see the change)"
msgstr "(Quizás necesites reiniciar la aplicación para ver los cambios)"

View File

@ -133,6 +133,10 @@ msgstr ""
msgid "About.."
msgstr ""
#: tfrmmain.mnu_helpautoloadlastfile.caption
msgid "Auto-load last saved file"
msgstr ""
#: tfrmmain.mnu_helpdisablewarnings.caption
msgid "Disable warnings"
msgstr ""

View File

@ -1,7 +1,7 @@
object frmMain: TfrmMain
Left = 450
Left = 930
Height = 398
Top = 207
Top = 221
Width = 618
Anchors = []
BorderIcons = [biSystemMenu]
@ -250,6 +250,11 @@ object frmMain: TfrmMain
Caption = 'Disable warnings'
OnClick = mnu_helpDisableWarningsClick
end
object mnu_helpAutoloadLastFile: TMenuItem
AutoCheck = True
Caption = 'Auto-load last saved file'
OnClick = mnu_helpAutoloadLastFileClick
end
object mnu_lang: TMenuItem
Caption = 'Languages..'
object mnu_lang_en: TMenuItem

View File

@ -26,6 +26,7 @@
{"hash":2812976,"name":"tfrmmain.mnu_help.caption","sourcebytes":[38,72,101,108,112],"value":"&Help"},
{"hash":186260755,"name":"tfrmmain.mnu_helpshowhints.caption","sourcebytes":[83,104,111,119,32,80,111,112,117,112,32,72,105,110,116,115],"value":"Show Popup Hints"},
{"hash":253903779,"name":"tfrmmain.mnu_helpdisablewarnings.caption","sourcebytes":[68,105,115,97,98,108,101,32,119,97,114,110,105,110,103,115],"value":"Disable warnings"},
{"hash":213647893,"name":"tfrmmain.mnu_helpautoloadlastfile.caption","sourcebytes":[65,117,116,111,45,108,111,97,100,32,108,97,115,116,32,115,97,118,101,100,32,102,105,108,101],"value":"Auto-load last saved file"},
{"hash":187646702,"name":"tfrmmain.mnu_lang.caption","sourcebytes":[76,97,110,103,117,97,103,101,115,46,46],"value":"Languages.."},
{"hash":206450904,"name":"tfrmmain.mnu_lang_en.caption","sourcebytes":[69,110,103,108,105,115,104],"value":"English"},
{"hash":174974108,"name":"tfrmmain.mnu_lang_es.caption","sourcebytes":[69,115,112,97,195,177,111,108],"value":"Espa\u00F1ol"},

View File

@ -64,7 +64,8 @@ unit umain;
0.2.3.0: ResourceStrings Updated (minesadorada)
0.2.4.0: Bugfix: regression error: DisableInOPM (minesadorada)
0.2.5.0: BugFix: regression error: CreateUniqueINIFile (minesadorada)
0.2.6.0: ??
0.2.6.0: Added feature - Help menu/AutoLoad Last File
0.2.7.0: ??
}
{$mode objfpc}{$H+}
@ -78,7 +79,7 @@ uses
lclintf, lclVersion, LResources, Spin, {$IFDEF PO_BUILTINRES}LazUTF8Classes{$ENDIF};
const
C_DEBUGMESSAGES = False;
C_DEBUGMESSAGES = False; // TRUE ONLY IN DEV MODE!
type
@ -152,6 +153,7 @@ type
MainMenu1: TMainMenu;
FileMenu: TMenuItem;
LoadItem: TMenuItem;
mnu_helpAutoloadLastFile: TMenuItem;
mnu_fileExit: TMenuItem;
mnu_fileNew: TMenuItem;
mnu_helpDisableWarnings: TMenuItem;
@ -180,6 +182,7 @@ type
procedure mnu_fileNewClick(Sender: TObject);
procedure mnu_fileSaveClick(Sender: TObject);
procedure mnu_helpAboutClick(Sender: TObject);
procedure mnu_helpAutoloadLastFileClick(Sender: TObject);
procedure mnu_helpDisableWarningsClick(Sender: TObject);
procedure mnu_helpShowHintsClick(Sender: TObject);
procedure mnu_lang_enClick(Sender: TObject);
@ -190,7 +193,8 @@ type
private
{ private declarations }
JSONPackage: TUpdatePackage;
bForceSaveAs, bShowPopupHints, bDisableWarnings, bDirty, bIsVirgin: boolean;
bForceSaveAs, bShowPopupHints, bDisableWarnings,bAutoLoadLast,
bDirty, bIsVirgin: boolean;
sJSONFilePath: string;
sUpdateDirectory, sZipDirectory: string;
slErrorList: TStrings;
@ -210,6 +214,7 @@ type
ArrayLblPackageInternalVersion: array of TLabel;
// End of Package Information controls
iNumLpkFilesVisible: integer;
procedure LoadJSONFromFile(sFileName:String);
procedure AddPackageFileToList;
procedure RemovePackageFileFromList;
procedure ResetPackageFileControlsToOne;
@ -846,6 +851,13 @@ begin
bIsVirgin := CFG.ReadBool('Options', 'Virgin', True);
bShowPopupHints := bIsVirgin;
mnu_helpShowHints.Checked := bShowPopupHints;
// On startup, default to FALSE
bAutoLoadLast:=CFG.ReadBool('Options', 'AutoLoadLastFile',FALSE);
mnu_helpAutoloadLastFile.Checked:=bAutoLoadLast;
sJSONFilePath:=CFG.ReadString('Options','LastSavedJSON','unknown');
if C_DEBUGMESSAGES = True then // Dev only
ShowMessage(sJSONFilePath);
// Override here if the user has re-enabled them
bShowPopupHints := CFG.ReadBool('Options', 'ShowPopupHints', bShowPopupHints);
mnu_helpShowHints.Checked := bShowPopupHints;
@ -878,24 +890,20 @@ procedure TfrmMain.FormShow(Sender: TObject);
begin
bDirty := False;
AddPackageFileToList;
end;
If sJSONFilePath <> 'unknown' then
If (FileExistsUTF8(sJSONFilePath)) AND (bAutoLoadLast=TRUE) then
LoadJSONFromFile(sJSONFilePath);
procedure TfrmMain.LoadItemClick(Sender: TObject);
end;
procedure TfrmMain.LoadJSONFromFile(sFileName:String);
var
i: integer;
Quad: TVersionQuad;
begin
FileOpen1.Dialog.InitialDir :=
CFG.ReadString('Options', 'LastLoadedJSONPath', sUpdateDirectory);
FileOpen1.Dialog.Filter := 'JSON|*.json';
if FileOpen1.Dialog.Execute then
begin
ResetPackageFileControlsToOne; // So iNumLpkFilesVisible=1
sJSONFilePath := FileOpen1.Dialog.Filename;
CFG.WriteString('Options', 'LastLoadedJSONPath', ExtractFileDir(sJSONFilePath));
JSONPackage := TUpdatePackage.Create;
try
if JSONPackage.LoadFromFile(FileOpen1.Dialog.FileName) then
if JSONPackage.LoadFromFile(sFileName) then
begin
edt_UpdateZipName.Text := JSONPackage.UpdatePackageData.Name;
edt_DownloadZipURL.Text := JSONPackage.UpdatePackageData.DownloadZipURL;
@ -934,11 +942,24 @@ begin
end
else
ShowMessageFmt(rsThereWasAPro,
[ExtractFilename(FileOpen1.Dialog.FileName)]);
[ExtractFilename(sFileName)]);
finally
JSONPackage.Free;
end;
end;
procedure TfrmMain.LoadItemClick(Sender: TObject);
begin
FileOpen1.Dialog.InitialDir :=
CFG.ReadString('Options', 'LastLoadedJSONPath', sUpdateDirectory);
FileOpen1.Dialog.Filter := 'JSON|*.json';
if FileOpen1.Dialog.Execute then
begin
sJSONFilePath := FileOpen1.Dialog.Filename;
CFG.WriteString('Options', 'LastLoadedJSONPath', ExtractFileDir(sJSONFilePath));
ResetPackageFileControlsToOne; // So iNumLpkFilesVisible=1
LoadJSONFromFile(sJSONFilePath);
end;
end;
procedure TfrmMain.mnu_fileExitClick(Sender: TObject);
@ -1009,6 +1030,13 @@ begin
MessageDlg(rsAbout + ' ' + Application.Title, s, mtInformation, [mbOK], 0);
end;
procedure TfrmMain.mnu_helpAutoloadLastFileClick(Sender: TObject);
begin
bAutoLoadLast:= NOT bAutoLoadLast;
mnu_helpAutoloadLastFile.Checked:=bAutoLoadLast;
CFG.WriteBool('Options', 'AutoLoadLastFile',bAutoLoadLast);
end;
procedure TfrmMain.mnu_helpDisableWarningsClick(Sender: TObject);
begin
bDisableWarnings := not bDisableWarnings;
@ -1177,8 +1205,11 @@ begin
FileSaveAs1.Dialog.InitialDir := sUpdateDirectory;
FileSaveAs1.Dialog.FileName :=
'update_' + ExtractFilenameOnly(edt_UpdateZipName.Text) + '.json';
if FileSaveAs1.Dialog.Execute then
sJSONFilePath := FileSaveAs1.Dialog.FileName
begin
sJSONFilePath := FileSaveAs1.Dialog.FileName;
end
else
Exit;
end;
@ -1207,11 +1238,17 @@ begin
if MessageDlg(rsOverwrite + ' ' + sJSONFilePath + '?', mtConfirmation,
[mbYes, mbNo], 0, mbYes) = mrYes then
if JSONPackage.SaveToFile(sJSONFilePath) then
begin
ShowMessage(sJSONFilePath + ' ' + rsSavedOK);
CFG.WriteString('Options','LastSavedJSON',sJSONFilePath);
end;
end
else
if JSONPackage.SaveToFile(sJSONFilePath) then
ShowMessage(sJSONFilePath + rsSavedOK)
begin
ShowMessage(sJSONFilePath + rsSavedOK);
CFG.WriteString('Options','LastSavedJSON',sJSONFilePath);
end
else
ShowMessage(rsSaveUnsucces);
bDirty := False;