mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-04-05 07:48:59 +02:00
100 lines
2.3 KiB
ObjectPascal
100 lines
2.3 KiB
ObjectPascal
program pas2jsdemopackage;
|
|
|
|
{$mode objfpc}
|
|
|
|
uses
|
|
JS, Classes, SysUtils, libAtom, atomapp, Web, demoview;
|
|
|
|
|
|
Type
|
|
{ TMyAtomApplication }
|
|
|
|
TMyAtomApplication = Class(TAtomApplication)
|
|
Private
|
|
FOurView: TPas2jsdemopackageView;
|
|
FModalPanel : TAtomPanel;
|
|
procedure DoDismiss(Sender: TObject);
|
|
procedure DoToggle;
|
|
Protected
|
|
procedure DoActivate(aState : TJSObject); override;
|
|
procedure DoDeactivate; override;
|
|
procedure DoSerialize(aState : TJSObject); override;
|
|
Public
|
|
// Add function handlers here
|
|
end;
|
|
|
|
|
|
// Do not change the name of this procedure, the Javascript glue code depends on it.
|
|
// If you do want to change it, change the glue code as well.
|
|
Procedure InitAtom(aAtom : TAtomEnvironment; aCallBacks : TAtomPackageCallBacks);
|
|
|
|
begin
|
|
If Application=Nil then
|
|
Application:=TMyAtomApplication.Create(Nil);
|
|
Application.SaveAtomEnvironment(aAtom,aCallBacks);
|
|
end;
|
|
|
|
{ TMyAtomApplication }
|
|
procedure TMyAtomApplication.DoDismiss(Sender : TObject);
|
|
|
|
begin
|
|
FModalPanel.hide;
|
|
atom.notifications.addInfo('Panel dismissed from pas2js');
|
|
end;
|
|
|
|
procedure TMyAtomApplication.DoActivate(aState: TJSObject);
|
|
|
|
Var
|
|
cmds : TJSObject;
|
|
opts : TAtomPanelOptions;
|
|
VState: TJSObject;
|
|
|
|
begin
|
|
inherited DoActivate(aState);
|
|
if Assigned(aState) then
|
|
VState:=TJSObject(aState['yourNameWordCountViewState'])
|
|
else
|
|
VState:=nil;
|
|
FOurView:=TPas2jsdemopackageView.Create(VState);
|
|
FOurView.OnDismiss:=@DoDismiss;
|
|
opts:=TAtomPanelOptions.New;
|
|
opts.item:=FourView.getElement;
|
|
opts.visible:=False;
|
|
FModalPanel:=atom.workspace.addModalPanel(opts);
|
|
cmds:=TJSObject.New;
|
|
cmds['pas2jsdemopackage:toggle']:=@DoToggle;
|
|
subscriptions.add(atom.commands.add('atom-workspace', cmds));
|
|
end;
|
|
|
|
procedure TMyAtomApplication.DoToggle;
|
|
begin
|
|
if FModalPanel.isVisible then
|
|
fModalPanel.hide
|
|
else
|
|
fModalPanel.show;
|
|
end;
|
|
|
|
procedure TMyAtomApplication.DoDeactivate();
|
|
begin
|
|
FModalpanel.destroy;
|
|
FModalpanel:=Nil;
|
|
inherited DoDeactivate();
|
|
end;
|
|
|
|
procedure TMyAtomApplication.DoSerialize(aState: TJSObject);
|
|
begin
|
|
inherited DoSerialize(aState);
|
|
if Assigned(FourView) then
|
|
aState['yourNameWordCountViewState']:=FourView.Serialize;
|
|
end;
|
|
|
|
// This code is needed to prevent the pas2js compiler from removing the InitAtom call.
|
|
var
|
|
dummy : JSValue;
|
|
|
|
begin
|
|
Application:=TMyAtomApplication.Create(Nil);
|
|
dummy:=@InitAtom;
|
|
end.
|
|
|