home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 2.ddi / TVDEMOS.ZIP / TVDEMO3.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  5.6 KB  |  213 lines

  1. /*----------------------------------------------------------*/
  2. /*                                                          */
  3. /*   Turbo Vision 1.0                                       */
  4. /*   Copyright (c) 1991 by Borland International            */
  5. /*                                                          */
  6. /*   Turbo Vision TVDEMO source file                        */
  7. /*----------------------------------------------------------*/
  8.  
  9. #define Uses_TRect
  10. #define Uses_TMenuBar
  11. #define Uses_TSubMenu
  12. #define Uses_TMenuItem
  13. #define Uses_TKeys
  14. #define Uses_fpstream
  15. #define Uses_TView
  16. #define Uses_TPalette
  17. #define Uses_MsgBox
  18. #define Uses_TFileDialog
  19. #define Uses_TApplication
  20. #define Uses_TDeskTop
  21. #define Uses_TStaticText
  22. #define Uses_TDialog
  23. #define Uses_TEventQueue
  24.  
  25. #include <tv.h>
  26.  
  27. #include "tvdemo.h"
  28. #include "tvcmds.h"
  29. #include "gadgets.h"
  30. #include "mousedlg.h"
  31. #include "demohelp.h"
  32. #include "fileview.h"
  33.  
  34. #include <help.h>
  35.  
  36. //
  37. // Mouse Control Dialog Box function
  38. //
  39.  
  40. void TVDemo::mouse()
  41. {
  42.     TMouseDialog *mouseCage = (TMouseDialog *) validView( new TMouseDialog() );
  43.  
  44.     if (mouseCage != 0)
  45.         {
  46.         mouseCage->helpCtx = hcOMMouseDBox; 
  47.         mouseCage->setData(&(TEventQueue::mouseReverse));
  48.         if (deskTop->execView(mouseCage) != cmCancel)
  49.             mouseCage->getData(&(TEventQueue::mouseReverse));
  50.         }
  51.     destroy( mouseCage );
  52.    
  53. }
  54.  
  55.  
  56. //
  57. // File Viewer function
  58. //
  59.  
  60. void TVDemo::openFile( char *fileSpec )
  61. {
  62.     TFileDialog *d= (TFileDialog *)validView(
  63.     new TFileDialog(fileSpec, "Open a File", "~N~ame", fdOpenButton, 100 ));
  64.  
  65.     if( d != 0 && deskTop->execView( d ) != cmCancel )
  66.         {
  67.         char fileName[MAXPATH];
  68.         d->getFileName( fileName );
  69.         d->helpCtx = hcFOFileOpenDBox;
  70.         TView *w= validView( new TFileWindow( fileName ) );
  71.         if( w != 0 )
  72.             deskTop->insert(w);
  73.     }
  74.     destroy( d );
  75. }
  76.  
  77.  
  78. //
  79. // "Out of Memory" function ( called by validView() )
  80. //
  81.  
  82. void TVDemo::outOfMemory()
  83. {
  84.     messageBox( "Not enough memory available to complete operation.",
  85.       mfError | mfOKButton );
  86. }
  87.  
  88. //
  89. // getPalette() function ( returns application's palette )
  90. //
  91.  
  92. TPalette& TVDemo::getPalette() const
  93. {
  94.     static TPalette newcolor ( cpColor cHelpColor, sizeof( cpColor cHelpColor )-1 );
  95.     static TPalette newblackwhite( cpBlackWhite cHelpBlackWhite, sizeof( cpBlackWhite cHelpBlackWhite)-1 );
  96.     static TPalette newmonochrome( cpMonochrome cHelpMonochrome, sizeof( cpMonochrome cHelpMonochrome)-1 );
  97.     static TPalette *palettes[] =
  98.         {
  99.         &newcolor,
  100.         &newblackwhite,
  101.         &newmonochrome
  102.         };
  103.     return *(palettes[appPalette]);
  104.  
  105. }
  106.  
  107. //
  108. // isTileable() function ( checks a view on desktop is tileable or not )
  109. //
  110.  
  111. static Boolean isTileable(TView *p, void * )
  112. {
  113.    if( (p->options & ofTileable) != 0)
  114.        return True;
  115.    else
  116.        return False;
  117. }
  118.  
  119. //
  120. // idle() function ( updates heap and clock views for this program. )
  121. //
  122.  
  123. void TVDemo::idle()
  124. {
  125.     TProgram::idle();
  126.     clock->update();
  127.     heap->update();
  128.     if (deskTop->firstThat(isTileable, 0) != 0 )
  129.         {
  130.         enableCommand(cmTile);
  131.         enableCommand(cmCascade); 
  132.         }
  133.     else 
  134.         {
  135.         disableCommand(cmTile);
  136.         disableCommand(cmCascade);
  137.         }
  138. }
  139.  
  140. //
  141. // closeView() function
  142. //
  143.  
  144. static void closeView(TView *p, void *p1)
  145. {
  146.     message(p, evCommand, cmClose, p1);
  147. }
  148.  
  149. //
  150. // loadDesktop() function 
  151. //
  152.  
  153. void TVDemo::loadDesktop(fpstream &s)
  154. {
  155.     TView  *p;
  156.  
  157.     if (deskTop->valid(cmClose))
  158.         { 
  159.         deskTop->forEach(::closeView, 0);  // Clear the desktop
  160.         do {
  161.            s >> p;
  162.            deskTop->insertBefore(validView(p), deskTop->last);
  163.            }
  164.            while (p != 0);
  165.         }
  166. }
  167.  
  168. //
  169. // Menubar initialization.
  170. //
  171.  
  172. TMenuBar *TVDemo::initMenuBar(TRect r)
  173. {
  174.     TSubMenu& sub1 =
  175.       *new TSubMenu( "~\360~", 0, hcSystem ) +
  176.         *new TMenuItem( "~A~bout...", cmAboutCmd, kbNoKey, hcSAbout ) +
  177.          newLine() +
  178.         *new TMenuItem( "~P~uzzle", cmPuzzleCmd, kbNoKey, hcSPuzzle ) +
  179.         *new TMenuItem( "Ca~l~endar", cmCalendarCmd, kbNoKey, hcSCalendar ) +
  180.         *new TMenuItem( "Ascii ~T~able", cmAsciiCmd, kbNoKey, hcSAsciiTable ) +
  181.         *new TMenuItem( "~C~alculator", cmCalcCmd, kbNoKey, hcCalculator );
  182.  
  183.     TSubMenu& sub2 =
  184.       *new TSubMenu( "~F~ile", 0, hcFile ) +
  185.         *new TMenuItem( "~O~pen...", cmOpenCmd, kbF3, hcFOpen, "F3" ) +
  186.         *new TMenuItem( "~C~hange Dir...", cmChDirCmd, kbNoKey, hcFChangeDir ) +
  187.          newLine() +
  188.         *new TMenuItem( "~D~OS Shell", cmDOS_Cmd, kbNoKey, hcFDosShell ) +
  189.         *new TMenuItem( "E~x~it", cmQuit, kbAltX, hcFExit, "Alt-X" );
  190.  
  191.     TSubMenu& sub3 =
  192.       *new TSubMenu( "~W~indows", 0, hcWindows ) +
  193.         *new TMenuItem( "~R~esize/move", cmResize, kbCtrlF5, hcWSizeMove, "Ctrl-F5" ) +
  194.         *new TMenuItem( "~Z~oom", cmZoom, kbF5, hcWZoom, "F5" ) +
  195.         *new TMenuItem( "~N~ext", cmNext, kbF6, hcWNext, "F6" ) +
  196.         *new TMenuItem( "~C~lose", cmClose, kbAltF3, hcWClose, "Alt-F3" ) +
  197.         *new TMenuItem( "~T~ile", cmTile, kbNoKey, hcWTile ) +
  198.         *new TMenuItem( "C~a~scade", cmCascade, kbNoKey, hcWCascade );
  199.  
  200.     TSubMenu& sub4 =
  201.       *new TSubMenu( "~O~ptions", 0, hcOptions ) +
  202.         *new TMenuItem( "~M~ouse...", cmMouseCmd, kbNoKey, hcOMouse ) +
  203.         *new TMenuItem( "~C~olors...", cmColorCmd, kbNoKey, hcOColors ) +
  204.         *new TMenuItem( "~S~ave desktop", cmSaveCmd, kbNoKey, hcOSaveDesktop ) +
  205.         *new TMenuItem( "~R~etrieve desktop", cmRestoreCmd, kbNoKey, hcORestoreDesktop );
  206.  
  207.     r.b.y =  r.a.y + 1;
  208.     return (new TMenuBar( r, sub1 + sub2 + sub3 + sub4 ) );
  209. }
  210.  
  211.  
  212.  
  213.