program MainApp;

{ Basic Turbo Vision app skeleton with a top menu bar:
  File / Edit / Windows / Help
  File > Close exits the application. }

uses
  App, Menus, Objects, Drivers, Views;

type
  PMyApp = ^TMyApp;
  TMyApp = object(TApplication)
    procedure InitMenuBar; virtual;
    procedure InitStatusLine; virtual;
  end;

{ ---- Menu Bar ---- }
procedure TMyApp.InitMenuBar;
var
  R: TRect;
begin
  GetExtent(R);
  R.B.Y := R.A.Y + 1;
  MenuBar := New(PMenuBar, Init(R,
    NewMenu(
      NewSubMenu('~F~ile', hcNoContext, NewMenu(
        NewItem('~C~lose', 'Alt-X', kbAltX, cmQuit, hcNoContext,
        nil)),

      NewSubMenu('~E~dit', hcNoContext, NewMenu(
        nil),

      NewSubMenu('~W~indows', hcNoContext, NewMenu(
        nil),

      NewSubMenu('~H~elp', hcNoContext, NewMenu(
        nil),

      nil))))
    )
  ));
end;

{ ---- Status Line (bottom bar showing Alt-X Exit hint) ---- }
procedure TMyApp.InitStatusLine;
var
  R: TRect;
begin
  GetExtent(R);
  R.A.Y := R.B.Y - 1;
  StatusLine := New(PStatusLine, Init(R,
    NewStatusDef(0, $FFFF,
      NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit,
      nil),
    nil)
  ));
end;

var
  MyApp: TMyApp;

begin
  MyApp.Init;
  MyApp.Run;
  MyApp.Done;
end.
