mirror of
https://github.com/moparisthebest/Simba
synced 2024-11-22 09:12:19 -05:00
New SRL Updater with form.
This commit is contained in:
parent
d9446e998c
commit
3358e8806d
@ -4,6 +4,11 @@ var
|
|||||||
started: Boolean;
|
started: Boolean;
|
||||||
Timer : TTimer;
|
Timer : TTimer;
|
||||||
Updating : boolean;
|
Updating : boolean;
|
||||||
|
LocalP,LocalS,OnlineP,OnlineS: Integer;
|
||||||
|
|
||||||
|
F: TForm;
|
||||||
|
Memo: TMemo;
|
||||||
|
but: TButton;
|
||||||
|
|
||||||
|
|
||||||
function GetNumbers(const str : string) : string;
|
function GetNumbers(const str : string) : string;
|
||||||
@ -28,26 +33,17 @@ begin
|
|||||||
SRLVersion := StrToIntDef(Settings.GetKeyValueDef('SRLVersion','-1'),-1);
|
SRLVersion := StrToIntDef(Settings.GetKeyValueDef('SRLVersion','-1'),-1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function UpdateSRL : boolean;
|
function UpdatePlugins: Boolean;
|
||||||
var
|
var
|
||||||
LocalP,LocalS,OnlineP,OnlineS,I : integer;
|
I : integer;
|
||||||
Contents : String;
|
Contents : String;
|
||||||
DeContents : string;
|
DeContents : string;
|
||||||
Files : TStringArray;
|
Files : TStringArray;
|
||||||
Failed,OverWrite : boolean;
|
Failed,OverWrite : boolean;
|
||||||
begin
|
begin
|
||||||
Result := false;
|
Memo.Lines.Add('Downloading the plugins...');
|
||||||
if Updating then
|
|
||||||
exit;
|
|
||||||
Updating := True;
|
|
||||||
GetLocalVersion(LocalP,LocalS);
|
|
||||||
GetOnlineVersion(OnlineP,OnlineS);
|
|
||||||
Result := True;
|
|
||||||
if (OnlineP > LocalP) then
|
|
||||||
begin
|
|
||||||
Writeln('New plugin(s) are available.');
|
|
||||||
Writeln('Downloading the new plugins now. Please do not close Simba.');
|
|
||||||
Contents := GetPage('http://wizzup.org/static/srl/simba_plugins.tar.bz2');
|
Contents := GetPage('http://wizzup.org/static/srl/simba_plugins.tar.bz2');
|
||||||
|
Memo.Lines.Add('Uncompressing the plugins...');
|
||||||
Failed := True;
|
Failed := True;
|
||||||
if DecompressBZip2(Contents,DeContents,4096) then
|
if DecompressBZip2(Contents,DeContents,4096) then
|
||||||
if ForceDirectories(IncludePath + 'SRL/SimbaPlugins/') then
|
if ForceDirectories(IncludePath + 'SRL/SimbaPlugins/') then
|
||||||
@ -69,21 +65,32 @@ begin
|
|||||||
Failed := not UnTarEx(DeContents,PluginPath,false);
|
Failed := not UnTarEx(DeContents,PluginPath,false);
|
||||||
end;
|
end;
|
||||||
if Failed then
|
if Failed then
|
||||||
Writeln('Somehow failed to update the plugins')
|
begin
|
||||||
|
Writeln('Failed to update the plugins');
|
||||||
|
Memo.Lines.Add('Failed to update the plugins');
|
||||||
|
end
|
||||||
else
|
else
|
||||||
Writeln('Succesfully updated your plugins!');
|
begin
|
||||||
|
Writeln('Succesfully updated your plugins.');
|
||||||
|
Memo.Lines.Add('Succesfully updated your plugins.');
|
||||||
|
end;
|
||||||
DeContents := '';
|
DeContents := '';
|
||||||
Contents := '';
|
Contents := '';
|
||||||
Result := Failed;
|
Result := Failed;
|
||||||
if not Failed then
|
if not Failed then
|
||||||
Settings.SetKeyValue('PluginsVersion',inttostr(OnlineP));
|
Settings.SetKeyValue('PluginsVersion',inttostr(OnlineP));
|
||||||
end;
|
end;
|
||||||
if (OnlineS > LocalS) then
|
|
||||||
begin
|
function UpdateSRL: boolean;
|
||||||
Writeln('SRL is outdated, updating now!');
|
var
|
||||||
Writeln('Downloading the new SRL now. Please do not close Simba.');
|
Contents : String;
|
||||||
|
DeContents : string;
|
||||||
|
Failed : boolean;
|
||||||
|
begin
|
||||||
|
Memo.Lines.Add('Downloading SRL...');
|
||||||
Contents := GetPage('http://wizzup.org/static/srl/srl.tar.bz2');
|
Contents := GetPage('http://wizzup.org/static/srl/srl.tar.bz2');
|
||||||
Failed := True;
|
Failed := True;
|
||||||
|
Memo.Lines.Add('Uncompressing SRL...');
|
||||||
if DecompressBZip2(Contents,DeContents,4096) then
|
if DecompressBZip2(Contents,DeContents,4096) then
|
||||||
if UnTarEx(DeContents,IncludePath,true) then
|
if UnTarEx(DeContents,IncludePath,true) then
|
||||||
Failed := False;
|
Failed := False;
|
||||||
@ -92,9 +99,66 @@ begin
|
|||||||
if Result then
|
if Result then
|
||||||
Result := Failed;
|
Result := Failed;
|
||||||
if not Failed then
|
if not Failed then
|
||||||
|
begin
|
||||||
|
Memo.Lines.Add('Succesfully updated your SRL!');
|
||||||
Writeln('Succesfully updated your SRL!');
|
Writeln('Succesfully updated your SRL!');
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure DoUpdate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if LocalP < OnlineP then
|
||||||
|
begin
|
||||||
|
Memo.Lines.Add('Plugins update. Old version: ' + IntToStr(LocalP) +
|
||||||
|
' New version: ' + IntToStr(OnlineP));
|
||||||
|
UpdatePlugins;
|
||||||
|
end;
|
||||||
|
if LocalS < OnlineS then
|
||||||
|
begin
|
||||||
|
Memo.Lines.Add('SRL update. Old version: ' + IntToStr(LocalS) +
|
||||||
|
' New version: ' + IntToStr(OnlineS));
|
||||||
|
UpdateSRL;
|
||||||
|
end;
|
||||||
|
F.ModalResult := mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function Update : boolean;
|
||||||
|
var
|
||||||
|
OpenForm: Boolean;
|
||||||
|
begin
|
||||||
|
Result := false;
|
||||||
|
if Updating then
|
||||||
|
Exit;
|
||||||
|
Updating := True;
|
||||||
|
|
||||||
|
GetLocalVersion(LocalP,LocalS);
|
||||||
|
GetOnlineVersion(OnlineP,OnlineS);
|
||||||
|
|
||||||
|
if (LocalP < OnlineP) or (LocalS < OnlineS) then
|
||||||
|
begin
|
||||||
|
case MessageDlg('SRL Updater', 'Updates are available. '+
|
||||||
|
'Do you want to open the Updater now?',
|
||||||
|
mtConfirmation, [mbNo,mbYes],0) of
|
||||||
|
mrYes : OpenForm := True;
|
||||||
|
else
|
||||||
|
OpenForm := False;
|
||||||
|
end;
|
||||||
|
if not OpenForm then
|
||||||
|
begin
|
||||||
|
Updating := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
f.ShowModal;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
MessageDlg('SRL Updater', 'No SRL update / Plugins update available!' ,mtConfirmation, [mbYes],0);
|
||||||
|
writeln('No SRL update / Plugins update available!');
|
||||||
|
end;
|
||||||
|
|
||||||
Updating := False;
|
Updating := False;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure OnSRLCheckClick(Sender: TObject);
|
procedure OnSRLCheckClick(Sender: TObject);
|
||||||
@ -104,23 +168,30 @@ begin
|
|||||||
GetLocalVersion(LocalP,LocalS);
|
GetLocalVersion(LocalP,LocalS);
|
||||||
GetOnlineVersion(OnlineP,OnlineS);
|
GetOnlineVersion(OnlineP,OnlineS);
|
||||||
if (OnlineP > LocalP) or (OnlineS > LocalS) then
|
if (OnlineP > LocalP) or (OnlineS > LocalS) then
|
||||||
Writeln('A new SRL version is available');
|
begin;
|
||||||
|
Writeln('A new SRL version is available');
|
||||||
|
Update;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure SetAutoUpdate(Sender: TObject);
|
procedure SetAutoUpdate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
AutoUpdate.Checked := not AutoUpdate.Checked;
|
AutoUpdate.Checked := not AutoUpdate.Checked;
|
||||||
Timer.Enabled := AutoUpdate.Checked;
|
Timer.Enabled := AutoUpdate.Checked;
|
||||||
|
if LowerCase(Settings.GetKeyValueDef('AutoUpdate','True')) = 'true' then
|
||||||
|
Settings.SetKeyValue('AutoUpdate', 'False')
|
||||||
|
else
|
||||||
|
Settings.SetKeyValue('AutoUpdate', 'True');
|
||||||
end;
|
end;
|
||||||
procedure OnSRLUpdateClick(Sender: TObject);
|
procedure OnSRLUpdateClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
UpdateSRL;
|
Update;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure OnUpdateTimer(Sender: TObject);
|
procedure OnUpdateTimer(Sender: TObject);
|
||||||
begin;
|
begin;
|
||||||
Timer.Interval := 30 * 60 * 1000; //Every half hour
|
Timer.Interval := 30 * 60 * 1000; //Every half hour
|
||||||
UpdateSRL;
|
Update;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure Init;
|
procedure Init;
|
||||||
@ -138,7 +209,7 @@ begin;
|
|||||||
MenuUpdate.Caption := 'Update SRL';
|
MenuUpdate.Caption := 'Update SRL';
|
||||||
MenuUpdate.OnClick := @OnSRLUpdateClick;
|
MenuUpdate.OnClick := @OnSRLUpdateClick;
|
||||||
MainMenuItem.Add(MenuUpdate);
|
MainMenuItem.Add(MenuUpdate);
|
||||||
|
|
||||||
AutoUpdate := TMenuItem.Create(MainMenuItem);
|
AutoUpdate := TMenuItem.Create(MainMenuItem);
|
||||||
AutoUpdate.Caption := 'Automatically update';
|
AutoUpdate.Caption := 'Automatically update';
|
||||||
AutoUpdate.OnClick := @SetAutoUpdate;
|
AutoUpdate.OnClick := @SetAutoUpdate;
|
||||||
@ -150,14 +221,49 @@ begin;
|
|||||||
Timer.OnTimer := @OnUpdateTimer;
|
Timer.OnTimer := @OnUpdateTimer;
|
||||||
Timer.Enabled :=AutoUpdate.Checked;
|
Timer.Enabled :=AutoUpdate.Checked;
|
||||||
|
|
||||||
|
F := TForm.Create(nil);
|
||||||
|
With F Do
|
||||||
|
begin
|
||||||
|
Visible := False;
|
||||||
|
Width := 300;
|
||||||
|
Height := 300;
|
||||||
|
BorderStyle := bsSingle;
|
||||||
|
Caption := 'SRL Updater - Updates Available';
|
||||||
|
end;
|
||||||
|
|
||||||
|
but := TButton.Create(F);
|
||||||
|
|
||||||
|
with but do
|
||||||
|
begin
|
||||||
|
Parent := F;
|
||||||
|
Left := 10;
|
||||||
|
Top := 10;
|
||||||
|
Caption := 'Update';
|
||||||
|
Width := 280;
|
||||||
|
|
||||||
|
OnClick := @DoUpdate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Memo := TMemo.Create(F);
|
||||||
|
|
||||||
|
with Memo do
|
||||||
|
begin
|
||||||
|
Parent := F;
|
||||||
|
Left := 10;
|
||||||
|
Top := 40;
|
||||||
|
Width := 280;
|
||||||
|
Height := 250;
|
||||||
|
end;
|
||||||
|
|
||||||
started := True;
|
started := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure Free;
|
procedure Free;
|
||||||
begin
|
begin
|
||||||
if (started) then
|
if (started) then
|
||||||
Timer.Enabled := False;//Freeing the components is not needed, as they will be freed upon the freeing of Simba.
|
Timer.Enabled := False;//Freeing the components is not needed, as they will be freed upon the freeing of Simba.
|
||||||
|
if F <> nil then
|
||||||
|
F.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure Attach;
|
procedure Attach;
|
||||||
@ -183,4 +289,4 @@ begin;
|
|||||||
result := '1.0';
|
result := '1.0';
|
||||||
end;
|
end;
|
||||||
begin
|
begin
|
||||||
end.
|
end.
|
Loading…
Reference in New Issue
Block a user