Beispiel #1
0
static void CreateUsageList(void)
{
    HWND hwnd = (HWND)SendMessage(hwndClient, WM_MDIGETACTIVE, 0, 0);
    PROJECTITEM *pj;
    sqlite3 *db = BrowseOpenDBByHWND(hwnd, &pj);
    if (db)
    {
        char mangled[2048], *srcName = brsName;
        BROWSELIST *rv = NULL, **scan;
        FreeUsageList();
        
        GetQualifiedName(mangled, &srcName, FALSE, FALSE);
        
        if (!strrchr(mangled+1, '@'))
        {
            DEBUG_INFO *inf;
            int id;
            mangled[0] = '_';
            if (id = LookupSymbolBrowse(db, mangled))
            {
                BROWSELIST *next = calloc(sizeof(BROWSELIST), 1);
                next->next = rv ;
                rv = next;
                strcpy(next->name, mangled+1);
                next->id = id;
            }
            rv = LookupCPPNamesBrowse(db, mangled , rv);
            mangled[0] = '@';
        }
        rv = LookupCPPNamesBrowse(db, mangled, rv);
        LookupLineInfo(db, rv);
        LookupUsageInfo(db, rv);
        while (rv)
        {
            BROWSELIST *next = rv->next;
            free(rv);
            rv = next;
        }
        PostMessage(hwndBrowse, WM_USER, 0, 0);
        DBClose(db);
    }
}
Beispiel #2
0
void BrowseTo(HWND hwnd, char *msg)
{
    static char name[256];
    int ofs;
    if (defaultWorkArea)
        return ;
    if (!browsing)
    {
        if (msg)
        {
            strcpy(name, msg);
            browsing = TRUE;
        }
        else
            browsing = SendMessage(hwnd, WM_WORDUNDERCURSOR, 0, (LPARAM)name);
        if (!PropGetBool(NULL, "BROWSE_INFORMATION") && browsing)
        {
            ExtendedMessageBox("Browse Info Alert", MB_OK, 
                "Browse information not enabled");
            browsing = FALSE;
            return ;
        }
    }
    else
    {
        SendMessage(hwnd, WM_WORDUNDERCURSOR, 0, (LPARAM)name);
    }
    if (browsing)
    {
        sqlite3 *db = NULL;
        DWINFO info;
        CHARRANGE charrange;
        int curline;
        char *filname;
        PROJECTITEM *pj;
        if (msg)
        {
            curline =  - 2;
            filname = "";
        }
        else
        {
            SendDlgItemMessage(hwnd, ID_EDITCHILD, EM_EXGETSEL, (WPARAM)0, 
                (LPARAM) &charrange);
            curline = SendDlgItemMessage(hwnd, ID_EDITCHILD, EM_EXLINEFROMCHAR,
                0, (LPARAM)charrange.cpMin) + 1;
            filname = (char*)SendMessage(hwnd, WM_FILENAME, 0, 0);
        }
        memset(&info, 0, sizeof(info));
        db = BrowseOpenDBByHWND(hwnd, &pj);
        if (!db)
        {
            return ;
        }
        if (FindLine(db, filname, curline, name, info.dwName, &info.dwLineNo))
        {
            char *p = strrchr(info.dwName, '\\');
            if (p)
                strcpy(info.dwTitle, p + 1);
            info.logMRU = FALSE;
            info.newFile = FALSE;
            InsertBrowse(name, curline);
            CreateDrawWindow(&info, TRUE);
        }
        DBClose(db);
    }
    browsing = FALSE;
}