home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tv20os2.zip / src / TMemo.cpp < prev    next >
C/C++ Source or Header  |  1998-01-19  |  2KB  |  103 lines

  1. /*
  2.  * TMemo.cc
  3.  *
  4.  * Turbo Vision - Version 2.0
  5.  *
  6.  * Copyright (c) 1994 by Borland International
  7.  * All Rights Reserved.
  8.  *
  9.  * Modified by Sergio Sigala <ssigala@globalnet.it>
  10.  */
  11.  
  12. #define Uses_TKeys
  13. #define Uses_TEditor
  14. #define Uses_TMemo
  15. #define Uses_TEvent
  16. #define Uses_opstream
  17. #define Uses_ipstream
  18. #include <tvision/tv.h>
  19.  
  20. #include <string.h>
  21.  
  22. #define cpMemo      "\x1A\x1B"
  23.  
  24. TMemo::TMemo( const TRect& bounds,
  25.                   TScrollBar *aHScrollBar,
  26.                   TScrollBar *aVScrollBar,
  27.                   TIndicator *aIndicator,
  28.                   ushort aBufSize ) :
  29.     TEditor( bounds, aHScrollBar, aVScrollBar, aIndicator, aBufSize )
  30. {
  31. }
  32.  
  33. ushort TMemo::dataSize()
  34. {
  35.     return bufSize + sizeof( ushort );
  36. }
  37.  
  38. void TMemo::getData( void *rec )
  39. {
  40.     TMemoData *data = (TMemoData *)rec;
  41.  
  42.     data->length = bufLen;
  43.     memcpy(data->buffer, buffer, curPtr);
  44.     memcpy(&data->buffer[curPtr], buffer+(curPtr + gapLen), bufLen - curPtr);
  45.     memset(&data->buffer[bufLen], 0, bufSize - bufLen);
  46. }
  47.  
  48. void TMemo::setData( void *rec )
  49. {
  50.     TMemoData *data = (TMemoData *)rec;
  51.  
  52.     memcpy(&buffer[bufSize - data->length], data->buffer, data->length);
  53.     setBufLen(data->length);
  54. }
  55.  
  56. TPalette& TMemo::getPalette() const
  57. {
  58.     static TPalette palette( cpMemo, sizeof( cpMemo )-1 );
  59.     return palette;
  60. }
  61.  
  62. void TMemo::handleEvent( TEvent& event )
  63. {
  64.     if( event.what != evKeyDown || event.keyDown.keyCode != kbTab )
  65.         TEditor::handleEvent(event);
  66. }
  67.  
  68. #if !defined(NO_STREAMABLE)
  69.  
  70. void TMemo::write( opstream& os )
  71. {
  72.     TEditor::write( os );
  73.     os << bufLen;
  74.     os.writeBytes( buffer, curPtr );
  75.     os.writeBytes( buffer + gapLen, bufLen - curPtr );
  76. }
  77.  
  78. void *TMemo::read( ipstream& is )
  79. {
  80.     TEditor::read( is );
  81.     ushort length;
  82.     is >> length;
  83.     if( isValid )
  84.         {
  85.         is.readBytes( buffer + bufSize - length, length );
  86.         setBufLen( length );
  87.         }
  88.     else
  89.         is.seekg( is.tellg() + length );
  90.     return this;
  91. }
  92.  
  93. TStreamable *TMemo::build()
  94. {
  95.     return new TMemo( streamableInit );
  96. }
  97.  
  98. TMemo::TMemo( StreamableInit ) : TEditor( streamableInit )
  99. {
  100. }
  101.  
  102. #endif
  103.