#ifndef _Browser_Browser_h #define _Browser_Browser_h #include #include #include #include #include #define LAYOUTFILE #include #define IMAGECLASS BrowserImg #define IMAGEFILE #include class Browser; CppBase& CodeBase(); struct SourceFileInfo { Time time; String dependencies_md5sum; // dependencies from other files - usings, initial namespace, macros String md5sum; // preprocessing 'fingerprint' to detect changes Vector depends; // indicies of file this files depends on, for time-check Time depends_time; void Serialize(Stream& s); SourceFileInfo() { time = Null; depends_time = Null; } }; void NewCodeBase(); void ParseSrc(Stream& in, int file, Event error); void CodeBaseScanFile(Stream& in, const String& fn); void CodeBaseScanFile(const String& fn, bool auto_check); void ClearCodeBase(); // void CheckCodeBase(); void RescanCodeBase(); void SyncCodeBase(); void SaveCodeBase(); bool ExistsBrowserItem(const String& item); void FinishCodeBase(); String PreprocessLayFile(const char *fn); Vector PreprocessSchFile(const char *fn); String PreprocessImlFile(const char *fn); int GetSourceFileIndex(const String& path); String GetSourceFilePath(int file); String MakeCodeRef(const String& scope, const String& item); void SplitCodeRef(const String& ref, String& scope, String& item); const CppItem *GetCodeRefItem(const String& ref, const String& rfile); const CppItem *GetCodeRefItem(const String& ref); int GetMatchLen(const char *s, const char *t); enum WithBodyEnum { WITHBODY = 33 }; inline Font BrowserFont() { return StdFont(); } struct CppItemInfo : CppItem { String scope; bool over; bool overed; int inherited; int typei; CppItemInfo() { over = overed = virt = false; inherited = line = 0; } }; enum { ITEM_TEXT, ITEM_NAME, ITEM_CPP_TYPE, ITEM_CPP, ITEM_PNAME, ITEM_TNAME, ITEM_NUMBER, ITEM_SIGN, ITEM_UPP, ITEM_TYPE, ITEM_PTYPE = ITEM_TYPE + 10000, }; struct ItemTextPart : Moveable { int pos; int len; int type; int ii; int pari; }; Vector ParseItemNatural(const String& name, const String& natural, const String& ptype, const String& pname, const String& type, const String& tname, const String& ctname, const char *s); Vector ParseItemNatural(const String& name, const CppItem& m, const char *natural); Vector ParseItemNatural(const CppItemInfo& m); Vector ParseItemNatural(const CppItemInfo& m); int GetItemHeight(const CppItem& m, int cx); enum AdditionalKinds { KIND_INCLUDEFILE = 100, KIND_INCLUDEFILE_ANY, KIND_INCLUDEFOLDER, }; void PaintText(Draw& w, int& x, int y, const char *text, const Vector& n, int starti, int count, bool focuscursor, Color _ink, bool italic); void PaintCppItemImage(Draw& w, int& x, int ry, int access, int kind, bool focuscursor); struct CppItemInfoDisplay : public Display { bool namestart; bool showtopic; int DoPaint(Draw& w, const Rect& r, const Value& q, Color _ink, Color paper, dword style) const; virtual void Paint(Draw& w, const Rect& r, const Value& q, Color _ink, Color paper, dword style) const; virtual Size GetStdSize(const Value& q) const; CppItemInfoDisplay() { namestart = false; showtopic = false; } }; int SearchItemFilter(int c); struct CodeBrowser { typedef CodeBrowser CLASSNAME; CppItemInfoDisplay display; ArrayCtrl scope; ArrayCtrl item; EditString search_scope; EditString search; // FrameRight