home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tv20os2.zip / demos / tvdemo3.cpp < prev    next >
C/C++ Source or Header  |  1999-05-26  |  6KB  |  219 lines

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