home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / gnu / aplusplus-1.01-src.lha / src / amiga / aplusplus-1.01 / testprgs / graphics / TextView_test.cxx < prev   
Encoding:
C/C++ Source or Header  |  1994-05-10  |  5.2 KB  |  207 lines

  1. /******************************************************************************
  2.  *
  3.  *    $Source: apphome:APlusPlus/RCS/TESTPRGS/graphics/TextView_test.cxx,v $
  4.  *
  5.  *    Demo for the A++ Library
  6.  *    Copyright (C) 1994 by Armin Vogt, EMail: armin@uni-paderborn.de
  7.  *
  8.  *       $Revision: 1.4 $
  9.  *       $Date: 1994/05/09 21:27:35 $
  10.  *       $Author: Armin_Vogt $
  11.  *
  12.  ******************************************************************************/
  13.  
  14.  
  15. extern "C" {
  16. #include <dos/dos.h>
  17. }
  18.  
  19. #include <APlusPlus/exec/SignalResponder.h>
  20. #include <APlusPlus/intuition/GWindow.h>
  21. #include <APlusPlus/intuition/GT_Gadgets/GT_Scroller.h>
  22. #include <APlusPlus/intuition/BoopsiGadget.h>
  23. #include <APlusPlus/graphics/TextView.h>
  24.  
  25.  
  26. volatile static char rcs_id[] = "$Id: TextView_test.cxx,v 1.4 1994/05/09 21:27:35 Armin_Vogt Exp Armin_Vogt $";
  27.  
  28.  
  29. BOOL running = TRUE;
  30. BOOL close2 = FALSE;
  31.  
  32. class MySRSP : public SignalResponder
  33. {
  34.    public:
  35.       MySRSP(BYTE signal) : SignalResponder(signal,0) {}
  36.       ~MySRSP() {}
  37.       // overload the virtual 'signal received' action callback method.
  38.       void actionCallback()
  39.       {
  40.          cout << "**Break\n";
  41.          running = FALSE;
  42.       }
  43. };
  44. class MyTv : public TextView
  45. {
  46.     protected:
  47.        UBYTE *getLineString(LONG line,UWORD& len)
  48.         {            
  49.             static UBYTE string[60];
  50.             sprintf((char*)&string[0],"This is line %3ld of a text displayed in a TextView in Helvetica 15p.",line);
  51.             len = strlen((char*)string);
  52.             return string;
  53.         }
  54.         void formatOutput(UBYTE *lineText,UWORD length)
  55.         {
  56.             if (length>17)
  57.             {
  58.                 setDrMd(JAM1);
  59.                 setAPen(1);
  60.                 text(lineText,8);
  61.                 setAPen(3);
  62.                 text(lineText+8,9);
  63.                 setAPen(1);
  64.                 text(lineText+8+9,length-8-9);
  65.             }
  66.         }
  67.       void callback(const IntuiMessageC *imsg)
  68.         {
  69.             TextView::callback(imsg);
  70.  
  71.         }
  72.         
  73.     public:
  74.       MyTv(GOB_OWNER,AttrList& attrs) : TextView(gob_owner,attrs) { }
  75.       ~MyTv() {}        
  76.  
  77. };
  78.  
  79. class MyWindow : public GWindow
  80. {
  81.    private:
  82.       void init();
  83.  
  84.    public:
  85.       MyWindow(OWNER,AttrList& attrs) : GWindow(owner,attrs) { init(); }
  86.       
  87.       void On_CLOSEWINDOW(const IntuiMessageC *msg)
  88.       {
  89.          cout << "CLOSEWINDOW.\n";
  90.          delete this;
  91.          running = FALSE;
  92.       }
  93.       void On_ACTIVEWINDOW(const IntuiMessageC *msg)
  94.       {
  95.          cout << title() << " is ACTIVE.\n";
  96.       }
  97.       void On_SIZEVERIFY(const IntuiMessageC *msg)
  98.       {
  99.          cout << "SIZEVERIFY. \n";
  100.       }
  101.       void handleIntuiMsg(const IntuiMessageC* imsg)
  102.       {
  103.          switch (imsg->getClass())
  104.          {
  105.             case CLASS_CLOSEWINDOW :
  106.                On_CLOSEWINDOW(imsg); break;
  107.             case CLASS_ACTIVEWINDOW :
  108.                On_ACTIVEWINDOW(imsg); break;
  109.             case CLASS_SIZEVERIFY :
  110.                On_SIZEVERIFY(imsg); break;
  111.          }
  112.          GWindow::handleIntuiMsg(imsg);
  113.       }
  114. };
  115.  
  116. void MyWindow::init()
  117. {
  118.    modifyIDCMP(CLASS_NEWSIZE|CLASS_CLOSEWINDOW|CLASS_ACTIVEWINDOW|CLASS_SIZEVERIFY \
  119.     |CLASS_GADGETDOWN|CLASS_GADGETUP|CLASS_MOUSEMOVE|CLASS_RAWKEY|CLASS_VANILLAKEY);
  120. }
  121.  
  122.  
  123. void APPmain()
  124. {
  125.    MySRSP sr(SIGBREAKB_CTRL_C);
  126.     BevelBox bevelBoxBorder,raisedBevel(TRUE);
  127.     LineBorder lineBorder;
  128.     
  129.    MyWindow *little = new MyWindow(OWNER_NULL,
  130.    AttrList(    WA_Title,"WindowC - close this to stop.",
  131.       WA_Width,300,
  132.       WA_Height,150,
  133.         WA_MinWidth,200,
  134.       WA_MinHeight,100,
  135.       WA_MaxHeight,1600,
  136.       WA_MaxWidth,1600,
  137.       WA_DragBar,TRUE,
  138.       WA_SizeGadget,TRUE,
  139.       WA_DepthGadget,TRUE,
  140.       WA_CloseGadget,TRUE,
  141.       WA_IDCMP,IDCMP_CLOSEWINDOW,
  142.         WA_SmartRefresh,TRUE,
  143.     //    GOB_BorderObj(&lineBorder),
  144.       TAG_END) );
  145.  
  146.     
  147.     MyTv *myTextView = new MyTv(little, AttrList(  
  148.         GOB_LeftFromLeftOfParent,0,
  149.       GOB_TopFromTopOfParent,0,
  150.       GOB_RightFromRightOfParent,-18,
  151.       GOB_BottomFromBottomOfParent,-18,
  152.         GOB_BorderObj(&bevelBoxBorder),
  153.       CNV_Width, 1000,
  154.         CNV_GranularityX,    30,
  155.       TXV_Lines, 50,
  156.         TXV_FontName, "times.font",
  157.         TXV_FontSize, 15,
  158.         TXV_CursorOn, TRUE,
  159.       TAG_END) );
  160.         
  161.     BoopsiGadget *boopsiG = new BoopsiGadget(little,  
  162.       (UBYTE*)"propgclass", AttrList(    
  163.         GOB_LeftFromRightOfPred,2,
  164.       GOB_TopFromTopOfParent,0,
  165.       GOB_RightFromRightOfParent,0,
  166.       GOB_BottomFromBottomOfPred,0,
  167.         GOB_BorderObj(&raisedBevel),
  168.       GA_Immediate,TRUE,
  169.       GA_RelVerify,TRUE,
  170.       PGA_Freedom,FREEVERT,
  171.         ICA_TARGET,ICTARGET_IDCMP,
  172.       PGA_NewLook,TRUE,
  173.         CONSTRAINT(PGA_Top,myTextView,CNV_ViewY),
  174.         CONSTRAINT(PGA_Visible,myTextView,CNV_VisibleY),
  175.         CONSTRAINT(PGA_Total,myTextView,CNV_Height),
  176.       TAG_END) );
  177.    
  178.     GT_Scroller *gtscG = new GT_Scroller(little,  
  179.     AttrList(    GOB_LeftFromLeftOfParent,0,
  180.       GOB_TopFromBottomOfPred,2,
  181.       GOB_RightFromLeftOfPred,0,
  182.       GOB_BottomFromBottomOfParent,0,
  183. //        GOB_BorderObj(&bevelBoxBorder),
  184.       GA_Immediate,TRUE,
  185.       GA_RelVerify,TRUE,
  186.       PGA_Freedom,LORIENT_HORIZ,
  187.         GTSC_Arrows,16,
  188.         CONSTRAINT(GTSC_Top,myTextView,CNV_ViewX),
  189.         CONSTRAINT(GTSC_Visible,myTextView,CNV_VisibleX),
  190.         CONSTRAINT(GTSC_Total,myTextView,CNV_Width),
  191.       TAG_END) );
  192.    
  193.     myTextView->setAttributes( AttrList(
  194.         CONSTRAINT(CNV_ViewX,gtscG,GTSC_Top),
  195.         CONSTRAINT(CNV_ViewY,boopsiG,PGA_Top),
  196.         TAG_END) );
  197.     
  198.     little->refreshGList();     // display the gadgets
  199.         
  200.    while (running)
  201.    {
  202.       SignalResponder::WaitSignal();
  203.    }
  204.  
  205.    cout << "main() end.\n";
  206. }
  207.