00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _FLU_CHAT_BUFFER_H
00017 #define _FLU_CHAT_BUFFER_H
00018
00019
00020 #include <FL/Fl.H>
00021 #include <FL/Fl_Widget.H>
00022 #include <FL/Fl_Scrollbar.H>
00023 #include "FLU/Flu_Enumerations.h"
00024
00026
00027 class FLU_EXPORT Flu_Chat_Buffer : public Fl_Widget
00028 {
00029
00030 class FLU_EXPORT MessageInfo
00031 {
00032 public:
00033 char type;
00034 char *handle;
00035 char *message;
00036 int handleW, messageW, height;
00037 };
00038
00039 public:
00040
00042 Flu_Chat_Buffer( int x, int y, int w, int h, const char *label = 0 );
00043
00045 virtual ~Flu_Chat_Buffer();
00046
00048 void addSystemMessage( const char *msg );
00049
00051 void addRemoteMessage( const char *handle, const char *msg );
00052
00054 void addLocalMessage( const char *handle, const char *msg );
00055
00057 void clear( int maximumLines = 500 );
00058
00060
00061 inline void setSystemStyle( Fl_Font f, Fl_Color c )
00062 { systemFont = f; systemColor = c; }
00063
00065
00066 inline void setRemoteHandleStyle( Fl_Font f, Fl_Color c )
00067 { remoteHandleFont = f; remoteHandleColor = c; }
00068
00070
00071 inline void setLocalHandleStyle( Fl_Font f, Fl_Color c )
00072 { localHandleFont = f; localHandleColor = c; }
00073
00075
00076 inline void setRemoteMessageStyle( Fl_Font f, Fl_Color c )
00077 { remoteMessageFont = f; remoteMessageColor = c; }
00078
00081 inline void setLocalMessageStyle( Fl_Font f, Fl_Color c )
00082 { localMessageFont = f; localMessageColor = c; }
00083
00085 virtual void resize( int x, int y, int w, int h );
00086
00087 protected:
00088
00089 inline static void _scrollbarCB( Fl_Widget* w, void* arg )
00090 { ((Flu_Chat_Buffer*)arg)->scrollbarCB(); }
00091 void scrollbarCB();
00092
00093 Fl_Font systemFont, remoteHandleFont, localHandleFont,
00094 remoteMessageFont, localMessageFont;
00095 Fl_Color systemColor, remoteHandleColor, localHandleColor,
00096 remoteMessageColor, localMessageColor;
00097
00098 MessageInfo *buffer;
00099 int maxLines, totalLines, currentLine;
00100 bool recomputeFootprint;
00101
00102 virtual void draw();
00103
00104 Fl_Scrollbar *scrollbar;
00105
00106 void _addMessage( char type, char *handle, char *msg );
00107 void _computeMessageFootprint();
00108
00109 };
00110
00111 #endif