home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / tvision / hexademo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-01-10  |  4.8 KB  |  180 lines

  1. (* ---------------------------------------------------------------- *)
  2. (*                            HEXADEMO.PAS                          *)
  3. (*                                                                  *)
  4. (*               Demoprogramm zu der Unit HexView                   *)
  5. (*                                                                  *)
  6. (*             (c) 1992 R.Reichert & DMV-Verlag                     *)
  7. (* ---------------------------------------------------------------- *)
  8. PROGRAM HexadecimalViewers;
  9.  
  10. USES Objects, Drivers, Views,
  11.      Menus, Dialogs, GadGets, HexView, App;
  12.  
  13. CONST
  14.   cmFileViewer  = 1000;
  15.   cmMemoryViewer= 101;
  16.  
  17.   wnNumber      : BYTE = 0;
  18.  
  19. TYPE
  20.   pHexViewerDemo = ^tHexViewerDemo;
  21.   tHexViewerDemo = OBJECT (tApplication)
  22.     Clock: pClockView;
  23.     Heap:  pHeapView;
  24.  
  25.     CONSTRUCTOR Init;
  26.     PROCEDURE FileViewer;
  27.     PROCEDURE MemoryViewer;
  28.     PROCEDURE HandleEvent (VAR Event: tEvent);                VIRTUAL;
  29.     PROCEDURE Idle;                                           VIRTUAL;
  30.     PROCEDURE InitMenuBar;                                    VIRTUAL;
  31.     PROCEDURE InitStatusLine;                                 VIRTUAL;
  32.   END;
  33.  
  34. CONSTRUCTOR tHexViewerDemo.Init;
  35.   VAR
  36.     R: tRect;
  37. BEGIN
  38.   tApplication.Init;
  39.  
  40.   GetExtent (R);
  41.   R.A.X := R.B.X - 9; R.B.Y := R.A.Y + 1;
  42.   Clock := New (PClockView, Init (R));
  43.   Insert (Clock);
  44.  
  45.   GetExtent (R);
  46.   Dec (R.B.X);
  47.   R.A.X := R.B.X - 9; R.A.Y := R.B.Y - 1;
  48.   Heap := New (PHeapView, Init (R));
  49.   Insert (Heap);
  50. END;
  51.  
  52. PROCEDURE tHexViewerDemo.FileViewer;
  53.   VAR
  54.     View: pView;
  55. BEGIN
  56.   Inc (wnNumber);
  57.   View := ValidView (HexViewDialog (wnNumber));
  58.   IF View <> NIL THEN Desktop^.Insert (View)
  59.                  ELSE Dec (wnNumber);
  60. END;
  61.  
  62. PROCEDURE tHexViewerDemo.MemoryViewer;
  63.   VAR
  64.     R:    tRect;
  65.     View: pView;
  66. BEGIN
  67.   R.Assign (10, 6, 70, 20);
  68.   Inc (wnNumber);
  69.   View := ValidView (New (pHexMemWindow, Init (R, wnNumber)));
  70.   IF View <> NIL THEN Desktop^.Insert (View)
  71.                  ELSE Dec (wnNumber);
  72. END;
  73.  
  74. PROCEDURE tHexViewerDemo.HandleEvent (VAR Event: tEvent);
  75.   PROCEDURE Tile;
  76.     VAR R: TRect;
  77.   BEGIN
  78.     Desktop^.GetExtent(R);
  79.     Desktop^.Tile(R);
  80.   END;
  81.  
  82.   PROCEDURE Cascade;
  83.     VAR R: TRect;
  84.   BEGIN
  85.     Desktop^.GetExtent(R);
  86.     Desktop^.Cascade(R);
  87.   END;
  88.  
  89. BEGIN
  90.   IF (Event.What = evCommand) AND
  91.      (Event.Command = cmClose) THEN
  92.     Dec (wnNumber);
  93.  
  94.   tApplication.HandleEvent (Event);
  95.  
  96.   IF Event.What = evCommand THEN BEGIN
  97.     CASE Event.Command OF
  98.       cmFileViewer: FileViewer;
  99.       cmMemoryViewer: MemoryViewer;
  100.       cmTile: Tile;
  101.       cmCascade: Cascade;
  102.     ELSE
  103.       Exit;
  104.     END;
  105.     ClearEvent (Event);
  106.   END;
  107. END;
  108.  
  109. PROCEDURE tHexViewerDemo.Idle;
  110.   FUNCTION IsTileable (P: pView): BOOLEAN; FAR;
  111.   BEGIN
  112.     IsTileable := P^.Options AND ofTileable <> 0;
  113.   END;
  114. BEGIN
  115.   tApplication.Idle;
  116.   Clock^.Update;
  117.   Heap^.Update;
  118.   IF Desktop^.FirstThat (@IsTileable) <> NIL THEN
  119.     EnableCommands ([cmTile, cmCascade])
  120.   ELSE
  121.     DisableCommands ([cmTile, cmCascade]);
  122. END;
  123.  
  124. PROCEDURE tHexViewerDemo.InitMenuBar;
  125.   VAR
  126.     R: tRect;
  127. BEGIN
  128.   GetExtent (R);
  129.   R.B.Y := R.A.Y + 1;
  130.   MenuBar := New (pMenuBar, Init (R, NewMenu (
  131.     NewSubMenu (' Hex~v~iewers ', hcNoContext, NewMenu (
  132.       NewItem (' ~F~ile Viewer ', 'Alt-~F~', kbAltF,
  133.                cmFileViewer, hcNoContext,
  134.       NewItem (' ~M~emory Viewer ', 'Alt-~M~', kbAltM,
  135.                cmMemoryViewer, hcNoContext,
  136.       NewLine(
  137.       NewItem('E~x~it', 'Alt-X', kbAltX,
  138.               cmQuit, hcNoContext,
  139.       NIL))))),
  140.     NewSubMenu (' ~W~indows ', hcNoContext, NewMenu(
  141.       NewItem (' ~R~esize/move ','Ctrl-F5', kbCtrlF5,
  142.                cmResize, hcNoContext,
  143.       NewItem (' ~Z~oom ', 'F5', kbF5, cmZoom, hcNoContext,
  144.       NewItem (' ~N~ext ', 'F6', kbF6, cmNext, hcNoContext,
  145.       NewItem (' ~C~lose ', 'Alt-F3', kbAltF3, cmClose, hcNoContext,
  146.       NewItem (' ~T~ile ', '', kbNoKey, cmTile, hcNoContext,
  147.       NewItem (' C~a~scade ', '', kbNoKey, cmCascade, hcNoContext,
  148.       NIL))))))),
  149.     NIL)))));
  150. END;
  151.  
  152. PROCEDURE tHexViewerDemo.InitStatusLine;
  153.   VAR
  154.     R: tRect;
  155. BEGIN
  156.   GetExtent (R);
  157.   R.A.Y := R.B.Y - 1;
  158.   StatusLine := New (PStatusLine, Init (R,
  159.     NewStatusDef (0, $FFFF,
  160.       NewStatusKey (' ~Alt-X~ Exit ', kbAltX, cmQuit,
  161.       NewStatusKey (' ~Alt-F3~ Close ', kbAltF3, cmClose,
  162.       NewStatusKey (' ~F5~ Zoom ', kbF5, cmZoom,
  163.       NewStatusKey ('', kbF10, cmMenu,
  164.       NewStatusKey ('', kbCtrlF5, cmResize,
  165.       NIL))))),
  166.     NIL)));
  167. END;
  168.  
  169. VAR
  170.   ViewDemo: tHexViewerDemo;
  171.  
  172. BEGIN
  173.   ViewDemo.Init;
  174.   ViewDemo.Run;
  175.   ViewDemo.Done;
  176. END.
  177. (* ---------------------------------------------------------------- *)
  178. (*                         Ende von HEXADEMO.PAS                    *)
  179. (* ---------------------------------------------------------------- *)
  180.