#ifndef _Browser_Browser_h #define _Browser_Browser_h #include #include #include #include #include #define LAYOUTFILE #include #define IMAGECLASS BrowserImg #define IMAGEFILE #include class Browser; void GC_Cache(); CppBase& CodeBase(); void StartCodeBase(); void CodeBaseScan(Stream& s, const String& fn); void ClearCodeBase(); void RescanCodeBase(); void SyncCodeBase(); void SaveCodeBase(); bool ExistsBrowserItem(const String& item); void ReQualifyCodeBase(); void CodeBaseScanLay(const String& fn); void ScanLayFile(const char *fn); void ScanSchFile(const char *fn); void ScanImlFile(const char *fn); 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() #ifdef PLATFORM_WIN32 { return StdFont(); } //{ return Arial(Ctrl::VertLayoutZoom(11)); } #else { return Arial(Ctrl::VertLayoutZoom(9)); } #endif 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); struct BrowserFileInfo { Time time; String package; String file; BrowserFileInfo() { time = Null; } }; ArrayMap& FileSet(); 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