示例#1
0
ListBase CTX_data_dir_get(const bContext *C)
{
	bContextDataResult result;
	ListBase lb;
	bScreen *sc;
	ScrArea *sa;
	ARegion *ar;
	int a;

	memset(&lb, 0, sizeof(lb));

	if (C->wm.store) {
		bContextStoreEntry *entry;

		for (entry = C->wm.store->entries.first; entry; entry = entry->next)
			data_dir_add(&lb, entry->name);
	}
	if ((ar = CTX_wm_region(C)) && ar->type && ar->type->context) {
		memset(&result, 0, sizeof(result));
		ar->type->context(C, "", &result);

		if (result.dir)
			for (a = 0; result.dir[a]; a++)
				data_dir_add(&lb, result.dir[a]);
	}
	if ((sa = CTX_wm_area(C)) && sa->type && sa->type->context) {
		memset(&result, 0, sizeof(result));
		sa->type->context(C, "", &result);

		if (result.dir)
			for (a = 0; result.dir[a]; a++)
				data_dir_add(&lb, result.dir[a]);
	}
	if ((sc = CTX_wm_screen(C)) && sc->context) {
		bContextDataCallback cb = sc->context;
		memset(&result, 0, sizeof(result));
		cb(C, "", &result);

		if (result.dir)
			for (a = 0; result.dir[a]; a++)
				data_dir_add(&lb, result.dir[a]);
	}

	return lb;
}
示例#2
0
文件: context.c 项目: BHCLL/blendocv
ListBase CTX_data_dir_get(const bContext *C)
{
	bContextDataResult result;
	ListBase lb;
	int a;

	memset(&lb, 0, sizeof(lb));

	if(C->wm.store) {
		bContextStoreEntry *entry;

		for(entry=C->wm.store->entries.first; entry; entry=entry->next)
			data_dir_add(&lb, entry->name);
	}
	if(C->wm.region && C->wm.region->type && C->wm.region->type->context) {
		memset(&result, 0, sizeof(result));
		C->wm.region->type->context(C, "", &result);

		if(result.dir)
			for(a=0; result.dir[a]; a++)
				data_dir_add(&lb, result.dir[a]);
	}
	if(C->wm.area && C->wm.area->type && C->wm.area->type->context) {
		memset(&result, 0, sizeof(result));
		C->wm.area->type->context(C, "", &result);

		if(result.dir)
			for(a=0; result.dir[a]; a++)
				data_dir_add(&lb, result.dir[a]);
	}
	if(C->wm.screen && C->wm.screen->context) {
		bContextDataCallback cb= C->wm.screen->context;
		memset(&result, 0, sizeof(result));
		cb(C, "", &result);

		if(result.dir)
			for(a=0; result.dir[a]; a++)
				data_dir_add(&lb, result.dir[a]);
	}

	return lb;
}