pas2jsdemopackage.lpr 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. program pas2jsdemopackage;
  2. {$mode objfpc}
  3. uses
  4. JS, Classes, SysUtils, libAtom, atomapp, Web, demoview;
  5. Type
  6. { TMyAtomApplication }
  7. TMyAtomApplication = Class(TAtomApplication)
  8. Private
  9. FOurView: TPas2jsdemopackageView;
  10. FModalPanel : TAtomPanel;
  11. procedure DoDismiss(Sender: TObject);
  12. procedure DoToggle;
  13. Protected
  14. procedure DoActivate(aState : TJSObject); override;
  15. procedure DoDeactivate; override;
  16. procedure DoSerialize(aState : TJSObject); override;
  17. Public
  18. // Add function handlers here
  19. end;
  20. // Do not change the name of this procedure, the Javascript glue code depends on it.
  21. // If you do want to change it, change the glue code as well.
  22. Procedure InitAtom(aAtom : TAtomEnvironment; aCallBacks : TAtomPackageCallBacks);
  23. begin
  24. If Application=Nil then
  25. Application:=TMyAtomApplication.Create(Nil);
  26. Application.SaveAtomEnvironment(aAtom,aCallBacks);
  27. end;
  28. { TMyAtomApplication }
  29. procedure TMyAtomApplication.DoDismiss(Sender : TObject);
  30. begin
  31. FModalPanel.hide;
  32. atom.notifications.addInfo('Panel dismissed from pas2js');
  33. end;
  34. procedure TMyAtomApplication.DoActivate(aState: TJSObject);
  35. Var
  36. cmds : TJSObject;
  37. opts : TAtomPanelOptions;
  38. VState: TJSObject;
  39. begin
  40. inherited DoActivate(aState);
  41. if Assigned(aState) then
  42. VState:=TJSObject(aState['yourNameWordCountViewState'])
  43. else
  44. VState:=nil;
  45. FOurView:=TPas2jsdemopackageView.Create(VState);
  46. FOurView.OnDismiss:=@DoDismiss;
  47. opts:=TAtomPanelOptions.New;
  48. opts.item:=FourView.getElement;
  49. opts.visible:=False;
  50. FModalPanel:=atom.workspace.addModalPanel(opts);
  51. cmds:=TJSObject.New;
  52. cmds['pas2jsdemopackage:toggle']:=@DoToggle;
  53. subscriptions.add(atom.commands.add('atom-workspace', cmds));
  54. end;
  55. procedure TMyAtomApplication.DoToggle;
  56. begin
  57. if FModalPanel.isVisible then
  58. fModalPanel.hide
  59. else
  60. fModalPanel.show;
  61. end;
  62. procedure TMyAtomApplication.DoDeactivate();
  63. begin
  64. FModalpanel.destroy;
  65. FModalpanel:=Nil;
  66. inherited DoDeactivate();
  67. end;
  68. procedure TMyAtomApplication.DoSerialize(aState: TJSObject);
  69. begin
  70. inherited DoSerialize(aState);
  71. if Assigned(FourView) then
  72. aState['yourNameWordCountViewState']:=FourView.Serialize;
  73. end;
  74. // This code is needed to prevent the pas2js compiler from removing the InitAtom call.
  75. var
  76. dummy : JSValue;
  77. begin
  78. Application:=TMyAtomApplication.Create(Nil);
  79. dummy:=@InitAtom;
  80. end.