示例#1
0
文件: prjwnd.c 项目: bencz/OrangeC
void RecursiveCreateTree(HTREEITEM parent, HTREEITEM pos, PROJECTITEM *proj)
{
    while (proj)
    {
           TVInsertItem(prjTreeWindow, parent, pos, proj);
        ResAddItem(proj);
        if (proj->children)
        {
            RecursiveCreateTree(proj->hTreeItem, TVI_LAST, proj->children);
            TreeView_Expand(prjTreeWindow, proj->hTreeItem, proj->expanded ? TVE_EXPAND : TVE_COLLAPSE);
        }
        proj = proj->next;
    }
}
示例#2
0
文件: prjfile.c 项目: jossk/OrangeC
PROJECTITEM *AddFile(PROJECTITEM *data, char *name, BOOL automatic)
{
    PROJECTITEM *file;
    PROJECTITEM **ins;
    HTREEITEM pos = TVI_FIRST;
    char *p;
    if (file = HasFile(data, name))
        return file;
    p = strrchr(name, '\\');
    if (p)
        p ++;
    else
        p = name;
    if (data->type == PJ_PROJ && automatic)
    {
        if (!strnicmp(szInstallPath, name, strlen(szInstallPath)))
        {
            return NULL;
        }
        else
        {
            int i;
            for (i = 0; i < sizeof(extensionMap)/sizeof(extensionMap[0]); i++)
            {
                if (strlen(extensionMap[i][0]) < strlen(name) &&
                    !stricmp(name +strlen(name)- strlen(extensionMap[i][0]), extensionMap[i][0]))
                    {
                        data = CreateFolder(data, extensionMap[i][1], FALSE);
                        break;
                    }
            }
        }
    }
    ins = &data->children;
    while (*ins && (*ins)->type == PJ_FOLDER)
    {
        pos = (*ins)->hTreeItem;
        ins = &(*ins)->next;
    }
    while (*ins && stricmp((*ins)->displayName, p) < 0)
    {
        pos = (*ins)->hTreeItem;
        ins = &(*ins)->next;
    }
    file = RetrieveInternalDepend(name);
    if (!file)
        file = calloc(1, sizeof(PROJECTITEM));
    if (file)
    {
        file->type = PJ_FILE;
        file->parent = data;
        strcpy(file->realName, name);
        strcpy(file->displayName, p);
        
        file->next = *ins;
        *ins = file;
        TVInsertItem(prjTreeWindow, data->hTreeItem, pos, file);
        ExpandParents(file);
        MarkChanged(file, FALSE);
        ResAddItem(file);
    }
    return file;
}