home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / tvision / vlstde / demo.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-12  |  5.4 KB  |  214 lines

  1. // demo.cpp                DESKTOP FOR VIRTUAL LISTBOX DEMO
  2. //    written by Gregory K. Miskin
  3. //    COPYRIGHT (C) 1992.  All Rights Reserved.
  4. //    Gregory K. Miskin, Orem, Utah  USA
  5.  
  6. #define Uses_TChDirDialog
  7. #define Uses_TButton
  8. #define Uses_TStaticText
  9. #define Uses_TDialog
  10. #define Uses_TRect
  11. #define Uses_TStatusLine
  12. #define Uses_TStatusDef
  13. #define Uses_TStatusItem
  14. #define Uses_TEventQueue
  15. #define Uses_MsgBox
  16. #define Uses_TMenuBar
  17. #define Uses_TSubMenu
  18. #define Uses_TMenuItem
  19. #define Uses_TKeys
  20. #define Uses_TEvent
  21. #define Uses_TDeskTop
  22. #define Uses_TApplication
  23.  
  24. #include <tv.h>
  25. #include <dir.h>
  26. #include <dos.h>
  27. #include <stdio.h>
  28. #include <string.h>
  29. #include <stdlib.h>
  30. #include "commands.hpp"
  31. #include "gadgets.hpp"
  32. #include "demo1.hpp"
  33. #include "demo2.hpp"
  34. #include "demondx.hpp"
  35. #include "demo.hpp"
  36.  
  37. ushort GeneralFlag;
  38.  
  39. /*------------------------------------------------------------------------*/
  40. int main(int argc, char **argv)
  41. {
  42.      BrowseDemo kids(argc, argv);        //  Application Instance.
  43.  
  44.      kids.run();
  45.      return 0;
  46. }
  47.  
  48. /*------------------------------------------------------------------------*/
  49. BrowseDemo::BrowseDemo( int argc, char **argv ) :
  50.      TProgInit( &BrowseDemo::initStatusLine,
  51.                     &BrowseDemo::initMenuBar,
  52.                     &BrowseDemo::initDeskTop )
  53. {
  54.      TRect r = getExtent();                      // Create the clock view.
  55.      r.a.x = r.b.x - 9;      r.b.y = r.a.y + 1;
  56.      clock = new TClockView( r );
  57.      insert(clock);
  58.  
  59.      r = getExtent();                            // Create the heap view.
  60.      r.a.x = r.b.x - 13;     r.a.y = r.b.y - 1;
  61.      heap = new THeapView( r );
  62.      insert(heap);
  63. }
  64.  
  65. /*------------------------------------------------------------------------*/
  66. TStatusLine *BrowseDemo::initStatusLine( TRect r )
  67. {
  68.      r.a.y = r.b.y - 1;
  69.  
  70.      return(new TStatusLine( r,
  71.         *new TStatusDef( 0, 0xFFFF ) +
  72.           *new TStatusItem( "~Alt-X~ Exit", kbAltX, cmQuit ) +
  73.           *new TStatusItem( "~F10~ Menu", kbF10, cmMenu )
  74.           ));
  75. }
  76.  
  77. /*------------------------------------------------------------------------*/
  78. void BrowseDemo::Shell()
  79. {
  80.      suspend();
  81.      system("cls");
  82.      cout << "Type EXIT to return...";
  83.      system( getenv( "COMSPEC"));
  84.      resume();
  85.      redraw();
  86. }
  87.  
  88. /*------------------------------------------------------------------------*/
  89. void BrowseDemo::handleEvent(TEvent &event)
  90. {
  91.     TApplication::handleEvent(event);
  92.     switch(event.what)
  93.     {
  94.         case evCommand:
  95.             switch (event.message.command)
  96.             {
  97.                 case cmAboutCmd:            //  About Dialog Box
  98.                     About();
  99.                     break;
  100.  
  101.                 case cmBrowse:                 //  view names in the database
  102.                     Browse();
  103.                     break;
  104.  
  105.                 case cmChDirCmd:            //  Change directory
  106.                     ChangeDir();
  107.                     break;
  108.  
  109.                 case cmDOS_Cmd:             //  DOS Shell
  110.                     Shell();
  111.                     break;
  112.  
  113.                 default:                    //  Unknown command
  114.                     return;
  115.  
  116.               }
  117.               clearEvent (event);
  118.               break;
  119.  
  120.         case evBroadcast:
  121.             switch (event.message.command)
  122.             {
  123.             }
  124.  
  125.         default:
  126.             return;
  127.   }
  128. }
  129.  
  130. /*------------------------------------------------------------------------*/
  131. void BrowseDemo::About()
  132. {
  133.      TDialog *aboutBox = new TDialog(TRect(0, 0, 28, 14), "About");
  134.  
  135.      aboutBox->insert(new TStaticText(TRect(2, 2, 26, 10),
  136.           "\003Virtual List Box Demo\n"
  137.           "\003Written in C++ with\n"
  138.           "\003Borland's TurboVision\n\003\n"
  139.           "\003Copyright (c) 1992\n"
  140.           "\003by Gregory K. Miskin\n"
  141.           "\003(801) 226-3142"
  142.           ));
  143.  
  144.      aboutBox->insert(new TButton(TRect(8, 11, 20, 13), " OK", cmOK, bfDefault));
  145.      aboutBox->options |= ofCentered;
  146.      deskTop->execView(aboutBox);
  147.      destroy( aboutBox );
  148. }
  149.  
  150. /*------------------------------------------------------------------------*/
  151. void BrowseDemo::ChangeDir()
  152. {
  153.      TView *d = validView( new TChDirDialog( 0, cmChangeDir ) );
  154.  
  155.      if( d != 0 )
  156.           {
  157.           deskTop->execView( d );
  158.           destroy( d );
  159.      }
  160. }
  161.  
  162. /*------------------------------------------------------------------------*/
  163. void BrowseDemo::Browse()
  164. {
  165.     TSelectIndex *select_index = (TSelectIndex *) validView(new TSelectIndex());
  166.     deskTop->execView(select_index);
  167.     destroy(select_index);
  168.  
  169.     TBrowseNames *browse_names = (TBrowseNames *) validView(new TBrowseNames());
  170.     deskTop->execView(browse_names);
  171.     destroy(browse_names);
  172. }
  173.  
  174. /*------------------------------------------------------------------------*/
  175. void BrowseDemo::OutOfMemory()
  176. {
  177.      messageBox( "Not enough memory available to complete operation.",
  178.         mfError | mfOKButton );
  179. }
  180.  
  181. /*------------------------------------------------------------------------*/
  182. void BrowseDemo::idle()
  183. {
  184.      TProgram::idle();
  185.      clock->update();
  186.      heap->update();
  187. }
  188.  
  189. /*------------------------------------------------------------------------*/
  190. static void closeView(TView *p, void *p1)
  191. {
  192.      message(p, evCommand, cmClose, p1);
  193. }
  194.  
  195. /*------------------------------------------------------------------------*/
  196. TMenuBar *BrowseDemo::initMenuBar(TRect r)
  197. {
  198.     TSubMenu& sub1 =
  199.         *new TSubMenu( "~\360~",0) +
  200.             *new TMenuItem( "~A~bout...", cmAboutCmd, kbNoKey) +
  201.             newLine() +
  202.             *new TMenuItem( "~C~hange Dir", cmChDirCmd, kbNoKey) +
  203.             *new TMenuItem( "~D~OS Shell", cmDOS_Cmd, kbNoKey) +
  204.             newLine() +
  205.             *new TMenuItem( "E~x~it", cmQuit, kbAltX, 0, "Alt-X" );
  206.  
  207.     TSubMenu& sub2 =
  208.         *new TSubMenu( "~N~ames", 0) +
  209.             *new TMenuItem( "~B~rowse", cmBrowse, kbAltB, 0, "Alt-B" );
  210.  
  211.     r.b.y =  r.a.y + 1;
  212.     return (new TMenuBar( r,sub1 + sub2 ) );
  213. }
  214.