Flu_Chat_Buffer.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:5k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Flu_Chat_Buffer.h,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 18:20:59  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.1
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*
  10.  * These files were imported into NCBI's CVS directly from FLU version 2.9.1.
  11.  * Modifications to the source are listed below.
  12.  *
  13.  * ==========================================================================
  14.  * $Log: Flu_Chat_Buffer.h,v $
  15.  * Revision 1000.0  2004/04/12 18:20:59  gouriano
  16.  * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.1
  17.  *
  18.  * Revision 1.1  2004/03/11 13:51:54  dicuccio
  19.  * Imported FLU version 2.9.1.  Altered export specifiers to match NCBI layout.
  20.  * Altered include paths to match NCBI toolkit layout.
  21.  *
  22.  * ==========================================================================
  23.  */
  24. // $Id: Flu_Chat_Buffer.h,v 1000.0 2004/04/12 18:20:59 gouriano Exp $
  25. /***************************************************************
  26.  *                FLU - FLTK Utility Widgets 
  27.  *  Copyright (C) 2002 Ohio Supercomputer Center, Ohio State University
  28.  *
  29.  * This file and its content is protected by a software license.
  30.  * You should have received a copy of this license with this file.
  31.  * If not, please contact the Ohio Supercomputer Center immediately:
  32.  * Attn: Jason Bryan Re: FLU 1224 Kinnear Rd, Columbus, Ohio 43212
  33.  * 
  34.  ***************************************************************/
  35. #ifndef _FLU_CHAT_BUFFER_H
  36. #define _FLU_CHAT_BUFFER_H
  37. /* fltk includes */
  38. #include <FL/Fl.H>
  39. #include <FL/Fl_Widget.H>
  40. #include <FL/Fl_Scrollbar.H>
  41. #include <gui/widgets/FLU/Flu_Enumerations.h>
  42. //! A class for drawing text messages in the style of a "chat buffer"
  43. /*! This class is pretty much only useful for chatting. */
  44. class NCBI_GUIWIDGETS_FLU_EXPORT Flu_Chat_Buffer : public Fl_Widget
  45. {
  46.   class NCBI_GUIWIDGETS_FLU_EXPORT MessageInfo
  47.   {
  48.   public:
  49.     char type;
  50.     char *handle;
  51.     char *message;
  52.     int handleW, messageW, height;
  53.   };
  54.  public:
  55.   //! Normal FLTK widget constructor
  56.   Flu_Chat_Buffer( int x, int y, int w, int h, const char *label = 0 );
  57.   //! Default destructor
  58.   virtual ~Flu_Chat_Buffer();
  59.   //! Add a system message to the chat buffer using the system font and color
  60.   void addSystemMessage( const char *msg );
  61.   //! Add a message from a remote person to the chat buffer using the remote font and color
  62.   void addRemoteMessage( const char *handle, const char *msg );
  63.   //! Add a message from a local person to the chat buffer using the local font and color
  64.   void addLocalMessage( const char *handle, const char *msg );
  65.   //! Clear the contents of the buffer and set the maximum number of lines it can contain to b maximumLines
  66.   void clear( int maximumLines = 500 );
  67.   //! Set the font and color to use when printing system messages
  68.   /*! Default is FL_HELVETICA_ITALIC, FL_BLACK */
  69.   inline void setSystemStyle( Fl_Font f, Fl_Color c )
  70.     { systemFont = f; systemColor = c; }
  71.   //! Set the font and color to use when printing the handle from a remote message
  72.   /*! Default is FL_HELVETICA_BOLD, FL_RED  */
  73.   inline void setRemoteHandleStyle( Fl_Font f, Fl_Color c )
  74.     { remoteHandleFont = f; remoteHandleColor = c; }
  75.   //! Set the font and color to use when printing the handle from a local message
  76.   /*! Default is FL_HELVETICA_BOLD, FL_BLUE */
  77.   inline void setLocalHandleStyle( Fl_Font f, Fl_Color c )
  78.     { localHandleFont = f; localHandleColor = c; }
  79.   //! Set the font and color to use when printing a remote message
  80.   /*! Default is FL_HELVETICA, FL_RED */
  81.   inline void setRemoteMessageStyle( Fl_Font f, Fl_Color c )
  82.     { remoteMessageFont = f; remoteMessageColor = c; }
  83.   //! Set the font and color to use when printing a local message
  84.   //! Default is FL_HELVETICA, FL_BLUE */
  85.   inline void setLocalMessageStyle( Fl_Font f, Fl_Color c )
  86.     { localMessageFont = f; localMessageColor = c; }
  87.   //! FLTK resize of this widget
  88.   virtual void resize( int x, int y, int w, int h );
  89.  protected:
  90.   inline static void _scrollbarCB( Fl_Widget* w, void* arg )
  91.     { ((Flu_Chat_Buffer*)arg)->scrollbarCB(); }
  92.   void scrollbarCB();
  93.   Fl_Font systemFont, remoteHandleFont, localHandleFont,
  94.     remoteMessageFont, localMessageFont;
  95.   Fl_Color systemColor, remoteHandleColor, localHandleColor,
  96.     remoteMessageColor, localMessageColor;
  97.   MessageInfo *buffer;
  98.   int maxLines, totalLines, currentLine;
  99.   bool recomputeFootprint;
  100.   virtual void draw();
  101.   Fl_Scrollbar *scrollbar;
  102.   void _addMessage( char type, char *handle, char *msg );
  103.   void _computeMessageFootprint();
  104. };
  105. #endif