RNA: remove Layout.introspect
This was added as an experiment to extract information for docs but this was never all that useful for its intended purpose.
This commit is contained in:
		@@ -886,7 +886,6 @@ uiBlock *uiLayoutGetBlock(uiLayout *layout);
 | 
			
		||||
void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv);
 | 
			
		||||
void uiLayoutSetContextPointer(uiLayout *layout, const char *name, struct PointerRNA *ptr);
 | 
			
		||||
void uiLayoutContextCopy(uiLayout *layout, struct bContextStore *context);
 | 
			
		||||
const char *uiLayoutIntrospect(uiLayout *layout); // XXX - testing
 | 
			
		||||
struct MenuType *UI_but_menutype_get(uiBut *but);
 | 
			
		||||
void UI_menutype_draw(struct bContext *C, struct MenuType *mt, struct uiLayout *layout);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3547,93 +3547,6 @@ void uiLayoutSetContextFromBut(uiLayout *layout, uiBut *but)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* introspect funcs */
 | 
			
		||||
#include "BLI_dynstr.h"
 | 
			
		||||
 | 
			
		||||
static void ui_intro_button(DynStr *ds, uiButtonItem *bitem)
 | 
			
		||||
{
 | 
			
		||||
	uiBut *but = bitem->but;
 | 
			
		||||
	BLI_dynstr_appendf(ds, "'type':%d, ", (int)but->type);
 | 
			
		||||
	BLI_dynstr_appendf(ds, "'draw_string':'''%s''', ", but->drawstr);
 | 
			
		||||
	BLI_dynstr_appendf(ds, "'tip':'''%s''', ", but->tip ? but->tip : "");  /* not exactly needed, rna has this */
 | 
			
		||||
 | 
			
		||||
	if (but->optype) {
 | 
			
		||||
		char *opstr = WM_operator_pystring_ex(but->block->evil_C, NULL, false, true, but->optype, but->opptr);
 | 
			
		||||
		BLI_dynstr_appendf(ds, "'operator':'''%s''', ", opstr ? opstr : "");
 | 
			
		||||
		MEM_freeN(opstr);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (but->rnaprop) {
 | 
			
		||||
		BLI_dynstr_appendf(ds, "'rna':'%s.%s[%d]', ", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop), but->rnaindex);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ui_intro_items(DynStr *ds, ListBase *lb)
 | 
			
		||||
{
 | 
			
		||||
	uiItem *item;
 | 
			
		||||
 | 
			
		||||
	BLI_dynstr_append(ds, "[");
 | 
			
		||||
 | 
			
		||||
	for (item = lb->first; item; item = item->next) {
 | 
			
		||||
 | 
			
		||||
		BLI_dynstr_append(ds, "{");
 | 
			
		||||
 | 
			
		||||
		/* could also use the INT but this is nicer*/
 | 
			
		||||
		switch (item->type) {
 | 
			
		||||
			case ITEM_BUTTON:             BLI_dynstr_append(ds, "'type':'BUTTON', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_ROW:         BLI_dynstr_append(ds, "'type':'UI_BTYPE_ROW', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_COLUMN:      BLI_dynstr_append(ds, "'type':'COLUMN', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_COLUMN_FLOW: BLI_dynstr_append(ds, "'type':'COLUMN_FLOW', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_ROW_FLOW:    BLI_dynstr_append(ds, "'type':'ROW_FLOW', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_BOX:         BLI_dynstr_append(ds, "'type':'BOX', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_ABSOLUTE:    BLI_dynstr_append(ds, "'type':'ABSOLUTE', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_SPLIT:       BLI_dynstr_append(ds, "'type':'SPLIT', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_OVERLAP:     BLI_dynstr_append(ds, "'type':'OVERLAP', "); break;
 | 
			
		||||
			case ITEM_LAYOUT_ROOT:        BLI_dynstr_append(ds, "'type':'ROOT', "); break;
 | 
			
		||||
			default:                      BLI_dynstr_append(ds, "'type':'UNKNOWN', "); break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (item->type) {
 | 
			
		||||
			case ITEM_BUTTON:
 | 
			
		||||
				ui_intro_button(ds, (uiButtonItem *)item);
 | 
			
		||||
				break;
 | 
			
		||||
			default:
 | 
			
		||||
				BLI_dynstr_append(ds, "'items':");
 | 
			
		||||
				ui_intro_items(ds, &((uiLayout *)item)->items);
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		BLI_dynstr_append(ds, "}");
 | 
			
		||||
 | 
			
		||||
		if (item != lb->last)
 | 
			
		||||
			BLI_dynstr_append(ds, ", ");
 | 
			
		||||
	}
 | 
			
		||||
	BLI_dynstr_append(ds, "], ");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ui_intro_uiLayout(DynStr *ds, uiLayout *layout)
 | 
			
		||||
{
 | 
			
		||||
	ui_intro_items(ds, &layout->items);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static char *str = NULL;  /* XXX, constant re-freeing, far from ideal. */
 | 
			
		||||
const char *uiLayoutIntrospect(uiLayout *layout)
 | 
			
		||||
{
 | 
			
		||||
	DynStr *ds = BLI_dynstr_new();
 | 
			
		||||
 | 
			
		||||
	if (str) {
 | 
			
		||||
		MEM_freeN(str);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ui_intro_uiLayout(ds, layout);
 | 
			
		||||
 | 
			
		||||
	str = BLI_dynstr_get_cstring(ds);
 | 
			
		||||
	BLI_dynstr_free(ds);
 | 
			
		||||
 | 
			
		||||
	return str;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* this is a bit of a hack but best keep it in one place at least */
 | 
			
		||||
MenuType *UI_but_menutype_get(uiBut *but)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -949,10 +949,6 @@ void RNA_api_ui_layout(StructRNA *srna)
 | 
			
		||||
	RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
 | 
			
		||||
	RNA_def_string(func, "name", NULL, 0, "", "");
 | 
			
		||||
 | 
			
		||||
	func = RNA_def_function(srna, "introspect", "uiLayoutIntrospect");
 | 
			
		||||
	parm = RNA_def_string(func, "string", NULL, 1024 * 1024, "Descr", "DESCR");
 | 
			
		||||
	RNA_def_function_return(func, parm);
 | 
			
		||||
 | 
			
		||||
	/* color management templates */
 | 
			
		||||
	func = RNA_def_function(srna, "template_colorspace_settings", "uiTemplateColorspaceSettings");
 | 
			
		||||
	RNA_def_function_ui_description(func, "Item. A widget to control input color space settings.");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user