Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

GDocView.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 #ifndef __GDOCVIEW_H
00006 #define __GDOCVIEW_H
00007 
00008 // Word wrap
00009 
00011 #define TEXTED_WRAP_NONE            0
00012 
00013 #define TEXTED_WRAP_REFLOW          1
00014 
00015 // Notify flags
00016 
00018 #define GTVN_DOC_CHANGED            0x01
00019 
00020 #define GTVN_CURSOR_CHANGED         0x02
00021 
00022 #define GTVN_CODEPAGE_CHANGED       0x04
00023 
00024 #define GTVN_FIXED_WIDTH_CHANGED    0x08
00025 
00026 #define GTVN_SHOW_IMGS_CHANGED      0x10
00027 
00028 // Util macros
00029 
00031 #define IsWhiteSpace(c)             (c < 256 AND strchr(GDocView::WhiteSpace, c) != 0)
00032 
00033 #define IsDelimiter(c)              (c < 256 AND strchr(GDocView::Delimiters, c) != 0)
00034 
00035 #define IsDigit(c)                  ((c) >= '0' AND (c) <= '9')
00036 
00037 #define IsAlpha(c)                  (((c) >= 'a' AND (c) <= 'z') OR ((c) >= 'A' AND (c) <= 'Z'))
00038 
00039 #define IsText(c)                   (IsDigit(c) OR IsAlpha(c) OR (c) == '_')
00040 
00041 #define IsWordBoundry(c)            (strchr(GDocView::WhiteSpace, c) OR strchr(GDocView::Delimiters, c))
00042 
00043 #define UrlChar(c)                  ( \
00044                                         strchr(GDocView::UrlDelim, (c)) OR \
00045                                         AlphaOrDigit((c)) OR \
00046                                         ((c) >= 256) \
00047                                     )
00048 
00049 #define EmailChar(c)                (strchr("._-:", (c)) OR AlphaOrDigit((c)))
00050 
00051 // Messages
00052 #define M_IMAGE_LOADED              (M_USER + 0x500) // a=(char*)Uri, b=(GSurface*)pDC;
00053 
00054 extern char16 *ConvertToCrLf(char16 *Text);
00055 
00056 // Call back class to handle viewer events
00057 class GDocView;
00058 
00060 class GDocumentEnv
00061 {
00062     friend class GDocView;
00063 
00064 protected:
00065     GDocView *Viewer;
00066 
00067 public:
00068     GDocumentEnv(GDocView *v = 0) { Viewer = v; }
00069     virtual ~GDocumentEnv() {}
00070 
00073     virtual bool AppendItems(GSubMenu *Menu, int Base = 1000) { return false; }
00074     
00077     virtual bool OnMenu(GDocView *View, int Id) { return false; }
00078     
00085     virtual bool GetImageUri(char *Uri, GSurface **pDC, char *FileName = 0, int FileBufSize = 0) { return 0; }
00086     
00088     virtual bool OnNavigate(char *Uri) { return false; }
00089 
00093     virtual char *OnDynamicContent(char *Code) { return 0; }
00094 };
00095 
00101 class GDefaultDocumentEnv : public GDocumentEnv
00102 {
00103 public:
00104     bool GetImageUri(char *Uri, GSurface **pDC, char *FileName = 0, int FileBufSize = 0);
00105     bool OnNavigate(char *Uri);
00106 };
00107 
00109 class GDocFindReplaceParams {};
00110 
00112 class GDocView : public GLayout
00113 {
00114 protected:
00115     GDocumentEnv *Environment;
00116     char *Charset;
00117 
00118 public:
00119     // Static
00120     static char *WhiteSpace;
00121     static char *Delimiters;
00122     static char *UrlDelim;
00123     static bool AlphaOrDigit(char c);
00124 
00126     // Properties
00127     #define _TvMenuProp(Type, Name)                     \
00128     protected:                                          \
00129         Type Name;                                      \
00130     public:                                             \
00131         virtual void Set##Name(Type i) { Name=i; }      \
00132         Type Get##Name() { return Name; }
00133 
00134     _TvMenuProp(uint16, WrapAtCol)
00135     _TvMenuProp(bool, UrlDetect)
00136     _TvMenuProp(bool, ReadOnly)
00137     _TvMenuProp(uint8, WrapType)
00138     _TvMenuProp(uint8, TabSize)
00139     _TvMenuProp(uint8, IndentSize)
00140     _TvMenuProp(bool, HardTabs)
00141     _TvMenuProp(bool, ShowWhiteSpace)
00142     _TvMenuProp(bool, ObscurePassword)
00143     _TvMenuProp(bool, CrLf)
00144     _TvMenuProp(bool, AutoIndent)
00145     _TvMenuProp(bool, FixedWidthFont)
00146     _TvMenuProp(COLOUR, BackColour)
00147     _TvMenuProp(bool, LoadImages)
00148     _TvMenuProp(bool, OverideDocCharset)
00149     #undef _TvMenuProp
00150 
00151     char *GetCharset() { return Charset; }
00152     void SetCharset(char *s) { char *cs = NewStr(s); DeleteArray(Charset); Charset = cs; }
00153     virtual char *GetMimeType() = 0;
00154 
00156     // Object
00157     GDocView(GDocumentEnv *e = 0)
00158     {
00159         WrapAtCol = 0;
00160         UrlDetect = true;
00161         ReadOnly = false;
00162         WrapType = TEXTED_WRAP_REFLOW;
00163         TabSize = 4;
00164         IndentSize = 4;
00165         HardTabs = true;
00166         ShowWhiteSpace = false;
00167         ObscurePassword = false;
00168         CrLf = false;
00169         AutoIndent = true;
00170         FixedWidthFont = false;
00171         BackColour = Rgb24(255, 255, 255);
00172         LoadImages = false;
00173         Charset = 0;
00174         OverideDocCharset = false;
00175 
00176         Environment = 0;
00177 
00178         SetEnv(e);
00179     }
00180 
00181     virtual ~GDocView()
00182     {
00183         SetEnv(0);
00184     }
00185 
00187     virtual bool Open(char *Name, char *Cs = 0) { return false; }
00189     virtual bool Save(char *Name, char *Cs = 0) { return false; }
00190 
00192 
00194     virtual bool DoFind() { return false; }
00196     virtual bool DoReplace() { return false; }
00197     virtual GDocFindReplaceParams *CreateFindReplaceParams() { return 0; }
00198     virtual void SetFindReplaceParams(GDocFindReplaceParams *Params) { }
00199 
00201 
00203     virtual GDocumentEnv *GetEnv() { return Environment; }
00205     virtual void SetEnv(GDocumentEnv *e)
00206     {
00207         if (Environment)
00208         {
00209             Environment->Viewer = 0;
00210         }
00211         Environment = e;
00212         if (Environment)
00213         {
00214             Environment->Viewer = this;
00215         }
00216     }
00217     
00219     // State / Selection
00220     
00223     virtual void SetCursor(int i, bool Select, bool ForceFullUpdate = false) {}
00224 
00227     virtual int GetCursor(bool Cursor = true) { return 0; }
00228 
00230     virtual bool HasSelection() { return false; }
00232     virtual void UnSelectAll() {}
00234     virtual void SelectWord(int From) {}
00236     virtual void SelectAll() {}
00238     virtual char *GetSelection() { return 0; }
00239 
00241     virtual int IndexAt(int x, int y) { return 0; }
00242 
00244     virtual void PositionAt(int &x, int &y, int Index = -1) { }
00245 
00247     virtual bool IsDirty() { return false; }
00249     virtual int GetLines() { return 0; }
00251     virtual void GetTextExtent(int &x, int &y) {}
00252 
00254     
00256     virtual bool Cut() { return false; }
00258     virtual bool Copy() { return false; }
00260     virtual bool Paste() { return false; }
00261 
00263 
00265     virtual void OnEscape(GKey &K) {}
00267     virtual void OnEnter(GKey &k) {}
00269     virtual void OnUrl(char *Url) {}
00270 };
00271 
00272 #endif

Generated on Wed Oct 26 14:46:48 2005 for Lgi by  doxygen 1.4.1