lazarus/components/macroscript/registerems.pas

101 lines
2.2 KiB
ObjectPascal

unit RegisterEMS;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
// LCL
Dialogs,
// LazUtils
LazUtilities,
// IdeIntf
SrcEditorIntf, IDEOptionsIntf, IDEOptEditorIntf,
// MacroScript
EMScriptMacro, EMSSelfTest, EMSIdeOptions, EMSStrings;
procedure Register;
implementation
procedure Register;
var
conf: TEMSConfig;
ok: Boolean;
OptionsGroup: Integer;
begin
OptionsGroup := GetFreeIDEOptionsGroupIndex(GroupEditor);
RegisterIDEOptionsGroup(OptionsGroup, TEMSConfig);
RegisterIDEOptionsEditor(OptionsGroup, TEMSIdeOptionsFrame, 1);
if not EMSSupported then {%H-}exit;
if not GetSkipCheckByKey('MacroScript') then begin
conf := GetEMSConf;
try
conf.Load;
except
try
conf.SelfTestFailed := EMSVersion;
conf.SelfTestActive := False;
conf.SelfTestError := 'load error';
conf.Save;
except
end;
MessageDlg(EmsSelfTestErrCaption,
format(EmsSelfTestFailedLastTime, [LineEnding]),
mtError, [mbOK], 0);
MacroListViewerWarningText := EMSNotActiveVerbose;
exit;
end;
if conf.SelfTestActive then begin
conf.SelfTestFailed := EMSVersion;
conf.SelfTestActive := False;
conf.SelfTestError := 'failed last time';
conf.Save;
MessageDlg(EmsSelfTestErrCaption,
format(EmsSelfTestFailedLastTime, [LineEnding]),
mtError, [mbOK], 0);
end;
if conf.SelfTestFailed >= EMSVersion then begin
MacroListViewerWarningText := EMSNotActiveVerbose;
exit;
end;
conf.SelfTestActive := True;
conf.Save;
ok := False;
try
ok := DoSelfTest;
except
end;
if not ok then begin
conf.SelfTestFailed := EMSVersion;
conf.SelfTestActive := False;
conf.SelfTestError := SelfTestErrorMsg;
conf.Save;
MessageDlg(EmsSelfTestErrCaption,
format(EmsSelfTestFailed, [LineEnding, SelfTestErrorMsg]),
mtError, [mbOK], 0);
MacroListViewerWarningText := EMSNotActiveVerbose;
exit;
end;
conf.SelfTestActive := False;
conf.SelfTestError := '';
conf.SelfTestFailed := 0;
conf.Save;
end;
EditorMacroPlayerClass := TEMSEditorMacro;
end;
end.